@provoly/dashboard 1.4.3 → 1.4.5

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 (594) hide show
  1. package/admin/components/admin-abac-rules/store/abac-rules.actions.d.ts +30 -30
  2. package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +20 -20
  3. package/admin/components/admin-abac-rules/store/abac-rules.reducer.d.ts +1 -1
  4. package/admin/components/admin-classes/store/admin-class.actions.d.ts +31 -31
  5. package/admin/components/admin-classes/store/admin-class.effects.d.ts +27 -27
  6. package/admin/components/admin-classes/store/admin-class.reducer.d.ts +1 -1
  7. package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +18 -18
  8. package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +27 -27
  9. package/admin/components/admin-dataset/store/admin-dataset.reducer.d.ts +1 -1
  10. package/admin/components/admin-environment/store/environment.actions.d.ts +15 -15
  11. package/admin/components/admin-environment/store/environment.effects.d.ts +12 -12
  12. package/admin/components/admin-environment/store/environment.reducer.d.ts +1 -1
  13. package/admin/components/admin-fields/store/fields.actions.d.ts +11 -11
  14. package/admin/components/admin-fields/store/fields.effects.d.ts +15 -15
  15. package/admin/components/admin-fields/store/fields.reducer.d.ts +1 -1
  16. package/admin/components/admin-links/store/links.actions.d.ts +6 -6
  17. package/admin/components/admin-links/store/links.effects.d.ts +6 -6
  18. package/admin/components/admin-links/store/links.reducer.d.ts +1 -1
  19. package/admin/components/admin-metadata-rules/store/metadata-rules.actions.d.ts +8 -8
  20. package/admin/components/admin-metadata-rules/store/metadata-rules.effects.d.ts +10 -10
  21. package/admin/components/admin-metadata-rules/store/metadata-rules.reducer.d.ts +1 -1
  22. package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +14 -14
  23. package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +12 -12
  24. package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +1 -1
  25. package/admin/components/admin-predicates/store/predicates.actions.d.ts +9 -9
  26. package/admin/components/admin-predicates/store/predicates.effects.d.ts +8 -8
  27. package/admin/components/admin-predicates/store/predicates.reducer.d.ts +1 -1
  28. package/admin/components/admin-user/store/admin-user.action.d.ts +6 -6
  29. package/admin/components/admin-user/store/admin-user.effects.d.ts +3 -3
  30. package/admin/components/admin-user/store/admin-user.reducer.d.ts +1 -1
  31. package/admin/store/admin.actions.d.ts +16 -16
  32. package/admin/store/admin.effects.d.ts +16 -16
  33. package/admin/store/admin.reducer.d.ts +1 -1
  34. package/components/metadata-editor/store/metadata.action.d.ts +35 -35
  35. package/components/metadata-editor/store/metadata.effects.d.ts +23 -23
  36. package/components/metadata-editor/store/metadata.reducer.d.ts +1 -1
  37. package/components/paginator/paginator.component.d.ts +1 -1
  38. package/esm2022/admin/admin-routing.module.mjs +4 -4
  39. package/esm2022/admin/admin.module.mjs +4 -4
  40. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +3 -3
  41. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +3 -3
  42. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +3 -3
  43. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +3 -3
  44. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +3 -3
  45. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +3 -3
  46. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +3 -3
  47. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +3 -3
  48. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +3 -3
  49. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +3 -3
  50. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +3 -3
  51. package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +3 -3
  52. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +3 -3
  53. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +3 -3
  54. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +3 -3
  55. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +3 -3
  56. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +11 -5
  57. package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +3 -3
  58. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +5 -5
  59. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +3 -3
  60. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
  61. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +3 -3
  62. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +3 -3
  63. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +3 -3
  64. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +3 -3
  65. package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +3 -3
  66. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +3 -3
  67. package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +3 -3
  68. package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +3 -3
  69. package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +3 -3
  70. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +3 -3
  71. package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +3 -3
  72. package/esm2022/admin/components/admin-dataset/store/admin-dataset.service.mjs +3 -3
  73. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +11 -5
  74. package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +3 -3
  75. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +3 -3
  76. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +3 -3
  77. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +3 -3
  78. package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +3 -3
  79. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +3 -3
  80. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +3 -3
  81. package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +3 -3
  82. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +5 -5
  83. package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +3 -3
  84. package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +3 -3
  85. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +3 -3
  86. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +3 -3
  87. package/esm2022/admin/components/admin-links/admin-links.component.mjs +3 -3
  88. package/esm2022/admin/components/admin-links/store/links.effects.mjs +3 -3
  89. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +3 -3
  90. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +3 -3
  91. package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +3 -3
  92. package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +3 -3
  93. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +3 -3
  94. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +3 -3
  95. package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +4 -4
  96. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +3 -3
  97. package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +3 -3
  98. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +3 -3
  99. package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +3 -3
  100. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +3 -3
  101. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +3 -3
  102. package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +3 -3
  103. package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +3 -3
  104. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +3 -3
  105. package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +3 -3
  106. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +3 -3
  107. package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +3 -3
  108. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +3 -3
  109. package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +3 -3
  110. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +3 -3
  111. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +3 -3
  112. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +3 -3
  113. package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +3 -3
  114. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +3 -3
  115. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +3 -3
  116. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +3 -3
  117. package/esm2022/admin/components/admin-title/admin-title.component.mjs +3 -3
  118. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +3 -3
  119. package/esm2022/admin/components/admin-user/admin-user.component.mjs +3 -3
  120. package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +3 -3
  121. package/esm2022/admin/components/admin.component.mjs +3 -3
  122. package/esm2022/admin/components/association/association.component.mjs +3 -3
  123. package/esm2022/admin/components/shared/add-category-modal/add-category-modal.component.mjs +3 -3
  124. package/esm2022/admin/store/admin.effects.mjs +3 -3
  125. package/esm2022/admin/store/admin.service.mjs +3 -3
  126. package/esm2022/components/card/card.component.mjs +18 -18
  127. package/esm2022/components/card/card.module.mjs +4 -4
  128. package/esm2022/components/checkbox/checkbox.component.mjs +3 -3
  129. package/esm2022/components/checkbox/checkbox.module.mjs +4 -4
  130. package/esm2022/components/color-picker/color-picker.component.mjs +3 -3
  131. package/esm2022/components/color-picker/color-picker.module.mjs +4 -4
  132. package/esm2022/components/data-format/data-format.module.mjs +4 -4
  133. package/esm2022/components/data-format/data-format.pipe.mjs +4 -6
  134. package/esm2022/components/expand-panel/expand-panel.component.mjs +6 -6
  135. package/esm2022/components/expand-panel/expand-panel.module.mjs +4 -4
  136. package/esm2022/components/filter/filter.module.mjs +4 -4
  137. package/esm2022/components/filter/filter.pipe.mjs +3 -3
  138. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +3 -3
  139. package/esm2022/components/metadata-editor/metadata-editor.module.mjs +4 -4
  140. package/esm2022/components/metadata-editor/store/metadata.effects.mjs +3 -3
  141. package/esm2022/components/metadata-editor/store/metadata.service.mjs +3 -3
  142. package/esm2022/components/metadata-editor/style/css.component.mjs +3 -3
  143. package/esm2022/components/page-loader/page-loader.component.mjs +3 -3
  144. package/esm2022/components/page-loader/page-loader.module.mjs +4 -4
  145. package/esm2022/components/paginator/paginator.component.mjs +3 -3
  146. package/esm2022/components/paginator/paginator.module.mjs +4 -4
  147. package/esm2022/components/paginator/style/css.component.mjs +3 -3
  148. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +3 -3
  149. package/esm2022/components/scheme-picker/scheme-picker.module.mjs +4 -4
  150. package/esm2022/components/scheme-picker/scheme.service.mjs +3 -3
  151. package/esm2022/components/stepper/step/step.component.mjs +3 -3
  152. package/esm2022/components/stepper/step-title.directive.mjs +3 -3
  153. package/esm2022/components/stepper/stepper.component.mjs +3 -3
  154. package/esm2022/components/stepper/stepper.module.mjs +4 -4
  155. package/esm2022/components/text-editor/component/text-editor.component.mjs +3 -3
  156. package/esm2022/components/text-editor/mdToHtml.pipe.mjs +3 -3
  157. package/esm2022/components/text-editor/service/text-editor.service.mjs +3 -3
  158. package/esm2022/components/text-editor/style/css.component.mjs +3 -3
  159. package/esm2022/components/text-editor/text-editor.module.mjs +4 -4
  160. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
  161. package/esm2022/dataset/components/dataset-version-form/dataset-version-form.component.mjs +3 -3
  162. package/esm2022/dataset/components/dataset.component.mjs +3 -3
  163. package/esm2022/dataset/dataset.module.mjs +4 -4
  164. package/esm2022/dataset/style/css.component.mjs +3 -3
  165. package/esm2022/filters/autocomplete/autocomplete.component.mjs +3 -3
  166. package/esm2022/filters/autocomplete/autocomplete.module.mjs +4 -4
  167. package/esm2022/filters/autocomplete/style/css.component.mjs +3 -3
  168. package/esm2022/filters/date/date-filter.component.mjs +23 -44
  169. package/esm2022/filters/date/date-filter.module.mjs +4 -4
  170. package/esm2022/filters/list/list-filter.component.mjs +3 -3
  171. package/esm2022/filters/list/list-filter.module.mjs +4 -4
  172. package/esm2022/filters/list/style/css.component.mjs +3 -3
  173. package/esm2022/filters/number/number-filter.component.mjs +3 -3
  174. package/esm2022/filters/number/number-filter.module.mjs +4 -4
  175. package/esm2022/filters/text/text-filter.component.mjs +3 -3
  176. package/esm2022/filters/text/text-filter.module.mjs +4 -4
  177. package/esm2022/import/components/form/import-form.component.mjs +3 -3
  178. package/esm2022/import/components/list/import-list.component.mjs +5 -5
  179. package/esm2022/import/components/version-modal/version-modal.component.mjs +3 -3
  180. package/esm2022/import/import-routing.module.mjs +4 -4
  181. package/esm2022/import/import.module.mjs +4 -4
  182. package/esm2022/import/store/import.effects.mjs +3 -3
  183. package/esm2022/import/store/import.service.mjs +3 -3
  184. package/esm2022/import/style/css.component.mjs +3 -3
  185. package/esm2022/lib/core/access/access.directive.mjs +3 -3
  186. package/esm2022/lib/core/access/access.guard.mjs +3 -3
  187. package/esm2022/lib/core/access/access.service.mjs +3 -3
  188. package/esm2022/lib/core/auth/geoAuth.service.mjs +3 -3
  189. package/esm2022/lib/core/components/about/about.component.mjs +3 -3
  190. package/esm2022/lib/core/components/about/pry-about.module.mjs +4 -4
  191. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +3 -3
  192. package/esm2022/lib/core/components/accordion/accordion.component.mjs +3 -3
  193. package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +3 -3
  194. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +3 -3
  195. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +3 -3
  196. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +3 -3
  197. package/esm2022/lib/core/components/chips-selector/chips-selector.component.mjs +3 -3
  198. package/esm2022/lib/core/components/chips-selector/chips-selector.module.mjs +4 -4
  199. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +3 -3
  200. package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +4 -4
  201. package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +3 -3
  202. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +3 -3
  203. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +3 -3
  204. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +3 -3
  205. package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +4 -4
  206. package/esm2022/lib/core/components/ellipsis.directive.mjs +3 -3
  207. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +3 -3
  208. package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +4 -4
  209. package/esm2022/lib/core/components/icon/icon.component.mjs +3 -3
  210. package/esm2022/lib/core/components/icon/icon.module.mjs +4 -4
  211. package/esm2022/lib/core/components/modal/modal.component.mjs +3 -3
  212. package/esm2022/lib/core/components/modal/pry-modal.module.mjs +4 -4
  213. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +3 -3
  214. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +3 -3
  215. package/esm2022/lib/core/components/overlay/dialog.service.mjs +3 -3
  216. package/esm2022/lib/core/components/overlay/overlay.directive.mjs +3 -3
  217. package/esm2022/lib/core/components/overlay/overlay.module.mjs +4 -4
  218. package/esm2022/lib/core/components/range/range.component.mjs +3 -3
  219. package/esm2022/lib/core/components/range/range.module.mjs +4 -4
  220. package/esm2022/lib/core/components/select/select.component.mjs +6 -9
  221. package/esm2022/lib/core/components/select/select.module.mjs +4 -4
  222. package/esm2022/lib/core/components/select-image/select-image.component.mjs +3 -3
  223. package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +3 -3
  224. package/esm2022/lib/core/components/share/access-rights-share-modal/access-rights-share-modal.component.mjs +3 -3
  225. package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +3 -3
  226. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +3 -3
  227. package/esm2022/lib/core/components/share/share.module.mjs +4 -4
  228. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +3 -3
  229. package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +4 -4
  230. package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +3 -3
  231. package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +3 -3
  232. package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +3 -3
  233. package/esm2022/lib/core/components/sort/sort-header.directive.mjs +3 -3
  234. package/esm2022/lib/core/components/sort/sort-table.directive.mjs +3 -3
  235. package/esm2022/lib/core/components/sort/sort.module.mjs +4 -4
  236. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +3 -3
  237. package/esm2022/lib/core/components/status-modal/status-modal.module.mjs +4 -4
  238. package/esm2022/lib/core/components/tabs/tab-group.component.mjs +3 -3
  239. package/esm2022/lib/core/components/tabs/tab.component.mjs +3 -3
  240. package/esm2022/lib/core/components/toggle/toggle.component.mjs +3 -3
  241. package/esm2022/lib/core/components/toggle/toggle.module.mjs +4 -4
  242. package/esm2022/lib/core/components/upload/upload.component.mjs +3 -3
  243. package/esm2022/lib/core/core.module.mjs +4 -4
  244. package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +3 -3
  245. package/esm2022/lib/core/i18n/en.translations.mjs +3 -3
  246. package/esm2022/lib/core/i18n/fr.translations.mjs +3 -3
  247. package/esm2022/lib/core/i18n/i18n.module.mjs +4 -4
  248. package/esm2022/lib/core/i18n/i18n.pipe.mjs +3 -3
  249. package/esm2022/lib/core/i18n/i18n.service.mjs +6 -6
  250. package/esm2022/lib/core/model/filter.interface.mjs +1 -1
  251. package/esm2022/lib/core/pipes/get-secured-image/get-secured-image.pipe.mjs +3 -3
  252. package/esm2022/lib/core/pipes/since-date/since-date.module.mjs +4 -4
  253. package/esm2022/lib/core/pipes/since-date/since-date.pipe.mjs +3 -3
  254. package/esm2022/lib/core/pipes/translate-id/translate-id.pipe.mjs +3 -3
  255. package/esm2022/lib/core/pipes/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +3 -3
  256. package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +3 -3
  257. package/esm2022/lib/core/store/aggregation/base-aggregation.service.mjs +3 -3
  258. package/esm2022/lib/core/store/aggregation/frontend-aggregation/frontend-aggregation.service.mjs +3 -3
  259. package/esm2022/lib/core/store/category/category.effects.mjs +3 -3
  260. package/esm2022/lib/core/store/category/category.service.mjs +3 -3
  261. package/esm2022/lib/core/store/class/class.effects.mjs +3 -3
  262. package/esm2022/lib/core/store/class/class.service.mjs +3 -3
  263. package/esm2022/lib/core/store/config/config.effects.mjs +3 -3
  264. package/esm2022/lib/core/store/config/config.service.mjs +3 -3
  265. package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +3 -3
  266. package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +3 -3
  267. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +3 -3
  268. package/esm2022/lib/core/store/data-source/data-source.service.mjs +3 -3
  269. package/esm2022/lib/core/store/field/field.effects.mjs +3 -3
  270. package/esm2022/lib/core/store/field/field.service.mjs +3 -3
  271. package/esm2022/lib/core/store/image/image.effects.mjs +3 -3
  272. package/esm2022/lib/core/store/image/image.service.mjs +3 -3
  273. package/esm2022/lib/core/store/item/item.effects.mjs +3 -3
  274. package/esm2022/lib/core/store/item/item.service.mjs +3 -3
  275. package/esm2022/lib/core/store/raw/raw.service.mjs +3 -3
  276. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +3 -3
  277. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +3 -3
  278. package/esm2022/lib/core/store/search/search.effects.mjs +3 -3
  279. package/esm2022/lib/core/store/search/search.service.mjs +13 -5
  280. package/esm2022/lib/core/symbol/symbol.service.mjs +3 -3
  281. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +3 -3
  282. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +4 -4
  283. package/esm2022/lib/core/ws/websocket.service.mjs +3 -3
  284. package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +3 -3
  285. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +4 -4
  286. package/esm2022/lib/dashboard/base-widget.module.mjs +4 -4
  287. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +3 -3
  288. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +3 -3
  289. package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -3
  290. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +3 -3
  291. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +3 -3
  292. package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +3 -3
  293. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +3 -3
  294. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +3 -3
  295. package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +3 -3
  296. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-card/datasource-card.component.mjs +3 -3
  297. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +3 -3
  298. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +3 -3
  299. package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +3 -3
  300. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +3 -3
  301. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +3 -3
  302. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +3 -3
  303. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +8 -5
  304. package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +3 -3
  305. package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +3 -3
  306. package/esm2022/lib/dashboard/dashboard.module.mjs +4 -4
  307. package/esm2022/lib/dashboard/date-utils.mjs +21 -1
  308. package/esm2022/lib/dashboard/filter/base-filter.component.mjs +3 -3
  309. package/esm2022/lib/dashboard/filter/base-filter.module.mjs +4 -4
  310. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +3 -3
  311. package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +3 -3
  312. package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +3 -3
  313. package/esm2022/lib/dashboard/filter/style/css.component.mjs +3 -3
  314. package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +3 -3
  315. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +3 -3
  316. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
  317. package/esm2022/lib/dashboard/store/manifest.service.mjs +3 -3
  318. package/esm2022/lib/dashboard/store/refresh.service.mjs +3 -3
  319. package/esm2022/lib/dashboard/store/title.service.mjs +3 -3
  320. package/esm2022/lib/dashboard/store/wms.service.mjs +3 -3
  321. package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +3 -3
  322. package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +4 -4
  323. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  324. package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +3 -3
  325. package/esm2022/lib/dashboard/widget-loader.function.mjs +15 -4
  326. package/esm2022/notification/components/notification/content/notification-content.component.mjs +12 -6
  327. package/esm2022/notification/components/notification/notification.component.mjs +3 -3
  328. package/esm2022/notification/notification.module.mjs +4 -4
  329. package/esm2022/notification/store/notification.effects.mjs +3 -3
  330. package/esm2022/notification/store/notification.service.mjs +3 -3
  331. package/esm2022/notification/style/css.component.mjs +3 -3
  332. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +3 -3
  333. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +3 -3
  334. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +3 -3
  335. package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +3 -3
  336. package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +3 -3
  337. package/esm2022/pipeline/pipeline.module.mjs +4 -4
  338. package/esm2022/pipeline/store/pipeline.effects.mjs +3 -3
  339. package/esm2022/pipeline/store/pipeline.service.mjs +3 -3
  340. package/esm2022/pipeline/style/css.component.mjs +3 -3
  341. package/esm2022/pipeline-components/filter/component/filter.component.mjs +3 -3
  342. package/esm2022/pipeline-components/filter/filter.module.mjs +4 -4
  343. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +3 -3
  344. package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +4 -4
  345. package/esm2022/pipeline-components/noop/component/noop.component.mjs +3 -3
  346. package/esm2022/pipeline-components/noop/noop.module.mjs +4 -4
  347. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +3 -3
  348. package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +4 -4
  349. package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +3 -3
  350. package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +4 -4
  351. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
  352. package/esm2022/presentation/components/presentation.component.mjs +3 -3
  353. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +3 -3
  354. package/esm2022/presentation/presentation.module.mjs +4 -4
  355. package/esm2022/presentation/style/css.component.mjs +3 -3
  356. package/esm2022/restitution/components/restitution/restitution.component.mjs +3 -3
  357. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +3 -3
  358. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
  359. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
  360. package/esm2022/restitution/restitution.module.mjs +4 -4
  361. package/esm2022/restitution/style/css.component.mjs +3 -3
  362. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +3 -3
  363. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +3 -3
  364. package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +3 -3
  365. package/esm2022/search/components/save-query/save-query.component.mjs +3 -3
  366. package/esm2022/search/components/save-query-button/save-query-button.component.mjs +3 -3
  367. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +3 -3
  368. package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +3 -3
  369. package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +3 -3
  370. package/esm2022/search/search-home/search-home.component.mjs +3 -3
  371. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +3 -3
  372. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
  373. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +3 -3
  374. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +3 -3
  375. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +3 -3
  376. package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +3 -3
  377. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +3 -3
  378. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +3 -3
  379. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +3 -3
  380. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +3 -3
  381. package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +3 -3
  382. package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +3 -3
  383. package/esm2022/search/search-tools/search-tools.component.mjs +3 -3
  384. package/esm2022/search/search.module.mjs +4 -4
  385. package/esm2022/search/style/css.component.mjs +3 -3
  386. package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +3 -3
  387. package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +3 -3
  388. package/esm2022/toolbox/components/dashboard-details/dashboard-details.component.mjs +3 -3
  389. package/esm2022/toolbox/components/delete/delete.component.mjs +3 -3
  390. package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +3 -3
  391. package/esm2022/toolbox/components/edit-mode-action/edit-mode-action.component.mjs +3 -3
  392. package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +3 -3
  393. package/esm2022/toolbox/components/edit-presentation/edit-presentation.component.mjs +3 -3
  394. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +3 -3
  395. package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +3 -3
  396. package/esm2022/toolbox/components/named-query/named-query.component.mjs +3 -3
  397. package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +3 -3
  398. package/esm2022/toolbox/components/save-view/save-view.component.mjs +5 -5
  399. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +3 -3
  400. package/esm2022/toolbox/components/share/share.component.mjs +3 -3
  401. package/esm2022/toolbox/components/switch-to-edit-content/switch-to-edit-content.component.mjs +3 -3
  402. package/esm2022/toolbox/components/toolbox.component.mjs +3 -3
  403. package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +3 -3
  404. package/esm2022/toolbox/shared/toolbox-action/toolbox-action.component.mjs +3 -3
  405. package/esm2022/toolbox/shared/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +3 -3
  406. package/esm2022/toolbox/style/css.component.mjs +3 -3
  407. package/esm2022/toolbox/toolbox.module.mjs +4 -4
  408. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +3 -3
  409. package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +4 -4
  410. package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +3 -3
  411. package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +4 -4
  412. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +3 -3
  413. package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +3 -3
  414. package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +4 -4
  415. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +8 -5
  416. package/esm2022/widgets/widget-analytic/style/css.component.mjs +3 -3
  417. package/esm2022/widgets/widget-analytic/widget-analytic.module.mjs +4 -4
  418. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +3 -3
  419. package/esm2022/widgets/widget-chart/style/css.component.mjs +3 -3
  420. package/esm2022/widgets/widget-chart/widget-chart.module.mjs +4 -4
  421. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +3 -3
  422. package/esm2022/widgets/widget-detail/style/css.component.mjs +3 -3
  423. package/esm2022/widgets/widget-detail/widget-detail.module.mjs +4 -4
  424. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +3 -3
  425. package/esm2022/widgets/widget-graph/style/css.component.mjs +3 -3
  426. package/esm2022/widgets/widget-graph/widget-graph.module.mjs +4 -4
  427. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +3 -3
  428. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +3 -3
  429. package/esm2022/widgets/widget-iframe/style/css.component.mjs +3 -3
  430. package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +4 -4
  431. package/esm2022/widgets/widget-image/component/widget-image.component.mjs +3 -3
  432. package/esm2022/widgets/widget-image/style/css.component.mjs +3 -3
  433. package/esm2022/widgets/widget-image/widget-image.module.mjs +4 -4
  434. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +3 -3
  435. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +3 -3
  436. package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +3 -3
  437. package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +3 -3
  438. package/esm2022/widgets/widget-map/style/css.component.mjs +3 -3
  439. package/esm2022/widgets/widget-map/widget-map.module.mjs +4 -4
  440. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +3 -3
  441. package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +3 -3
  442. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +3 -3
  443. package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +3 -3
  444. package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +3 -3
  445. package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +3 -3
  446. package/esm2022/widgets/widget-table/style/css.component.mjs +3 -3
  447. package/esm2022/widgets/widget-table/widget-table.module.mjs +4 -4
  448. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +3 -3
  449. package/esm2022/widgets/widget-template/style/css.component.mjs +3 -3
  450. package/esm2022/widgets/widget-template/widget-template.module.mjs +4 -4
  451. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +3 -3
  452. package/esm2022/widgets/widget-tile/style/css.component.mjs +3 -3
  453. package/esm2022/widgets/widget-tile/widget-tile.module.mjs +4 -4
  454. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +3 -3
  455. package/esm2022/widgets/widget-vega/style/css.component.mjs +3 -3
  456. package/esm2022/widgets/widget-vega/widget-vega.module.mjs +4 -4
  457. package/fesm2022/provoly-dashboard-admin.mjs +284 -272
  458. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  459. package/fesm2022/provoly-dashboard-components-card.mjs +22 -22
  460. package/fesm2022/provoly-dashboard-components-checkbox.mjs +7 -7
  461. package/fesm2022/provoly-dashboard-components-color-picker.mjs +7 -7
  462. package/fesm2022/provoly-dashboard-components-data-format.mjs +7 -9
  463. package/fesm2022/provoly-dashboard-components-data-format.mjs.map +1 -1
  464. package/fesm2022/provoly-dashboard-components-expand-panel.mjs +10 -10
  465. package/fesm2022/provoly-dashboard-components-filter.mjs +7 -7
  466. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +16 -16
  467. package/fesm2022/provoly-dashboard-components-page-loader.mjs +7 -7
  468. package/fesm2022/provoly-dashboard-components-paginator.mjs +10 -10
  469. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +10 -10
  470. package/fesm2022/provoly-dashboard-components-stepper.mjs +13 -13
  471. package/fesm2022/provoly-dashboard-components-text-editor.mjs +16 -16
  472. package/fesm2022/provoly-dashboard-dataset.mjs +16 -16
  473. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +10 -10
  474. package/fesm2022/provoly-dashboard-filters-date.mjs +26 -47
  475. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  476. package/fesm2022/provoly-dashboard-filters-list.mjs +10 -10
  477. package/fesm2022/provoly-dashboard-filters-number.mjs +7 -7
  478. package/fesm2022/provoly-dashboard-filters-text.mjs +7 -7
  479. package/fesm2022/provoly-dashboard-import.mjs +27 -27
  480. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  481. package/fesm2022/provoly-dashboard-notification.mjs +27 -21
  482. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  483. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +7 -7
  484. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +7 -7
  485. package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +7 -7
  486. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +7 -7
  487. package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +7 -7
  488. package/fesm2022/provoly-dashboard-pipeline.mjs +28 -28
  489. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  490. package/fesm2022/provoly-dashboard-presentation.mjs +16 -16
  491. package/fesm2022/provoly-dashboard-restitution.mjs +19 -19
  492. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  493. package/fesm2022/provoly-dashboard-search.mjs +73 -73
  494. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  495. package/fesm2022/provoly-dashboard-toolbox.mjs +68 -68
  496. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  497. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +7 -7
  498. package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +7 -7
  499. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +10 -10
  500. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  501. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +14 -11
  502. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  503. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +10 -10
  504. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +10 -10
  505. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +10 -10
  506. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +13 -13
  507. package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +10 -10
  508. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +19 -19
  509. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  510. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +25 -25
  511. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +10 -10
  512. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +10 -10
  513. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +10 -10
  514. package/fesm2022/provoly-dashboard.mjs +503 -464
  515. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  516. package/filters/date/date-filter.component.d.ts +2 -8
  517. package/import/components/list/import-list.component.d.ts +9 -9
  518. package/import/store/import.actions.d.ts +5 -5
  519. package/import/store/import.effects.d.ts +2 -2
  520. package/import/store/import.reducer.d.ts +1 -1
  521. package/lib/core/components/select/select.component.d.ts +0 -1
  522. package/lib/core/model/filter.interface.d.ts +1 -0
  523. package/lib/core/store/category/category.actions.d.ts +3 -3
  524. package/lib/core/store/category/category.effects.d.ts +2 -2
  525. package/lib/core/store/class/class.actions.d.ts +6 -6
  526. package/lib/core/store/class/class.effects.d.ts +4 -4
  527. package/lib/core/store/class/class.selectors.d.ts +20 -20
  528. package/lib/core/store/config/config.actions.d.ts +42 -42
  529. package/lib/core/store/config/config.effects.d.ts +14 -14
  530. package/lib/core/store/config/config.reducer.d.ts +1 -1
  531. package/lib/core/store/context-menu/context-menu.actions.d.ts +6 -6
  532. package/lib/core/store/context-menu/context-menu.reducer.d.ts +1 -1
  533. package/lib/core/store/data-source/data-source.actions.d.ts +70 -70
  534. package/lib/core/store/data-source/data-source.effects.d.ts +33 -33
  535. package/lib/core/store/data-source/data-source.reducer.d.ts +1 -1
  536. package/lib/core/store/field/field.actions.d.ts +3 -3
  537. package/lib/core/store/field/field.effects.d.ts +2 -2
  538. package/lib/core/store/image/image.actions.d.ts +6 -6
  539. package/lib/core/store/image/image.effects.d.ts +5 -5
  540. package/lib/core/store/image/image.reducer.d.ts +1 -1
  541. package/lib/core/store/item/item.actions.d.ts +3 -3
  542. package/lib/core/store/item/item.effects.d.ts +5 -5
  543. package/lib/core/store/relation-types/relation-types.actions.d.ts +18 -18
  544. package/lib/core/store/relation-types/relation-types.effects.d.ts +9 -9
  545. package/lib/core/store/relation-types/relation-types.reducer.d.ts +1 -1
  546. package/lib/core/store/search/search.actions.d.ts +15 -15
  547. package/lib/core/store/search/search.effects.d.ts +13 -13
  548. package/lib/core/store/search/search.reducer.d.ts +1 -1
  549. package/lib/dashboard/action-bus/effect/action-bus.effects.d.ts +1 -1
  550. package/lib/dashboard/action-bus/service/bus.service.d.ts +1 -2
  551. package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +3 -0
  552. package/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.d.ts +5 -5
  553. package/lib/dashboard/date-utils.d.ts +13 -0
  554. package/lib/dashboard/store/dashboard.actions.d.ts +168 -168
  555. package/lib/dashboard/store/dashboard.effects.d.ts +125 -125
  556. package/lib/dashboard/store/dashboard.selectors.d.ts +30 -30
  557. package/notification/store/notification.actions.d.ts +5 -5
  558. package/notification/store/notification.effects.d.ts +2 -2
  559. package/notification/store/notification.reducer.d.ts +1 -1
  560. package/package.json +15 -15
  561. package/pipeline/store/pipeline.actions.d.ts +13 -13
  562. package/pipeline/store/pipeline.effects.d.ts +8 -8
  563. package/pipeline/store/pipeline.reducer.d.ts +1 -1
  564. package/schematics/ng-add/index.js +1 -1
  565. package/schematics/ng-add/index.js.map +1 -1
  566. package/schematics/ng-update/utils/complete.function.js +1 -2
  567. package/schematics/ng-update/utils/complete.function.js.map +1 -1
  568. package/schematics/ng-update/utils/replaceStrings.function.d.ts +0 -1
  569. package/schematics/ng-update/utils/replaceStrings.function.js +1 -2
  570. package/schematics/ng-update/utils/replaceStrings.function.js.map +1 -1
  571. package/schematics/ng-update/version-0-13/index.js +1 -2
  572. package/schematics/ng-update/version-0-13/index.js.map +1 -1
  573. package/schematics/ng-update/version-0-14/index.js +1 -2
  574. package/schematics/ng-update/version-0-14/index.js.map +1 -1
  575. package/schematics/ng-update/version-0-15/index.js +1 -2
  576. package/schematics/ng-update/version-0-15/index.js.map +1 -1
  577. package/schematics/ng-update/version-0-18/index.js +1 -2
  578. package/schematics/ng-update/version-0-18/index.js.map +1 -1
  579. package/schematics/ng-update/version-0-20/index.js +1 -2
  580. package/schematics/ng-update/version-0-20/index.js.map +1 -1
  581. package/schematics/utils/file-contents.function.js +1 -2
  582. package/schematics/utils/file-contents.function.js.map +1 -1
  583. package/search/search-fulltext/store/search-fulltext.actions.d.ts +4 -4
  584. package/search/search-fulltext/store/search-fulltext.effects.d.ts +10 -10
  585. package/search/search-mono-class/store/search-mono-class.actions.d.ts +28 -28
  586. package/search/search-mono-class/store/search-mono-class.effects.d.ts +25 -25
  587. package/search/search-mono-class/store/search-mono-class.reducer.d.ts +1 -1
  588. package/search/search-multi-class/store/search-multi-class.actions.d.ts +16 -16
  589. package/search/search-multi-class/store/search-multi-class.effects.d.ts +14 -14
  590. package/search/search-multi-class/store/search-multi-class.reducer.d.ts +1 -1
  591. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +1 -1
  592. package/widgets/widget-analytic/component/widget-analytic.component.d.ts +1 -1
  593. package/widgets/widget-chart/component/widget-chart.component.d.ts +3 -3
  594. package/widgets/widget-map/component/widget-map.component.d.ts +2 -2
