@net7/components 4.2.1 → 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.
Files changed (286) hide show
  1. package/README.md +2 -1
  2. package/esm2022/lib/components/advanced-autocomplete/advanced-autocomplete.mjs +25 -0
  3. package/esm2022/lib/components/advanced-autocomplete/advanced-autocomplete.mock.mjs +147 -0
  4. package/esm2022/lib/components/alert/alert.mjs +24 -0
  5. package/{esm2020 → esm2022}/lib/components/alert/alert.mock.mjs +2 -2
  6. package/esm2022/lib/components/anchor-wrapper/anchor-wrapper.mjs +35 -0
  7. package/esm2022/lib/components/avatar/avatar.mjs +34 -0
  8. package/esm2022/lib/components/breadcrumbs/breadcrumbs.mjs +25 -0
  9. package/{esm2020 → esm2022}/lib/components/breadcrumbs/breadcrumbs.mock.mjs +8 -8
  10. package/esm2022/lib/components/bubble-chart/bubble-chart.mjs +336 -0
  11. package/{esm2020 → esm2022}/lib/components/bubble-chart/bubble-chart.mock.mjs +249 -249
  12. package/esm2022/lib/components/button/button.mjs +26 -0
  13. package/{esm2020 → esm2022}/lib/components/button/button.mock.mjs +3 -3
  14. package/esm2022/lib/components/carousel/carousel.mjs +97 -0
  15. package/esm2022/lib/components/carousel/carousel.mock.mjs +157 -0
  16. package/esm2022/lib/components/chart/chart.mjs +37 -0
  17. package/esm2022/lib/components/chart/chart.mock.mjs +127 -0
  18. package/esm2022/lib/components/content-placeholder/content-placeholder.mjs +17 -0
  19. package/{esm2020 → esm2022}/lib/components/content-placeholder/content-placeholder.mock.mjs +6 -3
  20. package/esm2022/lib/components/data-widget/data-widget.mjs +29 -0
  21. package/{esm2020 → esm2022}/lib/components/data-widget/data-widget.mock.mjs +4 -4
  22. package/esm2022/lib/components/datepicker/datepicker.mjs +44 -0
  23. package/esm2022/lib/components/facet/facet.mjs +24 -0
  24. package/esm2022/lib/components/facet/facet.mock.mjs +169 -0
  25. package/esm2022/lib/components/facet-header/facet-header.mjs +24 -0
  26. package/esm2022/lib/components/facet-year-range/facet-year-range.mjs +53 -0
  27. package/esm2022/lib/components/file-selector/file-selector.mjs +41 -0
  28. package/{esm2020 → esm2022}/lib/components/file-selector/file-selector.mock.mjs +2 -2
  29. package/esm2022/lib/components/footer/footer.mjs +26 -0
  30. package/esm2022/lib/components/footer/footer.mock.mjs +60 -0
  31. package/esm2022/lib/components/header/header.mjs +53 -0
  32. package/esm2022/lib/components/header/header.mock.mjs +119 -0
  33. package/esm2022/lib/components/hero/hero.mjs +41 -0
  34. package/{esm2020 → esm2022}/lib/components/hero/hero.mock.mjs +5 -5
  35. package/esm2022/lib/components/histogram-range/histogram-range.mjs +390 -0
  36. package/{esm2020 → esm2022}/lib/components/histogram-range/histogram-range.mock.mjs +4 -4
  37. package/esm2022/lib/components/icon/icon.mjs +21 -0
  38. package/{esm2020 → esm2022}/lib/components/icon/icon.mock.mjs +2 -2
  39. package/esm2022/lib/components/image-viewer/image-viewer.mjs +57 -0
  40. package/esm2022/lib/components/image-viewer/image-viewer.mock.mjs +29 -0
  41. package/esm2022/lib/components/image-viewer-tools/image-viewer-tools.mjs +28 -0
  42. package/esm2022/lib/components/image-viewer-tools/image-viewer-tools.mock.mjs +54 -0
  43. package/esm2022/lib/components/inner-title/inner-title.mjs +40 -0
  44. package/esm2022/lib/components/inner-title/inner-title.mock.mjs +53 -0
  45. package/esm2022/lib/components/input-checkbox/input-checkbox.mjs +24 -0
  46. package/esm2022/lib/components/input-checkbox/input-checkbox.mock.mjs +31 -0
  47. package/esm2022/lib/components/input-link/input-link.mjs +24 -0
  48. package/esm2022/lib/components/input-link/input-link.mock.mjs +66 -0
  49. package/{esm2020 → esm2022}/lib/components/input-select/input-select.mjs +5 -5
  50. package/esm2022/lib/components/input-text/input-text.mjs +34 -0
  51. package/esm2022/lib/components/input-textarea/input-textarea.mjs +21 -0
  52. package/esm2022/lib/components/item-preview/item-preview.mjs +25 -0
  53. package/esm2022/lib/components/item-preview/item-preview.mock.mjs +46 -0
  54. package/esm2022/lib/components/loader/loader.mjs +16 -0
  55. package/{esm2020 → esm2022}/lib/components/loader/loader.mock.mjs +2 -2
  56. package/esm2022/lib/components/map/map.mjs +66 -0
  57. package/{esm2020 → esm2022}/lib/components/map/map.mock.mjs +14 -10
  58. package/esm2022/lib/components/metadata-viewer/metadata-viewer.mjs +19 -0
  59. package/esm2022/lib/components/metadata-viewer/metadata-viewer.mock.mjs +75 -0
  60. package/esm2022/lib/components/mirador/mirador.mjs +36 -0
  61. package/esm2022/lib/components/mirador/mirador.mock.mjs +23 -0
  62. package/esm2022/lib/components/mirador/miradorTheme.mjs +220 -0
  63. package/esm2022/lib/components/nav/nav.mjs +27 -0
  64. package/esm2022/lib/components/nav/nav.mock.mjs +46 -0
  65. package/esm2022/lib/components/pagination/pagination.mjs +31 -0
  66. package/esm2022/lib/components/pagination/pagination.mock.mjs +27 -0
  67. package/esm2022/lib/components/progress-line/progress-line.mjs +19 -0
  68. package/esm2022/lib/components/sidebar-header/sidebar-header.mjs +24 -0
  69. package/esm2022/lib/components/signup/signup.mjs +44 -0
  70. package/{esm2020 → esm2022}/lib/components/signup/signup.mock.mjs +14 -14
  71. package/esm2022/lib/components/simple-autocomplete/simple-autocomplete.mjs +25 -0
  72. package/esm2022/lib/components/simple-autocomplete/simple-autocomplete.mock.mjs +22 -0
  73. package/esm2022/lib/components/table/table.mjs +35 -0
  74. package/esm2022/lib/components/table/table.mock.mjs +156 -0
  75. package/esm2022/lib/components/tag/tag.mjs +35 -0
  76. package/esm2022/lib/components/text-viewer/text-viewer.mjs +42 -0
  77. package/{esm2020 → esm2022}/lib/components/text-viewer/text-viewer.mock.mjs +4 -4
  78. package/esm2022/lib/components/timeline/timeline.mjs +51 -0
  79. package/esm2022/lib/components/timeline/timeline.mock.mjs +137 -0
  80. package/esm2022/lib/components/toast/toast.mjs +24 -0
  81. package/esm2022/lib/components/toast/toast.mock.mjs +65 -0
  82. package/esm2022/lib/components/tooltip-content/tooltip-content.mjs +25 -0
  83. package/{esm2020 → esm2022}/lib/components/tooltip-content/tooltip-content.mock.mjs +9 -8
  84. package/esm2022/lib/components/tree/tree.mjs +25 -0
  85. package/{esm2020 → esm2022}/lib/components/tree/tree.mock.mjs +44 -44
  86. package/esm2022/lib/components/wizard/wizard.mjs +24 -0
  87. package/{esm2020 → esm2022}/lib/components/wizard/wizard.mock.mjs +6 -6
  88. package/esm2022/lib/dv-components-lib.module.mjs +211 -0
  89. package/{esm2020 → esm2022}/lib/shared-interfaces.mjs +1 -1
  90. package/esm2022/public-api.mjs +105 -0
  91. package/fesm2022/net7-components.mjs +6091 -0
  92. package/fesm2022/net7-components.mjs.map +1 -0
  93. package/lib/components/advanced-autocomplete/advanced-autocomplete.d.ts +22 -22
  94. package/lib/components/alert/alert.d.ts +2 -2
  95. package/lib/components/anchor-wrapper/anchor-wrapper.d.ts +1 -1
  96. package/lib/components/avatar/avatar.d.ts +1 -1
  97. package/lib/components/breadcrumbs/breadcrumbs.d.ts +1 -1
  98. package/lib/components/bubble-chart/bubble-chart.d.ts +3 -3
  99. package/lib/components/button/button.d.ts +1 -1
  100. package/lib/components/carousel/carousel.d.ts +1 -1
  101. package/lib/components/chart/chart.d.ts +2 -2
  102. package/lib/components/content-placeholder/content-placeholder.d.ts +6 -6
  103. package/lib/components/data-widget/data-widget.d.ts +1 -1
  104. package/lib/components/datepicker/datepicker.d.ts +4 -4
  105. package/lib/components/facet/facet.d.ts +23 -23
  106. package/lib/components/facet-header/facet-header.d.ts +1 -1
  107. package/lib/components/facet-year-range/facet-year-range.d.ts +9 -9
  108. package/lib/components/file-selector/file-selector.d.ts +1 -1
  109. package/lib/components/footer/footer.d.ts +4 -4
  110. package/lib/components/header/header.d.ts +1 -1
  111. package/lib/components/hero/hero.d.ts +16 -16
  112. package/lib/components/histogram-range/histogram-range.d.ts +3 -3
  113. package/lib/components/icon/icon.d.ts +1 -1
  114. package/lib/components/image-viewer/image-viewer.d.ts +1 -1
  115. package/lib/components/image-viewer-tools/image-viewer-tools.d.ts +3 -3
  116. package/lib/components/inner-title/inner-title.d.ts +1 -1
  117. package/lib/components/input-checkbox/input-checkbox.d.ts +1 -1
  118. package/lib/components/input-link/input-link.d.ts +1 -1
  119. package/lib/components/input-select/input-select.d.ts +1 -1
  120. package/lib/components/input-text/input-text.d.ts +1 -1
  121. package/lib/components/input-textarea/input-textarea.d.ts +2 -2
  122. package/lib/components/item-preview/item-preview.d.ts +40 -40
  123. package/lib/components/loader/loader.d.ts +1 -1
  124. package/lib/components/map/map.d.ts +1 -1
  125. package/lib/components/metadata-viewer/metadata-viewer.d.ts +19 -19
  126. package/lib/components/mirador/mirador.d.ts +15 -0
  127. package/lib/components/mirador/mirador.mock.d.ts +6 -0
  128. package/lib/components/mirador/miradorTheme.d.ts +218 -0
  129. package/lib/components/nav/nav.d.ts +1 -1
  130. package/lib/components/pagination/pagination.d.ts +1 -1
  131. package/lib/components/progress-line/progress-line.d.ts +1 -1
  132. package/lib/components/sidebar-header/sidebar-header.d.ts +1 -1
  133. package/lib/components/signup/signup.d.ts +1 -1
  134. package/lib/components/simple-autocomplete/simple-autocomplete.d.ts +11 -11
  135. package/lib/components/table/table.d.ts +1 -1
  136. package/lib/components/tag/tag.d.ts +1 -1
  137. package/lib/components/text-viewer/text-viewer.d.ts +1 -1
  138. package/lib/components/timeline/timeline.d.ts +1 -1
  139. package/lib/components/toast/toast.d.ts +1 -1
  140. package/lib/components/tooltip-content/tooltip-content.d.ts +1 -1
  141. package/lib/components/tree/tree.d.ts +20 -20
  142. package/lib/components/wizard/wizard.d.ts +30 -30
  143. package/lib/dv-components-lib.module.d.ts +19 -18
  144. package/lib/shared-interfaces.d.ts +3 -3
  145. package/package.json +8 -14
  146. package/public-api.d.ts +2 -0
  147. package/src/lib/styles/_imports.scss +54 -56
  148. package/src/lib/styles/atoms/_button.scss +37 -30
  149. package/src/lib/styles/components/_advanced-autocomplete.scss +15 -38
  150. package/src/lib/styles/components/_alert.scss +6 -18
  151. package/src/lib/styles/components/_anchor-wrapper.scss +3 -4
  152. package/src/lib/styles/components/_avatar.scss +1 -4
  153. package/src/lib/styles/components/_breadcrumbs.scss +12 -23
  154. package/src/lib/styles/components/_bubble-chart.scss +3 -4
  155. package/src/lib/styles/components/_button.scss +3 -13
  156. package/src/lib/styles/components/_carousel.scss +18 -46
  157. package/src/lib/styles/components/_chart.scss +3 -4
  158. package/src/lib/styles/components/_content-placeholder.scss +17 -17
  159. package/src/lib/styles/components/_data-widget.scss +5 -17
  160. package/src/lib/styles/components/_datepicker.scss +3 -4
  161. package/src/lib/styles/components/_facet-header.scss +3 -8
  162. package/src/lib/styles/components/_facet-year-range.scss +7 -12
  163. package/src/lib/styles/components/_facet.scss +11 -28
  164. package/src/lib/styles/components/_file-selector.scss +3 -4
  165. package/src/lib/styles/components/_footer.scss +7 -28
  166. package/src/lib/styles/components/_header.scss +15 -76
  167. package/src/lib/styles/components/_hero.scss +10 -20
  168. package/src/lib/styles/components/_histogram-range.scss +1 -2
  169. package/src/lib/styles/components/_icon.scss +1 -3
  170. package/src/lib/styles/components/_image-viewer-tools.scss +31 -40
  171. package/src/lib/styles/components/_image-viewer.scss +20 -36
  172. package/src/lib/styles/components/_inner-title.scss +13 -39
  173. package/src/lib/styles/components/_input-checkbox.scss +6 -10
  174. package/src/lib/styles/components/_input-link.scss +4 -10
  175. package/src/lib/styles/components/_input-select.scss +2 -7
  176. package/src/lib/styles/components/_input-text.scss +5 -10
  177. package/src/lib/styles/components/_input-textarea.scss +3 -8
  178. package/src/lib/styles/components/_item-preview.scss +10 -36
  179. package/src/lib/styles/components/_loader.scss +1 -2
  180. package/src/lib/styles/components/_map.scss +2 -3
  181. package/src/lib/styles/components/_metadata-viewer.scss +7 -12
  182. package/src/lib/styles/components/_mirador.scss +19 -0
  183. package/src/lib/styles/components/_nav.scss +5 -11
  184. package/src/lib/styles/components/_pagination.scss +29 -33
  185. package/src/lib/styles/components/_progress-line.scss +3 -10
  186. package/src/lib/styles/components/_sidebar-header.scss +3 -8
  187. package/src/lib/styles/components/_signup.scss +48 -49
  188. package/src/lib/styles/components/_simple-autocomplete.scss +5 -12
  189. package/src/lib/styles/components/_table.scss +5 -18
  190. package/src/lib/styles/components/_tag.scss +7 -10
  191. package/src/lib/styles/components/_text-viewer.scss +33 -88
  192. package/src/lib/styles/components/_timeline.scss +3 -4
  193. package/src/lib/styles/components/_toast.scss +7 -17
  194. package/src/lib/styles/components/_tooltip-content.scss +3 -4
  195. package/src/lib/styles/components/_tree.scss +26 -22
  196. package/src/lib/styles/components/_wizard.scss +36 -29
  197. package/src/lib/styles/generic/_color_scheme.scss +2 -2
  198. package/src/lib/styles/generic/_mixins.scss +28 -31
  199. package/src/lib/styles/generic/_variables.scss +9 -11
  200. package/src/lib/styles/global/_forms.scss +38 -63
  201. package/src/lib/styles/global/_global.scss +3 -5
  202. package/src/lib/styles/global/_normalize.scss +17 -57
  203. package/src/lib/styles/global/_typography.scss +25 -23
  204. package/src/lib/styles/utilities/_grids.scss +40 -79
  205. package/esm2020/lib/components/advanced-autocomplete/advanced-autocomplete.mjs +0 -25
  206. package/esm2020/lib/components/advanced-autocomplete/advanced-autocomplete.mock.mjs +0 -100
  207. package/esm2020/lib/components/alert/alert.mjs +0 -24
  208. package/esm2020/lib/components/anchor-wrapper/anchor-wrapper.mjs +0 -35
  209. package/esm2020/lib/components/avatar/avatar.mjs +0 -34
  210. package/esm2020/lib/components/breadcrumbs/breadcrumbs.mjs +0 -25
  211. package/esm2020/lib/components/bubble-chart/bubble-chart.mjs +0 -329
  212. package/esm2020/lib/components/button/button.mjs +0 -26
  213. package/esm2020/lib/components/carousel/carousel.mjs +0 -89
  214. package/esm2020/lib/components/carousel/carousel.mock.mjs +0 -136
  215. package/esm2020/lib/components/chart/chart.mjs +0 -37
  216. package/esm2020/lib/components/chart/chart.mock.mjs +0 -112
  217. package/esm2020/lib/components/content-placeholder/content-placeholder.mjs +0 -17
  218. package/esm2020/lib/components/data-widget/data-widget.mjs +0 -29
  219. package/esm2020/lib/components/datepicker/datepicker.mjs +0 -44
  220. package/esm2020/lib/components/facet/facet.mjs +0 -24
  221. package/esm2020/lib/components/facet/facet.mock.mjs +0 -103
  222. package/esm2020/lib/components/facet-header/facet-header.mjs +0 -24
  223. package/esm2020/lib/components/facet-year-range/facet-year-range.mjs +0 -53
  224. package/esm2020/lib/components/file-selector/file-selector.mjs +0 -39
  225. package/esm2020/lib/components/footer/footer.mjs +0 -26
  226. package/esm2020/lib/components/footer/footer.mock.mjs +0 -58
  227. package/esm2020/lib/components/header/header.mjs +0 -53
  228. package/esm2020/lib/components/header/header.mock.mjs +0 -101
  229. package/esm2020/lib/components/hero/hero.mjs +0 -41
  230. package/esm2020/lib/components/histogram-range/histogram-range.mjs +0 -390
  231. package/esm2020/lib/components/icon/icon.mjs +0 -21
  232. package/esm2020/lib/components/image-viewer/image-viewer.mjs +0 -55
  233. package/esm2020/lib/components/image-viewer/image-viewer.mock.mjs +0 -25
  234. package/esm2020/lib/components/image-viewer-tools/image-viewer-tools.mjs +0 -28
  235. package/esm2020/lib/components/image-viewer-tools/image-viewer-tools.mock.mjs +0 -54
  236. package/esm2020/lib/components/inner-title/inner-title.mjs +0 -40
  237. package/esm2020/lib/components/inner-title/inner-title.mock.mjs +0 -53
  238. package/esm2020/lib/components/input-checkbox/input-checkbox.mjs +0 -24
  239. package/esm2020/lib/components/input-checkbox/input-checkbox.mock.mjs +0 -25
  240. package/esm2020/lib/components/input-link/input-link.mjs +0 -24
  241. package/esm2020/lib/components/input-link/input-link.mock.mjs +0 -38
  242. package/esm2020/lib/components/input-text/input-text.mjs +0 -34
  243. package/esm2020/lib/components/input-textarea/input-textarea.mjs +0 -21
  244. package/esm2020/lib/components/item-preview/item-preview.mjs +0 -25
  245. package/esm2020/lib/components/item-preview/item-preview.mock.mjs +0 -43
  246. package/esm2020/lib/components/loader/loader.mjs +0 -16
  247. package/esm2020/lib/components/map/map.mjs +0 -64
  248. package/esm2020/lib/components/metadata-viewer/metadata-viewer.mjs +0 -19
  249. package/esm2020/lib/components/metadata-viewer/metadata-viewer.mock.mjs +0 -74
  250. package/esm2020/lib/components/nav/nav.mjs +0 -27
  251. package/esm2020/lib/components/nav/nav.mock.mjs +0 -36
  252. package/esm2020/lib/components/pagination/pagination.mjs +0 -31
  253. package/esm2020/lib/components/pagination/pagination.mock.mjs +0 -23
  254. package/esm2020/lib/components/progress-line/progress-line.mjs +0 -19
  255. package/esm2020/lib/components/sidebar-header/sidebar-header.mjs +0 -24
  256. package/esm2020/lib/components/signup/signup.mjs +0 -44
  257. package/esm2020/lib/components/simple-autocomplete/simple-autocomplete.mjs +0 -25
  258. package/esm2020/lib/components/simple-autocomplete/simple-autocomplete.mock.mjs +0 -15
  259. package/esm2020/lib/components/table/table.mjs +0 -35
  260. package/esm2020/lib/components/table/table.mock.mjs +0 -152
  261. package/esm2020/lib/components/tag/tag.mjs +0 -35
  262. package/esm2020/lib/components/text-viewer/text-viewer.mjs +0 -42
  263. package/esm2020/lib/components/timeline/timeline.mjs +0 -51
  264. package/esm2020/lib/components/timeline/timeline.mock.mjs +0 -137
  265. package/esm2020/lib/components/toast/toast.mjs +0 -24
  266. package/esm2020/lib/components/toast/toast.mock.mjs +0 -51
  267. package/esm2020/lib/components/tooltip-content/tooltip-content.mjs +0 -25
  268. package/esm2020/lib/components/tree/tree.mjs +0 -25
  269. package/esm2020/lib/components/wizard/wizard.mjs +0 -24
  270. package/esm2020/lib/dv-components-lib.module.mjs +0 -211
  271. package/esm2020/public-api.mjs +0 -103
  272. package/fesm2015/net7-components.mjs +0 -5421
  273. package/fesm2015/net7-components.mjs.map +0 -1
  274. package/fesm2020/net7-components.mjs +0 -5434
  275. package/fesm2020/net7-components.mjs.map +0 -1
  276. /package/{esm2020 → esm2022}/lib/components/avatar/avatar.mock.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/components/datepicker/datepicker.mock.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/components/facet-header/facet-header.mock.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/components/facet-year-range/facet-year-range.mock.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/components/input-select/input-select.mock.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/components/input-text/input-text.mock.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/components/input-textarea/input-textarea.mock.mjs +0 -0
  283. /package/{esm2020 → esm2022}/lib/components/progress-line/progress-line.mock.mjs +0 -0
  284. /package/{esm2020 → esm2022}/lib/components/sidebar-header/sidebar-header.mock.mjs +0 -0
  285. /package/{esm2020 → esm2022}/lib/components/tag/tag.mock.mjs +0 -0
  286. /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=