@naniteninja/dashboard-components-lib 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
- package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
- package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
- package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
- package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
- package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +98 -0
- package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +24 -0
- package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
- package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
- package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
- package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
- package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
- package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
- package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
- package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
- package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
- package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
- package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
- package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
- package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
- package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
- package/esm2022/lib/components/chat/chat.component.mjs +307 -0
- package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
- package/esm2022/lib/components/chat/chat.service.mjs +63 -0
- package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
- package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
- package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
- package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
- package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
- package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
- package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
- package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
- package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
- package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
- package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
- package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
- package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
- package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
- package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
- package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
- package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
- package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
- package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
- package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
- package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
- package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
- package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
- package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
- package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
- package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
- package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +170 -0
- package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
- package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
- package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
- package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
- package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
- package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
- package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
- package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
- package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
- package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
- package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
- package/esm2022/lib/components/spider-chart/lookup/default-spider-config.lookup.mjs +18 -0
- package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
- package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
- package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
- package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
- package/esm2022/lib/enums/direction.enum.mjs +6 -0
- package/esm2022/lib/enums/form-field-type.mjs +30 -0
- package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
- package/esm2022/lib/enums/status-types.mjs +8 -0
- package/esm2022/lib/model/select-option-template.mjs +2 -0
- package/esm2022/lib/operations/operations.mjs +19 -0
- package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
- package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
- package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
- package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
- package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
- package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
- package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
- package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
- package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
- package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
- package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
- package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
- package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
- package/esm2022/lib/shared/shared.module.mjs +23 -0
- package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
- package/esm2022/public-api.mjs +122 -0
- package/fesm2022/naniteninja-dashboard-components-lib.mjs +4334 -0
- package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/auto-delegation/animations.d.ts +1 -0
- package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
- package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
- package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
- package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
- package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
- package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
- package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
- package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
- package/lib/components/calendar/agenda/agenda.component.d.ts +22 -0
- package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
- package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
- package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
- package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
- package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
- package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
- package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
- package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
- package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
- package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
- package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
- package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
- package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
- package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
- package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
- package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
- package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
- package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
- package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
- package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
- package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
- package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
- package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
- package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
- package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
- package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
- package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
- package/lib/components/chat/chat.component.d.ts +70 -0
- package/lib/components/chat/chat.component.module.d.ts +22 -0
- package/lib/components/chat/chat.service.d.ts +15 -0
- package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
- package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
- package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
- package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
- package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
- package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
- package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
- package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
- package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
- package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
- package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
- package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
- package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
- package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
- package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
- package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
- package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
- package/lib/components/client-home/client-home.component.d.ts +44 -0
- package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
- package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
- package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
- package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
- package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
- package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
- package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
- package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
- package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
- package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
- package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
- package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
- package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
- package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
- package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
- package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
- package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
- package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
- package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
- package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
- package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
- package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
- package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
- package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
- package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
- package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +73 -0
- package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
- package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
- package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
- package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
- package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
- package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
- package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
- package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
- package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
- package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
- package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
- package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
- package/lib/components/profile-card/profile-card.component.d.ts +11 -0
- package/lib/components/profile-card/profile-card.module.d.ts +9 -0
- package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
- package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
- package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
- package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
- package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
- package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
- package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
- package/lib/components/spider-chart/lookup/default-spider-config.lookup.d.ts +2 -0
- package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
- package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
- package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
- package/lib/enums/direction.enum.d.ts +4 -0
- package/lib/enums/form-field-type.d.ts +28 -0
- package/lib/enums/local-storage-keys.enum.d.ts +3 -0
- package/lib/enums/status-types.d.ts +6 -0
- package/lib/model/select-option-template.d.ts +5 -0
- package/lib/operations/operations.d.ts +19 -0
- package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
- package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
- package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
- package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
- package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
- package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
- package/lib/pipes/initials/initials.pipe.d.ts +7 -0
- package/lib/pipes/round/round.pipe.d.ts +7 -0
- package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
- package/lib/services/abstract-cache.service.d.ts +9 -0
- package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
- package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
- package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
- package/lib/shared/shared.module.d.ts +13 -0
- package/naniteninja-dashboard-components-lib-1.0.0.tgz +0 -0
- package/package.json +69 -0
- package/public-api.d.ts +121 -0
- package/src/assets/auto-delegation-modal/cross.svg +17 -0
- package/src/assets/auto-delegation-modal/menu.svg +3 -0
- package/src/assets/auto-delegation-modal/timer-center-dot.svg +25 -0
- package/src/assets/auto-delegation-modal/user-profile.svg +9 -0
- package/src/assets/circle-progress/circle-progress-1.svg +159 -0
- package/src/assets/circle-progress/circle-progress-2.svg +155 -0
- package/src/assets/circle-progress/circle-progress-3.svg +25 -0
- package/src/assets/circle-progress/circle-progress.svg +159 -0
- package/src/assets/client-match-overview/background-eclipse.svg +13 -0
- package/src/assets/fonts/calistoga/Calistoga-Regular.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Black.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-BlackItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Bold.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-BoldItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-ExtraBold.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Heavy.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-HeavyItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Light.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-LightItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Medium.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-MediumItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Regular.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-RegularItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-SemiBold.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-Thin.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-ThinItalic.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-UltraLight.ttf +0 -0
- package/src/assets/fonts/gilroy/Gilroy-UltraLightItalic.ttf +0 -0
- package/src/assets/grid/icons/filter-button.svg +47 -0
- package/src/assets/grid/images/chips-background-shadow.svg +34 -0
- package/src/assets/icons/back-v2.svg +14 -0
- package/src/assets/icons/checkbox/checkbox-off.svg +72 -0
- package/src/assets/icons/checkbox/checkbox-on.svg +113 -0
- package/src/assets/icons/checkmark-button.svg +72 -0
- package/src/assets/icons/checkmark.svg +7 -0
- package/src/assets/icons/close-icon.svg +3 -0
- package/src/assets/icons/compose-matcher/notes.svg +4 -0
- package/src/assets/icons/compose-matcher/profile.svg +4 -0
- package/src/assets/icons/compose-matcher/suggest.svg +3 -0
- package/src/assets/icons/compose-matcher/visual.svg +3 -0
- package/src/assets/icons/default-profile.svg +23 -0
- package/src/assets/icons/defualt.svg +5 -0
- package/src/assets/icons/first-page.svg +7 -0
- package/src/assets/icons/incrementer/minus.svg +3 -0
- package/src/assets/icons/incrementer/plus.svg +3 -0
- package/src/assets/icons/info.svg +5 -0
- package/src/assets/icons/last-page.svg +7 -0
- package/src/assets/icons/minus.svg +3 -0
- package/src/assets/icons/next-page.svg +6 -0
- package/src/assets/icons/plus.svg +3 -0
- package/src/assets/icons/popup-defualt.svg +34 -0
- package/src/assets/icons/prev-page.svg +6 -0
- package/src/assets/icons/send-icon.svg +4 -0
- package/src/assets/icons/shake.svg +74 -0
- package/src/assets/icons/thumbs-up.svg +28 -0
- package/src/assets/nsfw/blazeface.bundle.js +2 -0
- package/src/assets/nsfw/model/group1-shard1of1 +0 -0
- package/src/assets/nsfw/model/model.json +4085 -0
- package/src/assets/nsfw/nsfwjs.bundle.js +2 -0
- package/src/assets/nsfw/tf.bundle.js +2 -0
- package/src/assets/scheduler/accept.svg +3 -0
- package/src/assets/scheduler/accept_active.svg +3 -0
- package/src/assets/scheduler/arrow.svg +13 -0
- package/src/assets/scheduler/cancel.svg +3 -0
- package/src/assets/scheduler/cancel_active.svg +3 -0
- package/src/assets/scheduler/heart.svg +18 -0
- package/src/assets/trait-visual/force-directed-graph.png +0 -0
- package/src/lib/shared-styles/common/_colors.scss +30 -0
- package/src/lib/shared-styles/common/animations.scss +48 -0
- package/src/lib/shared-styles/common/base-input-field.scss +132 -0
- package/src/lib/shared-styles/common/buttons.scss +152 -0
- package/src/lib/shared-styles/common/cards.scss +163 -0
- package/src/lib/shared-styles/common/client-dash.scss +5 -0
- package/src/lib/shared-styles/common/date-picker.scss +179 -0
- package/src/lib/shared-styles/common/draggable-scroll-and-marquee.scss +34 -0
- package/src/lib/shared-styles/common/feedback.scss +157 -0
- package/src/lib/shared-styles/common/fonts.scss +3 -0
- package/src/lib/shared-styles/common/information-card.scss +56 -0
- package/src/lib/shared-styles/common/input.scss +110 -0
- package/src/lib/shared-styles/common/lib-styles-utils.scss +157 -0
- package/src/lib/shared-styles/common/lists.scss +91 -0
- package/src/lib/shared-styles/common/login.scss +32 -0
- package/src/lib/shared-styles/common/maps.scss +10 -0
- package/src/lib/shared-styles/common/matcher-dash.scss +49 -0
- package/src/lib/shared-styles/common/modal_styles.scss +32 -0
- package/src/lib/shared-styles/common/notifications-list.scss +9 -0
- package/src/lib/shared-styles/common/overrides.scss +6 -0
- package/src/lib/shared-styles/common/pulse.scss +26 -0
- package/src/lib/shared-styles/common/swiper.scss +5 -0
- package/src/lib/shared-styles/common/tab-menu.scss +74 -0
- package/src/lib/shared-styles/common/theme.scss +55 -0
- package/src/lib/shared-styles/common/typography.scss +121 -0
- package/src/lib/shared-styles/common/user-menu.scss +129 -0
- package/src/lib/shared-styles/fonts/calistoga.font.scss +6 -0
- package/src/lib/shared-styles/fonts/gilroy.font.scss +160 -0
- package/src/lib/shared-styles/images/compress.png +0 -0
- package/src/lib/shared-styles/images/expand.png +0 -0
- package/src/lib/shared-styles/styles.scss +25 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { formatDate } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable, LOCALE_ID } from '@angular/core';
|
|
3
|
+
import { addDays, addMinutes, differenceInMinutes, getDay, getHours, getMinutes, isBefore, isEqual, isSameWeek, set, startOfDay } from 'date-fns';
|
|
4
|
+
import { RRule } from 'rrule';
|
|
5
|
+
import { Weekday } from 'rrule/dist/esm/weekday';
|
|
6
|
+
import { EventTypes } from '../enums/event-type.enum';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class CalendarUtilsService {
|
|
9
|
+
constructor(locale) {
|
|
10
|
+
this.locale = locale;
|
|
11
|
+
}
|
|
12
|
+
filterCalendarsEvents(selectedCalendars, calendarEvents) {
|
|
13
|
+
if (selectedCalendars?.length > 0) {
|
|
14
|
+
return calendarEvents.filter((event) => selectedCalendars.find((calendar) => calendar.email === event['meta'].email || this.validCalendarEvent(event['meta'])) != null);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return calendarEvents.filter((event) => this.validCalendarEvent(event['meta']));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
validCalendarEvent(event) {
|
|
21
|
+
return [EventTypes.SYSTEM, EventTypes.DATE, EventTypes.USER].indexOf(event.type) !== -1;
|
|
22
|
+
}
|
|
23
|
+
formatEventTime(start, end) {
|
|
24
|
+
const startHours = getHours(start);
|
|
25
|
+
const endHours = getHours(end);
|
|
26
|
+
const startTimeFormat = (startHours > 12 && endHours > 12) || (startHours < 12 && endHours < 12) ? 'h:mm' : 'h:mm aa';
|
|
27
|
+
const startTime = formatDate(start, startTimeFormat, this.locale).replace(':00', '');
|
|
28
|
+
const endTime = formatDate(end, 'h:mm aa', this.locale).replace(':00', '');
|
|
29
|
+
return { startTime, endTime };
|
|
30
|
+
}
|
|
31
|
+
isProviderEvent(event) {
|
|
32
|
+
return [EventTypes.GOOGLE, EventTypes.MICROSOFT].indexOf(event.type) !== -1;
|
|
33
|
+
}
|
|
34
|
+
isRecurringEvent(event) {
|
|
35
|
+
// Excluding providers events because they are not generated within the app and come from external source like Google or Microsoft.
|
|
36
|
+
return event.recurring && event.type && !this.isProviderEvent(event);
|
|
37
|
+
}
|
|
38
|
+
isEqualDates(startDate, enDate) {
|
|
39
|
+
return !startDate || !enDate ? false : isEqual(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));
|
|
40
|
+
}
|
|
41
|
+
isBeforeDate(startDate, enDate) {
|
|
42
|
+
return isBefore(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));
|
|
43
|
+
}
|
|
44
|
+
isSameWeek(startDate, enDate) {
|
|
45
|
+
return !startDate || !enDate ? false : isSameWeek(startOfDay(new Date(startDate)), startOfDay(new Date(enDate)));
|
|
46
|
+
}
|
|
47
|
+
getUpdatedRecurringException(event) {
|
|
48
|
+
const validUpdatedRecurringException = this.isRecurringEvent(event) && event.recurringPattern.updatedEvent;
|
|
49
|
+
if (validUpdatedRecurringException && !this.isBeforeDate(event.recurringStartDate, event.recurringPattern.updatedEvent.startDate)) {
|
|
50
|
+
return event.recurringPattern.updatedEvent;
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
getExceptionEvent(event, exceptions) {
|
|
55
|
+
return this.isRecurringEvent(event)
|
|
56
|
+
? exceptions?.find((exception) => this.isEqualDates(event.recurringStartDate, exception.startDate) &&
|
|
57
|
+
this.isEqualDates(event.recurringEndDate, exception.endDate) &&
|
|
58
|
+
event.recurringInstanceNo === exception.recurringInstanceNo)
|
|
59
|
+
: null;
|
|
60
|
+
}
|
|
61
|
+
isValidRecurringDate(event, recurringDate) {
|
|
62
|
+
return !event.recurringPattern.recurringEndDate || this.isBeforeDate(recurringDate, event.recurringPattern.recurringEndDate);
|
|
63
|
+
}
|
|
64
|
+
getDeletedRecurringEvent(event, recurringDate) {
|
|
65
|
+
return event.recurringPattern?.deletions?.find((item) => this.isEqualDates(item.startDate, recurringDate));
|
|
66
|
+
}
|
|
67
|
+
generateRecurringDates(dtstart, until, freq, interval = 1) {
|
|
68
|
+
return (new RRule({
|
|
69
|
+
freq,
|
|
70
|
+
dtstart,
|
|
71
|
+
until,
|
|
72
|
+
wkst: new Weekday(getDay(dtstart)),
|
|
73
|
+
interval,
|
|
74
|
+
}).all() || []);
|
|
75
|
+
}
|
|
76
|
+
isValidRecurringException(event, exceptionEvent) {
|
|
77
|
+
return (this.isEqualDates(event.recurringStartDate, exceptionEvent.recurringStartDate) &&
|
|
78
|
+
this.isEqualDates(event.recurringEndDate, exceptionEvent.recurringEndDate) &&
|
|
79
|
+
event.recurringInstanceNo === exceptionEvent.recurringInstanceNo);
|
|
80
|
+
}
|
|
81
|
+
sortEvents(calendarEvents) {
|
|
82
|
+
calendarEvents.sort((a, b) => differenceInMinutes(b['end'], b['start']) - differenceInMinutes(a['end'], a['start']));
|
|
83
|
+
let zIndex = 1;
|
|
84
|
+
calendarEvents.forEach((event, index) => {
|
|
85
|
+
event['meta'].zIndex = zIndex;
|
|
86
|
+
event['cssClass'] += ` cyrano-event-index-${event['meta'].zIndex}`;
|
|
87
|
+
zIndex++;
|
|
88
|
+
for (let i = index - 1; i >= 0; i--) {
|
|
89
|
+
const calendarEvent = calendarEvents[i];
|
|
90
|
+
if (event['start'] < calendarEvent['end']) {
|
|
91
|
+
event['meta'].zIndex = Math.max(event['meta'].zIndex, calendarEvent['meta'].zIndex + 1);
|
|
92
|
+
event['cssClass'] += ` cyrano-event-index-${event['meta'].zIndex}`;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
applyEventsIndex() {
|
|
101
|
+
const eventElements = document.querySelectorAll('.cyrano-event');
|
|
102
|
+
// Calculate and apply z-index
|
|
103
|
+
eventElements.forEach((element, index) => {
|
|
104
|
+
let zIndex = 0;
|
|
105
|
+
element.classList.forEach((eventClass) => {
|
|
106
|
+
if (eventClass.includes('cyrano-event-index-')) {
|
|
107
|
+
const eventClassSplit = eventClass.split('-');
|
|
108
|
+
zIndex = Number(eventClassSplit[3]);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
element.style.zIndex = `${zIndex} !important`;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
setEventTime(event) {
|
|
115
|
+
let start = new Date(event.recurringStartDate || event.startDate);
|
|
116
|
+
let end = new Date(event.recurringEndDate || event.endDate);
|
|
117
|
+
if (!event.allDay) {
|
|
118
|
+
start = set(start, { hours: getHours(new Date(event.startTime)), minutes: getMinutes(new Date(event.startTime)) });
|
|
119
|
+
end = set(end, { hours: getHours(new Date(event.endTime)), minutes: getMinutes(new Date(event.endTime)) });
|
|
120
|
+
}
|
|
121
|
+
const eventMinutes = differenceInMinutes(end, start);
|
|
122
|
+
// --- for events that start PM and end AM next day----------
|
|
123
|
+
end = eventMinutes < 0 ? addDays(end, 1) : end;
|
|
124
|
+
if (event.recurring) {
|
|
125
|
+
event.recurringStartDate = start;
|
|
126
|
+
event.recurringEndDate = end;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
event.startDate = start;
|
|
130
|
+
event.endDate = end;
|
|
131
|
+
}
|
|
132
|
+
return { start, end };
|
|
133
|
+
}
|
|
134
|
+
// temp fix to remove html tags from event note until we change the note text area field to a rich textarea
|
|
135
|
+
removeHtmlTags(html) {
|
|
136
|
+
const regex = /(<([^>]+)>)/gi;
|
|
137
|
+
const cleanString = html.replace(regex, '');
|
|
138
|
+
return cleanString ? cleanString.trim() : '';
|
|
139
|
+
}
|
|
140
|
+
prepareEventDates(eventData) {
|
|
141
|
+
if (eventData.allDay) {
|
|
142
|
+
eventData.startDate = startOfDay(new Date(eventData.startDate));
|
|
143
|
+
eventData.startTime = eventData.startDate;
|
|
144
|
+
eventData.endTime = eventData.endDate;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
eventData.endDate = eventData.startDate;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
getEventTimes(eventData, recurringException, newEvent) {
|
|
151
|
+
let startTime = new Date(recurringException?.startTime || eventData.startTime);
|
|
152
|
+
let endTime;
|
|
153
|
+
if (!eventData._id && newEvent) {
|
|
154
|
+
const startTimeMinutes = getMinutes(startTime);
|
|
155
|
+
startTime = set(startTime, { minutes: startTimeMinutes < 30 ? 0 : 30 });
|
|
156
|
+
endTime = addMinutes(startTime, 60);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
endTime = new Date(recurringException?.endTime || eventData.endTime);
|
|
160
|
+
const startDate = new Date(recurringException?.startDate || eventData.recurringStartDate || eventData.startDate);
|
|
161
|
+
const endDate = new Date(recurringException?.endDate || eventData.recurringEndDate || eventData.endDate);
|
|
162
|
+
if (startDate && !eventData.allDay) {
|
|
163
|
+
if (!isEqual(startOfDay(startDate), startOfDay(startTime))) {
|
|
164
|
+
startTime = set(startDate, { hours: startTime.getHours(), minutes: startTime.getMinutes() });
|
|
165
|
+
}
|
|
166
|
+
if (!isEqual(startOfDay(endDate), startOfDay(endTime))) {
|
|
167
|
+
endTime = set(endDate, { hours: endTime.getHours(), minutes: endTime.getMinutes() });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return { startTime, endTime };
|
|
172
|
+
}
|
|
173
|
+
buildUpdatedEvent(event, formValue) {
|
|
174
|
+
const updatedEvent = formValue;
|
|
175
|
+
this.prepareEventDates(updatedEvent);
|
|
176
|
+
updatedEvent.location = updatedEvent.location || { address: formValue.address, coordinates: [] };
|
|
177
|
+
updatedEvent.startTime = updatedEvent.startTime['slotValue'] ? updatedEvent.startTime['slotValue'] : updatedEvent.startTime;
|
|
178
|
+
updatedEvent.endTime = updatedEvent.endTime['slotValue'] ? updatedEvent.endTime['slotValue'] : updatedEvent.endTime;
|
|
179
|
+
const eventTimes = this.getEventTimes(updatedEvent);
|
|
180
|
+
updatedEvent.startTime = eventTimes.startTime;
|
|
181
|
+
updatedEvent.endTime = eventTimes.endTime;
|
|
182
|
+
updatedEvent.timeZone = event?.timeZone;
|
|
183
|
+
updatedEvent.recurring = !!updatedEvent.recurringPattern?.type;
|
|
184
|
+
const startHours = getHours(eventTimes.startTime);
|
|
185
|
+
updatedEvent.recurringInstanceNo = event.recurringInstanceNo;
|
|
186
|
+
const endHours = getHours(eventTimes.endTime);
|
|
187
|
+
if (startHours > endHours) {
|
|
188
|
+
updatedEvent.endTime = set(addDays(eventTimes.startTime, 1), { hours: endHours, minutes: getMinutes(eventTimes.endTime) });
|
|
189
|
+
updatedEvent.endDate = updatedEvent.endTime;
|
|
190
|
+
}
|
|
191
|
+
updatedEvent.startDate = set(updatedEvent.startDate, { hours: updatedEvent.startTime?.getHours(), minutes: updatedEvent.startTime?.getMinutes() });
|
|
192
|
+
updatedEvent.endDate = set(updatedEvent.endDate, { hours: updatedEvent.endTime?.getHours(), minutes: updatedEvent.endTime?.getMinutes() });
|
|
193
|
+
if (!updatedEvent.recurringPattern || !updatedEvent.recurringPattern.type) {
|
|
194
|
+
delete updatedEvent.recurringPattern;
|
|
195
|
+
}
|
|
196
|
+
updatedEvent.timeZone = updatedEvent.type === EventTypes.MICROSOFT ? Intl.DateTimeFormat().resolvedOptions().timeZone : updatedEvent.timeZone;
|
|
197
|
+
return updatedEvent;
|
|
198
|
+
}
|
|
199
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarUtilsService, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
200
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarUtilsService, providedIn: 'root' }); }
|
|
201
|
+
}
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarUtilsService, decorators: [{
|
|
203
|
+
type: Injectable,
|
|
204
|
+
args: [{
|
|
205
|
+
providedIn: 'root',
|
|
206
|
+
}]
|
|
207
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
208
|
+
type: Inject,
|
|
209
|
+
args: [LOCALE_ID]
|
|
210
|
+
}] }] });
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2FsZW5kYXIvc2VydmljZXMvY2FsZW5kYXItdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEosT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU5QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQVN0RCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQXVDLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUVsRCxxQkFBcUIsQ0FBSSxpQkFBcUMsRUFBRSxjQUFtQjtRQUN4RixJQUFJLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMs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QUFFLENBQUMsQ0FBQztRQUNuSixZQUFZLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNJLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUUsT0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsQ0FBQztRQUVELFlBQVksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRTlJLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7K0dBdk5VLG9CQUFvQixrQkFDWCxTQUFTO21IQURsQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBRWMsTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGFkZERheXMsIGFkZE1pbnV0ZXMsIGRpZmZlcmVuY2VJbk1pbnV0ZXMsIGdldERheSwgZ2V0SG91cnMsIGdldE1pbnV0ZXMsIGlzQmVmb3JlLCBpc0VxdWFsLCBpc1NhbWVXZWVrLCBzZXQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IFJSdWxlIH0gZnJvbSAncnJ1bGUnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3kgfSBmcm9tICdycnVsZS9kaXN0L2VzbS90eXBlcyc7XHJcbmltcG9ydCB7IFdlZWtkYXkgfSBmcm9tICdycnVsZS9kaXN0L2VzbS93ZWVrZGF5JztcclxuaW1wb3J0IHsgRXZlbnRUeXBlcyB9IGZyb20gJy4uL2VudW1zL2V2ZW50LXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IElDYWxlbmRhckFjY291bnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NhbGVuZGFyLmFjY291bnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJRXZlbnRUaW1lIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ldmVudC50aW1lLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElSZWN1cnJpbmdFdmVudEV4Y2VwdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdXJyaW5nLmV4Y2VwdGlvbi5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyVXRpbHNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZykge31cclxuXHJcbiAgcHVibGljIGZpbHRlckNhbGVuZGFyc0V2ZW50czxUPihzZWxlY3RlZENhbGVuZGFyczogSUNhbGVuZGFyQWNjb3VudFtdLCBjYWxlbmRhckV2ZW50czogVFtdKTogVFtdIHtcclxuICAgIGlmIChzZWxlY3RlZENhbGVuZGFycz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXR1cm4gY2FsZW5kYXJFdmVudHMuZmlsdGVyKChldmVudCkgPT4gc2VsZWN0ZWRDYWxlbmRhcnMuZmluZCgoY2FsZW5kYXIpID0+IGNhbGVuZGFyLmVtYWlsID09PSBldmVudFsnbWV0YSddLmVtYWlsIHx8IHRoaXMudmFsaWRDYWxlbmRhckV2ZW50KGV2ZW50WydtZXRhJ10pKSAhPSBudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBjYWxlbmRhckV2ZW50cy5maWx0ZXIoKGV2ZW50KSA9PiB0aGlzLnZhbGlkQ2FsZW5kYXJFdmVudChldmVudFsnbWV0YSddKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRDYWxlbmRhckV2ZW50KGV2ZW50OiBJRXZlbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBbRXZlbnRUeXBlcy5TWVNURU0sIEV2ZW50VHlwZXMuREFURSwgRXZlbnRUeXBlcy5VU0VSXS5pbmRleE9mKGV2ZW50LnR5cGUpICE9PSAtMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb3JtYXRFdmVudFRpbWUoc3RhcnQ6IERhdGUsIGVuZDogRGF0ZSk6IHsgc3RhcnRUaW1lOiBzdHJpbmc7IGVuZFRpbWU6IHN0cmluZyB9IHtcclxuICAgIGNvbnN0IHN0YXJ0SG91cnMgPSBnZXRIb3VycyhzdGFydCk7XHJcbiAgICBjb25zdCBlbmRIb3VycyA9IGdldEhvdXJzKGVuZCk7XHJcbiAgICBjb25zdCBzdGFydFRpbWVGb3JtYXQgPSAoc3RhcnRIb3VycyA+IDEyICYmIGVuZEhvdXJzID4gMTIpIHx8IChzdGFydEhvdXJzIDwgMTIgJiYgZW5kSG91cnMgPCAxMikgPyAnaDptbScgOiAnaDptbSBhYSc7XHJcbiAgICBjb25zdCBzdGFydFRpbWUgPSBmb3JtYXREYXRlKHN0YXJ0LCBzdGFydFRpbWVGb3JtYXQsIHRoaXMubG9jYWxlKS5yZXBsYWNlKCc6MDAnLCAnJyk7XHJcbiAgICBjb25zdCBlbmRUaW1lID0gZm9ybWF0RGF0ZShlbmQsICdoOm1tIGFhJywgdGhpcy5sb2NhbGUpLnJlcGxhY2UoJzowMCcsICcnKTtcclxuICAgIHJldHVybiB7IHN0YXJ0VGltZSwgZW5kVGltZSB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzUHJvdmlkZXJFdmVudChldmVudDogUGFydGlhbDxJRXZlbnQ+KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gW0V2ZW50VHlwZXMuR09PR0xFLCBFdmVudFR5cGVzLk1JQ1JPU09GVF0uaW5kZXhPZihldmVudC50eXBlKSAhPT0gLTE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNSZWN1cnJpbmdFdmVudChldmVudDogUGFydGlhbDxJRXZlbnQ+KTogYm9vbGVhbiB7XHJcbiAgICAvLyBFeGNsdWRpbmcgcHJvdmlkZXJzIGV2ZW50cyBiZWNhdXNlIHRoZXkgYXJlIG5vdCBnZW5lcmF0ZWQgd2l0aGluIHRoZSBhcHAgYW5kIGNvbWUgZnJvbSBleHRlcm5hbCBzb3VyY2UgbGlrZSBHb29nbGUgb3IgTWljcm9zb2Z0LlxyXG4gICAgcmV0dXJuIGV2ZW50LnJlY3VycmluZyAmJiBldmVudC50eXBlICYmICF0aGlzLmlzUHJvdmlkZXJFdmVudChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNFcXVhbERhdGVzKHN0YXJ0RGF0ZTogc3RyaW5nIHwgRGF0ZSwgZW5EYXRlOiBzdHJpbmcgfCBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXN0YXJ0RGF0ZSB8fCAhZW5EYXRlID8gZmFsc2UgOiBpc0VxdWFsKHN0YXJ0T2ZEYXkobmV3IERhdGUoc3RhcnREYXRlKSksIHN0YXJ0T2ZEYXkobmV3IERhdGUoZW5EYXRlKSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzQmVmb3JlRGF0ZShzdGFydERhdGU6IHN0cmluZyB8IERhdGUsIGVuRGF0ZTogc3RyaW5nIHwgRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzQmVmb3JlKHN0YXJ0T2ZEYXkobmV3IERhdGUoc3RhcnREYXRlKSksIHN0YXJ0T2ZEYXkobmV3IERhdGUoZW5EYXRlKSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2FtZVdlZWsoc3RhcnREYXRlOiBzdHJpbmcgfCBEYXRlLCBlbkRhdGU6IHN0cmluZyB8IERhdGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhc3RhcnREYXRlIHx8ICFlbkRhdGUgPyBmYWxzZSA6IGlzU2FtZVdlZWsoc3RhcnRPZkRheShuZXcgRGF0ZShzdGFydERhdGUpKSwgc3RhcnRPZkRheShuZXcgRGF0ZShlbkRhdGUpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0VXBkYXRlZFJlY3VycmluZ0V4Y2VwdGlvbihldmVudDogUGFydGlhbDxJRXZlbnQ+KTogSVJlY3VycmluZ0V2ZW50RXhjZXB0aW9uIHtcclxuICAgIGNvbnN0IHZhbGlkVXBkYXRlZFJlY3VycmluZ0V4Y2VwdGlvbiA9IHRoaXMuaXNSZWN1cnJpbmdFdmVudChldmVudCkgJiYgZXZlbnQucmVjdXJyaW5nUGF0dGVybi51cGRhdGVkRXZlbnQ7XHJcbiAgICBpZiAodmFsaWRVcGRhdGVkUmVjdXJyaW5nRXhjZXB0aW9uICYmICF0aGlzLmlzQmVmb3JlRGF0ZShldmVudC5yZWN1cnJpbmdTdGFydERhdGUsIGV2ZW50LnJlY3VycmluZ1BhdHRlcm4udXBkYXRlZEV2ZW50LnN0YXJ0RGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIGV2ZW50LnJlY3VycmluZ1BhdHRlcm4udXBkYXRlZEV2ZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RXhjZXB0aW9uRXZlbnQoZXZlbnQ6IFBhcnRpYWw8SUV2ZW50PiwgZXhjZXB0aW9uczogSVJlY3VycmluZ0V2ZW50RXhjZXB0aW9uW10pOiBJUmVjdXJyaW5nRXZlbnRFeGNlcHRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNSZWN1cnJpbmdFdmVudChldmVudClcclxuICAgICAgPyBleGNlcHRpb25zPy5maW5kKFxyXG4gICAgICAgICAgKGV4Y2VwdGlvbikgPT5cclxuICAgICAgICAgICAgdGhpcy5pc0VxdWFsRGF0ZXMoZXZlbnQucmVjdXJyaW5nU3RhcnREYXRlLCBleGNlcHRpb24uc3RhcnREYXRlKSAmJlxyXG4gICAgICAgICAgICB0aGlzLmlzRXF1YWxEYXRlcyhldmVudC5yZWN1cnJpbmdFbmREYXRlLCBleGNlcHRpb24uZW5kRGF0ZSkgJiZcclxuICAgICAgICAgICAgZXZlbnQucmVjdXJyaW5nSW5zdGFuY2VObyA9PT0gZXhjZXB0aW9uLnJlY3VycmluZ0luc3RhbmNlTm8sXHJcbiAgICAgICAgKVxyXG4gICAgICA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNWYWxpZFJlY3VycmluZ0RhdGUoZXZlbnQ6IElFdmVudCwgcmVjdXJyaW5nRGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICFldmVudC5yZWN1cnJpbmdQYXR0ZXJuLnJlY3VycmluZ0VuZERhdGUgfHwgdGhpcy5pc0JlZm9yZURhdGUocmVjdXJyaW5nRGF0ZSwgZXZlbnQucmVjdXJyaW5nUGF0dGVybi5yZWN1cnJpbmdFbmREYXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREZWxldGVkUmVjdXJyaW5nRXZlbnQoZXZlbnQ6IElFdmVudCwgcmVjdXJyaW5nRGF0ZTogRGF0ZSk6IElSZWN1cnJpbmdFdmVudEV4Y2VwdGlvbiB7XHJcbiAgICByZXR1cm4gZXZlbnQucmVjdXJyaW5nUGF0dGVybj8uZGVsZXRpb25zPy5maW5kKChpdGVtKSA9PiB0aGlzLmlzRXF1YWxEYXRlcyhpdGVtLnN0YXJ0RGF0ZSwgcmVjdXJyaW5nRGF0ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlUmVjdXJyaW5nRGF0ZXMoZHRzdGFydDogRGF0ZSwgdW50aWw6IERhdGUsIGZyZXE6IEZyZXF1ZW5jeSwgaW50ZXJ2YWw6IG51bWJlciA9IDEpOiBEYXRlW10ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgbmV3IFJSdWxlKHtcclxuICAgICAgICBmcmVxLFxyXG4gICAgICAgIGR0c3RhcnQsXHJcbiAgICAgICAgdW50aWwsXHJcbiAgICAgICAgd2tzdDogbmV3IFdlZWtkYXkoZ2V0RGF5KGR0c3RhcnQpKSxcclxuICAgICAgICBpbnRlcnZhbCxcclxuICAgICAgfSkuYWxsKCkgfHwgW11cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNWYWxpZFJlY3VycmluZ0V4Y2VwdGlvbihldmVudDogSUV2ZW50LCBleGNlcHRpb25FdmVudDogSVJlY3VycmluZ0V2ZW50RXhjZXB0aW9uKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmlzRXF1YWxEYXRlcyhldmVudC5yZWN1cnJpbmdTdGFydERhdGUsIGV4Y2VwdGlvbkV2ZW50LnJlY3VycmluZ1N0YXJ0RGF0ZSkgJiZcclxuICAgICAgdGhpcy5pc0VxdWFsRGF0ZXMoZXZlbnQucmVjdXJyaW5nRW5kRGF0ZSwgZXhjZXB0aW9uRXZlbnQucmVjdXJyaW5nRW5kRGF0ZSkgJiZcclxuICAgICAgZXZlbnQucmVjdXJyaW5nSW5zdGFuY2VObyA9PT0gZXhjZXB0aW9uRXZlbnQucmVjdXJyaW5nSW5zdGFuY2VOb1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzb3J0RXZlbnRzPFQ+KGNhbGVuZGFyRXZlbnRzOiBUW10pOiB2b2lkIHtcclxuICAgIGNhbGVuZGFyRXZlbnRzLnNvcnQoKGEsIGIpID0+IGRpZmZlcmVuY2VJbk1pbnV0ZXMoYlsnZW5kJ10sIGJbJ3N0YXJ0J10pIC0gZGlmZmVyZW5jZUluTWludXRlcyhhWydlbmQnXSwgYVsnc3RhcnQnXSkpO1xyXG4gICAgbGV0IHpJbmRleCA9IDE7XHJcbiAgICBjYWxlbmRhckV2ZW50cy5mb3JFYWNoKChldmVudCwgaW5kZXgpID0+IHtcclxuICAgICAgZXZlbnRbJ21ldGEnXS56SW5kZXggPSB6SW5kZXg7XHJcbiAgICAgIGV2ZW50Wydjc3NDbGFzcyddICs9IGAgY3lyYW5vLWV2ZW50LWluZGV4LSR7ZXZlbnRbJ21ldGEnXS56SW5kZXh9YDtcclxuICAgICAgekluZGV4Kys7XHJcbiAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgY29uc3QgY2FsZW5kYXJFdmVudCA9IGNhbGVuZGFyRXZlbnRzW2ldO1xyXG4gICAgICAgIGlmIChldmVudFsnc3RhcnQnXSA8IGNhbGVuZGFyRXZlbnRbJ2VuZCddKSB7XHJcbiAgICAgICAgICBldmVudFsnbWV0YSddLnpJbmRleCA9IE1hdGgubWF4KGV2ZW50WydtZXRhJ10uekluZGV4LCBjYWxlbmRhckV2ZW50WydtZXRhJ10uekluZGV4ICsgMSk7XHJcbiAgICAgICAgICBldmVudFsnY3NzQ2xhc3MnXSArPSBgIGN5cmFuby1ldmVudC1pbmRleC0ke2V2ZW50WydtZXRhJ10uekluZGV4fWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlFdmVudHNJbmRleCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50RWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY3lyYW5vLWV2ZW50Jyk7XHJcbiAgICAvLyBDYWxjdWxhdGUgYW5kIGFwcGx5IHotaW5kZXhcclxuICAgIGV2ZW50RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGxldCB6SW5kZXggPSAwO1xyXG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5mb3JFYWNoKChldmVudENsYXNzKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50Q2xhc3MuaW5jbHVkZXMoJ2N5cmFuby1ldmVudC1pbmRleC0nKSkge1xyXG4gICAgICAgICAgY29uc3QgZXZlbnRDbGFzc1NwbGl0ID0gZXZlbnRDbGFzcy5zcGxpdCgnLScpO1xyXG4gICAgICAgICAgekluZGV4ID0gTnVtYmVyKGV2ZW50Q2xhc3NTcGxpdFszXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZWxlbWVudC5zdHlsZS56SW5kZXggPSBgJHt6SW5kZXh9ICFpbXBvcnRhbnRgO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RXZlbnRUaW1lKGV2ZW50OiBQYXJ0aWFsPElFdmVudD4pOiB7IHN0YXJ0OiBEYXRlOyBlbmQ6IERhdGUgfSB7XHJcbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZShldmVudC5yZWN1cnJpbmdTdGFydERhdGUgfHwgZXZlbnQuc3RhcnREYXRlKTtcclxuICAgIGxldCBlbmQgPSBuZXcgRGF0ZShldmVudC5yZWN1cnJpbmdFbmREYXRlIHx8IGV2ZW50LmVuZERhdGUpO1xyXG4gICAgaWYgKCFldmVudC5hbGxEYXkpIHtcclxuICAgICAgc3RhcnQgPSBzZXQoc3RhcnQsIHsgaG91cnM6IGdldEhvdXJzKG5ldyBEYXRlKGV2ZW50LnN0YXJ0VGltZSkpLCBtaW51dGVzOiBnZXRNaW51dGVzKG5ldyBEYXRlKGV2ZW50LnN0YXJ0VGltZSkpIH0pO1xyXG4gICAgICBlbmQgPSBzZXQoZW5kLCB7IGhvdXJzOiBnZXRIb3VycyhuZXcgRGF0ZShldmVudC5lbmRUaW1lKSksIG1pbnV0ZXM6IGdldE1pbnV0ZXMobmV3IERhdGUoZXZlbnQuZW5kVGltZSkpIH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnRNaW51dGVzID0gZGlmZmVyZW5jZUluTWludXRlcyhlbmQsIHN0YXJ0KTtcclxuICAgIC8vIC0tLSBmb3IgZXZlbnRzIHRoYXQgc3RhcnQgUE0gYW5kIGVuZCBBTSBuZXh0IGRheS0tLS0tLS0tLS1cclxuICAgIGVuZCA9IGV2ZW50TWludXRlcyA8IDAgPyBhZGREYXlzKGVuZCwgMSkgOiBlbmQ7XHJcbiAgICBpZiAoZXZlbnQucmVjdXJyaW5nKSB7XHJcbiAgICAgIGV2ZW50LnJlY3VycmluZ1N0YXJ0RGF0ZSA9IHN0YXJ0O1xyXG4gICAgICBldmVudC5yZWN1cnJpbmdFbmREYXRlID0gZW5kO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZXZlbnQuc3RhcnREYXRlID0gc3RhcnQ7XHJcbiAgICAgIGV2ZW50LmVuZERhdGUgPSBlbmQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBzdGFydCwgZW5kIH07XHJcbiAgfVxyXG5cclxuICAvLyB0ZW1wIGZpeCB0byByZW1vdmUgaHRtbCB0YWdzIGZyb20gZXZlbnQgbm90ZSB1bnRpbCB3ZSBjaGFuZ2UgdGhlIG5vdGUgdGV4dCBhcmVhIGZpZWxkIHRvIGEgcmljaCB0ZXh0YXJlYVxyXG4gIHB1YmxpYyByZW1vdmVIdG1sVGFncyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmVnZXggPSAvKDwoW14+XSspPikvZ2k7XHJcbiAgICBjb25zdCBjbGVhblN0cmluZyA9IGh0bWwucmVwbGFjZShyZWdleCwgJycpO1xyXG4gICAgcmV0dXJuIGNsZWFuU3RyaW5nID8gY2xlYW5TdHJpbmcudHJpbSgpIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJlcGFyZUV2ZW50RGF0ZXMoZXZlbnREYXRhOiBJRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudERhdGEuYWxsRGF5KSB7XHJcbiAgICAgIGV2ZW50RGF0YS5zdGFydERhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKGV2ZW50RGF0YS5zdGFydERhdGUpKTtcclxuICAgICAgZXZlbnREYXRhLnN0YXJ0VGltZSA9IGV2ZW50RGF0YS5zdGFydERhdGU7XHJcbiAgICAgIGV2ZW50RGF0YS5lbmRUaW1lID0gZXZlbnREYXRhLmVuZERhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBldmVudERhdGEuZW5kRGF0ZSA9IGV2ZW50RGF0YS5zdGFydERhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RXZlbnRUaW1lcyhldmVudERhdGE6IFBhcnRpYWw8SUV2ZW50PiwgcmVjdXJyaW5nRXhjZXB0aW9uPzogSVJlY3VycmluZ0V2ZW50RXhjZXB0aW9uLCBuZXdFdmVudD86IGJvb2xlYW4pOiBJRXZlbnRUaW1lIHtcclxuICAgIGxldCBzdGFydFRpbWUgPSBuZXcgRGF0ZShyZWN1cnJpbmdFeGNlcHRpb24/LnN0YXJ0VGltZSB8fCBldmVudERhdGEuc3RhcnRUaW1lKTtcclxuICAgIGxldCBlbmRUaW1lOiBEYXRlO1xyXG4gICAgaWYgKCFldmVudERhdGEuX2lkICYmIG5ld0V2ZW50KSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0VGltZU1pbnV0ZXMgPSBnZXRNaW51dGVzKHN0YXJ0VGltZSk7XHJcbiAgICAgIHN0YXJ0VGltZSA9IHNldChzdGFydFRpbWUsIHsgbWludXRlczogc3RhcnRUaW1lTWludXRlcyA8IDMwID8gMCA6IDMwIH0pO1xyXG4gICAgICBlbmRUaW1lID0gYWRkTWludXRlcyhzdGFydFRpbWUsIDYwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVuZFRpbWUgPSBuZXcgRGF0ZShyZWN1cnJpbmdFeGNlcHRpb24/LmVuZFRpbWUgfHwgZXZlbnREYXRhLmVuZFRpbWUpO1xyXG4gICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShyZWN1cnJpbmdFeGNlcHRpb24/LnN0YXJ0RGF0ZSB8fCBldmVudERhdGEucmVjdXJyaW5nU3RhcnREYXRlIHx8IGV2ZW50RGF0YS5zdGFydERhdGUpO1xyXG4gICAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUocmVjdXJyaW5nRXhjZXB0aW9uPy5lbmREYXRlIHx8IGV2ZW50RGF0YS5yZWN1cnJpbmdFbmREYXRlIHx8IGV2ZW50RGF0YS5lbmREYXRlKTtcclxuICAgICAgaWYgKHN0YXJ0RGF0ZSAmJiAhZXZlbnREYXRhLmFsbERheSkge1xyXG4gICAgICAgIGlmICghaXNFcXVhbChzdGFydE9mRGF5KHN0YXJ0RGF0ZSksIHN0YXJ0T2ZEYXkoc3RhcnRUaW1lKSkpIHtcclxuICAgICAgICAgIHN0YXJ0VGltZSA9IHNldChzdGFydERhdGUsIHsgaG91cnM6IHN0YXJ0VGltZS5nZXRIb3VycygpLCBtaW51dGVzOiBzdGFydFRpbWUuZ2V0TWludXRlcygpIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWlzRXF1YWwoc3RhcnRPZkRheShlbmREYXRlKSwgc3RhcnRPZkRheShlbmRUaW1lKSkpIHtcclxuICAgICAgICAgIGVuZFRpbWUgPSBzZXQoZW5kRGF0ZSwgeyBob3VyczogZW5kVGltZS5nZXRIb3VycygpLCBtaW51dGVzOiBlbmRUaW1lLmdldE1pbnV0ZXMoKSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7IHN0YXJ0VGltZSwgZW5kVGltZSB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJ1aWxkVXBkYXRlZEV2ZW50KGV2ZW50OiBJRXZlbnQsIGZvcm1WYWx1ZTogSUV2ZW50KTogSUV2ZW50IHtcclxuICAgIGNvbnN0IHVwZGF0ZWRFdmVudDogSUV2ZW50ID0gZm9ybVZhbHVlO1xyXG4gICAgdGhpcy5wcmVwYXJlRXZlbnREYXRlcyh1cGRhdGVkRXZlbnQpO1xyXG4gICAgdXBkYXRlZEV2ZW50LmxvY2F0aW9uID0gdXBkYXRlZEV2ZW50LmxvY2F0aW9uIHx8IHsgYWRkcmVzczogZm9ybVZhbHVlLmFkZHJlc3MsIGNvb3JkaW5hdGVzOiBbXSB9O1xyXG4gICAgdXBkYXRlZEV2ZW50LnN0YXJ0VGltZSA9IHVwZGF0ZWRFdmVudC5zdGFydFRpbWVbJ3Nsb3RWYWx1ZSddID8gdXBkYXRlZEV2ZW50LnN0YXJ0VGltZVsnc2xvdFZhbHVlJ10gOiB1cGRhdGVkRXZlbnQuc3RhcnRUaW1lO1xyXG4gICAgdXBkYXRlZEV2ZW50LmVuZFRpbWUgPSB1cGRhdGVkRXZlbnQuZW5kVGltZVsnc2xvdFZhbHVlJ10gPyB1cGRhdGVkRXZlbnQuZW5kVGltZVsnc2xvdFZhbHVlJ10gOiB1cGRhdGVkRXZlbnQuZW5kVGltZTtcclxuICAgIGNvbnN0IGV2ZW50VGltZXMgPSB0aGlzLmdldEV2ZW50VGltZXModXBkYXRlZEV2ZW50KTtcclxuICAgIHVwZGF0ZWRFdmVudC5zdGFydFRpbWUgPSBldmVudFRpbWVzLnN0YXJ0VGltZTtcclxuICAgIHVwZGF0ZWRFdmVudC5lbmRUaW1lID0gZXZlbnRUaW1lcy5lbmRUaW1lO1xyXG4gICAgdXBkYXRlZEV2ZW50LnRpbWVab25lID0gZXZlbnQ/LnRpbWVab25lO1xyXG4gICAgdXBkYXRlZEV2ZW50LnJlY3VycmluZyA9ICEhdXBkYXRlZEV2ZW50LnJlY3VycmluZ1BhdHRlcm4/LnR5cGU7XHJcblxyXG4gICAgY29uc3Qgc3RhcnRIb3VycyA9IGdldEhvdXJzKGV2ZW50VGltZXMuc3RhcnRUaW1lKTtcclxuICAgIHVwZGF0ZWRFdmVudC5yZWN1cnJpbmdJbnN0YW5jZU5vID0gZXZlbnQucmVjdXJyaW5nSW5zdGFuY2VObztcclxuICAgIGNvbnN0IGVuZEhvdXJzID0gZ2V0SG91cnMoZXZlbnRUaW1lcy5lbmRUaW1lKTtcclxuICAgIGlmIChzdGFydEhvdXJzID4gZW5kSG91cnMpIHtcclxuICAgICAgdXBkYXRlZEV2ZW50LmVuZFRpbWUgPSBzZXQoYWRkRGF5cyhldmVudFRpbWVzLnN0YXJ0VGltZSwgMSksIHsgaG91cnM6IGVuZEhvdXJzLCBtaW51dGVzOiBnZXRNaW51dGVzKGV2ZW50VGltZXMuZW5kVGltZSkgfSk7XHJcbiAgICAgIHVwZGF0ZWRFdmVudC5lbmREYXRlID0gdXBkYXRlZEV2ZW50LmVuZFRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlZEV2ZW50LnN0YXJ0RGF0ZSA9IHNldCh1cGRhdGVkRXZlbnQuc3RhcnREYXRlLCB7IGhvdXJzOiB1cGRhdGVkRXZlbnQuc3RhcnRUaW1lPy5nZXRIb3VycygpLCBtaW51dGVzOiB1cGRhdGVkRXZlbnQuc3RhcnRUaW1lPy5nZXRNaW51dGVzKCkgfSk7XHJcbiAgICB1cGRhdGVkRXZlbnQuZW5kRGF0ZSA9IHNldCh1cGRhdGVkRXZlbnQuZW5kRGF0ZSwgeyBob3VyczogdXBkYXRlZEV2ZW50LmVuZFRpbWU/LmdldEhvdXJzKCksIG1pbnV0ZXM6IHVwZGF0ZWRFdmVudC5lbmRUaW1lPy5nZXRNaW51dGVzKCkgfSk7XHJcbiAgICBpZiAoIXVwZGF0ZWRFdmVudC5yZWN1cnJpbmdQYXR0ZXJuIHx8ICF1cGRhdGVkRXZlbnQucmVjdXJyaW5nUGF0dGVybi50eXBlKSB7XHJcbiAgICAgIGRlbGV0ZSB1cGRhdGVkRXZlbnQucmVjdXJyaW5nUGF0dGVybjtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVkRXZlbnQudGltZVpvbmUgPSB1cGRhdGVkRXZlbnQudHlwZSA9PT0gRXZlbnRUeXBlcy5NSUNST1NPRlQgPyBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUgOiB1cGRhdGVkRXZlbnQudGltZVpvbmU7XHJcblxyXG4gICAgcmV0dXJuIHVwZGF0ZWRFdmVudDtcclxuICB9XHJcbn1cclxuIl19
|