@net7/components 4.2.0 → 4.2.3-rc4
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 +2 -1
- package/esm2022/lib/components/advanced-autocomplete/advanced-autocomplete.mjs +25 -0
- package/esm2022/lib/components/advanced-autocomplete/advanced-autocomplete.mock.mjs +147 -0
- package/esm2022/lib/components/alert/alert.mjs +24 -0
- package/{esm2020 → esm2022}/lib/components/alert/alert.mock.mjs +2 -2
- package/esm2022/lib/components/anchor-wrapper/anchor-wrapper.mjs +35 -0
- package/esm2022/lib/components/avatar/avatar.mjs +34 -0
- package/esm2022/lib/components/breadcrumbs/breadcrumbs.mjs +25 -0
- package/{esm2020 → esm2022}/lib/components/breadcrumbs/breadcrumbs.mock.mjs +8 -8
- package/esm2022/lib/components/bubble-chart/bubble-chart.mjs +336 -0
- package/{esm2020 → esm2022}/lib/components/bubble-chart/bubble-chart.mock.mjs +249 -249
- package/esm2022/lib/components/button/button.mjs +26 -0
- package/{esm2020 → esm2022}/lib/components/button/button.mock.mjs +3 -3
- package/esm2022/lib/components/carousel/carousel.mjs +97 -0
- package/esm2022/lib/components/carousel/carousel.mock.mjs +157 -0
- package/esm2022/lib/components/chart/chart.mjs +37 -0
- package/esm2022/lib/components/chart/chart.mock.mjs +127 -0
- package/esm2022/lib/components/content-placeholder/content-placeholder.mjs +17 -0
- package/{esm2020 → esm2022}/lib/components/content-placeholder/content-placeholder.mock.mjs +6 -3
- package/esm2022/lib/components/data-widget/data-widget.mjs +29 -0
- package/{esm2020 → esm2022}/lib/components/data-widget/data-widget.mock.mjs +4 -4
- package/esm2022/lib/components/datepicker/datepicker.mjs +44 -0
- package/esm2022/lib/components/facet/facet.mjs +24 -0
- package/esm2022/lib/components/facet/facet.mock.mjs +169 -0
- package/esm2022/lib/components/facet-header/facet-header.mjs +24 -0
- package/esm2022/lib/components/facet-year-range/facet-year-range.mjs +53 -0
- package/esm2022/lib/components/file-selector/file-selector.mjs +41 -0
- package/{esm2020 → esm2022}/lib/components/file-selector/file-selector.mock.mjs +2 -2
- package/esm2022/lib/components/footer/footer.mjs +26 -0
- package/esm2022/lib/components/footer/footer.mock.mjs +60 -0
- package/esm2022/lib/components/header/header.mjs +53 -0
- package/esm2022/lib/components/header/header.mock.mjs +119 -0
- package/esm2022/lib/components/hero/hero.mjs +41 -0
- package/{esm2020 → esm2022}/lib/components/hero/hero.mock.mjs +5 -5
- package/esm2022/lib/components/histogram-range/histogram-range.mjs +390 -0
- package/{esm2020 → esm2022}/lib/components/histogram-range/histogram-range.mock.mjs +4 -4
- package/esm2022/lib/components/icon/icon.mjs +21 -0
- package/{esm2020 → esm2022}/lib/components/icon/icon.mock.mjs +2 -2
- package/esm2022/lib/components/image-viewer/image-viewer.mjs +57 -0
- package/esm2022/lib/components/image-viewer/image-viewer.mock.mjs +29 -0
- package/esm2022/lib/components/image-viewer-tools/image-viewer-tools.mjs +28 -0
- package/esm2022/lib/components/image-viewer-tools/image-viewer-tools.mock.mjs +54 -0
- package/esm2022/lib/components/inner-title/inner-title.mjs +40 -0
- package/esm2022/lib/components/inner-title/inner-title.mock.mjs +53 -0
- package/esm2022/lib/components/input-checkbox/input-checkbox.mjs +24 -0
- package/esm2022/lib/components/input-checkbox/input-checkbox.mock.mjs +31 -0
- package/esm2022/lib/components/input-link/input-link.mjs +24 -0
- package/esm2022/lib/components/input-link/input-link.mock.mjs +66 -0
- package/{esm2020 → esm2022}/lib/components/input-select/input-select.mjs +5 -5
- package/esm2022/lib/components/input-text/input-text.mjs +34 -0
- package/esm2022/lib/components/input-textarea/input-textarea.mjs +21 -0
- package/esm2022/lib/components/item-preview/item-preview.mjs +25 -0
- package/esm2022/lib/components/item-preview/item-preview.mock.mjs +46 -0
- package/esm2022/lib/components/loader/loader.mjs +16 -0
- package/{esm2020 → esm2022}/lib/components/loader/loader.mock.mjs +2 -2
- package/esm2022/lib/components/map/map.mjs +66 -0
- package/{esm2020 → esm2022}/lib/components/map/map.mock.mjs +14 -10
- package/esm2022/lib/components/metadata-viewer/metadata-viewer.mjs +19 -0
- package/esm2022/lib/components/metadata-viewer/metadata-viewer.mock.mjs +75 -0
- package/esm2022/lib/components/mirador/mirador.mjs +36 -0
- package/esm2022/lib/components/mirador/mirador.mock.mjs +23 -0
- package/esm2022/lib/components/mirador/miradorTheme.mjs +220 -0
- package/esm2022/lib/components/nav/nav.mjs +27 -0
- package/esm2022/lib/components/nav/nav.mock.mjs +46 -0
- package/esm2022/lib/components/pagination/pagination.mjs +31 -0
- package/esm2022/lib/components/pagination/pagination.mock.mjs +27 -0
- package/esm2022/lib/components/progress-line/progress-line.mjs +19 -0
- package/esm2022/lib/components/sidebar-header/sidebar-header.mjs +24 -0
- package/esm2022/lib/components/signup/signup.mjs +44 -0
- package/{esm2020 → esm2022}/lib/components/signup/signup.mock.mjs +14 -14
- package/esm2022/lib/components/simple-autocomplete/simple-autocomplete.mjs +25 -0
- package/esm2022/lib/components/simple-autocomplete/simple-autocomplete.mock.mjs +22 -0
- package/esm2022/lib/components/table/table.mjs +35 -0
- package/esm2022/lib/components/table/table.mock.mjs +156 -0
- package/esm2022/lib/components/tag/tag.mjs +35 -0
- package/esm2022/lib/components/text-viewer/text-viewer.mjs +42 -0
- package/{esm2020 → esm2022}/lib/components/text-viewer/text-viewer.mock.mjs +4 -4
- package/esm2022/lib/components/timeline/timeline.mjs +51 -0
- package/esm2022/lib/components/timeline/timeline.mock.mjs +137 -0
- package/esm2022/lib/components/toast/toast.mjs +24 -0
- package/esm2022/lib/components/toast/toast.mock.mjs +65 -0
- package/esm2022/lib/components/tooltip-content/tooltip-content.mjs +25 -0
- package/{esm2020 → esm2022}/lib/components/tooltip-content/tooltip-content.mock.mjs +9 -8
- package/esm2022/lib/components/tree/tree.mjs +25 -0
- package/{esm2020 → esm2022}/lib/components/tree/tree.mock.mjs +44 -44
- package/esm2022/lib/components/wizard/wizard.mjs +24 -0
- package/{esm2020 → esm2022}/lib/components/wizard/wizard.mock.mjs +6 -6
- package/esm2022/lib/dv-components-lib.module.mjs +211 -0
- package/{esm2020 → esm2022}/lib/shared-interfaces.mjs +1 -1
- package/esm2022/public-api.mjs +105 -0
- package/fesm2022/net7-components.mjs +6091 -0
- package/fesm2022/net7-components.mjs.map +1 -0
- package/lib/components/advanced-autocomplete/advanced-autocomplete.d.ts +22 -22
- package/lib/components/alert/alert.d.ts +2 -2
- package/lib/components/anchor-wrapper/anchor-wrapper.d.ts +1 -1
- package/lib/components/avatar/avatar.d.ts +1 -1
- package/lib/components/breadcrumbs/breadcrumbs.d.ts +1 -1
- package/lib/components/bubble-chart/bubble-chart.d.ts +3 -3
- package/lib/components/button/button.d.ts +1 -1
- package/lib/components/carousel/carousel.d.ts +1 -1
- package/lib/components/chart/chart.d.ts +2 -2
- package/lib/components/content-placeholder/content-placeholder.d.ts +6 -6
- package/lib/components/data-widget/data-widget.d.ts +1 -1
- package/lib/components/datepicker/datepicker.d.ts +4 -4
- package/lib/components/facet/facet.d.ts +23 -23
- package/lib/components/facet-header/facet-header.d.ts +1 -1
- package/lib/components/facet-year-range/facet-year-range.d.ts +9 -9
- package/lib/components/file-selector/file-selector.d.ts +1 -1
- package/lib/components/footer/footer.d.ts +4 -4
- package/lib/components/header/header.d.ts +1 -1
- package/lib/components/hero/hero.d.ts +16 -16
- package/lib/components/histogram-range/histogram-range.d.ts +3 -3
- package/lib/components/icon/icon.d.ts +1 -1
- package/lib/components/image-viewer/image-viewer.d.ts +1 -1
- package/lib/components/image-viewer-tools/image-viewer-tools.d.ts +3 -3
- package/lib/components/inner-title/inner-title.d.ts +1 -1
- package/lib/components/input-checkbox/input-checkbox.d.ts +1 -1
- package/lib/components/input-link/input-link.d.ts +1 -1
- package/lib/components/input-select/input-select.d.ts +1 -1
- package/lib/components/input-text/input-text.d.ts +1 -1
- package/lib/components/input-textarea/input-textarea.d.ts +2 -2
- package/lib/components/item-preview/item-preview.d.ts +40 -40
- package/lib/components/loader/loader.d.ts +1 -1
- package/lib/components/map/map.d.ts +1 -1
- package/lib/components/metadata-viewer/metadata-viewer.d.ts +19 -19
- package/lib/components/mirador/mirador.d.ts +15 -0
- package/lib/components/mirador/mirador.mock.d.ts +6 -0
- package/lib/components/mirador/miradorTheme.d.ts +218 -0
- package/lib/components/nav/nav.d.ts +1 -1
- package/lib/components/pagination/pagination.d.ts +1 -1
- package/lib/components/progress-line/progress-line.d.ts +1 -1
- package/lib/components/sidebar-header/sidebar-header.d.ts +1 -1
- package/lib/components/signup/signup.d.ts +1 -1
- package/lib/components/simple-autocomplete/simple-autocomplete.d.ts +11 -11
- package/lib/components/table/table.d.ts +1 -1
- package/lib/components/tag/tag.d.ts +1 -1
- package/lib/components/text-viewer/text-viewer.d.ts +1 -1
- package/lib/components/timeline/timeline.d.ts +1 -1
- package/lib/components/toast/toast.d.ts +1 -1
- package/lib/components/tooltip-content/tooltip-content.d.ts +1 -1
- package/lib/components/tree/tree.d.ts +20 -20
- package/lib/components/wizard/wizard.d.ts +30 -30
- package/lib/dv-components-lib.module.d.ts +19 -18
- package/lib/shared-interfaces.d.ts +3 -3
- package/package.json +8 -14
- package/public-api.d.ts +2 -0
- package/src/lib/styles/_imports.scss +54 -56
- package/src/lib/styles/atoms/_button.scss +37 -30
- package/src/lib/styles/components/_advanced-autocomplete.scss +15 -38
- package/src/lib/styles/components/_alert.scss +6 -18
- package/src/lib/styles/components/_anchor-wrapper.scss +3 -4
- package/src/lib/styles/components/_avatar.scss +1 -4
- package/src/lib/styles/components/_breadcrumbs.scss +12 -23
- package/src/lib/styles/components/_bubble-chart.scss +3 -4
- package/src/lib/styles/components/_button.scss +3 -13
- package/src/lib/styles/components/_carousel.scss +18 -46
- package/src/lib/styles/components/_chart.scss +3 -4
- package/src/lib/styles/components/_content-placeholder.scss +17 -17
- package/src/lib/styles/components/_data-widget.scss +5 -17
- package/src/lib/styles/components/_datepicker.scss +3 -4
- package/src/lib/styles/components/_facet-header.scss +3 -8
- package/src/lib/styles/components/_facet-year-range.scss +7 -12
- package/src/lib/styles/components/_facet.scss +11 -28
- package/src/lib/styles/components/_file-selector.scss +3 -4
- package/src/lib/styles/components/_footer.scss +7 -28
- package/src/lib/styles/components/_header.scss +15 -76
- package/src/lib/styles/components/_hero.scss +10 -20
- package/src/lib/styles/components/_histogram-range.scss +1 -2
- package/src/lib/styles/components/_icon.scss +1 -3
- package/src/lib/styles/components/_image-viewer-tools.scss +31 -40
- package/src/lib/styles/components/_image-viewer.scss +20 -36
- package/src/lib/styles/components/_inner-title.scss +13 -39
- package/src/lib/styles/components/_input-checkbox.scss +6 -10
- package/src/lib/styles/components/_input-link.scss +4 -10
- package/src/lib/styles/components/_input-select.scss +2 -7
- package/src/lib/styles/components/_input-text.scss +5 -10
- package/src/lib/styles/components/_input-textarea.scss +3 -8
- package/src/lib/styles/components/_item-preview.scss +10 -36
- package/src/lib/styles/components/_loader.scss +1 -2
- package/src/lib/styles/components/_map.scss +2 -3
- package/src/lib/styles/components/_metadata-viewer.scss +7 -12
- package/src/lib/styles/components/_mirador.scss +19 -0
- package/src/lib/styles/components/_nav.scss +5 -11
- package/src/lib/styles/components/_pagination.scss +29 -33
- package/src/lib/styles/components/_progress-line.scss +3 -10
- package/src/lib/styles/components/_sidebar-header.scss +3 -8
- package/src/lib/styles/components/_signup.scss +48 -49
- package/src/lib/styles/components/_simple-autocomplete.scss +5 -12
- package/src/lib/styles/components/_table.scss +5 -18
- package/src/lib/styles/components/_tag.scss +7 -10
- package/src/lib/styles/components/_text-viewer.scss +33 -88
- package/src/lib/styles/components/_timeline.scss +3 -4
- package/src/lib/styles/components/_toast.scss +7 -17
- package/src/lib/styles/components/_tooltip-content.scss +3 -4
- package/src/lib/styles/components/_tree.scss +26 -22
- package/src/lib/styles/components/_wizard.scss +36 -29
- package/src/lib/styles/generic/_color_scheme.scss +2 -2
- package/src/lib/styles/generic/_mixins.scss +28 -31
- package/src/lib/styles/generic/_variables.scss +9 -11
- package/src/lib/styles/global/_forms.scss +38 -63
- package/src/lib/styles/global/_global.scss +3 -5
- package/src/lib/styles/global/_normalize.scss +17 -57
- package/src/lib/styles/global/_typography.scss +25 -23
- package/src/lib/styles/utilities/_grids.scss +40 -79
- package/esm2020/lib/components/advanced-autocomplete/advanced-autocomplete.mjs +0 -25
- package/esm2020/lib/components/advanced-autocomplete/advanced-autocomplete.mock.mjs +0 -100
- package/esm2020/lib/components/alert/alert.mjs +0 -24
- package/esm2020/lib/components/anchor-wrapper/anchor-wrapper.mjs +0 -35
- package/esm2020/lib/components/avatar/avatar.mjs +0 -34
- package/esm2020/lib/components/breadcrumbs/breadcrumbs.mjs +0 -25
- package/esm2020/lib/components/bubble-chart/bubble-chart.mjs +0 -329
- package/esm2020/lib/components/button/button.mjs +0 -26
- package/esm2020/lib/components/carousel/carousel.mjs +0 -89
- package/esm2020/lib/components/carousel/carousel.mock.mjs +0 -136
- package/esm2020/lib/components/chart/chart.mjs +0 -37
- package/esm2020/lib/components/chart/chart.mock.mjs +0 -112
- package/esm2020/lib/components/content-placeholder/content-placeholder.mjs +0 -17
- package/esm2020/lib/components/data-widget/data-widget.mjs +0 -29
- package/esm2020/lib/components/datepicker/datepicker.mjs +0 -44
- package/esm2020/lib/components/facet/facet.mjs +0 -24
- package/esm2020/lib/components/facet/facet.mock.mjs +0 -103
- package/esm2020/lib/components/facet-header/facet-header.mjs +0 -24
- package/esm2020/lib/components/facet-year-range/facet-year-range.mjs +0 -53
- package/esm2020/lib/components/file-selector/file-selector.mjs +0 -39
- package/esm2020/lib/components/footer/footer.mjs +0 -26
- package/esm2020/lib/components/footer/footer.mock.mjs +0 -58
- package/esm2020/lib/components/header/header.mjs +0 -53
- package/esm2020/lib/components/header/header.mock.mjs +0 -101
- package/esm2020/lib/components/hero/hero.mjs +0 -41
- package/esm2020/lib/components/histogram-range/histogram-range.mjs +0 -390
- package/esm2020/lib/components/icon/icon.mjs +0 -21
- package/esm2020/lib/components/image-viewer/image-viewer.mjs +0 -55
- package/esm2020/lib/components/image-viewer/image-viewer.mock.mjs +0 -25
- package/esm2020/lib/components/image-viewer-tools/image-viewer-tools.mjs +0 -28
- package/esm2020/lib/components/image-viewer-tools/image-viewer-tools.mock.mjs +0 -54
- package/esm2020/lib/components/inner-title/inner-title.mjs +0 -40
- package/esm2020/lib/components/inner-title/inner-title.mock.mjs +0 -53
- package/esm2020/lib/components/input-checkbox/input-checkbox.mjs +0 -24
- package/esm2020/lib/components/input-checkbox/input-checkbox.mock.mjs +0 -25
- package/esm2020/lib/components/input-link/input-link.mjs +0 -24
- package/esm2020/lib/components/input-link/input-link.mock.mjs +0 -38
- package/esm2020/lib/components/input-text/input-text.mjs +0 -34
- package/esm2020/lib/components/input-textarea/input-textarea.mjs +0 -21
- package/esm2020/lib/components/item-preview/item-preview.mjs +0 -25
- package/esm2020/lib/components/item-preview/item-preview.mock.mjs +0 -43
- package/esm2020/lib/components/loader/loader.mjs +0 -16
- package/esm2020/lib/components/map/map.mjs +0 -64
- package/esm2020/lib/components/metadata-viewer/metadata-viewer.mjs +0 -19
- package/esm2020/lib/components/metadata-viewer/metadata-viewer.mock.mjs +0 -74
- package/esm2020/lib/components/nav/nav.mjs +0 -27
- package/esm2020/lib/components/nav/nav.mock.mjs +0 -36
- package/esm2020/lib/components/pagination/pagination.mjs +0 -31
- package/esm2020/lib/components/pagination/pagination.mock.mjs +0 -23
- package/esm2020/lib/components/progress-line/progress-line.mjs +0 -19
- package/esm2020/lib/components/sidebar-header/sidebar-header.mjs +0 -24
- package/esm2020/lib/components/signup/signup.mjs +0 -44
- package/esm2020/lib/components/simple-autocomplete/simple-autocomplete.mjs +0 -25
- package/esm2020/lib/components/simple-autocomplete/simple-autocomplete.mock.mjs +0 -15
- package/esm2020/lib/components/table/table.mjs +0 -35
- package/esm2020/lib/components/table/table.mock.mjs +0 -152
- package/esm2020/lib/components/tag/tag.mjs +0 -35
- package/esm2020/lib/components/text-viewer/text-viewer.mjs +0 -42
- package/esm2020/lib/components/timeline/timeline.mjs +0 -51
- package/esm2020/lib/components/timeline/timeline.mock.mjs +0 -137
- package/esm2020/lib/components/toast/toast.mjs +0 -24
- package/esm2020/lib/components/toast/toast.mock.mjs +0 -51
- package/esm2020/lib/components/tooltip-content/tooltip-content.mjs +0 -25
- package/esm2020/lib/components/tree/tree.mjs +0 -25
- package/esm2020/lib/components/wizard/wizard.mjs +0 -24
- package/esm2020/lib/dv-components-lib.module.mjs +0 -211
- package/esm2020/public-api.mjs +0 -103
- package/fesm2015/net7-components.mjs +0 -5421
- package/fesm2015/net7-components.mjs.map +0 -1
- package/fesm2020/net7-components.mjs +0 -5434
- package/fesm2020/net7-components.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/components/avatar/avatar.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/datepicker/datepicker.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/facet-header/facet-header.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/facet-year-range/facet-year-range.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input-select/input-select.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input-text/input-text.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input-textarea/input-textarea.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/progress-line/progress-line.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/sidebar-header/sidebar-header.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/tag/tag.mock.mjs +0 -0
- /package/{esm2020 → esm2022}/net7-components.mjs +0 -0
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-use-before-define */
|
|
2
|
-
//---------------------------
|
|
3
|
-
// HISTOGRAM-RANGE.ts
|
|
4
|
-
//---------------------------
|
|
5
|
-
import { Component, Input } from '@angular/core';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
export class HistogramRangeComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.sliders = [];
|
|
11
|
-
this._loaded = false;
|
|
12
|
-
this.draw = () => {
|
|
13
|
-
const { d3 } = this;
|
|
14
|
-
const { width, margin, height, items, colours, containerId, axis, setSliders } = this.data;
|
|
15
|
-
// data validation
|
|
16
|
-
const rangeMode = items.every((d) => d.range);
|
|
17
|
-
if (!rangeMode && items.some((d) => !d.range)) {
|
|
18
|
-
throw Error('All items must have the "range" property');
|
|
19
|
-
}
|
|
20
|
-
// Helpers - Start:
|
|
21
|
-
const LABELtoX = d3
|
|
22
|
-
.scaleBand()
|
|
23
|
-
.domain(items.map((d) => d.label))
|
|
24
|
-
.range([0, width])
|
|
25
|
-
.paddingInner(0.17)
|
|
26
|
-
.paddingOuter(1);
|
|
27
|
-
const XtoLABEL = (value) => {
|
|
28
|
-
const domain = LABELtoX.domain();
|
|
29
|
-
const paddingOuter = LABELtoX(domain[0]);
|
|
30
|
-
const eachBand = LABELtoX.step();
|
|
31
|
-
const index = Math.floor(((value - paddingOuter) / eachBand));
|
|
32
|
-
return domain[Math.max(0, Math.min(index, domain.length - 1))];
|
|
33
|
-
};
|
|
34
|
-
// YEAR SELECTION CIRCLES
|
|
35
|
-
// let sliders;
|
|
36
|
-
if (setSliders && this.sliders) {
|
|
37
|
-
this.sliders = setSliders
|
|
38
|
-
.map((d) => ({ x: LABELtoX(d) + LABELtoX.bandwidth() / 2, y: height }));
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
this.sliders = d3
|
|
42
|
-
.extent(items, (d) => d.label)
|
|
43
|
-
.map((d) => ({ x: LABELtoX(d) + LABELtoX.bandwidth() / 2, y: height }));
|
|
44
|
-
}
|
|
45
|
-
const isInRange = (y) => {
|
|
46
|
-
const allItems = this.sliders.map((d) => XtoLABEL(d.x));
|
|
47
|
-
if (y >= d3.min(allItems) && y <= d3.max(allItems))
|
|
48
|
-
return true;
|
|
49
|
-
return false;
|
|
50
|
-
};
|
|
51
|
-
function colourBars(d) {
|
|
52
|
-
if (isInRange(d.label))
|
|
53
|
-
return 'url(#gradient)';
|
|
54
|
-
return '#e3e3e3';
|
|
55
|
-
}
|
|
56
|
-
this.colourBars = colourBars;
|
|
57
|
-
this.getSelectedRange = () => {
|
|
58
|
-
const rangeStart = items.find((it) => it.label === XtoLABEL(this.sliders[0].x));
|
|
59
|
-
const rangeEnd = items.find((it) => it.label === XtoLABEL(this.sliders[1].x));
|
|
60
|
-
return [
|
|
61
|
-
rangeStart.payload,
|
|
62
|
-
rangeMode
|
|
63
|
-
? rangeEnd.range.payload
|
|
64
|
-
: rangeEnd.payload
|
|
65
|
-
];
|
|
66
|
-
};
|
|
67
|
-
// Helpers - End.
|
|
68
|
-
// clear HTML contents
|
|
69
|
-
document.getElementById(containerId).innerHTML = '';
|
|
70
|
-
const svg = d3
|
|
71
|
-
.select(`#${containerId}`)
|
|
72
|
-
.attr('viewBox', `0 0 ${width + margin.left + margin.right} ${height + margin.top + margin.bottom}`);
|
|
73
|
-
this.svg = svg;
|
|
74
|
-
const scaleHeight = d3
|
|
75
|
-
.scaleSymlog() // most similar scale to the original
|
|
76
|
-
.domain([0, d3.max(items, (d) => d.value)])
|
|
77
|
-
.range([height, 0]);
|
|
78
|
-
// GRADIENT
|
|
79
|
-
const defs = svg.append('defs'); // definitions
|
|
80
|
-
const gradient = defs
|
|
81
|
-
.append('linearGradient')
|
|
82
|
-
.attr('id', 'gradient')
|
|
83
|
-
.attr('gradientUnits', 'userSpaceOnUse')
|
|
84
|
-
.attr('x1', 0)
|
|
85
|
-
.attr('y1', height)
|
|
86
|
-
.attr('x2', 0)
|
|
87
|
-
.attr('y2', margin.top);
|
|
88
|
-
gradient
|
|
89
|
-
.append('stop')
|
|
90
|
-
.attr('class', 'start')
|
|
91
|
-
.attr('offset', '0%')
|
|
92
|
-
.attr('stop-color', colours.bottom) // bottom gradient
|
|
93
|
-
.attr('stop-opacity', 1);
|
|
94
|
-
gradient
|
|
95
|
-
.append('stop')
|
|
96
|
-
.attr('class', 'end')
|
|
97
|
-
.attr('offset', '100%')
|
|
98
|
-
.attr('stop-color', colours.top) // top gradient
|
|
99
|
-
.attr('stop-opacity', 1);
|
|
100
|
-
// DRAW INSIDE MARGINS
|
|
101
|
-
const g = svg
|
|
102
|
-
.append('g')
|
|
103
|
-
.attr('class', 'chart')
|
|
104
|
-
.attr('transform', `translate(${margin.left},${margin.top})`);
|
|
105
|
-
const barsLayer = g.append('g').attr('class', 'bars');
|
|
106
|
-
const controlsLayer = g.append('g').attr('class', 'controls');
|
|
107
|
-
// BAR CHART
|
|
108
|
-
barsLayer // bars
|
|
109
|
-
.selectAll('rect.bars')
|
|
110
|
-
.data(items)
|
|
111
|
-
.join('rect')
|
|
112
|
-
.attr('class', 'bars')
|
|
113
|
-
.attr('width', LABELtoX.bandwidth)
|
|
114
|
-
.attr('height', (d) => height - scaleHeight(d.value))
|
|
115
|
-
.attr('y', (d) => scaleHeight(d.value))
|
|
116
|
-
.attr('x', (d) => LABELtoX(d.label))
|
|
117
|
-
.attr('data-start', (d) => d.payload) // make the data easily accessible
|
|
118
|
-
.attr('data-end', (d) => (d.range ? d.range.payload : d.payload))
|
|
119
|
-
.attr('fill', 'url(#gradient)');
|
|
120
|
-
barsLayer // catch bar events
|
|
121
|
-
.on('mousemove', (event) => {
|
|
122
|
-
const year = XtoLABEL(this.getEventCoords(event).x);
|
|
123
|
-
d3.selectAll('rect.bars').attr('fill', (d) => {
|
|
124
|
-
if (year === d.label)
|
|
125
|
-
return '#B0CCF8';
|
|
126
|
-
return colourBars(d);
|
|
127
|
-
});
|
|
128
|
-
})
|
|
129
|
-
.on('mouseout', () => {
|
|
130
|
-
d3.selectAll('rect.bars').attr('fill', (d) => colourBars(d));
|
|
131
|
-
})
|
|
132
|
-
.on('click', (event) => {
|
|
133
|
-
const label = XtoLABEL(this.getEventCoords(event).x);
|
|
134
|
-
const xAxisValue = LABELtoX(label) + LABELtoX.bandwidth() / 2;
|
|
135
|
-
const newValue = {
|
|
136
|
-
x: xAxisValue,
|
|
137
|
-
y: height
|
|
138
|
-
};
|
|
139
|
-
this.sliders = [
|
|
140
|
-
// avoid joining the two objects!
|
|
141
|
-
{ ...newValue },
|
|
142
|
-
{ ...newValue }
|
|
143
|
-
];
|
|
144
|
-
rangePicker
|
|
145
|
-
.data(this.sliders)
|
|
146
|
-
.select('circle')
|
|
147
|
-
.transition()
|
|
148
|
-
.ease(d3.easeQuadOut)
|
|
149
|
-
.duration(550)
|
|
150
|
-
.attr('cx', (d) => d.x);
|
|
151
|
-
controlsLayer
|
|
152
|
-
.select('path.blueline')
|
|
153
|
-
.transition()
|
|
154
|
-
.ease(d3.easeQuadOut)
|
|
155
|
-
.duration(550)
|
|
156
|
-
.attr('d', d3.line()(this.sliders.map((d) => [d.x, d.y])));
|
|
157
|
-
controlsLayer
|
|
158
|
-
.selectAll('text')
|
|
159
|
-
.transition()
|
|
160
|
-
.ease(d3.easeQuadOut)
|
|
161
|
-
.duration(550)
|
|
162
|
-
.attr('x', () => xAxisValue)
|
|
163
|
-
.text((d, i) => {
|
|
164
|
-
if (!rangeMode)
|
|
165
|
-
return label;
|
|
166
|
-
const item = items.find((it) => it.label === label);
|
|
167
|
-
if (i > 0)
|
|
168
|
-
return item.range.label;
|
|
169
|
-
return item.label;
|
|
170
|
-
});
|
|
171
|
-
g.selectAll('rect.bars').attr('fill', (d) => colourBars(d));
|
|
172
|
-
this.textCollision(this.sliders);
|
|
173
|
-
this.emit('rangeselected', this.getSelectedRange());
|
|
174
|
-
});
|
|
175
|
-
controlsLayer // gray line
|
|
176
|
-
.append('path')
|
|
177
|
-
.attr('class', 'grayline')
|
|
178
|
-
.attr('d', d3.line()([
|
|
179
|
-
[0, height],
|
|
180
|
-
[width, height]
|
|
181
|
-
]))
|
|
182
|
-
.attr('stroke-width', 2)
|
|
183
|
-
.attr('opacity', 1)
|
|
184
|
-
.attr('stroke', '#C1C5C7');
|
|
185
|
-
controlsLayer // blue line
|
|
186
|
-
.append('path')
|
|
187
|
-
.attr('class', 'blueline')
|
|
188
|
-
.attr('d', d3.line()(this.sliders.map((d) => [d.x, d.y])))
|
|
189
|
-
.attr('stroke-width', 2)
|
|
190
|
-
.attr('stroke', colours.accent);
|
|
191
|
-
const rangePicker = controlsLayer
|
|
192
|
-
.selectAll('g.rangepicker')
|
|
193
|
-
.data(this.sliders.sort((a, b) => d3.ascending(a.x, b.x)))
|
|
194
|
-
.join('g')
|
|
195
|
-
.attr('class', 'rangepicker');
|
|
196
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
197
|
-
const self = this; // FIXME: Allow use of class "this" inside dragging update;
|
|
198
|
-
/**
|
|
199
|
-
* Animate the elements while the user is dragging one of the range selectors
|
|
200
|
-
*/
|
|
201
|
-
function draggingUpdate(event, data) {
|
|
202
|
-
const label = XtoLABEL(event.x);
|
|
203
|
-
const xAxisValue = LABELtoX(label) + LABELtoX.bandwidth() / 2;
|
|
204
|
-
const yb = [];
|
|
205
|
-
g.selectAll('circle').each(function setBallPosition() {
|
|
206
|
-
yb.push({ x: +d3.select(this).attr('cx'), y: height });
|
|
207
|
-
});
|
|
208
|
-
self.sliders = yb.sort((a, b) => d3.ascending(a.x, b.x));
|
|
209
|
-
// move the circle
|
|
210
|
-
d3.select(this)
|
|
211
|
-
.select('circle')
|
|
212
|
-
.attr('cx', data.x = xAxisValue);
|
|
213
|
-
// move the blue line
|
|
214
|
-
controlsLayer
|
|
215
|
-
.select('path.blueline')
|
|
216
|
-
.attr('d', d3.line()(self.sliders.map((d) => [d.x, d.y])));
|
|
217
|
-
// change the text position
|
|
218
|
-
d3.select(this)
|
|
219
|
-
.select('text')
|
|
220
|
-
.attr('x', () => xAxisValue);
|
|
221
|
-
// change the text values
|
|
222
|
-
controlsLayer
|
|
223
|
-
.selectAll('text')
|
|
224
|
-
.text((d) => {
|
|
225
|
-
const l = XtoLABEL(d.x);
|
|
226
|
-
if (!rangeMode)
|
|
227
|
-
return l;
|
|
228
|
-
const position = self.sliders.findIndex((slider) => slider.x === d.x);
|
|
229
|
-
const range = self.getSelectedRange();
|
|
230
|
-
if (position === 1)
|
|
231
|
-
return range[1];
|
|
232
|
-
return range[0];
|
|
233
|
-
});
|
|
234
|
-
self.textCollision(self.sliders);
|
|
235
|
-
// colour the bars
|
|
236
|
-
g.selectAll('rect.bars').attr('fill', (d) => colourBars(d));
|
|
237
|
-
}
|
|
238
|
-
rangePicker // drag handler
|
|
239
|
-
.call(d3.drag()
|
|
240
|
-
.on('drag', draggingUpdate)
|
|
241
|
-
.on('end', (event, data) => {
|
|
242
|
-
// update one last time to prevent desyncing
|
|
243
|
-
draggingUpdate(event, data);
|
|
244
|
-
// emit the selected range
|
|
245
|
-
this.emit('rangeselected', this.getSelectedRange());
|
|
246
|
-
}));
|
|
247
|
-
rangePicker
|
|
248
|
-
.append('circle')
|
|
249
|
-
.attr('cx', (d) => d.x)
|
|
250
|
-
.attr('cy', (d) => d.y)
|
|
251
|
-
.attr('r', 9)
|
|
252
|
-
.attr('fill', 'white')
|
|
253
|
-
.attr('stroke-width', 2)
|
|
254
|
-
.attr('stroke', colours.accent)
|
|
255
|
-
.attr('style', 'cursor: pointer');
|
|
256
|
-
rangePicker
|
|
257
|
-
.attr('text-anchor', 'middle')
|
|
258
|
-
.attr('font-family', 'Roboto, Arial, sans-serif')
|
|
259
|
-
.attr('font-size', '12px')
|
|
260
|
-
.append('text')
|
|
261
|
-
.attr('y', (d) => d.y + margin.bottom / 2)
|
|
262
|
-
.attr('x', (d) => d.x)
|
|
263
|
-
.attr('fill', colours.accent)
|
|
264
|
-
.text((d, i) => {
|
|
265
|
-
const l = XtoLABEL(d.x);
|
|
266
|
-
if (rangeMode && i === 1) {
|
|
267
|
-
return items.find((item) => item.label === l).range.label;
|
|
268
|
-
}
|
|
269
|
-
return l;
|
|
270
|
-
});
|
|
271
|
-
if (axis?.yAxis?.show) {
|
|
272
|
-
const yAxis = d3.axisLeft(scaleHeight)
|
|
273
|
-
.ticks(axis.yAxis.tickAmount ?? 2)
|
|
274
|
-
.tickValues(axis.yAxis.values ? axis.yAxis.values : null);
|
|
275
|
-
const yAxisGroup = svg.append('g')
|
|
276
|
-
.attr('transform', `translate(${margin.left}, ${margin.top})`)
|
|
277
|
-
.call(yAxis);
|
|
278
|
-
yAxisGroup.selectAll('path, line').style('stroke', colours.accent);
|
|
279
|
-
yAxisGroup.selectAll('text').style('fill', colours.accent);
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
/** Avoid collision of the slider labels */
|
|
283
|
-
this.textCollision = (sliders) => {
|
|
284
|
-
// pre-requisites
|
|
285
|
-
const controlsLayer = this.d3.select('g.chart').select('g.controls');
|
|
286
|
-
const { items, margin } = this.data;
|
|
287
|
-
const rangeMode = items.every((d) => d.range);
|
|
288
|
-
// run collision detection
|
|
289
|
-
const isColliding = sliders[0].x === sliders[1].x;
|
|
290
|
-
if (rangeMode && isColliding) {
|
|
291
|
-
controlsLayer
|
|
292
|
-
.selectAll('text')
|
|
293
|
-
.attr('y', (d, i) => (i > 0 ? d.y + margin.bottom / 2 + 12 : d.y + margin.bottom / 2))
|
|
294
|
-
.text((d, i) => {
|
|
295
|
-
const range = this.getSelectedRange();
|
|
296
|
-
return range[i];
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
controlsLayer
|
|
301
|
-
.selectAll('text')
|
|
302
|
-
.attr('y', (d) => d.y + margin.bottom / 2);
|
|
303
|
-
}
|
|
304
|
-
};
|
|
305
|
-
/** Public api that allows to dinamically change the bars */
|
|
306
|
-
this.setBars = (newBars) => {
|
|
307
|
-
this.data.items = newBars;
|
|
308
|
-
this.draw();
|
|
309
|
-
this.d3.selectAll('rect.bars').attr('fill', (d) => this.colourBars(d));
|
|
310
|
-
};
|
|
311
|
-
/** Public api that allows to dinamically change the slider position */
|
|
312
|
-
this.setSliders = ([startLabel, endLabel], emit = true) => {
|
|
313
|
-
// setSliders([1450, 1575])
|
|
314
|
-
this.data.setSliders = [`${startLabel}`, `${endLabel}`];
|
|
315
|
-
this.draw();
|
|
316
|
-
this.d3.selectAll('rect.bars').attr('fill', (d) => this.colourBars(d));
|
|
317
|
-
const range = this.getSelectedRange();
|
|
318
|
-
if (emit)
|
|
319
|
-
this.emit('rangeselected', range);
|
|
320
|
-
this.textCollision(this.sliders);
|
|
321
|
-
return range;
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
ngAfterContentChecked() {
|
|
325
|
-
/*
|
|
326
|
-
Waits for the dom to be loaded, then fires the draw function
|
|
327
|
-
that renders the chart.
|
|
328
|
-
*/
|
|
329
|
-
if (this.data) {
|
|
330
|
-
if (this._loaded)
|
|
331
|
-
return;
|
|
332
|
-
this._loaded = true;
|
|
333
|
-
setTimeout(() => {
|
|
334
|
-
import('d3').then((module) => {
|
|
335
|
-
this.d3 = module;
|
|
336
|
-
this.draw();
|
|
337
|
-
this.emitLoaded(true);
|
|
338
|
-
if (this.data && this.data.setDraw) {
|
|
339
|
-
this.data.setDraw(this.draw);
|
|
340
|
-
}
|
|
341
|
-
if (this.data.setApi) { // expose the component api
|
|
342
|
-
this.data.setApi({
|
|
343
|
-
setSliders: this.setSliders,
|
|
344
|
-
setBars: this.setBars,
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
// eslint-disable-next-line dot-notation
|
|
348
|
-
// window['setSliders'] = this.setSliders;
|
|
349
|
-
});
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
/** Get x-axis position from label */
|
|
354
|
-
labelToX() {
|
|
355
|
-
return this.d3
|
|
356
|
-
.scaleBand()
|
|
357
|
-
.domain(this.data.items.map((d) => d.label))
|
|
358
|
-
.range([0, this.data.width])
|
|
359
|
-
.paddingInner(0.17)
|
|
360
|
-
.paddingOuter(1);
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Get an event with viewBox coordinates and
|
|
364
|
-
* parse them in absolute coordinates
|
|
365
|
-
*/
|
|
366
|
-
getEventCoords(event) {
|
|
367
|
-
const m = event.target.getScreenCTM();
|
|
368
|
-
const point = this.svg.node().createSVGPoint();
|
|
369
|
-
point.x = event.clientX;
|
|
370
|
-
point.y = event.clientY;
|
|
371
|
-
return point.matrixTransform(m.inverse());
|
|
372
|
-
}
|
|
373
|
-
/** Emits an event when the component has loaded */
|
|
374
|
-
emitLoaded(payload) {
|
|
375
|
-
if (!this.emit)
|
|
376
|
-
return;
|
|
377
|
-
this.emit('loaded', payload);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
HistogramRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HistogramRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
381
|
-
HistogramRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HistogramRangeComponent, selector: "n7-histogram-range", inputs: { data: "data", emit: "emit" }, ngImport: i0, template: "<div *ngIf=\"data\" class=\"n7-histogram-range\">\n <svg #histogramRange [id]=\"data.containerId\"></svg>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
382
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HistogramRangeComponent, decorators: [{
|
|
383
|
-
type: Component,
|
|
384
|
-
args: [{ selector: 'n7-histogram-range', template: "<div *ngIf=\"data\" class=\"n7-histogram-range\">\n <svg #histogramRange [id]=\"data.containerId\"></svg>\n</div>\n" }]
|
|
385
|
-
}], propDecorators: { data: [{
|
|
386
|
-
type: Input
|
|
387
|
-
}], emit: [{
|
|
388
|
-
type: Input
|
|
389
|
-
}] } });
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9ncmFtLXJhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHYtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2hpc3RvZ3JhbS1yYW5nZS9oaXN0b2dyYW0tcmFuZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvaGlzdG9ncmFtLXJhbmdlL2hpc3RvZ3JhbS1yYW5nZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6Qyw2QkFBNkI7QUFDN0IscUJBQXFCO0FBQ3JCLDZCQUE2QjtBQUU3QixPQUFPLEVBQXVCLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQTJGdEUsTUFBTSxPQUFPLHVCQUF1QjtJQUpwQztRQVdVLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFLdEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQW1DeEIsU0FBSSxHQUFHLEdBQUcsRUFBRTtZQUNWLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxFQUNKLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUNyQixLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFDM0IsSUFBSSxFQUFFLFVBQVUsRUFDakIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBRWQsa0JBQWtCO1lBQ2xCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEtBQUssQ0FBQyww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QUFJLENBQUM7YUFDbEIsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsS0FBSztRQUNsQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0MsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQXFCRCxtREFBbUQ7SUFDbkQsVUFBVSxDQUFDLE9BQU87UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDOztvSEF2WlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsa0dDaEdwQyx3SEFHQTsyRkQ2RmEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLG9CQUFvQjs4QkFJckIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSElTVE9HUkFNLVJBTkdFLnRzXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKipcbiAqIEludGVyZmFjZSBmb3IgSGlzdG9ncmFtUmFuZ2VDb21wb25lbnQncyBcImRhdGFcIlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhpc3RvZ3JhbVJhbmdlRGF0YSB7XG4gIC8qKlxuICAgKiB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGhpc3RvZ3JhbS1yYW5nZSBzdmdcbiAgICovXG4gIGNvbnRhaW5lcklkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiB0b3RhbCB3aWR0aCBmb3IgdGhlIHN2ZyBlbGVtZW50XG4gICAqL1xuICB3aWR0aDogbnVtYmVyO1xuICAvKipcbiAgICogdG90YWwgaGVpZ2h0IGZvciB0aGUgc3ZnIGVsZW1lbnRcbiAgICovXG4gIGhlaWdodDogbnVtYmVyO1xuICAvKipcbiAgICogSW50ZXJuYWwgbWFyZ2lucyBvZiB0aGUgc3ZnXG4gICAqL1xuICBtYXJnaW46IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgcmlnaHQ6IG51bWJlcjtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBib3R0b206IG51bWJlcjtcbiAgfTtcbiAgLyoqXG4gICAqIFRoZW1lIG9mIHRoZSBoaXN0b2dyYW1cbiAgICovXG4gIGNvbG91cnM6IHtcbiAgICB0b3A6IHN0cmluZztcbiAgICBib3R0b206IHN0cmluZztcbiAgICBhY2NlbnQ6IHN0cmluZztcbiAgfTtcbiAgLyoqXG4gICAqIERhdGEgZm9yIHRoZSBoaXN0b2dyYW0gYmFyc1xuICAgKi9cbiAgaXRlbXM6IHtcbiAgICAvKiogZGVmYXVsdCBsYWJlbCBvZiB0aGUgaXRlbSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIHktYXhpcyB2YWx1ZSBvZiB0aGUgYmFyIChoZWlnaHQpICovXG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICAvKiogcGF5bG9hZCB0aGF0IHRoZSBpdGVtIHNob3VsZCBlbWl0IHdoZW4gc2VsZWN0ZWQgKi9cbiAgICBwYXlsb2FkOiBhbnk7XG4gICAgLyoqXG4gICAgICogJ3VwcGVyJyB2YWx1ZXMgb2YgdGhlIHJhbmdlLlxuICAgICAqIG9ubHkgdXNlZCB3aGVuIGVhY2ggYmFyIHJlcHJlc2VudHMgYSByYW5nZS5cbiAgICAgKi9cbiAgICByYW5nZT86IHtcbiAgICAgIC8qKiBsYWJlbCBsb2FkZWQgd2hlbiBzZWxlY3RlZCBieSB0aGUgcmlnaHQtbW9zdCBwb2ludGVyICovXG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgLyoqIHBheWxvYWQgZW1pdHRlZCB3aGVuIHNlbGVjdGVkIGJ5IHRoZSByaWdodC1tb3N0IHBvaW50ZXIgKi9cbiAgICAgIHBheWxvYWQ6IGFueTtcbiAgICB9O1xuICB9W107XG4gIC8qKlxuICAgKiBBeGlzIHNldHRpbmdzXG4gICAqL1xuICBheGlzPzoge1xuICAgIC8qKiBZIEF4aXMgc2V0dGluZ3MgKi9cbiAgICB5QXhpcz86IHtcbiAgICAgIC8qKiBUdXJuIG9uIGFuZCBvZmYgdGhlIGF4aXMgKi9cbiAgICAgIHNob3c/OiBib29sZWFuO1xuICAgICAgLyoqIE1hbnVhbGx5IHNldCB0aGUgYXhpcyB2YWx1ZXMgdG8gc2hvdyAqL1xuICAgICAgdmFsdWVzPzogbnVtYmVyW107XG4gICAgICAvKiogSG93IG1hbnkgdGlja3MgZG8geW91IHdhbnQgdG8gc2VlICovXG4gICAgICB0aWNrQW1vdW50PzogbnVtYmVyO1xuICAgIH07XG4gIH07XG4gIC8qKlxuICAgKiBleHBvc2UgdGhlIGRyYXcgZnVuY3Rpb24gb3V0c2lkZSBvZiBuNy1mcm9udGVuZC9jb21wb25lbnRzIGxpYnJhcnlcbiAgICogdGhpcyBpcyBuZWVkZWQgdG8gcmVkcmF3IGJ1YmJsZS1jaGFydC1jb21wb25lbnQgb24gY29tbWFuZFxuICAgKi9cbiAgc2V0RHJhdz86IGFueTtcbiAgLyoqXG4gICAqIHNldFNsaWRlcnNcbiAgICovXG4gIHNldFNsaWRlcnM/OiBMYWJlbENvdXBsZTtcbiAgLyoqXG4gICAqIFB1YmxpYyBhcGlcbiAgICovXG4gIHNldEFwaT86IGFueTtcbn1cblxudHlwZSBTbGlkZXJzID0geyB4OiBudW1iZXI7IHk6IG51bWJlciB9W107XG50eXBlIExhYmVsQ291cGxlID0gW3N0cmluZywgc3RyaW5nXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbjctaGlzdG9ncmFtLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hpc3RvZ3JhbS1yYW5nZS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBIaXN0b2dyYW1SYW5nZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBASW5wdXQoKSBkYXRhOiBIaXN0b2dyYW1SYW5nZURhdGE7XG5cbiAgQElucHV0KCkgZW1pdDogYW55O1xuXG4gIHByaXZhdGUgZDM7XG5cbiAgcHJpdmF0ZSBzbGlkZXJzOiBTbGlkZXJzID0gW107XG5cbiAgLyoqIGQzIHNlbGVjdGlvbiBzdmcgcm9vdCAqL1xuICBwcml2YXRlIHN2ZztcblxuICBwcml2YXRlIF9sb2FkZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIGNvbG91ckJhcnM7XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFJhbmdlO1xuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICAvKlxuICAgICAgICAgV2FpdHMgZm9yIHRoZSBkb20gdG8gYmUgbG9hZGVkLCB0aGVuIGZpcmVzIHRoZSBkcmF3IGZ1bmN0aW9uXG4gICAgICAgICB0aGF0IHJlbmRlcnMgdGhlIGNoYXJ0LlxuICAgICovXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgaWYgKHRoaXMuX2xvYWRlZCkgcmV0dXJuO1xuICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpbXBvcnQoJ2QzJykudGhlbigobW9kdWxlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kMyA9IG1vZHVsZTtcbiAgICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICAgICAgICB0aGlzLmVtaXRMb2FkZWQodHJ1ZSk7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEuc2V0RHJhdykge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnNldERyYXcodGhpcy5kcmF3KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YS5zZXRBcGkpIHsgLy8gZXhwb3NlIHRoZSBjb21wb25lbnQgYXBpXG4gICAgICAgICAgICB0aGlzLmRhdGEuc2V0QXBpKHtcbiAgICAgICAgICAgICAgc2V0U2xpZGVyczogdGhpcy5zZXRTbGlkZXJzLFxuICAgICAgICAgICAgICBzZXRCYXJzOiB0aGlzLnNldEJhcnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvblxuICAgICAgICAgIC8vIHdpbmRvd1snc2V0U2xpZGVycyddID0gdGhpcy5zZXRTbGlkZXJzO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRyYXcgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBkMyB9ID0gdGhpcztcbiAgICBjb25zdCB7XG4gICAgICB3aWR0aCwgbWFyZ2luLCBoZWlnaHQsXG4gICAgICBpdGVtcywgY29sb3VycywgY29udGFpbmVySWQsXG4gICAgICBheGlzLCBzZXRTbGlkZXJzXG4gICAgfSA9IHRoaXMuZGF0YTtcblxuICAgIC8vIGRhdGEgdmFsaWRhdGlvblxuICAgIGNvbnN0IHJhbmdlTW9kZSA9IGl0ZW1zLmV2ZXJ5KChkKSA9PiBkLnJhbmdlKTtcbiAgICBpZiAoIXJhbmdlTW9kZSAmJiBpdGVtcy5zb21lKChkKSA9PiAhZC5yYW5nZSkpIHtcbiAgICAgIHRocm93IEVycm9yKCdBbGwgaXRlbXMgbXVzdCBoYXZlIHRoZSBcInJhbmdlXCIgcHJvcGVydHknKTtcbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzIC0gU3RhcnQ6XG4gICAgY29uc3QgTEFCRUx0b1ggPSBkM1xuICAgICAgLnNjYWxlQmFuZCgpXG4gICAgICAuZG9tYWluKGl0ZW1zLm1hcCgoZCkgPT4gZC5sYWJlbCkpXG4gICAgICAucmFuZ2UoWzAsIHdpZHRoXSlcbiAgICAgIC5wYWRkaW5nSW5uZXIoMC4xNylcbiAgICAgIC5wYWRkaW5nT3V0ZXIoMSk7XG5cbiAgICBjb25zdCBYdG9MQUJFTCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZG9tYWluID0gTEFCRUx0b1guZG9tYWluKCk7XG4gICAgICBjb25zdCBwYWRkaW5nT3V0ZXIgPSBMQUJFTHRvWChkb21haW5bMF0pO1xuICAgICAgY29uc3QgZWFjaEJhbmQgPSBMQUJFTHRvWC5zdGVwKCk7XG4gICAgICBjb25zdCBpbmRleCA9IE1hdGguZmxvb3IoKCh2YWx1ZSAtIHBhZGRpbmdPdXRlcikgLyBlYWNoQmFuZCkpO1xuICAgICAgcmV0dXJuIGRvbWFpbltNYXRoLm1heCgwLCBNYXRoLm1pbihpbmRleCwgZG9tYWluLmxlbmd0aCAtIDEpKV07XG4gICAgfTtcblxuICAgIC8vIFlFQVIgU0VMRUNUSU9OIENJUkNMRVNcbiAgICAvLyBsZXQgc2xpZGVycztcbiAgICBpZiAoc2V0U2xpZGVycyAmJiB0aGlzLnNsaWRlcnMpIHtcbiAgICAgIHRoaXMuc2xpZGVycyA9IHNldFNsaWRlcnNcbiAgICAgICAgLm1hcCgoZCkgPT4gKHsgeDogTEFCRUx0b1goZCkgKyBMQUJFTHRvWC5iYW5kd2lkdGgoKSAvIDIsIHk6IGhlaWdodCB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2xpZGVycyA9IGQzXG4gICAgICAgIC5leHRlbnQoaXRlbXMsIChkKSA9PiBkLmxhYmVsKVxuICAgICAgICAubWFwKChkKSA9PiAoeyB4OiBMQUJFTHRvWChkKSArIExBQkVMdG9YLmJhbmR3aWR0aCgpIC8gMiwgeTogaGVpZ2h0IH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0luUmFuZ2UgPSAoeSkgPT4ge1xuICAgICAgY29uc3QgYWxsSXRlbXMgPSB0aGlzLnNsaWRlcnMubWFwKChkKSA9PiBYdG9MQUJFTChkLngpKTtcbiAgICAgIGlmICh5ID49IGQzLm1pbihhbGxJdGVtcykgJiYgeSA8PSBkMy5tYXgoYWxsSXRlbXMpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY29sb3VyQmFycyhkKSB7XG4gICAgICBpZiAoaXNJblJhbmdlKGQubGFiZWwpKSByZXR1cm4gJ3VybCgjZ3JhZGllbnQpJztcbiAgICAgIHJldHVybiAnI2UzZTNlMyc7XG4gICAgfVxuICAgIHRoaXMuY29sb3VyQmFycyA9IGNvbG91ckJhcnM7XG5cbiAgICB0aGlzLmdldFNlbGVjdGVkUmFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCByYW5nZVN0YXJ0ID0gaXRlbXMuZmluZCgoaXQpID0+IGl0LmxhYmVsID09PSBYdG9MQUJFTCh0aGlzLnNsaWRlcnNbMF0ueCkpO1xuICAgICAgY29uc3QgcmFuZ2VFbmQgPSBpdGVtcy5maW5kKChpdCkgPT4gaXQubGFiZWwgPT09IFh0b0xBQkVMKHRoaXMuc2xpZGVyc1sxXS54KSk7XG4gICAgICByZXR1cm4gW1xuICAgICAgICByYW5nZVN0YXJ0LnBheWxvYWQsXG4gICAgICAgIHJhbmdlTW9kZVxuICAgICAgICAgID8gcmFuZ2VFbmQucmFuZ2UucGF5bG9hZFxuICAgICAgICAgIDogcmFuZ2VFbmQucGF5bG9hZFxuICAgICAgXTtcbiAgICB9O1xuICAgIC8vIEhlbHBlcnMgLSBFbmQuXG5cbiAgICAvLyBjbGVhciBIVE1MIGNvbnRlbnRzXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpLmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnN0IHN2ZyA9IGQzXG4gICAgICAuc2VsZWN0KGAjJHtjb250YWluZXJJZH1gKVxuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCBgMCAwICR7d2lkdGggKyBtYXJnaW4ubGVmdCArIG1hcmdpbi5yaWdodH0gJHtoZWlnaHQgKyBtYXJnaW4udG9wICsgbWFyZ2luLmJvdHRvbX1gKTtcbiAgICB0aGlzLnN2ZyA9IHN2ZztcblxuICAgIGNvbnN0IHNjYWxlSGVpZ2h0ID0gZDNcbiAgICAgIC5zY2FsZVN5bWxvZygpIC8vIG1vc3Qgc2ltaWxhciBzY2FsZSB0byB0aGUgb3JpZ2luYWxcbiAgICAgIC5kb21haW4oWzAsIGQzLm1heChpdGVtcywgKGQpID0+IGQudmFsdWUpXSlcbiAgICAgIC5yYW5nZShbaGVpZ2h0LCAwXSk7XG5cbiAgICAvLyBHUkFESUVOVFxuICAgIGNvbnN0IGRlZnMgPSBzdmcuYXBwZW5kKCdkZWZzJyk7IC8vIGRlZmluaXRpb25zXG4gICAgY29uc3QgZ3JhZGllbnQgPSBkZWZzXG4gICAgICAuYXBwZW5kKCdsaW5lYXJHcmFkaWVudCcpXG4gICAgICAuYXR0cignaWQnLCAnZ3JhZGllbnQnKVxuICAgICAgLmF0dHIoJ2dyYWRpZW50VW5pdHMnLCAndXNlclNwYWNlT25Vc2UnKVxuICAgICAgLmF0dHIoJ3gxJywgMClcbiAgICAgIC5hdHRyKCd5MScsIGhlaWdodClcbiAgICAgIC5hdHRyKCd4MicsIDApXG4gICAgICAuYXR0cigneTInLCBtYXJnaW4udG9wKTtcbiAgICBncmFkaWVudFxuICAgICAgLmFwcGVuZCgnc3RvcCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnc3RhcnQnKVxuICAgICAgLmF0dHIoJ29mZnNldCcsICcwJScpXG4gICAgICAuYXR0cignc3RvcC1jb2xvcicsIGNvbG91cnMuYm90dG9tKSAvLyBib3R0b20gZ3JhZGllbnRcbiAgICAgIC5hdHRyKCdzdG9wLW9wYWNpdHknLCAxKTtcbiAgICBncmFkaWVudFxuICAgICAgLmFwcGVuZCgnc3RvcCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnZW5kJylcbiAgICAgIC5hdHRyKCdvZmZzZXQnLCAnMTAwJScpXG4gICAgICAuYXR0cignc3RvcC1jb2xvcicsIGNvbG91cnMudG9wKSAvLyB0b3AgZ3JhZGllbnRcbiAgICAgIC5hdHRyKCdzdG9wLW9wYWNpdHknLCAxKTtcblxuICAgIC8vIERSQVcgSU5TSURFIE1BUkdJTlNcbiAgICBjb25zdCBnID0gc3ZnXG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdjaGFydCcpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke21hcmdpbi5sZWZ0fSwke21hcmdpbi50b3B9KWApO1xuXG4gICAgY29uc3QgYmFyc0xheWVyID0gZy5hcHBlbmQoJ2cnKS5hdHRyKCdjbGFzcycsICdiYXJzJyk7XG4gICAgY29uc3QgY29udHJvbHNMYXllciA9IGcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnY29udHJvbHMnKTtcblxuICAgIC8vIEJBUiBDSEFSVFxuICAgIGJhcnNMYXllciAvLyBiYXJzXG4gICAgICAuc2VsZWN0QWxsKCdyZWN0LmJhcnMnKVxuICAgICAgLmRhdGEoaXRlbXMpXG4gICAgICAuam9pbigncmVjdCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnYmFycycpXG4gICAgICAuYXR0cignd2lkdGgnLCBMQUJFTHRvWC5iYW5kd2lkdGgpXG4gICAgICAuYXR0cignaGVpZ2h0JywgKGQpID0+IGhlaWdodCAtIHNjYWxlSGVpZ2h0KGQudmFsdWUpKVxuICAgICAgLmF0dHIoJ3knLCAoZCkgPT4gc2NhbGVIZWlnaHQoZC52YWx1ZSkpXG4gICAgICAuYXR0cigneCcsIChkKSA9PiBMQUJFTHRvWChkLmxhYmVsKSlcbiAgICAgIC5hdHRyKCdkYXRhLXN0YXJ0JywgKGQpID0+IGQucGF5bG9hZCkgLy8gbWFrZSB0aGUgZGF0YSBlYXNpbHkgYWNjZXNzaWJsZVxuICAgICAgLmF0dHIoJ2RhdGEtZW5kJywgKGQpID0+IChkLnJhbmdlID8gZC5yYW5nZS5wYXlsb2FkIDogZC5wYXlsb2FkKSlcbiAgICAgIC5hdHRyKCdmaWxsJywgJ3VybCgjZ3JhZGllbnQpJyk7XG5cbiAgICBiYXJzTGF5ZXIgLy8gY2F0Y2ggYmFyIGV2ZW50c1xuICAgICAgLm9uKCdtb3VzZW1vdmUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgeWVhciA9IFh0b0xBQkVMKHRoaXMuZ2V0RXZlbnRDb29yZHMoZXZlbnQpLngpO1xuICAgICAgICBkMy5zZWxlY3RBbGwoJ3JlY3QuYmFycycpLmF0dHIoJ2ZpbGwnLCAoZCkgPT4ge1xuICAgICAgICAgIGlmICh5ZWFyID09PSBkLmxhYmVsKSByZXR1cm4gJyNCMENDRjgnO1xuICAgICAgICAgIHJldHVybiBjb2xvdXJCYXJzKGQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgICBkMy5zZWxlY3RBbGwoJ3JlY3QuYmFycycpLmF0dHIoJ2ZpbGwnLCAoZCkgPT4gY29sb3VyQmFycyhkKSk7XG4gICAgICB9KVxuICAgICAgLm9uKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBsYWJlbCA9IFh0b0xBQkVMKHRoaXMuZ2V0RXZlbnRDb29yZHMoZXZlbnQpLngpO1xuICAgICAgICBjb25zdCB4QXhpc1ZhbHVlID0gTEFCRUx0b1gobGFiZWwpICsgTEFCRUx0b1guYmFuZHdpZHRoKCkgLyAyO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgICAgICB4OiB4QXhpc1ZhbHVlLFxuICAgICAgICAgIHk6IGhlaWdodFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNsaWRlcnMgPSBbXG4gICAgICAgICAgLy8gYXZvaWQgam9pbmluZyB0aGUgdHdvIG9iamVjdHMhXG4gICAgICAgICAgeyAuLi5uZXdWYWx1ZSB9LFxuICAgICAgICAgIHsgLi4ubmV3VmFsdWUgfVxuICAgICAgICBdO1xuICAgICAgICByYW5nZVBpY2tlclxuICAgICAgICAgIC5kYXRhKHRoaXMuc2xpZGVycylcbiAgICAgICAgICAuc2VsZWN0KCdjaXJjbGUnKVxuICAgICAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgICAgICAuZWFzZShkMy5lYXNlUXVhZE91dClcbiAgICAgICAgICAuZHVyYXRpb24oNTUwKVxuICAgICAgICAgIC5hdHRyKCdjeCcsIChkKSA9PiBkLngpO1xuICAgICAgICBjb250cm9sc0xheWVyXG4gICAgICAgICAgLnNlbGVjdCgncGF0aC5ibHVlbGluZScpXG4gICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgIC5lYXNlKGQzLmVhc2VRdWFkT3V0KVxuICAgICAgICAgIC5kdXJhdGlvbig1NTApXG4gICAgICAgICAgLmF0dHIoJ2QnLCBkMy5saW5lKCkodGhpcy5zbGlkZXJzLm1hcCgoZCkgPT4gW2QueCwgZC55XSkpKTtcbiAgICAgICAgY29udHJvbHNMYXllclxuICAgICAgICAgIC5zZWxlY3RBbGwoJ3RleHQnKVxuICAgICAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgICAgICAuZWFzZShkMy5lYXNlUXVhZE91dClcbiAgICAgICAgICAuZHVyYXRpb24oNTUwKVxuICAgICAgICAgIC5hdHRyKCd4JywgKCkgPT4geEF4aXNWYWx1ZSlcbiAgICAgICAgICAudGV4dCgoZCwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFyYW5nZU1vZGUpIHJldHVybiBsYWJlbDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtcy5maW5kKChpdCkgPT4gaXQubGFiZWwgPT09IGxhYmVsKTtcbiAgICAgICAgICAgIGlmIChpID4gMCkgcmV0dXJuIGl0ZW0ucmFuZ2UubGFiZWw7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5sYWJlbDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgZy5zZWxlY3RBbGwoJ3JlY3QuYmFycycpLmF0dHIoJ2ZpbGwnLCAoZCkgPT4gY29sb3VyQmFycyhkKSk7XG4gICAgICAgIHRoaXMudGV4dENvbGxpc2lvbih0aGlzLnNsaWRlcnMpO1xuICAgICAgICB0aGlzLmVtaXQoJ3Jhbmdlc2VsZWN0ZWQnLCB0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSk7XG4gICAgICB9KTtcblxuICAgIGNvbnRyb2xzTGF5ZXIgLy8gZ3JheSBsaW5lXG4gICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdncmF5bGluZScpXG4gICAgICAuYXR0cihcbiAgICAgICAgJ2QnLFxuICAgICAgICBkMy5saW5lKCkoW1xuICAgICAgICAgIFswLCBoZWlnaHRdLFxuICAgICAgICAgIFt3aWR0aCwgaGVpZ2h0XVxuICAgICAgICBdKVxuICAgICAgKVxuICAgICAgLmF0dHIoJ3N0cm9rZS13aWR0aCcsIDIpXG4gICAgICAuYXR0cignb3BhY2l0eScsIDEpXG4gICAgICAuYXR0cignc3Ryb2tlJywgJyNDMUM1QzcnKTtcblxuICAgIGNvbnRyb2xzTGF5ZXIgLy8gYmx1ZSBsaW5lXG4gICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdibHVlbGluZScpXG4gICAgICAuYXR0cignZCcsIGQzLmxpbmUoKSh0aGlzLnNsaWRlcnMubWFwKChkKSA9PiBbZC54LCBkLnldKSkpXG4gICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgMilcbiAgICAgIC5hdHRyKCdzdHJva2UnLCBjb2xvdXJzLmFjY2VudCk7XG5cbiAgICBjb25zdCByYW5nZVBpY2tlciA9IGNvbnRyb2xzTGF5ZXJcbiAgICAgIC5zZWxlY3RBbGwoJ2cucmFuZ2VwaWNrZXInKVxuICAgICAgLmRhdGEodGhpcy5zbGlkZXJzLnNvcnQoKGEsIGIpID0+IGQzLmFzY2VuZGluZyhhLngsIGIueCkpKVxuICAgICAgLmpvaW4oJ2cnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ3JhbmdlcGlja2VyJyk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICBjb25zdCBzZWxmID0gdGhpczsgLy8gRklYTUU6IEFsbG93IHVzZSBvZiBjbGFzcyBcInRoaXNcIiBpbnNpZGUgZHJhZ2dpbmcgdXBkYXRlO1xuICAgIC8qKlxuICAgKiBBbmltYXRlIHRoZSBlbGVtZW50cyB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZyBvbmUgb2YgdGhlIHJhbmdlIHNlbGVjdG9yc1xuICAgKi9cbiAgICBmdW5jdGlvbiBkcmFnZ2luZ1VwZGF0ZShldmVudCwgZGF0YSkge1xuICAgICAgY29uc3QgbGFiZWwgPSBYdG9MQUJFTChldmVudC54KTtcbiAgICAgIGNvbnN0IHhBeGlzVmFsdWUgPSBMQUJFTHRvWChsYWJlbCkgKyBMQUJFTHRvWC5iYW5kd2lkdGgoKSAvIDI7XG4gICAgICBjb25zdCB5YiA9IFtdO1xuICAgICAgZy5zZWxlY3RBbGwoJ2NpcmNsZScpLmVhY2goZnVuY3Rpb24gc2V0QmFsbFBvc2l0aW9uKCkge1xuICAgICAgICB5Yi5wdXNoKHsgeDogK2QzLnNlbGVjdCh0aGlzKS5hdHRyKCdjeCcpLCB5OiBoZWlnaHQgfSk7XG4gICAgICB9KTtcbiAgICAgIHNlbGYuc2xpZGVycyA9IHliLnNvcnQoKGEsIGIpID0+IGQzLmFzY2VuZGluZyhhLngsIGIueCkpO1xuICAgICAgLy8gbW92ZSB0aGUgY2lyY2xlXG4gICAgICBkMy5zZWxlY3QodGhpcylcbiAgICAgICAgLnNlbGVjdCgnY2lyY2xlJylcbiAgICAgICAgLmF0dHIoJ2N4JywgZGF0YS54ID0geEF4aXNWYWx1ZSk7XG4gICAgICAvLyBtb3ZlIHRoZSBibHVlIGxpbmVcbiAgICAgIGNvbnRyb2xzTGF5ZXJcbiAgICAgICAgLnNlbGVjdCgncGF0aC5ibHVlbGluZScpXG4gICAgICAgIC5hdHRyKCdkJywgZDMubGluZSgpKHNlbGYuc2xpZGVycy5tYXAoKGQpID0+IFtkLngsIGQueV0pKSk7XG4gICAgICAvLyBjaGFuZ2UgdGhlIHRleHQgcG9zaXRpb25cbiAgICAgIGQzLnNlbGVjdCh0aGlzKVxuICAgICAgICAuc2VsZWN0KCd0ZXh0JylcbiAgICAgICAgLmF0dHIoJ3gnLCAoKSA9PiB4QXhpc1ZhbHVlKTtcbiAgICAgIC8vIGNoYW5nZSB0aGUgdGV4dCB2YWx1ZXNcbiAgICAgIGNvbnRyb2xzTGF5ZXJcbiAgICAgICAgLnNlbGVjdEFsbCgndGV4dCcpXG4gICAgICAgIC50ZXh0KChkKSA9PiB7XG4gICAgICAgICAgY29uc3QgbCA9IFh0b0xBQkVMKGQueCk7XG4gICAgICAgICAgaWYgKCFyYW5nZU1vZGUpIHJldHVybiBsO1xuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gc2VsZi5zbGlkZXJzLmZpbmRJbmRleCgoc2xpZGVyKSA9PiBzbGlkZXIueCA9PT0gZC54KTtcbiAgICAgICAgICBjb25zdCByYW5nZSA9IHNlbGYuZ2V0U2VsZWN0ZWRSYW5nZSgpO1xuICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMSkgcmV0dXJuIHJhbmdlWzFdO1xuICAgICAgICAgIHJldHVybiByYW5nZVswXTtcbiAgICAgICAgfSk7XG4gICAgICBzZWxmLnRleHRDb2xsaXNpb24oc2VsZi5zbGlkZXJzKTtcbiAgICAgIC8vIGNvbG91ciB0aGUgYmFyc1xuICAgICAgZy5zZWxlY3RBbGwoJ3JlY3QuYmFycycpLmF0dHIoJ2ZpbGwnLCAoZCkgPT4gY29sb3VyQmFycyhkKSk7XG4gICAgfVxuXG4gICAgcmFuZ2VQaWNrZXIgLy8gZHJhZyBoYW5kbGVyXG4gICAgICAuY2FsbChkMy5kcmFnKClcbiAgICAgICAgLm9uKCdkcmFnJywgZHJhZ2dpbmdVcGRhdGUpXG4gICAgICAgIC5vbignZW5kJywgKGV2ZW50LCBkYXRhKSA9PiB7XG4gICAgICAgICAgLy8gdXBkYXRlIG9uZSBsYXN0IHRpbWUgdG8gcHJldmVudCBkZXN5bmNpbmdcbiAgICAgICAgICBkcmFnZ2luZ1VwZGF0ZShldmVudCwgZGF0YSk7XG4gICAgICAgICAgLy8gZW1pdCB0aGUgc2VsZWN0ZWQgcmFuZ2VcbiAgICAgICAgICB0aGlzLmVtaXQoJ3Jhbmdlc2VsZWN0ZWQnLCB0aGlzLmdldFNlbGVjdGVkUmFuZ2UoKSk7XG4gICAgICAgIH0pKTtcblxuICAgIHJhbmdlUGlja2VyXG4gICAgICAuYXBwZW5kKCdjaXJjbGUnKVxuICAgICAgLmF0dHIoJ2N4JywgKGQpID0+IGQueClcbiAgICAgIC5hdHRyKCdjeScsIChkKSA9PiBkLnkpXG4gICAgICAuYXR0cigncicsIDkpXG4gICAgICAuYXR0cignZmlsbCcsICd3aGl0ZScpXG4gICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgMilcbiAgICAgIC5hdHRyKCdzdHJva2UnLCBjb2xvdXJzLmFjY2VudClcbiAgICAgIC5hdHRyKCdzdHlsZScsICdjdXJzb3I6IHBvaW50ZXInKTtcblxuICAgIHJhbmdlUGlja2VyXG4gICAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAgIC5hdHRyKCdmb250LWZhbWlseScsICdSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmJylcbiAgICAgIC5hdHRyKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAgIC5hdHRyKCd5JywgKGQpID0+IGQueSArIG1hcmdpbi5ib3R0b20gLyAyKVxuICAgICAgLmF0dHIoJ3gnLCAoZCkgPT4gZC54KVxuICAgICAgLmF0dHIoJ2ZpbGwnLCBjb2xvdXJzLmFjY2VudClcbiAgICAgIC50ZXh0KChkLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGwgPSBYdG9MQUJFTChkLngpO1xuICAgICAgICBpZiAocmFuZ2VNb2RlICYmIGkgPT09IDEpIHtcbiAgICAgICAgICByZXR1cm4gaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS5sYWJlbCA9PT0gbCkucmFuZ2UubGFiZWw7XG4gICAgICAgIH0gcmV0dXJuIGw7XG4gICAgICB9KTtcblxuICAgIGlmIChheGlzPy55QXhpcz8uc2hvdykge1xuICAgICAgY29uc3QgeUF4aXMgPSBkMy5heGlzTGVmdChzY2FsZUhlaWdodClcbiAgICAgICAgLnRpY2tzKGF4aXMueUF4aXMudGlja0Ftb3VudCA/PyAyKVxuICAgICAgICAudGlja1ZhbHVlcyhheGlzLnlBeGlzLnZhbHVlcyA/IGF4aXMueUF4aXMudmFsdWVzIDogbnVsbCk7XG4gICAgICBjb25zdCB5QXhpc0dyb3VwID0gc3ZnLmFwcGVuZCgnZycpXG4gICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7bWFyZ2luLmxlZnR9LCAke21hcmdpbi50b3B9KWApXG4gICAgICAgIC5jYWxsKHlBeGlzKTtcblxuICAgICAgeUF4aXNHcm91cC5zZWxlY3RBbGwoJ3BhdGgsIGxpbmUnKS5zdHlsZSgnc3Ryb2tlJywgY29sb3Vycy5hY2NlbnQpO1xuICAgICAgeUF4aXNHcm91cC5zZWxlY3RBbGwoJ3RleHQnKS5zdHlsZSgnZmlsbCcsIGNvbG91cnMuYWNjZW50KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqIEF2b2lkIGNvbGxpc2lvbiBvZiB0aGUgc2xpZGVyIGxhYmVscyAqL1xuICB0ZXh0Q29sbGlzaW9uID0gKHNsaWRlcnM6IFNsaWRlcnMpID0+IHtcbiAgICAvLyBwcmUtcmVxdWlzaXRlc1xuICAgIGNvbnN0IGNvbnRyb2xzTGF5ZXIgPSB0aGlzLmQzLnNlbGVjdCgnZy5jaGFydCcpLnNlbGVjdCgnZy5jb250cm9scycpO1xuICAgIGNvbnN0IHsgaXRlbXMsIG1hcmdpbiB9ID0gdGhpcy5kYXRhO1xuICAgIGNvbnN0IHJhbmdlTW9kZSA9IGl0ZW1zLmV2ZXJ5KChkKSA9PiBkLnJhbmdlKTtcbiAgICAvLyBydW4gY29sbGlzaW9uIGRldGVjdGlvblxuICAgIGNvbnN0IGlzQ29sbGlkaW5nID0gc2xpZGVyc1swXS54ID09PSBzbGlkZXJzWzFdLng7XG4gICAgaWYgKHJhbmdlTW9kZSAmJiBpc0NvbGxpZGluZykge1xuICAgICAgY29udHJvbHNMYXllclxuICAgICAgICAuc2VsZWN0QWxsKCd0ZXh0JylcbiAgICAgICAgLmF0dHIoJ3knLCAoZCwgaSkgPT4gKGkgPiAwID8gZC55ICsgbWFyZ2luLmJvdHRvbSAvIDIgKyAxMiA6IGQueSArIG1hcmdpbi5ib3R0b20gLyAyKSlcbiAgICAgICAgLnRleHQoKGQsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpO1xuICAgICAgICAgIHJldHVybiByYW5nZVtpXTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRyb2xzTGF5ZXJcbiAgICAgICAgLnNlbGVjdEFsbCgndGV4dCcpXG4gICAgICAgIC5hdHRyKCd5JywgKGQpID0+IGQueSArIG1hcmdpbi5ib3R0b20gLyAyKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqIEdldCB4LWF4aXMgcG9zaXRpb24gZnJvbSBsYWJlbCAqL1xuICBsYWJlbFRvWCgpIHtcbiAgICByZXR1cm4gdGhpcy5kM1xuICAgICAgLnNjYWxlQmFuZCgpXG4gICAgICAuZG9tYWluKHRoaXMuZGF0YS5pdGVtcy5tYXAoKGQpID0+IGQubGFiZWwpKVxuICAgICAgLnJhbmdlKFswLCB0aGlzLmRhdGEud2lkdGhdKVxuICAgICAgLnBhZGRpbmdJbm5lcigwLjE3KVxuICAgICAgLnBhZGRpbmdPdXRlcigxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXZlbnQgd2l0aCB2aWV3Qm94IGNvb3JkaW5hdGVzIGFuZFxuICAgKiBwYXJzZSB0aGVtIGluIGFic29sdXRlIGNvb3JkaW5hdGVzXG4gICAqL1xuICBnZXRFdmVudENvb3JkcyhldmVudCk6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSB7XG4gICAgY29uc3QgbSA9IGV2ZW50LnRhcmdldC5nZXRTY3JlZW5DVE0oKTtcbiAgICBjb25zdCBwb2ludCA9IHRoaXMuc3ZnLm5vZGUoKS5jcmVhdGVTVkdQb2ludCgpO1xuICAgIHBvaW50LnggPSBldmVudC5jbGllbnRYO1xuICAgIHBvaW50LnkgPSBldmVudC5jbGllbnRZO1xuICAgIHJldHVybiBwb2ludC5tYXRyaXhUcmFuc2Zvcm0obS5pbnZlcnNlKCkpO1xuICB9XG5cbiAgLyoqIFB1YmxpYyBhcGkgdGhhdCBhbGxvd3MgdG8gZGluYW1pY2FsbHkgY2hhbmdlIHRoZSBiYXJzICovXG4gIHNldEJhcnMgPSAobmV3QmFycykgPT4ge1xuICAgIHRoaXMuZGF0YS5pdGVtcyA9IG5ld0JhcnM7XG4gICAgdGhpcy5kcmF3KCk7XG4gICAgdGhpcy5kMy5zZWxlY3RBbGwoJ3JlY3QuYmFycycpLmF0dHIoJ2ZpbGwnLCAoZCkgPT4gdGhpcy5jb2xvdXJCYXJzKGQpKTtcbiAgfTtcblxuICAvKiogUHVibGljIGFwaSB0aGF0IGFsbG93cyB0byBkaW5hbWljYWxseSBjaGFuZ2UgdGhlIHNsaWRlciBwb3NpdGlvbiAqL1xuICBzZXRTbGlkZXJzID0gKFtzdGFydExhYmVsLCBlbmRMYWJlbF06IExhYmVsQ291cGxlLCBlbWl0ID0gdHJ1ZSkgPT4ge1xuICAgIC8vIHNldFNsaWRlcnMoWzE0NTAsIDE1NzVdKVxuICAgIHRoaXMuZGF0YS5zZXRTbGlkZXJzID0gW2Ake3N0YXJ0TGFiZWx9YCwgYCR7ZW5kTGFiZWx9YF07XG4gICAgdGhpcy5kcmF3KCk7XG4gICAgdGhpcy5kMy5zZWxlY3RBbGwoJ3JlY3QuYmFycycpLmF0dHIoJ2ZpbGwnLCAoZCkgPT4gdGhpcy5jb2xvdXJCYXJzKGQpKTtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuZ2V0U2VsZWN0ZWRSYW5nZSgpO1xuICAgIGlmIChlbWl0KSB0aGlzLmVtaXQoJ3Jhbmdlc2VsZWN0ZWQnLCByYW5nZSk7XG4gICAgdGhpcy50ZXh0Q29sbGlzaW9uKHRoaXMuc2xpZGVycyk7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9O1xuXG4gIC8qKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGxvYWRlZCAqL1xuICBlbWl0TG9hZGVkKHBheWxvYWQpIHtcbiAgICBpZiAoIXRoaXMuZW1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZW1pdCgnbG9hZGVkJywgcGF5bG9hZCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJkYXRhXCIgY2xhc3M9XCJuNy1oaXN0b2dyYW0tcmFuZ2VcIj5cbiAgICA8c3ZnICNoaXN0b2dyYW1SYW5nZSBbaWRdPVwiZGF0YS5jb250YWluZXJJZFwiPjwvc3ZnPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
export class IconComponent {
|
|
5
|
-
onClick(value) {
|
|
6
|
-
if (!this.emit)
|
|
7
|
-
return;
|
|
8
|
-
this.emit('click', value);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
-
IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: IconComponent, selector: "n7-icon", inputs: { data: "data", emit: "emit" }, ngImport: i0, template: "<ng-container *ngIf=\"data as icon\">\n <span class=\"n7-icon\" *ngIf=\"icon.id\"\n [ngClass]=\"icon.id\"\n [ngStyle]=\"icon.style\"\n (click)=\"onClick(icon.payload)\">\n </span>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: IconComponent, decorators: [{
|
|
14
|
-
type: Component,
|
|
15
|
-
args: [{ selector: 'n7-icon', template: "<ng-container *ngIf=\"data as icon\">\n <span class=\"n7-icon\" *ngIf=\"icon.id\"\n [ngClass]=\"icon.id\"\n [ngStyle]=\"icon.style\"\n (click)=\"onClick(icon.payload)\">\n </span>\n</ng-container>\n" }]
|
|
16
|
-
}], propDecorators: { data: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}], emit: [{
|
|
19
|
-
type: Input
|
|
20
|
-
}] } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2R2LWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvaWNvbi9pY29uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVFqRCxNQUFNLE9BQU8sYUFBYTtJQUt4QixPQUFPLENBQUMsS0FBSztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7MEdBUlUsYUFBYTs4RkFBYixhQUFhLHVGQ1IxQixvT0FPQTsyRkRDYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7OEJBS1YsSUFBSTtzQkFBWixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9zaGFyZWQtaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ243LWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5odG1sJ1xufSlcblxuZXhwb3J0IGNsYXNzIEljb25Db21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhOiBJY29uO1xuXG4gIEBJbnB1dCgpIGVtaXQ6ICh0eXBlOiBzdHJpbmcsIHBheWxvYWQ/OiB1bmtub3duKSA9PiB2b2lkO1xuXG4gIG9uQ2xpY2sodmFsdWUpIHtcbiAgICBpZiAoIXRoaXMuZW1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZW1pdCgnY2xpY2snLCB2YWx1ZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhIGFzIGljb25cIj5cbiAgICA8c3BhbiAgY2xhc3M9XCJuNy1pY29uXCIgKm5nSWY9XCJpY29uLmlkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaWNvbi5pZFwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImljb24uc3R5bGVcIlxuICAgICAgICAoY2xpY2spPVwib25DbGljayhpY29uLnBheWxvYWQpXCI+XG4gICAgPC9zcGFuPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
//---------------------------
|
|
2
|
-
// IMAGE-VIEWER.ts
|
|
3
|
-
//---------------------------
|
|
4
|
-
import { Component, Input } from '@angular/core';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
/**
|
|
8
|
-
* ImageViewerComponent <n7-image-viewer>
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export class ImageViewerComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
this._loaded = false;
|
|
14
|
-
}
|
|
15
|
-
ngAfterContentChecked() {
|
|
16
|
-
if (!this.data || this._loaded)
|
|
17
|
-
return;
|
|
18
|
-
this._loaded = true;
|
|
19
|
-
setTimeout(() => {
|
|
20
|
-
const prefixUrl = !this.data.prefixUrl ? '//openseadragon.github.io/openseadragon/images/' : this.data.prefixUrl;
|
|
21
|
-
import('openseadragon').then((module) => {
|
|
22
|
-
const { default: openseadragon } = module;
|
|
23
|
-
const viewer = openseadragon({
|
|
24
|
-
id: this.data.viewerId,
|
|
25
|
-
prefixUrl,
|
|
26
|
-
tileSources: this.data.images,
|
|
27
|
-
zoomInButton: 'n7-image-viewer-zoom-in',
|
|
28
|
-
zoomOutButton: 'n7-image-viewer-zoom-out',
|
|
29
|
-
homeButton: 'n7-image-viewer-home',
|
|
30
|
-
fullPageButton: 'n7-image-viewer-full-screen',
|
|
31
|
-
nextButton: 'n7-image-viewer-nav-next',
|
|
32
|
-
previousButton: 'n7-image-viewer-nav-prev',
|
|
33
|
-
...this.data.libOptions
|
|
34
|
-
});
|
|
35
|
-
this.data._setViewer(viewer);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
onClick(payload) {
|
|
40
|
-
if (!this.emit)
|
|
41
|
-
return;
|
|
42
|
-
this.emit('thumbclick', payload);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
ImageViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImageViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
-
ImageViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ImageViewerComponent, selector: "n7-image-viewer", inputs: { data: "data", emit: "emit" }, ngImport: i0, template: "<div *ngIf=\"data\" class=\"n7-image-viewer {{data.classes || ''}}\">\n <!-- OSD viewer -->\n <div id=\"{{data.viewerId}}\" class=\"n7-image-viewer__viewer\">\n </div>\n\n <!-- Zoom controls -->\n <div class=\"n7-image-viewer__controls\">\n <ul class=\"n7-image-viewer__controls-list\">\n <li class=\"n7-image-viewer__controls-item\" id=\"n7-image-viewer-zoom-in\">\n <span class=\"n7-icon-search-plus\"></span>\n </li>\n <li class=\"n7-image-viewer__controls-item\" id=\"n7-image-viewer-zoom-out\">\n <span class=\"n7-icon-search-minus\"></span>\n </li>\n <!--\n <li class=\"n7-image-viewer__controls-item\" id=\"n7-image-viewer-full-screen\">\n <span class=\"n7-icon-expand-arrows\"></span>\n </li>\n -->\n </ul>\n </div>\n\n <!-- Navigation -->\n <div *ngIf=\"!data.hideNavigation\" class=\"n7-image-viewer__prev\" id=\"n7-image-viewer-nav-prev\">\n <span class=\"n7-icon-angle-left\"></span>\n </div>\n\n <div *ngIf=\"!data.hideNavigation\" class=\"n7-image-viewer__next\" id=\"n7-image-viewer-nav-next\">\n <span class=\"n7-icon-angle-right\"></span>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ImageViewerComponent, decorators: [{
|
|
48
|
-
type: Component,
|
|
49
|
-
args: [{ selector: 'n7-image-viewer', template: "<div *ngIf=\"data\" class=\"n7-image-viewer {{data.classes || ''}}\">\n <!-- OSD viewer -->\n <div id=\"{{data.viewerId}}\" class=\"n7-image-viewer__viewer\">\n </div>\n\n <!-- Zoom controls -->\n <div class=\"n7-image-viewer__controls\">\n <ul class=\"n7-image-viewer__controls-list\">\n <li class=\"n7-image-viewer__controls-item\" id=\"n7-image-viewer-zoom-in\">\n <span class=\"n7-icon-search-plus\"></span>\n </li>\n <li class=\"n7-image-viewer__controls-item\" id=\"n7-image-viewer-zoom-out\">\n <span class=\"n7-icon-search-minus\"></span>\n </li>\n <!--\n <li class=\"n7-image-viewer__controls-item\" id=\"n7-image-viewer-full-screen\">\n <span class=\"n7-icon-expand-arrows\"></span>\n </li>\n -->\n </ul>\n </div>\n\n <!-- Navigation -->\n <div *ngIf=\"!data.hideNavigation\" class=\"n7-image-viewer__prev\" id=\"n7-image-viewer-nav-prev\">\n <span class=\"n7-icon-angle-left\"></span>\n </div>\n\n <div *ngIf=\"!data.hideNavigation\" class=\"n7-image-viewer__next\" id=\"n7-image-viewer-nav-next\">\n <span class=\"n7-icon-angle-right\"></span>\n </div>\n</div>" }]
|
|
50
|
-
}], propDecorators: { data: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}], emit: [{
|
|
53
|
-
type: Input
|
|
54
|
-
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utdmlld2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHYtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlLXZpZXdlci9pbWFnZS12aWV3ZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2Utdmlld2VyL2ltYWdlLXZpZXdlci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUE2QjtBQUM3QixrQkFBa0I7QUFDbEIsNkJBQTZCO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFzRGpEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxvQkFBb0I7SUFKakM7UUFTVSxZQUFPLEdBQUcsS0FBSyxDQUFDO0tBZ0N6QjtJQTlCQyxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakgsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztnQkFDMUMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDO29CQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO29CQUN0QixTQUFTO29CQUNULFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07b0JBQzdCLFlBQVksRUFBRSx5QkFBeUI7b0JBQ3ZDLGFBQWEsRUFBRSwwQkFBMEI7b0JBQ3pDLFVBQVUsRUFBRSxzQkFBc0I7b0JBQ2xDLGNBQWMsRUFBRSw2QkFBNkI7b0JBQzdDLFVBQVUsRUFBRSwwQkFBMEI7b0JBQ3RDLGNBQWMsRUFBRSwwQkFBMEI7b0JBQzFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO2lCQUN4QixDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBTztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7aUhBcENVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLCtGQ2xFakMsb3ZDQThCTTsyRkRvQ08sb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGlCQUFpQjs4QkFJbEIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBJTUFHRS1WSUVXRVIudHNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIEltYWdlVmlld2VyQ29tcG9uZW50J3MgaW1hZ2VzIFwiZGF0YVwiXG4gKlxuICogSGVyZSB0aGUgbWFpbiBvcHRpb25zIGF2YWlsYWJsZSwgZm9yIGEgY29tcGxldGUgZ3VpZGUgb2YgaW1hZ2Ugc2V0dGluZ3NcbiAqIHZpZXcgdGhlIG9mZmljaWFsIG9wZW5zZWFkcmFnb24gZG9jdW1lbnRhdGlvbiBodHRwczovL29wZW5zZWFkcmFnb24uZ2l0aHViLmlvL1xuICogQWxsIGF2YWlsYWJsZSBvcHRpb25zIGhlcmU6IGh0dHBzOi8vb3BlbnNlYWRyYWdvbi5naXRodWIuaW8vZG9jcy9PcGVuU2VhZHJhZ29uLmh0bWxcbiAqXG4gKiBAcHJvcGVydHkgIHR5cGUgKHJlcXVpcmVkKVxuICogQWRtaXR0ZWQgdmFsdWVzOlxuICogJ2ltYWdlJyB8ICd6b29taWZ5dGlsZXNlcnZpY2UnIHwgJ29wZW5zdHJlZXRtYXBzJyB8ICd0aWxlZG1hcHNlcnZpY2UnIHwgJ2xlZ2FjeS1pbWFnZS1weXJhbWlkJ1xuICogQHByb3BlcnR5ICBoZWlnaHQgKG9wdGlvbmFsKSBpbWFnZSBoZWlnaHRcbiAqIEBwcm9wZXJ0eSAgd2lkdGggKG9wdGlvbmFsKSBpbWFnZSB3aWR0aFxuICogQHByb3BlcnR5ICB1cmwgKHJlcXVpcmVkKSBpbWFnZSB1cmxcbiAqIEBwcm9wZXJ0eSAgYnVpbGRQeXJhbWlkIChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSAgY3Jvc3NPcmlnaW5Qb2xpY3kgKG9wdGlvbmFsKSBBZG1pdHRlZCB2YWx1ZXMgJ0Fub255bW91cycgfCAndXNlLWNyZWRlbnRpYWxzJyB8IGZhbHNlO1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlRGF0YSB7XG4gIHR5cGU6ICdpbWFnZScgfCAnem9vbWlmeXRpbGVzZXJ2aWNlJyB8ICdvcGVuc3RyZWV0bWFwcycgfCAndGlsZWRtYXBzZXJ2aWNlJyB8ICdsZWdhY3ktaW1hZ2UtcHlyYW1pZCc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgd2lkdGg/OiBudW1iZXI7XG4gIHVybDogc3RyaW5nO1xuICBidWlsZFB5cmFtaWQ6IGJvb2xlYW47XG4gIGNyb3NzT3JpZ2luUG9saWN5PzogJ0Fub255bW91cycgfCAndXNlLWNyZWRlbnRpYWxzJyB8IGZhbHNlO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgSW1hZ2VWaWV3ZXJDb21wb25lbnQncyBcImRhdGFcIlxuICpcbiAqIEBwcm9wZXJ0eSBwcmVmaXhVcmwgKG9wdGlvbmFsKSBQcmVwZW5kcyB0aGUgcHJlZml4VXJsIHRvIG5hdkltYWdlcyBwYXRocy5cbiAqIERlZmF1bHQgaXMgLy9vcGVuc2VhZHJhZ29uLmdpdGh1Yi5pby9vcGVuc2VhZHJhZ29uL2ltYWdlcy9cbiAqIEBwcm9wZXJ0eSBjbGFzc2VzIChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSB2aWV3ZXJXaWR0aCAob3B0aW9uYWwpXG4gKiBAcHJvcGVydHkgdmlld2VySGVpZ2h0IChvcHRpb25hbClcbiAqIEBwcm9wZXJ0eSBpbWFnZXMgKHJlcXVpcmVkKVxuICogQHByb3BlcnR5IHZpZXdlcklkIChyZXF1aXJlZCkgVGhlIGlkIHRvIGFzc2lnbiB0byB0aGUgaW1hZ2V2aWV3ZXIgY29udGFpbmVyXG4gKiBAcHJvcGVydHkgbGliT3B0aW9ucyAocmVxdWlyZWQpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VWaWV3ZXJEYXRhIHtcbiAgLyogdmlld2VyIGljb24ncyBkaXJlY3RvcnkgcGF0aCAqL1xuICBwcmVmaXhVcmw/OiBzdHJpbmc7XG4gIGNsYXNzZXM/OiBzdHJpbmc7XG4gIHZpZXdlcldpZHRoPzogbnVtYmVyO1xuICB2aWV3ZXJIZWlnaHQ/OiBudW1iZXI7XG4gIGltYWdlczogSW1hZ2VEYXRhW10gfCBzdHJpbmc7XG4gIHZpZXdlcklkOiBzdHJpbmc7XG4gIGhpZGVOYXZpZ2F0aW9uPzogYm9vbGVhbjtcbiAgLyogZm9yIGEgbGlzdCBvZiBvcHRpb25zIHZpZXcgdGhlIG9mZmljaWFsIG9wZW5zZWFkcmFnb24gZG9jdW1lbnRhdGlvbiBodHRwOi8vb3BlbnNlYWRyYWdvbi5naXRodWIuaW8vZG9jcy9PcGVuU2VhZHJhZ29uLmh0bWwjLk9wdGlvbnMgKi9cbiAgbGliT3B0aW9uczogYW55O1xuICAvKiBBIG1ldGhvZCByZXR1cm5pbmcgdGhlIGxpYnJhcnkgaW5zdGFuY2UgKi9cbiAgX3NldFZpZXdlcjogYW55O1xufVxuXG4vKipcbiAqIEltYWdlVmlld2VyQ29tcG9uZW50IDxuNy1pbWFnZS12aWV3ZXI+XG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduNy1pbWFnZS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2Utdmlld2VyLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlVmlld2VyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgZGF0YTogSW1hZ2VWaWV3ZXJEYXRhO1xuXG4gIEBJbnB1dCgpIGVtaXQ6IGFueTtcblxuICBwcml2YXRlIF9sb2FkZWQgPSBmYWxzZTtcblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLmRhdGEgfHwgdGhpcy5fbG9hZGVkKSByZXR1cm47XG4gICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgcHJlZml4VXJsID0gIXRoaXMuZGF0YS5wcmVmaXhVcmwgPyAnLy9vcGVuc2VhZHJhZ29uLmdpdGh1Yi5pby9vcGVuc2VhZHJhZ29uL2ltYWdlcy8nIDogdGhpcy5kYXRhLnByZWZpeFVybDtcbiAgICAgIGltcG9ydCgnb3BlbnNlYWRyYWdvbicpLnRoZW4oKG1vZHVsZSkgPT4ge1xuICAgICAgICBjb25zdCB7IGRlZmF1bHQ6IG9wZW5zZWFkcmFnb24gfSA9IG1vZHVsZTtcbiAgICAgICAgY29uc3Qgdmlld2VyID0gb3BlbnNlYWRyYWdvbih7XG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YS52aWV3ZXJJZCxcbiAgICAgICAgICBwcmVmaXhVcmwsXG4gICAgICAgICAgdGlsZVNvdXJjZXM6IHRoaXMuZGF0YS5pbWFnZXMsXG4gICAgICAgICAgem9vbUluQnV0dG9uOiAnbjctaW1hZ2Utdmlld2VyLXpvb20taW4nLFxuICAgICAgICAgIHpvb21PdXRCdXR0b246ICduNy1pbWFnZS12aWV3ZXItem9vbS1vdXQnLFxuICAgICAgICAgIGhvbWVCdXR0b246ICduNy1pbWFnZS12aWV3ZXItaG9tZScsXG4gICAgICAgICAgZnVsbFBhZ2VCdXR0b246ICduNy1pbWFnZS12aWV3ZXItZnVsbC1zY3JlZW4nLFxuICAgICAgICAgIG5leHRCdXR0b246ICduNy1pbWFnZS12aWV3ZXItbmF2LW5leHQnLFxuICAgICAgICAgIHByZXZpb3VzQnV0dG9uOiAnbjctaW1hZ2Utdmlld2VyLW5hdi1wcmV2JyxcbiAgICAgICAgICAuLi50aGlzLmRhdGEubGliT3B0aW9uc1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGEuX3NldFZpZXdlcih2aWV3ZXIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkNsaWNrKHBheWxvYWQpIHtcbiAgICBpZiAoIXRoaXMuZW1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZW1pdCgndGh1bWJjbGljaycsIHBheWxvYWQpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGF0YVwiIGNsYXNzPVwibjctaW1hZ2Utdmlld2VyIHt7ZGF0YS5jbGFzc2VzIHx8ICcnfX1cIj5cbiAgICA8IS0tIE9TRCB2aWV3ZXIgLS0+XG4gICAgPGRpdiBpZD1cInt7ZGF0YS52aWV3ZXJJZH19XCIgY2xhc3M9XCJuNy1pbWFnZS12aWV3ZXJfX3ZpZXdlclwiPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBab29tIGNvbnRyb2xzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJuNy1pbWFnZS12aWV3ZXJfX2NvbnRyb2xzXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cIm43LWltYWdlLXZpZXdlcl9fY29udHJvbHMtbGlzdFwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibjctaW1hZ2Utdmlld2VyX19jb250cm9scy1pdGVtXCIgaWQ9XCJuNy1pbWFnZS12aWV3ZXItem9vbS1pblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibjctaWNvbi1zZWFyY2gtcGx1c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuNy1pbWFnZS12aWV3ZXJfX2NvbnRyb2xzLWl0ZW1cIiBpZD1cIm43LWltYWdlLXZpZXdlci16b29tLW91dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibjctaWNvbi1zZWFyY2gtbWludXNcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPCEtLVxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibjctaW1hZ2Utdmlld2VyX19jb250cm9scy1pdGVtXCIgaWQ9XCJuNy1pbWFnZS12aWV3ZXItZnVsbC1zY3JlZW5cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm43LWljb24tZXhwYW5kLWFycm93c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAtLT5cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTmF2aWdhdGlvbiAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIWRhdGEuaGlkZU5hdmlnYXRpb25cIiBjbGFzcz1cIm43LWltYWdlLXZpZXdlcl9fcHJldlwiIGlkPVwibjctaW1hZ2Utdmlld2VyLW5hdi1wcmV2XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibjctaWNvbi1hbmdsZS1sZWZ0XCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cIiFkYXRhLmhpZGVOYXZpZ2F0aW9uXCIgY2xhc3M9XCJuNy1pbWFnZS12aWV3ZXJfX25leHRcIiBpZD1cIm43LWltYWdlLXZpZXdlci1uYXYtbmV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm43LWljb24tYW5nbGUtcmlnaHRcIj48L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export const IMAGE_VIEWER_MOCK = {
|
|
2
|
-
images: [
|
|
3
|
-
{ type: 'image', url: 'http://placekitten.com/1920/1080', buildPyramid: false },
|
|
4
|
-
// { type: 'image', url: 'http://placekitten.com/500/600', buildPyramid: false },
|
|
5
|
-
// { type: 'image', url: 'http://placekitten.com/700/400', buildPyramid: false }
|
|
6
|
-
],
|
|
7
|
-
viewerId: 'seadragon-viewer',
|
|
8
|
-
hideNavigation: false,
|
|
9
|
-
libOptions: {
|
|
10
|
-
/* SHOW GROUP */
|
|
11
|
-
showNavigator: false,
|
|
12
|
-
autoHideControls: false,
|
|
13
|
-
/* SHOW BUTTONS */
|
|
14
|
-
showRotationControl: false,
|
|
15
|
-
showSequenceControl: true,
|
|
16
|
-
showHomeControl: true,
|
|
17
|
-
showZoomControl: true,
|
|
18
|
-
// showNavigationControl: false,
|
|
19
|
-
/* SEQUENCE */
|
|
20
|
-
sequenceMode: true,
|
|
21
|
-
navigationControlAnchor: 'TOP_RIGHT',
|
|
22
|
-
},
|
|
23
|
-
_setViewer: (viewer) => viewer,
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utdmlld2VyLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kdi1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2Utdmlld2VyL2ltYWdlLXZpZXdlci5tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFvQjtJQUNoRCxNQUFNLEVBQUU7UUFDTixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLGtDQUFrQyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7UUFDL0UsaUZBQWlGO1FBQ2pGLGdGQUFnRjtLQUNqRjtJQUNELFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsY0FBYyxFQUFFLEtBQUs7SUFDckIsVUFBVSxFQUFFO1FBQ1YsZ0JBQWdCO1FBQ2hCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLGdCQUFnQixFQUFFLEtBQUs7UUFFdkIsa0JBQWtCO1FBQ2xCLG1CQUFtQixFQUFFLEtBQUs7UUFDMUIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixlQUFlLEVBQUUsSUFBSTtRQUNyQixlQUFlLEVBQUUsSUFBSTtRQUNyQixnQ0FBZ0M7UUFFaEMsY0FBYztRQUNkLFlBQVksRUFBRSxJQUFJO1FBQ2xCLHVCQUF1QixFQUFFLFdBQVc7S0FDckM7SUFFRCxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU07Q0FDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEltYWdlVmlld2VyRGF0YSB9IGZyb20gJy4vaW1hZ2Utdmlld2VyJztcblxuZXhwb3J0IGNvbnN0IElNQUdFX1ZJRVdFUl9NT0NLOiBJbWFnZVZpZXdlckRhdGEgPSB7XG4gIGltYWdlczogW1xuICAgIHsgdHlwZTogJ2ltYWdlJywgdXJsOiAnaHR0cDovL3BsYWNla2l0dGVuLmNvbS8xOTIwLzEwODAnLCBidWlsZFB5cmFtaWQ6IGZhbHNlIH0sXG4gICAgLy8geyB0eXBlOiAnaW1hZ2UnLCB1cmw6ICdodHRwOi8vcGxhY2VraXR0ZW4uY29tLzUwMC82MDAnLCBidWlsZFB5cmFtaWQ6IGZhbHNlIH0sXG4gICAgLy8geyB0eXBlOiAnaW1hZ2UnLCB1cmw6ICdodHRwOi8vcGxhY2VraXR0ZW4uY29tLzcwMC80MDAnLCBidWlsZFB5cmFtaWQ6IGZhbHNlIH1cbiAgXSxcbiAgdmlld2VySWQ6ICdzZWFkcmFnb24tdmlld2VyJyxcbiAgaGlkZU5hdmlnYXRpb246IGZhbHNlLFxuICBsaWJPcHRpb25zOiB7XG4gICAgLyogU0hPVyBHUk9VUCAqL1xuICAgIHNob3dOYXZpZ2F0b3I6IGZhbHNlLCAvLyBzaG93cyB0aGUgbWluaS1tYXBcbiAgICBhdXRvSGlkZUNvbnRyb2xzOiBmYWxzZSxcblxuICAgIC8qIFNIT1cgQlVUVE9OUyAqL1xuICAgIHNob3dSb3RhdGlvbkNvbnRyb2w6IGZhbHNlLFxuICAgIHNob3dTZXF1ZW5jZUNvbnRyb2w6IHRydWUsXG4gICAgc2hvd0hvbWVDb250cm9sOiB0cnVlLFxuICAgIHNob3dab29tQ29udHJvbDogdHJ1ZSxcbiAgICAvLyBzaG93TmF2aWdhdGlvbkNvbnRyb2w6IGZhbHNlLFxuXG4gICAgLyogU0VRVUVOQ0UgKi9cbiAgICBzZXF1ZW5jZU1vZGU6IHRydWUsIC8vIGFsbG93cyBoYXZpbmcgbXVsdGlwbGUgaW1hZ2VzIChhcyBpbiBhcnJheSBvZiBpbWFnZXMgKyB6b29tZWQgaW1hZ2UpXG4gICAgbmF2aWdhdGlvbkNvbnRyb2xBbmNob3I6ICdUT1BfUklHSFQnLFxuICB9LFxuXG4gIF9zZXRWaWV3ZXI6ICh2aWV3ZXIpID0+IHZpZXdlcixcbn07XG4iXX0=
|