@@ -78,6 +78,9 @@ export class WidgetAnalyticComponent extends DataWidgetComponent {
78
78
  this.valuePropField$ = combineLatest([this.availableProperties$, this.options$]).pipe(map(([attributes, options]) => attributes.find((attr) => attr.technicalName === options.valueProp)?.field));
79
79
  }
80
80
  matchAttributeValue(item, prop, comparisonValue) {
81
+ if (prop === 'level' && !('level' in item.attributes)) {
82
+ return comparisonValue === '1';
83
+ }
81
84
  return comparisonValue && prop ? item.attributes[prop].value == comparisonValue : true;
82
85
  }
83
86
  createValueMap(verticalProps, primaryProps, secondaryProps, rs, options, level) {
@@ -110,7 +113,7 @@ export class WidgetAnalyticComponent extends DataWidgetComponent {
110
113
  .map((items) => items
111
114
  .filter((item) => level && 'level' in item.attributes
112
115
  ? [level, '' + level].includes(item.attributes['level'].value)
113
- : true)
116
+ : level === undefined || level === 1)
114
117
  .map((item) => item.attributes[property]?.value + ''))
115
118
  .flat()
116
119
  .flat();
@@ -161,11 +164,11 @@ export class WidgetAnalyticComponent extends DataWidgetComponent {
161
164
  manifest: { ...this.manifest, options: this.optionsCopy }
162
165
  });
