tango-app-ui-analyse-trax 3.9.3 → 3.9.4
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/esm2022/lib/components/action-centre/action-centre.component.mjs +288 -0
- package/esm2022/lib/components/activity-log/activity-log.component.mjs +150 -0
- package/esm2022/lib/components/activity-log-v2/activity-log-v2.component.mjs +502 -0
- package/esm2022/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.mjs +114 -0
- package/esm2022/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.mjs +24 -0
- package/esm2022/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.mjs +126 -0
- package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +2352 -0
- package/esm2022/lib/components/add-checklist/checklist-popup/checklist-popup.component.mjs +612 -0
- package/esm2022/lib/components/add-checklist/counter/counter.component.mjs +138 -0
- package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +604 -0
- package/esm2022/lib/components/add-multitask/ascending-validator.mjs +11 -0
- package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +297 -0
- package/esm2022/lib/components/add-multitask/create-task.data.mjs +372 -0
- package/esm2022/lib/components/add-multitask/create-task.interface.mjs +2 -0
- package/esm2022/lib/components/add-multitask/unique-string-validator.mjs +10 -0
- package/esm2022/lib/components/add-multitask/whitespace-validator.mjs +10 -0
- package/esm2022/lib/components/add-task/add-task.component.mjs +561 -0
- package/esm2022/lib/components/add-task/ascending-validator.mjs +11 -0
- package/esm2022/lib/components/add-task/create-task.data.mjs +372 -0
- package/esm2022/lib/components/add-task/create-task.interface.mjs +2 -0
- package/esm2022/lib/components/add-task/unique-string-validator.mjs +10 -0
- package/esm2022/lib/components/add-task/whitespace-validator.mjs +10 -0
- package/esm2022/lib/components/approval-popup/approval-popup.component.mjs +30 -0
- package/esm2022/lib/components/checklist/checklist.component.mjs +327 -0
- package/esm2022/lib/components/checklist-configure/assign/assign.component.mjs +912 -0
- package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +4164 -0
- package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +44 -0
- package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +120 -0
- package/esm2022/lib/components/create-task/create-task.component.mjs +585 -0
- package/esm2022/lib/components/create-task/create-task.data.mjs +372 -0
- package/esm2022/lib/components/create-task/create-task.interface.mjs +2 -0
- package/esm2022/lib/components/create-task/validators/ascending-validator.mjs +11 -0
- package/esm2022/lib/components/create-task/validators/unique-string-validator.mjs +10 -0
- package/esm2022/lib/components/create-task/validators/whitespace-validator.mjs +10 -0
- package/esm2022/lib/components/custom-select/custom-select.component.mjs +240 -0
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +532 -0
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +741 -0
- package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +155 -0
- package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +12 -0
- package/esm2022/lib/components/disabled-select/disabled-select.component.mjs +158 -0
- package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +266 -0
- package/esm2022/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.mjs +105 -0
- package/esm2022/lib/components/eye-test-audit/custom-select/custom-select.component.mjs +240 -0
- package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +1733 -0
- package/esm2022/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.mjs +24 -0
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.mjs +34 -0
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.mjs +27 -0
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.mjs +71 -0
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.mjs +823 -0
- package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs +412 -0
- package/esm2022/lib/components/eye-test-audit/group-select/group-select.component.mjs +157 -0
- package/esm2022/lib/components/eye-test-audit/reactive-select/reactive-select.component.mjs +105 -0
- package/esm2022/lib/components/eye-test-audit/select-drop/select-drop.component.mjs +162 -0
- package/esm2022/lib/components/eye-test-audit/services/eye-test-audit.service.mjs +166 -0
- package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +12 -0
- package/esm2022/lib/components/flags/flags.component.mjs +263 -0
- package/esm2022/lib/components/flags/flags.interface.mjs +2 -0
- package/esm2022/lib/components/flags-info/flags-info.component.mjs +452 -0
- package/esm2022/lib/components/flags-info/flags-info.interface.mjs +2 -0
- package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +71 -0
- package/esm2022/lib/components/flags-new/flags-new.component.mjs +335 -0
- package/esm2022/lib/components/flags-new/flags-new.interface.mjs +2 -0
- package/esm2022/lib/components/gallery/gallery.component.mjs +3402 -0
- package/esm2022/lib/components/group-select/group-select.component.mjs +155 -0
- package/esm2022/lib/components/image-popup/image-popup.component.mjs +25 -0
- package/esm2022/lib/components/lib/custom-select/custom-select.component.mjs +158 -0
- package/esm2022/lib/components/manage-task/manage-task.component.mjs +264 -0
- package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +186 -0
- package/esm2022/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.mjs +229 -0
- package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +124 -0
- package/esm2022/lib/components/orders/orders.component.mjs +171 -0
- package/esm2022/lib/components/pagination/pagination.component.mjs +62 -0
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +108 -0
- package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +60 -0
- package/esm2022/lib/components/reports/reports.component.mjs +300 -0
- package/esm2022/lib/components/reports/reports.interface.mjs +2 -0
- package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +32 -0
- package/esm2022/lib/components/task/task.component.mjs +341 -0
- package/esm2022/lib/components/task-configure/task-configure.component.mjs +1532 -0
- package/esm2022/lib/components/task-configure/task-configure.interface.mjs +2 -0
- package/esm2022/lib/components/task-info/task-info.component.mjs +375 -0
- package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +208 -0
- package/esm2022/lib/components/task-layout/task-layout.component.mjs +12 -0
- package/esm2022/lib/components/task-logs/task-logs.component.mjs +104 -0
- package/esm2022/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.mjs +107 -0
- package/esm2022/lib/components/trax-store/trax-store.component.mjs +179 -0
- package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +70 -0
- package/esm2022/lib/services/trax.service.mjs +559 -0
- package/esm2022/lib/tango-analyse-trax-routing.module.mjs +153 -0
- package/esm2022/lib/tango-analyse-trax.module.mjs +221 -0
- package/esm2022/public-api.mjs +6 -0
- package/esm2022/tango-app-ui-analyse-trax.mjs +5 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +28899 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/action-centre/action-centre.component.d.ts +68 -0
- package/lib/components/activity-log/activity-log.component.d.ts +39 -0
- package/lib/components/activity-log-v2/activity-log-v2.component.d.ts +78 -0
- package/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.d.ts +24 -0
- package/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.d.ts +9 -0
- package/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.d.ts +34 -0
- package/lib/components/add-checklist/add-checklist.component.d.ts +121 -0
- package/lib/components/add-checklist/checklist-popup/checklist-popup.component.d.ts +45 -0
- package/lib/components/add-checklist/counter/counter.component.d.ts +29 -0
- package/lib/components/add-multitask/add-multitask.component.d.ts +102 -0
- package/lib/components/add-multitask/ascending-validator.d.ts +2 -0
- package/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.d.ts +45 -0
- package/lib/components/add-multitask/create-task.data.d.ts +293 -0
- package/lib/components/add-multitask/create-task.interface.d.ts +159 -0
- package/lib/components/add-multitask/unique-string-validator.d.ts +2 -0
- package/lib/components/add-multitask/whitespace-validator.d.ts +2 -0
- package/lib/components/add-task/add-task.component.d.ts +89 -0
- package/lib/components/add-task/ascending-validator.d.ts +2 -0
- package/lib/components/add-task/create-task.data.d.ts +293 -0
- package/lib/components/add-task/create-task.interface.d.ts +161 -0
- package/lib/components/add-task/unique-string-validator.d.ts +2 -0
- package/lib/components/add-task/whitespace-validator.d.ts +2 -0
- package/lib/components/approval-popup/approval-popup.component.d.ts +14 -0
- package/lib/components/checklist/checklist.component.d.ts +40 -0
- package/lib/components/checklist-configure/assign/assign.component.d.ts +105 -0
- package/lib/components/checklist-configure/checklist-configure.component.d.ts +325 -0
- package/lib/components/checklistlayout/checklistlayout.component.d.ts +15 -0
- package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +28 -0
- package/lib/components/create-task/create-task.component.d.ts +76 -0
- package/lib/components/create-task/create-task.data.d.ts +293 -0
- package/lib/components/create-task/create-task.interface.d.ts +163 -0
- package/lib/components/create-task/validators/ascending-validator.d.ts +2 -0
- package/lib/components/create-task/validators/unique-string-validator.d.ts +2 -0
- package/lib/components/create-task/validators/whitespace-validator.d.ts +2 -0
- package/lib/components/custom-select/custom-select.component.d.ts +35 -0
- package/lib/components/dashboard/dashboard.component.d.ts +80 -0
- package/lib/components/dashboard-info/dashboard-info.component.d.ts +117 -0
- package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +41 -0
- package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +5 -0
- package/lib/components/disabled-select/disabled-select.component.d.ts +34 -0
- package/lib/components/export-gallery/export-gallery.component.d.ts +44 -0
- package/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.d.ts +26 -0
- package/lib/components/eye-test-audit/custom-select/custom-select.component.d.ts +35 -0
- package/lib/components/eye-test-audit/eye-test/eye-test.component.d.ts +218 -0
- package/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.d.ts +12 -0
- package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.d.ts +7 -0
- package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.d.ts +11 -0
- package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.d.ts +21 -0
- package/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.d.ts +129 -0
- package/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.d.ts +86 -0
- package/lib/components/eye-test-audit/group-select/group-select.component.d.ts +33 -0
- package/lib/components/eye-test-audit/reactive-select/reactive-select.component.d.ts +32 -0
- package/lib/components/eye-test-audit/select-drop/select-drop.component.d.ts +33 -0
- package/lib/components/eye-test-audit/services/eye-test-audit.service.d.ts +47 -0
- package/lib/components/flag-layout/flag-layout.component.d.ts +5 -0
- package/lib/components/flags/flags.component.d.ts +52 -0
- package/{src/lib/components/flags/flags.interface.ts → lib/components/flags/flags.interface.d.ts} +65 -73
- package/lib/components/flags-info/flags-info.component.d.ts +73 -0
- package/lib/components/flags-info/flags-info.interface.d.ts +431 -0
- package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +13 -0
- package/lib/components/flags-new/flags-new.component.d.ts +60 -0
- package/{src/lib/components/flags-new/flags-new.interface.ts → lib/components/flags-new/flags-new.interface.d.ts} +81 -90
- package/lib/components/gallery/gallery.component.d.ts +261 -0
- package/lib/components/group-select/group-select.component.d.ts +33 -0
- package/lib/components/image-popup/image-popup.component.d.ts +11 -0
- package/lib/components/lib/custom-select/custom-select.component.d.ts +33 -0
- package/lib/components/manage-task/manage-task.component.d.ts +47 -0
- package/lib/components/managechecklist/managechecklist.component.d.ts +33 -0
- package/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.d.ts +40 -0
- package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +27 -0
- package/lib/components/orders/orders.component.d.ts +38 -0
- package/lib/components/pagination/pagination.component.d.ts +16 -0
- package/lib/components/reactive-select/reactive-select.component.d.ts +32 -0
- package/lib/components/reports/date-picker/date-picker.component.d.ts +23 -0
- package/lib/components/reports/reports.component.d.ts +55 -0
- package/{src/lib/components/reports/reports.interface.ts → lib/components/reports/reports.interface.d.ts} +46 -50
- package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +14 -0
- package/lib/components/task/task.component.d.ts +70 -0
- package/lib/components/task-configure/task-configure.component.d.ts +142 -0
- package/lib/components/task-configure/task-configure.interface.d.ts +128 -0
- package/lib/components/task-info/task-info.component.d.ts +76 -0
- package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +61 -0
- package/lib/components/task-layout/task-layout.component.d.ts +5 -0
- package/lib/components/task-logs/task-logs.component.d.ts +27 -0
- package/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.d.ts +26 -0
- package/lib/components/trax-store/trax-store.component.d.ts +45 -0
- package/lib/components/traxpopup/traxpopup.component.d.ts +24 -0
- package/lib/services/trax.service.d.ts +175 -0
- package/lib/tango-analyse-trax-routing.module.d.ts +7 -0
- package/lib/tango-analyse-trax.module.d.ts +68 -0
- package/package.json +25 -12
- package/{src/public-api.ts → public-api.d.ts} +2 -6
- package/.eslintrc.json +0 -37
- package/ng-package.json +0 -7
- package/src/lib/components/action-centre/action-centre.component.html +0 -607
- package/src/lib/components/action-centre/action-centre.component.scss +0 -185
- package/src/lib/components/action-centre/action-centre.component.spec.ts +0 -23
- package/src/lib/components/action-centre/action-centre.component.ts +0 -279
- package/src/lib/components/activity-log/activity-log.component.html +0 -84
- package/src/lib/components/activity-log/activity-log.component.scss +0 -33
- package/src/lib/components/activity-log/activity-log.component.spec.ts +0 -23
- package/src/lib/components/activity-log/activity-log.component.ts +0 -137
- package/src/lib/components/activity-log-v2/activity-log-v2.component.html +0 -189
- package/src/lib/components/activity-log-v2/activity-log-v2.component.scss +0 -162
- package/src/lib/components/activity-log-v2/activity-log-v2.component.spec.ts +0 -23
- package/src/lib/components/activity-log-v2/activity-log-v2.component.ts +0 -517
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.html +0 -19
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.scss +0 -148
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.spec.ts +0 -23
- package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.ts +0 -141
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.html +0 -42
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.scss +0 -49
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.spec.ts +0 -23
- package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.ts +0 -22
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.html +0 -724
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.scss +0 -217
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.spec.ts +0 -23
- package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.ts +0 -122
- package/src/lib/components/add-checklist/add-checklist.component.html +0 -1459
- package/src/lib/components/add-checklist/add-checklist.component.scss +0 -1205
- package/src/lib/components/add-checklist/add-checklist.component.spec.ts +0 -23
- package/src/lib/components/add-checklist/add-checklist.component.ts +0 -2460
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.html +0 -207
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.scss +0 -213
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.spec.ts +0 -23
- package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.ts +0 -621
- package/src/lib/components/add-checklist/counter/counter.component.html +0 -43
- package/src/lib/components/add-checklist/counter/counter.component.scss +0 -49
- package/src/lib/components/add-checklist/counter/counter.component.spec.ts +0 -23
- package/src/lib/components/add-checklist/counter/counter.component.ts +0 -123
- package/src/lib/components/add-multitask/add-multitask.component.html +0 -705
- package/src/lib/components/add-multitask/add-multitask.component.scss +0 -296
- package/src/lib/components/add-multitask/add-multitask.component.spec.ts +0 -23
- package/src/lib/components/add-multitask/add-multitask.component.ts +0 -611
- package/src/lib/components/add-multitask/ascending-validator.ts +0 -13
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.html +0 -197
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.scss +0 -31
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.spec.ts +0 -23
- package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.ts +0 -285
- package/src/lib/components/add-multitask/create-task.data.ts +0 -374
- package/src/lib/components/add-multitask/create-task.interface.ts +0 -177
- package/src/lib/components/add-multitask/unique-string-validator.ts +0 -13
- package/src/lib/components/add-multitask/whitespace-validator.ts +0 -11
- package/src/lib/components/add-task/add-task.component.html +0 -654
- package/src/lib/components/add-task/add-task.component.scss +0 -536
- package/src/lib/components/add-task/add-task.component.spec.ts +0 -23
- package/src/lib/components/add-task/add-task.component.ts +0 -569
- package/src/lib/components/add-task/ascending-validator.ts +0 -13
- package/src/lib/components/add-task/create-task.data.ts +0 -374
- package/src/lib/components/add-task/create-task.interface.ts +0 -192
- package/src/lib/components/add-task/unique-string-validator.ts +0 -13
- package/src/lib/components/add-task/whitespace-validator.ts +0 -11
- package/src/lib/components/approval-popup/approval-popup.component.html +0 -25
- package/src/lib/components/approval-popup/approval-popup.component.scss +0 -3
- package/src/lib/components/approval-popup/approval-popup.component.spec.ts +0 -23
- package/src/lib/components/approval-popup/approval-popup.component.ts +0 -26
- package/src/lib/components/checklist/checklist.component.html +0 -330
- package/src/lib/components/checklist/checklist.component.scss +0 -112
- package/src/lib/components/checklist/checklist.component.spec.ts +0 -23
- package/src/lib/components/checklist/checklist.component.ts +0 -344
- package/src/lib/components/checklist-configure/assign/assign.component.html +0 -665
- package/src/lib/components/checklist-configure/assign/assign.component.scss +0 -219
- package/src/lib/components/checklist-configure/assign/assign.component.spec.ts +0 -23
- package/src/lib/components/checklist-configure/assign/assign.component.ts +0 -932
- package/src/lib/components/checklist-configure/checklist-configure.component.html +0 -4340
- package/src/lib/components/checklist-configure/checklist-configure.component.scss +0 -2338
- package/src/lib/components/checklist-configure/checklist-configure.component.spec.ts +0 -23
- package/src/lib/components/checklist-configure/checklist-configure.component.ts +0 -4659
- package/src/lib/components/checklistlayout/checklistlayout.component.html +0 -30
- package/src/lib/components/checklistlayout/checklistlayout.component.scss +0 -15
- package/src/lib/components/checklistlayout/checklistlayout.component.spec.ts +0 -23
- package/src/lib/components/checklistlayout/checklistlayout.component.ts +0 -47
- package/src/lib/components/chip-dropdown/chip-dropdown.component.html +0 -36
- package/src/lib/components/chip-dropdown/chip-dropdown.component.scss +0 -97
- package/src/lib/components/chip-dropdown/chip-dropdown.component.spec.ts +0 -23
- package/src/lib/components/chip-dropdown/chip-dropdown.component.ts +0 -125
- package/src/lib/components/create-task/create-task.component.html +0 -2003
- package/src/lib/components/create-task/create-task.component.scss +0 -272
- package/src/lib/components/create-task/create-task.component.spec.ts +0 -23
- package/src/lib/components/create-task/create-task.component.ts +0 -614
- package/src/lib/components/create-task/create-task.data.ts +0 -372
- package/src/lib/components/create-task/create-task.interface.ts +0 -182
- package/src/lib/components/create-task/validators/ascending-validator.ts +0 -13
- package/src/lib/components/create-task/validators/unique-string-validator.ts +0 -13
- package/src/lib/components/create-task/validators/whitespace-validator.ts +0 -11
- package/src/lib/components/custom-select/custom-select.component.html +0 -44
- package/src/lib/components/custom-select/custom-select.component.scss +0 -144
- package/src/lib/components/custom-select/custom-select.component.spec.ts +0 -23
- package/src/lib/components/custom-select/custom-select.component.ts +0 -265
- package/src/lib/components/dashboard/dashboard.component.html +0 -1076
- package/src/lib/components/dashboard/dashboard.component.scss +0 -237
- package/src/lib/components/dashboard/dashboard.component.spec.ts +0 -23
- package/src/lib/components/dashboard/dashboard.component.ts +0 -539
- package/src/lib/components/dashboard-info/dashboard-info.component.html +0 -1420
- package/src/lib/components/dashboard-info/dashboard-info.component.scss +0 -409
- package/src/lib/components/dashboard-info/dashboard-info.component.spec.ts +0 -23
- package/src/lib/components/dashboard-info/dashboard-info.component.ts +0 -772
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.html +0 -110
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.scss +0 -260
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.spec.ts +0 -23
- package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.ts +0 -143
- package/src/lib/components/dashboard-layout/dashboard-layout.component.html +0 -1
- package/src/lib/components/dashboard-layout/dashboard-layout.component.scss +0 -0
- package/src/lib/components/dashboard-layout/dashboard-layout.component.spec.ts +0 -23
- package/src/lib/components/dashboard-layout/dashboard-layout.component.ts +0 -10
- package/src/lib/components/disabled-select/disabled-select.component.html +0 -44
- package/src/lib/components/disabled-select/disabled-select.component.scss +0 -149
- package/src/lib/components/disabled-select/disabled-select.component.spec.ts +0 -23
- package/src/lib/components/disabled-select/disabled-select.component.ts +0 -146
- package/src/lib/components/export-gallery/export-gallery.component.html +0 -175
- package/src/lib/components/export-gallery/export-gallery.component.scss +0 -200
- package/src/lib/components/export-gallery/export-gallery.component.spec.ts +0 -23
- package/src/lib/components/export-gallery/export-gallery.component.ts +0 -263
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.html +0 -36
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.scss +0 -97
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.ts +0 -104
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.html +0 -44
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.scss +0 -144
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/custom-select/custom-select.component.ts +0 -265
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.html +0 -1804
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.scss +0 -806
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/eye-test/eye-test.component.ts +0 -1890
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.html +0 -25
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.scss +0 -0
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.ts +0 -20
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.ts +0 -26
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.html +0 -1
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.scss +0 -0
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.ts +0 -24
- package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.ts +0 -44
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.html +0 -490
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.scss +0 -721
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.ts +0 -1017
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.html +0 -708
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.scss +0 -247
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.ts +0 -446
- package/src/lib/components/eye-test-audit/group-select/group-select.component.html +0 -44
- package/src/lib/components/eye-test-audit/group-select/group-select.component.scss +0 -144
- package/src/lib/components/eye-test-audit/group-select/group-select.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/group-select/group-select.component.ts +0 -147
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.html +0 -18
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.scss +0 -49
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.ts +0 -104
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.html +0 -44
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.scss +0 -144
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.spec.ts +0 -23
- package/src/lib/components/eye-test-audit/select-drop/select-drop.component.ts +0 -152
- package/src/lib/components/eye-test-audit/services/eye-test-audit.service.spec.ts +0 -16
- package/src/lib/components/eye-test-audit/services/eye-test-audit.service.ts +0 -190
- package/src/lib/components/flag-layout/flag-layout.component.html +0 -1
- package/src/lib/components/flag-layout/flag-layout.component.scss +0 -0
- package/src/lib/components/flag-layout/flag-layout.component.spec.ts +0 -23
- package/src/lib/components/flag-layout/flag-layout.component.ts +0 -10
- package/src/lib/components/flags/flags.component.html +0 -473
- package/src/lib/components/flags/flags.component.scss +0 -86
- package/src/lib/components/flags/flags.component.spec.ts +0 -23
- package/src/lib/components/flags/flags.component.ts +0 -280
- package/src/lib/components/flags-info/flags-info.component.html +0 -6012
- package/src/lib/components/flags-info/flags-info.component.scss +0 -278
- package/src/lib/components/flags-info/flags-info.component.spec.ts +0 -23
- package/src/lib/components/flags-info/flags-info.component.ts +0 -490
- package/src/lib/components/flags-info/flags-info.interface.ts +0 -441
- package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.html +0 -1
- package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.scss +0 -4
- package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.ts +0 -78
- package/src/lib/components/flags-new/flags-new.component.html +0 -904
- package/src/lib/components/flags-new/flags-new.component.scss +0 -121
- package/src/lib/components/flags-new/flags-new.component.spec.ts +0 -23
- package/src/lib/components/flags-new/flags-new.component.ts +0 -357
- package/src/lib/components/gallery/gallery.component.html +0 -3660
- package/src/lib/components/gallery/gallery.component.scss +0 -930
- package/src/lib/components/gallery/gallery.component.ts +0 -3527
- package/src/lib/components/group-select/group-select.component.html +0 -44
- package/src/lib/components/group-select/group-select.component.scss +0 -144
- package/src/lib/components/group-select/group-select.component.spec.ts +0 -23
- package/src/lib/components/group-select/group-select.component.ts +0 -145
- package/src/lib/components/image-popup/image-popup.component.html +0 -11
- package/src/lib/components/image-popup/image-popup.component.scss +0 -5
- package/src/lib/components/image-popup/image-popup.component.ts +0 -18
- package/src/lib/components/lib/custom-select/custom-select.component.html +0 -42
- package/src/lib/components/lib/custom-select/custom-select.component.scss +0 -131
- package/src/lib/components/lib/custom-select/custom-select.component.spec.ts +0 -23
- package/src/lib/components/lib/custom-select/custom-select.component.ts +0 -151
- package/src/lib/components/manage-task/manage-task.component.html +0 -265
- package/src/lib/components/manage-task/manage-task.component.scss +0 -69
- package/src/lib/components/manage-task/manage-task.component.spec.ts +0 -23
- package/src/lib/components/manage-task/manage-task.component.ts +0 -267
- package/src/lib/components/managechecklist/managechecklist.component.html +0 -176
- package/src/lib/components/managechecklist/managechecklist.component.scss +0 -43
- package/src/lib/components/managechecklist/managechecklist.component.spec.ts +0 -23
- package/src/lib/components/managechecklist/managechecklist.component.ts +0 -176
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.html +0 -46
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.scss +0 -181
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.spec.ts +0 -23
- package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.ts +0 -221
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.html +0 -36
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.scss +0 -89
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.spec.ts +0 -23
- package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.ts +0 -118
- package/src/lib/components/orders/orders.component.html +0 -203
- package/src/lib/components/orders/orders.component.scss +0 -180
- package/src/lib/components/orders/orders.component.spec.ts +0 -25
- package/src/lib/components/orders/orders.component.ts +0 -197
- package/src/lib/components/pagination/pagination.component.html +0 -28
- package/src/lib/components/pagination/pagination.component.scss +0 -6
- package/src/lib/components/pagination/pagination.component.spec.ts +0 -23
- package/src/lib/components/pagination/pagination.component.ts +0 -54
- package/src/lib/components/reactive-select/reactive-select.component.html +0 -18
- package/src/lib/components/reactive-select/reactive-select.component.scss +0 -48
- package/src/lib/components/reactive-select/reactive-select.component.spec.ts +0 -23
- package/src/lib/components/reactive-select/reactive-select.component.ts +0 -104
- package/src/lib/components/reports/date-picker/date-picker.component.html +0 -54
- package/src/lib/components/reports/date-picker/date-picker.component.scss +0 -156
- package/src/lib/components/reports/date-picker/date-picker.component.spec.ts +0 -23
- package/src/lib/components/reports/date-picker/date-picker.component.ts +0 -60
- package/src/lib/components/reports/reports.component.html +0 -225
- package/src/lib/components/reports/reports.component.scss +0 -69
- package/src/lib/components/reports/reports.component.spec.ts +0 -23
- package/src/lib/components/reports/reports.component.ts +0 -334
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.html +0 -1
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.scss +0 -15
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.spec.ts +0 -23
- package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.ts +0 -31
- package/src/lib/components/task/task.component.html +0 -322
- package/src/lib/components/task/task.component.scss +0 -169
- package/src/lib/components/task/task.component.spec.ts +0 -23
- package/src/lib/components/task/task.component.ts +0 -340
- package/src/lib/components/task-configure/task-configure.component.html +0 -737
- package/src/lib/components/task-configure/task-configure.component.scss +0 -569
- package/src/lib/components/task-configure/task-configure.component.spec.ts +0 -23
- package/src/lib/components/task-configure/task-configure.component.ts +0 -1603
- package/src/lib/components/task-configure/task-configure.interface.ts +0 -138
- package/src/lib/components/task-info/task-info.component.html +0 -390
- package/src/lib/components/task-info/task-info.component.scss +0 -56
- package/src/lib/components/task-info/task-info.component.spec.ts +0 -23
- package/src/lib/components/task-info/task-info.component.ts +0 -400
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.html +0 -141
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.scss +0 -460
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.spec.ts +0 -23
- package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.ts +0 -202
- package/src/lib/components/task-layout/task-layout.component.html +0 -1
- package/src/lib/components/task-layout/task-layout.component.scss +0 -0
- package/src/lib/components/task-layout/task-layout.component.spec.ts +0 -23
- package/src/lib/components/task-layout/task-layout.component.ts +0 -10
- package/src/lib/components/task-logs/task-logs.component.html +0 -97
- package/src/lib/components/task-logs/task-logs.component.scss +0 -301
- package/src/lib/components/task-logs/task-logs.component.spec.ts +0 -23
- package/src/lib/components/task-logs/task-logs.component.ts +0 -80
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.html +0 -84
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.scss +0 -229
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.spec.ts +0 -23
- package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.ts +0 -111
- package/src/lib/components/trax-store/trax-store.component.html +0 -78
- package/src/lib/components/trax-store/trax-store.component.scss +0 -134
- package/src/lib/components/trax-store/trax-store.component.spec.ts +0 -23
- package/src/lib/components/trax-store/trax-store.component.ts +0 -172
- package/src/lib/components/traxpopup/traxpopup.component.html +0 -130
- package/src/lib/components/traxpopup/traxpopup.component.scss +0 -225
- package/src/lib/components/traxpopup/traxpopup.component.spec.ts +0 -23
- package/src/lib/components/traxpopup/traxpopup.component.ts +0 -71
- package/src/lib/services/trax.service.spec.ts +0 -16
- package/src/lib/services/trax.service.ts +0 -789
- package/src/lib/tango-analyse-trax-routing.module.ts +0 -151
- package/src/lib/tango-analyse-trax.module.ts +0 -140
- package/tsconfig.lib.json +0 -14
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/trax.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
export class GroupSelectComponent {
|
|
7
|
+
cd;
|
|
8
|
+
authService;
|
|
9
|
+
onClick(event) {
|
|
10
|
+
const target = event.target;
|
|
11
|
+
if (!target.closest('.dropdown')) {
|
|
12
|
+
this.showDropdown = false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
items;
|
|
16
|
+
searchField;
|
|
17
|
+
multi;
|
|
18
|
+
idField;
|
|
19
|
+
selectedValues = [];
|
|
20
|
+
disabled;
|
|
21
|
+
label;
|
|
22
|
+
selected = new EventEmitter();
|
|
23
|
+
filteredValues = [];
|
|
24
|
+
showDropdown;
|
|
25
|
+
searchValue;
|
|
26
|
+
instanceId;
|
|
27
|
+
constructor(cd, authService) {
|
|
28
|
+
this.cd = cd;
|
|
29
|
+
this.authService = authService;
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
this.instanceId = crypto.randomUUID();
|
|
33
|
+
this.authService.dropDownTrigger.subscribe((e) => {
|
|
34
|
+
if (e !== this.instanceId) {
|
|
35
|
+
this.showDropdown = false;
|
|
36
|
+
this.cd.detectChanges();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
ngOnChanges(changes) {
|
|
41
|
+
if (changes['items'] && this.items?.length) {
|
|
42
|
+
this.initializeItems();
|
|
43
|
+
}
|
|
44
|
+
if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {
|
|
45
|
+
this.updateSelectedValues();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
initializeItems() {
|
|
49
|
+
this.filteredValues = this.items.map((item) => ({ ...item }));
|
|
50
|
+
this.updateSelectedValues();
|
|
51
|
+
}
|
|
52
|
+
updateSelectedValues() {
|
|
53
|
+
this.selectedValues?.forEach((selectedItem) => {
|
|
54
|
+
const item = this.filteredValues?.find((filteredItem) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);
|
|
55
|
+
if (item) {
|
|
56
|
+
item.isSelected = true;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
openDropdown(event) {
|
|
61
|
+
this.authService.dropDownTrigger.next(this.instanceId);
|
|
62
|
+
event.stopPropagation();
|
|
63
|
+
this.showDropdown = !this.showDropdown;
|
|
64
|
+
}
|
|
65
|
+
onInput(event) {
|
|
66
|
+
if (!event.target.value) {
|
|
67
|
+
this.filteredValues = [...this.items];
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const searchTerm = event.target.value.toLowerCase();
|
|
71
|
+
this.filteredValues = this.items.filter((item) => item[this.searchField].toLowerCase().includes(searchTerm));
|
|
72
|
+
}
|
|
73
|
+
this.updateSelectedValues();
|
|
74
|
+
this.cd.detectChanges();
|
|
75
|
+
}
|
|
76
|
+
onSelect(event, item) {
|
|
77
|
+
if (this.multi) {
|
|
78
|
+
if (event.currentTarget.checked) {
|
|
79
|
+
this.selectedValues.push(item);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
this.selectedValues = this.selectedValues.filter((elem) => elem[this.idField] !== item[this.idField]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.selectedValues = [{ ...item }];
|
|
87
|
+
this.filteredValues.forEach((element) => {
|
|
88
|
+
if (element[this.idField] !== item[this.idField]) {
|
|
89
|
+
element.isSelected = false;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
this.showDropdown = false;
|
|
93
|
+
}
|
|
94
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
95
|
+
const selectedItem = { ...value };
|
|
96
|
+
delete selectedItem.isSelected;
|
|
97
|
+
return selectedItem;
|
|
98
|
+
});
|
|
99
|
+
this.cd.detectChanges();
|
|
100
|
+
this.emitSelectedValues(valuesToEmit);
|
|
101
|
+
}
|
|
102
|
+
onSelectAll(event) {
|
|
103
|
+
const selectAll = event.currentTarget.checked;
|
|
104
|
+
this.filteredValues.forEach((item) => item.isSelected = selectAll);
|
|
105
|
+
if (selectAll) {
|
|
106
|
+
this.selectedValues = [...this.filteredValues];
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.selectedValues = [];
|
|
110
|
+
}
|
|
111
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
112
|
+
const { isSelected, ...selectedItem } = value;
|
|
113
|
+
return selectedItem;
|
|
114
|
+
});
|
|
115
|
+
this.cd.detectChanges();
|
|
116
|
+
this.emitSelectedValues(valuesToEmit);
|
|
117
|
+
}
|
|
118
|
+
emitSelectedValues(values) {
|
|
119
|
+
if (this.multi) {
|
|
120
|
+
this.selected.emit(values);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.selected.emit(values[0]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
checkIfAllSelected() {
|
|
127
|
+
return this.filteredValues.every((item) => item.isSelected);
|
|
128
|
+
}
|
|
129
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TraxService }], target: i0.ɵɵFactoryTarget.Component });
|
|
130
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GroupSelectComponent, selector: "lib-group-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\" >\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{position:absolute;width:100%;z-index:1}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.select-value{border-radius:16px!important;background:var(--Gray-100, #F2F4F7)!important;mix-blend-mode:multiply;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:4px 12px 4px 6px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
131
|
+
}
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupSelectComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{ selector: 'lib-group-select', template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\" >\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{position:absolute;width:100%;z-index:1}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.select-value{border-radius:16px!important;background:var(--Gray-100, #F2F4F7)!important;mix-blend-mode:multiply;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:4px 12px 4px 6px}\n"] }]
|
|
135
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TraxService }], propDecorators: { onClick: [{
|
|
136
|
+
type: HostListener,
|
|
137
|
+
args: ['document:click', ['$event']]
|
|
138
|
+
}], items: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], searchField: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], multi: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], idField: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], selectedValues: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], disabled: [{
|
|
149
|
+
type: Input
|
|
150
|
+
}], label: [{
|
|
151
|
+
type: Input
|
|
152
|
+
}], selected: [{
|
|
153
|
+
type: Output
|
|
154
|
+
}] } });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvZ3JvdXAtc2VsZWN0L2dyb3VwLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2dyb3VwLXNlbGVjdC9ncm91cC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QyxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBT25LLE1BQU0sT0FBTyxvQkFBb0I7SUF1Qlg7SUFBK0I7SUFyQm5ELE9BQU8sQ0FBQyxLQUFpQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFUSxLQUFLLENBQUs7SUFDVixXQUFXLENBQVE7SUFDbkIsS0FBSyxDQUFTO0lBQ2QsT0FBTyxDQUFRO0lBQ2YsY0FBYyxHQUFRLEVBQUUsQ0FBQTtJQUN4QixRQUFRLENBQXFCO0lBQzdCLEtBQUssQ0FBUTtJQUNaLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFBO0lBQzVDLGNBQWMsR0FBUSxFQUFFLENBQUE7SUFDeEIsWUFBWSxDQUFTO0lBQ3JCLFdBQVcsQ0FBUTtJQUNuQixVQUFVLENBQU07SUFHaEIsWUFBb0IsRUFBcUIsRUFBVSxXQUF1QjtRQUF0RCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLGdCQUFXLEdB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QyxDQUFDO0lBQ25FLENBQUM7d0dBeElVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLGtWQ1BqQyxvL0ZBMkNNOzs0RkRwQ08sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjtnSEFNNUIsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFqQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1ncm91cC1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9ncm91cC1zZWxlY3QuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cFNlbGVjdENvbXBvbmVudCB7XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcbiAgQElucHV0KCkgaXRlbXM6IGFueVxyXG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkOiBzdHJpbmdcclxuICBASW5wdXQoKSBtdWx0aTogYm9vbGVhblxyXG4gIEBJbnB1dCgpIGlkRmllbGQ6IHN0cmluZ1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVmFsdWVzOiBhbnkgPSBbXVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZ1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcbiAgZmlsdGVyZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgc2hvd0Ryb3Bkb3duOiBib29sZWFuXHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZ1xyXG4gIGluc3RhbmNlSWQ6IGFueTtcclxuIFxyXG4gXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYXV0aFNlcnZpY2U6VHJheFNlcnZpY2UpIHsgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnN0YW5jZUlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZHJvcERvd25UcmlnZ2VyLnN1YnNjcmliZSgoZSk9PnsgICAgICAgICAgIFxyXG4gICAgICBpZihlICE9PSB0aGlzLmluc3RhbmNlSWQpeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gXHJcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSAmJiB0aGlzLml0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplSXRlbXMoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZFZhbHVlcyddICYmIEFycmF5LmlzQXJyYXkoY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXT8uY3VycmVudFZhbHVlKSAmJiBjaGFuZ2VzWydzZWxlY3RlZFZhbHVlcyddPy5jdXJyZW50VmFsdWU/Lmxlbmd0aCA+IDAgJiYgY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXT8uY3VycmVudFZhbHVlWzBdKSB7ICAgICAgICAgICAgXHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiBcclxuICBpbml0aWFsaXplSXRlbXMoKSB7XHJcbiAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHsgLi4uaXRlbSB9KSk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKClcclxuICB9XHJcbiBcclxuICB1cGRhdGVTZWxlY3RlZFZhbHVlcygpIHsgICAgXHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzPy5mb3JFYWNoKChzZWxlY3RlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5maWx0ZXJlZFZhbHVlcz8uZmluZCgoZmlsdGVyZWRJdGVtOiBhbnkpID0+IGZpbHRlcmVkSXRlbT8uW3RoaXMuaWRGaWVsZF0gPT09IHNlbGVjdGVkSXRlbT8uW3RoaXMuaWRGaWVsZF0pO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICBcclxuICB9XHJcbiBcclxuICBvcGVuRHJvcGRvd24oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIubmV4dCh0aGlzLmluc3RhbmNlSWQpXHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gIXRoaXMuc2hvd0Ryb3Bkb3duO1xyXG4gIH1cclxuIFxyXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCFldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IFsuLi50aGlzLml0ZW1zXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+XHJcbiAgICAgICAgaXRlbVt0aGlzLnNlYXJjaEZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiBcclxuICBvblNlbGVjdChldmVudDogYW55LCBpdGVtOiBhbnkpIHsgICAgXHJcbiAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcy5wdXNoKGl0ZW0gKTsgICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLmZpbHRlcigoZWxlbTogYW55KSA9PiBlbGVtW3RoaXMuaWRGaWVsZF0gIT09IGl0ZW1bdGhpcy5pZEZpZWxkXSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbeyAuLi5pdGVtIH1dO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgaWYoZWxlbWVudFt0aGlzLmlkRmllbGRdICE9PSBpdGVtW3RoaXMuaWRGaWVsZF0pe1xyXG4gICAgICAgICAgZWxlbWVudC5pc1NlbGVjdGVkID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gXHJcbiAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB7IC4uLnZhbHVlIH07XHJcbiAgICAgIGRlbGV0ZSBzZWxlY3RlZEl0ZW0uaXNTZWxlY3RlZDtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbTtcclxuICAgIH0pO1xyXG4gXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlc1RvRW1pdCk7XHJcbiBcclxuICB9XHJcbiBcclxuICBvblNlbGVjdEFsbChldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBzZWxlY3RBbGwgPSBldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICB0aGlzLmZpbHRlcmVkVmFsdWVzLmZvckVhY2goKGl0ZW06IGFueSkgPT4gaXRlbS5pc1NlbGVjdGVkID0gc2VsZWN0QWxsKTtcclxuIFxyXG4gICAgaWYgKHNlbGVjdEFsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gWy4uLnRoaXMuZmlsdGVyZWRWYWx1ZXNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFtdO1xyXG4gICAgfVxyXG4gXHJcbiAgICBjb25zdCB2YWx1ZXNUb0VtaXQgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGlzU2VsZWN0ZWQsIC4uLnNlbGVjdGVkSXRlbSB9ID0gdmFsdWU7XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW07XHJcbiAgICB9KTtcclxuIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh2YWx1ZXNUb0VtaXQpO1xyXG4gIH1cclxuIFxyXG4gXHJcbiAgZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlc1swXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcbiAgY2hlY2tJZkFsbFNlbGVjdGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRWYWx1ZXMuZXZlcnkoKGl0ZW06IGFueSkgPT4gaXRlbS5pc1NlbGVjdGVkKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlLWlucHV0JzonJ1wiICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIiAgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpXCIgPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFZhbHVlcz8ubGVuZ3RoXCIgY2xhc3M9XCJzZWxlY3QtdmFsdWUgbXgtMlwiPiA8aW1nIGNsYXNzPVwibWUtMlwiIGFsdD1cIlBpY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlL3VzZXJzLXRlYW1zLnN2Z1wiPnt7c2VsZWN0ZWRWYWx1ZXM/LlswXT8uW3NlYXJjaEZpZWxkXX19PC9zcGFuPiBcclxuICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFZhbHVlcz8ubGVuZ3RoID4gMVwiIGNsYXNzPVwic2VsZWN0LXZhbHVlIG14LTJcIj48aW1nIGNsYXNzPVwibWUtMlwiICBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZS91c2Vycy10ZWFtcy5zdmdcIj57e3NlbGVjdGVkVmFsdWVzPy5bMV0/LltzZWFyY2hGaWVsZF19fTwvc3Bhbj4gIC0tPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtdmFsdWUgbXgtMlwiICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aCA+IDFcIj4re3tzZWxlY3RlZFZhbHVlcz8ubGVuZ3RoIC0xfX08L3NwYW4+IHt7bGFiZWx9fSAgICBcclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aVwiID5cclxuICAgICAgICB7e3NlbGVjdGVkVmFsdWVzPy5bMF0/LltzZWFyY2hGaWVsZF19fVxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwic2hvd0Ryb3Bkb3duID8gJycgOiAnZC1ub25lJ1wiIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGRyb3Bkb3duXCIgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBpbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCIgdHlwZT1cInRleHRcIj4gIFxyXG4gICAgICAgIDxzdmcgY2xhc3M9XCJzZWFyY2gtaWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTdcIiB2aWV3Qm94PVwiMCAwIDE2IDE3XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAxNC41TDExLjEgMTEuNk0xMi42NjY3IDcuODMzMzNDMTIuNjY2NyAxMC43Nzg5IDEwLjI3ODkgMTMuMTY2NyA3LjMzMzMzIDEzLjE2NjdDNC4zODc4MSAxMy4xNjY3IDIgMTAuNzc4OSAyIDcuODMzMzNDMiA0Ljg4NzgxIDQuMzg3ODEgMi41IDcuMzMzMzMgMi41QzEwLjI3ODkgMi41IDEyLjY2NjcgNC44ODc4MSAxMi42NjY3IDcuODMzMzNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDwvc3ZnPiAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJtdWx0aSAmJiBmaWx0ZXJlZFZhbHVlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrXCIgW2Zvcl09XCJpbnN0YW5jZUlkXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIiBbY2hlY2tlZF09XCJjaGVja0lmQWxsU2VsZWN0ZWQoKVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0zXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaW5zdGFuY2VJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZFZhbHVlc1wiIFtuZ0NsYXNzXT1cIml0ZW0uaXNTZWxlY3RlZCAmJiAhbXVsdGkgPyAnc2VsZWN0ZWQnIDogJydcIiA+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpdGVtW2lkRmllbGRdICsgaW5zdGFuY2VJZFwiIFtuZ0NsYXNzXT1cIm11bHRpICA/ICcnOiAncHMtMCdcIiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25nQ2xhc3NdPVwibXVsdGkgID8gJyc6ICdkLW5vbmUnXCIgKGNoYW5nZSk9XCJvblNlbGVjdCgkZXZlbnQsIGl0ZW0pXCIgWyhuZ01vZGVsKV09XCJpdGVtLmlzU2VsZWN0ZWRcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtM1wiIHR5cGU9XCJjaGVja2JveFwiIHZhbHVlPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW1baWRGaWVsZF0gKyBpbnN0YW5jZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW1bc2VhcmNoRmllbGRdfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCIhZmlsdGVyZWRWYWx1ZXM/Lmxlbmd0aFwiID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgPk5vIGRhdGEgZm91bmQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD4gIFxyXG4gICAgPC9kaXY+ICBcclxuICAgXHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
4
|
+
export class ImagePopupComponent {
|
|
5
|
+
activeModal;
|
|
6
|
+
imageUrl = '';
|
|
7
|
+
caption = '';
|
|
8
|
+
constructor(activeModal) {
|
|
9
|
+
this.activeModal = activeModal;
|
|
10
|
+
}
|
|
11
|
+
close() {
|
|
12
|
+
this.activeModal.close();
|
|
13
|
+
}
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImagePopupComponent, deps: [{ token: i1.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImagePopupComponent, selector: "lib-image-popup", inputs: { imageUrl: "imageUrl", caption: "caption" }, ngImport: i0, template: "<div class=\"modal-header py-2\">\r\n <h5 class=\"modal-title text-truncate\">{{ caption }}</h5>\r\n <button type=\"button\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"close()\" aria-label=\"Close\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n</div>\r\n<div class=\"modal-body p-2 d-flex align-items-center justify-content-center\">\r\n <img [src]=\"imageUrl\" class=\"img-fluid image-popup-img\" alt=\"\" />\r\n</div>", styles: [".image-popup-img{max-height:85vh;max-width:100%;object-fit:contain}\n"] });
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImagePopupComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'lib-image-popup', template: "<div class=\"modal-header py-2\">\r\n <h5 class=\"modal-title text-truncate\">{{ caption }}</h5>\r\n <button type=\"button\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"close()\" aria-label=\"Close\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#667085\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </button>\r\n</div>\r\n<div class=\"modal-body p-2 d-flex align-items-center justify-content-center\">\r\n <img [src]=\"imageUrl\" class=\"img-fluid image-popup-img\" alt=\"\" />\r\n</div>", styles: [".image-popup-img{max-height:85vh;max-width:100%;object-fit:contain}\n"] }]
|
|
20
|
+
}], ctorParameters: () => [{ type: i1.NgbActiveModal }], propDecorators: { imageUrl: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}], caption: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}] } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcG9wdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS1wb3B1cC9pbWFnZS1wb3B1cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2ltYWdlLXBvcHVwL2ltYWdlLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRakQsTUFBTSxPQUFPLG1CQUFtQjtJQUlYO0lBSFYsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixPQUFPLEdBQVcsRUFBRSxDQUFDO0lBRTlCLFlBQW1CLFdBQTJCO1FBQTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtJQUFHLENBQUM7SUFFbEQsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FSVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw2R0NSaEMsNHFCQVVNOzs0RkRGTyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCO21GQUtsQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1pbWFnZS1wb3B1cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaW1hZ2UtcG9wdXAuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWFnZVBvcHVwQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBpbWFnZVVybDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBhY3RpdmVNb2RhbDogTmdiQWN0aXZlTW9kYWwpIHt9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxufSIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcHktMlwiPlxyXG4gIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIHRleHQtdHJ1bmNhdGVcIj57eyBjYXB0aW9uIH19PC9oNT5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cclxuICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICA8cGF0aCBkPVwiTTE1IDVMNSAxNU01IDVMMTUgMTVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICA8L3N2Zz5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHAtMiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICA8aW1nIFtzcmNdPVwiaW1hZ2VVcmxcIiBjbGFzcz1cImltZy1mbHVpZCBpbWFnZS1wb3B1cC1pbWdcIiBhbHQ9XCJcIiAvPlxyXG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../../services/trax.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
export class CustomsingleSelectComponent {
|
|
7
|
+
cd;
|
|
8
|
+
authService;
|
|
9
|
+
onClick(event) {
|
|
10
|
+
const target = event.target;
|
|
11
|
+
if (!target.closest('.dropdown')) {
|
|
12
|
+
this.showDropdown = false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
items;
|
|
16
|
+
searchField;
|
|
17
|
+
multi;
|
|
18
|
+
idField;
|
|
19
|
+
selectedValues = [];
|
|
20
|
+
disabled;
|
|
21
|
+
label;
|
|
22
|
+
selected = new EventEmitter();
|
|
23
|
+
filteredValues = [];
|
|
24
|
+
showDropdown;
|
|
25
|
+
searchValue;
|
|
26
|
+
instanceId;
|
|
27
|
+
constructor(cd, authService) {
|
|
28
|
+
this.cd = cd;
|
|
29
|
+
this.authService = authService;
|
|
30
|
+
}
|
|
31
|
+
ngOnInit() {
|
|
32
|
+
this.instanceId = crypto.randomUUID();
|
|
33
|
+
this.authService.dropDownTrigger.subscribe((e) => {
|
|
34
|
+
if (e !== this.instanceId) {
|
|
35
|
+
this.showDropdown = false;
|
|
36
|
+
this.cd.detectChanges();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
ngOnChanges(changes) {
|
|
41
|
+
if (changes['items'] && this.items?.length) {
|
|
42
|
+
this.initializeItems();
|
|
43
|
+
}
|
|
44
|
+
else if (this.items?.length === 0) {
|
|
45
|
+
this.filteredValues = [];
|
|
46
|
+
}
|
|
47
|
+
if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {
|
|
48
|
+
this.updateSelectedValues();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
initializeItems() {
|
|
52
|
+
this.filteredValues = this.items.map((item) => ({ ...item }));
|
|
53
|
+
this.updateSelectedValues();
|
|
54
|
+
}
|
|
55
|
+
updateSelectedValues() {
|
|
56
|
+
this.selectedValues?.forEach((selectedItem) => {
|
|
57
|
+
const item = this.filteredValues?.find((filteredItem) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);
|
|
58
|
+
if (item) {
|
|
59
|
+
item.isSelected = true;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
openDropdown(event) {
|
|
64
|
+
this.authService.dropDownTrigger.next(this.instanceId);
|
|
65
|
+
event.stopPropagation();
|
|
66
|
+
this.showDropdown = !this.showDropdown;
|
|
67
|
+
}
|
|
68
|
+
onInput(event) {
|
|
69
|
+
if (!event.target.value) {
|
|
70
|
+
this.filteredValues = [...this.items];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const searchTerm = event.target.value.toLowerCase();
|
|
74
|
+
this.filteredValues = this.items.filter((item) => item[this.searchField].toLowerCase().includes(searchTerm));
|
|
75
|
+
}
|
|
76
|
+
this.updateSelectedValues();
|
|
77
|
+
this.cd.detectChanges();
|
|
78
|
+
}
|
|
79
|
+
onSelect(event, item) {
|
|
80
|
+
if (this.multi) {
|
|
81
|
+
if (event.currentTarget.checked) {
|
|
82
|
+
this.selectedValues.push(item);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.selectedValues = this.selectedValues.filter((elem) => elem[this.idField] !== item[this.idField]);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.selectedValues = [{ ...item }];
|
|
90
|
+
this.filteredValues.forEach((element) => {
|
|
91
|
+
if (element[this.idField] !== item[this.idField]) {
|
|
92
|
+
element.isSelected = false;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
this.showDropdown = false;
|
|
96
|
+
}
|
|
97
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
98
|
+
const selectedItem = { ...value };
|
|
99
|
+
delete selectedItem.isSelected;
|
|
100
|
+
return selectedItem;
|
|
101
|
+
});
|
|
102
|
+
this.cd.detectChanges();
|
|
103
|
+
this.emitSelectedValues(valuesToEmit);
|
|
104
|
+
}
|
|
105
|
+
onSelectAll(event) {
|
|
106
|
+
const selectAll = event.currentTarget.checked;
|
|
107
|
+
this.filteredValues.forEach((item) => item.isSelected = selectAll);
|
|
108
|
+
if (selectAll) {
|
|
109
|
+
this.selectedValues = [...this.filteredValues];
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.selectedValues = [];
|
|
113
|
+
}
|
|
114
|
+
const valuesToEmit = this.selectedValues.map((value) => {
|
|
115
|
+
const { isSelected, ...selectedItem } = value;
|
|
116
|
+
return selectedItem;
|
|
117
|
+
});
|
|
118
|
+
this.cd.detectChanges();
|
|
119
|
+
this.emitSelectedValues(valuesToEmit);
|
|
120
|
+
}
|
|
121
|
+
emitSelectedValues(values) {
|
|
122
|
+
if (this.multi) {
|
|
123
|
+
this.selected.emit(values);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.selected.emit(values[0]);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
checkIfAllSelected() {
|
|
130
|
+
return this.filteredValues.every((item) => item.isSelected);
|
|
131
|
+
}
|
|
132
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomsingleSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TraxService }], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomsingleSelectComponent, selector: "lib-single-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField].slice(0,50)}}<span *ngIf=\"selectedValues?.[0]?.[searchField].length>49\">....</span>\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{position:absolute;width:100%;z-index:2}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomsingleSelectComponent, decorators: [{
|
|
136
|
+
type: Component,
|
|
137
|
+
args: [{ selector: 'lib-single-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n {{selectedValues?.length}} {{label}} Selected \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField].slice(0,50)}}<span *ngIf=\"selectedValues?.[0]?.[searchField].length>49\">....</span>\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{position:absolute;width:100%;z-index:2}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}\n"] }]
|
|
138
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TraxService }], propDecorators: { onClick: [{
|
|
139
|
+
type: HostListener,
|
|
140
|
+
args: ['document:click', ['$event']]
|
|
141
|
+
}], items: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], searchField: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], multi: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], idField: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], selectedValues: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], disabled: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], label: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], selected: [{
|
|
156
|
+
type: Output
|
|
157
|
+
}] } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2xpYi9jdXN0b20tc2VsZWN0L2N1c3RvbS1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS10cmF4L3NyYy9saWIvY29tcG9uZW50cy9saWIvY3VzdG9tLXNlbGVjdC9jdXN0b20tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVNuSyxNQUFNLE9BQU8sMkJBQTJCO0lBeUJsQjtJQUErQjtJQXRCbkQsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVRLEtBQUssQ0FBSztJQUNWLFdBQVcsQ0FBUTtJQUNuQixLQUFLLENBQVM7SUFDZCxPQUFPLENBQVE7SUFDZixjQUFjLEdBQVEsRUFBRSxDQUFBO0lBQ3hCLFFBQVEsQ0FBcUI7SUFDN0IsS0FBSyxDQUFRO0lBRVosUUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUE7SUFDNUMsY0FBYyxHQUFRLEVBQUUsQ0FBQTtJQUN4QixZQUFZLENBQVM7SUFDckIsV0FBVyxDQUFRO0lBQ25CLFVBQVUsQ0FBTTtJQUdoQixZQUFvQixFQUFxQixFQUFVLFdBQXVCO1FBQXRELE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7SUFBSSxDQUFDO0lBQy9FLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFLLEVBQUMsRUFBRTtZQUNsRCxJQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFDO2dCQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtnQkFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUVoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMxQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7YUFBSyxJQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBQztZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQTtTQUN6QjtRQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUwsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzdILElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDMUQsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzVHO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO2dCQUMxQyxJQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQztvQkFDOUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDMUQsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ2xDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQztZQUMvQixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXhDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUV4RSxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNoRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzFELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDOUMsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBR0Qsa0JBQWtCLENBQUMsTUFBYTtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO3dHQTVJVSwyQkFBMkI7NEZBQTNCLDJCQUEyQixtVkNUeEMsaW1GQXlDTTs7NEZEaENPLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTtnSEFLL0MsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFqQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG4gXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXNpbmdsZS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21zaW5nbGVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcbiBcclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmRyb3Bkb3duJykpIHtcclxuICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiBcclxuICBASW5wdXQoKSBpdGVtczogYW55XHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGQ6IHN0cmluZ1xyXG4gIEBJbnB1dCgpIG11bHRpOiBib29sZWFuXHJcbiAgQElucHV0KCkgaWRGaWVsZDogc3RyaW5nXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nXHJcbiBcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gIGZpbHRlcmVkVmFsdWVzOiBhbnkgPSBbXVxyXG4gIHNob3dEcm9wZG93bjogYm9vbGVhblxyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmdcclxuICBpbnN0YW5jZUlkOiBhbnk7XHJcbiBcclxuIFxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGF1dGhTZXJ2aWNlOlRyYXhTZXJ2aWNlKSB7IH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5zdGFuY2VJZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmRyb3BEb3duVHJpZ2dlci5zdWJzY3JpYmUoKGU6YW55KT0+eyAgICAgICAgICAgXHJcbiAgICAgIGlmKGUgIT09IHRoaXMuaW5zdGFuY2VJZCl7ICAgICAgICBcclxuICAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiBcclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiBcclxuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVJdGVtcygpO1xyXG4gICAgfWVsc2UgaWYodGhpcy5pdGVtcz8ubGVuZ3RoICA9PT0wKXtcclxuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IFtdXHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXSAmJiBBcnJheS5pc0FycmF5KGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10/LmN1cnJlbnRWYWx1ZSkgJiYgY2hhbmdlc1snc2VsZWN0ZWRWYWx1ZXMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGggPiAwICYmIGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10/LmN1cnJlbnRWYWx1ZVswXSkgeyAgICAgICAgICAgIFxyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcbiAgaW5pdGlhbGl6ZUl0ZW1zKCkge1xyXG4gICAgdGhpcy5maWx0ZXJlZFZhbHVlcyA9IHRoaXMuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7IC4uLml0ZW0gfSkpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpXHJcbiAgfVxyXG4gXHJcbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKSB7ICAgIFxyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcz8uZm9yRWFjaCgoc2VsZWN0ZWRJdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmlsdGVyZWRWYWx1ZXM/LmZpbmQoKGZpbHRlcmVkSXRlbTogYW55KSA9PiBmaWx0ZXJlZEl0ZW0/Llt0aGlzLmlkRmllbGRdID09PSBzZWxlY3RlZEl0ZW0/Llt0aGlzLmlkRmllbGRdKTtcclxuICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICBpdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgXHJcbiAgfVxyXG4gXHJcbiAgb3BlbkRyb3Bkb3duKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuZHJvcERvd25UcmlnZ2VyLm5leHQodGhpcy5pbnN0YW5jZUlkKVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNob3dEcm9wZG93biA9ICF0aGlzLnNob3dEcm9wZG93bjtcclxuICB9XHJcbiBcclxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSBbLi4udGhpcy5pdGVtc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzZWFyY2hUZXJtID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICAgIGl0ZW1bdGhpcy5zZWFyY2hGaWVsZF0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpO1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gXHJcbiAgb25TZWxlY3QoZXZlbnQ6IGFueSwgaXRlbTogYW55KSB7ICAgIFxyXG4gICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMucHVzaChpdGVtICk7ICAgICAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5maWx0ZXIoKGVsZW06IGFueSkgPT4gZWxlbVt0aGlzLmlkRmllbGRdICE9PSBpdGVtW3RoaXMuaWRGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW3sgLi4uaXRlbSB9XTtcclxuICAgICAgdGhpcy5maWx0ZXJlZFZhbHVlcy5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICAgIGlmKGVsZW1lbnRbdGhpcy5pZEZpZWxkXSAhPT0gaXRlbVt0aGlzLmlkRmllbGRdKXtcclxuICAgICAgICAgIGVsZW1lbnQuaXNTZWxlY3RlZCA9IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgIH1cclxuIFxyXG4gICAgY29uc3QgdmFsdWVzVG9FbWl0ID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0geyAuLi52YWx1ZSB9O1xyXG4gICAgICBkZWxldGUgc2VsZWN0ZWRJdGVtLmlzU2VsZWN0ZWQ7XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW07XHJcbiAgICB9KTtcclxuIFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmVtaXRTZWxlY3RlZFZhbHVlcyh2YWx1ZXNUb0VtaXQpO1xyXG4gXHJcbiAgfVxyXG4gXHJcbiAgb25TZWxlY3RBbGwoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2VsZWN0QWxsID0gZXZlbnQuY3VycmVudFRhcmdldC5jaGVja2VkO1xyXG4gICAgdGhpcy5maWx0ZXJlZFZhbHVlcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IGl0ZW0uaXNTZWxlY3RlZCA9IHNlbGVjdEFsbCk7XHJcbiBcclxuICAgIGlmIChzZWxlY3RBbGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFsuLi50aGlzLmZpbHRlcmVkVmFsdWVzXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbXTtcclxuICAgIH1cclxuIFxyXG4gICAgY29uc3QgdmFsdWVzVG9FbWl0ID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5tYXAoKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBpc1NlbGVjdGVkLCAuLi5zZWxlY3RlZEl0ZW0gfSA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgfSk7XHJcbiBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5lbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzVG9FbWl0KTtcclxuICB9XHJcbiBcclxuIFxyXG4gIGVtaXRTZWxlY3RlZFZhbHVlcyh2YWx1ZXM6IGFueVtdKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIGNoZWNrSWZBbGxTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkVmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IGl0ZW0uaXNTZWxlY3RlZCk7XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlLWlucHV0JzonJ1wiICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIiAgY2xhc3M9XCJmb3JtLXNlbGVjdFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpXCIgPlxyXG4gICAge3tzZWxlY3RlZFZhbHVlcz8ubGVuZ3RofX0ge3tsYWJlbH19IFNlbGVjdGVkICAgIFxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW11bHRpXCIgPlxyXG4gICAgICAgIHt7c2VsZWN0ZWRWYWx1ZXM/LlswXT8uW3NlYXJjaEZpZWxkXS5zbGljZSgwLDUwKX19PHNwYW4gKm5nSWY9XCJzZWxlY3RlZFZhbHVlcz8uWzBdPy5bc2VhcmNoRmllbGRdLmxlbmd0aD40OVwiPi4uLi48L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJzaG93RHJvcGRvd24gPyAnJyA6ICdkLW5vbmUnXCIgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZHJvcGRvd25cIiA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiB0eXBlPVwidGV4dFwiPiAgXHJcbiAgICAgICAgPHN2ZyBjbGFzcz1cInNlYXJjaC1pY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxN1wiIHZpZXdCb3g9XCIwIDAgMTYgMTdcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDE0LjVMMTEuMSAxMS42TTEyLjY2NjcgNy44MzMzM0MxMi42NjY3IDEwLjc3ODkgMTAuMjc4OSAxMy4xNjY3IDcuMzMzMzMgMTMuMTY2N0M0LjM4NzgxIDEzLjE2NjcgMiAxMC43Nzg5IDIgNy44MzMzM0MyIDQuODg3ODEgNC4zODc4MSAyLjUgNy4zMzMzMyAyLjVDMTAuMjc4OSAyLjUgMTIuNjY2NyA0Ljg4NzgxIDEyLjY2NjcgNy44MzMzM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPC9zdmc+ICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIm11bHRpICYmIGZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2tcIiBmb3I9XCJzZWxlY3RBbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJvblNlbGVjdEFsbCgkZXZlbnQpXCIgW2NoZWNrZWRdPVwiY2hlY2tJZkFsbFNlbGVjdGVkKClcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtM1wiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkVmFsdWVzXCIgW25nQ2xhc3NdPVwiaXRlbS5pc1NlbGVjdGVkICYmICFtdWx0aSA/ICdzZWxlY3RlZCcgOiAnJ1wiID5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIml0ZW1baWRGaWVsZF0gKyBpbnN0YW5jZUlkXCIgW25nQ2xhc3NdPVwibXVsdGkgID8gJyc6ICdwcy0wJ1wiIGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJtdWx0aSAgPyAnJzogJ2Qtbm9uZSdcIiAoY2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudCwgaXRlbSlcIiBbKG5nTW9kZWwpXT1cIml0ZW0uaXNTZWxlY3RlZFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0zXCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtpZEZpZWxkXSArIGluc3RhbmNlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbVtzZWFyY2hGaWVsZF19fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cIiFmaWx0ZXJlZFZhbHVlcz8ubGVuZ3RoXCIgPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiA+Tm8gZGF0YSBmb3VuZDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPiAgXHJcbiAgICA8L2Rpdj4gIFxyXG4gICBcclxuPC9kaXY+Il19
|