@provoly/dashboard 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/admin/admin-routing.module.d.ts +9 -0
- package/admin/admin.module.d.ts +87 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.d.ts +14 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.d.ts +29 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.d.ts +12 -0
- package/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.d.ts +13 -0
- package/admin/components/admin-abac-rules/admin-abac-rules.component.d.ts +18 -0
- package/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.d.ts +26 -0
- package/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.d.ts +29 -0
- package/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.d.ts +28 -0
- package/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.d.ts +17 -0
- package/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.d.ts +14 -0
- package/admin/components/admin-abac-rules/store/abac-rules.actions.d.ts +147 -0
- package/admin/components/admin-abac-rules/store/abac-rules.effects.d.ts +67 -0
- package/admin/components/admin-abac-rules/store/abac-rules.model.d.ts +44 -0
- package/admin/components/admin-abac-rules/store/abac-rules.reducer.d.ts +10 -0
- package/admin/components/admin-abac-rules/store/abac-rules.selectors.d.ts +14 -0
- package/admin/components/admin-abac-rules/store/abac-rules.service.d.ts +21 -0
- package/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.d.ts +32 -0
- package/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.d.ts +46 -0
- package/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.d.ts +41 -0
- package/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.d.ts +16 -0
- package/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.d.ts +26 -0
- package/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.d.ts +5 -0
- package/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.d.ts +24 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.d.ts +17 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.d.ts +43 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.d.ts +17 -0
- package/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.d.ts +27 -0
- package/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.d.ts +44 -0
- package/admin/components/admin-classes/admin-classes.component.d.ts +25 -0
- package/admin/components/admin-classes/store/admin-class.actions.d.ts +143 -0
- package/admin/components/admin-classes/store/admin-class.effects.d.ts +81 -0
- package/admin/components/admin-classes/store/admin-class.reducer.d.ts +11 -0
- package/admin/components/admin-classes/store/admin-class.selectors.d.ts +12 -0
- package/admin/components/admin-dataset/admin-dataset.component.d.ts +32 -0
- package/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.d.ts +15 -0
- package/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.d.ts +5 -0
- package/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.d.ts +36 -0
- package/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.d.ts +34 -0
- package/admin/components/admin-dataset/store/admin-dataset.actions.d.ts +59 -0
- package/admin/components/admin-dataset/store/admin-dataset.effects.d.ts +30 -0
- package/admin/components/admin-dataset/store/admin-dataset.reducer.d.ts +6 -0
- package/admin/components/admin-dataset/store/admin-dataset.selector.d.ts +5 -0
- package/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.d.ts +35 -0
- package/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.d.ts +5 -0
- package/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.d.ts +24 -0
- package/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.d.ts +15 -0
- package/admin/components/admin-environment/admin-environment.component.d.ts +20 -0
- package/admin/components/admin-environment/store/environment.actions.d.ts +82 -0
- package/admin/components/admin-environment/store/environment.effects.d.ts +44 -0
- package/admin/components/admin-environment/store/environment.reducer.d.ts +9 -0
- package/admin/components/admin-environment/store/environment.selectors.d.ts +8 -0
- package/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.d.ts +15 -0
- package/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.d.ts +30 -0
- package/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.d.ts +5 -0
- package/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.d.ts +28 -0
- package/admin/components/admin-fields/admin-fields.component.d.ts +19 -0
- package/admin/components/admin-fields/store/admin-fields.model.d.ts +4 -0
- package/admin/components/admin-fields/store/fields.actions.d.ts +47 -0
- package/admin/components/admin-fields/store/fields.effects.d.ts +36 -0
- package/admin/components/admin-fields/store/fields.reducer.d.ts +8 -0
- package/admin/components/admin-fields/store/fields.selectors.d.ts +7 -0
- package/admin/components/admin-layout/admin-layout.component.d.ts +24 -0
- package/admin/components/admin-links/admin-links-new/admin-links-new.component.d.ts +33 -0
- package/admin/components/admin-links/admin-links.component.d.ts +19 -0
- package/admin/components/admin-links/store/links.actions.d.ts +31 -0
- package/admin/components/admin-links/store/links.effects.d.ts +28 -0
- package/admin/components/admin-links/store/links.reducer.d.ts +8 -0
- package/admin/components/admin-links/store/links.selectors.d.ts +5 -0
- package/admin/components/admin-menu/admin-menu.component.d.ts +14 -0
- package/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.d.ts +16 -0
- package/admin/components/admin-metadata/admin-metadata.component.d.ts +24 -0
- package/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.d.ts +10 -0
- package/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.d.ts +23 -0
- package/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.d.ts +36 -0
- package/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.d.ts +11 -0
- package/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.d.ts +40 -0
- package/admin/components/admin-metadata/store/metadata.action.d.ts +56 -0
- package/admin/components/admin-metadata/store/metadata.effects.d.ts +36 -0
- package/admin/components/admin-metadata/store/metadata.reducer.d.ts +13 -0
- package/admin/components/admin-metadata/store/metadata.selector.d.ts +10 -0
- package/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.d.ts +12 -0
- package/admin/components/admin-metadata-rules/admin-metadata-rules.component.d.ts +35 -0
- package/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.d.ts +5 -0
- package/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.d.ts +23 -0
- package/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.d.ts +41 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.actions.d.ts +49 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.effects.d.ts +39 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.reducer.d.ts +11 -0
- package/admin/components/admin-metadata-rules/store/metadata-rules.selectors.d.ts +7 -0
- package/admin/components/admin-metadata-user/admin-metadata-user.component.d.ts +25 -0
- package/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.d.ts +17 -0
- package/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.d.ts +10 -0
- package/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.d.ts +23 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.action.d.ts +84 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.effects.d.ts +48 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.d.ts +11 -0
- package/admin/components/admin-metadata-user/store/admin-metadata-user.selector.d.ts +14 -0
- package/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.d.ts +34 -0
- package/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.d.ts +5 -0
- package/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.d.ts +22 -0
- package/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.d.ts +16 -0
- package/admin/components/admin-predicates/admin-predicates.component.d.ts +19 -0
- package/admin/components/admin-predicates/store/predicates.actions.d.ts +46 -0
- package/admin/components/admin-predicates/store/predicates.effects.d.ts +33 -0
- package/admin/components/admin-predicates/store/predicates.reducer.d.ts +9 -0
- package/admin/components/admin-predicates/store/predicates.selectors.d.ts +8 -0
- package/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.d.ts +32 -0
- package/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.d.ts +19 -0
- package/admin/components/admin-relation-types/admin-relation-types.component.d.ts +15 -0
- package/admin/components/admin-title/admin-title.component.d.ts +15 -0
- package/admin/components/admin-user/admin-user-select/admin-user-select.component.d.ts +35 -0
- package/admin/components/admin-user/admin-user.component.d.ts +18 -0
- package/admin/components/admin-user/store/admin-user.action.d.ts +76 -0
- package/admin/components/admin-user/store/admin-user.effects.d.ts +43 -0
- package/admin/components/admin-user/store/admin-user.reducer.d.ts +10 -0
- package/admin/components/admin-user/store/admin-user.selector.d.ts +8 -0
- package/admin/components/admin.component.d.ts +17 -0
- package/admin/i18n/en.translations.d.ts +327 -0
- package/admin/i18n/fr.translations.d.ts +328 -0
- package/admin/index.d.ts +5 -0
- package/admin/public-api.d.ts +1 -0
- package/admin/store/admin.actions.d.ts +41 -0
- package/admin/store/admin.effects.d.ts +34 -0
- package/admin/store/admin.reducer.d.ts +13 -0
- package/admin/store/admin.selectors.d.ts +13 -0
- package/admin/store/admin.service.d.ts +45 -0
- package/assets/backgrounds/chart.svg +684 -0
- package/assets/backgrounds/detail.svg +27 -0
- package/assets/backgrounds/graph.svg +1775 -0
- package/assets/backgrounds/iframe.svg +799 -0
- package/assets/backgrounds/img_processus.png +0 -0
- package/assets/backgrounds/map.svg +154 -0
- package/assets/backgrounds/placeholder.png +0 -0
- package/assets/backgrounds/table.svg +48 -0
- package/assets/backgrounds/template.svg +26 -0
- package/assets/backgrounds/tile.svg +26 -0
- package/assets/fonts/ubuntu-latin-bold.woff2 +0 -0
- package/assets/fonts/ubuntu-latin-medium.woff2 +0 -0
- package/assets/fonts/ubuntu-latin-regular.woff2 +0 -0
- package/assets/svgs/add.svg +4 -0
- package/assets/svgs/add_column.svg +5 -0
- package/assets/svgs/admin-fill.svg +5 -0
- package/assets/svgs/admin.svg +8 -0
- package/assets/svgs/ads_click.svg +5 -0
- package/assets/svgs/apps.svg +5 -0
- package/assets/svgs/area_chart.svg +19 -0
- package/assets/svgs/arrow_back.svg +4 -0
- package/assets/svgs/arrow_right.svg +6 -0
- package/assets/svgs/auto_graph.svg +12 -0
- package/assets/svgs/bar_chart.svg +18 -0
- package/assets/svgs/bubble-chart-line.svg +18 -0
- package/assets/svgs/bulles.svg +5 -0
- package/assets/svgs/chart.svg +5 -0
- package/assets/svgs/chat-settings.svg +5 -0
- package/assets/svgs/check.svg +4 -0
- package/assets/svgs/checkbox-circle.svg +6 -0
- package/assets/svgs/chevron_bottom.svg +6 -0
- package/assets/svgs/chevron_bottom_rounded.svg +5 -0
- package/assets/svgs/chevron_left.svg +6 -0
- package/assets/svgs/chevron_right.svg +6 -0
- package/assets/svgs/chevron_top.svg +3 -0
- package/assets/svgs/chevron_top_rounded.svg +5 -0
- package/assets/svgs/click.svg +4 -0
- package/assets/svgs/close.svg +5 -0
- package/assets/svgs/control.svg +5 -0
- package/assets/svgs/control_point.svg +5 -0
- package/assets/svgs/danger.svg +5 -0
- package/assets/svgs/data.svg +5 -0
- package/assets/svgs/data_usage.svg +5 -0
- package/assets/svgs/dataset.svg +0 -0
- package/assets/svgs/default-restitution.svg +6 -0
- package/assets/svgs/default.svg +28 -0
- package/assets/svgs/delete.svg +5 -0
- package/assets/svgs/detail.svg +5 -0
- package/assets/svgs/donut_large.svg +14 -0
- package/assets/svgs/download.svg +4 -0
- package/assets/svgs/drag_indicator.svg +5 -0
- package/assets/svgs/edit.svg +5 -0
- package/assets/svgs/edit_off.svg +5 -0
- package/assets/svgs/epingle.svg +6 -0
- package/assets/svgs/event-fill.svg +5 -0
- package/assets/svgs/event.svg +5 -0
- package/assets/svgs/exposure_neg_1.svg +4 -0
- package/assets/svgs/exposure_plus_1.svg +4 -0
- package/assets/svgs/eye-arrow-down.svg +14 -0
- package/assets/svgs/eye-arrow-up.svg +14 -0
- package/assets/svgs/eye.svg +5 -0
- package/assets/svgs/file_download.svg +5 -0
- package/assets/svgs/file_upload.svg +5 -0
- package/assets/svgs/fleche_bas.svg +4 -0
- package/assets/svgs/fleche_haut.svg +4 -0
- package/assets/svgs/frequentation.svg +4 -0
- package/assets/svgs/fullscreen.svg +4 -0
- package/assets/svgs/globe.svg +5 -0
- package/assets/svgs/graph.svg +20 -0
- package/assets/svgs/grid_1_2_horizontal.svg +4 -0
- package/assets/svgs/grid_1_2_vertical.svg +4 -0
- package/assets/svgs/grid_1_3_horizontal.svg +5 -0
- package/assets/svgs/grid_1_3_vertical.svg +5 -0
- package/assets/svgs/grid_1_4.svg +6 -0
- package/assets/svgs/grid_2_gauche_1_droite.svg +5 -0
- package/assets/svgs/grid_composition_libre.svg +7 -0
- package/assets/svgs/grid_full.svg +3 -0
- package/assets/svgs/grid_view.svg +4 -0
- package/assets/svgs/heart-add-line.svg +5 -0
- package/assets/svgs/heart-fill.svg +5 -0
- package/assets/svgs/highlight_alt.svg +5 -0
- package/assets/svgs/history-line.svg +5 -0
- package/assets/svgs/home-fill.svg +5 -0
- package/assets/svgs/home-fill_old.svg +4 -0
- package/assets/svgs/home-line.svg +12 -0
- package/assets/svgs/home-line_old.svg +5 -0
- package/assets/svgs/home.svg +12 -0
- package/assets/svgs/iframe.svg +11 -0
- package/assets/svgs/image.svg +6 -0
- package/assets/svgs/info.svg +8 -0
- package/assets/svgs/information-point.svg +5 -0
- package/assets/svgs/lasso.svg +5 -0
- package/assets/svgs/launch.svg +5 -0
- package/assets/svgs/legend.svg +4 -0
- package/assets/svgs/library_add.svg +5 -0
- package/assets/svgs/links_line.svg +5 -0
- package/assets/svgs/map.svg +8 -0
- package/assets/svgs/marqueur.svg +5 -0
- package/assets/svgs/mode_clic.svg +5 -0
- package/assets/svgs/more_horiz.svg +5 -0
- package/assets/svgs/more_vertical.svg +5 -0
- package/assets/svgs/move.svg +5 -0
- package/assets/svgs/noise_aware.svg +12 -0
- package/assets/svgs/north_east.svg +6 -0
- package/assets/svgs/north_west.svg +6 -0
- package/assets/svgs/notification-4-line.svg +5 -0
- package/assets/svgs/notification.svg +5 -0
- package/assets/svgs/notifications.svg +5 -0
- package/assets/svgs/picture-in-picture.svg +7 -0
- package/assets/svgs/place.svg +5 -0
- package/assets/svgs/post_add.svg +8 -0
- package/assets/svgs/presentation-fill.svg +4 -0
- package/assets/svgs/presentation.svg +5 -0
- package/assets/svgs/private.svg +10 -0
- package/assets/svgs/pry_recherche.svg +81 -0
- package/assets/svgs/pry_recherche_pas_de_resultat.svg +81 -0
- package/assets/svgs/public.svg +16 -0
- package/assets/svgs/published_with_changes.svg +5 -0
- package/assets/svgs/question-line.svg +5 -0
- package/assets/svgs/radar_chart.svg +11 -0
- package/assets/svgs/rectangle.svg +5 -0
- package/assets/svgs/remove.svg +4 -0
- package/assets/svgs/renamed.svg +6 -0
- package/assets/svgs/reset.svg +4 -0
- package/assets/svgs/resize.svg +4 -0
- package/assets/svgs/restitution-fill.svg +11 -0
- package/assets/svgs/restitution.svg +15 -0
- package/assets/svgs/restricted.svg +18 -0
- package/assets/svgs/rotate-lock-line.svg +5 -0
- package/assets/svgs/save-fill.svg +4 -0
- package/assets/svgs/save-line.svg +5 -0
- package/assets/svgs/screenshot-fill.svg +5 -0
- package/assets/svgs/search-criteria.svg +5 -0
- package/assets/svgs/search-fill.svg +5 -0
- package/assets/svgs/search-line.svg +5 -0
- package/assets/svgs/search.svg +4 -0
- package/assets/svgs/settings_applications.svg +12 -0
- package/assets/svgs/share.svg +5 -0
- package/assets/svgs/share_location.svg +20 -0
- package/assets/svgs/shield-lock.svg +7 -0
- package/assets/svgs/show_chart.svg +12 -0
- package/assets/svgs/south_east.svg +6 -0
- package/assets/svgs/south_west.svg +6 -0
- package/assets/svgs/stack-fill.svg +5 -0
- package/assets/svgs/stack-line.svg +5 -0
- package/assets/svgs/stop.svg +5 -0
- package/assets/svgs/supervision.svg +13 -0
- package/assets/svgs/svg.svg +5 -0
- package/assets/svgs/synchro.svg +5 -0
- package/assets/svgs/table.svg +5 -0
- package/assets/svgs/table_chart.svg +18 -0
- package/assets/svgs/tags.svg +11 -0
- package/assets/svgs/tile.svg +12 -0
- package/assets/svgs/toc.svg +20 -0
- package/assets/svgs/transformation-fill.svg +21 -0
- package/assets/svgs/transformation.svg +20 -0
- package/assets/svgs/tune.svg +5 -0
- package/assets/svgs/unpublished.svg +5 -0
- package/assets/svgs/upload.svg +4 -0
- package/assets/svgs/user.svg +5 -0
- package/assets/svgs/warning-triangle.svg +5 -0
- package/assets/svgs/warning.svg +5 -0
- package/assets/svgs/zoom.svg +6 -0
- package/components/card/card.component.d.ts +69 -0
- package/components/card/card.module.d.ts +10 -0
- package/components/card/index.d.ts +5 -0
- package/components/card/public-api.d.ts +2 -0
- package/components/checkbox/checkbox.component.d.ts +20 -0
- package/components/checkbox/checkbox.module.d.ts +9 -0
- package/components/checkbox/index.d.ts +5 -0
- package/components/checkbox/public-api.d.ts +2 -0
- package/components/expand-panel/expand-panel.component.d.ts +14 -0
- package/components/expand-panel/expand-panel.module.d.ts +7 -0
- package/components/expand-panel/index.d.ts +5 -0
- package/components/expand-panel/public-api.d.ts +2 -0
- package/components/filter/filter.module.d.ts +7 -0
- package/components/filter/filter.pipe.d.ts +7 -0
- package/components/filter/index.d.ts +5 -0
- package/components/filter/public-api.d.ts +2 -0
- package/components/sinceDate/index.d.ts +5 -0
- package/components/sinceDate/public-api.d.ts +2 -0
- package/components/sinceDate/sinceDate.module.d.ts +7 -0
- package/components/sinceDate/sinceDate.pipe.d.ts +11 -0
- package/components/stepper/index.d.ts +5 -0
- package/components/stepper/public-api.d.ts +4 -0
- package/components/stepper/step/step.component.d.ts +15 -0
- package/components/stepper/step-title.directive.d.ts +8 -0
- package/components/stepper/stepper.component.d.ts +28 -0
- package/components/stepper/stepper.module.d.ts +10 -0
- package/dataset/components/dataset-card/dataset-card.component.d.ts +10 -0
- package/dataset/components/dataset-detail/dataset-detail.component.d.ts +29 -0
- package/dataset/components/dataset.component.d.ts +17 -0
- package/dataset/dataset.module.d.ts +17 -0
- package/dataset/i18n/en.translations.d.ts +33 -0
- package/dataset/i18n/fr.translations.d.ts +38 -0
- package/dataset/index.d.ts +5 -0
- package/dataset/public-api.d.ts +5 -0
- package/dataset/style/_o-pry-dataset-card.scss +29 -0
- package/dataset/style/_o-pry-dataset-detail.scss +55 -0
- package/dataset/style/_o-pry-dataset.scss +31 -0
- package/dataset/style/css.component.d.ts +5 -0
- package/esm2022/admin/admin-routing.module.mjs +567 -0
- package/esm2022/admin/admin.module.mjs +366 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.mjs +50 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +57 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.mjs +34 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.mjs +54 -0
- package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +47 -0
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +81 -0
- package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +66 -0
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +69 -0
- package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +29 -0
- package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +24 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.actions.mjs +28 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.effects.mjs +78 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.model.mjs +20 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.reducer.mjs +110 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.selectors.mjs +29 -0
- package/esm2022/admin/components/admin-abac-rules/store/abac-rules.service.mjs +161 -0
- package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +92 -0
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +146 -0
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +127 -0
- package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +26 -0
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +91 -0
- package/esm2022/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +107 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +30 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +151 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +30 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +81 -0
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +183 -0
- package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +70 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.actions.mjs +32 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.effects.mjs +139 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.reducer.mjs +43 -0
- package/esm2022/admin/components/admin-classes/store/admin-class.selectors.mjs +23 -0
- package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +79 -0
- package/esm2022/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.mjs +26 -0
- package/esm2022/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.mjs +13 -0
- package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +155 -0
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +98 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.actions.mjs +14 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.effects.mjs +34 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.reducer.mjs +11 -0
- package/esm2022/admin/components/admin-dataset/store/admin-dataset.selector.mjs +9 -0
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +125 -0
- package/esm2022/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +94 -0
- package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +26 -0
- package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +51 -0
- package/esm2022/admin/components/admin-environment/store/environment.actions.mjs +19 -0
- package/esm2022/admin/components/admin-environment/store/environment.effects.mjs +47 -0
- package/esm2022/admin/components/admin-environment/store/environment.reducer.mjs +39 -0
- package/esm2022/admin/components/admin-environment/store/environment.selectors.mjs +15 -0
- package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +25 -0
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +85 -0
- package/esm2022/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +96 -0
- package/esm2022/admin/components/admin-fields/admin-fields.component.mjs +52 -0
- package/esm2022/admin/components/admin-fields/store/admin-fields.model.mjs +2 -0
- package/esm2022/admin/components/admin-fields/store/fields.actions.mjs +14 -0
- package/esm2022/admin/components/admin-fields/store/fields.effects.mjs +54 -0
- package/esm2022/admin/components/admin-fields/store/fields.reducer.mjs +14 -0
- package/esm2022/admin/components/admin-fields/store/fields.selectors.mjs +13 -0
- package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +81 -0
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +92 -0
- package/esm2022/admin/components/admin-links/admin-links.component.mjs +60 -0
- package/esm2022/admin/components/admin-links/store/links.actions.mjs +10 -0
- package/esm2022/admin/components/admin-links/store/links.effects.mjs +27 -0
- package/esm2022/admin/components/admin-links/store/links.reducer.mjs +19 -0
- package/esm2022/admin/components/admin-links/store/links.selectors.mjs +9 -0
- package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +38 -0
- package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +32 -0
- package/esm2022/admin/components/admin-metadata/admin-metadata.component.mjs +65 -0
- package/esm2022/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.mjs +21 -0
- package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +77 -0
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +130 -0
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.mjs +21 -0
- package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +90 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.action.mjs +19 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.effects.mjs +33 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.reducer.mjs +35 -0
- package/esm2022/admin/components/admin-metadata/store/metadata.selector.mjs +17 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.mjs +22 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +86 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.mjs +13 -0
- package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +86 -0
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +133 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.actions.mjs +23 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.effects.mjs +51 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.reducer.mjs +28 -0
- package/esm2022/admin/components/admin-metadata-rules/store/metadata-rules.selectors.mjs +13 -0
- package/esm2022/admin/components/admin-metadata-user/admin-metadata-user.component.mjs +65 -0
- package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +33 -0
- package/esm2022/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.mjs +21 -0
- package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +77 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.action.mjs +23 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.effects.mjs +38 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.mjs +45 -0
- package/esm2022/admin/components/admin-metadata-user/store/admin-metadata-user.selector.mjs +17 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +102 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.mjs +13 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +69 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +27 -0
- package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +46 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.actions.mjs +13 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.effects.mjs +28 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.reducer.mjs +40 -0
- package/esm2022/admin/components/admin-predicates/store/predicates.selectors.mjs +15 -0
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +101 -0
- package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +63 -0
- package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +42 -0
- package/esm2022/admin/components/admin-title/admin-title.component.mjs +29 -0
- package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +116 -0
- package/esm2022/admin/components/admin-user/admin-user.component.mjs +34 -0
- package/esm2022/admin/components/admin-user/store/admin-user.action.mjs +21 -0
- package/esm2022/admin/components/admin-user/store/admin-user.effects.mjs +38 -0
- package/esm2022/admin/components/admin-user/store/admin-user.reducer.mjs +27 -0
- package/esm2022/admin/components/admin-user/store/admin-user.selector.mjs +15 -0
- package/esm2022/admin/components/admin.component.mjs +29 -0
- package/esm2022/admin/i18n/en.translations.mjs +328 -0
- package/esm2022/admin/i18n/fr.translations.mjs +329 -0
- package/esm2022/admin/provoly-dashboard-admin.mjs +5 -0
- package/esm2022/admin/public-api.mjs +2 -0
- package/esm2022/admin/store/admin.actions.mjs +12 -0
- package/esm2022/admin/store/admin.effects.mjs +66 -0
- package/esm2022/admin/store/admin.reducer.mjs +52 -0
- package/esm2022/admin/store/admin.selectors.mjs +32 -0
- package/esm2022/admin/store/admin.service.mjs +181 -0
- package/esm2022/components/card/card.component.mjs +270 -0
- package/esm2022/components/card/card.module.mjs +38 -0
- package/esm2022/components/card/provoly-dashboard-components-card.mjs +5 -0
- package/esm2022/components/card/public-api.mjs +3 -0
- package/esm2022/components/checkbox/checkbox.component.mjs +58 -0
- package/esm2022/components/checkbox/checkbox.module.mjs +20 -0
- package/esm2022/components/checkbox/provoly-dashboard-components-checkbox.mjs +5 -0
- package/esm2022/components/checkbox/public-api.mjs +3 -0
- package/esm2022/components/expand-panel/expand-panel.component.mjs +65 -0
- package/esm2022/components/expand-panel/expand-panel.module.mjs +19 -0
- package/esm2022/components/expand-panel/provoly-dashboard-components-expand-panel.mjs +5 -0
- package/esm2022/components/expand-panel/public-api.mjs +3 -0
- package/esm2022/components/filter/filter.module.mjs +16 -0
- package/esm2022/components/filter/filter.pipe.mjs +16 -0
- package/esm2022/components/filter/provoly-dashboard-components-filter.mjs +5 -0
- package/esm2022/components/filter/public-api.mjs +3 -0
- package/esm2022/components/sinceDate/provoly-dashboard-components-sinceDate.mjs +5 -0
- package/esm2022/components/sinceDate/public-api.mjs +3 -0
- package/esm2022/components/sinceDate/sinceDate.module.mjs +16 -0
- package/esm2022/components/sinceDate/sinceDate.pipe.mjs +40 -0
- package/esm2022/components/stepper/provoly-dashboard-components-stepper.mjs +5 -0
- package/esm2022/components/stepper/public-api.mjs +5 -0
- package/esm2022/components/stepper/step/step.component.mjs +36 -0
- package/esm2022/components/stepper/step-title.directive.mjs +14 -0
- package/esm2022/components/stepper/stepper.component.mjs +109 -0
- package/esm2022/components/stepper/stepper.module.mjs +20 -0
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +24 -0
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +86 -0
- package/esm2022/dataset/components/dataset.component.mjs +35 -0
- package/esm2022/dataset/dataset.module.mjs +59 -0
- package/esm2022/dataset/i18n/en.translations.mjs +34 -0
- package/esm2022/dataset/i18n/fr.translations.mjs +39 -0
- package/esm2022/dataset/provoly-dashboard-dataset.mjs +5 -0
- package/esm2022/dataset/public-api.mjs +6 -0
- package/esm2022/dataset/style/css.component.mjs +11 -0
- package/esm2022/filters/date/date-filter.component.mjs +50 -0
- package/esm2022/filters/date/date-filter.module.mjs +25 -0
- package/esm2022/filters/date/provoly-dashboard-filters-date.mjs +5 -0
- package/esm2022/filters/date/public-api.mjs +4 -0
- package/esm2022/filters/date/style/css.component.mjs +11 -0
- package/esm2022/filters/list/list-filter.component.mjs +31 -0
- package/esm2022/filters/list/list-filter.module.mjs +24 -0
- package/esm2022/filters/list/provoly-dashboard-filters-list.mjs +5 -0
- package/esm2022/filters/list/public-api.mjs +4 -0
- package/esm2022/filters/list/style/css.component.mjs +11 -0
- package/esm2022/filters/number/number-filter.component.mjs +26 -0
- package/esm2022/filters/number/number-filter.module.mjs +24 -0
- package/esm2022/filters/number/provoly-dashboard-filters-number.mjs +5 -0
- package/esm2022/filters/number/public-api.mjs +3 -0
- package/esm2022/filters/text/provoly-dashboard-filters-text.mjs +5 -0
- package/esm2022/filters/text/public-api.mjs +3 -0
- package/esm2022/filters/text/text-filter.component.mjs +29 -0
- package/esm2022/filters/text/text-filter.module.mjs +24 -0
- package/esm2022/import/components/import.component.mjs +72 -0
- package/esm2022/import/i18n/en.translations.mjs +28 -0
- package/esm2022/import/i18n/fr.translations.mjs +28 -0
- package/esm2022/import/import-routing.module.mjs +32 -0
- package/esm2022/import/import.module.mjs +61 -0
- package/esm2022/import/provoly-dashboard-import.mjs +5 -0
- package/esm2022/import/public-api.mjs +3 -0
- package/esm2022/import/store/import.actions.mjs +7 -0
- package/esm2022/import/store/import.effects.mjs +32 -0
- package/esm2022/import/store/import.reducer.mjs +23 -0
- package/esm2022/import/store/import.selectors.mjs +10 -0
- package/esm2022/import/store/import.service.mjs +29 -0
- package/esm2022/import/style/css.component.mjs +11 -0
- package/esm2022/lib/core/access/access.directive.mjs +45 -0
- package/esm2022/lib/core/access/access.guard.mjs +21 -0
- package/esm2022/lib/core/access/access.model.mjs +2 -0
- package/esm2022/lib/core/access/access.service.mjs +20 -0
- package/esm2022/lib/core/access/access.utils.mjs +83 -0
- package/esm2022/lib/core/components/base-layout/base-layout.component.mjs +44 -0
- package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +29 -0
- package/esm2022/lib/core/components/base-toolbox/base-toolbox-action.interface.mjs +2 -0
- package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +23 -0
- package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +64 -0
- package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +206 -0
- package/esm2022/lib/core/components/date-picker/date-picker.module.mjs +36 -0
- package/esm2022/lib/core/components/date-picker/date-range-highlight.pipe.mjs +42 -0
- package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +92 -0
- package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +81 -0
- package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +60 -0
- package/esm2022/lib/core/components/edit-input/edit-input.module.mjs +22 -0
- package/esm2022/lib/core/components/get-secured-image/get-secured-image.pipe.mjs +25 -0
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.mjs +30 -0
- package/esm2022/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.mjs +20 -0
- package/esm2022/lib/core/components/icon/icon.component.mjs +92 -0
- package/esm2022/lib/core/components/icon/icon.module.mjs +19 -0
- package/esm2022/lib/core/components/modal/modal.component.mjs +34 -0
- package/esm2022/lib/core/components/modal/pry-modal.module.mjs +22 -0
- package/esm2022/lib/core/components/modalStatus/modalStatus.component.mjs +35 -0
- package/esm2022/lib/core/components/modalStatus/modalStatus.module.mjs +28 -0
- package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +77 -0
- package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +57 -0
- package/esm2022/lib/core/components/overlay/dialog-ref.mjs +15 -0
- package/esm2022/lib/core/components/overlay/dialog.service.mjs +71 -0
- package/esm2022/lib/core/components/overlay/overlay.constantes.mjs +9 -0
- package/esm2022/lib/core/components/overlay/overlay.directive.mjs +125 -0
- package/esm2022/lib/core/components/overlay/overlay.module.mjs +23 -0
- package/esm2022/lib/core/components/overlay/tooltip.directive.mjs +121 -0
- package/esm2022/lib/core/components/range/range.component.mjs +106 -0
- package/esm2022/lib/core/components/range/range.module.mjs +19 -0
- package/esm2022/lib/core/components/select/select.component.mjs +118 -0
- package/esm2022/lib/core/components/select/select.module.mjs +22 -0
- package/esm2022/lib/core/components/select-image/select-image.component.mjs +84 -0
- package/esm2022/lib/core/components/share/share.component.mjs +83 -0
- package/esm2022/lib/core/components/share/share.model.mjs +7 -0
- package/esm2022/lib/core/components/share/share.module.mjs +21 -0
- package/esm2022/lib/core/components/snackbar/snack.interface.mjs +2 -0
- package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +65 -0
- package/esm2022/lib/core/components/snackbar/snackbar.module.mjs +19 -0
- package/esm2022/lib/core/components/snackbar/snackbar.service.mjs +63 -0
- package/esm2022/lib/core/components/sort/sort-data.pipe.mjs +54 -0
- package/esm2022/lib/core/components/sort/sort-header/sort-header.component.mjs +52 -0
- package/esm2022/lib/core/components/sort/sort-header.directive.mjs +13 -0
- package/esm2022/lib/core/components/sort/sort-table.directive.mjs +64 -0
- package/esm2022/lib/core/components/sort/sort.model.mjs +2 -0
- package/esm2022/lib/core/components/sort/sort.module.mjs +23 -0
- package/esm2022/lib/core/components/title-presentation/title-presentation.component.mjs +26 -0
- package/esm2022/lib/core/components/toggle/toggle.component.mjs +100 -0
- package/esm2022/lib/core/components/toggle/toggle.module.mjs +21 -0
- package/esm2022/lib/core/components/translate-id/translate-id.pipe.mjs +115 -0
- package/esm2022/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.mjs +27 -0
- package/esm2022/lib/core/components/upload/upload.component.mjs +88 -0
- package/esm2022/lib/core/core.module.mjs +179 -0
- package/esm2022/lib/core/errors/http-error-interceptor.service.mjs +44 -0
- package/esm2022/lib/core/i18n/deep-merge.function.mjs +21 -0
- package/esm2022/lib/core/i18n/en.translations.mjs +323 -0
- package/esm2022/lib/core/i18n/fr.translations.mjs +323 -0
- package/esm2022/lib/core/i18n/i18n.module.mjs +16 -0
- package/esm2022/lib/core/i18n/i18n.pipe.mjs +42 -0
- package/esm2022/lib/core/i18n/i18n.service.mjs +88 -0
- package/esm2022/lib/core/model/admin-api.model.mjs +45 -0
- package/esm2022/lib/core/model/dataset.interface.mjs +13 -0
- package/esm2022/lib/core/model/filter.interface.mjs +2 -0
- package/esm2022/lib/core/model/item.interface.mjs +2 -0
- package/esm2022/lib/core/model/manifest.interface.mjs +11 -0
- package/esm2022/lib/core/model/mimetype-resultset.constant.mjs +2 -0
- package/esm2022/lib/core/model/notification-interface.mjs +2 -0
- package/esm2022/lib/core/model/public-api.mjs +25 -0
- package/esm2022/lib/core/model/relation.interface.mjs +2 -0
- package/esm2022/lib/core/model/result-order.interface.mjs +2 -0
- package/esm2022/lib/core/model/result-set.interface.mjs +2 -0
- package/esm2022/lib/core/model/search-mono-class.model.mjs +17 -0
- package/esm2022/lib/core/model/search-multi-class.model.mjs +2 -0
- package/esm2022/lib/core/model/tooltip-of-class.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +26 -0
- package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +63 -0
- package/esm2022/lib/core/model/widget-detail-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-graph-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-iframe-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-image-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +19 -0
- package/esm2022/lib/core/model/widget-table-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-template-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget-tile-manifest.interface.mjs +2 -0
- package/esm2022/lib/core/model/widget.interface.mjs +2 -0
- package/esm2022/lib/core/public-api.mjs +113 -0
- package/esm2022/lib/core/store/category/category.actions.mjs +7 -0
- package/esm2022/lib/core/store/category/category.effects.mjs +20 -0
- package/esm2022/lib/core/store/category/category.interface.mjs +2 -0
- package/esm2022/lib/core/store/category/category.reducer.mjs +19 -0
- package/esm2022/lib/core/store/category/category.selectors.mjs +11 -0
- package/esm2022/lib/core/store/category/category.service.mjs +26 -0
- package/esm2022/lib/core/store/class/class.actions.mjs +13 -0
- package/esm2022/lib/core/store/class/class.effects.mjs +26 -0
- package/esm2022/lib/core/store/class/class.interface.mjs +2 -0
- package/esm2022/lib/core/store/class/class.reducer.mjs +42 -0
- package/esm2022/lib/core/store/class/class.selectors.mjs +31 -0
- package/esm2022/lib/core/store/class/class.service.mjs +42 -0
- package/esm2022/lib/core/store/config/config.actions.mjs +31 -0
- package/esm2022/lib/core/store/config/config.effects.mjs +100 -0
- package/esm2022/lib/core/store/config/config.reducer.mjs +122 -0
- package/esm2022/lib/core/store/config/config.selectors.mjs +82 -0
- package/esm2022/lib/core/store/config/config.service.mjs +106 -0
- package/esm2022/lib/core/store/config/config.widget.constants.mjs +55 -0
- package/esm2022/lib/core/store/config/icon-definitions.interface.mjs +19 -0
- package/esm2022/lib/core/store/config/open-map-tiles.service.mjs +37 -0
- package/esm2022/lib/core/store/context-menu/context-menu.actions.mjs +6 -0
- package/esm2022/lib/core/store/context-menu/context-menu.effects.mjs +14 -0
- package/esm2022/lib/core/store/context-menu/context-menu.reducer.mjs +29 -0
- package/esm2022/lib/core/store/context-menu/context-menu.selectors.mjs +19 -0
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +53 -0
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +151 -0
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +2 -0
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +87 -0
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +66 -0
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +123 -0
- package/esm2022/lib/core/store/data-source/named-query-types.model.mjs +7 -0
- package/esm2022/lib/core/store/data-source/named-query-utils.mjs +13 -0
- package/esm2022/lib/core/store/field/field.actions.mjs +7 -0
- package/esm2022/lib/core/store/field/field.effects.mjs +20 -0
- package/esm2022/lib/core/store/field/field.interface.mjs +18 -0
- package/esm2022/lib/core/store/field/field.reducer.mjs +19 -0
- package/esm2022/lib/core/store/field/field.selectors.mjs +19 -0
- package/esm2022/lib/core/store/field/field.service.mjs +36 -0
- package/esm2022/lib/core/store/image/image.actions.mjs +10 -0
- package/esm2022/lib/core/store/image/image.effects.mjs +21 -0
- package/esm2022/lib/core/store/image/image.reducer.mjs +23 -0
- package/esm2022/lib/core/store/image/image.selectors.mjs +19 -0
- package/esm2022/lib/core/store/image/image.service.mjs +72 -0
- package/esm2022/lib/core/store/item/item.actions.mjs +7 -0
- package/esm2022/lib/core/store/item/item.effects.mjs +44 -0
- package/esm2022/lib/core/store/item/item.service.mjs +50 -0
- package/esm2022/lib/core/store/raw/raw.service.mjs +50 -0
- package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +22 -0
- package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +48 -0
- package/esm2022/lib/core/store/relation-types/relation-types.interface.mjs +2 -0
- package/esm2022/lib/core/store/relation-types/relation-types.reducer.mjs +33 -0
- package/esm2022/lib/core/store/relation-types/relation-types.selectors.mjs +18 -0
- package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +46 -0
- package/esm2022/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.mjs +35 -0
- package/esm2022/lib/core/store/search/search.actions.mjs +9 -0
- package/esm2022/lib/core/store/search/search.constants.mjs +3 -0
- package/esm2022/lib/core/store/search/search.effects.mjs +36 -0
- package/esm2022/lib/core/store/search/search.reducer.mjs +25 -0
- package/esm2022/lib/core/store/search/search.selectors.mjs +9 -0
- package/esm2022/lib/core/store/search/search.service.mjs +96 -0
- package/esm2022/lib/core/symbol/symbol.service.mjs +182 -0
- package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +335 -0
- package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +167 -0
- package/esm2022/lib/core/ws/websocket.service.mjs +92 -0
- package/esm2022/lib/dashboard/action-bus/bus-action.interface.mjs +2 -0
- package/esm2022/lib/dashboard/action-bus/effect/action-bus.effects.mjs +23 -0
- package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +86 -0
- package/esm2022/lib/dashboard/action-bus/service/control-message.interface.mjs +2 -0
- package/esm2022/lib/dashboard/base-widget.module.mjs +16 -0
- package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +131 -0
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +267 -0
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +558 -0
- package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +60 -0
- package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +33 -0
- package/esm2022/lib/dashboard/components/solve-collisions.function.mjs +88 -0
- package/esm2022/lib/dashboard/components/subscriptionner.directive.mjs +17 -0
- package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +45 -0
- package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +62 -0
- package/esm2022/lib/dashboard/components/widgets/data-widget.component.mjs +59 -0
- package/esm2022/lib/dashboard/components/widgets/header/resultset-size.pipe.mjs +45 -0
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +474 -0
- package/esm2022/lib/dashboard/components/widgets/public-api.mjs +10 -0
- package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +97 -0
- package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +20 -0
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.mjs +60 -0
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.mjs +90 -0
- package/esm2022/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.mjs +2 -0
- package/esm2022/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.mjs +17 -0
- package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +183 -0
- package/esm2022/lib/dashboard/dashboard.module.mjs +172 -0
- package/esm2022/lib/dashboard/date-utils.mjs +7 -0
- package/esm2022/lib/dashboard/filter/base-filter.component.mjs +32 -0
- package/esm2022/lib/dashboard/filter/base-filter.module.mjs +15 -0
- package/esm2022/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.mjs +42 -0
- package/esm2022/lib/dashboard/filter/filter-factory.service.mjs +67 -0
- package/esm2022/lib/dashboard/filter/filter-loader.function.mjs +21 -0
- package/esm2022/lib/dashboard/filter/public-api.mjs +6 -0
- package/esm2022/lib/dashboard/guard/default-view.guard.mjs +41 -0
- package/esm2022/lib/dashboard/item-utils.mjs +167 -0
- package/esm2022/lib/dashboard/public-api.mjs +31 -0
- package/esm2022/lib/dashboard/resultset-utils.mjs +30 -0
- package/esm2022/lib/dashboard/store/dashboard-init.service.mjs +37 -0
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +76 -0
- package/esm2022/lib/dashboard/store/dashboard.contants.mjs +5 -0
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +333 -0
- package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +590 -0
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +118 -0
- package/esm2022/lib/dashboard/store/geocoding.service.mjs +44 -0
- package/esm2022/lib/dashboard/store/manifest.service.mjs +95 -0
- package/esm2022/lib/dashboard/store/refresh.service.mjs +37 -0
- package/esm2022/lib/dashboard/store/title.service.mjs +39 -0
- package/esm2022/lib/dashboard/tooltip/base-tooltip.component.mjs +20 -0
- package/esm2022/lib/dashboard/tooltip/base-tooltip.module.mjs +16 -0
- package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +15 -0
- package/esm2022/lib/dashboard/tooltip/public-api.mjs +6 -0
- package/esm2022/lib/dashboard/tooltip/tooltip-factory.service.mjs +77 -0
- package/esm2022/lib/dashboard/tooltip/tooltip-loader.function.mjs +22 -0
- package/esm2022/lib/dashboard/widget-loader.function.mjs +22 -0
- package/esm2022/notification/components/notification/content/notification-content.component.mjs +62 -0
- package/esm2022/notification/components/notification/notification.component.mjs +59 -0
- package/esm2022/notification/i18n/en.translations.mjs +23 -0
- package/esm2022/notification/i18n/fr.translations.mjs +23 -0
- package/esm2022/notification/notification.module.mjs +53 -0
- package/esm2022/notification/provoly-dashboard-notification.mjs +5 -0
- package/esm2022/notification/public-api.mjs +9 -0
- package/esm2022/notification/store/notification.actions.mjs +9 -0
- package/esm2022/notification/store/notification.effects.mjs +37 -0
- package/esm2022/notification/store/notification.reducer.mjs +20 -0
- package/esm2022/notification/store/notification.selectors.mjs +9 -0
- package/esm2022/notification/store/notification.service.mjs +31 -0
- package/esm2022/notification/style/css.component.mjs +11 -0
- package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +103 -0
- package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +101 -0
- package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +305 -0
- package/esm2022/pipeline/components/pipeline-editor/pipeline.interface.mjs +7 -0
- package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +174 -0
- package/esm2022/pipeline/components/pipeline-properties-panel.component.mjs +22 -0
- package/esm2022/pipeline/factory/pipeline-component-factory.service.mjs +58 -0
- package/esm2022/pipeline/i18n/en.translations.mjs +74 -0
- package/esm2022/pipeline/i18n/fr.translations.mjs +74 -0
- package/esm2022/pipeline/node-class/base-node.class.mjs +44 -0
- package/esm2022/pipeline/pipeline.module.mjs +83 -0
- package/esm2022/pipeline/provoly-dashboard-pipeline.mjs +5 -0
- package/esm2022/pipeline/public-api.mjs +17 -0
- package/esm2022/pipeline/store/pipeline.actions.mjs +15 -0
- package/esm2022/pipeline/store/pipeline.effects.mjs +71 -0
- package/esm2022/pipeline/store/pipeline.reducer.mjs +41 -0
- package/esm2022/pipeline/store/pipeline.selectors.mjs +18 -0
- package/esm2022/pipeline/store/pipeline.service.mjs +51 -0
- package/esm2022/pipeline/style/css.component.mjs +11 -0
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +62 -0
- package/esm2022/pipeline-components/filter/filter.module.mjs +52 -0
- package/esm2022/pipeline-components/filter/i18n/en.translations.mjs +16 -0
- package/esm2022/pipeline-components/filter/i18n/fr.translations.mjs +16 -0
- package/esm2022/pipeline-components/filter/node-class/filter-node.class.mjs +10 -0
- package/esm2022/pipeline-components/filter/provoly-dashboard-pipeline-components-filter.mjs +5 -0
- package/esm2022/pipeline-components/filter/public-api.mjs +4 -0
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +28 -0
- package/esm2022/pipeline-components/input-datasource/i18n/en.translations.mjs +8 -0
- package/esm2022/pipeline-components/input-datasource/i18n/fr.translations.mjs +8 -0
- package/esm2022/pipeline-components/input-datasource/input-datasource.module.mjs +59 -0
- package/esm2022/pipeline-components/input-datasource/node-class/input-datasourse-node.class.mjs +16 -0
- package/esm2022/pipeline-components/input-datasource/provoly-dashboard-pipeline-components-input-datasource.mjs +5 -0
- package/esm2022/pipeline-components/input-datasource/public-api.mjs +4 -0
- package/esm2022/pipeline-components/noop/component/noop.component.mjs +18 -0
- package/esm2022/pipeline-components/noop/node-class/noop-node.class.mjs +10 -0
- package/esm2022/pipeline-components/noop/noop.module.mjs +46 -0
- package/esm2022/pipeline-components/noop/provoly-dashboard-pipeline-components-noop.mjs +5 -0
- package/esm2022/pipeline-components/noop/public-api.mjs +4 -0
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +30 -0
- package/esm2022/pipeline-components/output-dataset/i18n/en.translations.mjs +8 -0
- package/esm2022/pipeline-components/output-dataset/i18n/fr.translations.mjs +8 -0
- package/esm2022/pipeline-components/output-dataset/node-class/output-dataset-node.class.mjs +17 -0
- package/esm2022/pipeline-components/output-dataset/output-dataset.module.mjs +60 -0
- package/esm2022/pipeline-components/output-dataset/provoly-dashboard-pipeline-components-output-dataset.mjs +5 -0
- package/esm2022/pipeline-components/output-dataset/public-api.mjs +4 -0
- package/esm2022/pipeline-components/subgraph/component/empty.component.mjs +18 -0
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-input.class.mjs +15 -0
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-node.class.mjs +96 -0
- package/esm2022/pipeline-components/subgraph/node-class/sub-graph-output.class.mjs +15 -0
- package/esm2022/pipeline-components/subgraph/provoly-dashboard-pipeline-components-subgraph.mjs +5 -0
- package/esm2022/pipeline-components/subgraph/public-api.mjs +6 -0
- package/esm2022/pipeline-components/subgraph/subgraph.module.mjs +50 -0
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +119 -0
- package/esm2022/presentation/components/presentation.component.mjs +231 -0
- package/esm2022/presentation/i18n/en.translations.mjs +40 -0
- package/esm2022/presentation/i18n/fr.translations.mjs +41 -0
- package/esm2022/presentation/presentation.module.mjs +72 -0
- package/esm2022/presentation/provoly-dashboard-presentation.mjs +5 -0
- package/esm2022/presentation/public-api.mjs +5 -0
- package/esm2022/presentation/style/css.component.mjs +11 -0
- package/esm2022/provoly-dashboard.mjs +5 -0
- package/esm2022/public-api.mjs +6 -0
- package/esm2022/restitution/components/restitution/restitution.component.mjs +216 -0
- package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +114 -0
- package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +68 -0
- package/esm2022/restitution/i18n/en.translations.mjs +44 -0
- package/esm2022/restitution/i18n/fr.translations.mjs +44 -0
- package/esm2022/restitution/model/restitution.model.mjs +2 -0
- package/esm2022/restitution/provoly-dashboard-restitution.mjs +5 -0
- package/esm2022/restitution/public-api.mjs +5 -0
- package/esm2022/restitution/restitution.module.mjs +86 -0
- package/esm2022/restitution/style/css.component.mjs +11 -0
- package/esm2022/search/components/choose-widget/choose-widget.component.mjs +67 -0
- package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +101 -0
- package/esm2022/search/components/edit-named-query-modal/edit-named-query-modal.component.mjs +55 -0
- package/esm2022/search/components/save-query/save-query.component.mjs +106 -0
- package/esm2022/search/components/save-query-button/save-query-button.component.mjs +76 -0
- package/esm2022/search/i18n/en.translations.mjs +132 -0
- package/esm2022/search/i18n/fr.translations.mjs +132 -0
- package/esm2022/search/provoly-dashboard-search.mjs +5 -0
- package/esm2022/search/public-api.mjs +13 -0
- package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +207 -0
- package/esm2022/search/search-fulltext/store/search-fulltext.actions.mjs +6 -0
- package/esm2022/search/search-fulltext/store/search-fulltext.effects.mjs +38 -0
- package/esm2022/search/search-fulltext/store/search-fulltext.service.mjs +22 -0
- package/esm2022/search/search-home/search-home.component.mjs +199 -0
- package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +78 -0
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +139 -0
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +34 -0
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +69 -0
- package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +37 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.actions.mjs +26 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.effects.mjs +112 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.reducer.mjs +139 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.selectors.mjs +38 -0
- package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +161 -0
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +150 -0
- package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +62 -0
- package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +37 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.actions.mjs +16 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.effects.mjs +66 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.reducer.mjs +59 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.selectors.mjs +32 -0
- package/esm2022/search/search-multi-class/store/search-multi-class.service.mjs +125 -0
- package/esm2022/search/search-tools/search-tools.component.mjs +151 -0
- package/esm2022/search/search.module.mjs +156 -0
- package/esm2022/search/style/css.component.mjs +11 -0
- package/esm2022/supervision/components/supervision-business-data/supervision-business-data.component.mjs +34 -0
- package/esm2022/supervision/components/supervision-flow/supervision-flow.component.mjs +33 -0
- package/esm2022/supervision/components/supervision-infrastructures/supervision-infrastructures.component.mjs +51 -0
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +27 -0
- package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +100 -0
- package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +47 -0
- package/esm2022/supervision/components/supervision-menu/supervision-menu.component.mjs +32 -0
- package/esm2022/supervision/components/supervision-title/supervision-title.component.mjs +24 -0
- package/esm2022/supervision/components/supervision.component.mjs +19 -0
- package/esm2022/supervision/i18n/en.translations.mjs +58 -0
- package/esm2022/supervision/i18n/fr.translations.mjs +58 -0
- package/esm2022/supervision/provoly-dashboard-supervision.mjs +5 -0
- package/esm2022/supervision/public-api.mjs +2 -0
- package/esm2022/supervision/store/supervision-api.model.mjs +2 -0
- package/esm2022/supervision/store/supervision.actions.mjs +33 -0
- package/esm2022/supervision/store/supervision.effects.mjs +60 -0
- package/esm2022/supervision/store/supervision.reducer.mjs +115 -0
- package/esm2022/supervision/store/supervision.selectors.mjs +35 -0
- package/esm2022/supervision/store/supervision.service.mjs +54 -0
- package/esm2022/supervision/supervision-routing.module.mjs +96 -0
- package/esm2022/supervision/supervision.module.mjs +96 -0
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +24 -0
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +43 -0
- package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +27 -0
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +235 -0
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +24 -0
- package/esm2022/toolbox/components/named-query/named-query.component.mjs +35 -0
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +207 -0
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +109 -0
- package/esm2022/toolbox/components/toolbox.component.mjs +32 -0
- package/esm2022/toolbox/provoly-dashboard-toolbox.mjs +5 -0
- package/esm2022/toolbox/public-api.mjs +12 -0
- package/esm2022/toolbox/style/css.component.mjs +11 -0
- package/esm2022/toolbox/toolbox.module.mjs +107 -0
- package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +33 -0
- package/esm2022/tooltips/attribute/attribute-tooltip.module.mjs +24 -0
- package/esm2022/tooltips/attribute/provoly-dashboard-tooltips-attribute.mjs +5 -0
- package/esm2022/tooltips/attribute/public-api.mjs +3 -0
- package/esm2022/tooltips/cluster/cluster-tooltip.component.mjs +12 -0
- package/esm2022/tooltips/cluster/cluster-tooltip.module.mjs +24 -0
- package/esm2022/tooltips/cluster/provoly-dashboard-tooltips-cluster.mjs +5 -0
- package/esm2022/tooltips/cluster/public-api.mjs +3 -0
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +633 -0
- package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +104 -0
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +104 -0
- package/esm2022/widgets/widget-aggregated-chart/provoly-dashboard-widgets-widget-aggregated-chart.mjs +5 -0
- package/esm2022/widgets/widget-aggregated-chart/public-api.mjs +6 -0
- package/esm2022/widgets/widget-aggregated-chart/service/backend-aggregation.service.mjs +103 -0
- package/esm2022/widgets/widget-aggregated-chart/service/base-aggregation.service.mjs +16 -0
- package/esm2022/widgets/widget-aggregated-chart/service/frontend-aggregation.service.mjs +206 -0
- package/esm2022/widgets/widget-aggregated-chart/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +72 -0
- package/esm2022/widgets/widget-chart/component/vega-error.handler.mjs +36 -0
- package/esm2022/widgets/widget-chart/component/vega-spec.constant.mjs +248 -0
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +652 -0
- package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +114 -0
- package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +114 -0
- package/esm2022/widgets/widget-chart/provoly-dashboard-widgets-widget-chart.mjs +5 -0
- package/esm2022/widgets/widget-chart/public-api.mjs +3 -0
- package/esm2022/widgets/widget-chart/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-chart/widget-chart.module.mjs +70 -0
- package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +131 -0
- package/esm2022/widgets/widget-detail/i18n/en.translations.mjs +14 -0
- package/esm2022/widgets/widget-detail/i18n/fr.translations.mjs +14 -0
- package/esm2022/widgets/widget-detail/provoly-dashboard-widgets-widget-detail.mjs +5 -0
- package/esm2022/widgets/widget-detail/public-api.mjs +3 -0
- package/esm2022/widgets/widget-detail/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-detail/widget-detail.module.mjs +64 -0
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +448 -0
- package/esm2022/widgets/widget-graph/i18n/en.translations.mjs +15 -0
- package/esm2022/widgets/widget-graph/i18n/fr.translations.mjs +15 -0
- package/esm2022/widgets/widget-graph/layout/node.interface.mjs +2 -0
- package/esm2022/widgets/widget-graph/layout/simple.function.mjs +99 -0
- package/esm2022/widgets/widget-graph/provoly-dashboard-widgets-widget-graph.mjs +5 -0
- package/esm2022/widgets/widget-graph/public-api.mjs +4 -0
- package/esm2022/widgets/widget-graph/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-graph/widget-graph.module.mjs +73 -0
- package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +53 -0
- package/esm2022/widgets/widget-iframe/i18n/en.translations.mjs +11 -0
- package/esm2022/widgets/widget-iframe/i18n/fr.translations.mjs +11 -0
- package/esm2022/widgets/widget-iframe/messaging/iframe-message-type.interface.mjs +2 -0
- package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +30 -0
- package/esm2022/widgets/widget-iframe/provoly-dashboard-widgets-widget-iframe.mjs +5 -0
- package/esm2022/widgets/widget-iframe/public-api.mjs +5 -0
- package/esm2022/widgets/widget-iframe/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-iframe/widget-iframe.module.mjs +66 -0
- package/esm2022/widgets/widget-image/component/widget-image.component.mjs +33 -0
- package/esm2022/widgets/widget-image/provoly-dashboard-widgets-widget-image.mjs +5 -0
- package/esm2022/widgets/widget-image/public-api.mjs +3 -0
- package/esm2022/widgets/widget-image/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-image/widget-image.module.mjs +24 -0
- package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +317 -0
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +822 -0
- package/esm2022/widgets/widget-map/i18n/en.translations.mjs +81 -0
- package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +81 -0
- package/esm2022/widgets/widget-map/interaction/selection-interaction.class.mjs +170 -0
- package/esm2022/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.mjs +52 -0
- package/esm2022/widgets/widget-map/pipe/widget-map-legend-url.pipe.mjs +22 -0
- package/esm2022/widgets/widget-map/provoly-dashboard-widgets-widget-map.mjs +5 -0
- package/esm2022/widgets/widget-map/public-api.mjs +7 -0
- package/esm2022/widgets/widget-map/reader/kmz-zip-reader.class.mjs +57 -0
- package/esm2022/widgets/widget-map/reader/map-formats-reader.class.mjs +37 -0
- package/esm2022/widgets/widget-map/reader/random-color-style.function.mjs +32 -0
- package/esm2022/widgets/widget-map/reader/read-as-text.class.mjs +30 -0
- package/esm2022/widgets/widget-map/reader/shp-zip-reader.class.mjs +35 -0
- package/esm2022/widgets/widget-map/search-bar/search-bar.control.mjs +66 -0
- package/esm2022/widgets/widget-map/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +229 -0
- package/esm2022/widgets/widget-map/widget-map.module.mjs +72 -0
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +187 -0
- package/esm2022/widgets/widget-table/expand-value/detach-row.directive.mjs +30 -0
- package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +32 -0
- package/esm2022/widgets/widget-table/expand-value/format-number.pipe.mjs +29 -0
- package/esm2022/widgets/widget-table/get-value/get-value.pipe.mjs +43 -0
- package/esm2022/widgets/widget-table/i18n/en.translations.mjs +15 -0
- package/esm2022/widgets/widget-table/i18n/fr.translations.mjs +15 -0
- package/esm2022/widgets/widget-table/provoly-dashboard-widgets-widget-table.mjs +5 -0
- package/esm2022/widgets/widget-table/public-api.mjs +6 -0
- package/esm2022/widgets/widget-table/resizable/resizable.component.mjs +21 -0
- package/esm2022/widgets/widget-table/resizable/resizable.directive.mjs +34 -0
- package/esm2022/widgets/widget-table/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-table/widget-table.module.mjs +86 -0
- package/esm2022/widgets/widget-template/component/widget-template.component.mjs +86 -0
- package/esm2022/widgets/widget-template/provoly-dashboard-widgets-widget-template.mjs +5 -0
- package/esm2022/widgets/widget-template/public-api.mjs +3 -0
- package/esm2022/widgets/widget-template/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-template/widget-template.module.mjs +52 -0
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +114 -0
- package/esm2022/widgets/widget-tile/i18n/en.translations.mjs +13 -0
- package/esm2022/widgets/widget-tile/i18n/fr.translations.mjs +13 -0
- package/esm2022/widgets/widget-tile/provoly-dashboard-widgets-widget-tile.mjs +5 -0
- package/esm2022/widgets/widget-tile/public-api.mjs +3 -0
- package/esm2022/widgets/widget-tile/style/css.component.mjs +11 -0
- package/esm2022/widgets/widget-tile/widget-tile.module.mjs +72 -0
- package/fesm2022/provoly-dashboard-admin.mjs +6992 -0
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-card.mjs +312 -0
- package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-checkbox.mjs +81 -0
- package/fesm2022/provoly-dashboard-components-checkbox.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs +88 -0
- package/fesm2022/provoly-dashboard-components-expand-panel.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-filter.mjs +36 -0
- package/fesm2022/provoly-dashboard-components-filter.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs +60 -0
- package/fesm2022/provoly-dashboard-components-sinceDate.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-stepper.mjs +175 -0
- package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-dataset.mjs +268 -0
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-date.mjs +85 -0
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-list.mjs +65 -0
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-number.mjs +53 -0
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-filters-text.mjs +56 -0
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-import.mjs +302 -0
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-notification.mjs +303 -0
- package/fesm2022/provoly-dashboard-notification.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +154 -0
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +116 -0
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs +76 -0
- package/fesm2022/provoly-dashboard-pipeline-components-noop.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +120 -0
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs +188 -0
- package/fesm2022/provoly-dashboard-pipeline-components-subgraph.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-pipeline.mjs +1183 -0
- package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-presentation.mjs +498 -0
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-restitution.mjs +557 -0
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-search.mjs +2590 -0
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-supervision.mjs +866 -0
- package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-toolbox.mjs +774 -0
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +60 -0
- package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs +39 -0
- package/fesm2022/provoly-dashboard-tooltips-cluster.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1228 -0
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1238 -0
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +230 -0
- package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +656 -0
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +173 -0
- package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs +67 -0
- package/fesm2022/provoly-dashboard-widgets-widget-image.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +2055 -0
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +464 -0
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +148 -0
- package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +219 -0
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -0
- package/fesm2022/provoly-dashboard.mjs +10650 -0
- package/fesm2022/provoly-dashboard.mjs.map +1 -0
- package/filters/date/date-filter.component.d.ts +17 -0
- package/filters/date/date-filter.module.d.ts +15 -0
- package/filters/date/index.d.ts +5 -0
- package/filters/date/public-api.d.ts +3 -0
- package/filters/date/style/_m-date.scss +6 -0
- package/filters/date/style/css.component.d.ts +5 -0
- package/filters/list/index.d.ts +5 -0
- package/filters/list/list-filter.component.d.ts +12 -0
- package/filters/list/list-filter.module.d.ts +14 -0
- package/filters/list/public-api.d.ts +3 -0
- package/filters/list/style/_m-list.scss +7 -0
- package/filters/list/style/css.component.d.ts +5 -0
- package/filters/number/index.d.ts +5 -0
- package/filters/number/number-filter.component.d.ts +11 -0
- package/filters/number/number-filter.module.d.ts +14 -0
- package/filters/number/public-api.d.ts +2 -0
- package/filters/text/index.d.ts +5 -0
- package/filters/text/public-api.d.ts +2 -0
- package/filters/text/text-filter.component.d.ts +12 -0
- package/filters/text/text-filter.module.d.ts +14 -0
- package/import/components/import.component.d.ts +29 -0
- package/import/i18n/en.translations.d.ts +27 -0
- package/import/i18n/fr.translations.d.ts +27 -0
- package/import/import-routing.module.d.ts +7 -0
- package/import/import.module.d.ts +17 -0
- package/import/index.d.ts +5 -0
- package/import/public-api.d.ts +2 -0
- package/import/store/import.actions.d.ts +33 -0
- package/import/store/import.effects.d.ts +18 -0
- package/import/store/import.reducer.d.ts +11 -0
- package/import/store/import.selectors.d.ts +9 -0
- package/import/store/import.service.d.ts +12 -0
- package/import/style/_o-import.scss +51 -0
- package/import/style/css.component.d.ts +5 -0
- package/index.d.ts +5 -0
- package/lib/core/access/access.directive.d.ts +16 -0
- package/lib/core/access/access.guard.d.ts +13 -0
- package/lib/core/access/access.model.d.ts +24 -0
- package/lib/core/access/access.service.d.ts +13 -0
- package/lib/core/access/access.utils.d.ts +6 -0
- package/lib/core/components/base-layout/base-layout.component.d.ts +20 -0
- package/lib/core/components/base-menu/base-menu.component.d.ts +27 -0
- package/lib/core/components/base-toolbox/base-toolbox-action.interface.d.ts +12 -0
- package/lib/core/components/base-toolbox/base-toolbox.component.d.ts +10 -0
- package/lib/core/components/base-toolbox-action/base-toolbox-action.component.d.ts +23 -0
- package/lib/core/components/date-picker/date-picker.component.d.ts +47 -0
- package/lib/core/components/date-picker/date-picker.module.d.ts +14 -0
- package/lib/core/components/date-picker/date-range-highlight.pipe.d.ts +8 -0
- package/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.d.ts +26 -0
- package/lib/core/components/date-picker/time-picker/time-picker.component.d.ts +28 -0
- package/lib/core/components/edit-input/edit-input.component.d.ts +21 -0
- package/lib/core/components/edit-input/edit-input.module.d.ts +11 -0
- package/lib/core/components/get-secured-image/get-secured-image.pipe.d.ts +16 -0
- package/lib/core/components/hidden-when-overlay/hidden-when-overlay.directive.d.ts +12 -0
- package/lib/core/components/hidden-when-overlay/hidden-when-overlay.module.d.ts +9 -0
- package/lib/core/components/icon/icon.component.d.ts +32 -0
- package/lib/core/components/icon/icon.module.d.ts +8 -0
- package/lib/core/components/modal/modal.component.d.ts +11 -0
- package/lib/core/components/modal/pry-modal.module.d.ts +11 -0
- package/lib/core/components/modalStatus/modalStatus.component.d.ts +17 -0
- package/lib/core/components/modalStatus/modalStatus.module.d.ts +13 -0
- package/lib/core/components/nq-color-selector/nq-color-selector.component.d.ts +23 -0
- package/lib/core/components/overlay/dialog-confirm.component.d.ts +29 -0
- package/lib/core/components/overlay/dialog-ref.d.ts +9 -0
- package/lib/core/components/overlay/dialog.service.d.ts +27 -0
- package/lib/core/components/overlay/overlay.constantes.d.ts +4 -0
- package/lib/core/components/overlay/overlay.directive.d.ts +27 -0
- package/lib/core/components/overlay/overlay.module.d.ts +13 -0
- package/lib/core/components/overlay/tooltip.directive.d.ts +28 -0
- package/lib/core/components/range/range.component.d.ts +35 -0
- package/lib/core/components/range/range.module.d.ts +9 -0
- package/lib/core/components/select/select.component.d.ts +42 -0
- package/lib/core/components/select/select.module.d.ts +12 -0
- package/lib/core/components/select-image/select-image.component.d.ts +28 -0
- package/lib/core/components/share/share.component.d.ts +31 -0
- package/lib/core/components/share/share.model.d.ts +9 -0
- package/lib/core/components/share/share.module.d.ts +11 -0
- package/lib/core/components/snackbar/snack.interface.d.ts +6 -0
- package/lib/core/components/snackbar/snackbar/snackbar.component.d.ts +25 -0
- package/lib/core/components/snackbar/snackbar.module.d.ts +9 -0
- package/lib/core/components/snackbar/snackbar.service.d.ts +22 -0
- package/lib/core/components/sort/sort-data.pipe.d.ts +10 -0
- package/lib/core/components/sort/sort-header/sort-header.component.d.ts +16 -0
- package/lib/core/components/sort/sort-header.directive.d.ts +5 -0
- package/lib/core/components/sort/sort-table.directive.d.ts +17 -0
- package/lib/core/components/sort/sort.model.d.ts +4 -0
- package/lib/core/components/sort/sort.module.d.ts +12 -0
- package/lib/core/components/title-presentation/title-presentation.component.d.ts +12 -0
- package/lib/core/components/toggle/toggle.component.d.ts +31 -0
- package/lib/core/components/toggle/toggle.module.d.ts +10 -0
- package/lib/core/components/translate-id/translate-id.pipe.d.ts +20 -0
- package/lib/core/components/translate-item-to-symbol/translate-item-to-symbol.pipe.d.ts +18 -0
- package/lib/core/components/upload/upload.component.d.ts +19 -0
- package/lib/core/core.module.d.ts +36 -0
- package/lib/core/errors/http-error-interceptor.service.d.ts +16 -0
- package/lib/core/i18n/deep-merge.function.d.ts +1 -0
- package/lib/core/i18n/en.translations.d.ts +322 -0
- package/lib/core/i18n/fr.translations.d.ts +322 -0
- package/lib/core/i18n/i18n.module.d.ts +7 -0
- package/lib/core/i18n/i18n.pipe.d.ts +16 -0
- package/lib/core/i18n/i18n.service.d.ts +35 -0
- package/lib/core/model/admin-api.model.d.ts +111 -0
- package/lib/core/model/dataset.interface.d.ts +29 -0
- package/lib/core/model/filter.interface.d.ts +20 -0
- package/lib/core/model/item.interface.d.ts +38 -0
- package/lib/core/model/manifest.interface.d.ts +84 -0
- package/lib/core/model/mimetype-resultset.constant.d.ts +1 -0
- package/lib/core/model/notification-interface.d.ts +13 -0
- package/lib/core/model/public-api.d.ts +24 -0
- package/lib/core/model/relation.interface.d.ts +5 -0
- package/lib/core/model/result-order.interface.d.ts +5 -0
- package/lib/core/model/result-set.interface.d.ts +19 -0
- package/lib/core/model/search-mono-class.model.d.ts +49 -0
- package/lib/core/model/search-multi-class.model.d.ts +38 -0
- package/lib/core/model/tooltip-of-class.interface.d.ts +4 -0
- package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +60 -0
- package/lib/core/model/widget-chart-manifest.interface.d.ts +150 -0
- package/lib/core/model/widget-detail-manifest.interface.d.ts +4 -0
- package/lib/core/model/widget-graph-manifest.interface.d.ts +14 -0
- package/lib/core/model/widget-iframe-manifest.interface.d.ts +3 -0
- package/lib/core/model/widget-image-manifest.interface.d.ts +4 -0
- package/lib/core/model/widget-map-manifest.interface.d.ts +97 -0
- package/lib/core/model/widget-table-manifest.interface.d.ts +9 -0
- package/lib/core/model/widget-template-manifest.interface.d.ts +5 -0
- package/lib/core/model/widget-tile-manifest.interface.d.ts +10 -0
- package/lib/core/model/widget.interface.d.ts +13 -0
- package/lib/core/public-api.d.ts +113 -0
- package/lib/core/store/category/category.actions.d.ts +14 -0
- package/lib/core/store/category/category.effects.d.ts +15 -0
- package/lib/core/store/category/category.interface.d.ts +4 -0
- package/lib/core/store/category/category.reducer.d.ts +11 -0
- package/lib/core/store/category/category.selectors.d.ts +6 -0
- package/lib/core/store/category/category.service.d.ts +13 -0
- package/lib/core/store/class/class.actions.d.ts +37 -0
- package/lib/core/store/class/class.effects.d.ts +25 -0
- package/lib/core/store/class/class.interface.d.ts +19 -0
- package/lib/core/store/class/class.reducer.d.ts +15 -0
- package/lib/core/store/class/class.selectors.d.ts +14 -0
- package/lib/core/store/class/class.service.d.ts +22 -0
- package/lib/core/store/config/config.actions.d.ts +185 -0
- package/lib/core/store/config/config.effects.d.ts +51 -0
- package/lib/core/store/config/config.reducer.d.ts +37 -0
- package/lib/core/store/config/config.selectors.d.ts +52 -0
- package/lib/core/store/config/config.service.d.ts +51 -0
- package/lib/core/store/config/config.widget.constants.d.ts +12 -0
- package/lib/core/store/config/icon-definitions.interface.d.ts +34 -0
- package/lib/core/store/config/open-map-tiles.service.d.ts +17 -0
- package/lib/core/store/context-menu/context-menu.actions.d.ts +18 -0
- package/lib/core/store/context-menu/context-menu.effects.d.ts +8 -0
- package/lib/core/store/context-menu/context-menu.reducer.d.ts +12 -0
- package/lib/core/store/context-menu/context-menu.selectors.d.ts +16 -0
- package/lib/core/store/data-source/data-source.actions.d.ts +238 -0
- package/lib/core/store/data-source/data-source.effects.d.ts +106 -0
- package/lib/core/store/data-source/data-source.model.d.ts +32 -0
- package/lib/core/store/data-source/data-source.reducer.d.ts +21 -0
- package/lib/core/store/data-source/data-source.selectors.d.ts +31 -0
- package/lib/core/store/data-source/data-source.service.d.ts +40 -0
- package/lib/core/store/data-source/named-query-types.model.d.ts +5 -0
- package/lib/core/store/data-source/named-query-utils.d.ts +6 -0
- package/lib/core/store/field/field.actions.d.ts +14 -0
- package/lib/core/store/field/field.effects.d.ts +15 -0
- package/lib/core/store/field/field.interface.d.ts +21 -0
- package/lib/core/store/field/field.reducer.d.ts +11 -0
- package/lib/core/store/field/field.selectors.d.ts +7 -0
- package/lib/core/store/field/field.service.d.ts +15 -0
- package/lib/core/store/image/image.actions.d.ts +32 -0
- package/lib/core/store/image/image.effects.d.ts +20 -0
- package/lib/core/store/image/image.reducer.d.ts +9 -0
- package/lib/core/store/image/image.selectors.d.ts +7 -0
- package/lib/core/store/image/image.service.d.ts +29 -0
- package/lib/core/store/item/item.actions.d.ts +18 -0
- package/lib/core/store/item/item.effects.d.ts +27 -0
- package/lib/core/store/item/item.service.d.ts +28 -0
- package/lib/core/store/raw/raw.service.d.ts +18 -0
- package/lib/core/store/relation-types/relation-types.actions.d.ts +65 -0
- package/lib/core/store/relation-types/relation-types.effects.d.ts +31 -0
- package/lib/core/store/relation-types/relation-types.interface.d.ts +8 -0
- package/lib/core/store/relation-types/relation-types.reducer.d.ts +11 -0
- package/lib/core/store/relation-types/relation-types.selectors.d.ts +8 -0
- package/lib/core/store/relation-types/relation-types.service.d.ts +17 -0
- package/lib/core/store/search/lat-lon-to-geographic-field-transformation.function.d.ts +2 -0
- package/lib/core/store/search/search.actions.d.ts +33 -0
- package/lib/core/store/search/search.constants.d.ts +2 -0
- package/lib/core/store/search/search.effects.d.ts +33 -0
- package/lib/core/store/search/search.reducer.d.ts +10 -0
- package/lib/core/store/search/search.selectors.d.ts +5 -0
- package/lib/core/store/search/search.service.d.ts +50 -0
- package/lib/core/symbol/symbol.service.d.ts +27 -0
- package/lib/core/toolbox/toolbox-manifest.service.d.ts +21 -0
- package/lib/core/toolbox/toolbox-menu.service.d.ts +45 -0
- package/lib/core/ws/websocket.service.d.ts +26 -0
- package/lib/dashboard/action-bus/bus-action.interface.d.ts +4 -0
- package/lib/dashboard/action-bus/effect/action-bus.effects.d.ts +13 -0
- package/lib/dashboard/action-bus/service/bus.service.d.ts +22 -0
- package/lib/dashboard/action-bus/service/control-message.interface.d.ts +6 -0
- package/lib/dashboard/base-widget.module.d.ts +9 -0
- package/lib/dashboard/components/context-menu/context-menu.component.d.ts +59 -0
- package/lib/dashboard/components/context-menu/object-edition/object-edition.component.d.ts +78 -0
- package/lib/dashboard/components/dashboard.component.d.ts +99 -0
- package/lib/dashboard/components/manifests/manifests.component.d.ts +20 -0
- package/lib/dashboard/components/metadata/metadata.component.d.ts +16 -0
- package/lib/dashboard/components/solve-collisions.function.d.ts +15 -0
- package/lib/dashboard/components/subscriptionner.directive.d.ts +9 -0
- package/lib/dashboard/components/vizualize-raw/vizualize-raw.component.d.ts +26 -0
- package/lib/dashboard/components/widgets/base-widget.component.d.ts +36 -0
- package/lib/dashboard/components/widgets/data-widget.component.d.ts +20 -0
- package/lib/dashboard/components/widgets/header/resultset-size.pipe.d.ts +18 -0
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +115 -0
- package/lib/dashboard/components/widgets/public-api.d.ts +9 -0
- package/lib/dashboard/components/widgets/settings/settings.component.d.ts +35 -0
- package/lib/dashboard/components/widgets/widget-filler/widget-filler.component.d.ts +10 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widget-factory.service.d.ts +24 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widget-instanciator.component.d.ts +34 -0
- package/lib/dashboard/components/widgets/widget-instanciator/widgets-definition.model.d.ts +11 -0
- package/lib/dashboard/components/widgets/widget-placeholder/widget-placeholder.component.d.ts +9 -0
- package/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.d.ts +39 -0
- package/lib/dashboard/dashboard.module.d.ts +59 -0
- package/lib/dashboard/date-utils.d.ts +3 -0
- package/lib/dashboard/filter/base-filter.component.d.ts +13 -0
- package/lib/dashboard/filter/base-filter.module.d.ts +9 -0
- package/lib/dashboard/filter/components/filter-instanciator/filter-instanciator.component.d.ts +20 -0
- package/lib/dashboard/filter/filter-factory.service.d.ts +40 -0
- package/lib/dashboard/filter/filter-loader.function.d.ts +3 -0
- package/lib/dashboard/filter/public-api.d.ts +5 -0
- package/lib/dashboard/guard/default-view.guard.d.ts +14 -0
- package/lib/dashboard/item-utils.d.ts +35 -0
- package/lib/dashboard/public-api.d.ts +30 -0
- package/lib/dashboard/resultset-utils.d.ts +4 -0
- package/lib/dashboard/store/dashboard-init.service.d.ts +20 -0
- package/lib/dashboard/store/dashboard.actions.d.ts +455 -0
- package/lib/dashboard/store/dashboard.contants.d.ts +4 -0
- package/lib/dashboard/store/dashboard.effects.d.ts +226 -0
- package/lib/dashboard/store/dashboard.reducers.d.ts +48 -0
- package/lib/dashboard/store/dashboard.selectors.d.ts +374 -0
- package/lib/dashboard/store/geocoding.service.d.ts +56 -0
- package/lib/dashboard/store/manifest.service.d.ts +26 -0
- package/lib/dashboard/store/refresh.service.d.ts +12 -0
- package/lib/dashboard/store/title.service.d.ts +17 -0
- package/lib/dashboard/tooltip/base-tooltip.component.d.ts +15 -0
- package/lib/dashboard/tooltip/base-tooltip.module.d.ts +9 -0
- package/lib/dashboard/tooltip/components/default/default.tooltip.component.d.ts +6 -0
- package/lib/dashboard/tooltip/public-api.d.ts +5 -0
- package/lib/dashboard/tooltip/tooltip-factory.service.d.ts +42 -0
- package/lib/dashboard/tooltip/tooltip-loader.function.d.ts +3 -0
- package/lib/dashboard/widget-loader.function.d.ts +3 -0
- package/notification/components/notification/content/notification-content.component.d.ts +25 -0
- package/notification/components/notification/notification.component.d.ts +20 -0
- package/notification/i18n/en.translations.d.ts +22 -0
- package/notification/i18n/fr.translations.d.ts +22 -0
- package/notification/index.d.ts +5 -0
- package/notification/notification.module.d.ts +17 -0
- package/notification/public-api.d.ts +9 -0
- package/notification/store/notification.actions.d.ts +20 -0
- package/notification/store/notification.effects.d.ts +18 -0
- package/notification/store/notification.reducer.d.ts +6 -0
- package/notification/store/notification.selectors.d.ts +5 -0
- package/notification/store/notification.service.d.ts +12 -0
- package/notification/style/_m-notifications.scss +127 -0
- package/notification/style/css.component.d.ts +5 -0
- package/package.json +266 -0
- package/pipeline/components/pipeline-details/pipeline-details.component.d.ts +27 -0
- package/pipeline/components/pipeline-editor/graph-serializer.utils.d.ts +8 -0
- package/pipeline/components/pipeline-editor/pipeline-editor.component.d.ts +73 -0
- package/pipeline/components/pipeline-editor/pipeline.interface.d.ts +52 -0
- package/pipeline/components/pipeline-list/pipeline-list.component.d.ts +46 -0
- package/pipeline/components/pipeline-properties-panel.component.d.ts +11 -0
- package/pipeline/factory/pipeline-component-factory.service.d.ts +29 -0
- package/pipeline/i18n/en.translations.d.ts +73 -0
- package/pipeline/i18n/fr.translations.d.ts +73 -0
- package/pipeline/index.d.ts +5 -0
- package/pipeline/node-class/base-node.class.d.ts +13 -0
- package/pipeline/pipeline.module.d.ts +20 -0
- package/pipeline/public-api.d.ts +16 -0
- package/pipeline/store/pipeline.actions.d.ts +81 -0
- package/pipeline/store/pipeline.effects.d.ts +30 -0
- package/pipeline/store/pipeline.reducer.d.ts +13 -0
- package/pipeline/store/pipeline.selectors.d.ts +8 -0
- package/pipeline/store/pipeline.service.d.ts +19 -0
- package/pipeline/style/_o-pipeline.scss +274 -0
- package/pipeline/style/css.component.d.ts +5 -0
- package/pipeline-components/filter/component/filter.component.d.ts +16 -0
- package/pipeline-components/filter/filter.module.d.ts +15 -0
- package/pipeline-components/filter/i18n/en.translations.d.ts +15 -0
- package/pipeline-components/filter/i18n/fr.translations.d.ts +15 -0
- package/pipeline-components/filter/index.d.ts +5 -0
- package/pipeline-components/filter/node-class/filter-node.class.d.ts +4 -0
- package/pipeline-components/filter/public-api.d.ts +3 -0
- package/pipeline-components/input-datasource/component/input-datasource.component.d.ts +13 -0
- package/pipeline-components/input-datasource/i18n/en.translations.d.ts +10 -0
- package/pipeline-components/input-datasource/i18n/fr.translations.d.ts +10 -0
- package/pipeline-components/input-datasource/index.d.ts +5 -0
- package/pipeline-components/input-datasource/input-datasource.module.d.ts +17 -0
- package/pipeline-components/input-datasource/node-class/input-datasourse-node.class.d.ts +5 -0
- package/pipeline-components/input-datasource/public-api.d.ts +3 -0
- package/pipeline-components/noop/component/noop.component.d.ts +7 -0
- package/pipeline-components/noop/index.d.ts +5 -0
- package/pipeline-components/noop/node-class/noop-node.class.d.ts +4 -0
- package/pipeline-components/noop/noop.module.d.ts +13 -0
- package/pipeline-components/noop/public-api.d.ts +3 -0
- package/pipeline-components/output-dataset/component/output-dataset.component.d.ts +13 -0
- package/pipeline-components/output-dataset/i18n/en.translations.d.ts +9 -0
- package/pipeline-components/output-dataset/i18n/fr.translations.d.ts +9 -0
- package/pipeline-components/output-dataset/index.d.ts +5 -0
- package/pipeline-components/output-dataset/node-class/output-dataset-node.class.d.ts +5 -0
- package/pipeline-components/output-dataset/output-dataset.module.d.ts +17 -0
- package/pipeline-components/output-dataset/public-api.d.ts +3 -0
- package/pipeline-components/subgraph/component/empty.component.d.ts +7 -0
- package/pipeline-components/subgraph/index.d.ts +5 -0
- package/pipeline-components/subgraph/node-class/sub-graph-input.class.d.ts +4 -0
- package/pipeline-components/subgraph/node-class/sub-graph-node.class.d.ts +17 -0
- package/pipeline-components/subgraph/node-class/sub-graph-output.class.d.ts +4 -0
- package/pipeline-components/subgraph/public-api.d.ts +5 -0
- package/pipeline-components/subgraph/subgraph.module.d.ts +13 -0
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +28 -0
- package/presentation/components/presentation.component.d.ts +55 -0
- package/presentation/i18n/en.translations.d.ts +39 -0
- package/presentation/i18n/fr.translations.d.ts +40 -0
- package/presentation/index.d.ts +5 -0
- package/presentation/presentation.module.d.ts +18 -0
- package/presentation/public-api.d.ts +4 -0
- package/presentation/style/_o-pry-new-presentation.scss +78 -0
- package/presentation/style/_o-pry-presentation.scss +93 -0
- package/presentation/style/css.component.d.ts +5 -0
- package/public-api.d.ts +2 -0
- package/restitution/components/restitution/restitution.component.d.ts +54 -0
- package/restitution/components/restitution-catalog/restitution-catalog.component.d.ts +40 -0
- package/restitution/components/restitution-list/restitution-list.component.d.ts +33 -0
- package/restitution/i18n/en.translations.d.ts +43 -0
- package/restitution/i18n/fr.translations.d.ts +43 -0
- package/restitution/index.d.ts +5 -0
- package/restitution/model/restitution.model.d.ts +8 -0
- package/restitution/public-api.d.ts +4 -0
- package/restitution/restitution.module.d.ts +21 -0
- package/restitution/style/_o-restitution-list.scss +161 -0
- package/restitution/style/_o-restitution.scss +32 -0
- package/restitution/style/css.component.d.ts +5 -0
- package/search/components/choose-widget/choose-widget.component.d.ts +34 -0
- package/search/components/edit-named-query/edit-named-query.component.d.ts +37 -0
- package/search/components/edit-named-query-modal/edit-named-query-modal.component.d.ts +17 -0
- package/search/components/save-query/save-query.component.d.ts +36 -0
- package/search/components/save-query-button/save-query-button.component.d.ts +23 -0
- package/search/i18n/en.translations.d.ts +131 -0
- package/search/i18n/fr.translations.d.ts +131 -0
- package/search/index.d.ts +5 -0
- package/search/public-api.d.ts +12 -0
- package/search/search-fulltext/search-fulltext/search-fulltext.component.d.ts +56 -0
- package/search/search-fulltext/store/search-fulltext.actions.d.ts +21 -0
- package/search/search-fulltext/store/search-fulltext.effects.d.ts +25 -0
- package/search/search-fulltext/store/search-fulltext.service.d.ts +7 -0
- package/search/search-home/search-home.component.d.ts +76 -0
- package/search/search-mono-class/components/search-composed/search-composed.component.d.ts +27 -0
- package/search/search-mono-class/components/search-condition/search-condition.component.d.ts +42 -0
- package/search/search-mono-class/components/search-mono-class/search-mono-class.component.d.ts +15 -0
- package/search/search-mono-class/components/search-order/search-order.component.d.ts +25 -0
- package/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.d.ts +16 -0
- package/search/search-mono-class/store/search-mono-class.actions.d.ts +119 -0
- package/search/search-mono-class/store/search-mono-class.effects.d.ts +64 -0
- package/search/search-mono-class/store/search-mono-class.reducer.d.ts +10 -0
- package/search/search-mono-class/store/search-mono-class.selectors.d.ts +13 -0
- package/search/search-mono-class/store/search-mono-class.service.d.ts +20 -0
- package/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.d.ts +39 -0
- package/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.d.ts +24 -0
- package/search/search-multi-class/components/search-multi-class/search-multi-class.component.d.ts +15 -0
- package/search/search-multi-class/store/search-multi-class.actions.d.ts +65 -0
- package/search/search-multi-class/store/search-multi-class.effects.d.ts +39 -0
- package/search/search-multi-class/store/search-multi-class.reducer.d.ts +8 -0
- package/search/search-multi-class/store/search-multi-class.selectors.d.ts +9 -0
- package/search/search-multi-class/store/search-multi-class.service.d.ts +15 -0
- package/search/search-tools/search-tools.component.d.ts +52 -0
- package/search/search.module.d.ts +37 -0
- package/search/style/_m-choose-widget.scss +108 -0
- package/search/style/_m-pry-search-select-attribute.scss +28 -0
- package/search/style/_o-edit-named-query-modal.scss +9 -0
- package/search/style/_o-edit-named-query.scss +29 -0
- package/search/style/_o-multi-class-condition.scss +65 -0
- package/search/style/_o-multi-class-field-selection.scss +64 -0
- package/search/style/_o-pry-search-composed.scss +89 -0
- package/search/style/_o-pry-search-condition.scss +54 -0
- package/search/style/_o-pry-search-home.scss +91 -0
- package/search/style/_o-pry-search-order.scss +14 -0
- package/search/style/_o-pry-search-tools.scss +150 -0
- package/search/style/_o-search-fulltext.scss +154 -0
- package/search/style/_o-search-mono-class.scss +45 -0
- package/search/style/_o-search-multi-class.scss +34 -0
- package/search/style/css.component.d.ts +5 -0
- package/styles/abstracts/_abstracts-overlays.scss +13 -0
- package/styles/abstracts/_abstracts-utils.scss +82 -0
- package/styles/abstracts/_functions.scss +229 -0
- package/styles/abstracts/_index.scss +5 -0
- package/styles/abstracts/_mixins.scss +309 -0
- package/styles/abstracts/_variables.scss +3 -0
- package/styles/base/_custom-scrollbar.scss +9 -0
- package/styles/base/_html-body.scss +5 -0
- package/styles/base/_index.scss +6 -0
- package/styles/base/_normalize.scss +351 -0
- package/styles/base/_reboot.scss +376 -0
- package/styles/base/_typography.scss +25 -0
- package/styles/base/_utils.scss +67 -0
- package/styles/components/_a-badge.scss +8 -0
- package/styles/components/_a-btn.scss +207 -0
- package/styles/components/_a-checkbox.scss +80 -0
- package/styles/components/_a-checkmark.scss +1 -0
- package/styles/components/_a-expandable-value.scss +51 -0
- package/styles/components/_a-form-field.scss +96 -0
- package/styles/components/_a-icon.scss +16 -0
- package/styles/components/_a-label.scss +16 -0
- package/styles/components/_a-link.scss +17 -0
- package/styles/components/_a-loader.scss +30 -0
- package/styles/components/_a-pastille.scss +14 -0
- package/styles/components/_a-pry-select-image.scss +16 -0
- package/styles/components/_a-pry-select.scss +19 -0
- package/styles/components/_a-range-slider.scss +105 -0
- package/styles/components/_a-table.scss +128 -0
- package/styles/components/_a-toggle.scss +150 -0
- package/styles/components/_m-actions-list.scss +25 -0
- package/styles/components/_m-btn-group.scss +58 -0
- package/styles/components/_m-btn-sorttable.scss +75 -0
- package/styles/components/_m-color-selector.scss +58 -0
- package/styles/components/_m-context-menu.scss +52 -0
- package/styles/components/_m-filter.scss +7 -0
- package/styles/components/_m-form-label-field.scss +55 -0
- package/styles/components/_m-form-radio-group.scss +47 -0
- package/styles/components/_m-image-selector.scss +11 -0
- package/styles/components/_m-metadata-tag.scss +55 -0
- package/styles/components/_m-minus-plus.scss +81 -0
- package/styles/components/_m-nav-links.scss +34 -0
- package/styles/components/_m-pry-overlay.scss +56 -0
- package/styles/components/_m-snackbar.scss +52 -0
- package/styles/components/_m-time-picker.scss +55 -0
- package/styles/components/_m-toolbox.scss +21 -0
- package/styles/components/_m-tooltip.scss +91 -0
- package/styles/components/_o-accordion.scss +24 -0
- package/styles/components/_o-card.scss +131 -0
- package/styles/components/_o-cards-list.scss +11 -0
- package/styles/components/_o-dashboard.scss +169 -0
- package/styles/components/_o-datasources.scss +83 -0
- package/styles/components/_o-date-picker.scss +141 -0
- package/styles/components/_o-draggable-menu.scss +54 -0
- package/styles/components/_o-form.scss +29 -0
- package/styles/components/_o-modal.scss +94 -0
- package/styles/components/_o-named-query.scss +43 -0
- package/styles/components/_o-object-panel.scss +109 -0
- package/styles/components/_o-panel.scss +37 -0
- package/styles/components/_o-properties.scss +42 -0
- package/styles/components/_o-pry-admin-classes-customize.scss +130 -0
- package/styles/components/_o-pry-card-menu.scss +105 -0
- package/styles/components/_o-pry-card.scss +97 -0
- package/styles/components/_o-pry-composed-condition.scss +84 -0
- package/styles/components/_o-pry-edit.scss +9 -0
- package/styles/components/_o-pry-expand-panel.scss +36 -0
- package/styles/components/_o-pry-stepper.scss +103 -0
- package/styles/components/_o-search-mono-class.scss +45 -0
- package/styles/components/_o-search-multi-class.scss +34 -0
- package/styles/components/_o-settings.scss +123 -0
- package/styles/components/_o-tabs.scss +108 -0
- package/styles/components/_o-widget.scss +208 -0
- package/styles/components/_overlay.scss +82 -0
- package/styles/layout/_o-base-layout.scss +113 -0
- package/styles/layout/_o-main-layout.scss +38 -0
- package/styles/layout/_o-manifest-layout.scss +89 -0
- package/styles/layout/_o-workspace.scss +61 -0
- package/styles/layout/grid/_grid.scss +141 -0
- package/styles/layout/grid/_visibility.scss +71 -0
- package/styles/layout/grid/mixins/_grid-mixins.scss +368 -0
- package/styles/layout/grid/mixins/_visibility-mixins.scss +115 -0
- package/styles/layout/grid/variables/_grid-variables.scss +41 -0
- package/styles/libs/_reset-lib-ol.scss +35 -0
- package/styles/main.scss +78 -0
- package/styles-theme/abstracts-theme/_abstracts-cards.theme.scss +22 -0
- package/styles-theme/abstracts-theme/_abstracts-overlays.theme.scss +10 -0
- package/styles-theme/abstracts-theme/_index.scss +3 -0
- package/styles-theme/abstracts-theme/_variables.theme.scss +5 -0
- package/styles-theme/abstracts-theme/variables/_index.scss +4 -0
- package/styles-theme/abstracts-theme/variables/_variables-colors.scss +113 -0
- package/styles-theme/abstracts-theme/variables/_variables-decoration.scss +49 -0
- package/styles-theme/abstracts-theme/variables/_variables-fonts.scss +40 -0
- package/styles-theme/abstracts-theme/variables/_variables-typo.scss +138 -0
- package/styles-theme/base-theme/_custom-scrollbar.theme.scss +8 -0
- package/styles-theme/base-theme/_fonts.theme.scss +37 -0
- package/styles-theme/base-theme/_html-body.theme.scss +6 -0
- package/styles-theme/base-theme/_index.scss +4 -0
- package/styles-theme/base-theme/_typography.theme.scss +27 -0
- package/styles-theme/components-theme/_a-badge.theme.scss +21 -0
- package/styles-theme/components-theme/_a-btn.theme.scss +214 -0
- package/styles-theme/components-theme/_a-checkbox.theme.scss +68 -0
- package/styles-theme/components-theme/_a-checkmark.theme.scss +4 -0
- package/styles-theme/components-theme/_a-expandable-value.theme.scss +23 -0
- package/styles-theme/components-theme/_a-form-field.theme.scss +63 -0
- package/styles-theme/components-theme/_a-icon.theme.scss +17 -0
- package/styles-theme/components-theme/_a-label.theme.scss +16 -0
- package/styles-theme/components-theme/_a-link.theme.scss +12 -0
- package/styles-theme/components-theme/_a-pastille.theme.scss +14 -0
- package/styles-theme/components-theme/_a-pry-select.theme.scss +117 -0
- package/styles-theme/components-theme/_a-range-slider.theme.scss +54 -0
- package/styles-theme/components-theme/_a-table.theme.scss +49 -0
- package/styles-theme/components-theme/_a-toggle.theme.scss +62 -0
- package/styles-theme/components-theme/_m-btn-sorttable.theme.scss +45 -0
- package/styles-theme/components-theme/_m-choose-widget.theme.scss +4 -0
- package/styles-theme/components-theme/_m-context-menu.theme.scss +46 -0
- package/styles-theme/components-theme/_m-metadata-tag.theme.scss +17 -0
- package/styles-theme/components-theme/_m-minus-plus.theme.scss +51 -0
- package/styles-theme/components-theme/_m-nav-links.theme.scss +4 -0
- package/styles-theme/components-theme/_m-notifications.theme.scss +90 -0
- package/styles-theme/components-theme/_m-pry-search-select-attribute.theme.scss +15 -0
- package/styles-theme/components-theme/_m-snackbar.theme.scss +42 -0
- package/styles-theme/components-theme/_m-time-picker.theme.scss +36 -0
- package/styles-theme/components-theme/_m-toolbox.theme.scss +15 -0
- package/styles-theme/components-theme/_m-tooltip.theme.scss +66 -0
- package/styles-theme/components-theme/_o-card.theme.scss +45 -0
- package/styles-theme/components-theme/_o-catalog.theme.scss +74 -0
- package/styles-theme/components-theme/_o-datasources.theme.scss +38 -0
- package/styles-theme/components-theme/_o-date-picker.theme.scss +37 -0
- package/styles-theme/components-theme/_o-draggable-menu.theme.scss +26 -0
- package/styles-theme/components-theme/_o-modal.theme.scss +28 -0
- package/styles-theme/components-theme/_o-multi-class-condition.theme.scss +22 -0
- package/styles-theme/components-theme/_o-multi-class-field-selection.theme.scss +43 -0
- package/styles-theme/components-theme/_o-named-query.theme.scss +19 -0
- package/styles-theme/components-theme/_o-object-panel.theme.scss +11 -0
- package/styles-theme/components-theme/_o-panel.theme.scss +18 -0
- package/styles-theme/components-theme/_o-pipeline.theme.scss +88 -0
- package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +14 -0
- package/styles-theme/components-theme/_o-pry-card-menu.theme.scss +55 -0
- package/styles-theme/components-theme/_o-pry-card.theme.scss +44 -0
- package/styles-theme/components-theme/_o-pry-composed-condition.theme.scss +60 -0
- package/styles-theme/components-theme/_o-pry-dataset-card.theme.scss +18 -0
- package/styles-theme/components-theme/_o-pry-dataset.theme.scss +12 -0
- package/styles-theme/components-theme/_o-pry-expand-panel.theme.scss +12 -0
- package/styles-theme/components-theme/_o-pry-new-presentation.theme.scss +20 -0
- package/styles-theme/components-theme/_o-pry-presentation.theme.scss +39 -0
- package/styles-theme/components-theme/_o-pry-search-composed.theme.scss +44 -0
- package/styles-theme/components-theme/_o-pry-search-condition.theme.scss +10 -0
- package/styles-theme/components-theme/_o-pry-search-home.theme.scss +25 -0
- package/styles-theme/components-theme/_o-pry-search-tools.theme.scss +54 -0
- package/styles-theme/components-theme/_o-pry-stepper.theme.scss +35 -0
- package/styles-theme/components-theme/_o-restitution-list.theme.scss +27 -0
- package/styles-theme/components-theme/_o-restitution.theme.scss +7 -0
- package/styles-theme/components-theme/_o-search-fulltext.theme.scss +83 -0
- package/styles-theme/components-theme/_o-search-multi-class.theme.scss +28 -0
- package/styles-theme/components-theme/_o-select-grid-layout.theme.scss +33 -0
- package/styles-theme/components-theme/_o-settings.theme.scss +64 -0
- package/styles-theme/components-theme/_o-tabs.theme.scss +37 -0
- package/styles-theme/components-theme/_o-widget-detail.theme.scss +21 -0
- package/styles-theme/components-theme/_o-widget-graph.theme.scss +32 -0
- package/styles-theme/components-theme/_o-widget-iframe.theme.scss +30 -0
- package/styles-theme/components-theme/_o-widget-map.theme.scss +5 -0
- package/styles-theme/components-theme/_o-widget-table.theme.scss +18 -0
- package/styles-theme/components-theme/_o-widget-tile.theme.scss +21 -0
- package/styles-theme/components-theme/_o-widget.theme.scss +70 -0
- package/styles-theme/components-theme/_overlay.theme.scss +44 -0
- package/styles-theme/layout-theme/_o-base-layout.theme.scss +24 -0
- package/styles-theme/layout-theme/_o-manifest-layout.theme.scss +33 -0
- package/styles-theme/layout-theme/_o-workspace.theme.scss +18 -0
- package/styles-theme/libs-theme/_reset-lib-ol.theme.scss +38 -0
- package/styles-theme/main-theme.scss +83 -0
- package/supervision/components/supervision-business-data/supervision-business-data.component.d.ts +14 -0
- package/supervision/components/supervision-flow/supervision-flow.component.d.ts +14 -0
- package/supervision/components/supervision-infrastructures/supervision-infrastructures.component.d.ts +18 -0
- package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +14 -0
- package/supervision/components/supervision-integration-errors/supervision-integration-errors.component.d.ts +29 -0
- package/supervision/components/supervision-layout/supervision-layout.component.d.ts +21 -0
- package/supervision/components/supervision-menu/supervision-menu.component.d.ts +13 -0
- package/supervision/components/supervision-title/supervision-title.component.d.ts +11 -0
- package/supervision/components/supervision.component.d.ts +9 -0
- package/supervision/i18n/en.translations.d.ts +57 -0
- package/supervision/i18n/fr.translations.d.ts +57 -0
- package/supervision/index.d.ts +5 -0
- package/supervision/public-api.d.ts +1 -0
- package/supervision/store/supervision-api.model.d.ts +36 -0
- package/supervision/store/supervision.actions.d.ts +121 -0
- package/supervision/store/supervision.effects.d.ts +51 -0
- package/supervision/store/supervision.reducer.d.ts +22 -0
- package/supervision/store/supervision.selectors.d.ts +18 -0
- package/supervision/store/supervision.service.d.ts +19 -0
- package/supervision/supervision-routing.module.d.ts +7 -0
- package/supervision/supervision.module.d.ts +25 -0
- package/toolbox/components/clear-view/clear-view.component.d.ts +10 -0
- package/toolbox/components/drag-widgets/drag-widgets.component.d.ts +19 -0
- package/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.d.ts +12 -0
- package/toolbox/components/filter-settings/filter-settings.component.d.ts +80 -0
- package/toolbox/components/launch-tab/launch-tab.component.d.ts +10 -0
- package/toolbox/components/named-query/named-query.component.d.ts +15 -0
- package/toolbox/components/save-view/save-view.component.d.ts +53 -0
- package/toolbox/components/select-grid-layout/select-grid-layout.component.d.ts +35 -0
- package/toolbox/components/toolbox.component.d.ts +11 -0
- package/toolbox/index.d.ts +5 -0
- package/toolbox/public-api.d.ts +11 -0
- package/toolbox/style/_o-filter-settings.scss +96 -0
- package/toolbox/style/_o-select-grid-layout.scss +43 -0
- package/toolbox/style/css.component.d.ts +5 -0
- package/toolbox/toolbox.module.d.ts +23 -0
- package/tooltips/attribute/attribute-tooltip.component.d.ts +10 -0
- package/tooltips/attribute/attribute-tooltip.module.d.ts +14 -0
- package/tooltips/attribute/index.d.ts +5 -0
- package/tooltips/attribute/public-api.d.ts +2 -0
- package/tooltips/cluster/cluster-tooltip.component.d.ts +6 -0
- package/tooltips/cluster/cluster-tooltip.module.d.ts +13 -0
- package/tooltips/cluster/index.d.ts +5 -0
- package/tooltips/cluster/public-api.d.ts +2 -0
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +101 -0
- package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +103 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +103 -0
- package/widgets/widget-aggregated-chart/index.d.ts +5 -0
- package/widgets/widget-aggregated-chart/public-api.d.ts +5 -0
- package/widgets/widget-aggregated-chart/service/backend-aggregation.service.d.ts +21 -0
- package/widgets/widget-aggregated-chart/service/base-aggregation.service.d.ts +21 -0
- package/widgets/widget-aggregated-chart/service/frontend-aggregation.service.d.ts +32 -0
- package/widgets/widget-aggregated-chart/style/_o-widget-chart.scss +43 -0
- package/widgets/widget-aggregated-chart/style/css.component.d.ts +5 -0
- package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +18 -0
- package/widgets/widget-chart/component/vega-error.handler.d.ts +6 -0
- package/widgets/widget-chart/component/vega-spec.constant.d.ts +98 -0
- package/widgets/widget-chart/component/widget-chart.component.d.ts +151 -0
- package/widgets/widget-chart/i18n/en.translations.d.ts +113 -0
- package/widgets/widget-chart/i18n/fr.translations.d.ts +113 -0
- package/widgets/widget-chart/index.d.ts +5 -0
- package/widgets/widget-chart/public-api.d.ts +2 -0
- package/widgets/widget-chart/style/_o-widget-chart.scss +43 -0
- package/widgets/widget-chart/style/css.component.d.ts +5 -0
- package/widgets/widget-chart/widget-chart.module.d.ts +18 -0
- package/widgets/widget-detail/component/widget-detail.component.d.ts +45 -0
- package/widgets/widget-detail/i18n/en.translations.d.ts +13 -0
- package/widgets/widget-detail/i18n/fr.translations.d.ts +13 -0
- package/widgets/widget-detail/index.d.ts +5 -0
- package/widgets/widget-detail/public-api.d.ts +2 -0
- package/widgets/widget-detail/style/_o-widget-detail.scss +60 -0
- package/widgets/widget-detail/style/css.component.d.ts +5 -0
- package/widgets/widget-detail/widget-detail.module.d.ts +18 -0
- package/widgets/widget-graph/component/widget-graph.component.d.ts +101 -0
- package/widgets/widget-graph/i18n/en.translations.d.ts +14 -0
- package/widgets/widget-graph/i18n/fr.translations.d.ts +14 -0
- package/widgets/widget-graph/index.d.ts +5 -0
- package/widgets/widget-graph/layout/node.interface.d.ts +12 -0
- package/widgets/widget-graph/layout/simple.function.d.ts +9 -0
- package/widgets/widget-graph/public-api.d.ts +3 -0
- package/widgets/widget-graph/style/_o-widget-graph.scss +4 -0
- package/widgets/widget-graph/style/css.component.d.ts +5 -0
- package/widgets/widget-graph/widget-graph.module.d.ts +18 -0
- package/widgets/widget-iframe/component/widget-iframe.component.d.ts +20 -0
- package/widgets/widget-iframe/i18n/en.translations.d.ts +10 -0
- package/widgets/widget-iframe/i18n/fr.translations.d.ts +10 -0
- package/widgets/widget-iframe/index.d.ts +5 -0
- package/widgets/widget-iframe/messaging/iframe-message-type.interface.d.ts +8 -0
- package/widgets/widget-iframe/messaging/iframe-messaging.service.d.ts +10 -0
- package/widgets/widget-iframe/public-api.d.ts +4 -0
- package/widgets/widget-iframe/style/_o-widget-iframe.scss +19 -0
- package/widgets/widget-iframe/style/css.component.d.ts +5 -0
- package/widgets/widget-iframe/widget-iframe.module.d.ts +18 -0
- package/widgets/widget-image/component/widget-image.component.d.ts +13 -0
- package/widgets/widget-image/index.d.ts +5 -0
- package/widgets/widget-image/public-api.d.ts +2 -0
- package/widgets/widget-image/style/_o-widget-image.scss +7 -0
- package/widgets/widget-image/style/css.component.d.ts +5 -0
- package/widgets/widget-image/widget-image.module.d.ts +14 -0
- package/widgets/widget-map/component/widget-map-layer.service.d.ts +98 -0
- package/widgets/widget-map/component/widget-map.component.d.ts +136 -0
- package/widgets/widget-map/i18n/en.translations.d.ts +80 -0
- package/widgets/widget-map/i18n/fr.translations.d.ts +80 -0
- package/widgets/widget-map/index.d.ts +5 -0
- package/widgets/widget-map/interaction/selection-interaction.class.d.ts +25 -0
- package/widgets/widget-map/pipe/widget-map-geometry-fields-for.pipe.d.ts +14 -0
- package/widgets/widget-map/pipe/widget-map-legend-url.pipe.d.ts +8 -0
- package/widgets/widget-map/public-api.d.ts +6 -0
- package/widgets/widget-map/reader/kmz-zip-reader.class.d.ts +12 -0
- package/widgets/widget-map/reader/map-formats-reader.class.d.ts +15 -0
- package/widgets/widget-map/reader/random-color-style.function.d.ts +6 -0
- package/widgets/widget-map/reader/read-as-text.class.d.ts +10 -0
- package/widgets/widget-map/reader/shp-zip-reader.class.d.ts +10 -0
- package/widgets/widget-map/search-bar/search-bar.control.d.ts +27 -0
- package/widgets/widget-map/style/_o-layer-legend.scss +42 -0
- package/widgets/widget-map/style/_o-widget-map.scss +69 -0
- package/widgets/widget-map/style/css.component.d.ts +5 -0
- package/widgets/widget-map/utils/widget-map.utils.d.ts +29 -0
- package/widgets/widget-map/widget-map.module.d.ts +20 -0
- package/widgets/widget-table/component/widget-table.component.d.ts +41 -0
- package/widgets/widget-table/expand-value/detach-row.directive.d.ts +12 -0
- package/widgets/widget-table/expand-value/expand-value.component.d.ts +10 -0
- package/widgets/widget-table/expand-value/format-number.pipe.d.ts +12 -0
- package/widgets/widget-table/get-value/get-value.pipe.d.ts +11 -0
- package/widgets/widget-table/i18n/en.translations.d.ts +14 -0
- package/widgets/widget-table/i18n/fr.translations.d.ts +14 -0
- package/widgets/widget-table/index.d.ts +5 -0
- package/widgets/widget-table/public-api.d.ts +5 -0
- package/widgets/widget-table/resizable/resizable.component.d.ts +7 -0
- package/widgets/widget-table/resizable/resizable.directive.d.ts +10 -0
- package/widgets/widget-table/style/_o-widget-table.scss +64 -0
- package/widgets/widget-table/style/css.component.d.ts +5 -0
- package/widgets/widget-table/widget-table.module.d.ts +24 -0
- package/widgets/widget-template/component/widget-template.component.d.ts +21 -0
- package/widgets/widget-template/index.d.ts +5 -0
- package/widgets/widget-template/public-api.d.ts +2 -0
- package/widgets/widget-template/style/_o-widget-template.scss +8 -0
- package/widgets/widget-template/style/css.component.d.ts +5 -0
- package/widgets/widget-template/widget-template.module.d.ts +16 -0
- package/widgets/widget-tile/component/widget-tile.component.d.ts +47 -0
- package/widgets/widget-tile/i18n/en.translations.d.ts +12 -0
- package/widgets/widget-tile/i18n/fr.translations.d.ts +12 -0
- package/widgets/widget-tile/index.d.ts +5 -0
- package/widgets/widget-tile/public-api.d.ts +2 -0
- package/widgets/widget-tile/style/_o-widget-tile.scss +83 -0
- package/widgets/widget-tile/style/css.component.d.ts +5 -0
- package/widgets/widget-tile/widget-tile.module.d.ts +20 -0
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
+
import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
4
|
+
import equal from 'fast-deep-equal/es6';
|
|
5
|
+
import { auditTime, BehaviorSubject, combineLatest, combineLatestWith, fromEvent, of, switchMap } from 'rxjs';
|
|
6
|
+
import { distinctUntilChanged, filter, map } from 'rxjs/operators';
|
|
7
|
+
import { DashboardGridLayout } from '../../core/model/manifest.interface';
|
|
8
|
+
import { MIME_TYPE_RESULTSET } from '../../core/model/mimetype-resultset.constant';
|
|
9
|
+
import { CategoryActions } from '../../core/store/category/category.actions';
|
|
10
|
+
import { ClassActions } from '../../core/store/class/class.actions';
|
|
11
|
+
import { ConfigActions } from '../../core/store/config/config.actions';
|
|
12
|
+
import { ConfigSelectors } from '../../core/store/config/config.selectors';
|
|
13
|
+
import { DataSourceActions } from '../../core/store/data-source/data-source.actions';
|
|
14
|
+
import { FieldActions } from '../../core/store/field/field.actions';
|
|
15
|
+
import { RelationTypesActions } from '../../core/store/relation-types/relation-types.actions';
|
|
16
|
+
import { WidgetPlacementUtils } from '../components/widgets/widget-placement/widget-placement.utils';
|
|
17
|
+
import { DashboardActions } from '../store/dashboard.actions';
|
|
18
|
+
import { DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ROW_HEIGHT_PX, DEFAULT_ROWS_NUMBER } from '../store/dashboard.contants';
|
|
19
|
+
import { DashboardSelectors } from '../store/dashboard.selectors';
|
|
20
|
+
import { solveCollisions } from './solve-collisions.function';
|
|
21
|
+
import { SubscriptionnerDirective } from './subscriptionner.directive';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@ngrx/store";
|
|
24
|
+
import * as i2 from "@angular/cdk/overlay";
|
|
25
|
+
import * as i3 from "@angular/common";
|
|
26
|
+
import * as i4 from "../../core/components/icon/icon.component";
|
|
27
|
+
import * as i5 from "./widgets/widget-instanciator/widget-instanciator.component";
|
|
28
|
+
import * as i6 from "./context-menu/context-menu.component";
|
|
29
|
+
import * as i7 from "../../core/i18n/i18n.pipe";
|
|
30
|
+
export const MIME_TYPE_WIDGET_MANIFEST = 'application/widget-manifest';
|
|
31
|
+
export const MIME_TYPE_WIDGET_TYPE = 'application/widget-type-';
|
|
32
|
+
export const MIME_TYPE_WIDGET_SIZE = 'application/widget-size-';
|
|
33
|
+
export class DashboardComponent extends SubscriptionnerDirective {
|
|
34
|
+
set staticDashboard(window) {
|
|
35
|
+
this.staticDashboard$.next(window);
|
|
36
|
+
}
|
|
37
|
+
constructor(store, overlay, viewContainerRef) {
|
|
38
|
+
super();
|
|
39
|
+
this.store = store;
|
|
40
|
+
this.overlay = overlay;
|
|
41
|
+
this.viewContainerRef = viewContainerRef;
|
|
42
|
+
this.manifest = null;
|
|
43
|
+
this.modeEdition = false;
|
|
44
|
+
this.staticDashboard$ = new BehaviorSubject(null);
|
|
45
|
+
this.stacked$ = new BehaviorSubject(false);
|
|
46
|
+
this.indexForRemoval = -1;
|
|
47
|
+
this.widgetsInstances = [];
|
|
48
|
+
this.CloseOnDragOut = true;
|
|
49
|
+
this.canCalculateView = false;
|
|
50
|
+
this.dashboardParams = {
|
|
51
|
+
gridWidth: 1,
|
|
52
|
+
gridHeight: 1,
|
|
53
|
+
gridGap: DEFAULT_GAP_PX,
|
|
54
|
+
columns: DEFAULT_COLUMNS_NUMBER,
|
|
55
|
+
cellWidth: 1,
|
|
56
|
+
cellHeight: DEFAULT_ROW_HEIGHT_PX,
|
|
57
|
+
rows: DEFAULT_ROWS_NUMBER,
|
|
58
|
+
offsetLeft: 0,
|
|
59
|
+
offsetTop: 0,
|
|
60
|
+
mobileMode: false
|
|
61
|
+
};
|
|
62
|
+
this.breakpoint = 0;
|
|
63
|
+
this.rowHeight = new EventEmitter();
|
|
64
|
+
this.rows = new EventEmitter();
|
|
65
|
+
this.currentlyModifiedManifest = null;
|
|
66
|
+
this.initialWidgetManifestList = [];
|
|
67
|
+
this.move = {
|
|
68
|
+
initialX: -1,
|
|
69
|
+
initialY: -1,
|
|
70
|
+
previousX: -1,
|
|
71
|
+
previousY: -1
|
|
72
|
+
};
|
|
73
|
+
this.DashboardGridLayout = DashboardGridLayout;
|
|
74
|
+
this.layout = DashboardGridLayout.MANUAL;
|
|
75
|
+
this.modeEdition$ = this.store.select(DashboardSelectors.dashboardEditionMode);
|
|
76
|
+
this.subscriptions.add(this.modeEdition$.subscribe((mode) => {
|
|
77
|
+
this.modeEdition = mode;
|
|
78
|
+
if (!mode) {
|
|
79
|
+
this.clearActions();
|
|
80
|
+
}
|
|
81
|
+
}));
|
|
82
|
+
this.targetIndexes$ = this.store.select(DashboardSelectors.targetTenantsIndexes);
|
|
83
|
+
this.subscriptions.add(this.store.select(DashboardSelectors.dashboardCellParams).subscribe((params) => (this.dashboardParams = params)));
|
|
84
|
+
this.windowManifest$ = this.store.select(DashboardSelectors.windowManifest).pipe(combineLatestWith(this.staticDashboard$), switchMap(([windowManifest, staticDashboard]) => (!staticDashboard ? of(windowManifest) : of(staticDashboard))), distinctUntilChanged((p, c) => equal(p, c)), map((_wManifest) => {
|
|
85
|
+
const wManifest = JSON.parse(JSON.stringify(_wManifest));
|
|
86
|
+
if (wManifest.grid?.layout && wManifest.grid.layout !== DashboardGridLayout.MANUAL) {
|
|
87
|
+
// Complete with placeholders
|
|
88
|
+
const size = WidgetPlacementUtils.placesForLayout(wManifest.grid.layout);
|
|
89
|
+
const places = WidgetPlacementUtils.placementOptions({ type: 'filler', layout: { x: 1, y: 1, width: 1, height: 1 } }, wManifest.grid.layout, wManifest.grid);
|
|
90
|
+
let added = true;
|
|
91
|
+
while (wManifest.widgets.length < size && added) {
|
|
92
|
+
added = false;
|
|
93
|
+
for (let i = 0; i < places.length; i++) {
|
|
94
|
+
const potential = { ...places[i], options: { index: i } };
|
|
95
|
+
if (wManifest.widgets
|
|
96
|
+
.map((widget) => WidgetPlacementUtils.areDisjoint(widget, potential))
|
|
97
|
+
.reduce((a, b) => a && b, true)) {
|
|
98
|
+
wManifest.widgets.push(potential);
|
|
99
|
+
added = true;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return wManifest;
|
|
106
|
+
}));
|
|
107
|
+
this.nonFillerWidgets$ = this.windowManifest$.pipe(map((wManifest) => wManifest.widgets.filter((w) => w.type !== 'filler').length));
|
|
108
|
+
this.subscriptions.add(this.staticDashboard$.subscribe((manifest) => {
|
|
109
|
+
if (!!manifest) {
|
|
110
|
+
const getDataActions = [
|
|
111
|
+
...new Set((manifest.widgets ?? [])
|
|
112
|
+
.reduce((p, c) => [...p, c], [])
|
|
113
|
+
.map((widManifest) => widManifest.datasource))
|
|
114
|
+
].reduce((p, c) => [...p, ...(Array.isArray(c) ? c : [c])], []).map((resultSet) => DashboardActions.assertResultSets({ id: resultSet }));
|
|
115
|
+
getDataActions.forEach((action) => this.store.dispatch(action));
|
|
116
|
+
}
|
|
117
|
+
}));
|
|
118
|
+
this.store.dispatch(FieldActions.load());
|
|
119
|
+
this.store.dispatch(ClassActions.load());
|
|
120
|
+
this.store.dispatch(CategoryActions.load());
|
|
121
|
+
this.store.dispatch(ConfigActions.getMapStyles());
|
|
122
|
+
this.store.dispatch(DataSourceActions.load());
|
|
123
|
+
this.store.dispatch(RelationTypesActions.load());
|
|
124
|
+
this.store.dispatch(ConfigActions.loadCustomization());
|
|
125
|
+
this.subscriptions.add(fromEvent(window, 'resize')
|
|
126
|
+
.pipe(auditTime(100))
|
|
127
|
+
.subscribe(() => {
|
|
128
|
+
this.calculateView();
|
|
129
|
+
}));
|
|
130
|
+
this.subscriptions.add(combineLatest([this.windowManifest$, this.modeEdition$])
|
|
131
|
+
.pipe(auditTime(100))
|
|
132
|
+
.subscribe(() => {
|
|
133
|
+
this.calculateView();
|
|
134
|
+
}));
|
|
135
|
+
this.subscriptions.add(fromEvent(window, 'keydown')
|
|
136
|
+
.pipe(map(($event) => $event), filter(($event) => $event.key === 'L' && $event.ctrlKey && $event.shiftKey))
|
|
137
|
+
.subscribe(() => this.store.dispatch(DashboardActions.toggleEditionMode({}))));
|
|
138
|
+
this.subscriptions.add(fromEvent(window, 'mouseup').subscribe(() => {
|
|
139
|
+
this.clearActions();
|
|
140
|
+
}));
|
|
141
|
+
this.subscriptions.add(this.store.select(ConfigSelectors.breakpoint).subscribe((bp) => {
|
|
142
|
+
this.breakpoint = bp;
|
|
143
|
+
}));
|
|
144
|
+
this.subscriptions.add(this.windowManifest$.subscribe((manifest) => {
|
|
145
|
+
this.manifest = manifest;
|
|
146
|
+
}));
|
|
147
|
+
this.subscriptions.add(this.store.select(DashboardSelectors.gridLayout).subscribe((layout) => {
|
|
148
|
+
this.layout = layout;
|
|
149
|
+
}));
|
|
150
|
+
this.gridTemplateRows$ = combineLatest([this.windowManifest$, this.stacked$]).pipe(map(([manifest, stacked]) => this.generateRows(stacked && this.manifest
|
|
151
|
+
? this.manifest?.widgets.map((wm) => wm.layout.height).reduce((wm1, wm2) => wm1 + wm2, 0)
|
|
152
|
+
: manifest.grid?.rows ?? DEFAULT_ROWS_NUMBER)));
|
|
153
|
+
this.gridTemplateColumns$ = combineLatest([this.windowManifest$, this.stacked$]).pipe(map(([manifest, stacked]) => this.generateColumns(stacked ? 1 : manifest.grid?.columns || DEFAULT_COLUMNS_NUMBER)));
|
|
154
|
+
this.backgroundArea$ = combineLatest([this.windowManifest$, this.stacked$]).pipe(map(([manifest, stacked]) => !stacked
|
|
155
|
+
? `3/3/${(manifest.grid?.rows ?? DEFAULT_ROWS_NUMBER) - 1}/${(manifest.grid?.columns ?? DEFAULT_COLUMNS_NUMBER) - 1}`
|
|
156
|
+
: `3/1/${(manifest.grid?.columns ?? DEFAULT_COLUMNS_NUMBER) - 1}/1`));
|
|
157
|
+
this.separators$ = this.store
|
|
158
|
+
.select(DashboardSelectors.gridLayout)
|
|
159
|
+
.pipe(map((layout) => layout === DashboardGridLayout.MANUAL
|
|
160
|
+
? []
|
|
161
|
+
: WidgetPlacementUtils.getLayoutSize(layout, { rows: 1, columns: 1 })));
|
|
162
|
+
}
|
|
163
|
+
ngAfterViewInit() {
|
|
164
|
+
this.canCalculateView = true;
|
|
165
|
+
}
|
|
166
|
+
/***
|
|
167
|
+
* Manage display
|
|
168
|
+
*/
|
|
169
|
+
calculateView() {
|
|
170
|
+
if (this.canCalculateView) {
|
|
171
|
+
let element = this.gridRef.nativeElement;
|
|
172
|
+
while (element.getBoundingClientRect().height === 0 && !!element.parentElement) {
|
|
173
|
+
element = element.parentElement;
|
|
174
|
+
}
|
|
175
|
+
const gridWidth = element.getBoundingClientRect().width;
|
|
176
|
+
const mobileMode = gridWidth < this.breakpoint;
|
|
177
|
+
this.stacked$.next(this.dashboardParams.mobileMode && !this.modeEdition);
|
|
178
|
+
const rows = !this.displayIsStacked
|
|
179
|
+
? (!!this.manifest && !!this.manifest.grid && this.manifest.grid.rows) || DEFAULT_ROWS_NUMBER
|
|
180
|
+
: this.manifest?.widgets.reduce((p, c) => p + c.layout.height, 0) ?? 1;
|
|
181
|
+
const params = {
|
|
182
|
+
gridWidth,
|
|
183
|
+
// Calculate height to parennt the parent's
|
|
184
|
+
gridHeight: element.getBoundingClientRect().height,
|
|
185
|
+
gridGap: 1,
|
|
186
|
+
columns: (!!this.manifest && !!this.manifest.grid && this.manifest.grid.columns) || DEFAULT_COLUMNS_NUMBER,
|
|
187
|
+
cellHeight: 1,
|
|
188
|
+
rows,
|
|
189
|
+
cellWidth: 0,
|
|
190
|
+
offsetLeft: this.gridRef.nativeElement.offsetLeft,
|
|
191
|
+
offsetTop: this.gridRef.nativeElement.offsetTop,
|
|
192
|
+
mobileMode
|
|
193
|
+
};
|
|
194
|
+
params.gridGap =
|
|
195
|
+
params.rows * params.cellHeight < params.gridHeight
|
|
196
|
+
? !!this.manifest && !!this.manifest.grid
|
|
197
|
+
? this.manifest.grid.gap || DEFAULT_GAP_PX
|
|
198
|
+
: DEFAULT_GAP_PX
|
|
199
|
+
: 0;
|
|
200
|
+
params.cellHeight = (params.gridHeight - (params.rows - 1) * params.gridGap) / params.rows;
|
|
201
|
+
params.cellWidth = (params.gridWidth - (params.columns - 1) * params.gridGap) / params.columns;
|
|
202
|
+
this.store.dispatch(DashboardActions.updateDashboardParams({ params }));
|
|
203
|
+
this.rows.next(params.rows);
|
|
204
|
+
this.rowHeight.next(params.cellHeight);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
get displayIsStacked() {
|
|
208
|
+
return this.stacked$.getValue();
|
|
209
|
+
}
|
|
210
|
+
gridColumn(layout) {
|
|
211
|
+
if (this.displayIsStacked || !layout) {
|
|
212
|
+
return '1 / 1';
|
|
213
|
+
}
|
|
214
|
+
if (layout.width > 1) {
|
|
215
|
+
return `${Math.min(layout.x, this.dashboardParams.columns - layout.width + 1)} / ${Math.min(layout.x + layout.width, this.dashboardParams.columns + 1)}`;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
return `${layout.x}`;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
gridRow(layout) {
|
|
222
|
+
if (!layout) {
|
|
223
|
+
return '1';
|
|
224
|
+
}
|
|
225
|
+
if (this.displayIsStacked) {
|
|
226
|
+
const previousHeight = this.manifest?.widgets
|
|
227
|
+
.filter((wm) => (wm.layout.y === layout.y && wm.layout.x < layout.x) || wm.layout.y < layout.y)
|
|
228
|
+
.reduce((p, c) => p + c.layout.height, 1);
|
|
229
|
+
return `${previousHeight ?? 1} / ${(previousHeight ?? 1) + layout.height}`;
|
|
230
|
+
}
|
|
231
|
+
if (layout.height > 1) {
|
|
232
|
+
return `${Math.max(1, Math.min(layout.y, this.dashboardParams.rows - layout.height + 1))} / ${Math.min(layout.y + layout.height, this.dashboardParams.rows + 1)}`;
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
return `${layout.y}`;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
generateRows(rows) {
|
|
239
|
+
return Array(rows).fill('1fr').join(' ');
|
|
240
|
+
}
|
|
241
|
+
generateColumns(columns) {
|
|
242
|
+
return Array(columns).fill('1fr').join(' ');
|
|
243
|
+
}
|
|
244
|
+
/***
|
|
245
|
+
* Direct actions on widgets
|
|
246
|
+
*/
|
|
247
|
+
remove(i) {
|
|
248
|
+
const listWidgetManifests = [...(this.manifest || { widgets: [] }).widgets];
|
|
249
|
+
listWidgetManifests.splice(i, 1).filter((widget) => widget.type !== 'filler');
|
|
250
|
+
this.store.dispatch(DashboardActions.updateDashboardManifest({
|
|
251
|
+
manifest: {
|
|
252
|
+
...this.manifest,
|
|
253
|
+
widgets: listWidgetManifests
|
|
254
|
+
}
|
|
255
|
+
}));
|
|
256
|
+
}
|
|
257
|
+
moveInNewWindow(widgetIndex, targetIndex) {
|
|
258
|
+
this.store.dispatch(DashboardActions.moveWidget({ widgetIndex, targetIndex }));
|
|
259
|
+
this.store.dispatch(DashboardActions.toggleEditionMode({ force: false }));
|
|
260
|
+
}
|
|
261
|
+
maximize(widgetIndex) {
|
|
262
|
+
this.store.dispatch(DashboardActions.maximizeWidget({ widgetIndex }));
|
|
263
|
+
}
|
|
264
|
+
/***
|
|
265
|
+
* Manage drag n drop, move, resize
|
|
266
|
+
*/
|
|
267
|
+
prepareModification($event, indexManifest) {
|
|
268
|
+
this.move.initialX = $event.clientX;
|
|
269
|
+
this.move.initialY = $event.clientY;
|
|
270
|
+
this.initialWidgetManifestList = JSON.parse(JSON.stringify((this.manifest || { widgets: [] }).widgets));
|
|
271
|
+
this.currentlyModifiedManifest = this.initialWidgetManifestList.splice(indexManifest, 1)[0];
|
|
272
|
+
// console.log('prepare', this.currentlyModifiedManifest, this.initialWidgetManifestList);
|
|
273
|
+
}
|
|
274
|
+
startResize($event, indexManifest, direction) {
|
|
275
|
+
this.actionType = direction;
|
|
276
|
+
this.prepareModification($event, indexManifest);
|
|
277
|
+
// console.log('start resize', this.currentlyModifiedManifest, this.initialWidgetManifestList);
|
|
278
|
+
}
|
|
279
|
+
dragStart($event, indexManifest) {
|
|
280
|
+
this.actionType = 'move';
|
|
281
|
+
this.prepareModification($event, indexManifest);
|
|
282
|
+
DashboardComponent.addTransferManifestMetadata($event, this.currentlyModifiedManifest ?? {});
|
|
283
|
+
// console.log('start move', this.currentlyModifiedManifest, this.initialWidgetManifestList);
|
|
284
|
+
}
|
|
285
|
+
static addTransferManifestMetadata($event, manifest) {
|
|
286
|
+
if (!!$event && !!$event.dataTransfer && !$event.dataTransfer.types.includes(MIME_TYPE_WIDGET_MANIFEST)) {
|
|
287
|
+
$event.dataTransfer.setData(MIME_TYPE_WIDGET_MANIFEST, JSON.stringify(manifest));
|
|
288
|
+
$event.dataTransfer.setData(MIME_TYPE_WIDGET_TYPE + manifest.type, 'unused');
|
|
289
|
+
// Passing widget size as a mime type, so that we can bypass security for placeholder size at the arrival of the drag
|
|
290
|
+
$event.dataTransfer.setData(MIME_TYPE_WIDGET_SIZE + `${manifest.layout.width}-${manifest.layout.height}`, 'useless' // data is in the mime type
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
dragEnter($event, force = false) {
|
|
295
|
+
$event.stopPropagation();
|
|
296
|
+
$event.preventDefault();
|
|
297
|
+
const types = ($event.dataTransfer || { types: [''] }).types;
|
|
298
|
+
if (types.includes(MIME_TYPE_WIDGET_MANIFEST)) {
|
|
299
|
+
this.store.dispatch(DashboardActions.toggleEditionMode({ force: true }));
|
|
300
|
+
this.actionType = 'move';
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
checkForDragEnter($event) {
|
|
304
|
+
if (!this.currentlyModifiedManifest) {
|
|
305
|
+
// create placeholder as a drag entered the component, go into edition mode and move action if it's a widget being dragged
|
|
306
|
+
const types = ($event.dataTransfer || { types: [''] }).types;
|
|
307
|
+
if (types.includes(MIME_TYPE_WIDGET_MANIFEST)) {
|
|
308
|
+
this.actionType = 'move';
|
|
309
|
+
this.store.dispatch(DashboardActions.toggleEditionMode({ force: true }));
|
|
310
|
+
// On drag enter, we only can put a placeholder, since for security reasons, the content of the data-transfer is not available
|
|
311
|
+
this.move.initialX = this.dashboardParams.offsetLeft;
|
|
312
|
+
this.move.initialY = this.dashboardParams.offsetTop;
|
|
313
|
+
const target = this.getTarget($event, false);
|
|
314
|
+
this.currentlyModifiedManifest = {
|
|
315
|
+
type: 'placeholder',
|
|
316
|
+
layout: { x: target?.x ?? 0, y: target?.y ?? 0, width: 1, height: 1 }
|
|
317
|
+
};
|
|
318
|
+
this.initialWidgetManifestList = JSON.parse(JSON.stringify((this.manifest || { widgets: [] }).widgets));
|
|
319
|
+
// console.log('create placeholder', this.currentlyModifiedManifest, this.initialWidgetManifestList);
|
|
320
|
+
// We passed widget size as a mimetype so that we can still read it without security issues
|
|
321
|
+
const widgetSizeMimeType = types.find((type) => type.includes(MIME_TYPE_WIDGET_SIZE));
|
|
322
|
+
if (!!widgetSizeMimeType) {
|
|
323
|
+
const [_, _2, w, h] = widgetSizeMimeType.split('-');
|
|
324
|
+
this.currentlyModifiedManifest.layout.width = parseInt(w, 10);
|
|
325
|
+
this.currentlyModifiedManifest.layout.height = parseInt(h, 10);
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
// Use grid size
|
|
329
|
+
const layout = WidgetPlacementUtils.getLayoutSize(this.layout, this.dashboardParams)[this.initialWidgetManifestList.length];
|
|
330
|
+
this.currentlyModifiedManifest.layout.width = layout.width;
|
|
331
|
+
this.currentlyModifiedManifest.layout.height = layout.height;
|
|
332
|
+
}
|
|
333
|
+
// We passed the type as a header name so that we can still access it without security issues
|
|
334
|
+
const widgetType = types.find((type) => type.includes(MIME_TYPE_WIDGET_TYPE));
|
|
335
|
+
if (!!widgetType) {
|
|
336
|
+
const [_, _2, type] = widgetType.split('-');
|
|
337
|
+
this.currentlyModifiedManifest.type = type;
|
|
338
|
+
}
|
|
339
|
+
// Reset initial position for the one we just calculated, so we can continue properly move the widget
|
|
340
|
+
this.move.initialX = $event.pageX;
|
|
341
|
+
this.move.initialY = $event.pageY;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
getTarget($event, optimize = true) {
|
|
346
|
+
const dX = $event.pageX - this.move.initialX;
|
|
347
|
+
const dY = $event.pageY - this.move.initialY;
|
|
348
|
+
const target = {
|
|
349
|
+
x: dX === 0
|
|
350
|
+
? 0
|
|
351
|
+
: Math.round(((dX / Math.abs(dX)) * (Math.abs(dX) - 0.5 * this.dashboardParams.cellWidth)) /
|
|
352
|
+
(this.dashboardParams.cellWidth + this.dashboardParams.gridGap)),
|
|
353
|
+
y: dY === 0
|
|
354
|
+
? 0
|
|
355
|
+
: Math.round(((dY / Math.abs(dY)) * (Math.abs(dY) - 0.5 * this.dashboardParams.cellHeight)) /
|
|
356
|
+
(this.dashboardParams.cellHeight + this.dashboardParams.gridGap))
|
|
357
|
+
};
|
|
358
|
+
if (!optimize || target.x !== this.move.previousX || target.y !== this.move.previousY) {
|
|
359
|
+
this.move.previousX = target.x;
|
|
360
|
+
this.move.previousY = target.y;
|
|
361
|
+
return target;
|
|
362
|
+
}
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
movingMouse($event, optimize = true) {
|
|
366
|
+
if (this.modeEdition && !!this.actionType) {
|
|
367
|
+
const target = this.getTarget($event, optimize);
|
|
368
|
+
if (target !== null) {
|
|
369
|
+
this.checkForDragEnter($event);
|
|
370
|
+
const candidateWidget = JSON.parse(JSON.stringify(this.currentlyModifiedManifest));
|
|
371
|
+
switch (this.actionType) {
|
|
372
|
+
case 'resize-nw':
|
|
373
|
+
if (candidateWidget.layout.x + target.x > 0 && candidateWidget.layout.height - target.y > 0) {
|
|
374
|
+
candidateWidget.layout.x += target.x;
|
|
375
|
+
candidateWidget.layout.y += target.y;
|
|
376
|
+
candidateWidget.layout.width -= target.x;
|
|
377
|
+
candidateWidget.layout.height -= target.y;
|
|
378
|
+
}
|
|
379
|
+
break;
|
|
380
|
+
case 'resize-sw':
|
|
381
|
+
if (candidateWidget.layout.width - target.x > 0) {
|
|
382
|
+
candidateWidget.layout.x += target.x;
|
|
383
|
+
candidateWidget.layout.width -= target.x;
|
|
384
|
+
candidateWidget.layout.height += target.y;
|
|
385
|
+
}
|
|
386
|
+
break;
|
|
387
|
+
case 'resize-ne':
|
|
388
|
+
if (candidateWidget.layout.height - target.y > 0) {
|
|
389
|
+
candidateWidget.layout.y += target.y;
|
|
390
|
+
candidateWidget.layout.width += target.x;
|
|
391
|
+
candidateWidget.layout.height -= target.y;
|
|
392
|
+
}
|
|
393
|
+
break;
|
|
394
|
+
case 'resize-se':
|
|
395
|
+
candidateWidget.layout.width += target.x;
|
|
396
|
+
candidateWidget.layout.height += target.y;
|
|
397
|
+
break;
|
|
398
|
+
case 'move':
|
|
399
|
+
const currentMaxX = Math.max(this.manifest?.grid?.columns ?? DEFAULT_COLUMNS_NUMBER, ...(this.manifest?.widgets ?? []).map((w) => w.layout.width + w.layout.x)) -
|
|
400
|
+
candidateWidget.layout.width +
|
|
401
|
+
1;
|
|
402
|
+
candidateWidget.layout.x = Math.max(0, Math.min(candidateWidget.layout.x + target.x, currentMaxX));
|
|
403
|
+
const currentMaxY = Math.max(this.manifest?.grid?.rows ?? DEFAULT_ROWS_NUMBER, ...(this.manifest?.widgets ?? []).map((w) => w.layout.height + w.layout.y)) -
|
|
404
|
+
candidateWidget.layout.height +
|
|
405
|
+
1;
|
|
406
|
+
candidateWidget.layout.y = Math.max(0, Math.min(candidateWidget.layout.y + target.y, currentMaxY));
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
this.store.dispatch(DashboardActions.updateDashboardManifest({
|
|
410
|
+
manifest: solveCollisions(candidateWidget, this.initialWidgetManifestList, this.manifest ?? {})
|
|
411
|
+
}));
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
dragMove($event) {
|
|
416
|
+
$event.stopPropagation();
|
|
417
|
+
$event.preventDefault();
|
|
418
|
+
this.movingMouse($event);
|
|
419
|
+
}
|
|
420
|
+
dragLeave($event) {
|
|
421
|
+
$event.stopPropagation();
|
|
422
|
+
$event.preventDefault();
|
|
423
|
+
// @ts-ignore
|
|
424
|
+
if ($event.currentTarget.contains($event.relatedTarget)) {
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
const types = ($event.dataTransfer || { types: [''] }).types;
|
|
428
|
+
if (types.includes(MIME_TYPE_WIDGET_MANIFEST)) {
|
|
429
|
+
// As the drag is leaving the window, delete the widget from it, and stop edition mode
|
|
430
|
+
if (!!$event && !!$event.dataTransfer) {
|
|
431
|
+
this.store.dispatch(DashboardActions.updateDashboardManifest({
|
|
432
|
+
manifest: {
|
|
433
|
+
...this.manifest,
|
|
434
|
+
widgets: this.initialWidgetManifestList
|
|
435
|
+
}
|
|
436
|
+
}));
|
|
437
|
+
this.clearActions();
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
dropping($event) {
|
|
442
|
+
$event.preventDefault();
|
|
443
|
+
$event.stopPropagation();
|
|
444
|
+
// @ts-ignore
|
|
445
|
+
if (!!$event && !!$event.dataTransfer) {
|
|
446
|
+
if ($event.dataTransfer.types.includes(MIME_TYPE_WIDGET_MANIFEST)) {
|
|
447
|
+
// Rearrange drop to correct size, type, ..., as a placeholder already been added to manifest by dragenter event
|
|
448
|
+
const dataTransferManifest = JSON.parse($event.dataTransfer.getData(MIME_TYPE_WIDGET_MANIFEST));
|
|
449
|
+
this.currentlyModifiedManifest = {
|
|
450
|
+
...dataTransferManifest,
|
|
451
|
+
layout: this.currentlyModifiedManifest?.layout ?? {}
|
|
452
|
+
};
|
|
453
|
+
this.movingMouse($event, false);
|
|
454
|
+
this.store.dispatch(DashboardActions.assertResultSets({}));
|
|
455
|
+
}
|
|
456
|
+
this.clearActions();
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
clearActions() {
|
|
460
|
+
this.actionType = undefined;
|
|
461
|
+
this.move.initialX = 0;
|
|
462
|
+
this.move.initialY = 0;
|
|
463
|
+
this.move.previousX = -1;
|
|
464
|
+
this.move.previousY = -1;
|
|
465
|
+
this.currentlyModifiedManifest = null;
|
|
466
|
+
this.initialWidgetManifestList = [];
|
|
467
|
+
}
|
|
468
|
+
/***
|
|
469
|
+
* Manage other kinds of drops (inside widgets)
|
|
470
|
+
*/
|
|
471
|
+
droppingInWidget($event, index) {
|
|
472
|
+
if (!!$event && !!$event.dataTransfer) {
|
|
473
|
+
if ($event.dataTransfer.types.includes(MIME_TYPE_RESULTSET)) {
|
|
474
|
+
const listWidgetManifests = [...(this.manifest || { widgets: [] }).widgets];
|
|
475
|
+
const resultSetName = $event.dataTransfer.getData(MIME_TYPE_RESULTSET);
|
|
476
|
+
const currentResultSet = (Array.isArray(listWidgetManifests[index].datasource)
|
|
477
|
+
? listWidgetManifests[index].datasource
|
|
478
|
+
: [listWidgetManifests[index].datasource]);
|
|
479
|
+
const cumulative = $event.shiftKey;
|
|
480
|
+
const newResultSet = cumulative ? [...currentResultSet, resultSetName] : resultSetName;
|
|
481
|
+
listWidgetManifests[index] = {
|
|
482
|
+
...listWidgetManifests[index],
|
|
483
|
+
datasource: newResultSet
|
|
484
|
+
};
|
|
485
|
+
this.store.dispatch(DashboardActions.updateDashboardManifest({
|
|
486
|
+
manifest: {
|
|
487
|
+
...this.manifest,
|
|
488
|
+
widgets: listWidgetManifests
|
|
489
|
+
}
|
|
490
|
+
}));
|
|
491
|
+
this.store.dispatch(DashboardActions.assertResultSets({}));
|
|
492
|
+
$event.preventDefault();
|
|
493
|
+
$event.stopPropagation();
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
toggleRemoveConfirm($event, index) {
|
|
498
|
+
if (!this.confirmRemoveRef) {
|
|
499
|
+
this.indexForRemoval = index ?? -1;
|
|
500
|
+
this.confirmRemoveRef = this.overlay.create(new OverlayConfig({
|
|
501
|
+
hasBackdrop: true,
|
|
502
|
+
panelClass: ['o-modal-wrapper'],
|
|
503
|
+
backdropClass: 'backdrop'
|
|
504
|
+
}));
|
|
505
|
+
this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name + '-modal' }));
|
|
506
|
+
this.confirmRemoveRef.backdropClick().subscribe((_) => this.toggleRemoveConfirm());
|
|
507
|
+
this.confirmRemoveRef.attach(new TemplatePortal(this.templateModal, this.viewContainerRef));
|
|
508
|
+
if ($event) {
|
|
509
|
+
const panel = document.querySelector('div.o-modal-wrapper');
|
|
510
|
+
if (!!panel) {
|
|
511
|
+
panel.style.left = Math.max(0, Math.min(window.innerWidth - panel.clientWidth, $event.clientX - 30)) + 'px';
|
|
512
|
+
panel.style.top = Math.max(0, Math.min(window.innerHeight - panel.clientHeight, $event.clientY - 10)) + 'px';
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
this.confirmRemoveRef.dispose();
|
|
518
|
+
this.confirmRemoveRef = undefined;
|
|
519
|
+
this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-modal' }));
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
confirmRemove() {
|
|
523
|
+
this.remove(this.indexForRemoval);
|
|
524
|
+
this.cancelRemoveConfirm();
|
|
525
|
+
}
|
|
526
|
+
cancelRemoveConfirm() {
|
|
527
|
+
this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name + '-modal' }));
|
|
528
|
+
this.confirmRemoveRef?.dispose();
|
|
529
|
+
this.confirmRemoveRef = undefined;
|
|
530
|
+
}
|
|
531
|
+
trackWidgets(index, widgetManifest) {
|
|
532
|
+
return widgetManifest.type + '-' + widgetManifest.datasource;
|
|
533
|
+
}
|
|
534
|
+
updateInstance(widgetIndex, $event) {
|
|
535
|
+
this.widgetsInstances[widgetIndex] = $event;
|
|
536
|
+
}
|
|
537
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: DashboardComponent, selector: "pry-dashboard", inputs: { staticDashboard: "staticDashboard", CloseOnDragOut: "CloseOnDragOut" }, outputs: { rowHeight: "rowHeight", rows: "rows" }, viewQueries: [{ propertyName: "templateModal", first: true, predicate: ["templateModal"], descendants: true, read: TemplateRef }, { propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"o-dashboard-grid\"\n [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n #grid\n (mousemove)=\"movingMouse($event)\"\n (drop)=\"dropping($event)\"\n (dragover)=\"dragMove($event)\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n>\n <ng-container\n *ngFor=\"\n let widgetManifest of (windowManifest$ | async)?.widgets || [];\n let widgetIndex = index;\n trackBy: trackWidgets\n \"\n >\n <div\n class=\"o-dashboard-widget\"\n [class.-edited]=\"modeEdition\"\n [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n (drop)=\"droppingInWidget($event, widgetIndex)\"\n >\n <ng-container *ngIf=\"modeEdition\">\n <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n <pry-icon iconSvg=\"north_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n <pry-icon iconSvg=\"south_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n <pry-icon iconSvg=\"north_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n <pry-icon iconSvg=\"south_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n <pry-icon iconSvg=\"close\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n <div class=\"move-inside move-{{ widgetManifest.type }}\">\n <span>{{ widgetManifest.title ?? ('@pry.toolbox.' + widgetManifest.type | i18n) }}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!modeEdition\">\n <pry-widget-instanciator\n [staticManifest]=\"widgetManifest\"\n [widgetIndex]=\"widgetIndex\"\n (widgetInstance)=\"updateInstance(widgetIndex, $event)\"\n ></pry-widget-instanciator>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(nonFillerWidgets$ | async) === 0\">\n <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n <img\n class=\"no-widget__search\"\n src=\"../../../assets/svgs/pry_recherche.svg\"\n alt=\"{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }} {{ backgroundArea$ | async }}\"\n />\n <span class=\"no-widget__text\">{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }}</span>\n </div>\n </ng-container>\n</div>\n<pry-context-menu></pry-context-menu>\n\n<ng-template #templateModal>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\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: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.WidgetInstanciatorComponent, selector: "pry-widget-instanciator", inputs: ["widgetIndex", "staticManifest", "standalone", "open$"], outputs: ["manifestModified", "widgetInstance"] }, { kind: "component", type: i6.ContextMenuComponent, selector: "pry-context-menu" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.I18nPipe, name: "i18n" }] }); }
|
|
539
|
+
}
|
|
540
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
541
|
+
type: Component,
|
|
542
|
+
args: [{ selector: 'pry-dashboard', template: "<div\n class=\"o-dashboard-grid\"\n [style.gridTemplateColumns]=\"gridTemplateColumns$ | async\"\n [style.gridTemplateRows]=\"gridTemplateRows$ | async\"\n [style.gridGap]=\"dashboardParams.gridGap + 'px'\"\n #grid\n (mousemove)=\"movingMouse($event)\"\n (drop)=\"dropping($event)\"\n (dragover)=\"dragMove($event)\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n>\n <ng-container\n *ngFor=\"\n let widgetManifest of (windowManifest$ | async)?.widgets || [];\n let widgetIndex = index;\n trackBy: trackWidgets\n \"\n >\n <div\n class=\"o-dashboard-widget\"\n [class.-edited]=\"modeEdition\"\n [style.gridColumn]=\"gridColumn(widgetManifest.layout)\"\n [style.gridRow]=\"gridRow(widgetManifest.layout)\"\n (drop)=\"droppingInWidget($event, widgetIndex)\"\n >\n <ng-container *ngIf=\"modeEdition\">\n <div class=\"resize nw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-nw')\">\n <pry-icon iconSvg=\"north_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize sw-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-sw')\">\n <pry-icon iconSvg=\"south_west\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize ne-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-ne')\">\n <pry-icon iconSvg=\"north_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize se-resize\" (mousedown)=\"startResize($event, widgetIndex, 'resize-se')\">\n <pry-icon iconSvg=\"south_east\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"resize delete\" (mousedown)=\"toggleRemoveConfirm($event, widgetIndex)\">\n <pry-icon iconSvg=\"close\" [animation]=\"false\"></pry-icon>\n </div>\n <div class=\"move\" draggable=\"true\" (dragstart)=\"dragStart($event, widgetIndex)\">\n <div class=\"move-inside move-{{ widgetManifest.type }}\">\n <span>{{ widgetManifest.title ?? ('@pry.toolbox.' + widgetManifest.type | i18n) }}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!modeEdition\">\n <pry-widget-instanciator\n [staticManifest]=\"widgetManifest\"\n [widgetIndex]=\"widgetIndex\"\n (widgetInstance)=\"updateInstance(widgetIndex, $event)\"\n ></pry-widget-instanciator>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(nonFillerWidgets$ | async) === 0\">\n <div class=\"no-widget\" [style.grid-area]=\"backgroundArea$ | async\">\n <img\n class=\"no-widget__search\"\n src=\"../../../assets/svgs/pry_recherche.svg\"\n alt=\"{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }} {{ backgroundArea$ | async }}\"\n />\n <span class=\"no-widget__text\">{{\n (layout === DashboardGridLayout.MANUAL ? '@pry.widget.target.none_manual' : '@pry.widget.target.none_auto')\n | i18n\n }}</span>\n </div>\n </ng-container>\n</div>\n<pry-context-menu></pry-context-menu>\n\n<ng-template #templateModal>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.widget.modalTitle' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"cancelRemoveConfirm()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" (click)=\"cancelRemoveConfirm()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button type=\"submit\" (click)=\"confirmRemove()\" class=\"a-btn a-btn--primary\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
543
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { templateModal: [{
|
|
544
|
+
type: ViewChild,
|
|
545
|
+
args: ['templateModal', { read: TemplateRef }]
|
|
546
|
+
}], staticDashboard: [{
|
|
547
|
+
type: Input
|
|
548
|
+
}], CloseOnDragOut: [{
|
|
549
|
+
type: Input
|
|
550
|
+
}], gridRef: [{
|
|
551
|
+
type: ViewChild,
|
|
552
|
+
args: ['grid']
|
|
553
|
+
}], rowHeight: [{
|
|
554
|
+
type: Output
|
|
555
|
+
}], rows: [{
|
|
556
|
+
type: Output
|
|
557
|
+
}] } });
|
|
558
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssTUFBTSxxQkFBcUIsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxFQUFFLEVBQ0YsU0FBUyxFQUNWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsbUJBQW1CLEVBSXBCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkUsT0FB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Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFFYSxPQUFPO3NCQUF6QixTQUFTO3VCQUFDLE1BQU07Z0JBZ0JQLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHtcbiAgYXVkaXRUaW1lLFxuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGNvbWJpbmVMYXRlc3RXaXRoLFxuICBmcm9tRXZlbnQsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXBcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRHcmlkTGF5b3V0LFxuICBEYXNoYm9hcmRNYW5pZmVzdCxcbiAgV2lkZ2V0TGF5b3V0LFxuICBXaWRnZXRNYW5pZmVzdFxufSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNSU1FX1RZUEVfUkVTVUxUU0VUIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9taW1ldHlwZS1yZXN1bHRzZXQuY29uc3RhbnQnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9jYXRlZ29yeS9jYXRlZ29yeS5hY3Rpb25zJztcbmltcG9ydCB7IENsYXNzQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvY2xhc3MvY2xhc3MuYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25maWdBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlnU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9jb25maWcvY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBEYXRhU291cmNlQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2UuYWN0aW9ucyc7XG5pbXBvcnQgeyBGaWVsZEFjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2ZpZWxkL2ZpZWxkLmFjdGlvbnMnO1xuaW1wb3J0IHsgUmVsYXRpb25UeXBlc0FjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3JlbGF0aW9uLXR5cGVzL3JlbGF0aW9uLXR5cGVzLmFjdGlvbnMnO1xuaW1wb3J0IHsgV2lkZ2V0UGxhY2VtZW50VXRpbHMgfSBmcm9tICcuLi9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LXBsYWNlbWVudC93aWRnZXQtcGxhY2VtZW50LnV0aWxzJztcbmltcG9ydCB7IERhc2hib2FyZEFjdGlvbnMsIERhc2hib2FyZENlbGxQYXJhbXMgfSBmcm9tICcuLi9zdG9yZS9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICBERUZBVUxUX0dBUF9QWCxcbiAgREVGQVVMVF9ST1dfSEVJR0hUX1BYLFxuICBERUZBVUxUX1JPV1NfTlVNQkVSXG59IGZyb20gJy4uL3N0b3JlL2Rhc2hib2FyZC5jb250YW50cyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IHNvbHZlQ29sbGlzaW9ucyB9IGZyb20gJy4vc29sdmUtY29sbGlzaW9ucy5mdW5jdGlvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFzZVdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCA9ICdhcHBsaWNhdGlvbi93aWRnZXQtbWFuaWZlc3QnO1xuZXhwb3J0IGNvbnN0IE1JTUVfVFlQRV9XSURHRVRfVFlQRSA9ICdhcHBsaWNhdGlvbi93aWRnZXQtdHlwZS0nO1xuZXhwb3J0IGNvbnN0IE1JTUVfVFlQRV9XSURHRVRfU0laRSA9ICdhcHBsaWNhdGlvbi93aWRnZXQtc2l6ZS0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIG1hbmlmZXN0OiBEYXNoYm9hcmRNYW5pZmVzdCB8IG51bGwgPSBudWxsO1xuICB3aW5kb3dNYW5pZmVzdCQ6IE9ic2VydmFibGU8RGFzaGJvYXJkTWFuaWZlc3Q+O1xuICBtb2RlRWRpdGlvbiA9IGZhbHNlO1xuICBtb2RlRWRpdGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFjdGlvblR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhdGljRGFzaGJvYXJkJDogQmVoYXZpb3JTdWJqZWN0PERhc2hib2FyZE1hbmlmZXN0IHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhc2hib2FyZE1hbmlmZXN0IHwgbnVsbD4obnVsbCk7XG4gIHN0YWNrZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGluZGV4Rm9yUmVtb3ZhbDogbnVtYmVyID0gLTE7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlTW9kYWwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlTW9kYWwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBzZXBhcmF0b3JzJDogT2JzZXJ2YWJsZTxXaWRnZXRMYXlvdXRbXT47XG4gIG5vbkZpbGxlcldpZGdldHMkOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIHdpZGdldHNJbnN0YW5jZXM6IEFycmF5PEJhc2VXaWRnZXRDb21wb25lbnQ+ID0gW107XG5cbiAgQElucHV0KCkgc2V0IHN0YXRpY0Rhc2hib2FyZCh3aW5kb3c6IERhc2hib2FyZE1hbmlmZXN0KSB7XG4gICAgdGhpcy5zdGF0aWNEYXNoYm9hcmQkLm5leHQod2luZG93KTtcbiAgfVxuXG4gIEBJbnB1dCgpIENsb3NlT25EcmFnT3V0ID0gdHJ1ZTtcblxuICBAVmlld0NoaWxkKCdncmlkJykgZ3JpZFJlZiE6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY2FuQ2FsY3VsYXRlVmlldyA9IGZhbHNlO1xuICB0YXJnZXRJbmRleGVzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIGRhc2hib2FyZFBhcmFtczogRGFzaGJvYXJkQ2VsbFBhcmFtcyA9IHtcbiAgICBncmlkV2lkdGg6IDEsXG4gICAgZ3JpZEhlaWdodDogMSxcbiAgICBncmlkR2FwOiBERUZBVUxUX0dBUF9QWCxcbiAgICBjb2x1bW5zOiBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICAgIGNlbGxXaWR0aDogMSxcbiAgICBjZWxsSGVpZ2h0OiBERUZBVUxUX1JPV19IRUlHSFRfUFgsXG4gICAgcm93czogREVGQVVMVF9ST1dTX05VTUJFUixcbiAgICBvZmZzZXRMZWZ0OiAwLFxuICAgIG9mZnNldFRvcDogMCxcbiAgICBtb2JpbGVNb2RlOiBmYWxzZVxuICB9O1xuICBwcml2YXRlIGJyZWFrcG9pbnQ6IG51bWJlciA9IDA7XG4gIEBPdXRwdXQoKSByb3dIZWlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QgfCBudWxsID0gbnVsbDtcbiAgaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdDogV2lkZ2V0TWFuaWZlc3RbXSA9IFtdO1xuICBtb3ZlOiB7XG4gICAgaW5pdGlhbFg6IG51bWJlcjtcbiAgICBpbml0aWFsWTogbnVtYmVyO1xuICAgIHByZXZpb3VzWDogbnVtYmVyO1xuICAgIHByZXZpb3VzWTogbnVtYmVyO1xuICB9ID0ge1xuICAgIGluaXRpYWxYOiAtMSxcbiAgICBpbml0aWFsWTogLTEsXG4gICAgcHJldmlvdXNYOiAtMSxcbiAgICBwcmV2aW91c1k6IC0xXG4gIH07XG4gIGdyaWRUZW1wbGF0ZVJvd3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0O1xuICBsYXlvdXQ6IERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgYmFja2dyb3VuZEFyZWEkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHByaXZhdGUgY29uZmlybVJlbW92ZVJlZj86IE92ZXJsYXlSZWY7XG4gIEFycmF5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tb2RlRWRpdGlvbiQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkRWRpdGlvbk1vZGUpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLm1vZGVFZGl0aW9uJC5zdWJzY3JpYmUoKG1vZGUpID0+IHtcbiAgICAgICAgdGhpcy5tb2RlRWRpdGlvbiA9IG1vZGU7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnRhcmdldEluZGV4ZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRhcmdldFRlbmFudHNJbmRleGVzKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhc2hib2FyZENlbGxQYXJhbXMpLnN1YnNjcmliZSgocGFyYW1zKSA9PiAodGhpcy5kYXNoYm9hcmRQYXJhbXMgPSBwYXJhbXMpKVxuICAgICk7XG4gICAgdGhpcy53aW5kb3dNYW5pZmVzdCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnN0YXRpY0Rhc2hib2FyZCQpLFxuICAgICAgc3dpdGNoTWFwKChbd2luZG93TWFuaWZlc3QsIHN0YXRpY0Rhc2hib2FyZF0pID0+ICghc3RhdGljRGFzaGJvYXJkID8gb2Yod2luZG93TWFuaWZlc3QpIDogb2Yoc3RhdGljRGFzaGJvYXJkKSkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHAsIGMpID0+IGVxdWFsKHAsIGMpKSxcbiAgICAgIG1hcCgoX3dNYW5pZmVzdCkgPT4ge1xuICAgICAgICBjb25zdCB3TWFuaWZlc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF93TWFuaWZlc3QpKTtcbiAgICAgICAgaWYgKHdNYW5pZmVzdC5ncmlkPy5sYXlvdXQgJiYgd01hbmlmZXN0LmdyaWQubGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCkge1xuICAgICAgICAgIC8vIENvbXBsZXRlIHdpdGggcGxhY2Vob2xkZXJzXG4gICAgICAgICAgY29uc3Qgc2l6ZSA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlc0ZvckxheW91dCh3TWFuaWZlc3QuZ3JpZC5sYXlvdXQpO1xuICAgICAgICAgIGNvbnN0IHBsYWNlcyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMoXG4gICAgICAgICAgICB7IHR5cGU6ICdmaWxsZXInLCBsYXlvdXQ6IHsgeDogMSwgeTogMSwgd2lkdGg6IDEsIGhlaWdodDogMSB9IH0sXG4gICAgICAgICAgICB3TWFuaWZlc3QuZ3JpZC5sYXlvdXQsXG4gICAgICAgICAgICB3TWFuaWZlc3QuZ3JpZFxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IGFkZGVkID0gdHJ1ZTtcbiAgICAgICAgICB3aGlsZSAod01hbmlmZXN0LndpZGdldHMubGVuZ3RoIDwgc2l6ZSAmJiBhZGRlZCkge1xuICAgICAgICAgICAgYWRkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGxhY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBvdGVudGlhbCA9IHsgLi4ucGxhY2VzW2ldLCBvcHRpb25zOiB7IGluZGV4OiBpIH0gfTtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdNYW5pZmVzdC53aWRnZXRzXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQ6IFdpZGdldE1hbmlmZXN0KSA9PiBXaWRnZXRQbGFjZW1lbnRVdGlscy5hcmVEaXNqb2ludCh3aWRnZXQsIHBvdGVudGlhbCkpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChhOiBib29sZWFuLCBiOiBib29sZWFuKSA9PiBhICYmIGIsIHRydWUpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdNYW5pZmVzdC53aWRnZXRzLnB1c2gocG90ZW50aWFsKTtcbiAgICAgICAgICAgICAgICBhZGRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdNYW5pZmVzdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLm5vbkZpbGxlcldpZGdldHMkID0gdGhpcy53aW5kb3dNYW5pZmVzdCQucGlwZShcbiAgICAgIG1hcCgod01hbmlmZXN0KSA9PiB3TWFuaWZlc3Qud2lkZ2V0cy5maWx0ZXIoKHcpID0+IHcudHlwZSAhPT0gJ2ZpbGxlcicpLmxlbmd0aClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RhdGljRGFzaGJvYXJkJC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIGlmICghIW1hbmlmZXN0KSB7XG4gICAgICAgICAgY29uc3QgZ2V0RGF0YUFjdGlvbnMgPSAoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICAgICAgKG1hbmlmZXN0LndpZGdldHMgPz8gKFtdIGFzIFdpZGdldE1hbmlmZXN0W10pKVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgY10sIFtdIGFzIFdpZGdldE1hbmlmZXN0W10pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB3aWRNYW5pZmVzdC5kYXRhc291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSBhcyAoc3RyaW5nIHwgc3RyaW5nW10pW11cbiAgICAgICAgICAgICkucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uKEFycmF5LmlzQXJyYXkoYykgPyBjIDogW2NdKV0sIFtdKSBhcyBzdHJpbmdbXVxuICAgICAgICAgICkubWFwKChyZXN1bHRTZXQpID0+IERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7IGlkOiByZXN1bHRTZXQgfSkpO1xuXG4gICAgICAgICAgZ2V0RGF0YUFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKGFjdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEZpZWxkQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ2xhc3NBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDYXRlZ29yeUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuZ2V0TWFwU3R5bGVzKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlbGF0aW9uVHlwZXNBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAucGlwZShhdWRpdFRpbWUoMTAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaWV3KCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLndpbmRvd01hbmlmZXN0JCwgdGhpcy5tb2RlRWRpdGlvbiRdKVxuICAgICAgICAucGlwZShhdWRpdFRpbWUoMTAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaWV3KCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAna2V5ZG93bicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoJGV2ZW50OiBFdmVudCkgPT4gJGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLFxuICAgICAgICAgIGZpbHRlcigoJGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiAkZXZlbnQua2V5ID09PSAnTCcgJiYgJGV2ZW50LmN0cmxLZXkgJiYgJGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnRvZ2dsZUVkaXRpb25Nb2RlKHt9KSkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAnbW91c2V1cCcpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmJyZWFrcG9pbnQpLnN1YnNjcmliZSgoYnApID0+IHtcbiAgICAgICAgdGhpcy5icmVha3BvaW50ID0gYnA7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy53aW5kb3dNYW5pZmVzdCQuc3Vic2NyaWJlKChtYW5pZmVzdCkgPT4ge1xuICAgICAgICB0aGlzLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5ncmlkVGVtcGxhdGVSb3dzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMud2luZG93TWFuaWZlc3QkLCB0aGlzLnN0YWNrZWQkXSkucGlwZShcbiAgICAgIG1hcCgoW21hbmlmZXN0LCBzdGFja2VkXSkgPT5cbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJvd3MoXG4gICAgICAgICAgc3RhY2tlZCAmJiB0aGlzLm1hbmlmZXN0XG4gICAgICAgICAgICA/IHRoaXMubWFuaWZlc3Q/LndpZGdldHMubWFwKCh3bSkgPT4gd20ubGF5b3V0LmhlaWdodCkucmVkdWNlKCh3bTEsIHdtMikgPT4gd20xICsgd20yLCAwKVxuICAgICAgICAgICAgOiBtYW5pZmVzdC5ncmlkPy5yb3dzID8/IERFRkFVTFRfUk9XU19OVU1CRVJcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy53aW5kb3dNYW5pZmVzdCQsIHRoaXMuc3RhY2tlZCRdKS5waXBlKFxuICAgICAgbWFwKChbbWFuaWZlc3QsIHN0YWNrZWRdKSA9PiB0aGlzLmdlbmVyYXRlQ29sdW1ucyhzdGFja2VkID8gMSA6IG1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgfHwgREVGQVVMVF9DT0xVTU5TX05VTUJFUikpXG4gICAgKTtcblxuICAgIHRoaXMuYmFja2dyb3VuZEFyZWEkID0gY29tYmluZUxhdGVzdChbdGhpcy53aW5kb3dNYW5pZmVzdCQsIHRoaXMuc3RhY2tlZCRdKS5waXBlKFxuICAgICAgbWFwKChbbWFuaWZlc3QsIHN0YWNrZWRdKSA9PlxuICAgICAgICAhc3RhY2tlZFxuICAgICAgICAgID8gYDMvMy8keyhtYW5pZmVzdC5ncmlkPy5yb3dzID8/IERFRkFVTFRfUk9XU19OVU1CRVIpIC0gMX0vJHtcbiAgICAgICAgICAgICAgKG1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUikgLSAxXG4gICAgICAgICAgICB9YFxuICAgICAgICAgIDogYDMvMS8keyhtYW5pZmVzdC5ncmlkPy5jb2x1bW5zID8/IERFRkFVTFRfQ09MVU1OU19OVU1CRVIpIC0gMX0vMWBcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zZXBhcmF0b3JzJCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChsYXlvdXQpID0+XG4gICAgICAgICAgbGF5b3V0ID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTFxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBXaWRnZXRQbGFjZW1lbnRVdGlscy5nZXRMYXlvdXRTaXplKGxheW91dCwgeyByb3dzOiAxLCBjb2x1bW5zOiAxIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jYW5DYWxjdWxhdGVWaWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKipcbiAgICogTWFuYWdlIGRpc3BsYXlcbiAgICovXG5cbiAgY2FsY3VsYXRlVmlldygpIHtcbiAgICBpZiAodGhpcy5jYW5DYWxjdWxhdGVWaWV3KSB7XG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgd2hpbGUgKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ID09PSAwICYmICEhZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyaWRXaWR0aCA9ICg8SFRNTEVsZW1lbnQ+ZWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICBjb25zdCBtb2JpbGVNb2RlID0gZ3JpZFdpZHRoIDwgdGhpcy5icmVha3BvaW50O1xuICAgICAgdGhpcy5zdGFja2VkJC5uZXh0KHRoaXMuZGFzaGJvYXJkUGFyYW1zLm1vYmlsZU1vZGUgJiYgIXRoaXMubW9kZUVkaXRpb24pO1xuICAgICAgY29uc3Qgcm93cyA9ICF0aGlzLmRpc3BsYXlJc1N0YWNrZWRcbiAgICAgICAgPyAoISF0aGlzLm1hbmlmZXN0ICYmICEhdGhpcy5tYW5pZmVzdC5ncmlkICYmIHRoaXMubWFuaWZlc3QuZ3JpZC5yb3dzKSB8fCBERUZBVUxUX1JPV1NfTlVNQkVSXG4gICAgICAgIDogdGhpcy5tYW5pZmVzdD8ud2lkZ2V0cy5yZWR1Y2UoKHA6IG51bWJlciwgYzogV2lkZ2V0TWFuaWZlc3QpID0+IHAgKyBjLmxheW91dC5oZWlnaHQsIDApID8/IDE7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgZ3JpZFdpZHRoLFxuICAgICAgICAvLyBDYWxjdWxhdGUgaGVpZ2h0IHRvIHBhcmVubnQgdGhlIHBhcmVudCdzXG4gICAgICAgIGdyaWRIZWlnaHQ6IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICBncmlkR2FwOiAxLFxuICAgICAgICBjb2x1bW5zOiAoISF0aGlzLm1hbmlmZXN0ICYmICEhdGhpcy5tYW5pZmVzdC5ncmlkICYmIHRoaXMubWFuaWZlc3QuZ3JpZC5jb2x1bW5zKSB8fCBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICAgICAgICBjZWxsSGVpZ2h0OiAxLFxuICAgICAgICByb3dzLFxuICAgICAgICBjZWxsV2lkdGg6IDAsXG4gICAgICAgIG9mZnNldExlZnQ6IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQsXG4gICAgICAgIG9mZnNldFRvcDogdGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wLFxuICAgICAgICBtb2JpbGVNb2RlXG4gICAgICB9O1xuICAgICAgcGFyYW1zLmdyaWRHYXAgPVxuICAgICAgICBwYXJhbXMucm93cyAqIHBhcmFtcy5jZWxsSGVpZ2h0IDwgcGFyYW1zLmdyaWRIZWlnaHRcbiAgICAgICAgICA/ICEhdGhpcy5tYW5pZmVzdCAmJiAhIXRoaXMubWFuaWZlc3QuZ3JpZFxuICAgICAgICAgICAgPyB0aGlzLm1hbmlmZXN0LmdyaWQuZ2FwIHx8IERFRkFVTFRfR0FQX1BYXG4gICAgICAgICAgICA6IERFRkFVTFRfR0FQX1BYXG4gICAgICAgICAgOiAwO1xuICAgICAgcGFyYW1zLmNlbGxIZWlnaHQgPSAocGFyYW1zLmdyaWRIZWlnaHQgLSAocGFyYW1zLnJvd3MgLSAxKSAqIHBhcmFtcy5ncmlkR2FwKSAvIHBhcmFtcy5yb3dzO1xuICAgICAgcGFyYW1zLmNlbGxXaWR0aCA9IChwYXJhbXMuZ3JpZFdpZHRoIC0gKHBhcmFtcy5jb2x1bW5zIC0gMSkgKiBwYXJhbXMuZ3JpZEdhcCkgLyBwYXJhbXMuY29sdW1ucztcblxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZFBhcmFtcyh7IHBhcmFtcyB9KSk7XG5cbiAgICAgIHRoaXMucm93cy5uZXh0KHBhcmFtcy5yb3dzKTtcbiAgICAgIHRoaXMucm93SGVpZ2h0Lm5leHQocGFyYW1zLmNlbGxIZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNwbGF5SXNTdGFja2VkKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBncmlkQ29sdW1uKGxheW91dDogV2lkZ2V0TGF5b3V0KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5SXNTdGFja2VkIHx8ICFsYXlvdXQpIHtcbiAgICAgIHJldHVybiAnMSAvIDEnO1xuICAgIH1cbiAgICBpZiAobGF5b3V0LndpZHRoID4gMSkge1xuICAgICAgcmV0dXJuIGAke01hdGgubWluKGxheW91dC54LCB0aGlzLmRhc2hib2FyZFBhcmFtcy5jb2x1bW5zIC0gbGF5b3V0LndpZHRoICsgMSl9IC8gJHtNYXRoLm1pbihcbiAgICAgICAgbGF5b3V0LnggKyBsYXlvdXQud2lkdGgsXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNvbHVtbnMgKyAxXG4gICAgICApfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtsYXlvdXQueH1gO1xuICAgIH1cbiAgfVxuXG4gIGdyaWRSb3cobGF5b3V0OiBXaWRnZXRMYXlvdXQpOiBzdHJpbmcge1xuICAgIGlmICghbGF5b3V0KSB7XG4gICAgICByZXR1cm4gJzEnO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNwbGF5SXNTdGFja2VkKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0hlaWdodCA9IHRoaXMubWFuaWZlc3Q/LndpZGdldHNcbiAgICAgICAgLmZpbHRlcigod206IFdpZGdldE1hbmlmZXN0KSA9PiAod20ubGF5b3V0LnkgPT09IGxheW91dC55ICYmIHdtLmxheW91dC54IDwgbGF5b3V0LngpIHx8IHdtLmxheW91dC55IDwgbGF5b3V0LnkpXG4gICAgICAgIC5yZWR1Y2UoKHA6IG51bWJlciwgYzogV2lkZ2V0TWFuaWZlc3QpID0+IHAgKyBjLmxheW91dC5oZWlnaHQsIDEpO1xuICAgICAgcmV0dXJuIGAke3ByZXZpb3VzSGVpZ2h0ID8/IDF9IC8gJHsocHJldmlvdXNIZWlnaHQgPz8gMSkgKyBsYXlvdXQuaGVpZ2h0fWA7XG4gICAgfVxuICAgIGlmIChsYXlvdXQuaGVpZ2h0ID4gMSkge1xuICAgICAgcmV0dXJuIGAke01hdGgubWF4KDEsIE1hdGgubWluKGxheW91dC55LCB0aGlzLmRhc2hib2FyZFBhcmFtcy5yb3dzIC0gbGF5b3V0LmhlaWdodCArIDEpKX0gLyAke01hdGgubWluKFxuICAgICAgICBsYXlvdXQueSArIGxheW91dC5oZWlnaHQsXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkUGFyYW1zLnJvd3MgKyAxXG4gICAgICApfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtsYXlvdXQueX1gO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUm93cyhyb3dzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheShyb3dzKS5maWxsKCcxZnInKS5qb2luKCcgJyk7XG4gIH1cblxuICBnZW5lcmF0ZUNvbHVtbnMoY29sdW1uczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkoY29sdW1ucykuZmlsbCgnMWZyJykuam9pbignICcpO1xuICB9XG5cbiAgLyoqKlxuICAgKiBEaXJlY3QgYWN0aW9ucyBvbiB3aWRnZXRzXG4gICAqL1xuXG4gIHJlbW92ZShpOiBudW1iZXIpIHtcbiAgICBjb25zdCBsaXN0V2lkZ2V0TWFuaWZlc3RzID0gWy4uLih0aGlzLm1hbmlmZXN0IHx8IHsgd2lkZ2V0czogW10gfSkud2lkZ2V0c107XG4gICAgbGlzdFdpZGdldE1hbmlmZXN0cy5zcGxpY2UoaSwgMSkuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC50eXBlICE9PSAnZmlsbGVyJyk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7XG4gICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgLi4udGhpcy5tYW5pZmVzdCxcbiAgICAgICAgICB3aWRnZXRzOiBsaXN0V2lkZ2V0TWFuaWZlc3RzXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG1vdmVJbk5ld1dpbmRvdyh3aWRnZXRJbmRleDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXQoeyB3aWRnZXRJbmRleCwgdGFyZ2V0SW5kZXggfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSk7XG4gIH1cblxuICBtYXhpbWl6ZSh3aWRnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLm1heGltaXplV2lkZ2V0KHsgd2lkZ2V0SW5kZXggfSkpO1xuICB9XG5cbiAgLyoqKlxuICAgKiBNYW5hZ2UgZHJhZyBuIGRyb3AsIG1vdmUsIHJlc2l6ZVxuICAgKi9cblxuICBwcmVwYXJlTW9kaWZpY2F0aW9uKCRldmVudDogTW91c2VFdmVudCwgaW5kZXhNYW5pZmVzdDogbnVtYmVyKSB7XG4gICAgdGhpcy5tb3ZlLmluaXRpYWxYID0gJGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5tb3ZlLmluaXRpYWxZID0gJGV2ZW50LmNsaWVudFk7XG4gICAgdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgodGhpcy5tYW5pZmVzdCB8fCB7IHdpZGdldHM6IFtdIH0pLndpZGdldHMpKTtcbiAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QgPSB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3Quc3BsaWNlKGluZGV4TWFuaWZlc3QsIDEpWzBdO1xuICAgIC8vIGNvbnNvbGUubG9nKCdwcmVwYXJlJywgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LCB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QpO1xuICB9XG5cbiAgc3RhcnRSZXNpemUoJGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleE1hbmlmZXN0OiBudW1iZXIsIGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3Rpb25UeXBlID0gZGlyZWN0aW9uO1xuICAgIHRoaXMucHJlcGFyZU1vZGlmaWNhdGlvbigkZXZlbnQsIGluZGV4TWFuaWZlc3QpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydCByZXNpemUnLCB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QsIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCk7XG4gIH1cblxuICBkcmFnU3RhcnQoJGV2ZW50OiBEcmFnRXZlbnQsIGluZGV4TWFuaWZlc3Q6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9ICdtb3ZlJztcbiAgICB0aGlzLnByZXBhcmVNb2RpZmljYXRpb24oJGV2ZW50LCBpbmRleE1hbmlmZXN0KTtcbiAgICBEYXNoYm9hcmRDb21wb25lbnQuYWRkVHJhbnNmZXJNYW5pZmVzdE1ldGFkYXRhKCRldmVudCwgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID8/ICh7fSBhcyBXaWRnZXRNYW5pZmVzdCkpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydCBtb3ZlJywgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LCB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWRkVHJhbnNmZXJNYW5pZmVzdE1ldGFkYXRhKCRldmVudDogRHJhZ0V2ZW50LCBtYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QpIHtcbiAgICBpZiAoISEkZXZlbnQgJiYgISEkZXZlbnQuZGF0YVRyYW5zZmVyICYmICEkZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QpKSB7XG4gICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShNSU1FX1RZUEVfV0lER0VUX1RZUEUgKyBtYW5pZmVzdC50eXBlLCAndW51c2VkJyk7XG4gICAgICAvLyBQYXNzaW5nIHdpZGdldCBzaXplIGFzIGEgbWltZSB0eXBlLCBzbyB0aGF0IHdlIGNhbiBieXBhc3Mgc2VjdXJpdHkgZm9yIHBsYWNlaG9sZGVyIHNpemUgYXQgdGhlIGFycml2YWwgb2YgdGhlIGRyYWdcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcbiAgICAgICAgTUlNRV9UWVBFX1dJREdFVF9TSVpFICsgYCR7bWFuaWZlc3QubGF5b3V0LndpZHRofS0ke21hbmlmZXN0LmxheW91dC5oZWlnaHR9YCxcbiAgICAgICAgJ3VzZWxlc3MnIC8vIGRhdGEgaXMgaW4gdGhlIG1pbWUgdHlwZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkcmFnRW50ZXIoJGV2ZW50OiBEcmFnRXZlbnQsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCB0eXBlcyA9ICgkZXZlbnQuZGF0YVRyYW5zZmVyIHx8IHsgdHlwZXM6IFsnJ10gfSkudHlwZXM7XG5cbiAgICBpZiAodHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCkpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuYWN0aW9uVHlwZSA9ICdtb3ZlJztcbiAgICB9XG4gIH1cblxuICBjaGVja0ZvckRyYWdFbnRlcigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCkge1xuICAgICAgLy8gY3JlYXRlIHBsYWNlaG9sZGVyIGFzIGEgZHJhZyBlbnRlcmVkIHRoZSBjb21wb25lbnQsIGdvIGludG8gZWRpdGlvbiBtb2RlIGFuZCBtb3ZlIGFjdGlvbiBpZiBpdCdzIGEgd2lkZ2V0IGJlaW5nIGRyYWdnZWRcbiAgICAgIGNvbnN0IHR5cGVzID0gKCgkZXZlbnQgYXMgRHJhZ0V2ZW50KS5kYXRhVHJhbnNmZXIgfHwgeyB0eXBlczogWycnXSB9KS50eXBlcztcbiAgICAgIGlmICh0eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUKSkge1xuICAgICAgICB0aGlzLmFjdGlvblR5cGUgPSAnbW92ZSc7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiB0cnVlIH0pKTtcblxuICAgICAgICAvLyBPbiBkcmFnIGVudGVyLCB3ZSBvbmx5IGNhbiBwdXQgYSBwbGFjZWhvbGRlciwgc2luY2UgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHRoZSBjb250ZW50IG9mIHRoZSBkYXRhLXRyYW5zZmVyIGlzIG5vdCBhdmFpbGFibGVcbiAgICAgICAgdGhpcy5tb3ZlLmluaXRpYWxYID0gdGhpcy5kYXNoYm9hcmRQYXJhbXMub2Zmc2V0TGVmdDtcbiAgICAgICAgdGhpcy5tb3ZlLmluaXRpYWxZID0gdGhpcy5kYXNoYm9hcmRQYXJhbXMub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgkZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID0ge1xuICAgICAgICAgIHR5cGU6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgICAgbGF5b3V0OiB7IHg6IHRhcmdldD8ueCA/PyAwLCB5OiB0YXJnZXQ/LnkgPz8gMCwgd2lkdGg6IDEsIGhlaWdodDogMSB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHRoaXMubWFuaWZlc3QgfHwgeyB3aWRnZXRzOiBbXSB9KS53aWRnZXRzKSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjcmVhdGUgcGxhY2Vob2xkZXInLCB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QsIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCk7XG5cbiAgICAgICAgLy8gV2UgcGFzc2VkIHdpZGdldCBzaXplIGFzIGEgbWltZXR5cGUgc28gdGhhdCB3ZSBjYW4gc3RpbGwgcmVhZCBpdCB3aXRob3V0IHNlY3VyaXR5IGlzc3Vlc1xuICAgICAgICBjb25zdCB3aWRnZXRTaXplTWltZVR5cGUgPSB0eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfU0laRSkpO1xuICAgICAgICBpZiAoISF3aWRnZXRTaXplTWltZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBbXywgXzIsIHcsIGhdID0gd2lkZ2V0U2l6ZU1pbWVUeXBlLnNwbGl0KCctJyk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LmxheW91dC53aWR0aCA9IHBhcnNlSW50KHcsIDEwKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QubGF5b3V0LmhlaWdodCA9IHBhcnNlSW50KGgsIDEwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVc2UgZ3JpZCBzaXplXG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0TGF5b3V0U2l6ZSh0aGlzLmxheW91dCwgdGhpcy5kYXNoYm9hcmRQYXJhbXMpW1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0Lmxlbmd0aFxuICAgICAgICAgIF07XG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LmxheW91dC53aWR0aCA9IGxheW91dC53aWR0aDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QubGF5b3V0LmhlaWdodCA9IGxheW91dC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBwYXNzZWQgdGhlIHR5cGUgYXMgYSBoZWFkZXIgbmFtZSBzbyB0aGF0IHdlIGNhbiBzdGlsbCBhY2Nlc3MgaXQgd2l0aG91dCBzZWN1cml0eSBpc3N1ZXNcbiAgICAgICAgY29uc3Qgd2lkZ2V0VHlwZSA9IHR5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9UWVBFKSk7XG4gICAgICAgIGlmICghIXdpZGdldFR5cGUpIHtcbiAgICAgICAgICBjb25zdCBbXywgXzIsIHR5cGVdID0gd2lkZ2V0VHlwZS5zcGxpdCgnLScpO1xuICAgICAgICAgIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdC50eXBlID0gdHlwZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc2V0IGluaXRpYWwgcG9zaXRpb24gZm9yIHRoZSBvbmUgd2UganVzdCBjYWxjdWxhdGVkLCBzbyB3ZSBjYW4gY29udGludWUgcHJvcGVybHkgbW92ZSB0aGUgd2lkZ2V0XG4gICAgICAgIHRoaXMubW92ZS5pbml0aWFsWCA9ICRldmVudC5wYWdlWDtcbiAgICAgICAgdGhpcy5tb3ZlLmluaXRpYWxZID0gJGV2ZW50LnBhZ2VZO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFRhcmdldCgkZXZlbnQ6IE1vdXNlRXZlbnQsIG9wdGltaXplID0gdHJ1ZSkge1xuICAgIGNvbnN0IGRYID0gJGV2ZW50LnBhZ2VYIC0gdGhpcy5tb3ZlLmluaXRpYWxYO1xuICAgIGNvbnN0IGRZID0gJGV2ZW50LnBhZ2VZIC0gdGhpcy5tb3ZlLmluaXRpYWxZO1xuXG4gICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgeDpcbiAgICAgICAgZFggPT09IDBcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICgoZFggLyBNYXRoLmFicyhkWCkpICogKE1hdGguYWJzKGRYKSAtIDAuNSAqIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNlbGxXaWR0aCkpIC9cbiAgICAgICAgICAgICAgICAodGhpcy5kYXNoYm9hcmRQYXJhbXMuY2VsbFdpZHRoICsgdGhpcy5kYXNoYm9hcmRQYXJhbXMuZ3JpZEdhcClcbiAgICAgICAgICAgICksXG4gICAgICB5OlxuICAgICAgICBkWSA9PT0gMFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgKChkWSAvIE1hdGguYWJzKGRZKSkgKiAoTWF0aC5hYnMoZFkpIC0gMC41ICogdGhpcy5kYXNoYm9hcmRQYXJhbXMuY2VsbEhlaWdodCkpIC9cbiAgICAgICAgICAgICAgICAodGhpcy5kYXNoYm9hcmRQYXJhbXMuY2VsbEhlaWdodCArIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmdyaWRHYXApXG4gICAgICAgICAgICApXG4gICAgfTtcblxuICAgIGlmICghb3B0aW1pemUgfHwgdGFyZ2V0LnggIT09IHRoaXMubW92ZS5wcmV2aW91c1ggfHwgdGFyZ2V0LnkgIT09IHRoaXMubW92ZS5wcmV2aW91c1kpIHtcbiAgICAgIHRoaXMubW92ZS5wcmV2aW91c1ggPSB0YXJnZXQueDtcbiAgICAgIHRoaXMubW92ZS5wcmV2aW91c1kgPSB0YXJnZXQueTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBtb3ZpbmdNb3VzZSgkZXZlbnQ6IE1vdXNlRXZlbnQsIG9wdGltaXplID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLm1vZGVFZGl0aW9uICYmICEhdGhpcy5hY3Rpb25UeXBlKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgkZXZlbnQsIG9wdGltaXplKTtcbiAgICAgIGlmICh0YXJnZXQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jaGVja0ZvckRyYWdFbnRlcigkZXZlbnQpO1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVXaWRnZXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCkpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5hY3Rpb25UeXBlKSB7XG4gICAgICAgICAgY2FzZSAncmVzaXplLW53JzpcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnggKyB0YXJnZXQueCA+IDAgJiYgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgLSB0YXJnZXQueSA+IDApIHtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC54ICs9IHRhcmdldC54O1xuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnkgKz0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQud2lkdGggLT0gdGFyZ2V0Lng7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0IC09IHRhcmdldC55O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVzaXplLXN3JzpcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGVXaWRnZXQubGF5b3V0LndpZHRoIC0gdGFyZ2V0LnggPiAwKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCAtPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgKz0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyZXNpemUtbmUnOlxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0IC0gdGFyZ2V0LnkgPiAwKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueSArPSB0YXJnZXQueTtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgLT0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyZXNpemUtc2UnOlxuICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0ICs9IHRhcmdldC55O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbW92ZSc6XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TWF4WCA9XG4gICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIHRoaXMubWFuaWZlc3Q/LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUixcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5tYW5pZmVzdD8ud2lkZ2V0cyA/PyBbXSkubWFwKCh3KSA9PiB3LmxheW91dC53aWR0aCArIHcubGF5b3V0LngpXG4gICAgICAgICAgICAgICkgLVxuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LndpZHRoICtcbiAgICAgICAgICAgICAgMTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCArIHRhcmdldC54LCBjdXJyZW50TWF4WCkpO1xuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TWF4WSA9XG4gICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIHRoaXMubWFuaWZlc3Q/LmdyaWQ/LnJvd3MgPz8gREVGQVVMVF9ST1dTX05VTUJFUixcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5tYW5pZmVzdD8ud2lkZ2V0cyA/PyBbXSkubWFwKCh3KSA9PiB3LmxheW91dC5oZWlnaHQgKyB3LmxheW91dC55KVxuICAgICAgICAgICAgICApIC1cbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgK1xuICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC55ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oY2FuZGlkYXRlV2lkZ2V0LmxheW91dC55ICsgdGFyZ2V0LnksIGN1cnJlbnRNYXhZKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7XG4gICAgICAgICAgICBtYW5pZmVzdDogc29sdmVDb2xsaXNpb25zKFxuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQsXG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCxcbiAgICAgICAgICAgICAgdGhpcy5tYW5pZmVzdCA/PyAoe30gYXMgRGFzaGJvYXJkTWFuaWZlc3QpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkcmFnTW92ZSgkZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMubW92aW5nTW91c2UoJGV2ZW50KTtcbiAgfVxuXG4gIGRyYWdMZWF2ZSgkZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoJGV2ZW50LmN1cnJlbnRUYXJnZXQuY29udGFpbnMoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXMgPSAoJGV2ZW50LmRhdGFUcmFuc2ZlciB8fCB7IHR5cGVzOiBbJyddIH0pLnR5cGVzO1xuICAgIGlmICh0eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUKSkge1xuICAgICAgLy8gQXMgdGhlIGRyYWcgaXMgbGVhdmluZyB0aGUgd2luZG93LCBkZWxldGUgdGhlIHdpZGdldCBmcm9tIGl0LCBhbmQgc3RvcCBlZGl0aW9uIG1vZGVcbiAgICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZE1hbmlmZXN0KHtcbiAgICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgICAgICAgIHdpZGdldHM6IHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZHJvcHBpbmcoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCEhJGV2ZW50ICYmICEhJGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgaWYgKCRldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCkpIHtcbiAgICAgICAgLy8gUmVhcnJhbmdlIGRyb3AgdG8gY29ycmVjdCBzaXplLCB0eXBlLCAuLi4sIGFzIGEgcGxhY2Vob2xkZXIgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIG1hbmlmZXN0IGJ5IGRyYWdlbnRlciBldmVudFxuICAgICAgICBjb25zdCBkYXRhVHJhbnNmZXJNYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QpXG4gICAgICAgICkgYXMgV2lkZ2V0TWFuaWZlc3Q7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID0ge1xuICAgICAgICAgIC4uLmRhdGFUcmFuc2Zlck1hbmlmZXN0LFxuICAgICAgICAgIGxheW91dDogdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0Py5sYXlvdXQgPz8gKHt9IGFzIFdpZGdldExheW91dClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1vdmluZ01vdXNlKCRldmVudCwgZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHt9KSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJBY3Rpb25zKCkge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vdmUuaW5pdGlhbFggPSAwO1xuICAgIHRoaXMubW92ZS5pbml0aWFsWSA9IDA7XG4gICAgdGhpcy5tb3ZlLnByZXZpb3VzWCA9IC0xO1xuICAgIHRoaXMubW92ZS5wcmV2aW91c1kgPSAtMTtcbiAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QgPSBudWxsO1xuICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCA9IFtdO1xuICB9XG5cbiAgLyoqKlxuICAgKiBNYW5hZ2Ugb3RoZXIga2luZHMgb2YgZHJvcHMgKGluc2lkZSB3aWRnZXRzKVxuICAgKi9cbiAgZHJvcHBpbmdJbldpZGdldCgkZXZlbnQ6IERyYWdFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIGlmICgkZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1ZGVzKE1JTUVfVFlQRV9SRVNVTFRTRVQpKSB7XG4gICAgICAgIGNvbnN0IGxpc3RXaWRnZXRNYW5pZmVzdHMgPSBbLi4uKHRoaXMubWFuaWZlc3QgfHwgeyB3aWRnZXRzOiBbXSB9KS53aWRnZXRzXTtcblxuICAgICAgICBjb25zdCByZXN1bHRTZXROYW1lID0gJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9SRVNVTFRTRVQpO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVzdWx0U2V0ID0gKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkobGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0uZGF0YXNvdXJjZSlcbiAgICAgICAgICAgID8gbGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0uZGF0YXNvdXJjZVxuICAgICAgICAgICAgOiBbbGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0uZGF0YXNvdXJjZV1cbiAgICAgICAgKSBhcyBzdHJpbmdbXTtcbiAgICAgICAgY29uc3QgY3VtdWxhdGl2ZSA9ICRldmVudC5zaGlmdEtleTtcbiAgICAgICAgY29uc3QgbmV3UmVzdWx0U2V0ID0gY3VtdWxhdGl2ZSA/IFsuLi5jdXJyZW50UmVzdWx0U2V0LCByZXN1bHRTZXROYW1lXSA6IHJlc3VsdFNldE5hbWU7XG5cbiAgICAgICAgbGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0gPSB7XG4gICAgICAgICAgLi4ubGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0sXG4gICAgICAgICAgZGF0YXNvdXJjZTogbmV3UmVzdWx0U2V0XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZE1hbmlmZXN0KHtcbiAgICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgICAgICAgIHdpZGdldHM6IGxpc3RXaWRnZXRNYW5pZmVzdHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7fSkpO1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50PzogTW91c2VFdmVudCwgaW5kZXg/OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlybVJlbW92ZVJlZikge1xuICAgICAgdGhpcy5pbmRleEZvclJlbW92YWwgPSBpbmRleCA/PyAtMTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1vZGFsJyB9KSk7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVSZW1vdmVDb25maXJtKCkpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZU1vZGFsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuby1tb2RhbC13cmFwcGVyJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIGlmICghIXBhbmVsKSB7XG4gICAgICAgICAgcGFuZWwuc3R5bGUubGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoIC0gcGFuZWwuY2xpZW50V2lkdGgsICRldmVudC5jbGllbnRYIC0gMzApKSArICdweCc7XG4gICAgICAgICAgcGFuZWwuc3R5bGUudG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVySGVpZ2h0IC0gcGFuZWwuY2xpZW50SGVpZ2h0LCAkZXZlbnQuY2xpZW50WSAtIDEwKSkgKyAncHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbW9kYWwnIH0pKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUmVtb3ZlKCkge1xuICAgIHRoaXMucmVtb3ZlKHRoaXMuaW5kZXhGb3JSZW1vdmFsKTtcbiAgICB0aGlzLmNhbmNlbFJlbW92ZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNhbmNlbFJlbW92ZUNvbmZpcm0oKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1vZGFsJyB9KSk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdHJhY2tXaWRnZXRzKGluZGV4OiBudW1iZXIsIHdpZGdldE1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCkge1xuICAgIHJldHVybiB3aWRnZXRNYW5pZmVzdC50eXBlICsgJy0nICsgd2lkZ2V0TWFuaWZlc3QuZGF0YXNvdXJjZTtcbiAgfVxuXG4gIHVwZGF0ZUluc3RhbmNlKHdpZGdldEluZGV4OiBudW1iZXIsICRldmVudDogQmFzZVdpZGdldENvbXBvbmVudCkge1xuICAgIHRoaXMud2lkZ2V0c0luc3RhbmNlc1t3aWRnZXRJbmRleF0gPSAkZXZlbnQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJvLWRhc2hib2FyZC1ncmlkXCJcbiAgW3N0eWxlLmdyaWRUZW1wbGF0ZUNvbHVtbnNdPVwiZ3JpZFRlbXBsYXRlQ29sdW1ucyQgfCBhc3luY1wiXG4gIFtzdHlsZS5ncmlkVGVtcGxhdGVSb3dzXT1cImdyaWRUZW1wbGF0ZVJvd3MkIHwgYXN5bmNcIlxuICBbc3R5bGUuZ3JpZEdhcF09XCJkYXNoYm9hcmRQYXJhbXMuZ3JpZEdhcCArICdweCdcIlxuICAjZ3JpZFxuICAobW91c2Vtb3ZlKT1cIm1vdmluZ01vdXNlKCRldmVudClcIlxuICAoZHJvcCk9XCJkcm9wcGluZygkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cImRyYWdNb3ZlKCRldmVudClcIlxuICAoZHJhZ2xlYXZlKT1cImRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgKGRyYWdlbnRlcik9XCJkcmFnRW50ZXIoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdGb3I9XCJcbiAgICAgIGxldCB3aWRnZXRNYW5pZmVzdCBvZiAod2luZG93TWFuaWZlc3QkIHwgYXN5bmMpPy53aWRnZXRzIHx8IFtdO1xuICAgICAgbGV0IHdpZGdldEluZGV4ID0gaW5kZXg7XG4gICAgICB0cmFja0J5OiB0cmFja1dpZGdldHNcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvLWRhc2hib2FyZC13aWRnZXRcIlxuICAgICAgW2NsYXNzLi1lZGl0ZWRdPVwibW9kZUVkaXRpb25cIlxuICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiZ3JpZENvbHVtbih3aWRnZXRNYW5pZmVzdC5sYXlvdXQpXCJcbiAgICAgIFtzdHlsZS5ncmlkUm93XT1cImdyaWRSb3cod2lkZ2V0TWFuaWZlc3QubGF5b3V0KVwiXG4gICAgICAoZHJvcCk9XCJkcm9wcGluZ0luV2lkZ2V0KCRldmVudCwgd2lkZ2V0SW5kZXgpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZUVkaXRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBudy1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtbncnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibm9ydGhfd2VzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBzdy1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtc3cnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic291dGhfd2VzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBuZS1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtbmUnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibm9ydGhfZWFzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBzZS1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtc2UnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic291dGhfZWFzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBkZWxldGVcIiAobW91c2Vkb3duKT1cInRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50LCB3aWRnZXRJbmRleClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW92ZVwiIGRyYWdnYWJsZT1cInRydWVcIiAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQsIHdpZGdldEluZGV4KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3ZlLWluc2lkZSBtb3ZlLXt7IHdpZGdldE1hbmlmZXN0LnR5cGUgfX1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHdpZGdldE1hbmlmZXN0LnRpdGxlID8/ICgnQHByeS50b29sYm94LicgKyB3aWRnZXRNYW5pZmVzdC50eXBlIHwgaTE4bikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVFZGl0aW9uXCI+XG4gICAgICAgIDxwcnktd2lkZ2V0LWluc3RhbmNpYXRvclxuICAgICAgICAgIFtzdGF0aWNNYW5pZmVzdF09XCJ3aWRnZXRNYW5pZmVzdFwiXG4gICAgICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgICAgICAod2lkZ2V0SW5zdGFuY2UpPVwidXBkYXRlSW5zdGFuY2Uod2lkZ2V0SW5kZXgsICRldmVudClcIlxuICAgICAgICA+PC9wcnktd2lkZ2V0LWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKG5vbkZpbGxlcldpZGdldHMkIHwgYXN5bmMpID09PSAwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5vLXdpZGdldFwiIFtzdHlsZS5ncmlkLWFyZWFdPVwiYmFja2dyb3VuZEFyZWEkIHwgYXN5bmNcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgY2xhc3M9XCJuby13aWRnZXRfX3NlYXJjaFwiXG4gICAgICAgIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9zdmdzL3ByeV9yZWNoZXJjaGUuc3ZnXCJcbiAgICAgICAgYWx0PVwie3tcbiAgICAgICAgICAobGF5b3V0ID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCA/ICdAcHJ5LndpZGdldC50YXJnZXQubm9uZV9tYW51YWwnIDogJ0Bwcnkud2lkZ2V0LnRhcmdldC5ub25lX2F1dG8nKVxuICAgICAgICAgICAgfCBpMThuXG4gICAgICAgIH19IHt7IGJhY2tncm91bmRBcmVhJCB8IGFzeW5jIH19XCJcbiAgICAgIC8+XG4gICAgICA8c3BhbiBjbGFzcz1cIm5vLXdpZGdldF9fdGV4dFwiPnt7XG4gICAgICAgIChsYXlvdXQgPT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMID8gJ0Bwcnkud2lkZ2V0LnRhcmdldC5ub25lX21hbnVhbCcgOiAnQHByeS53aWRnZXQudGFyZ2V0Lm5vbmVfYXV0bycpXG4gICAgICAgICAgfCBpMThuXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxwcnktY29udGV4dC1tZW51PjwvcHJ5LWNvbnRleHQtbWVudT5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZU1vZGFsPlxuICA8ZGl2IGNsYXNzPVwiby1tb2RhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPlxuICAgICAgICAgIHt7ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyB8IGkxOG4gfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZlQ29uZmlybSgpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZlQ29uZmlybSgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiY29uZmlybVJlbW92ZSgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|