163
166
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticComponent, deps: [{ token: i1.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: WidgetAnalyticComponent, selector: "pry-widget-analytic", usesInheritance: true, ngImport: i0, template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n @if (this.valuePropField$ | async; as field) {\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig\n ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] }\n : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n </tr>\n }\n </tfoot>\n }\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i6.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: i8.PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i9.DataFormatPipe, name: "dataFormat" }] }); }
167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetAnalyticComponent, deps: [{ token: i1.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WidgetAnalyticComponent, selector: "pry-widget-analytic", usesInheritance: true, ngImport: i0, template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n @if (this.valuePropField$ | async; as field) {\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig\n ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] }\n : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n </tr>\n }\n </tfoot>\n }\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i4.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i6.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "component", type: i8.PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i9.DataFormatPipe, name: "dataFormat" }] }); }
166
169
  }
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticComponent, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetAnalyticComponent, decorators: [{
168
171
  type: Component,
169
172
  args: [{ selector: 'pry-widget-analytic', template: "<pry-widget-analytic-css></pry-widget-analytic-css>\n<div class=\"o-widget o-widget__analytic\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [header]=\"header\"\n [open$]=\"open$\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__fields\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"primaryProp\">{{ '@pry.widget.analytic.primaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'primaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.primaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"primaryProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"secondaryProp\">{{ '@pry.widget.analytic.secondaryProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'secondaryProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.secondaryProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"secondaryProp\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"verticalProp\">{{ '@pry.widget.analytic.verticalProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'verticalProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.verticalProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"verticalProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"valueProp\">{{ '@pry.widget.analytic.valueProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"change($event, 'valueProp')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.valueProp\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"valueProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleColorConfig($event)\" [ngModel]=\"!!optionsCopy.colorConfig\">\n {{ '@pry.widget.analytic.colorConfig' | i18n }}\n </pry-checkbox>\n @if (optionsCopy.colorConfig) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colorProp' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorConfig($event, 'prop')\"\n [items]=\"availableProperties$ | async\"\n [ngModel]=\"optionsCopy.colorConfig.prop\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"colorProp\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"colorProp\">{{ '@pry.widget.analytic.colors' | i18n }}</label>\n <div\n class=\"o-widget__analytic__color-picker-container u-display-flex -align-center\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n cdkDropListOrientation=\"horizontal\"\n >\n @for (color of optionsCopy.colorConfig.colors; track color; let i = $index) {\n <div class=\"o-widget__analytic__color-picker\" cdkDrag>\n <pry-color-picker\n [ngModel]=\"color\"\n (ngModelChange)=\"modifyColorScheme($event, i)\"\n ></pry-color-picker>\n <button (click)=\"removeColor(i)\" class=\"o-widget__analytic__color-picker-remove\">\n <pry-icon iconSvg=\"close\" [height]=\"15\" [width]=\"15\"></pry-icon>\n </button>\n <div *cdkDragPreview>\n <pry-color-picker [ngModel]=\"color\"></pry-color-picker>\n </div>\n </div>\n }\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only o-widget__analytic__color-picker-add\"\n (click)=\"modifyColorScheme()\"\n >\n <pry-icon iconSvg=\"add\" [height]=\"20\" [width]=\"20\"></pry-icon>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </pry-settings>\n </pry-widget-header>\n }\n <div class=\"o-widget__analytic__table\">\n <table [style.height.px]=\"height$ | async\">\n <thead>\n <tr class=\"primary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n <th [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ primary }}\n </th>\n }\n </tr>\n @if (optionsCopy.secondaryProp) {\n <tr class=\"secondary-header\">\n <th></th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <th>{{ secondary }}</th>\n }\n }\n </tr>\n }\n </thead>\n @if (this.valuePropField$ | async; as field) {\n <tbody>\n @for (line of lines$ | async; track line.name) {\n <tr>\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @if (optionsCopy.secondaryProp) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig\n ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] }\n : {}\n \"\n >\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n } @else {\n <td\n [ngStyle]=\"\n optionsCopy.colorConfig ? { 'background-color': (colorMap$ | async)?.[line.name]?.[primary] } : {}\n \"\n >\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n </tbody>\n <tfoot>\n @for (line of totals$ | async; track line.name) {\n <tr class=\"partial-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n @for (secondary of secondaryProperty$ | async; track secondary) {\n <td>\n {{ line.value[primary][secondary] | dataFormat: field }}\n </td>\n }\n }\n </tr>\n }\n @for (line of grandTotals$ | async; track line.name) {\n <tr class=\"grand-total\">\n <th>{{ line.name }}</th>\n @for (primary of primaryProperty$ | async; track primary) {\n <td [colSpan]=\"(secondaryProperty$ | async)?.length ?? 1\">\n {{ line.value[primary] | dataFormat: field }}\n </td>\n }\n </tr>\n }\n </tfoot>\n }\n </table>\n </div>\n</div>\n" }]
170
173
  }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ElementRef }] });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWFuYWx5dGljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWFuYWx5dGljL2NvbXBvbmVudC93aWRnZXQtYW5hbHl0aWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYW5hbHl0aWMvY29tcG9uZW50L3dpZGdldC1hbmFseXRpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFLTCxjQUFjLEVBQ2QsbUJBQW1CLEVBSW5CLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBT3hDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFrQjlELE1BQU0sQ0FBQyxNQUFjLEVBQUUsSUFBb0U7UUFDekYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQXlCLEVBQUUsSUFBdUI7UUFDbEUsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVksQ0FBQyxJQUFJLEdBQUcsTUFBZ0IsQ0FBQztnQkFDdEQsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFdB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QUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLENBQUMsS0FBNEI7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDekMsS0FBSyxDQUFDLFlBQVksRUFDbEIsQ0FBQyxFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsV0FBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdFBVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGtGQ3RCcEMsdXlRQXdNQTs7MkZEbExhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFuYWx5dGljV2lkZ2V0T3B0aW9ucyxcbiAgQXR0cmlidXRlLFxuICBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSxcbiAgQ2xhc3MsXG4gIENsYXNzU2VsZWN0b3JzLFxuICBEYXRhV2lkZ2V0Q29tcG9uZW50LFxuICBGaWVsZCxcbiAgSXRlbSxcbiAgUmVzdWx0U2V0LFxuICBXSURHRVRfSEVBREVSX0hFSUdIVFxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXdpZGdldC1hbmFseXRpYycsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtYW5hbHl0aWMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldEFuYWx5dGljQ29tcG9uZW50IGV4dGVuZHMgRGF0YVdpZGdldENvbXBvbmVudCB7XG4gIG9wdGlvbnNDb3B5OiBBbmFseXRpY1dpZGdldE9wdGlvbnMgPSB7IHByaW1hcnlQcm9wOiAnJywgc2Vjb25kYXJ5UHJvcDogJycsIHZlcnRpY2FsUHJvcDogJycsIHZhbHVlUHJvcDogJycgfTtcbiAgb3B0aW9ucyQ6IE9ic2VydmFibGU8QW5hbHl0aWNXaWRnZXRPcHRpb25zPjtcblxuICBwcmltYXJ5UHJvcGVydHkkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgc2Vjb25kYXJ5UHJvcGVydHkkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgdmVydGljYWxQcm9wZXJ0eSQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICB0b3RhbFByb3BlcnR5JDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGdyYW5kVG90YWxQcm9wZXJ0eSQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBsaW5lcyQ6IE9ic2VydmFibGU8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBhbnkgfSB9W10+O1xuICB0b3RhbHMkOiBPYnNlcnZhYmxlPHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH0gfVtdPjtcbiAgZ3JhbmRUb3RhbHMkOiBPYnNlcnZhYmxlPHsgbmFtZTogYW55OyB2YWx1ZTogeyBbcDogc3RyaW5nXTogYW55IH0gfVtdPjtcbiAgY29sb3JNYXAkOiBPYnNlcnZhYmxlPHsgW3ZlcnRpY2FsOiBzdHJpbmddOiB7IFtwcmltYXJ5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB9PjtcbiAgaGVpZ2h0JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBjbGFzc2VzJDogT2JzZXJ2YWJsZTxDbGFzc1tdPjtcbiAgYXZhaWxhYmxlUHJvcGVydGllcyQ6IE9ic2VydmFibGU8QXR0cmlidXRlW10+O1xuICB2YWx1ZVByb3BGaWVsZCQ6IE9ic2VydmFibGU8RmllbGQgfCB1bmRlZmluZWQ+O1xuXG4gIGNoYW5nZSgkZXZlbnQ6IHN0cmluZywgcHJvcDogJ3ByaW1hcnlQcm9wJyB8ICdzZWNvbmRhcnlQcm9wJyB8ICd2YWx1ZVByb3AnIHwgJ3ZlcnRpY2FsUHJvcCcpIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5W3Byb3BdID0gJGV2ZW50O1xuICB9XG5cbiAgY2hhbmdlQ29sb3JDb25maWcoJGV2ZW50OiBzdHJpbmcgfCBzdHJpbmdbXSwgcHJvcDogJ3Byb3AnIHwgJ2NvbG9ycycpIHtcbiAgICBzd2l0Y2ggKHByb3ApIHtcbiAgICAgIGNhc2UgJ3Byb3AnOiB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWchLnByb3AgPSAkZXZlbnQgYXMgc3RyaW5nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbG9ycyc6IHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZyEuY29sb3JzID0gJGV2ZW50IGFzIHN0cmluZ1tdO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmU8YW55PiwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihzdG9yZSwgZWwpO1xuICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLm1hbmlmZXN0JC5waXBlKG1hcCgobWFuaWZlc3QpID0+IChtYW5pZmVzdC5vcHRpb25zID8/IHt9KSBhcyBBbmFseXRpY1dpZGdldE9wdGlvbnMpKTtcbiAgICB0aGlzLmNsYXNzZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoQ2xhc3NTZWxlY3RvcnMuY2xhc3Nlcyk7XG4gICAgdGhpcy5oZWlnaHQkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWRnZXRTaXplJCwgdGhpcy5kaXNwbGF5SGVhZGVyJF0pLnBpcGUoXG4gICAgICBtYXAoKFtzaXplLCBoZWFkZXJdKSA9PiBzaXplLmhlaWdodCAtIChoZWFkZXIgPyBXSURHRVRfSEVBREVSX0hFSUdIVC52YWx1ZSA6IDApKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMub3B0aW9ucyQuc3Vic2NyaWJlKChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnByaW1hcnlQcm9wZXJ0eSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLnJlc3VsdFNldCRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbb3B0aW9uc10pID0+ICEhb3B0aW9ucy5wcmltYXJ5UHJvcCksXG4gICAgICBtYXAoKFtvcHRpb25zLCByc10pID0+IHRoaXMuZ2V0UHJvcGVydHlMYWJlbHNGb3JMZXZlbChycywgb3B0aW9ucy5wcmltYXJ5UHJvcCkpXG4gICAgKTtcbiAgICB0aGlzLnNlY29uZGFyeVByb3BlcnR5JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMucmVzdWx0U2V0JF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtvcHRpb25zXSkgPT4gISFvcHRpb25zLnNlY29uZGFyeVByb3ApLFxuICAgICAgbWFwKChbb3B0aW9ucywgcnNdKSA9PiB0aGlzLmdldFByb3BlcnR5TGFiZWxzRm9yTGV2ZWwocnMsIG9wdGlvbnMuc2Vjb25kYXJ5UHJvcCEsIDEpKVxuICAgICk7XG4gICAgdGhpcy52ZXJ0aWNhbFByb3BlcnR5JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMucmVzdWx0U2V0JF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtvcHRpb25zXSkgPT4gISFvcHRpb25zLnZlcnRpY2FsUHJvcCksXG4gICAgICBtYXAoKFtvcHRpb25zLCByc10pID0+IHRoaXMuZ2V0UHJvcGVydHlMYWJlbHNGb3JMZXZlbChycywgb3B0aW9ucy52ZXJ0aWNhbFByb3AsIDEpKVxuICAgICk7XG4gICAgdGhpcy50b3RhbFByb3BlcnR5JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMucmVzdWx0U2V0JF0pLnBpcGUoXG4gICAgICBtYXAoKFtvcHRpb25zLCByc10pID0+IHRoaXMuZ2V0UHJvcGVydHlMYWJlbHNGb3JMZXZlbChycywgb3B0aW9ucy52ZXJ0aWNhbFByb3AsIDIpKVxuICAgICk7XG4gICAgdGhpcy5ncmFuZFRvdGFsUHJvcGVydHkkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zJCwgdGhpcy5yZXN1bHRTZXQkXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHJzXSkgPT4gdGhpcy5nZXRQcm9wZXJ0eUxhYmVsc0ZvckxldmVsKHJzLCBvcHRpb25zLnZlcnRpY2FsUHJvcCwgMykpXG4gICAgKTtcblxuICAgIHRoaXMubGluZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm9wdGlvbnMkLFxuICAgICAgdGhpcy5wcmltYXJ5UHJvcGVydHkkLnBpcGUoc3RhcnRXaXRoKFtdKSksXG4gICAgICB0aGlzLnNlY29uZGFyeVByb3BlcnR5JC5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKSxcbiAgICAgIHRoaXMudmVydGljYWxQcm9wZXJ0eSQucGlwZShzdGFydFdpdGgoW10pKSxcbiAgICAgIHRoaXMucmVzdWx0U2V0JFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtvcHRpb25zLCBwcmltYXJ5UHJvcHMsIHNlY29uZGFyeVByb3BzLCB2ZXJ0aWNhbFByb3BzLCByc10pID0+XG4gICAgICAgIHRoaXMuY3JlYXRlVmFsdWVNYXAodmVydGljYWxQcm9wcywgcHJpbWFyeVByb3BzLCBzZWNvbmRhcnlQcm9wcywgcnMsIG9wdGlvbnMsIDEpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMudG90YWxzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMucHJpbWFyeVByb3BlcnR5JCxcbiAgICAgIHRoaXMuc2Vjb25kYXJ5UHJvcGVydHkkLFxuICAgICAgdGhpcy50b3RhbFByb3BlcnR5JCxcbiAgICAgIHRoaXMucmVzdWx0U2V0JFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtvcHRpb25zLCBwcmltYXJ5UHJvcHMsIHNlY29uZGFyeVByb3BzLCB2ZXJ0aWNhbFByb3BzLCByc10pID0+XG4gICAgICAgIHRoaXMuY3JlYXRlVmFsdWVNYXAodmVydGljYWxQcm9wcywgcHJpbWFyeVByb3BzLCBzZWNvbmRhcnlQcm9wcywgcnMsIG9wdGlvbnMsIDIpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZ3JhbmRUb3RhbHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm9wdGlvbnMkLFxuICAgICAgdGhpcy5wcmltYXJ5UHJvcGVydHkkLFxuICAgICAgdGhpcy5ncmFuZFRvdGFsUHJvcGVydHkkLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHByaW1hcnlQcm9wcywgdmVydGljYWxQcm9wcywgcnNdKSA9PlxuICAgICAgICB0aGlzLmNyZWF0ZVZhbHVlTWFwKHZlcnRpY2FsUHJvcHMsIHByaW1hcnlQcm9wcywgdW5kZWZpbmVkLCBycywgb3B0aW9ucywgMylcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5jb2xvck1hcCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMub3B0aW9ucyQsXG4gICAgICB0aGlzLnJlc3VsdFNldCQsXG4gICAgICB0aGlzLnZlcnRpY2FsUHJvcGVydHkkLFxuICAgICAgdGhpcy5wcmltYXJ5UHJvcGVydHkkXG4gICAgXSkucGlwZShcbiAgICAgIGZpbHRlcigoW29wdGlvbnNdKSA9PiAhIW9wdGlvbnMuY29sb3JDb25maWcpLFxuICAgICAgbWFwKChbb3B0aW9ucywgcnMsIHZlcnRpY2FsLCBwcmltYXJ5XSkgPT4gdGhpcy5jcmVhdGVDb2xvck1hcCh2ZXJ0aWNhbCwgcHJpbWFyeSwgcnMsIG9wdGlvbnMpKVxuICAgICk7XG5cbiAgICB0aGlzLmF2YWlsYWJsZVByb3BlcnRpZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5jbGFzc2VzJCwgdGhpcy5yZXN1bHRTZXQkXSkucGlwZShcbiAgICAgIG1hcCgoW2NsYXNzZXMsIHJzXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVzZW50Q2xhc3Nlc0lkID0gT2JqZWN0LmtleXMocnMuaXRlbXMpO1xuICAgICAgICBjb25zdCBwcmVzZW50Q2xhc3NlcyA9IHByZXNlbnRDbGFzc2VzSWRcbiAgICAgICAgICAubWFwKChjbGFzc0lkKSA9PiBjbGFzc2VzLmZpbmQoKGNsKSA9PiBjbC5pZCA9PT0gY2xhc3NJZCkpXG4gICAgICAgICAgLmZpbHRlcigoY2wpID0+ICEhY2wpIGFzIENsYXNzW107XG4gICAgICAgIHJldHVybiBwcmVzZW50Q2xhc3Nlcy5tYXAoKGNsKSA9PiBjbC5hdHRyaWJ1dGVzKS5mbGF0KCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnZhbHVlUHJvcEZpZWxkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuYXZhaWxhYmxlUHJvcGVydGllcyQsIHRoaXMub3B0aW9ucyRdKS5waXBlKFxuICAgICAgbWFwKChbYXR0cmlidXRlcywgb3B0aW9uc10pID0+XG4gICAgICAgIGF0dHJpYnV0ZXMuZmluZCgoYXR0cikgPT4gYXR0ci50ZWNobmljYWxOYW1lID09PSBvcHRpb25zLnZhbHVlUHJvcCk/LmZpZWxkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoQXR0cmlidXRlVmFsdWUoaXRlbTogSXRlbSwgcHJvcD86IHN0cmluZywgY29tcGFyaXNvblZhbHVlPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbXBhcmlzb25WYWx1ZSAmJiBwcm9wID8gKGl0ZW0uYXR0cmlidXRlc1twcm9wXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkudmFsdWUgPT0gY29tcGFyaXNvblZhbHVlIDogdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVmFsdWVNYXAoXG4gICAgdmVydGljYWxQcm9wczogc3RyaW5nW10sXG4gICAgcHJpbWFyeVByb3BzOiBzdHJpbmdbXSxcbiAgICBzZWNvbmRhcnlQcm9wczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgcnM6IFJlc3VsdFNldCxcbiAgICBvcHRpb25zOiBBbmFseXRpY1dpZGdldE9wdGlvbnMsXG4gICAgbGV2ZWw/OiBudW1iZXJcbiAgKSB7XG4gICAgcmV0dXJuIHZlcnRpY2FsUHJvcHMubWFwKCh2ZXJ0aWNhbCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBhbnkgfTtcbiAgICAgIHByaW1hcnlQcm9wcy5mb3JFYWNoKChwcmltYXJ5KSA9PiB7XG4gICAgICAgIChzZWNvbmRhcnlQcm9wcyA/PyBbdW5kZWZpbmVkXSkuZm9yRWFjaCgoc2Vjb25kYXJ5KSA9PiB7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdJdGVtID0gKHJzLml0ZW1zW09iamVjdC5rZXlzKHJzLml0ZW1zKVswXV0gPz8gW10pLmZpbmQoXG4gICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgdGhpcy5tYXRjaEF0dHJpYnV0ZVZhbHVlKGl0ZW0sIG9wdGlvbnMucHJpbWFyeVByb3AsIHByaW1hcnkpICYmXG4gICAgICAgICAgICAgIHRoaXMubWF0Y2hBdHRyaWJ1dGVWYWx1ZShpdGVtLCBvcHRpb25zLnNlY29uZGFyeVByb3AsIHNlY29uZGFyeSkgJiZcbiAgICAgICAgICAgICAgdGhpcy5tYXRjaEF0dHJpYnV0ZVZhbHVlKGl0ZW0sIG9wdGlvbnMudmVydGljYWxQcm9wLCB2ZXJ0aWNhbCkgJiZcbiAgICAgICAgICAgICAgdGhpcy5tYXRjaEF0dHJpYnV0ZVZhbHVlKGl0ZW0sICdsZXZlbCcsIGxldmVsICsgJycpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoISFtYXRjaGluZ0l0ZW0pIHtcbiAgICAgICAgICAgIGlmICghIXNlY29uZGFyeSkge1xuICAgICAgICAgICAgICBpZiAoIXZhbHVlW3ByaW1hcnldKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVbcHJpbWFyeV0gPSB7fTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YWx1ZVtwcmltYXJ5XVtzZWNvbmRhcnldID0gKG1hdGNoaW5nSXRlbSEuYXR0cmlidXRlc1tvcHRpb25zLnZhbHVlUHJvcF0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLnZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFsdWVbcHJpbWFyeV0gPSAobWF0Y2hpbmdJdGVtIS5hdHRyaWJ1dGVzW29wdGlvbnMudmFsdWVQcm9wXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSk/LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IG5hbWU6IHZlcnRpY2FsLCB2YWx1ZSB9O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlMYWJlbHNGb3JMZXZlbChyczogUmVzdWx0U2V0LCBwcm9wZXJ0eTogc3RyaW5nLCBsZXZlbD86IG51bWJlcikge1xuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC52YWx1ZXMocnMuaXRlbXMpXG4gICAgICAubWFwKChpdGVtcykgPT5cbiAgICAgICAgaXRlbXNcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PlxuICAgICAgICAgICAgbGV2ZWwgJiYgJ2xldmVsJyBpbiBpdGVtLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgPyBbbGV2ZWwsICcnICsgbGV2ZWxdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgKGl0ZW0uYXR0cmlidXRlc1snbGV2ZWwnXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkudmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IHRydWVcbiAgICAgICAgICApXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT4gKGl0ZW0uYXR0cmlidXRlc1twcm9wZXJ0eV0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpPy52YWx1ZSArICcnKVxuICAgICAgKVxuICAgICAgLmZsYXQoKVxuICAgICAgLmZsYXQoKTtcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQodmFsdWVzKV07XG4gIH1cblxuICBjcmVhdGVDb2xvck1hcCh2ZXJ0aWNhbFByb3BzOiBzdHJpbmdbXSwgcHJpbWFyeVByb3BzOiBzdHJpbmdbXSwgcnM6IFJlc3VsdFNldCwgb3B0aW9uczogQW5hbHl0aWNXaWRnZXRPcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuY29sb3JDb25maWdcbiAgICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgIHZlcnRpY2FsUHJvcHMubWFwKCh2ZXJ0aWNhbCkgPT4gW1xuICAgICAgICAgICAgdmVydGljYWwsXG4gICAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgIHByaW1hcnlQcm9wcy5tYXAoKHByaW1hcnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0l0ZW0gPSAocnMuaXRlbXNbT2JqZWN0LmtleXMocnMuaXRlbXMpWzBdXSA/PyBbXSkuZmluZChcbiAgICAgICAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoQXR0cmlidXRlVmFsdWUoaXRlbSwgb3B0aW9ucy5wcmltYXJ5UHJvcCwgcHJpbWFyeSkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaEF0dHJpYnV0ZVZhbHVlKGl0ZW0sIG9wdGlvbnMudmVydGljYWxQcm9wLCB2ZXJ0aWNhbClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgIHByaW1hcnksXG4gICAgICAgICAgICAgICAgICBtYXRjaGluZ0l0ZW0gJiYgKG1hdGNoaW5nSXRlbS5hdHRyaWJ1dGVzW29wdGlvbnMudmFsdWVQcm9wXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkudmFsdWUgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBvcHRpb25zLmNvbG9yQ29uZmlnPy5jb2xvcnNbXG4gICAgICAgICAgICAgICAgICAgICAgICAoKG1hdGNoaW5nSXRlbS5hdHRyaWJ1dGVzW29wdGlvbnMuY29sb3JDb25maWchLnByb3BdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS52YWx1ZSBhcyBudW1iZXIpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgOiAnI0ZGRkZGRidcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0pXG4gICAgICAgIClcbiAgICAgIDoge307XG4gIH1cblxuICB0b2dnbGVDb2xvckNvbmZpZygkZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoJGV2ZW50ICE9PSAhIXRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWcpIHtcbiAgICAgIGlmICghdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZykge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnID0geyBwcm9wOiAnJywgY29sb3JzOiBbXSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZnlDb2xvclNjaGVtZSgkZXZlbnQ/OiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgJGV2ZW50ICYmIGluZGV4ICE9PSB1bmRlZmluZWRcbiAgICAgID8gKHRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWchLmNvbG9yc1tpbmRleF0gPSAkZXZlbnQpXG4gICAgICA6IHRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWchLmNvbG9ycy5wdXNoKCcjRkZGRkZGJyk7XG4gIH1cblxuICByZW1vdmVDb2xvcihpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZyEuY29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnIS5jb2xvcnMuc3BsaWNlKFxuICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgMCxcbiAgICAgIHRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWchLmNvbG9ycy5zcGxpY2UoZXZlbnQucHJldmlvdXNJbmRleCwgMSlbMF1cbiAgICApO1xuICB9XG5cbiAgZW1pdE1hbmlmZXN0KCkge1xuICAgIHRoaXMubWFuaWZlc3RNb2RpZmllZC5lbWl0KHtcbiAgICAgIHdpZGdldEluZGV4OiB0aGlzLndpZGdldEluZGV4LFxuICAgICAgbWFuaWZlc3Q6IHsgLi4udGhpcy5tYW5pZmVzdCwgb3B0aW9uczogdGhpcy5vcHRpb25zQ29weSB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwcnktd2lkZ2V0LWFuYWx5dGljLWNzcz48L3ByeS13aWRnZXQtYW5hbHl0aWMtY3NzPlxuPGRpdiBjbGFzcz1cIm8td2lkZ2V0IG8td2lkZ2V0X19hbmFseXRpY1wiPlxuICBAaWYgKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpIHtcbiAgICA8cHJ5LXdpZGdldC1oZWFkZXJcbiAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICBbbWFuaWZlc3RdPVwibWFuaWZlc3RcIlxuICAgICAgKG1hbmlmZXN0TW9kaWZpZWQpPVwibWFuaWZlc3RNb2RpZmllZC5lbWl0KCRldmVudClcIlxuICAgICAgI2hlYWRlclxuICAgICAgW2hlYWRlck9wdGlvbnNdPVwiKGRpc3BsYXlIZWFkZXIkIHwgYXN5bmMpID8/IHt9XCJcbiAgICAgIFtkYXRhc291cmNlSWRzXT1cIihkYXRhc291cmNlSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgPlxuICAgICAgPHByeS1zZXR0aW5nc1xuICAgICAgICAoc2F2ZVRyaWdnZXJlZCk9XCJlbWl0TWFuaWZlc3QoKVwiXG4gICAgICAgIChjaGFuZ2VUaXRsZSk9XCJjaGFuZ2VXaWRnZXRUaXRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2hlYWRlclByZXNlbnRdPVwiZGlzcGxheUhlYWRlciQgfCBhc3luY1wiXG4gICAgICAgIFt3aWRnZXRJbmRleF09XCJ3aWRnZXRJbmRleFwiXG4gICAgICAgIFtoZWFkZXJdPVwiaGVhZGVyXCJcbiAgICAgICAgW29wZW4kXT1cIm9wZW4kXCJcbiAgICAgICAgY2xhc3M9XCJvLXNldHRpbmdzXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8tc2V0dGluZ3NfX2ZpZWxkc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmltYXJ5UHJvcFwiPnt7ICdAcHJ5LndpZGdldC5hbmFseXRpYy5wcmltYXJ5UHJvcCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZSgkZXZlbnQsICdwcmltYXJ5UHJvcCcpXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cImF2YWlsYWJsZVByb3BlcnRpZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5wcmltYXJ5UHJvcFwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgaWQ9XCJwcmltYXJ5UHJvcFwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJzZWNvbmRhcnlQcm9wXCI+e3sgJ0Bwcnkud2lkZ2V0LmFuYWx5dGljLnNlY29uZGFyeVByb3AnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50LCAnc2Vjb25kYXJ5UHJvcCcpXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cImF2YWlsYWJsZVByb3BlcnRpZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5zZWNvbmRhcnlQcm9wXCJcbiAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZT1cIm5hbWVcIlxuICAgICAgICAgICAgICBpZD1cInNlY29uZGFyeVByb3BcIlxuICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidmVydGljYWxQcm9wXCI+e3sgJ0Bwcnkud2lkZ2V0LmFuYWx5dGljLnZlcnRpY2FsUHJvcCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZSgkZXZlbnQsICd2ZXJ0aWNhbFByb3AnKVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkudmVydGljYWxQcm9wXCJcbiAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZT1cIm5hbWVcIlxuICAgICAgICAgICAgICBpZD1cInZlcnRpY2FsUHJvcFwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ2YWx1ZVByb3BcIj57eyAnQHByeS53aWRnZXQuYW5hbHl0aWMudmFsdWVQcm9wJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKCRldmVudCwgJ3ZhbHVlUHJvcCcpXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cImF2YWlsYWJsZVByb3BlcnRpZXMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS52YWx1ZVByb3BcIlxuICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgYmluZFZhbHVlPVwibmFtZVwiXG4gICAgICAgICAgICAgIGlkPVwidmFsdWVQcm9wXCJcbiAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPHByeS1jaGVja2JveCAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDb2xvckNvbmZpZygkZXZlbnQpXCIgW25nTW9kZWxdPVwiISFvcHRpb25zQ29weS5jb2xvckNvbmZpZ1wiPlxuICAgICAgICAgICAgICB7eyAnQHByeS53aWRnZXQuYW5hbHl0aWMuY29sb3JDb25maWcnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wcnktY2hlY2tib3g+XG4gICAgICAgICAgICBAaWYgKG9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY29sb3JQcm9wXCI+e3sgJ0Bwcnkud2lkZ2V0LmFuYWx5dGljLmNvbG9yUHJvcCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3JDb25maWcoJGV2ZW50LCAncHJvcCcpXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnLnByb3BcIlxuICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiY29sb3JQcm9wXCJcbiAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJjb2xvclByb3BcIj57eyAnQHByeS53aWRnZXQuYW5hbHl0aWMuY29sb3JzJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby13aWRnZXRfX2FuYWx5dGljX19jb2xvci1waWNrZXItY29udGFpbmVyIHUtZGlzcGxheS1mbGV4IC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChjb2xvciBvZiBvcHRpb25zQ29weS5jb2xvckNvbmZpZy5jb2xvcnM7IHRyYWNrIGNvbG9yOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX2FuYWx5dGljX19jb2xvci1waWNrZXJcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgICAgIDxwcnktY29sb3ItcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlDb2xvclNjaGVtZSgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktY29sb3ItcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZUNvbG9yKGkpXCIgY2xhc3M9XCJvLXdpZGdldF9fYW5hbHl0aWNfX2NvbG9yLXBpY2tlci1yZW1vdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjE1XCIgW3dpZHRoXT1cIjE1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpjZGtEcmFnUHJldmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktY29sb3ItcGlja2VyIFtuZ01vZGVsXT1cImNvbG9yXCI+PC9wcnktY29sb3ItcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seSBvLXdpZGdldF9fYW5hbHl0aWNfX2NvbG9yLXBpY2tlci1hZGRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kaWZ5Q29sb3JTY2hlbWUoKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkXCIgW2hlaWdodF09XCIyMFwiIFt3aWR0aF09XCIyMFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wcnktc2V0dGluZ3M+XG4gICAgPC9wcnktd2lkZ2V0LWhlYWRlcj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiby13aWRnZXRfX2FuYWx5dGljX190YWJsZVwiPlxuICAgIDx0YWJsZSBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodCQgfCBhc3luY1wiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHIgY2xhc3M9XCJwcmltYXJ5LWhlYWRlclwiPlxuICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgIEBmb3IgKHByaW1hcnkgb2YgcHJpbWFyeVByb3BlcnR5JCB8IGFzeW5jOyB0cmFjayBwcmltYXJ5KSB7XG4gICAgICAgICAgICA8dGggW2NvbFNwYW5dPVwiKHNlY29uZGFyeVByb3BlcnR5JCB8IGFzeW5jKT8ubGVuZ3RoID8/IDFcIj5cbiAgICAgICAgICAgICAge3sgcHJpbWFyeSB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgICAgIEBpZiAob3B0aW9uc0NvcHkuc2Vjb25kYXJ5UHJvcCkge1xuICAgICAgICAgIDx0ciBjbGFzcz1cInNlY29uZGFyeS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgQGZvciAocHJpbWFyeSBvZiBwcmltYXJ5UHJvcGVydHkkIHwgYXN5bmM7IHRyYWNrIHByaW1hcnkpIHtcbiAgICAgICAgICAgICAgQGZvciAoc2Vjb25kYXJ5IG9mIHNlY29uZGFyeVByb3BlcnR5JCB8IGFzeW5jOyB0cmFjayBzZWNvbmRhcnkpIHtcbiAgICAgICAgICAgICAgICA8dGg+e3sgc2Vjb25kYXJ5IH19PC90aD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIH1cbiAgICAgIDwvdGhlYWQ+XG4gICAgICBAaWYgKHRoaXMudmFsdWVQcm9wRmllbGQkIHwgYXN5bmM7IGFzIGZpZWxkKSB7XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICBAZm9yIChsaW5lIG9mIGxpbmVzJCB8IGFzeW5jOyB0cmFjayBsaW5lLm5hbWUpIHtcbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPnt7IGxpbmUubmFtZSB9fTwvdGg+XG4gICAgICAgICAgICAgIEBmb3IgKHByaW1hcnkgb2YgcHJpbWFyeVByb3BlcnR5JCB8IGFzeW5jOyB0cmFjayBwcmltYXJ5KSB7XG4gICAgICAgICAgICAgICAgQGlmIChvcHRpb25zQ29weS5zZWNvbmRhcnlQcm9wKSB7XG4gICAgICAgICAgICAgICAgICBAZm9yIChzZWNvbmRhcnkgb2Ygc2Vjb25kYXJ5UHJvcGVydHkkIHwgYXN5bmM7IHRyYWNrIHNlY29uZGFyeSkge1xuICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8geyAnYmFja2dyb3VuZC1jb2xvcic6IChjb2xvck1hcCQgfCBhc3luYyk/LltsaW5lLm5hbWVdPy5bcHJpbWFyeV0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudmFsdWVbcHJpbWFyeV1bc2Vjb25kYXJ5XSB8IGRhdGFGb3JtYXQ6IGZpZWxkIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0NvcHkuY29sb3JDb25maWcgPyB7ICdiYWNrZ3JvdW5kLWNvbG9yJzogKGNvbG9yTWFwJCB8IGFzeW5jKT8uW2xpbmUubmFtZV0/LltwcmltYXJ5XSB9IDoge31cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgbGluZS52YWx1ZVtwcmltYXJ5XSB8IGRhdGFGb3JtYXQ6IGZpZWxkIH19XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDx0Zm9vdD5cbiAgICAgICAgICBAZm9yIChsaW5lIG9mIHRvdGFscyQgfCBhc3luYzsgdHJhY2sgbGluZS5uYW1lKSB7XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJwYXJ0aWFsLXRvdGFsXCI+XG4gICAgICAgICAgICAgIDx0aD57eyBsaW5lLm5hbWUgfX08L3RoPlxuICAgICAgICAgICAgICBAZm9yIChwcmltYXJ5IG9mIHByaW1hcnlQcm9wZXJ0eSQgfCBhc3luYzsgdHJhY2sgcHJpbWFyeSkge1xuICAgICAgICAgICAgICAgIEBmb3IgKHNlY29uZGFyeSBvZiBzZWNvbmRhcnlQcm9wZXJ0eSQgfCBhc3luYzsgdHJhY2sgc2Vjb25kYXJ5KSB7XG4gICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudmFsdWVbcHJpbWFyeV1bc2Vjb25kYXJ5XSB8IGRhdGFGb3JtYXQ6IGZpZWxkIH19XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAobGluZSBvZiBncmFuZFRvdGFscyQgfCBhc3luYzsgdHJhY2sgbGluZS5uYW1lKSB7XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJncmFuZC10b3RhbFwiPlxuICAgICAgICAgICAgICA8dGg+e3sgbGluZS5uYW1lIH19PC90aD5cbiAgICAgICAgICAgICAgQGZvciAocHJpbWFyeSBvZiBwcmltYXJ5UHJvcGVydHkkIHwgYXN5bmM7IHRyYWNrIHByaW1hcnkpIHtcbiAgICAgICAgICAgICAgICA8dGQgW2NvbFNwYW5dPVwiKHNlY29uZGFyeVByb3BlcnR5JCB8IGFzeW5jKT8ubGVuZ3RoID8/IDFcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGxpbmUudmFsdWVbcHJpbWFyeV0gfCBkYXRhRm9ybWF0OiBmaWVsZCB9fVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rmb290PlxuICAgICAgfVxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWFuYWx5dGljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3dpZGdldHMvd2lkZ2V0LWFuYWx5dGljL2NvbXBvbmVudC93aWRnZXQtYW5hbHl0aWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvd2lkZ2V0cy93aWRnZXQtYW5hbHl0aWMvY29tcG9uZW50L3dpZGdldC1hbmFseXRpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFLTCxjQUFjLEVBQ2QsbUJBQW1CLEVBSW5CLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBT3hDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFrQjlELE1BQU0sQ0FBQyxNQUFjLEVBQUUsSUFBb0U7UUFDekYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQXlCLEVBQUUsSUFBdUI7UUFDbEUsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVksQ0FBQyxJQUFJLEdBQUcsTUFBZ0IsQ0FBQztnQkFDdEQsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFdB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QUFNLElBQUksS0FBSyxLQUFLLFNBQVM7WUFDM0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksQ0FBQyxLQUE0QjtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUN6QyxLQUFLLENBQUMsWUFBWSxFQUNsQixDQUFDLEVBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDMUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F4UFUsdUJBQXVCO2tHQUF2Qix1QkFBdUIsa0ZDdEJwQyx1eVFBd01BOzsyRkRsTGEsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQW5hbHl0aWNXaWRnZXRPcHRpb25zLFxuICBBdHRyaWJ1dGUsXG4gIEF0dHJpYnV0ZVNpbXBsZVZhbHVlLFxuICBDbGFzcyxcbiAgQ2xhc3NTZWxlY3RvcnMsXG4gIERhdGFXaWRnZXRDb21wb25lbnQsXG4gIEZpZWxkLFxuICBJdGVtLFxuICBSZXN1bHRTZXQsXG4gIFdJREdFVF9IRUFERVJfSEVJR0hUXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktd2lkZ2V0LWFuYWx5dGljJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1hbmFseXRpYy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0QW5hbHl0aWNDb21wb25lbnQgZXh0ZW5kcyBEYXRhV2lkZ2V0Q29tcG9uZW50IHtcbiAgb3B0aW9uc0NvcHk6IEFuYWx5dGljV2lkZ2V0T3B0aW9ucyA9IHsgcHJpbWFyeVByb3A6ICcnLCBzZWNvbmRhcnlQcm9wOiAnJywgdmVydGljYWxQcm9wOiAnJywgdmFsdWVQcm9wOiAnJyB9O1xuICBvcHRpb25zJDogT2JzZXJ2YWJsZTxBbmFseXRpY1dpZGdldE9wdGlvbnM+O1xuXG4gIHByaW1hcnlQcm9wZXJ0eSQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBzZWNvbmRhcnlQcm9wZXJ0eSQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICB2ZXJ0aWNhbFByb3BlcnR5JDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIHRvdGFsUHJvcGVydHkkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgZ3JhbmRUb3RhbFByb3BlcnR5JDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIGxpbmVzJDogT2JzZXJ2YWJsZTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IGFueSB9IH1bXT47XG4gIHRvdGFscyQ6IE9ic2VydmFibGU8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSB9W10+O1xuICBncmFuZFRvdGFscyQ6IE9ic2VydmFibGU8eyBuYW1lOiBhbnk7IHZhbHVlOiB7IFtwOiBzdHJpbmddOiBhbnkgfSB9W10+O1xuICBjb2xvck1hcCQ6IE9ic2VydmFibGU8eyBbdmVydGljYWw6IHN0cmluZ106IHsgW3ByaW1hcnk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+O1xuICBoZWlnaHQkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIGNsYXNzZXMkOiBPYnNlcnZhYmxlPENsYXNzW10+O1xuICBhdmFpbGFibGVQcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxBdHRyaWJ1dGVbXT47XG4gIHZhbHVlUHJvcEZpZWxkJDogT2JzZXJ2YWJsZTxGaWVsZCB8IHVuZGVmaW5lZD47XG5cbiAgY2hhbmdlKCRldmVudDogc3RyaW5nLCBwcm9wOiAncHJpbWFyeVByb3AnIHwgJ3NlY29uZGFyeVByb3AnIHwgJ3ZhbHVlUHJvcCcgfCAndmVydGljYWxQcm9wJykge1xuICAgIHRoaXMub3B0aW9uc0NvcHlbcHJvcF0gPSAkZXZlbnQ7XG4gIH1cblxuICBjaGFuZ2VDb2xvckNvbmZpZygkZXZlbnQ6IHN0cmluZyB8IHN0cmluZ1tdLCBwcm9wOiAncHJvcCcgfCAnY29sb3JzJykge1xuICAgIHN3aXRjaCAocHJvcCkge1xuICAgICAgY2FzZSAncHJvcCc6IHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZyEucHJvcCA9ICRldmVudCBhcyBzdHJpbmc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sb3JzJzoge1xuICAgICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnIS5jb2xvcnMgPSAkZXZlbnQgYXMgc3RyaW5nW107XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBTdG9yZTxhbnk+LCBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKHN0b3JlLCBlbCk7XG4gICAgdGhpcy5vcHRpb25zJCA9IHRoaXMubWFuaWZlc3QkLnBpcGUobWFwKChtYW5pZmVzdCkgPT4gKG1hbmlmZXN0Lm9wdGlvbnMgPz8ge30pIGFzIEFuYWx5dGljV2lkZ2V0T3B0aW9ucykpO1xuICAgIHRoaXMuY2xhc3NlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChDbGFzc1NlbGVjdG9ycy5jbGFzc2VzKTtcbiAgICB0aGlzLmhlaWdodCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZGdldFNpemUkLCB0aGlzLmRpc3BsYXlIZWFkZXIkXSkucGlwZShcbiAgICAgIG1hcCgoW3NpemUsIGhlYWRlcl0pID0+IHNpemUuaGVpZ2h0IC0gKGhlYWRlciA/IFdJREdFVF9IRUFERVJfSEVJR0hULnZhbHVlIDogMCkpXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5vcHRpb25zJC5zdWJzY3JpYmUoKG9wdGlvbnMpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMucHJpbWFyeVByb3BlcnR5JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMucmVzdWx0U2V0JF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtvcHRpb25zXSkgPT4gISFvcHRpb25zLnByaW1hcnlQcm9wKSxcbiAgICAgIG1hcCgoW29wdGlvbnMsIHJzXSkgPT4gdGhpcy5nZXRQcm9wZXJ0eUxhYmVsc0ZvckxldmVsKHJzLCBvcHRpb25zLnByaW1hcnlQcm9wKSlcbiAgICApO1xuICAgIHRoaXMuc2Vjb25kYXJ5UHJvcGVydHkkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zJCwgdGhpcy5yZXN1bHRTZXQkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW29wdGlvbnNdKSA9PiAhIW9wdGlvbnMuc2Vjb25kYXJ5UHJvcCksXG4gICAgICBtYXAoKFtvcHRpb25zLCByc10pID0+IHRoaXMuZ2V0UHJvcGVydHlMYWJlbHNGb3JMZXZlbChycywgb3B0aW9ucy5zZWNvbmRhcnlQcm9wISwgMSkpXG4gICAgKTtcbiAgICB0aGlzLnZlcnRpY2FsUHJvcGVydHkkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zJCwgdGhpcy5yZXN1bHRTZXQkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW29wdGlvbnNdKSA9PiAhIW9wdGlvbnMudmVydGljYWxQcm9wKSxcbiAgICAgIG1hcCgoW29wdGlvbnMsIHJzXSkgPT4gdGhpcy5nZXRQcm9wZXJ0eUxhYmVsc0ZvckxldmVsKHJzLCBvcHRpb25zLnZlcnRpY2FsUHJvcCwgMSkpXG4gICAgKTtcbiAgICB0aGlzLnRvdGFsUHJvcGVydHkkID0gY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zJCwgdGhpcy5yZXN1bHRTZXQkXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHJzXSkgPT4gdGhpcy5nZXRQcm9wZXJ0eUxhYmVsc0ZvckxldmVsKHJzLCBvcHRpb25zLnZlcnRpY2FsUHJvcCwgMikpXG4gICAgKTtcbiAgICB0aGlzLmdyYW5kVG90YWxQcm9wZXJ0eSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9wdGlvbnMkLCB0aGlzLnJlc3VsdFNldCRdKS5waXBlKFxuICAgICAgbWFwKChbb3B0aW9ucywgcnNdKSA9PiB0aGlzLmdldFByb3BlcnR5TGFiZWxzRm9yTGV2ZWwocnMsIG9wdGlvbnMudmVydGljYWxQcm9wLCAzKSlcbiAgICApO1xuXG4gICAgdGhpcy5saW5lcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMub3B0aW9ucyQsXG4gICAgICB0aGlzLnByaW1hcnlQcm9wZXJ0eSQucGlwZShzdGFydFdpdGgoW10pKSxcbiAgICAgIHRoaXMuc2Vjb25kYXJ5UHJvcGVydHkkLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpLFxuICAgICAgdGhpcy52ZXJ0aWNhbFByb3BlcnR5JC5waXBlKHN0YXJ0V2l0aChbXSkpLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHByaW1hcnlQcm9wcywgc2Vjb25kYXJ5UHJvcHMsIHZlcnRpY2FsUHJvcHMsIHJzXSkgPT5cbiAgICAgICAgdGhpcy5jcmVhdGVWYWx1ZU1hcCh2ZXJ0aWNhbFByb3BzLCBwcmltYXJ5UHJvcHMsIHNlY29uZGFyeVByb3BzLCBycywgb3B0aW9ucywgMSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy50b3RhbHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm9wdGlvbnMkLFxuICAgICAgdGhpcy5wcmltYXJ5UHJvcGVydHkkLFxuICAgICAgdGhpcy5zZWNvbmRhcnlQcm9wZXJ0eSQsXG4gICAgICB0aGlzLnRvdGFsUHJvcGVydHkkLFxuICAgICAgdGhpcy5yZXN1bHRTZXQkXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW29wdGlvbnMsIHByaW1hcnlQcm9wcywgc2Vjb25kYXJ5UHJvcHMsIHZlcnRpY2FsUHJvcHMsIHJzXSkgPT5cbiAgICAgICAgdGhpcy5jcmVhdGVWYWx1ZU1hcCh2ZXJ0aWNhbFByb3BzLCBwcmltYXJ5UHJvcHMsIHNlY29uZGFyeVByb3BzLCBycywgb3B0aW9ucywgMilcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5ncmFuZFRvdGFscyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMub3B0aW9ucyQsXG4gICAgICB0aGlzLnByaW1hcnlQcm9wZXJ0eSQsXG4gICAgICB0aGlzLmdyYW5kVG90YWxQcm9wZXJ0eSQsXG4gICAgICB0aGlzLnJlc3VsdFNldCRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbb3B0aW9ucywgcHJpbWFyeVByb3BzLCB2ZXJ0aWNhbFByb3BzLCByc10pID0+XG4gICAgICAgIHRoaXMuY3JlYXRlVmFsdWVNYXAodmVydGljYWxQcm9wcywgcHJpbWFyeVByb3BzLCB1bmRlZmluZWQsIHJzLCBvcHRpb25zLCAzKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLmNvbG9yTWFwJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5vcHRpb25zJCxcbiAgICAgIHRoaXMucmVzdWx0U2V0JCxcbiAgICAgIHRoaXMudmVydGljYWxQcm9wZXJ0eSQsXG4gICAgICB0aGlzLnByaW1hcnlQcm9wZXJ0eSRcbiAgICBdKS5waXBlKFxuICAgICAgZmlsdGVyKChbb3B0aW9uc10pID0+ICEhb3B0aW9ucy5jb2xvckNvbmZpZyksXG4gICAgICBtYXAoKFtvcHRpb25zLCBycywgdmVydGljYWwsIHByaW1hcnldKSA9PiB0aGlzLmNyZWF0ZUNvbG9yTWFwKHZlcnRpY2FsLCBwcmltYXJ5LCBycywgb3B0aW9ucykpXG4gICAgKTtcblxuICAgIHRoaXMuYXZhaWxhYmxlUHJvcGVydGllcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNsYXNzZXMkLCB0aGlzLnJlc3VsdFNldCRdKS5waXBlKFxuICAgICAgbWFwKChbY2xhc3NlcywgcnNdKSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXNlbnRDbGFzc2VzSWQgPSBPYmplY3Qua2V5cyhycy5pdGVtcyk7XG4gICAgICAgIGNvbnN0IHByZXNlbnRDbGFzc2VzID0gcHJlc2VudENsYXNzZXNJZFxuICAgICAgICAgIC5tYXAoKGNsYXNzSWQpID0+IGNsYXNzZXMuZmluZCgoY2wpID0+IGNsLmlkID09PSBjbGFzc0lkKSlcbiAgICAgICAgICAuZmlsdGVyKChjbCkgPT4gISFjbCkgYXMgQ2xhc3NbXTtcbiAgICAgICAgcmV0dXJuIHByZXNlbnRDbGFzc2VzLm1hcCgoY2wpID0+IGNsLmF0dHJpYnV0ZXMpLmZsYXQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudmFsdWVQcm9wRmllbGQkID0gY29tYmluZUxhdGVzdChbdGhpcy5hdmFpbGFibGVQcm9wZXJ0aWVzJCwgdGhpcy5vcHRpb25zJF0pLnBpcGUoXG4gICAgICBtYXAoKFthdHRyaWJ1dGVzLCBvcHRpb25zXSkgPT4gYXR0cmlidXRlcy5maW5kKChhdHRyKSA9PiBhdHRyLnRlY2huaWNhbE5hbWUgPT09IG9wdGlvbnMudmFsdWVQcm9wKT8uZmllbGQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hBdHRyaWJ1dGVWYWx1ZShpdGVtOiBJdGVtLCBwcm9wPzogc3RyaW5nLCBjb21wYXJpc29uVmFsdWU/OiBzdHJpbmcpIHtcbiAgICBpZiAocHJvcCA9PT0gJ2xldmVsJyAmJiAhKCdsZXZlbCcgaW4gaXRlbS5hdHRyaWJ1dGVzKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmlzb25WYWx1ZSA9PT0gJzEnO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGFyaXNvblZhbHVlICYmIHByb3AgPyAoaXRlbS5hdHRyaWJ1dGVzW3Byb3BdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKS52YWx1ZSA9PSBjb21wYXJpc29uVmFsdWUgOiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVWYWx1ZU1hcChcbiAgICB2ZXJ0aWNhbFByb3BzOiBzdHJpbmdbXSxcbiAgICBwcmltYXJ5UHJvcHM6IHN0cmluZ1tdLFxuICAgIHNlY29uZGFyeVByb3BzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICByczogUmVzdWx0U2V0LFxuICAgIG9wdGlvbnM6IEFuYWx5dGljV2lkZ2V0T3B0aW9ucyxcbiAgICBsZXZlbD86IG51bWJlclxuICApIHtcbiAgICByZXR1cm4gdmVydGljYWxQcm9wcy5tYXAoKHZlcnRpY2FsKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IGFueSB9O1xuICAgICAgcHJpbWFyeVByb3BzLmZvckVhY2goKHByaW1hcnkpID0+IHtcbiAgICAgICAgKHNlY29uZGFyeVByb3BzID8/IFt1bmRlZmluZWRdKS5mb3JFYWNoKChzZWNvbmRhcnkpID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ0l0ZW0gPSAocnMuaXRlbXNbT2JqZWN0LmtleXMocnMuaXRlbXMpWzBdXSA/PyBbXSkuZmluZChcbiAgICAgICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgICAgICB0aGlzLm1hdGNoQXR0cmlidXRlVmFsdWUoaXRlbSwgb3B0aW9ucy5wcmltYXJ5UHJvcCwgcHJpbWFyeSkgJiZcbiAgICAgICAgICAgICAgdGhpcy5tYXRjaEF0dHJpYnV0ZVZhbHVlKGl0ZW0sIG9wdGlvbnMuc2Vjb25kYXJ5UHJvcCwgc2Vjb25kYXJ5KSAmJlxuICAgICAgICAgICAgICB0aGlzLm1hdGNoQXR0cmlidXRlVmFsdWUoaXRlbSwgb3B0aW9ucy52ZXJ0aWNhbFByb3AsIHZlcnRpY2FsKSAmJlxuICAgICAgICAgICAgICB0aGlzLm1hdGNoQXR0cmlidXRlVmFsdWUoaXRlbSwgJ2xldmVsJywgbGV2ZWwgKyAnJylcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghIW1hdGNoaW5nSXRlbSkge1xuICAgICAgICAgICAgaWYgKCEhc2Vjb25kYXJ5KSB7XG4gICAgICAgICAgICAgIGlmICghdmFsdWVbcHJpbWFyeV0pIHtcbiAgICAgICAgICAgICAgICB2YWx1ZVtwcmltYXJ5XSA9IHt9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhbHVlW3ByaW1hcnldW3NlY29uZGFyeV0gPSAobWF0Y2hpbmdJdGVtIS5hdHRyaWJ1dGVzW29wdGlvbnMudmFsdWVQcm9wXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkudmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YWx1ZVtwcmltYXJ5XSA9IChtYXRjaGluZ0l0ZW0hLmF0dHJpYnV0ZXNbb3B0aW9ucy52YWx1ZVByb3BdIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKT8udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgbmFtZTogdmVydGljYWwsIHZhbHVlIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5TGFiZWxzRm9yTGV2ZWwocnM6IFJlc3VsdFNldCwgcHJvcGVydHk6IHN0cmluZywgbGV2ZWw/OiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKHJzLml0ZW1zKVxuICAgICAgLm1hcCgoaXRlbXMpID0+XG4gICAgICAgIGl0ZW1zXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgICAgIGxldmVsICYmICdsZXZlbCcgaW4gaXRlbS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgID8gW2xldmVsLCAnJyArIGxldmVsXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgIChpdGVtLmF0dHJpYnV0ZXNbJ2xldmVsJ10gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLnZhbHVlIGFzIHN0cmluZyB8IG51bWJlclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBsZXZlbCA9PT0gdW5kZWZpbmVkIHx8IGxldmVsID09PSAxXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IChpdGVtLmF0dHJpYnV0ZXNbcHJvcGVydHldIGFzIEF0dHJpYnV0ZVNpbXBsZVZhbHVlKT8udmFsdWUgKyAnJylcbiAgICAgIClcbiAgICAgIC5mbGF0KClcbiAgICAgIC5mbGF0KCk7XG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHZhbHVlcyldO1xuICB9XG5cbiAgY3JlYXRlQ29sb3JNYXAodmVydGljYWxQcm9wczogc3RyaW5nW10sIHByaW1hcnlQcm9wczogc3RyaW5nW10sIHJzOiBSZXN1bHRTZXQsIG9wdGlvbnM6IEFuYWx5dGljV2lkZ2V0T3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zLmNvbG9yQ29uZmlnXG4gICAgICA/IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICB2ZXJ0aWNhbFByb3BzLm1hcCgodmVydGljYWwpID0+IFtcbiAgICAgICAgICAgIHZlcnRpY2FsLFxuICAgICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICBwcmltYXJ5UHJvcHMubWFwKChwcmltYXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdJdGVtID0gKHJzLml0ZW1zW09iamVjdC5rZXlzKHJzLml0ZW1zKVswXV0gPz8gW10pLmZpbmQoXG4gICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaEF0dHJpYnV0ZVZhbHVlKGl0ZW0sIG9wdGlvbnMucHJpbWFyeVByb3AsIHByaW1hcnkpICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hBdHRyaWJ1dGVWYWx1ZShpdGVtLCBvcHRpb25zLnZlcnRpY2FsUHJvcCwgdmVydGljYWwpXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5LFxuICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdJdGVtICYmIChtYXRjaGluZ0l0ZW0uYXR0cmlidXRlc1tvcHRpb25zLnZhbHVlUHJvcF0gYXMgQXR0cmlidXRlU2ltcGxlVmFsdWUpLnZhbHVlICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gb3B0aW9ucy5jb2xvckNvbmZpZz8uY29sb3JzW1xuICAgICAgICAgICAgICAgICAgICAgICAgKChtYXRjaGluZ0l0ZW0uYXR0cmlidXRlc1tvcHRpb25zLmNvbG9yQ29uZmlnIS5wcm9wXSBhcyBBdHRyaWJ1dGVTaW1wbGVWYWx1ZSkudmFsdWUgYXMgbnVtYmVyKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIDogJyNGRkZGRkYnXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICApXG4gICAgICA6IHt9O1xuICB9XG5cbiAgdG9nZ2xlQ29sb3JDb25maWcoJGV2ZW50OiBib29sZWFuKSB7XG4gICAgaWYgKCRldmVudCAhPT0gISF0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnKSB7XG4gICAgICBpZiAoIXRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWcpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZyA9IHsgcHJvcDogJycsIGNvbG9yczogW10gfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbW9kaWZ5Q29sb3JTY2hlbWUoJGV2ZW50Pzogc3RyaW5nLCBpbmRleD86IG51bWJlcikge1xuICAgICRldmVudCAmJiBpbmRleCAhPT0gdW5kZWZpbmVkXG4gICAgICA/ICh0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnIS5jb2xvcnNbaW5kZXhdID0gJGV2ZW50KVxuICAgICAgOiB0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnIS5jb2xvcnMucHVzaCgnI0ZGRkZGRicpO1xuICB9XG5cbiAgcmVtb3ZlQ29sb3IoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMub3B0aW9uc0NvcHkuY29sb3JDb25maWchLmNvbG9ycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XG4gICAgdGhpcy5vcHRpb25zQ29weS5jb2xvckNvbmZpZyEuY29sb3JzLnNwbGljZShcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgIDAsXG4gICAgICB0aGlzLm9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnIS5jb2xvcnMuc3BsaWNlKGV2ZW50LnByZXZpb3VzSW5kZXgsIDEpWzBdXG4gICAgKTtcbiAgfVxuXG4gIGVtaXRNYW5pZmVzdCgpIHtcbiAgICB0aGlzLm1hbmlmZXN0TW9kaWZpZWQuZW1pdCh7XG4gICAgICB3aWRnZXRJbmRleDogdGhpcy53aWRnZXRJbmRleCxcbiAgICAgIG1hbmlmZXN0OiB7IC4uLnRoaXMubWFuaWZlc3QsIG9wdGlvbnM6IHRoaXMub3B0aW9uc0NvcHkgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8cHJ5LXdpZGdldC1hbmFseXRpYy1jc3M+PC9wcnktd2lkZ2V0LWFuYWx5dGljLWNzcz5cbjxkaXYgY2xhc3M9XCJvLXdpZGdldCBvLXdpZGdldF9fYW5hbHl0aWNcIj5cbiAgQGlmIChkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSB7XG4gICAgPHByeS13aWRnZXQtaGVhZGVyXG4gICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgW21hbmlmZXN0XT1cIm1hbmlmZXN0XCJcbiAgICAgIChtYW5pZmVzdE1vZGlmaWVkKT1cIm1hbmlmZXN0TW9kaWZpZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAgICNoZWFkZXJcbiAgICAgIFtoZWFkZXJPcHRpb25zXT1cIihkaXNwbGF5SGVhZGVyJCB8IGFzeW5jKSA/PyB7fVwiXG4gICAgICBbZGF0YXNvdXJjZUlkc109XCIoZGF0YXNvdXJjZUlkcyQgfCBhc3luYykgPz8gW11cIlxuICAgID5cbiAgICAgIDxwcnktc2V0dGluZ3NcbiAgICAgICAgKHNhdmVUcmlnZ2VyZWQpPVwiZW1pdE1hbmlmZXN0KClcIlxuICAgICAgICAoY2hhbmdlVGl0bGUpPVwiY2hhbmdlV2lkZ2V0VGl0bGUoJGV2ZW50KVwiXG4gICAgICAgIFtoZWFkZXJQcmVzZW50XT1cImRpc3BsYXlIZWFkZXIkIHwgYXN5bmNcIlxuICAgICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgICBbaGVhZGVyXT1cImhlYWRlclwiXG4gICAgICAgIFtvcGVuJF09XCJvcGVuJFwiXG4gICAgICAgIGNsYXNzPVwiby1zZXR0aW5nc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXNldHRpbmdzX19maWVsZHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwicHJpbWFyeVByb3BcIj57eyAnQHByeS53aWRnZXQuYW5hbHl0aWMucHJpbWFyeVByb3AnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50LCAncHJpbWFyeVByb3AnKVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkucHJpbWFyeVByb3BcIlxuICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgICAgICAgYmluZFZhbHVlPVwibmFtZVwiXG4gICAgICAgICAgICAgIGlkPVwicHJpbWFyeVByb3BcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwic2Vjb25kYXJ5UHJvcFwiPnt7ICdAcHJ5LndpZGdldC5hbmFseXRpYy5zZWNvbmRhcnlQcm9wJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKCRldmVudCwgJ3NlY29uZGFyeVByb3AnKVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkuc2Vjb25kYXJ5UHJvcFwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgaWQ9XCJzZWNvbmRhcnlQcm9wXCJcbiAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInZlcnRpY2FsUHJvcFwiPnt7ICdAcHJ5LndpZGdldC5hbmFseXRpYy52ZXJ0aWNhbFByb3AnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50LCAndmVydGljYWxQcm9wJylcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwiYXZhaWxhYmxlUHJvcGVydGllcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbnNDb3B5LnZlcnRpY2FsUHJvcFwiXG4gICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgaWQ9XCJ2ZXJ0aWNhbFByb3BcIlxuICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwidmFsdWVQcm9wXCI+e3sgJ0Bwcnkud2lkZ2V0LmFuYWx5dGljLnZhbHVlUHJvcCcgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZSgkZXZlbnQsICd2YWx1ZVByb3AnKVwiXG4gICAgICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVQcm9wZXJ0aWVzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwib3B0aW9uc0NvcHkudmFsdWVQcm9wXCJcbiAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgIGJpbmRWYWx1ZT1cIm5hbWVcIlxuICAgICAgICAgICAgICBpZD1cInZhbHVlUHJvcFwiXG4gICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxwcnktY2hlY2tib3ggKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlQ29sb3JDb25maWcoJGV2ZW50KVwiIFtuZ01vZGVsXT1cIiEhb3B0aW9uc0NvcHkuY29sb3JDb25maWdcIj5cbiAgICAgICAgICAgICAge3sgJ0Bwcnkud2lkZ2V0LmFuYWx5dGljLmNvbG9yQ29uZmlnJyB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgQGlmIChvcHRpb25zQ29weS5jb2xvckNvbmZpZykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cImNvbG9yUHJvcFwiPnt7ICdAcHJ5LndpZGdldC5hbmFseXRpYy5jb2xvclByb3AnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZUNvbG9yQ29uZmlnKCRldmVudCwgJ3Byb3AnKVwiXG4gICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiYXZhaWxhYmxlUHJvcGVydGllcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25zQ29weS5jb2xvckNvbmZpZy5wcm9wXCJcbiAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICBpZD1cImNvbG9yUHJvcFwiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgZm9yPVwiY29sb3JQcm9wXCI+e3sgJ0Bwcnkud2lkZ2V0LmFuYWx5dGljLmNvbG9ycycgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm8td2lkZ2V0X19hbmFseXRpY19fY29sb3ItcGlja2VyLWNvbnRhaW5lciB1LWRpc3BsYXktZmxleCAtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGZvciAoY29sb3Igb2Ygb3B0aW9uc0NvcHkuY29sb3JDb25maWcuY29sb3JzOyB0cmFjayBjb2xvcjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19hbmFseXRpY19fY29sb3ItcGlja2VyXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWNvbG9yLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5Q29sb3JTY2hlbWUoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWNvbG9yLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZW1vdmVDb2xvcihpKVwiIGNsYXNzPVwiby13aWRnZXRfX2FuYWx5dGljX19jb2xvci1waWNrZXItcmVtb3ZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIxNVwiIFt3aWR0aF09XCIxNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqY2RrRHJhZ1ByZXZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWNvbG9yLXBpY2tlciBbbmdNb2RlbF09XCJjb2xvclwiPjwvcHJ5LWNvbG9yLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHkgby13aWRnZXRfX2FuYWx5dGljX19jb2xvci1waWNrZXItYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGlmeUNvbG9yU2NoZW1lKClcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiIFtoZWlnaHRdPVwiMjBcIiBbd2lkdGhdPVwiMjBcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcHJ5LXNldHRpbmdzPlxuICAgIDwvcHJ5LXdpZGdldC1oZWFkZXI+XG4gIH1cbiAgPGRpdiBjbGFzcz1cIm8td2lkZ2V0X19hbmFseXRpY19fdGFibGVcIj5cbiAgICA8dGFibGUgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHQkIHwgYXN5bmNcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyIGNsYXNzPVwicHJpbWFyeS1oZWFkZXJcIj5cbiAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICBAZm9yIChwcmltYXJ5IG9mIHByaW1hcnlQcm9wZXJ0eSQgfCBhc3luYzsgdHJhY2sgcHJpbWFyeSkge1xuICAgICAgICAgICAgPHRoIFtjb2xTcGFuXT1cIihzZWNvbmRhcnlQcm9wZXJ0eSQgfCBhc3luYyk/Lmxlbmd0aCA/PyAxXCI+XG4gICAgICAgICAgICAgIHt7IHByaW1hcnkgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgICBAaWYgKG9wdGlvbnNDb3B5LnNlY29uZGFyeVByb3ApIHtcbiAgICAgICAgICA8dHIgY2xhc3M9XCJzZWNvbmRhcnktaGVhZGVyXCI+XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgIEBmb3IgKHByaW1hcnkgb2YgcHJpbWFyeVByb3BlcnR5JCB8IGFzeW5jOyB0cmFjayBwcmltYXJ5KSB7XG4gICAgICAgICAgICAgIEBmb3IgKHNlY29uZGFyeSBvZiBzZWNvbmRhcnlQcm9wZXJ0eSQgfCBhc3luYzsgdHJhY2sgc2Vjb25kYXJ5KSB7XG4gICAgICAgICAgICAgICAgPHRoPnt7IHNlY29uZGFyeSB9fTwvdGg+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICB9XG4gICAgICA8L3RoZWFkPlxuICAgICAgQGlmICh0aGlzLnZhbHVlUHJvcEZpZWxkJCB8IGFzeW5jOyBhcyBmaWVsZCkge1xuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAobGluZSBvZiBsaW5lcyQgfCBhc3luYzsgdHJhY2sgbGluZS5uYW1lKSB7XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0aD57eyBsaW5lLm5hbWUgfX08L3RoPlxuICAgICAgICAgICAgICBAZm9yIChwcmltYXJ5IG9mIHByaW1hcnlQcm9wZXJ0eSQgfCBhc3luYzsgdHJhY2sgcHJpbWFyeSkge1xuICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uc0NvcHkuc2Vjb25kYXJ5UHJvcCkge1xuICAgICAgICAgICAgICAgICAgQGZvciAoc2Vjb25kYXJ5IG9mIHNlY29uZGFyeVByb3BlcnR5JCB8IGFzeW5jOyB0cmFjayBzZWNvbmRhcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zQ29weS5jb2xvckNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgJ2JhY2tncm91bmQtY29sb3InOiAoY29sb3JNYXAkIHwgYXN5bmMpPy5bbGluZS5uYW1lXT8uW3ByaW1hcnldIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7fVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnZhbHVlW3ByaW1hcnldW3NlY29uZGFyeV0gfCBkYXRhRm9ybWF0OiBmaWVsZCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNDb3B5LmNvbG9yQ29uZmlnID8geyAnYmFja2dyb3VuZC1jb2xvcic6IChjb2xvck1hcCQgfCBhc3luYyk/LltsaW5lLm5hbWVdPy5bcHJpbWFyeV0gfSA6IHt9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGxpbmUudmFsdWVbcHJpbWFyeV0gfCBkYXRhRm9ybWF0OiBmaWVsZCB9fVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8dGZvb3Q+XG4gICAgICAgICAgQGZvciAobGluZSBvZiB0b3RhbHMkIHwgYXN5bmM7IHRyYWNrIGxpbmUubmFtZSkge1xuICAgICAgICAgICAgPHRyIGNsYXNzPVwicGFydGlhbC10b3RhbFwiPlxuICAgICAgICAgICAgICA8dGg+e3sgbGluZS5uYW1lIH19PC90aD5cbiAgICAgICAgICAgICAgQGZvciAocHJpbWFyeSBvZiBwcmltYXJ5UHJvcGVydHkkIHwgYXN5bmM7IHRyYWNrIHByaW1hcnkpIHtcbiAgICAgICAgICAgICAgICBAZm9yIChzZWNvbmRhcnkgb2Ygc2Vjb25kYXJ5UHJvcGVydHkkIHwgYXN5bmM7IHRyYWNrIHNlY29uZGFyeSkge1xuICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICB7eyBsaW5lLnZhbHVlW3ByaW1hcnldW3NlY29uZGFyeV0gfCBkYXRhRm9ybWF0OiBmaWVsZCB9fVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKGxpbmUgb2YgZ3JhbmRUb3RhbHMkIHwgYXN5bmM7IHRyYWNrIGxpbmUubmFtZSkge1xuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ3JhbmQtdG90YWxcIj5cbiAgICAgICAgICAgICAgPHRoPnt7IGxpbmUubmFtZSB9fTwvdGg+XG4gICAgICAgICAgICAgIEBmb3IgKHByaW1hcnkgb2YgcHJpbWFyeVByb3BlcnR5JCB8IGFzeW5jOyB0cmFjayBwcmltYXJ5KSB7XG4gICAgICAgICAgICAgICAgPHRkIFtjb2xTcGFuXT1cIihzZWNvbmRhcnlQcm9wZXJ0eSQgfCBhc3luYyk/Lmxlbmd0aCA/PyAxXCI+XG4gICAgICAgICAgICAgICAgICB7eyBsaW5lLnZhbHVlW3ByaW1hcnldIHwgZGF0YUZvcm1hdDogZmllbGQgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Zm9vdD5cbiAgICAgIH1cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,10 +1,10 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class PryWidgetAnalyticCssComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetAnalyticCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget__analytic{font-size:.75rem}.o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], encapsulation: i0.ViewEncapsulation.None }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PryWidgetAnalyticCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PryWidgetAnalyticCssComponent, selector: "pry-widget-analytic-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget__analytic{font-size:.75rem}.o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], encapsulation: i0.ViewEncapsulation.None }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetAnalyticCssComponent, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PryWidgetAnalyticCssComponent, decorators: [{
8
8
  type: Component,
9
9
  args: [{ selector: 'pry-widget-analytic-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget__analytic{font-size:.75rem}.o-widget__analytic__table,.o-widget__analytic__table table{width:100%}.o-widget__analytic__table table th,.o-widget__analytic__table table td{text-align:center}.o-widget__analytic__table table th:first-child,.o-widget__analytic__table table td:first-child{text-align:left}.o-widget__analytic__table table .primary-header th:not(:first-child){background-color:#d7e7f7}.o-widget__analytic__table table .secondary-header th:not(:first-child){background-color:#f3f8fc}.o-widget__analytic__table table .partial-total th,.o-widget__analytic__table table .partial-total td{background-color:#f0f0f0}.o-widget__analytic__table table .grand-total th,.o-widget__analytic__table table .grand-total td{background-color:#bdb9da}.o-widget__analytic__color-picker-container{margin-top:.625rem;gap:.9375rem;flex-wrap:wrap}.o-widget__analytic__color-picker{position:relative}.o-widget__analytic__color-picker-remove{position:absolute;right:-20px;top:-10px;z-index:2;color:#263340;padding:0}.o-widget__analytic__color-picker-add{padding:.75rem;border:1px solid #263340;border-radius:50%;width:20px}.cdk-drop-list-dragging .cdk-drag,.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drop-list-dragging .o-widget__analytic__color-picker:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.cdk-drag-preview{box-sizing:border-box;border-radius:50%;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"] }]
10
10
  }] });
@@ -23,8 +23,8 @@ export class WidgetAnalyticModule extends BaseWidgetModule {
23
23
  getComponent() {
24
24
  return WidgetAnalyticComponent;
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticModule, deps: [{ token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
27
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticModule, declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent], imports: [CommonModule,
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetAnalyticModule, deps: [{ token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
27
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: WidgetAnalyticModule, declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent], imports: [CommonModule,
28
28
  FormsModule,
29
29
  OverlayModule,
30
30
  PryCoreModule,
@@ -38,7 +38,7 @@ export class WidgetAnalyticModule extends BaseWidgetModule {
38
38
  PryColorPickerModule,
39
39
  DragDropModule,
40
40
  PryDataFormatModule], exports: [WidgetAnalyticComponent] }); }
41
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticModule, imports: [CommonModule,
41
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetAnalyticModule, imports: [CommonModule,
42
42
  FormsModule,
43
43
  OverlayModule,
44
44
  PryCoreModule,
@@ -52,7 +52,7 @@ export class WidgetAnalyticModule extends BaseWidgetModule {
52
52
  DragDropModule,
53
53
  PryDataFormatModule] }); }
54
54
  }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetAnalyticModule, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetAnalyticModule, decorators: [{
56
56
  type: NgModule,
57
57
  args: [{
58
58
  declarations: [WidgetAnalyticComponent, PryWidgetAnalyticCssComponent],
@@ -638,10 +638,10 @@ export class WidgetChartComponent extends DataWidgetComponent {
638
638
  resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));
639
639
  });
640
640
  }
641
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetChartComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
642
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: WidgetChartComponent, selector: "pry-widget-chart", viewQueries: [{ propertyName: "vega", first: true, predicate: ["vega"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-chart-css></pry-widget-chart-css>\n<div class=\"o-widget o-widget--chart\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [isDisable]=\"(filterDataForOptionsCopy$ | async)?.length === 0 || hasNoType(optionsCopy)\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.customTitle ?? optionsCopy.title\"\n ></pry-edit-input>\n\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"(filterDataForOptionsCopy$ | async)?.length === 0; else data\">\n <p class=\"a-label a-label--help -error\">{{ '@pry.widget.chart.params.noParams' | i18n }}</p>\n </ng-container>\n <ng-template #data>\n <div *ngIf=\"optionsCopy?.type !== MarkType.RADAR\">\n {{ '@pry.widget.chart.params.multipleParams' | i18n }}{{ (filterDataForOptionsCopy$ | async)?.length }}\n </div>\n </ng-template>\n </div>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.type + '-' + optionsCopy.subType\"\n i18nPrefix=\"@pry.widget.chart.markType.\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n </div>\n\n <ng-container *ngIf=\"optionsCopy?.type !== MarkType.RADAR && optionsCopy?.type !== MarkType.CIRCLE_PACK\">\n <ng-container *ngIf=\"optionsCopy?.subType === MarkSubType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.innerRadius\"\n (ngModelChange)=\"changeInnerRadius($event)\"\n labelTranslate=\"@pry.widget.chart.innerRadius\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div\n *ngFor=\"let variableDef of optionsCopy?.selectedVariables; let i = index\"\n class=\"o-settings__popup__content__fields -condensed\"\n >\n <div class=\"m-form-label-field\" *ngIf=\"i === 1\">\n <label class=\"a-label\" for=\"aggregations\">{{ '@pry.widget.chart.encoding.group' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAggregation($event)\"\n *ngIf=\"i === 1\"\n [items]=\"aggregations\"\n [ngModel]=\"optionsCopy.aggregation\"\n id=\"aggregations\"\n i18nPrefix=\"@pry.widget.chart.aggregation.\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"i !== 1 || optionsCopy.aggregation !== 'count'\">\n <label class=\"a-label\" for=\"aggregation_property\">\n {{ axeLabel(i, optionsCopy) | i18n }}\n </label>\n <pry-select\n (ngModelChange)=\"changeProperty($event, i)\"\n [items]=\"(i !== 1 ? variableAttributes$ : possibleSecondaryAttributes$) | async\"\n [ngModel]=\"variableDef.name\"\n bindLabel=\"name\"\n bindValue=\"technicalName\"\n id=\"aggregation_property\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeLabel($event, i)\"\n [ngModel]=\"variableDef.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"variableDef.type === 'temporal'\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_timeUnit\">{{ '@pry.widget.chart.timeUnit' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeUnit($event, variableDef)\"\n [items]=\"timeUnits\"\n [ngModel]=\"variableDef.timeUnit\"\n i18nPrefix=\"@pry.widget.chart.timeUnitList.\"\n id=\"chart_timeUnit\"\n ></pry-select>\n </div>\n\n <div *ngIf=\"variableDef.type === 'quantitative' && optionsCopy?.type !== 'arc'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleOriginAtZero(variableDef, $event)\" [ngModel]=\"variableDef.origin0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleSeries($event)\"\n [ngModel]=\"!!optionsCopy.series\"\n *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR\"\n [disabled]=\"\n this.optionsCopy.subType === MarkSubType.AREASTACKED ||\n this.optionsCopy.subType === MarkSubType.HISTOSTACKED\n \"\n >{{ '@pry.widget.chart.series' | i18n }}\n </pry-checkbox>\n </div>\n\n <div\n class=\"m-form-label-field\"\n *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR && !!optionsCopy.series\"\n >\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.seriesAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSeries($event)\"\n [ngModel]=\"optionsCopy.series.groupBy!\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div\n class=\"m-form-label-field\"\n *ngIf=\"\n (optionsCopy?.type === MarkType.ARC || optionsCopy?.type === MarkType.RADAR || !!optionsCopy.series) &&\n schemes\n \"\n >\n <label class=\"a-label\" for=\"chart_seriesScheme\" [title]=\"'@pry.widget.chart.seriesSchemeAlt' | i18n\">{{\n '@pry.widget.chart.seriesScheme' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeSeriesScheme($event)\"\n [ngModel]=\"optionsCopy.series?.scheme!\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n i18nPrefix=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleSeriesLegend($event)\"\n [ngModel]=\"!!optionsCopy.legend!\"\n *ngIf=\"optionsCopy?.type !== MarkType.RADAR || !!optionsCopy.series\"\n >{{ '@pry.widget.chart.seriesLegend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.tooltip!\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy?.type === MarkType.RADAR && optionsCopy.radar !== undefined\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.compare\"\n [items]=\"comparisons\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.radar.compare === 'item'\">\n <div class=\"m-form-label-field\">\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.props\"\n [items]=\"numericProperties$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy.radar.compare === 'value'\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_key\">{{ '@pry.widget.chart.comparison.key' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.keyProp\"\n [items]=\"textProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_key\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_values\">{{ '@pry.widget.chart.comparison.values' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.valueProp\"\n [items]=\"numericProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_values\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_category\">{{\n '@pry.widget.chart.comparison.category' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.categoryProp\"\n [items]=\"textProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_category\"\n ></pry-select>\n </div>\n </ng-container>\n <ng-container *ngIf=\"schemes\">\n <label\n class=\"a-label\"\n for=\"chart_seriesScheme_radar\"\n [title]=\"'@pry.widget.chart.seriesSchemeAlt' | i18n\"\n >{{ '@pry.widget.chart.seriesScheme' | i18n }}</label\n >\n <pry-select\n (ngModelChange)=\"changeSeriesScheme($event)\"\n [ngModel]=\"optionsCopy.series?.scheme!\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme_radar\"\n ></pry-select>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy?.type === MarkType.CIRCLE_PACK && optionsCopy.packing !== undefined\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_id\">{{ '@pry.widget.chart.circle.id' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.id\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_id\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_pid\">{{ '@pry.widget.chart.circle.pid' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.parentId\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_pid\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_field\">{{ '@pry.widget.chart.circle.field' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.packField\"\n [items]=\"numericProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_field\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_tooltip\">{{ '@pry.widget.chart.circle.tooltip' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.tooltip\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_tooltip\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-checkbox (ngModelChange)=\"toggleSpecToMerge($event)\" [ngModel]=\"!!optionsCopy.specToMerge\"\n >{{ '@pry.widget.chart.moreOptions' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.specToMerge\">\n <textarea\n [ngModel]=\"advancedEdit\"\n (focusout)=\"updateAdvancedEdit($event)\"\n class=\"o-settings__popup__content__area\"\n [class.-invalid]=\"invalidJson\"\n ></textarea>\n </ng-container>\n </div>\n </pry-settings>\n </pry-widget-header>\n <ng-container *ngIf=\"isChartValid$ | async\">\n <div\n #vega\n [style.height.px]=\"\n ((widgetSize$ | async)?.height ?? 0) - ((displayHeader$ | async) ? 1 : 0) * WIDGET_HEADER_HEIGHT\n \"\n [style.width.px]=\"(widgetSize$ | async)?.width\"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i2.PryEditInputComponent, selector: "pry-edit-input", inputs: ["label", "editButtonTooltip", "confirmButtonTooltip"], outputs: ["validated"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: i6.PryWidgetChartCssComponent, selector: "pry-widget-chart-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
641
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetChartComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
642
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WidgetChartComponent, selector: "pry-widget-chart", viewQueries: [{ propertyName: "vega", first: true, predicate: ["vega"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-chart-css></pry-widget-chart-css>\n<div class=\"o-widget o-widget--chart\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [isDisable]=\"(filterDataForOptionsCopy$ | async)?.length === 0 || hasNoType(optionsCopy)\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.customTitle ?? optionsCopy.title\"\n ></pry-edit-input>\n\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"(filterDataForOptionsCopy$ | async)?.length === 0; else data\">\n <p class=\"a-label a-label--help -error\">{{ '@pry.widget.chart.params.noParams' | i18n }}</p>\n </ng-container>\n <ng-template #data>\n <div *ngIf=\"optionsCopy?.type !== MarkType.RADAR\">\n {{ '@pry.widget.chart.params.multipleParams' | i18n }}{{ (filterDataForOptionsCopy$ | async)?.length }}\n </div>\n </ng-template>\n </div>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.type + '-' + optionsCopy.subType\"\n i18nPrefix=\"@pry.widget.chart.markType.\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n </div>\n\n <ng-container *ngIf=\"optionsCopy?.type !== MarkType.RADAR && optionsCopy?.type !== MarkType.CIRCLE_PACK\">\n <ng-container *ngIf=\"optionsCopy?.subType === MarkSubType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.innerRadius\"\n (ngModelChange)=\"changeInnerRadius($event)\"\n labelTranslate=\"@pry.widget.chart.innerRadius\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div\n *ngFor=\"let variableDef of optionsCopy?.selectedVariables; let i = index\"\n class=\"o-settings__popup__content__fields -condensed\"\n >\n <div class=\"m-form-label-field\" *ngIf=\"i === 1\">\n <label class=\"a-label\" for=\"aggregations\">{{ '@pry.widget.chart.encoding.group' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAggregation($event)\"\n *ngIf=\"i === 1\"\n [items]=\"aggregations\"\n [ngModel]=\"optionsCopy.aggregation\"\n id=\"aggregations\"\n i18nPrefix=\"@pry.widget.chart.aggregation.\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"i !== 1 || optionsCopy.aggregation !== 'count'\">\n <label class=\"a-label\" for=\"aggregation_property\">\n {{ axeLabel(i, optionsCopy) | i18n }}\n </label>\n <pry-select\n (ngModelChange)=\"changeProperty($event, i)\"\n [items]=\"(i !== 1 ? variableAttributes$ : possibleSecondaryAttributes$) | async\"\n [ngModel]=\"variableDef.name\"\n bindLabel=\"name\"\n bindValue=\"technicalName\"\n id=\"aggregation_property\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeLabel($event, i)\"\n [ngModel]=\"variableDef.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"variableDef.type === 'temporal'\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_timeUnit\">{{ '@pry.widget.chart.timeUnit' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeUnit($event, variableDef)\"\n [items]=\"timeUnits\"\n [ngModel]=\"variableDef.timeUnit\"\n i18nPrefix=\"@pry.widget.chart.timeUnitList.\"\n id=\"chart_timeUnit\"\n ></pry-select>\n </div>\n\n <div *ngIf=\"variableDef.type === 'quantitative' && optionsCopy?.type !== 'arc'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleOriginAtZero(variableDef, $event)\" [ngModel]=\"variableDef.origin0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleSeries($event)\"\n [ngModel]=\"!!optionsCopy.series\"\n *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR\"\n [disabled]=\"\n this.optionsCopy.subType === MarkSubType.AREASTACKED ||\n this.optionsCopy.subType === MarkSubType.HISTOSTACKED\n \"\n >{{ '@pry.widget.chart.series' | i18n }}\n </pry-checkbox>\n </div>\n\n <div\n class=\"m-form-label-field\"\n *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR && !!optionsCopy.series\"\n >\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.seriesAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSeries($event)\"\n [ngModel]=\"optionsCopy.series.groupBy!\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div\n class=\"m-form-label-field\"\n *ngIf=\"\n (optionsCopy?.type === MarkType.ARC || optionsCopy?.type === MarkType.RADAR || !!optionsCopy.series) &&\n schemes\n \"\n >\n <label class=\"a-label\" for=\"chart_seriesScheme\" [title]=\"'@pry.widget.chart.seriesSchemeAlt' | i18n\">{{\n '@pry.widget.chart.seriesScheme' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeSeriesScheme($event)\"\n [ngModel]=\"optionsCopy.series?.scheme!\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n i18nPrefix=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleSeriesLegend($event)\"\n [ngModel]=\"!!optionsCopy.legend!\"\n *ngIf=\"optionsCopy?.type !== MarkType.RADAR || !!optionsCopy.series\"\n >{{ '@pry.widget.chart.seriesLegend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.tooltip!\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy?.type === MarkType.RADAR && optionsCopy.radar !== undefined\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.compare\"\n [items]=\"comparisons\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.radar.compare === 'item'\">\n <div class=\"m-form-label-field\">\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.props\"\n [items]=\"numericProperties$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy.radar.compare === 'value'\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_key\">{{ '@pry.widget.chart.comparison.key' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.keyProp\"\n [items]=\"textProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_key\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_values\">{{ '@pry.widget.chart.comparison.values' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.valueProp\"\n [items]=\"numericProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_values\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_category\">{{\n '@pry.widget.chart.comparison.category' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.categoryProp\"\n [items]=\"textProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_category\"\n ></pry-select>\n </div>\n </ng-container>\n <ng-container *ngIf=\"schemes\">\n <label\n class=\"a-label\"\n for=\"chart_seriesScheme_radar\"\n [title]=\"'@pry.widget.chart.seriesSchemeAlt' | i18n\"\n >{{ '@pry.widget.chart.seriesScheme' | i18n }}</label\n >\n <pry-select\n (ngModelChange)=\"changeSeriesScheme($event)\"\n [ngModel]=\"optionsCopy.series?.scheme!\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme_radar\"\n ></pry-select>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy?.type === MarkType.CIRCLE_PACK && optionsCopy.packing !== undefined\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_id\">{{ '@pry.widget.chart.circle.id' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.id\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_id\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_pid\">{{ '@pry.widget.chart.circle.pid' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.parentId\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_pid\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_field\">{{ '@pry.widget.chart.circle.field' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.packField\"\n [items]=\"numericProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_field\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_tooltip\">{{ '@pry.widget.chart.circle.tooltip' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.tooltip\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_tooltip\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-checkbox (ngModelChange)=\"toggleSpecToMerge($event)\" [ngModel]=\"!!optionsCopy.specToMerge\"\n >{{ '@pry.widget.chart.moreOptions' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.specToMerge\">\n <textarea\n [ngModel]=\"advancedEdit\"\n (focusout)=\"updateAdvancedEdit($event)\"\n class=\"o-settings__popup__content__area\"\n [class.-invalid]=\"invalidJson\"\n ></textarea>\n </ng-container>\n </div>\n </pry-settings>\n </pry-widget-header>\n <ng-container *ngIf=\"isChartValid$ | async\">\n <div\n #vega\n [style.height.px]=\"\n ((widgetSize$ | async)?.height ?? 0) - ((displayHeader$ | async) ? 1 : 0) * WIDGET_HEADER_HEIGHT\n \"\n [style.width.px]=\"(widgetSize$ | async)?.width\"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle", "name", "inputId", "inhibit"] }, { kind: "component", type: i2.PryEditInputComponent, selector: "pry-edit-input", inputs: ["label", "editButtonTooltip", "confirmButtonTooltip"], outputs: ["validated"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: i6.PryWidgetChartCssComponent, selector: "pry-widget-chart-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }] }); }
643
643
  }
644
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetChartComponent, decorators: [{
644
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetChartComponent, decorators: [{
645
645
  type: Component,
646
646
  args: [{ selector: 'pry-widget-chart', template: "<pry-widget-chart-css></pry-widget-chart-css>\n<div class=\"o-widget o-widget--chart\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [isDisable]=\"(filterDataForOptionsCopy$ | async)?.length === 0 || hasNoType(optionsCopy)\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.customTitle ?? optionsCopy.title\"\n ></pry-edit-input>\n\n <div class=\"m-form-label-field\">\n <ng-container *ngIf=\"(filterDataForOptionsCopy$ | async)?.length === 0; else data\">\n <p class=\"a-label a-label--help -error\">{{ '@pry.widget.chart.params.noParams' | i18n }}</p>\n </ng-container>\n <ng-template #data>\n <div *ngIf=\"optionsCopy?.type !== MarkType.RADAR\">\n {{ '@pry.widget.chart.params.multipleParams' | i18n }}{{ (filterDataForOptionsCopy$ | async)?.length }}\n </div>\n </ng-template>\n </div>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.type + '-' + optionsCopy.subType\"\n i18nPrefix=\"@pry.widget.chart.markType.\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n </div>\n\n <ng-container *ngIf=\"optionsCopy?.type !== MarkType.RADAR && optionsCopy?.type !== MarkType.CIRCLE_PACK\">\n <ng-container *ngIf=\"optionsCopy?.subType === MarkSubType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.innerRadius\"\n (ngModelChange)=\"changeInnerRadius($event)\"\n labelTranslate=\"@pry.widget.chart.innerRadius\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div\n *ngFor=\"let variableDef of optionsCopy?.selectedVariables; let i = index\"\n class=\"o-settings__popup__content__fields -condensed\"\n >\n <div class=\"m-form-label-field\" *ngIf=\"i === 1\">\n <label class=\"a-label\" for=\"aggregations\">{{ '@pry.widget.chart.encoding.group' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAggregation($event)\"\n *ngIf=\"i === 1\"\n [items]=\"aggregations\"\n [ngModel]=\"optionsCopy.aggregation\"\n id=\"aggregations\"\n i18nPrefix=\"@pry.widget.chart.aggregation.\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\" *ngIf=\"i !== 1 || optionsCopy.aggregation !== 'count'\">\n <label class=\"a-label\" for=\"aggregation_property\">\n {{ axeLabel(i, optionsCopy) | i18n }}\n </label>\n <pry-select\n (ngModelChange)=\"changeProperty($event, i)\"\n [items]=\"(i !== 1 ? variableAttributes$ : possibleSecondaryAttributes$) | async\"\n [ngModel]=\"variableDef.name\"\n bindLabel=\"name\"\n bindValue=\"technicalName\"\n id=\"aggregation_property\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeLabel($event, i)\"\n [ngModel]=\"variableDef.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"variableDef.type === 'temporal'\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_timeUnit\">{{ '@pry.widget.chart.timeUnit' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeUnit($event, variableDef)\"\n [items]=\"timeUnits\"\n [ngModel]=\"variableDef.timeUnit\"\n i18nPrefix=\"@pry.widget.chart.timeUnitList.\"\n id=\"chart_timeUnit\"\n ></pry-select>\n </div>\n\n <div *ngIf=\"variableDef.type === 'quantitative' && optionsCopy?.type !== 'arc'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleOriginAtZero(variableDef, $event)\" [ngModel]=\"variableDef.origin0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleSeries($event)\"\n [ngModel]=\"!!optionsCopy.series\"\n *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR\"\n [disabled]=\"\n this.optionsCopy.subType === MarkSubType.AREASTACKED ||\n this.optionsCopy.subType === MarkSubType.HISTOSTACKED\n \"\n >{{ '@pry.widget.chart.series' | i18n }}\n </pry-checkbox>\n </div>\n\n <div\n class=\"m-form-label-field\"\n *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR && !!optionsCopy.series\"\n >\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.seriesAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSeries($event)\"\n [ngModel]=\"optionsCopy.series.groupBy!\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div\n class=\"m-form-label-field\"\n *ngIf=\"\n (optionsCopy?.type === MarkType.ARC || optionsCopy?.type === MarkType.RADAR || !!optionsCopy.series) &&\n schemes\n \"\n >\n <label class=\"a-label\" for=\"chart_seriesScheme\" [title]=\"'@pry.widget.chart.seriesSchemeAlt' | i18n\">{{\n '@pry.widget.chart.seriesScheme' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeSeriesScheme($event)\"\n [ngModel]=\"optionsCopy.series?.scheme!\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n i18nPrefix=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleSeriesLegend($event)\"\n [ngModel]=\"!!optionsCopy.legend!\"\n *ngIf=\"optionsCopy?.type !== MarkType.RADAR || !!optionsCopy.series\"\n >{{ '@pry.widget.chart.seriesLegend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.tooltip!\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy?.type === MarkType.RADAR && optionsCopy.radar !== undefined\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.compare\"\n [items]=\"comparisons\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.radar.compare === 'item'\">\n <div class=\"m-form-label-field\">\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.props\"\n [items]=\"numericProperties$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"name\"\n ></pry-select>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy.radar.compare === 'value'\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_key\">{{ '@pry.widget.chart.comparison.key' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.keyProp\"\n [items]=\"textProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_key\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_values\">{{ '@pry.widget.chart.comparison.values' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.valueProp\"\n [items]=\"numericProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_values\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"comparison_category\">{{\n '@pry.widget.chart.comparison.category' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.radar.categoryProp\"\n [items]=\"textProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"comparison_category\"\n ></pry-select>\n </div>\n </ng-container>\n <ng-container *ngIf=\"schemes\">\n <label\n class=\"a-label\"\n for=\"chart_seriesScheme_radar\"\n [title]=\"'@pry.widget.chart.seriesSchemeAlt' | i18n\"\n >{{ '@pry.widget.chart.seriesScheme' | i18n }}</label\n >\n <pry-select\n (ngModelChange)=\"changeSeriesScheme($event)\"\n [ngModel]=\"optionsCopy.series?.scheme!\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme_radar\"\n ></pry-select>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"optionsCopy?.type === MarkType.CIRCLE_PACK && optionsCopy.packing !== undefined\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_id\">{{ '@pry.widget.chart.circle.id' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.id\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_id\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_pid\">{{ '@pry.widget.chart.circle.pid' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.parentId\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_pid\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_field\">{{ '@pry.widget.chart.circle.field' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.packField\"\n [items]=\"numericProperties$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_field\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_circle_tooltip\">{{ '@pry.widget.chart.circle.tooltip' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"trigger(); proposeTitle()\"\n [(ngModel)]=\"optionsCopy.packing.tooltip\"\n [items]=\"variableAttributes$ | async\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"chart_circle_tooltip\"\n ></pry-select>\n </div>\n </div>\n </ng-container>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-checkbox (ngModelChange)=\"toggleSpecToMerge($event)\" [ngModel]=\"!!optionsCopy.specToMerge\"\n >{{ '@pry.widget.chart.moreOptions' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.specToMerge\">\n <textarea\n [ngModel]=\"advancedEdit\"\n (focusout)=\"updateAdvancedEdit($event)\"\n class=\"o-settings__popup__content__area\"\n [class.-invalid]=\"invalidJson\"\n ></textarea>\n </ng-container>\n </div>\n </pry-settings>\n </pry-widget-header>\n <ng-container *ngIf=\"isChartValid$ | async\">\n <div\n #vega\n [style.height.px]=\"\n ((widgetSize$ | async)?.height ?? 0) - ((displayHeader$ | async) ? 1 : 0) * WIDGET_HEADER_HEIGHT\n \"\n [style.width.px]=\"(widgetSize$ | async)?.width\"\n ></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\n" }]
647
647
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { vega: [{
@@ -1,10 +1,10 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class PryWidgetChartCssComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetChartCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryWidgetChartCssComponent, selector: "pry-widget-chart-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget--chart-color-thumb{display:flex;flex-direction:row;margin-bottom:20px}.o-widget--chart-color-thumb-item{flex:1 1 20px;height:20px;border-radius:4px}.o-widget--chart div.vega-embed{display:block}.o-widget--chart div.vega-embed.has-actions{display:block;height:100%;padding-right:0}.o-widget--chart div.vega-embed.has-actions>div.chart-wrapper.fit-y.fit-x{height:100%;overflow:hidden}.o-widget--chart div.vega-embed.has-actions>details>summary{right:25px}.o-widget--chart div.vega-embed.has-actions>details .vega-actions{right:16px}\n"], encapsulation: i0.ViewEncapsulation.None }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PryWidgetChartCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PryWidgetChartCssComponent, selector: "pry-widget-chart-css", ngImport: i0, template: '', isInline: true, styles: [".o-widget--chart-color-thumb{display:flex;flex-direction:row;margin-bottom:20px}.o-widget--chart-color-thumb-item{flex:1 1 20px;height:20px;border-radius:4px}.o-widget--chart div.vega-embed{display:block}.o-widget--chart div.vega-embed.has-actions{display:block;height:100%;padding-right:0}.o-widget--chart div.vega-embed.has-actions>div.chart-wrapper.fit-y.fit-x{height:100%;overflow:hidden}.o-widget--chart div.vega-embed.has-actions>details>summary{right:25px}.o-widget--chart div.vega-embed.has-actions>details .vega-actions{right:16px}\n"], encapsulation: i0.ViewEncapsulation.None }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryWidgetChartCssComponent, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PryWidgetChartCssComponent, decorators: [{
8
8
  type: Component,
9
9
  args: [{ selector: 'pry-widget-chart-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget--chart-color-thumb{display:flex;flex-direction:row;margin-bottom:20px}.o-widget--chart-color-thumb-item{flex:1 1 20px;height:20px;border-radius:4px}.o-widget--chart div.vega-embed{display:block}.o-widget--chart div.vega-embed.has-actions{display:block;height:100%;padding-right:0}.o-widget--chart div.vega-embed.has-actions>div.chart-wrapper.fit-y.fit-x{height:100%;overflow:hidden}.o-widget--chart div.vega-embed.has-actions>details>summary{right:25px}.o-widget--chart div.vega-embed.has-actions>details .vega-actions{right:16px}\n"] }]
10
10
  }] });
@@ -20,8 +20,8 @@ export class WidgetChartModule extends BaseWidgetModule {
20
20
  getComponent() {
21
21
  return WidgetChartComponent;
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetChartModule, deps: [{ token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
24
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: WidgetChartModule, declarations: [WidgetChartComponent, PryWidgetChartCssComponent], imports: [CommonModule,
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetChartModule, deps: [{ token: i1.PryI18nService }], target: i0.ɵɵFactoryTarget.NgModule }); }
24
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: WidgetChartModule, declarations: [WidgetChartComponent, PryWidgetChartCssComponent], imports: [CommonModule,
25
25
  FormsModule,
26
26
  OverlayModule,
27
27
  PryCoreModule,
@@ -33,7 +33,7 @@ export class WidgetChartModule extends BaseWidgetModule {
33
33
  PryEditInputModule,
34
34
  PryI18nModule,
35
35
  PryRangeModule], exports: [WidgetChartComponent] }); }
36
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetChartModule, imports: [CommonModule,
36
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetChartModule, imports: [CommonModule,
37
37
  FormsModule,
38
38
  OverlayModule,
39
39
  PryCoreModule,
@@ -46,7 +46,7 @@ export class WidgetChartModule extends BaseWidgetModule {
46
46
  PryI18nModule,
47
47
  PryRangeModule] }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: WidgetChartModule, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WidgetChartModule, decorators: [{
50
50
  type: NgModule,
51
51
  args: [{
52
52
  declarations: [WidgetChartComponent, PryWidgetChartCssComponent],