@mintplayer/ng-bootstrap 15.27.0 → 16.0.1
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/accordion/src/accordion/accordion.component.d.ts +1 -1
- package/accordion/src/accordion-tab/accordion-tab.component.d.ts +1 -1
- package/alert/src/alert/alert.component.d.ts +1 -1
- package/badge/src/badge.component.d.ts +1 -1
- package/button-type/src/button-type/button-type.directive.d.ts +1 -1
- package/calendar/src/calendar.component.d.ts +1 -1
- package/card/src/card/card.component.d.ts +1 -1
- package/card/src/card-header/card-header.component.d.ts +1 -1
- package/carousel/src/carousel/carousel.component.d.ts +1 -1
- package/code-snippet/src/code-snippet.component.d.ts +1 -1
- package/copy/src/copy.directive.d.ts +1 -1
- package/datatable/src/datatable/datatable.component.d.ts +1 -1
- package/datatable/src/datatable-column/datatable-column.directive.d.ts +1 -1
- package/datepicker/src/datepicker.component.d.ts +1 -1
- package/dock/src/dock/dock.component.d.ts +1 -1
- package/dock/src/dock-pane-renderer/dock-pane-renderer.component.d.ts +1 -1
- package/dock/src/dock-panel/dock-panel.component.d.ts +1 -1
- package/dropdown/src/dropdown/dropdown.directive.d.ts +1 -1
- package/dropdown-menu/src/dropdown-item/dropdown-item.component.d.ts +1 -1
- package/dropdown-menu/src/dropdown-menu/dropdown-menu.component.d.ts +1 -1
- package/esm2022/accordion/src/accordion/accordion.component.mjs +27 -0
- package/esm2022/accordion/src/accordion-tab/accordion-tab.component.mjs +69 -0
- package/esm2022/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +22 -0
- package/esm2022/accordion/src/accordion.module.mjs +39 -0
- package/esm2022/alert/src/alert/alert.component.mjs +42 -0
- package/esm2022/alert/src/alert-close/alert-close.component.mjs +21 -0
- package/esm2022/alert/src/alert.module.mjs +28 -0
- package/esm2022/badge/src/badge.component.mjs +31 -0
- package/esm2022/badge/src/badge.module.mjs +19 -0
- package/esm2022/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +14 -0
- package/esm2022/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +19 -0
- package/esm2022/breadcrumb/src/breadcrumb.module.mjs +20 -0
- package/esm2022/button-group/src/button-group/button-group.component.mjs +14 -0
- package/esm2022/button-group/src/button-group.module.mjs +19 -0
- package/esm2022/button-type/src/button-type/button-type.directive.mjs +31 -0
- package/esm2022/button-type/src/button-type/button-type.module.mjs +25 -0
- package/esm2022/calendar/src/calendar.component.mjs +112 -0
- package/esm2022/calendar/src/calendar.module.mjs +40 -0
- package/esm2022/calendar-month/src/pipes/month-name/month-name.module.mjs +25 -0
- package/esm2022/calendar-month/src/pipes/month-name/month-name.pipe.mjs +22 -0
- package/esm2022/calendar-month/src/pipes/weekday-name/weekday-name.module.mjs +25 -0
- package/esm2022/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +17 -0
- package/esm2022/calendar-month/src/service/calendar-month.service.mjs +95 -0
- package/esm2022/card/src/card/card.component.mjs +17 -0
- package/esm2022/card/src/card-header/card-header.component.mjs +17 -0
- package/esm2022/card/src/card.module.mjs +28 -0
- package/esm2022/carousel/src/carousel/carousel.component.mjs +138 -0
- package/esm2022/carousel/src/carousel-image/carousel-image.directive.mjs +25 -0
- package/esm2022/carousel/src/carousel.module.mjs +38 -0
- package/esm2022/close/src/close.component.mjs +22 -0
- package/esm2022/close/src/close.module.mjs +19 -0
- package/esm2022/code-snippet/src/code-snippet.component.mjs +35 -0
- package/esm2022/code-snippet/src/code-snippet.module.mjs +37 -0
- package/esm2022/context-menu/src/context-menu.directive.mjs +85 -0
- package/esm2022/context-menu/src/context-menu.module.mjs +35 -0
- package/esm2022/copy/src/copy.directive.mjs +46 -0
- package/esm2022/copy/src/copy.module.mjs +25 -0
- package/esm2022/datatable/src/datatable/datatable.component.mjs +58 -0
- package/esm2022/datatable/src/datatable-column/datatable-column.directive.mjs +20 -0
- package/esm2022/datatable/src/datatable.module.mjs +47 -0
- package/esm2022/datatable/src/row-template/row-template.directive.mjs +20 -0
- package/esm2022/datepicker/src/datepicker.component.mjs +50 -0
- package/esm2022/datepicker/src/datepicker.module.mjs +41 -0
- package/esm2022/dock/src/dock/dock.component.mjs +94 -0
- package/esm2022/dock/src/dock-pane-renderer/dock-pane-renderer.component.mjs +61 -0
- package/esm2022/dock/src/dock-panel/dock-panel.component.mjs +28 -0
- package/esm2022/dock/src/dock-panel-header/dock-panel-header.component.mjs +278 -0
- package/esm2022/dock/src/dock.module.mjs +64 -0
- package/esm2022/dock/src/services/dock/dock.service.mjs +57 -0
- package/esm2022/dropdown/src/dropdown/dropdown.directive.mjs +69 -0
- package/esm2022/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +115 -0
- package/esm2022/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +32 -0
- package/esm2022/dropdown/src/dropdown.module.mjs +44 -0
- package/esm2022/dropdown-divider/src/dropdown-divider.directive.mjs +20 -0
- package/esm2022/dropdown-divider/src/dropdown-divider.module.mjs +19 -0
- package/esm2022/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +20 -0
- package/esm2022/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +43 -0
- package/esm2022/dropdown-menu/src/dropdown-menu.module.mjs +27 -0
- package/esm2022/enhanced-paste/src/directive/enhanced-paste.directive.mjs +59 -0
- package/esm2022/enhanced-paste/src/enhanced-paste.module.mjs +25 -0
- package/esm2022/enum/src/service/enum.service.mjs +32 -0
- package/esm2022/file-upload/src/component/file-upload.component.mjs +90 -0
- package/esm2022/file-upload/src/directive/file-upload-template.directive.mjs +19 -0
- package/esm2022/file-upload/src/file-upload.module.mjs +51 -0
- package/esm2022/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +24 -0
- package/esm2022/floating-labels/src/floating-labels/floating-label/floating-label.component.mjs +21 -0
- package/esm2022/floating-labels/src/floating-labels/floating-labels.module.mjs +19 -0
- package/esm2022/for/src/for.directive.mjs +39 -0
- package/esm2022/for/src/for.module.mjs +25 -0
- package/esm2022/form/src/form/form.component.mjs +21 -0
- package/esm2022/form/src/form-control/form-control.directive.mjs +20 -0
- package/esm2022/form/src/form-group/form-group.directive.mjs +20 -0
- package/esm2022/form/src/form.module.mjs +21 -0
- package/esm2022/grid/src/component/grid.component.mjs +33 -0
- package/esm2022/grid/src/directives/col-form-label/col-form-label.directive.mjs +20 -0
- package/esm2022/grid/src/directives/column/column.directive.mjs +57 -0
- package/esm2022/grid/src/directives/row/row.directive.mjs +20 -0
- package/esm2022/grid/src/grid.module.mjs +22 -0
- package/esm2022/has-overlay/src/has-overlay/has-overlay.component.mjs +12 -0
- package/esm2022/has-overlay/src/has-overlay/has-overlay.module.mjs +19 -0
- package/esm2022/icon/src/icon.component.mjs +35 -0
- package/esm2022/icon/src/icon.module.mjs +19 -0
- package/esm2022/input-group/src/input-group/input-group.component.mjs +12 -0
- package/esm2022/input-group/src/input-group.module.mjs +19 -0
- package/esm2022/instance-of/src/directives/instanceof-case.directive.mjs +48 -0
- package/esm2022/instance-of/src/directives/instanceof-default.directive.mjs +31 -0
- package/esm2022/instance-of/src/directives/instanceof.directive.mjs +63 -0
- package/esm2022/instance-of/src/instance-of.module.mjs +38 -0
- package/esm2022/instance-of/src/pipes/instance-of.pipe.mjs +18 -0
- package/esm2022/lazy-loading/src/lazy-load/lazy-load.directive.mjs +33 -0
- package/esm2022/lazy-loading/src/lazy-loading.module.mjs +25 -0
- package/esm2022/let/directive/let.directive.mjs +39 -0
- package/esm2022/let/let.module.mjs +25 -0
- package/esm2022/lib/pipes/font-color/font-color.module.mjs +25 -0
- package/esm2022/lib/pipes/font-color/font-color.pipe.mjs +27 -0
- package/esm2022/lib/pipes/in-list/in-list.module.mjs +25 -0
- package/esm2022/lib/pipes/in-list/in-list.pipe.mjs +17 -0
- package/esm2022/lib/pipes/uc-first/uc-first.module.mjs +25 -0
- package/esm2022/lib/pipes/uc-first/uc-first.pipe.mjs +17 -0
- package/esm2022/list-group/src/list-group/list-group.component.mjs +20 -0
- package/esm2022/list-group/src/list-group-item/list-group-item.component.mjs +18 -0
- package/esm2022/list-group/src/list-group.module.mjs +28 -0
- package/esm2022/markdown/src/bold/bold.pipe.mjs +31 -0
- package/esm2022/markdown/src/italic/italic.pipe.mjs +31 -0
- package/esm2022/markdown/src/markdown.module.mjs +40 -0
- package/esm2022/markdown/src/strikethrough/strikethrough.pipe.mjs +31 -0
- package/esm2022/markdown/src/underline/underline.pipe.mjs +31 -0
- package/esm2022/modal/src/components/modal/modal.component.mjs +22 -0
- package/esm2022/modal/src/components/modal-host/modal-host.component.mjs +84 -0
- package/esm2022/modal/src/directives/modal/modal.directive.mjs +19 -0
- package/esm2022/modal/src/directives/modal-body/modal-body.directive.mjs +20 -0
- package/esm2022/modal/src/directives/modal-close/modal-close.directive.mjs +25 -0
- package/esm2022/modal/src/directives/modal-footer/modal-footer.directive.mjs +20 -0
- package/esm2022/modal/src/directives/modal-header/modal-header.directive.mjs +20 -0
- package/esm2022/modal/src/modal.module.mjs +76 -0
- package/esm2022/multiselect/src/component/multiselect.component.mjs +46 -0
- package/esm2022/multiselect/src/directives/button-template/button-template.directive.mjs +19 -0
- package/esm2022/multiselect/src/directives/footer-template/footer-template.directive.mjs +19 -0
- package/esm2022/multiselect/src/directives/header-template/header-template.directive.mjs +19 -0
- package/esm2022/multiselect/src/multiselect.module.mjs +64 -0
- package/esm2022/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +39 -0
- package/esm2022/navbar/src/expand-button/expand-button.directive.mjs +19 -0
- package/esm2022/navbar/src/nav-link/nav-link.directive.mjs +35 -0
- package/esm2022/navbar/src/navbar/navbar.component.mjs +142 -0
- package/esm2022/navbar/src/navbar-brand/navbar-brand.component.mjs +21 -0
- package/esm2022/navbar/src/navbar-content/navbar-content.directive.mjs +73 -0
- package/esm2022/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +144 -0
- package/esm2022/navbar/src/navbar-item/navbar-item.component.mjs +105 -0
- package/esm2022/navbar/src/navbar-nav/navbar-nav.component.mjs +70 -0
- package/esm2022/navbar/src/navbar-toggler/navbar-toggler.component.mjs +48 -0
- package/esm2022/navbar/src/navbar.module.mjs +92 -0
- package/esm2022/navigation-lock/src/directive/navigation-lock.directive.mjs +95 -0
- package/esm2022/navigation-lock/src/guard/navigation-lock.guard.mjs +23 -0
- package/esm2022/navigation-lock/src/navigation-lock.module.mjs +29 -0
- package/esm2022/no-noscript/src/no-noscript/no-noscript.directive.mjs +28 -0
- package/esm2022/no-noscript/src/no-noscript.module.mjs +19 -0
- package/esm2022/offcanvas/src/components/offcanvas/offcanvas.component.mjs +112 -0
- package/esm2022/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +19 -0
- package/esm2022/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +15 -0
- package/esm2022/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +144 -0
- package/esm2022/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +25 -0
- package/esm2022/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +19 -0
- package/esm2022/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +72 -0
- package/esm2022/offcanvas/src/offcanvas.module.mjs +76 -0
- package/esm2022/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +30 -0
- package/esm2022/ordinal-number/src/ordinal-number.module.mjs +25 -0
- package/esm2022/pagination/src/component/pagination/pagination.component.mjs +202 -0
- package/esm2022/pagination/src/pagination.module.mjs +25 -0
- package/esm2022/placeholder/src/placeholder/placeholder.component.mjs +27 -0
- package/esm2022/placeholder/src/placeholder-field/placeholder-field.directive.mjs +47 -0
- package/esm2022/placeholder/src/placeholder.module.mjs +20 -0
- package/esm2022/popover/src/component/popover.component.mjs +58 -0
- package/esm2022/popover/src/directives/popover/popover.directive.mjs +133 -0
- package/esm2022/popover/src/directives/popover-body/popover-body.directive.mjs +20 -0
- package/esm2022/popover/src/directives/popover-header/popover-header.directive.mjs +20 -0
- package/esm2022/popover/src/popover.module.mjs +37 -0
- package/esm2022/progress-bar/src/progress/progress.component.mjs +32 -0
- package/esm2022/progress-bar/src/progress-bar/progress-bar.component.mjs +122 -0
- package/esm2022/progress-bar/src/progress-bar.module.mjs +30 -0
- package/esm2022/range/src/component/range.component.mjs +26 -0
- package/esm2022/range/src/range.module.mjs +20 -0
- package/esm2022/range/src/value-accessor/range-value-accessor.mjs +63 -0
- package/esm2022/rating/src/component/rating.component.mjs +76 -0
- package/esm2022/rating/src/rating.module.mjs +25 -0
- package/esm2022/resizable/src/resizable/resizable.component.mjs +99 -0
- package/esm2022/resizable/src/resizable.module.mjs +30 -0
- package/esm2022/resizable/src/resize-glyph/resize-glyph.directive.mjs +220 -0
- package/esm2022/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +86 -0
- package/esm2022/scheduler/src/components/scheduler/scheduler.component.mjs +540 -0
- package/esm2022/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +17 -0
- package/esm2022/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +21 -0
- package/esm2022/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +21 -0
- package/esm2022/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +23 -0
- package/esm2022/scheduler/src/scheduler.module.mjs +46 -0
- package/esm2022/scheduler/src/services/timeline/timeline.service.mjs +66 -0
- package/esm2022/scrollspy/src/component/scrollspy.component.mjs +91 -0
- package/esm2022/scrollspy/src/directives/scrollspy.directive.mjs +17 -0
- package/esm2022/scrollspy/src/scrollspy.module.mjs +30 -0
- package/esm2022/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +32 -0
- package/esm2022/select/src/component/select.component.mjs +86 -0
- package/esm2022/select/src/select.module.mjs +32 -0
- package/esm2022/select/src/value-accessors/select-value-accessor.mjs +169 -0
- package/esm2022/select2/src/component/select2.component.mjs +86 -0
- package/esm2022/select2/src/directive/item-template.directive.mjs +20 -0
- package/esm2022/select2/src/select2.module.mjs +50 -0
- package/esm2022/snackbar/src/component/snackbar.component.mjs +37 -0
- package/esm2022/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +28 -0
- package/esm2022/snackbar/src/service/snackbar.service.mjs +46 -0
- package/esm2022/snackbar/src/snackbar.module.mjs +44 -0
- package/esm2022/spinner/src/spinner.component.mjs +44 -0
- package/esm2022/spinner/src/spinner.module.mjs +19 -0
- package/esm2022/splitter/src/element-at/element-at.pipe.mjs +22 -0
- package/esm2022/splitter/src/split-panel/split-panel.component.mjs +19 -0
- package/esm2022/splitter/src/splitter/splitter.component.mjs +207 -0
- package/esm2022/splitter/src/splitter.module.mjs +24 -0
- package/esm2022/tab-control/src/tab-control/tab-control.component.mjs +133 -0
- package/esm2022/tab-control/src/tab-control.module.mjs +47 -0
- package/esm2022/tab-control/src/tab-page/tab-page.component.mjs +31 -0
- package/esm2022/tab-control/src/tab-page-header/tab-page-header.directive.mjs +17 -0
- package/esm2022/table/src/component/table.component.mjs +48 -0
- package/esm2022/table/src/table.module.mjs +19 -0
- package/esm2022/timepicker/src/timepicker.component.mjs +118 -0
- package/esm2022/timepicker/src/timepicker.module.mjs +61 -0
- package/esm2022/toast/src/components/toast/toast.component.mjs +17 -0
- package/esm2022/toast/src/components/toast-body/toast-body.component.mjs +21 -0
- package/esm2022/toast/src/components/toast-container/toast-container.component.mjs +24 -0
- package/esm2022/toast/src/components/toast-header/toast-header.component.mjs +18 -0
- package/esm2022/toast/src/directives/toast-close/toast-close.directive.mjs +33 -0
- package/esm2022/toast/src/pipes/add-properties.pipe.mjs +18 -0
- package/esm2022/toast/src/services/toast/toast.service.mjs +57 -0
- package/esm2022/toast/src/toast.module.mjs +78 -0
- package/esm2022/toggle-button/src/component/toggle-button.component.mjs +159 -0
- package/esm2022/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +20 -0
- package/esm2022/toggle-button/src/toggle-button.module.mjs +35 -0
- package/esm2022/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +109 -0
- package/esm2022/tooltip/src/component/tooltip.component.mjs +39 -0
- package/esm2022/tooltip/src/directive/tooltip.directive.mjs +110 -0
- package/esm2022/tooltip/src/tooltip.module.mjs +36 -0
- package/esm2022/treeview/src/treeview/treeview.component.mjs +47 -0
- package/esm2022/treeview/src/treeview-item/treeview-item.component.mjs +28 -0
- package/esm2022/treeview/src/treeview.module.mjs +22 -0
- package/esm2022/typeahead/src/typeahead.component.mjs +83 -0
- package/esm2022/typeahead/src/typeahead.module.mjs +49 -0
- package/esm2022/user-agent/src/directive/user-agent.directive.mjs +99 -0
- package/esm2022/user-agent/src/user-agent.module.mjs +25 -0
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +144 -0
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +87 -0
- package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +52 -0
- package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +51 -0
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +35 -0
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +58 -0
- package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +175 -0
- package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +153 -0
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-card.mjs +60 -0
- package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +194 -0
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-close.mjs +43 -0
- package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +73 -0
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +121 -0
- package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +72 -0
- package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +172 -0
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +93 -0
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +598 -0
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +41 -0
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +87 -0
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +243 -0
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +85 -0
- package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +38 -0
- package/fesm2022/mintplayer-ng-bootstrap-enum.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +175 -0
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +41 -0
- package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-for.mjs +66 -0
- package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-form.mjs +76 -0
- package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +141 -0
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +33 -0
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-icon.mjs +56 -0
- package/fesm2022/mintplayer-ng-bootstrap-icon.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +33 -0
- package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +218 -0
- package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-lazy-loading.mjs +60 -0
- package/fesm2022/mintplayer-ng-bootstrap-lazy-loading.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-let.mjs +66 -0
- package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +63 -0
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +147 -0
- package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +259 -0
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +151 -0
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +724 -0
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +145 -0
- package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +48 -0
- package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +452 -0
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +56 -0
- package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +229 -0
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +89 -0
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +256 -0
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +182 -0
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs +105 -0
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +103 -0
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +346 -0
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +813 -0
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +161 -0
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs +282 -0
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +152 -0
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-snackbar.mjs +144 -0
- package/fesm2022/mintplayer-ng-bootstrap-snackbar.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +65 -0
- package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs +268 -0
- package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +214 -0
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs +69 -0
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +181 -0
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +236 -0
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +313 -0
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +181 -0
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +91 -0
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +134 -0
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +125 -0
- package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap.mjs +144 -0
- package/fesm2022/mintplayer-ng-bootstrap.mjs.map +1 -0
- package/file-upload/src/component/file-upload.component.d.ts +1 -1
- package/for/src/for.directive.d.ts +1 -1
- package/grid/src/component/grid.component.d.ts +1 -1
- package/grid/src/directives/column/column.directive.d.ts +1 -1
- package/icon/src/icon.component.d.ts +1 -1
- package/instance-of/src/directives/instanceof-case.directive.d.ts +1 -1
- package/instance-of/src/directives/instanceof.directive.d.ts +1 -1
- package/lazy-loading/src/lazy-load/lazy-load.directive.d.ts +1 -1
- package/let/directive/let.directive.d.ts +1 -1
- package/modal/src/components/modal-host/modal-host.component.d.ts +1 -1
- package/multiselect/src/component/multiselect.component.d.ts +1 -1
- package/navbar/src/navbar/navbar.component.d.ts +1 -1
- package/navbar/src/navbar-brand/navbar-brand.component.d.ts +1 -1
- package/navbar/src/navbar-content/navbar-content.directive.d.ts +1 -1
- package/navbar/src/navbar-dropdown/navbar-dropdown.component.d.ts +1 -1
- package/navbar/src/navbar-nav/navbar-nav.component.d.ts +1 -1
- package/navbar/src/navbar-toggler/navbar-toggler.component.d.ts +1 -1
- package/navigation-lock/src/directive/navigation-lock.directive.d.ts +1 -1
- package/navigation-lock/src/guard/navigation-lock.guard.d.ts +2 -2
- package/offcanvas/src/components/offcanvas/offcanvas.component.d.ts +1 -1
- package/offcanvas/src/components/offcanvas-body/offcanvas-body.component.d.ts +1 -1
- package/offcanvas/src/components/offcanvas-host/offcanvas-host.component.d.ts +1 -1
- package/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.d.ts +1 -1
- package/package.json +218 -353
- package/pagination/src/component/pagination/pagination.component.d.ts +1 -1
- package/placeholder/src/placeholder/placeholder.component.d.ts +1 -1
- package/popover/src/component/popover.component.d.ts +1 -1
- package/popover/src/directives/popover/popover.directive.d.ts +1 -1
- package/progress-bar/src/progress/progress.component.d.ts +1 -1
- package/progress-bar/src/progress-bar/progress-bar.component.d.ts +1 -1
- package/range/src/component/range.component.d.ts +1 -1
- package/rating/src/component/rating.component.d.ts +1 -1
- package/resizable/src/resizable/resizable.component.d.ts +1 -1
- package/resizable/src/resize-glyph/resize-glyph.directive.d.ts +1 -1
- package/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.d.ts +1 -1
- package/scheduler/src/components/scheduler/scheduler.component.d.ts +1 -1
- package/select/src/component/select.component.d.ts +1 -1
- package/select/src/value-accessors/select-value-accessor.d.ts +2 -2
- package/select2/src/component/select2.component.d.ts +1 -1
- package/snackbar/src/directives/snackbar-close/snackbar-close.directive.d.ts +1 -1
- package/spinner/src/spinner.component.d.ts +1 -1
- package/splitter/src/splitter/splitter.component.d.ts +1 -1
- package/tab-control/src/tab-control/tab-control.component.d.ts +1 -1
- package/tab-control/src/tab-page/tab-page.component.d.ts +1 -1
- package/table/src/component/table.component.d.ts +1 -1
- package/timepicker/src/timepicker.component.d.ts +1 -1
- package/toast/src/components/toast/toast.component.d.ts +1 -1
- package/toast/src/directives/toast-close/toast-close.directive.d.ts +1 -1
- package/toggle-button/src/component/toggle-button.component.d.ts +1 -1
- package/tooltip/src/component/tooltip.component.d.ts +1 -1
- package/tooltip/src/directive/tooltip.directive.d.ts +1 -1
- package/treeview/src/treeview/treeview.component.d.ts +1 -1
- package/typeahead/src/typeahead.component.d.ts +1 -1
- package/esm2020/accordion/src/accordion/accordion.component.mjs +0 -26
- package/esm2020/accordion/src/accordion-tab/accordion-tab.component.mjs +0 -68
- package/esm2020/accordion/src/accordion-tab-header/accordion-tab-header.component.mjs +0 -21
- package/esm2020/accordion/src/accordion.module.mjs +0 -38
- package/esm2020/alert/src/alert/alert.component.mjs +0 -41
- package/esm2020/alert/src/alert-close/alert-close.component.mjs +0 -20
- package/esm2020/alert/src/alert.module.mjs +0 -27
- package/esm2020/badge/src/badge.component.mjs +0 -30
- package/esm2020/badge/src/badge.module.mjs +0 -18
- package/esm2020/breadcrumb/src/breadcrumb/breadcrumb.component.mjs +0 -13
- package/esm2020/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.mjs +0 -18
- package/esm2020/breadcrumb/src/breadcrumb.module.mjs +0 -19
- package/esm2020/button-group/src/button-group/button-group.component.mjs +0 -13
- package/esm2020/button-group/src/button-group.module.mjs +0 -18
- package/esm2020/button-type/src/button-type/button-type.directive.mjs +0 -30
- package/esm2020/button-type/src/button-type/button-type.module.mjs +0 -24
- package/esm2020/calendar/src/calendar.component.mjs +0 -111
- package/esm2020/calendar/src/calendar.module.mjs +0 -39
- package/esm2020/calendar-month/src/pipes/month-name/month-name.module.mjs +0 -24
- package/esm2020/calendar-month/src/pipes/month-name/month-name.pipe.mjs +0 -21
- package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.module.mjs +0 -24
- package/esm2020/calendar-month/src/pipes/weekday-name/weekday-name.pipe.mjs +0 -16
- package/esm2020/calendar-month/src/service/calendar-month.service.mjs +0 -94
- package/esm2020/card/src/card/card.component.mjs +0 -16
- package/esm2020/card/src/card-header/card-header.component.mjs +0 -16
- package/esm2020/card/src/card.module.mjs +0 -27
- package/esm2020/carousel/src/carousel/carousel.component.mjs +0 -137
- package/esm2020/carousel/src/carousel-image/carousel-image.directive.mjs +0 -24
- package/esm2020/carousel/src/carousel.module.mjs +0 -37
- package/esm2020/close/src/close.component.mjs +0 -21
- package/esm2020/close/src/close.module.mjs +0 -18
- package/esm2020/code-snippet/src/code-snippet.component.mjs +0 -34
- package/esm2020/code-snippet/src/code-snippet.module.mjs +0 -36
- package/esm2020/context-menu/src/context-menu.directive.mjs +0 -84
- package/esm2020/context-menu/src/context-menu.module.mjs +0 -34
- package/esm2020/copy/src/copy.directive.mjs +0 -45
- package/esm2020/copy/src/copy.module.mjs +0 -24
- package/esm2020/datatable/src/datatable/datatable.component.mjs +0 -57
- package/esm2020/datatable/src/datatable-column/datatable-column.directive.mjs +0 -19
- package/esm2020/datatable/src/datatable.module.mjs +0 -46
- package/esm2020/datatable/src/row-template/row-template.directive.mjs +0 -19
- package/esm2020/datepicker/src/datepicker.component.mjs +0 -49
- package/esm2020/datepicker/src/datepicker.module.mjs +0 -40
- package/esm2020/dock/src/dock/dock.component.mjs +0 -93
- package/esm2020/dock/src/dock-pane-renderer/dock-pane-renderer.component.mjs +0 -60
- package/esm2020/dock/src/dock-panel/dock-panel.component.mjs +0 -27
- package/esm2020/dock/src/dock-panel-header/dock-panel-header.component.mjs +0 -277
- package/esm2020/dock/src/dock.module.mjs +0 -63
- package/esm2020/dock/src/services/dock/dock.service.mjs +0 -56
- package/esm2020/dropdown/src/dropdown/dropdown.directive.mjs +0 -68
- package/esm2020/dropdown/src/dropdown-menu/dropdown-menu.directive.mjs +0 -114
- package/esm2020/dropdown/src/dropdown-toggle/dropdown-toggle.directive.mjs +0 -31
- package/esm2020/dropdown/src/dropdown.module.mjs +0 -43
- package/esm2020/dropdown-divider/src/dropdown-divider.directive.mjs +0 -19
- package/esm2020/dropdown-divider/src/dropdown-divider.module.mjs +0 -18
- package/esm2020/dropdown-menu/src/dropdown-item/dropdown-item.component.mjs +0 -19
- package/esm2020/dropdown-menu/src/dropdown-menu/dropdown-menu.component.mjs +0 -42
- package/esm2020/dropdown-menu/src/dropdown-menu.module.mjs +0 -26
- package/esm2020/enhanced-paste/src/directive/enhanced-paste.directive.mjs +0 -58
- package/esm2020/enhanced-paste/src/enhanced-paste.module.mjs +0 -24
- package/esm2020/enum/src/service/enum.service.mjs +0 -31
- package/esm2020/file-upload/src/component/file-upload.component.mjs +0 -89
- package/esm2020/file-upload/src/directive/file-upload-template.directive.mjs +0 -18
- package/esm2020/file-upload/src/file-upload.module.mjs +0 -50
- package/esm2020/file-upload/src/pipes/format-bytes/format-bytes.pipe.mjs +0 -23
- package/esm2020/floating-labels/src/floating-labels/floating-label/floating-label.component.mjs +0 -20
- package/esm2020/floating-labels/src/floating-labels/floating-labels.module.mjs +0 -18
- package/esm2020/for/src/for.directive.mjs +0 -38
- package/esm2020/for/src/for.module.mjs +0 -24
- package/esm2020/form/src/form/form.component.mjs +0 -20
- package/esm2020/form/src/form-control/form-control.directive.mjs +0 -19
- package/esm2020/form/src/form-group/form-group.directive.mjs +0 -19
- package/esm2020/form/src/form.module.mjs +0 -20
- package/esm2020/grid/src/component/grid.component.mjs +0 -32
- package/esm2020/grid/src/directives/col-form-label/col-form-label.directive.mjs +0 -19
- package/esm2020/grid/src/directives/column/column.directive.mjs +0 -56
- package/esm2020/grid/src/directives/row/row.directive.mjs +0 -19
- package/esm2020/grid/src/grid.module.mjs +0 -21
- package/esm2020/has-overlay/src/has-overlay/has-overlay.component.mjs +0 -11
- package/esm2020/has-overlay/src/has-overlay/has-overlay.module.mjs +0 -18
- package/esm2020/icon/src/icon.component.mjs +0 -34
- package/esm2020/icon/src/icon.module.mjs +0 -18
- package/esm2020/input-group/src/input-group/input-group.component.mjs +0 -11
- package/esm2020/input-group/src/input-group.module.mjs +0 -18
- package/esm2020/instance-of/src/directives/instanceof-case.directive.mjs +0 -47
- package/esm2020/instance-of/src/directives/instanceof-default.directive.mjs +0 -30
- package/esm2020/instance-of/src/directives/instanceof.directive.mjs +0 -62
- package/esm2020/instance-of/src/instance-of.module.mjs +0 -37
- package/esm2020/instance-of/src/pipes/instance-of.pipe.mjs +0 -17
- package/esm2020/lazy-loading/src/lazy-load/lazy-load.directive.mjs +0 -32
- package/esm2020/lazy-loading/src/lazy-loading.module.mjs +0 -24
- package/esm2020/let/directive/let.directive.mjs +0 -38
- package/esm2020/let/let.module.mjs +0 -24
- package/esm2020/lib/pipes/font-color/font-color.module.mjs +0 -24
- package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +0 -26
- package/esm2020/lib/pipes/in-list/in-list.module.mjs +0 -24
- package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +0 -16
- package/esm2020/lib/pipes/uc-first/uc-first.module.mjs +0 -24
- package/esm2020/lib/pipes/uc-first/uc-first.pipe.mjs +0 -16
- package/esm2020/list-group/src/list-group/list-group.component.mjs +0 -19
- package/esm2020/list-group/src/list-group-item/list-group-item.component.mjs +0 -17
- package/esm2020/list-group/src/list-group.module.mjs +0 -27
- package/esm2020/markdown/src/bold/bold.pipe.mjs +0 -30
- package/esm2020/markdown/src/italic/italic.pipe.mjs +0 -30
- package/esm2020/markdown/src/markdown.module.mjs +0 -39
- package/esm2020/markdown/src/strikethrough/strikethrough.pipe.mjs +0 -30
- package/esm2020/markdown/src/underline/underline.pipe.mjs +0 -30
- package/esm2020/modal/src/components/modal/modal.component.mjs +0 -21
- package/esm2020/modal/src/components/modal-host/modal-host.component.mjs +0 -83
- package/esm2020/modal/src/directives/modal/modal.directive.mjs +0 -18
- package/esm2020/modal/src/directives/modal-body/modal-body.directive.mjs +0 -19
- package/esm2020/modal/src/directives/modal-close/modal-close.directive.mjs +0 -24
- package/esm2020/modal/src/directives/modal-footer/modal-footer.directive.mjs +0 -19
- package/esm2020/modal/src/directives/modal-header/modal-header.directive.mjs +0 -19
- package/esm2020/modal/src/modal.module.mjs +0 -75
- package/esm2020/multiselect/src/component/multiselect.component.mjs +0 -45
- package/esm2020/multiselect/src/directives/button-template/button-template.directive.mjs +0 -18
- package/esm2020/multiselect/src/directives/footer-template/footer-template.directive.mjs +0 -18
- package/esm2020/multiselect/src/directives/header-template/header-template.directive.mjs +0 -18
- package/esm2020/multiselect/src/multiselect.module.mjs +0 -63
- package/esm2020/navbar/src/dropdown-toggle/dropdown-toggle.directive.mjs +0 -38
- package/esm2020/navbar/src/expand-button/expand-button.directive.mjs +0 -18
- package/esm2020/navbar/src/nav-link/nav-link.directive.mjs +0 -34
- package/esm2020/navbar/src/navbar/navbar.component.mjs +0 -141
- package/esm2020/navbar/src/navbar-brand/navbar-brand.component.mjs +0 -20
- package/esm2020/navbar/src/navbar-content/navbar-content.directive.mjs +0 -72
- package/esm2020/navbar/src/navbar-dropdown/navbar-dropdown.component.mjs +0 -143
- package/esm2020/navbar/src/navbar-item/navbar-item.component.mjs +0 -104
- package/esm2020/navbar/src/navbar-nav/navbar-nav.component.mjs +0 -69
- package/esm2020/navbar/src/navbar-toggler/navbar-toggler.component.mjs +0 -47
- package/esm2020/navbar/src/navbar.module.mjs +0 -91
- package/esm2020/navigation-lock/src/directive/navigation-lock.directive.mjs +0 -94
- package/esm2020/navigation-lock/src/guard/navigation-lock.guard.mjs +0 -22
- package/esm2020/navigation-lock/src/navigation-lock.module.mjs +0 -28
- package/esm2020/no-noscript/src/no-noscript/no-noscript.directive.mjs +0 -27
- package/esm2020/no-noscript/src/no-noscript.module.mjs +0 -18
- package/esm2020/offcanvas/src/components/offcanvas/offcanvas.component.mjs +0 -111
- package/esm2020/offcanvas/src/components/offcanvas-body/offcanvas-body.component.mjs +0 -18
- package/esm2020/offcanvas/src/components/offcanvas-header/offcanvas-header.component.mjs +0 -14
- package/esm2020/offcanvas/src/components/offcanvas-host/offcanvas-host.component.mjs +0 -143
- package/esm2020/offcanvas/src/directives/offcanvas-close/offcanvas-close.directive.mjs +0 -24
- package/esm2020/offcanvas/src/directives/offcanvas-content/offcanvas-content.directive.mjs +0 -18
- package/esm2020/offcanvas/src/directives/offcanvas-push/offcanvas-push.directive.mjs +0 -71
- package/esm2020/offcanvas/src/offcanvas.module.mjs +0 -75
- package/esm2020/ordinal-number/src/ordinal-number/ordinal-number.pipe.mjs +0 -29
- package/esm2020/ordinal-number/src/ordinal-number.module.mjs +0 -24
- package/esm2020/pagination/src/component/pagination/pagination.component.mjs +0 -201
- package/esm2020/pagination/src/pagination.module.mjs +0 -24
- package/esm2020/placeholder/src/placeholder/placeholder.component.mjs +0 -26
- package/esm2020/placeholder/src/placeholder-field/placeholder-field.directive.mjs +0 -46
- package/esm2020/placeholder/src/placeholder.module.mjs +0 -19
- package/esm2020/popover/src/component/popover.component.mjs +0 -57
- package/esm2020/popover/src/directives/popover/popover.directive.mjs +0 -132
- package/esm2020/popover/src/directives/popover-body/popover-body.directive.mjs +0 -19
- package/esm2020/popover/src/directives/popover-header/popover-header.directive.mjs +0 -19
- package/esm2020/popover/src/popover.module.mjs +0 -36
- package/esm2020/progress-bar/src/progress/progress.component.mjs +0 -31
- package/esm2020/progress-bar/src/progress-bar/progress-bar.component.mjs +0 -121
- package/esm2020/progress-bar/src/progress-bar.module.mjs +0 -29
- package/esm2020/range/src/component/range.component.mjs +0 -25
- package/esm2020/range/src/range.module.mjs +0 -19
- package/esm2020/range/src/value-accessor/range-value-accessor.mjs +0 -62
- package/esm2020/rating/src/component/rating.component.mjs +0 -75
- package/esm2020/rating/src/rating.module.mjs +0 -24
- package/esm2020/resizable/src/resizable/resizable.component.mjs +0 -98
- package/esm2020/resizable/src/resizable.module.mjs +0 -29
- package/esm2020/resizable/src/resize-glyph/resize-glyph.directive.mjs +0 -219
- package/esm2020/scheduler/src/components/resource-group-presenter/resource-group-presenter.component.mjs +0 -85
- package/esm2020/scheduler/src/components/scheduler/scheduler.component.mjs +0 -539
- package/esm2020/scheduler/src/pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe.mjs +0 -16
- package/esm2020/scheduler/src/pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe.mjs +0 -20
- package/esm2020/scheduler/src/pipes/date-offset/date-offset.pipe.mjs +0 -20
- package/esm2020/scheduler/src/pipes/day-of-week/day-of-week.pipe.mjs +0 -22
- package/esm2020/scheduler/src/scheduler.module.mjs +0 -45
- package/esm2020/scheduler/src/services/timeline/timeline.service.mjs +0 -65
- package/esm2020/scrollspy/src/component/scrollspy.component.mjs +0 -90
- package/esm2020/scrollspy/src/directives/scrollspy.directive.mjs +0 -16
- package/esm2020/scrollspy/src/scrollspy.module.mjs +0 -29
- package/esm2020/scrollspy/src/services/scroll-offset/scroll-offset.service.mjs +0 -31
- package/esm2020/select/src/component/select.component.mjs +0 -85
- package/esm2020/select/src/select.module.mjs +0 -31
- package/esm2020/select/src/value-accessors/select-value-accessor.mjs +0 -167
- package/esm2020/select2/src/component/select2.component.mjs +0 -85
- package/esm2020/select2/src/directive/item-template.directive.mjs +0 -19
- package/esm2020/select2/src/select2.module.mjs +0 -49
- package/esm2020/snackbar/src/component/snackbar.component.mjs +0 -36
- package/esm2020/snackbar/src/directives/snackbar-close/snackbar-close.directive.mjs +0 -27
- package/esm2020/snackbar/src/service/snackbar.service.mjs +0 -45
- package/esm2020/snackbar/src/snackbar.module.mjs +0 -43
- package/esm2020/spinner/src/spinner.component.mjs +0 -43
- package/esm2020/spinner/src/spinner.module.mjs +0 -18
- package/esm2020/splitter/src/element-at/element-at.pipe.mjs +0 -21
- package/esm2020/splitter/src/split-panel/split-panel.component.mjs +0 -18
- package/esm2020/splitter/src/splitter/splitter.component.mjs +0 -206
- package/esm2020/splitter/src/splitter.module.mjs +0 -23
- package/esm2020/tab-control/src/tab-control/tab-control.component.mjs +0 -132
- package/esm2020/tab-control/src/tab-control.module.mjs +0 -46
- package/esm2020/tab-control/src/tab-page/tab-page.component.mjs +0 -30
- package/esm2020/tab-control/src/tab-page-header/tab-page-header.directive.mjs +0 -16
- package/esm2020/table/src/component/table.component.mjs +0 -47
- package/esm2020/table/src/table.module.mjs +0 -18
- package/esm2020/timepicker/src/timepicker.component.mjs +0 -117
- package/esm2020/timepicker/src/timepicker.module.mjs +0 -60
- package/esm2020/toast/src/components/toast/toast.component.mjs +0 -16
- package/esm2020/toast/src/components/toast-body/toast-body.component.mjs +0 -20
- package/esm2020/toast/src/components/toast-container/toast-container.component.mjs +0 -23
- package/esm2020/toast/src/components/toast-header/toast-header.component.mjs +0 -17
- package/esm2020/toast/src/directives/toast-close/toast-close.directive.mjs +0 -32
- package/esm2020/toast/src/pipes/add-properties.pipe.mjs +0 -17
- package/esm2020/toast/src/services/toast/toast.service.mjs +0 -56
- package/esm2020/toast/src/toast.module.mjs +0 -77
- package/esm2020/toggle-button/src/component/toggle-button.component.mjs +0 -158
- package/esm2020/toggle-button/src/directives/toggle-button-group/toggle-button-group.directive.mjs +0 -19
- package/esm2020/toggle-button/src/toggle-button.module.mjs +0 -34
- package/esm2020/toggle-button/src/value-accessor/toggle-button-value-accessor.mjs +0 -108
- package/esm2020/tooltip/src/component/tooltip.component.mjs +0 -38
- package/esm2020/tooltip/src/directive/tooltip.directive.mjs +0 -109
- package/esm2020/tooltip/src/tooltip.module.mjs +0 -35
- package/esm2020/treeview/src/treeview/treeview.component.mjs +0 -46
- package/esm2020/treeview/src/treeview-item/treeview-item.component.mjs +0 -27
- package/esm2020/treeview/src/treeview.module.mjs +0 -21
- package/esm2020/typeahead/src/typeahead.component.mjs +0 -82
- package/esm2020/typeahead/src/typeahead.module.mjs +0 -48
- package/esm2020/user-agent/src/directive/user-agent.directive.mjs +0 -98
- package/esm2020/user-agent/src/user-agent.module.mjs +0 -24
- package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs +0 -144
- package/fesm2015/mintplayer-ng-bootstrap-accordion.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-alert.mjs +0 -87
- package/fesm2015/mintplayer-ng-bootstrap-alert.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-badge.mjs +0 -52
- package/fesm2015/mintplayer-ng-bootstrap-badge.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -51
- package/fesm2015/mintplayer-ng-bootstrap-breadcrumb.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs +0 -35
- package/fesm2015/mintplayer-ng-bootstrap-button-group.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs +0 -58
- package/fesm2015/mintplayer-ng-bootstrap-button-type.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs +0 -178
- package/fesm2015/mintplayer-ng-bootstrap-calendar-month.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs +0 -153
- package/fesm2015/mintplayer-ng-bootstrap-calendar.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-card.mjs +0 -60
- package/fesm2015/mintplayer-ng-bootstrap-card.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs +0 -196
- package/fesm2015/mintplayer-ng-bootstrap-carousel.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-close.mjs +0 -43
- package/fesm2015/mintplayer-ng-bootstrap-close.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs +0 -73
- package/fesm2015/mintplayer-ng-bootstrap-code-snippet.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs +0 -123
- package/fesm2015/mintplayer-ng-bootstrap-context-menu.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-copy.mjs +0 -75
- package/fesm2015/mintplayer-ng-bootstrap-copy.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs +0 -171
- package/fesm2015/mintplayer-ng-bootstrap-datatable.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs +0 -93
- package/fesm2015/mintplayer-ng-bootstrap-datepicker.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-dock.mjs +0 -601
- package/fesm2015/mintplayer-ng-bootstrap-dock.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -41
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -89
- package/fesm2015/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs +0 -248
- package/fesm2015/mintplayer-ng-bootstrap-dropdown.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -85
- package/fesm2015/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-enum.mjs +0 -38
- package/fesm2015/mintplayer-ng-bootstrap-enum.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs +0 -175
- package/fesm2015/mintplayer-ng-bootstrap-file-upload.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs +0 -43
- package/fesm2015/mintplayer-ng-bootstrap-floating-labels.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-for.mjs +0 -66
- package/fesm2015/mintplayer-ng-bootstrap-for.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-form.mjs +0 -76
- package/fesm2015/mintplayer-ng-bootstrap-form.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-grid.mjs +0 -141
- package/fesm2015/mintplayer-ng-bootstrap-grid.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs +0 -33
- package/fesm2015/mintplayer-ng-bootstrap-has-overlay.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-icon.mjs +0 -56
- package/fesm2015/mintplayer-ng-bootstrap-icon.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs +0 -33
- package/fesm2015/mintplayer-ng-bootstrap-input-group.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-instance-of.mjs +0 -222
- package/fesm2015/mintplayer-ng-bootstrap-instance-of.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs +0 -60
- package/fesm2015/mintplayer-ng-bootstrap-lazy-loading.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-let.mjs +0 -66
- package/fesm2015/mintplayer-ng-bootstrap-let.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs +0 -63
- package/fesm2015/mintplayer-ng-bootstrap-list-group.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs +0 -147
- package/fesm2015/mintplayer-ng-bootstrap-markdown.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-modal.mjs +0 -263
- package/fesm2015/mintplayer-ng-bootstrap-modal.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs +0 -151
- package/fesm2015/mintplayer-ng-bootstrap-multiselect.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs +0 -735
- package/fesm2015/mintplayer-ng-bootstrap-navbar.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -148
- package/fesm2015/mintplayer-ng-bootstrap-navigation-lock.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs +0 -50
- package/fesm2015/mintplayer-ng-bootstrap-no-noscript.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs +0 -456
- package/fesm2015/mintplayer-ng-bootstrap-offcanvas.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -56
- package/fesm2015/mintplayer-ng-bootstrap-ordinal-number.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs +0 -229
- package/fesm2015/mintplayer-ng-bootstrap-pagination.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs +0 -89
- package/fesm2015/mintplayer-ng-bootstrap-placeholder.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-popover.mjs +0 -261
- package/fesm2015/mintplayer-ng-bootstrap-popover.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs +0 -182
- package/fesm2015/mintplayer-ng-bootstrap-progress-bar.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-range.mjs +0 -105
- package/fesm2015/mintplayer-ng-bootstrap-range.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs +0 -103
- package/fesm2015/mintplayer-ng-bootstrap-rating.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-resizable.mjs +0 -338
- package/fesm2015/mintplayer-ng-bootstrap-resizable.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs +0 -813
- package/fesm2015/mintplayer-ng-bootstrap-scheduler.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs +0 -166
- package/fesm2015/mintplayer-ng-bootstrap-scrollspy.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-select.mjs +0 -284
- package/fesm2015/mintplayer-ng-bootstrap-select.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-select2.mjs +0 -152
- package/fesm2015/mintplayer-ng-bootstrap-select2.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs +0 -147
- package/fesm2015/mintplayer-ng-bootstrap-snackbar.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs +0 -65
- package/fesm2015/mintplayer-ng-bootstrap-spinner.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs +0 -268
- package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs +0 -214
- package/fesm2015/mintplayer-ng-bootstrap-tab-control.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-table.mjs +0 -69
- package/fesm2015/mintplayer-ng-bootstrap-table.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs +0 -181
- package/fesm2015/mintplayer-ng-bootstrap-timepicker.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-toast.mjs +0 -238
- package/fesm2015/mintplayer-ng-bootstrap-toast.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs +0 -313
- package/fesm2015/mintplayer-ng-bootstrap-toggle-button.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs +0 -185
- package/fesm2015/mintplayer-ng-bootstrap-tooltip.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-treeview.mjs +0 -93
- package/fesm2015/mintplayer-ng-bootstrap-treeview.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs +0 -134
- package/fesm2015/mintplayer-ng-bootstrap-typeahead.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs +0 -127
- package/fesm2015/mintplayer-ng-bootstrap-user-agent.mjs.map +0 -1
- package/fesm2015/mintplayer-ng-bootstrap.mjs +0 -144
- package/fesm2015/mintplayer-ng-bootstrap.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs +0 -144
- package/fesm2020/mintplayer-ng-bootstrap-accordion.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-alert.mjs +0 -87
- package/fesm2020/mintplayer-ng-bootstrap-alert.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-badge.mjs +0 -52
- package/fesm2020/mintplayer-ng-bootstrap-badge.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -51
- package/fesm2020/mintplayer-ng-bootstrap-breadcrumb.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs +0 -35
- package/fesm2020/mintplayer-ng-bootstrap-button-group.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs +0 -58
- package/fesm2020/mintplayer-ng-bootstrap-button-type.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs +0 -175
- package/fesm2020/mintplayer-ng-bootstrap-calendar-month.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs +0 -153
- package/fesm2020/mintplayer-ng-bootstrap-calendar.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-card.mjs +0 -60
- package/fesm2020/mintplayer-ng-bootstrap-card.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs +0 -194
- package/fesm2020/mintplayer-ng-bootstrap-carousel.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-close.mjs +0 -43
- package/fesm2020/mintplayer-ng-bootstrap-close.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs +0 -73
- package/fesm2020/mintplayer-ng-bootstrap-code-snippet.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs +0 -121
- package/fesm2020/mintplayer-ng-bootstrap-context-menu.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-copy.mjs +0 -72
- package/fesm2020/mintplayer-ng-bootstrap-copy.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs +0 -172
- package/fesm2020/mintplayer-ng-bootstrap-datatable.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs +0 -93
- package/fesm2020/mintplayer-ng-bootstrap-datepicker.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-dock.mjs +0 -598
- package/fesm2020/mintplayer-ng-bootstrap-dock.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -41
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -87
- package/fesm2020/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs +0 -243
- package/fesm2020/mintplayer-ng-bootstrap-dropdown.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -85
- package/fesm2020/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-enum.mjs +0 -38
- package/fesm2020/mintplayer-ng-bootstrap-enum.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs +0 -175
- package/fesm2020/mintplayer-ng-bootstrap-file-upload.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs +0 -41
- package/fesm2020/mintplayer-ng-bootstrap-floating-labels.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-for.mjs +0 -66
- package/fesm2020/mintplayer-ng-bootstrap-for.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-form.mjs +0 -76
- package/fesm2020/mintplayer-ng-bootstrap-form.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-grid.mjs +0 -141
- package/fesm2020/mintplayer-ng-bootstrap-grid.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs +0 -33
- package/fesm2020/mintplayer-ng-bootstrap-has-overlay.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-icon.mjs +0 -56
- package/fesm2020/mintplayer-ng-bootstrap-icon.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs +0 -33
- package/fesm2020/mintplayer-ng-bootstrap-input-group.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-instance-of.mjs +0 -218
- package/fesm2020/mintplayer-ng-bootstrap-instance-of.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs +0 -60
- package/fesm2020/mintplayer-ng-bootstrap-lazy-loading.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-let.mjs +0 -66
- package/fesm2020/mintplayer-ng-bootstrap-let.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs +0 -63
- package/fesm2020/mintplayer-ng-bootstrap-list-group.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs +0 -147
- package/fesm2020/mintplayer-ng-bootstrap-markdown.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-modal.mjs +0 -259
- package/fesm2020/mintplayer-ng-bootstrap-modal.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs +0 -151
- package/fesm2020/mintplayer-ng-bootstrap-multiselect.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs +0 -724
- package/fesm2020/mintplayer-ng-bootstrap-navbar.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -145
- package/fesm2020/mintplayer-ng-bootstrap-navigation-lock.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs +0 -48
- package/fesm2020/mintplayer-ng-bootstrap-no-noscript.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs +0 -452
- package/fesm2020/mintplayer-ng-bootstrap-offcanvas.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -56
- package/fesm2020/mintplayer-ng-bootstrap-ordinal-number.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs +0 -229
- package/fesm2020/mintplayer-ng-bootstrap-pagination.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs +0 -89
- package/fesm2020/mintplayer-ng-bootstrap-placeholder.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-popover.mjs +0 -256
- package/fesm2020/mintplayer-ng-bootstrap-popover.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs +0 -182
- package/fesm2020/mintplayer-ng-bootstrap-progress-bar.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-range.mjs +0 -105
- package/fesm2020/mintplayer-ng-bootstrap-range.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs +0 -103
- package/fesm2020/mintplayer-ng-bootstrap-rating.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-resizable.mjs +0 -346
- package/fesm2020/mintplayer-ng-bootstrap-resizable.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs +0 -813
- package/fesm2020/mintplayer-ng-bootstrap-scheduler.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs +0 -161
- package/fesm2020/mintplayer-ng-bootstrap-scrollspy.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-select.mjs +0 -282
- package/fesm2020/mintplayer-ng-bootstrap-select.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-select2.mjs +0 -152
- package/fesm2020/mintplayer-ng-bootstrap-select2.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs +0 -144
- package/fesm2020/mintplayer-ng-bootstrap-snackbar.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs +0 -65
- package/fesm2020/mintplayer-ng-bootstrap-spinner.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs +0 -268
- package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs +0 -214
- package/fesm2020/mintplayer-ng-bootstrap-tab-control.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-table.mjs +0 -69
- package/fesm2020/mintplayer-ng-bootstrap-table.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs +0 -181
- package/fesm2020/mintplayer-ng-bootstrap-timepicker.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-toast.mjs +0 -236
- package/fesm2020/mintplayer-ng-bootstrap-toast.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs +0 -313
- package/fesm2020/mintplayer-ng-bootstrap-toggle-button.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs +0 -181
- package/fesm2020/mintplayer-ng-bootstrap-tooltip.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-treeview.mjs +0 -91
- package/fesm2020/mintplayer-ng-bootstrap-treeview.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs +0 -134
- package/fesm2020/mintplayer-ng-bootstrap-typeahead.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs +0 -125
- package/fesm2020/mintplayer-ng-bootstrap-user-agent.mjs.map +0 -1
- package/fesm2020/mintplayer-ng-bootstrap.mjs +0 -144
- package/fesm2020/mintplayer-ng-bootstrap.mjs.map +0 -1
- /package/{esm2020 → esm2022}/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/accordion/mintplayer-ng-bootstrap-accordion.mjs +0 -0
- /package/{esm2020 → esm2022}/accordion/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/alert/mintplayer-ng-bootstrap-alert.mjs +0 -0
- /package/{esm2020 → esm2022}/alert/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/badge/index.mjs +0 -0
- /package/{esm2020 → esm2022}/badge/mintplayer-ng-bootstrap-badge.mjs +0 -0
- /package/{esm2020 → esm2022}/badge/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/breadcrumb/index.mjs +0 -0
- /package/{esm2020 → esm2022}/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.mjs +0 -0
- /package/{esm2020 → esm2022}/breadcrumb/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/button-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/button-group/mintplayer-ng-bootstrap-button-group.mjs +0 -0
- /package/{esm2020 → esm2022}/button-group/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/button-type/index.mjs +0 -0
- /package/{esm2020 → esm2022}/button-type/mintplayer-ng-bootstrap-button-type.mjs +0 -0
- /package/{esm2020 → esm2022}/button-type/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar/mintplayer-ng-bootstrap-calendar.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/mintplayer-ng-bootstrap-calendar-month.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/interfaces/date-day-of-month.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/interfaces/first-and-last-date.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/interfaces/week.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/interfaces/weekday.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/pipes/month-name/index.mjs +0 -0
- /package/{esm2020 → esm2022}/calendar-month/src/pipes/weekday-name/index.mjs +0 -0
- /package/{esm2020 → esm2022}/card/index.mjs +0 -0
- /package/{esm2020 → esm2022}/card/mintplayer-ng-bootstrap-card.mjs +0 -0
- /package/{esm2020 → esm2022}/card/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/carousel/index.mjs +0 -0
- /package/{esm2020 → esm2022}/carousel/mintplayer-ng-bootstrap-carousel.mjs +0 -0
- /package/{esm2020 → esm2022}/carousel/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/close/index.mjs +0 -0
- /package/{esm2020 → esm2022}/close/mintplayer-ng-bootstrap-close.mjs +0 -0
- /package/{esm2020 → esm2022}/close/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/code-snippet/index.mjs +0 -0
- /package/{esm2020 → esm2022}/code-snippet/mintplayer-ng-bootstrap-code-snippet.mjs +0 -0
- /package/{esm2020 → esm2022}/code-snippet/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/context-menu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/context-menu/mintplayer-ng-bootstrap-context-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/context-menu/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/copy/index.mjs +0 -0
- /package/{esm2020 → esm2022}/copy/mintplayer-ng-bootstrap-copy.mjs +0 -0
- /package/{esm2020 → esm2022}/copy/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/datatable/index.mjs +0 -0
- /package/{esm2020 → esm2022}/datatable/mintplayer-ng-bootstrap-datatable.mjs +0 -0
- /package/{esm2020 → esm2022}/datatable/src/datatable-column/datatable-column-metadata.mjs +0 -0
- /package/{esm2020 → esm2022}/datatable/src/datatable-column/index.mjs +0 -0
- /package/{esm2020 → esm2022}/datatable/src/datatable-settings.mjs +0 -0
- /package/{esm2020 → esm2022}/datatable/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker/mintplayer-ng-bootstrap-datepicker.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/mintplayer-ng-bootstrap-dock.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/enums/pane-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/interfaces/dock-layout.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/interfaces/drag-operation.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/interfaces/point.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/interfaces/remove-from-pane-result.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/interfaces/size.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/content-pane.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/dock-pane.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/document-host-pane.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/floating-pane.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/split-pane.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/panes/tab-group-pane.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dock/src/types/split-pane-orientation.type.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown/mintplayer-ng-bootstrap-dropdown.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown-divider/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown-divider/mintplayer-ng-bootstrap-dropdown-divider.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown-divider/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown-menu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown-menu/mintplayer-ng-bootstrap-dropdown-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown-menu/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/enhanced-paste/index.mjs +0 -0
- /package/{esm2020 → esm2022}/enhanced-paste/mintplayer-ng-bootstrap-enhanced-paste.mjs +0 -0
- /package/{esm2020 → esm2022}/enhanced-paste/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/enhanced-paste/src/interfaces/number-overflow.mjs +0 -0
- /package/{esm2020 → esm2022}/enum/index.mjs +0 -0
- /package/{esm2020 → esm2022}/enum/mintplayer-ng-bootstrap-enum.mjs +0 -0
- /package/{esm2020 → esm2022}/enum/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/enum/src/interfaces/enum-item.mjs +0 -0
- /package/{esm2020 → esm2022}/enum/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/index.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/mintplayer-ng-bootstrap-file-upload.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/src/file-upload.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/file-upload/src/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/floating-labels/index.mjs +0 -0
- /package/{esm2020 → esm2022}/floating-labels/mintplayer-ng-bootstrap-floating-labels.mjs +0 -0
- /package/{esm2020 → esm2022}/floating-labels/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/for/index.mjs +0 -0
- /package/{esm2020 → esm2022}/for/mintplayer-ng-bootstrap-for.mjs +0 -0
- /package/{esm2020 → esm2022}/for/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/form/mintplayer-ng-bootstrap-form.mjs +0 -0
- /package/{esm2020 → esm2022}/form/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/grid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/grid/mintplayer-ng-bootstrap-grid.mjs +0 -0
- /package/{esm2020 → esm2022}/grid/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/grid/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/grid/src/interfaces/column-definition.mjs +0 -0
- /package/{esm2020 → esm2022}/grid/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/has-overlay/index.mjs +0 -0
- /package/{esm2020 → esm2022}/has-overlay/mintplayer-ng-bootstrap-has-overlay.mjs +0 -0
- /package/{esm2020 → esm2022}/has-overlay/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/icon/mintplayer-ng-bootstrap-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/input-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/input-group/mintplayer-ng-bootstrap-input-group.mjs +0 -0
- /package/{esm2020 → esm2022}/input-group/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/index.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/mintplayer-ng-bootstrap-instance-of.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/directives/switch-view.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/interfaces/instance-of-context.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/types/abstract.type.mjs +0 -0
- /package/{esm2020 → esm2022}/instance-of/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lazy-loading/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lazy-loading/mintplayer-ng-bootstrap-lazy-loading.mjs +0 -0
- /package/{esm2020 → esm2022}/lazy-loading/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/let/index.mjs +0 -0
- /package/{esm2020 → esm2022}/let/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/let/interfaces/let-context.mjs +0 -0
- /package/{esm2020 → esm2022}/let/mintplayer-ng-bootstrap-let.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/enums/color.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/font-color/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/in-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/uc-first/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/development.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/providers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/breakpoint.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/size.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/view-state.type.mjs +0 -0
- /package/{esm2020 → esm2022}/list-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/list-group/mintplayer-ng-bootstrap-list-group.mjs +0 -0
- /package/{esm2020 → esm2022}/list-group/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/markdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/markdown/mintplayer-ng-bootstrap-markdown.mjs +0 -0
- /package/{esm2020 → esm2022}/mintplayer-ng-bootstrap.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/mintplayer-ng-bootstrap-modal.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/src/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/src/providers/modal-content.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/src/providers/portal-factory.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/multiselect/index.mjs +0 -0
- /package/{esm2020 → esm2022}/multiselect/mintplayer-ng-bootstrap-multiselect.mjs +0 -0
- /package/{esm2020 → esm2022}/multiselect/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/multiselect/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/navbar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/navbar/mintplayer-ng-bootstrap-navbar.mjs +0 -0
- /package/{esm2020 → esm2022}/navbar/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/navigation-lock/index.mjs +0 -0
- /package/{esm2020 → esm2022}/navigation-lock/mintplayer-ng-bootstrap-navigation-lock.mjs +0 -0
- /package/{esm2020 → esm2022}/navigation-lock/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/navigation-lock/src/interface/has-navigation-lock.mjs +0 -0
- /package/{esm2020 → esm2022}/no-noscript/index.mjs +0 -0
- /package/{esm2020 → esm2022}/no-noscript/mintplayer-ng-bootstrap-no-noscript.mjs +0 -0
- /package/{esm2020 → esm2022}/no-noscript/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/index.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/mintplayer-ng-bootstrap-offcanvas.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/src/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/src/providers/offcanvas-content.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/offcanvas/src/providers/portal-factory.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/ordinal-number/index.mjs +0 -0
- /package/{esm2020 → esm2022}/ordinal-number/mintplayer-ng-bootstrap-ordinal-number.mjs +0 -0
- /package/{esm2020 → esm2022}/ordinal-number/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/mintplayer-ng-bootstrap-pagination.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/src/component/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/src/interfaces/page-with-selection.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/pagination/src/types/page-number.type.mjs +0 -0
- /package/{esm2020 → esm2022}/placeholder/index.mjs +0 -0
- /package/{esm2020 → esm2022}/placeholder/mintplayer-ng-bootstrap-placeholder.mjs +0 -0
- /package/{esm2020 → esm2022}/placeholder/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/popover/index.mjs +0 -0
- /package/{esm2020 → esm2022}/popover/mintplayer-ng-bootstrap-popover.mjs +0 -0
- /package/{esm2020 → esm2022}/popover/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/popover/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/popover/src/providers/popover-content.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/popover/src/providers/portal-factory.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/progress-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/progress-bar/mintplayer-ng-bootstrap-progress-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/progress-bar/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/range/index.mjs +0 -0
- /package/{esm2020 → esm2022}/range/mintplayer-ng-bootstrap-range.mjs +0 -0
- /package/{esm2020 → esm2022}/range/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/rating/index.mjs +0 -0
- /package/{esm2020 → esm2022}/rating/mintplayer-ng-bootstrap-rating.mjs +0 -0
- /package/{esm2020 → esm2022}/rating/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/index.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/mintplayer-ng-bootstrap-resizable.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/interfaces/pointer-data.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/interfaces/preset-position.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/interfaces/resize-action.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/providers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/providers/resizable.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/resizable/src/types/positioning.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/mintplayer-ng-bootstrap-scheduler.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/constants/available-scales.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/enums/drag-operation.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/enums/scheduler-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/drag-operation.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/preview-event.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/resource-group.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/resource-or-group.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/resource.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-event-part.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-event-with-parts.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-event.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-schale.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/scheduler-stamp-with-slots.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/time-slot.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/timeline-options.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/timeline-track.mjs +0 -0
- /package/{esm2020 → esm2022}/scheduler/src/interfaces/week-options.mjs +0 -0
- /package/{esm2020 → esm2022}/scrollspy/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scrollspy/mintplayer-ng-bootstrap-scrollspy.mjs +0 -0
- /package/{esm2020 → esm2022}/scrollspy/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/scrollspy/src/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/select/index.mjs +0 -0
- /package/{esm2020 → esm2022}/select/mintplayer-ng-bootstrap-select.mjs +0 -0
- /package/{esm2020 → esm2022}/select/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/select/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/select/src/types/select-size.mjs +0 -0
- /package/{esm2020 → esm2022}/select/src/value-accessors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/select2/index.mjs +0 -0
- /package/{esm2020 → esm2022}/select2/mintplayer-ng-bootstrap-select2.mjs +0 -0
- /package/{esm2020 → esm2022}/select2/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/mintplayer-ng-bootstrap-snackbar.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/src/interfaces/snackbar-animation-meta.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/src/providers/snackbar-content.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/spinner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/spinner/mintplayer-ng-bootstrap-spinner.mjs +0 -0
- /package/{esm2020 → esm2022}/spinner/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/mintplayer-ng-bootstrap-splitter.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/src/interfaces/drag-operation.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/src/interfaces/point.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/src/types/direction.type.mjs +0 -0
- /package/{esm2020 → esm2022}/splitter/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tab-control/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tab-control/mintplayer-ng-bootstrap-tab-control.mjs +0 -0
- /package/{esm2020 → esm2022}/tab-control/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tab-control/src/tabs-position.mjs +0 -0
- /package/{esm2020 → esm2022}/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/mintplayer-ng-bootstrap-table.mjs +0 -0
- /package/{esm2020 → esm2022}/table/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/mintplayer-ng-bootstrap-timepicker.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/mintplayer-ng-bootstrap-toast.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/src/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/src/providers/portal-factory.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/src/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toggle-button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toggle-button/mintplayer-ng-bootstrap-toggle-button.mjs +0 -0
- /package/{esm2020 → esm2022}/toggle-button/src/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toggle-button/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toggle-button/src/types/check-style.mjs +0 -0
- /package/{esm2020 → esm2022}/toggle-button/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/mintplayer-ng-bootstrap-tooltip.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/src/providers/tooltip-content.provider.mjs +0 -0
- /package/{esm2020 → esm2022}/treeview/index.mjs +0 -0
- /package/{esm2020 → esm2022}/treeview/mintplayer-ng-bootstrap-treeview.mjs +0 -0
- /package/{esm2020 → esm2022}/treeview/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/typeahead/index.mjs +0 -0
- /package/{esm2020 → esm2022}/typeahead/mintplayer-ng-bootstrap-typeahead.mjs +0 -0
- /package/{esm2020 → esm2022}/typeahead/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/index.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/mintplayer-ng-bootstrap-user-agent.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/directive/index.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/index.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/interfaces/user-agent.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/types/operating-system.type.mjs +0 -0
- /package/{esm2020 → esm2022}/user-agent/src/types/webbrowser.type.mjs +0 -0
|
@@ -1,539 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, combineLatest, filter, map, Subject, take, takeUntil } from 'rxjs';
|
|
3
|
-
import { BsCalendarMonthService } from '@mintplayer/ng-bootstrap/calendar-month';
|
|
4
|
-
import { ESchedulerMode } from '../../enums/scheduler-mode';
|
|
5
|
-
import { EDragOperation } from '../../enums/drag-operation';
|
|
6
|
-
import { BsTimelineService } from '../../services/timeline/timeline.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@mintplayer/ng-bootstrap/calendar-month";
|
|
9
|
-
import * as i2 from "../../services/timeline/timeline.service";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "@mintplayer/ng-bootstrap/icon";
|
|
12
|
-
import * as i5 from "../resource-group-presenter/resource-group-presenter.component";
|
|
13
|
-
import * as i6 from "../../pipes/bs-seconds-timespan.pipe/bs-seconds-timespan.pipe";
|
|
14
|
-
import * as i7 from "../../pipes/bs-seconds-today-offset/bs-seconds-today-offset.pipe";
|
|
15
|
-
import * as i8 from "../../pipes/day-of-week/day-of-week.pipe";
|
|
16
|
-
export class BsSchedulerComponent {
|
|
17
|
-
constructor(calendarMonthService, timelineService) {
|
|
18
|
-
this.calendarMonthService = calendarMonthService;
|
|
19
|
-
this.timelineService = timelineService;
|
|
20
|
-
this.resources$ = new BehaviorSubject([]);
|
|
21
|
-
this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
|
|
22
|
-
this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
|
|
23
|
-
this.previewEvent$ = new BehaviorSubject(null);
|
|
24
|
-
this.timeSlotDuration$ = new BehaviorSubject(1800);
|
|
25
|
-
this.timeSlots$ = new BehaviorSubject([]);
|
|
26
|
-
this.mouseState$ = new BehaviorSubject(false);
|
|
27
|
-
this.hoveredTimeSlot$ = new BehaviorSubject(null);
|
|
28
|
-
this.hoveredEvent$ = new BehaviorSubject(null);
|
|
29
|
-
this.destroyed$ = new Subject();
|
|
30
|
-
this.resourceGroupPresenterCounter = 1;
|
|
31
|
-
//#region Mode
|
|
32
|
-
this.modes = ESchedulerMode;
|
|
33
|
-
this.mode$ = new BehaviorSubject(ESchedulerMode.week);
|
|
34
|
-
this.modeChange = new EventEmitter();
|
|
35
|
-
//#endregion
|
|
36
|
-
// //#region Scale
|
|
37
|
-
// scale$ = new BehaviorSubject<SchedulerScale>(availableScales[4]);
|
|
38
|
-
// @Output() public scaleChange = new EventEmitter<SchedulerScale>();
|
|
39
|
-
// public get scale() {
|
|
40
|
-
// return this.scale$.value;
|
|
41
|
-
// }
|
|
42
|
-
// @Input() public set scale(value: SchedulerScale) {
|
|
43
|
-
// this.scale$.next(value);
|
|
44
|
-
// }
|
|
45
|
-
// //#endregion
|
|
46
|
-
//#region WeekOptions
|
|
47
|
-
this.weekOptionsChange = new EventEmitter();
|
|
48
|
-
//#endregion
|
|
49
|
-
//#region TimelineOptions
|
|
50
|
-
this.timelineOptionsChange = new EventEmitter();
|
|
51
|
-
//#endregion
|
|
52
|
-
//#region maxInnerHeight
|
|
53
|
-
this.maxInnerHeight = null;
|
|
54
|
-
this.operation = null;
|
|
55
|
-
this.dragStartTimeslot = null;
|
|
56
|
-
const monday = this.calendarMonthService.getMondayBefore(new Date());
|
|
57
|
-
this.currentWeekOrMonth$ = new BehaviorSubject(monday);
|
|
58
|
-
this.shownDays$ = combineLatest([this.currentWeekOrMonth$, this.mode$])
|
|
59
|
-
.pipe(map(([currentDay, mode]) => {
|
|
60
|
-
currentDay.setHours(0);
|
|
61
|
-
currentDay.setMinutes(0);
|
|
62
|
-
currentDay.setSeconds(0);
|
|
63
|
-
currentDay.setMilliseconds(0);
|
|
64
|
-
switch (mode) {
|
|
65
|
-
case ESchedulerMode.week: {
|
|
66
|
-
return Array.from(Array(7).keys()).map((x) => this.addDays(currentDay, x));
|
|
67
|
-
}
|
|
68
|
-
case ESchedulerMode.timeline: {
|
|
69
|
-
const firstDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), 1);
|
|
70
|
-
const daysOfMonth = new Date(currentDay.getFullYear(), currentDay.getMonth() + 1, 0).getDate();
|
|
71
|
-
return Array.from(Array(daysOfMonth).keys()).map((x) => this.addDays(firstDay, x));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}));
|
|
75
|
-
this.daysOfWeekWithTimestamps$ = this.shownDays$
|
|
76
|
-
.pipe(map((shownDays) => ({ start: shownDays[0].getTime(), end: shownDays[shownDays.length - 1].getTime() + 24 * 60 * 60 * 1000 })));
|
|
77
|
-
this.events$ = this.resources$
|
|
78
|
-
.pipe(map((resourcesOrGroups) => resourcesOrGroups.map(resOrGroup => this.getResourcesForGroup(resOrGroup))))
|
|
79
|
-
.pipe(map(jaggedResources => jaggedResources.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
|
|
80
|
-
.pipe(map(resources => resources.map(res => res.events)))
|
|
81
|
-
.pipe(map(jaggedEvents => jaggedEvents.reduce((flat, toFlatten) => flat.concat(toFlatten), [])));
|
|
82
|
-
// groups.reduce((flat, toFlatten) => flat.concat(toFlatten.children), [])
|
|
83
|
-
this.eventParts$ = this.events$.pipe(map((events) => events.map((ev) => this.timelineService.splitInParts(ev))));
|
|
84
|
-
this.eventPartsForThisWeek$ = combineLatest([
|
|
85
|
-
this.daysOfWeekWithTimestamps$,
|
|
86
|
-
this.eventParts$
|
|
87
|
-
.pipe(map(eventParts => eventParts.map(evp => evp.parts)))
|
|
88
|
-
.pipe(map(jaggedParts => jaggedParts.reduce((flat, toFlatten) => flat.concat(toFlatten), [])))
|
|
89
|
-
])
|
|
90
|
-
.pipe(map(([startAndEnd, eventParts]) => {
|
|
91
|
-
return eventParts.filter(eventPart => {
|
|
92
|
-
return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
|
|
93
|
-
});
|
|
94
|
-
}));
|
|
95
|
-
this.previewEventParts$ = this.previewEvent$.pipe(map((event) => {
|
|
96
|
-
if (event) {
|
|
97
|
-
return this.timelineService.splitInParts(event);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
}));
|
|
103
|
-
this.previewEventPartsForThisWeek$ = combineLatest([this.daysOfWeekWithTimestamps$, this.previewEventParts$])
|
|
104
|
-
.pipe(map(([startAndEnd, previewEventParts]) => {
|
|
105
|
-
if (previewEventParts) {
|
|
106
|
-
return previewEventParts.parts.filter(eventPart => {
|
|
107
|
-
return !((eventPart.end.getTime() <= startAndEnd.start) || (eventPart.start.getTime() >= startAndEnd.end));
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
return [];
|
|
112
|
-
}
|
|
113
|
-
}));
|
|
114
|
-
this.timelinedEventPartsForThisWeek$ = this.eventPartsForThisWeek$
|
|
115
|
-
.pipe(map(eventParts => {
|
|
116
|
-
// We'll only use the events for this week
|
|
117
|
-
const events = eventParts.map(ep => ep.event)
|
|
118
|
-
.filter((e, i, list) => list.indexOf(e) === i)
|
|
119
|
-
.filter((e) => !!e)
|
|
120
|
-
.map((e) => e);
|
|
121
|
-
const timeline = this.timelineService.getTimeline(events);
|
|
122
|
-
const result = timeline.map(track => track.events.map(ev => ({ event: ev, index: track.index })))
|
|
123
|
-
.reduce((flat, toFlatten) => flat.concat(toFlatten), [])
|
|
124
|
-
.map((evi) => eventParts.filter(p => p.event === evi.event).map(p => ({ part: p, index: evi.index })))
|
|
125
|
-
.reduce((flat, toFlatten) => flat.concat(toFlatten), []);
|
|
126
|
-
return {
|
|
127
|
-
total: timeline.length,
|
|
128
|
-
parts: result
|
|
129
|
-
};
|
|
130
|
-
}));
|
|
131
|
-
combineLatest([this.mode$, this.shownDays$, this.timeSlotDuration$])
|
|
132
|
-
.pipe(filter(([mode, shownDays, duration]) => mode !== null))
|
|
133
|
-
.pipe(map(([mode, shownDays, duration]) => {
|
|
134
|
-
switch (mode) {
|
|
135
|
-
case ESchedulerMode.week: {
|
|
136
|
-
const timeSlotsPerDay = Math.floor((60 * 60 * 24) / duration);
|
|
137
|
-
return Array.from(Array(timeSlotsPerDay).keys()).map((index) => {
|
|
138
|
-
const timeslotForMonday = this.createTimeslot(shownDays[0], index, duration);
|
|
139
|
-
return {
|
|
140
|
-
slots: shownDays.map((day) => {
|
|
141
|
-
const start = new Date(day);
|
|
142
|
-
start.setHours(timeslotForMonday.start.getHours());
|
|
143
|
-
start.setMinutes(timeslotForMonday.start.getMinutes());
|
|
144
|
-
start.setSeconds(timeslotForMonday.start.getSeconds());
|
|
145
|
-
start.setMilliseconds(timeslotForMonday.start.getMilliseconds());
|
|
146
|
-
const end = new Date(day);
|
|
147
|
-
end.setHours(timeslotForMonday.end.getHours());
|
|
148
|
-
end.setMinutes(timeslotForMonday.end.getMinutes());
|
|
149
|
-
end.setSeconds(timeslotForMonday.end.getSeconds());
|
|
150
|
-
end.setMilliseconds(timeslotForMonday.end.getMilliseconds());
|
|
151
|
-
end.setDate(end.getDate() + timeslotForMonday.end.getDate() - timeslotForMonday.start.getDate());
|
|
152
|
-
return { start, end };
|
|
153
|
-
}),
|
|
154
|
-
stamp: timeslotForMonday.start
|
|
155
|
-
};
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
case ESchedulerMode.timeline: {
|
|
159
|
-
const totalTimeslots = (24 * 60 * 60) / duration;
|
|
160
|
-
return shownDays.map((day) => {
|
|
161
|
-
return {
|
|
162
|
-
slots: Array.from(Array(totalTimeslots).keys())
|
|
163
|
-
.map((index) => {
|
|
164
|
-
return this.createTimeslot(day, index, duration);
|
|
165
|
-
}),
|
|
166
|
-
stamp: day
|
|
167
|
-
};
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
default: {
|
|
171
|
-
throw 'Unknown value for Mode: ' + mode;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}))
|
|
175
|
-
.subscribe((timeslots) => {
|
|
176
|
-
// For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
|
|
177
|
-
this.timeSlots$.next(timeslots);
|
|
178
|
-
});
|
|
179
|
-
this.weekOptions$
|
|
180
|
-
.pipe(takeUntil(this.destroyed$))
|
|
181
|
-
.subscribe((weekOptions) => {
|
|
182
|
-
this.weekOptionsChange.emit(weekOptions);
|
|
183
|
-
});
|
|
184
|
-
this.timelineOptions$
|
|
185
|
-
.pipe(takeUntil(this.destroyed$))
|
|
186
|
-
.subscribe((timelineOptions) => {
|
|
187
|
-
this.timelineOptionsChange.emit(timelineOptions);
|
|
188
|
-
});
|
|
189
|
-
// combineLatest([this.mode$, this.scale$])
|
|
190
|
-
// .pipe(filter(([mode, scale]) => mode === ESchedulerMode.timeline))
|
|
191
|
-
}
|
|
192
|
-
createTimeslot(date, index, duration) {
|
|
193
|
-
const timeSlotStart = new Date(date);
|
|
194
|
-
timeSlotStart.setTime(+timeSlotStart.getTime() + index * duration * 1000);
|
|
195
|
-
const timeSlotEnd = new Date(timeSlotStart);
|
|
196
|
-
timeSlotEnd.setTime(+timeSlotEnd.getTime() + duration * 1000);
|
|
197
|
-
return { start: timeSlotStart, end: timeSlotEnd };
|
|
198
|
-
}
|
|
199
|
-
getResourcesForGroup(resourceOrGroup) {
|
|
200
|
-
if ('children' in resourceOrGroup) {
|
|
201
|
-
return resourceOrGroup.children
|
|
202
|
-
.map((child) => this.getResourcesForGroup(child))
|
|
203
|
-
.reduce((flat, toFlatten) => flat.concat(toFlatten), []);
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
return [resourceOrGroup];
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
get mode() {
|
|
210
|
-
return this.mode$.value;
|
|
211
|
-
}
|
|
212
|
-
set mode(value) {
|
|
213
|
-
this.mode$.next(value);
|
|
214
|
-
}
|
|
215
|
-
get weekOptions() {
|
|
216
|
-
return this.weekOptions$.value;
|
|
217
|
-
}
|
|
218
|
-
set weekOptions(value) {
|
|
219
|
-
this.weekOptions$.next(value);
|
|
220
|
-
}
|
|
221
|
-
get timelineOptions() {
|
|
222
|
-
return this.timelineOptions$.value;
|
|
223
|
-
}
|
|
224
|
-
set timelineOptions(value) {
|
|
225
|
-
this.timelineOptions$.next(value);
|
|
226
|
-
}
|
|
227
|
-
//#endregion
|
|
228
|
-
//#region Resources
|
|
229
|
-
get resources() {
|
|
230
|
-
return this.resources$.value;
|
|
231
|
-
}
|
|
232
|
-
set resources(value) {
|
|
233
|
-
this.resources$.next(value);
|
|
234
|
-
}
|
|
235
|
-
//#endregion
|
|
236
|
-
addDays(date, days) {
|
|
237
|
-
const result = new Date(date);
|
|
238
|
-
result.setDate(result.getDate() + days);
|
|
239
|
-
return result;
|
|
240
|
-
}
|
|
241
|
-
onPreviousWeekOrMonth() {
|
|
242
|
-
this.onChangeWeekOrMonth(false);
|
|
243
|
-
}
|
|
244
|
-
onNextWeekOrMonth() {
|
|
245
|
-
this.onChangeWeekOrMonth(true);
|
|
246
|
-
}
|
|
247
|
-
onChangeWeekOrMonth(next) {
|
|
248
|
-
combineLatest([this.currentWeekOrMonth$, this.mode$])
|
|
249
|
-
.pipe(map(([currentWeekOrMonth, mode]) => {
|
|
250
|
-
switch (mode) {
|
|
251
|
-
case ESchedulerMode.week: {
|
|
252
|
-
return this.addDays(currentWeekOrMonth, (next ? 7 : -7));
|
|
253
|
-
}
|
|
254
|
-
case ESchedulerMode.timeline: {
|
|
255
|
-
return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}), take(1))
|
|
259
|
-
.subscribe((w) => this.currentWeekOrMonth$.next(w));
|
|
260
|
-
}
|
|
261
|
-
onHoverEvent(ev) {
|
|
262
|
-
this.hoveredEvent$.next(ev);
|
|
263
|
-
}
|
|
264
|
-
onLeaveEvent(ev) {
|
|
265
|
-
this.hoveredEvent$.next(null);
|
|
266
|
-
}
|
|
267
|
-
onCreateEvent(ev, slot) {
|
|
268
|
-
ev.preventDefault();
|
|
269
|
-
this.mouseState$.next(true);
|
|
270
|
-
this.dragStartTimeslot = slot;
|
|
271
|
-
this.operation = {
|
|
272
|
-
operation: EDragOperation.createEvent,
|
|
273
|
-
event: {
|
|
274
|
-
start: slot.start,
|
|
275
|
-
end: slot.end,
|
|
276
|
-
color: '#F00',
|
|
277
|
-
description: 'Test event',
|
|
278
|
-
},
|
|
279
|
-
meta: null,
|
|
280
|
-
};
|
|
281
|
-
this.previewEvent$.next({ start: slot.start, end: slot.end });
|
|
282
|
-
}
|
|
283
|
-
randomColor() {
|
|
284
|
-
const brightness = 128;
|
|
285
|
-
return '#' + this.randomChannel(brightness) + this.randomChannel(brightness) + this.randomChannel(brightness);
|
|
286
|
-
}
|
|
287
|
-
randomChannel(brightness) {
|
|
288
|
-
const r = 255 - brightness;
|
|
289
|
-
const n = 0 | ((Math.random() * r) + brightness);
|
|
290
|
-
const s = n.toString(16);
|
|
291
|
-
return (s.length == 1) ? '0' + s : s;
|
|
292
|
-
}
|
|
293
|
-
onStartDragEvent(eventPart, ev) {
|
|
294
|
-
ev.preventDefault();
|
|
295
|
-
this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
|
|
296
|
-
if (eventPart.event) {
|
|
297
|
-
this.dragStartTimeslot = hoveredTimeSlot;
|
|
298
|
-
this.operation = {
|
|
299
|
-
operation: EDragOperation.moveEvent,
|
|
300
|
-
event: eventPart.event,
|
|
301
|
-
meta: null,
|
|
302
|
-
};
|
|
303
|
-
this.previewEvent$.next({ start: eventPart.event.start, end: eventPart.event.end });
|
|
304
|
-
}
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
onStartResizeEvent(event, position) {
|
|
308
|
-
if (event) {
|
|
309
|
-
switch (position) {
|
|
310
|
-
case 'top':
|
|
311
|
-
{
|
|
312
|
-
this.operation = {
|
|
313
|
-
operation: EDragOperation.resizeEvent,
|
|
314
|
-
event: event,
|
|
315
|
-
meta: { position },
|
|
316
|
-
};
|
|
317
|
-
this.previewEvent$.next({ start: event.start, end: event.end });
|
|
318
|
-
}
|
|
319
|
-
break;
|
|
320
|
-
case 'bottom':
|
|
321
|
-
{
|
|
322
|
-
this.operation = {
|
|
323
|
-
operation: EDragOperation.resizeEvent,
|
|
324
|
-
event: event,
|
|
325
|
-
meta: { position },
|
|
326
|
-
};
|
|
327
|
-
this.previewEvent$.next({ start: event.start, end: event.end });
|
|
328
|
-
}
|
|
329
|
-
break;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
//#region hoveredTimeslot$
|
|
334
|
-
getHoveredTimeslot(ev, timeSlots) {
|
|
335
|
-
const hoveredSlots = this.timeSlotElements.filter((el) => {
|
|
336
|
-
const rct = el.nativeElement.getBoundingClientRect();
|
|
337
|
-
if (rct.left <= ev.x && ev.x <= rct.right && rct.top <= ev.y && ev.y <= rct.bottom) {
|
|
338
|
-
return true;
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
return false;
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
if (!hoveredSlots || hoveredSlots.length === 0) {
|
|
345
|
-
return null;
|
|
346
|
-
}
|
|
347
|
-
const slotElement = hoveredSlots[0].nativeElement;
|
|
348
|
-
const strRow = slotElement.getAttribute('data-row');
|
|
349
|
-
if (!strRow) {
|
|
350
|
-
return null;
|
|
351
|
-
}
|
|
352
|
-
const row = parseInt(strRow);
|
|
353
|
-
const strColumn = slotElement.getAttribute('data-column');
|
|
354
|
-
if (!strColumn) {
|
|
355
|
-
return null;
|
|
356
|
-
}
|
|
357
|
-
const column = parseInt(strColumn);
|
|
358
|
-
const slot = timeSlots[row].slots[column];
|
|
359
|
-
return slot;
|
|
360
|
-
}
|
|
361
|
-
onMousemove(ev) {
|
|
362
|
-
this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
|
|
363
|
-
const hovered = this.getHoveredTimeslot(ev, timeSlots);
|
|
364
|
-
this.hoveredTimeSlot$.next(hovered);
|
|
365
|
-
if (this.operation) {
|
|
366
|
-
switch (this.operation.operation) {
|
|
367
|
-
case EDragOperation.createEvent:
|
|
368
|
-
{
|
|
369
|
-
if (this.operation.event && this.dragStartTimeslot && hovered && (this.operation.event.end.getTime() != hovered.end.getTime())) {
|
|
370
|
-
if (this.dragStartTimeslot.start.getTime() === hovered.start.getTime()) {
|
|
371
|
-
// 1 slot
|
|
372
|
-
}
|
|
373
|
-
else if (this.dragStartTimeslot.start.getTime() < hovered.start.getTime()) {
|
|
374
|
-
// Drag down
|
|
375
|
-
this.previewEvent$
|
|
376
|
-
.pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
|
|
377
|
-
.pipe(map((ev) => {
|
|
378
|
-
if (ev && this.dragStartTimeslot) {
|
|
379
|
-
ev.start = this.dragStartTimeslot.start;
|
|
380
|
-
ev.end = hovered.end;
|
|
381
|
-
}
|
|
382
|
-
return ev;
|
|
383
|
-
}))
|
|
384
|
-
.pipe(take(1))
|
|
385
|
-
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
386
|
-
}
|
|
387
|
-
else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
|
|
388
|
-
// Drag up
|
|
389
|
-
this.previewEvent$
|
|
390
|
-
.pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
|
|
391
|
-
.pipe(map((ev) => {
|
|
392
|
-
if (ev && this.dragStartTimeslot) {
|
|
393
|
-
ev.start = hovered.start;
|
|
394
|
-
ev.end = this.dragStartTimeslot.end;
|
|
395
|
-
}
|
|
396
|
-
return ev;
|
|
397
|
-
}))
|
|
398
|
-
.pipe(take(1))
|
|
399
|
-
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
break;
|
|
404
|
-
case EDragOperation.moveEvent:
|
|
405
|
-
{
|
|
406
|
-
if (hovered && this.dragStartTimeslot) {
|
|
407
|
-
this.previewEvent$
|
|
408
|
-
.pipe(filter((ev) => !!ev && !!this.dragStartTimeslot))
|
|
409
|
-
.pipe(map((ev) => {
|
|
410
|
-
if (ev && this.dragStartTimeslot) {
|
|
411
|
-
const result = {
|
|
412
|
-
start: new Date(ev.start.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime()),
|
|
413
|
-
end: new Date(ev.end.getTime() + hovered.start.getTime() - this.dragStartTimeslot.start.getTime())
|
|
414
|
-
};
|
|
415
|
-
this.dragStartTimeslot = hovered;
|
|
416
|
-
return result;
|
|
417
|
-
}
|
|
418
|
-
else {
|
|
419
|
-
return ev;
|
|
420
|
-
}
|
|
421
|
-
}))
|
|
422
|
-
.pipe(take(1))
|
|
423
|
-
.subscribe(ev => this.previewEvent$.next(ev));
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
break;
|
|
427
|
-
case EDragOperation.resizeEvent:
|
|
428
|
-
{
|
|
429
|
-
if (hovered) {
|
|
430
|
-
this.previewEvent$
|
|
431
|
-
.pipe(filter((ev) => !!ev))
|
|
432
|
-
.pipe(map((ev) => {
|
|
433
|
-
if (ev && this.operation && this.operation.event) {
|
|
434
|
-
if (this.operation.meta.position === 'top') {
|
|
435
|
-
ev.start = hovered.start;
|
|
436
|
-
ev.end = this.operation.event.end;
|
|
437
|
-
}
|
|
438
|
-
else if (this.operation.meta.position === 'bottom') {
|
|
439
|
-
ev.start = this.operation.event.start;
|
|
440
|
-
ev.end = hovered.end;
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
return ev;
|
|
444
|
-
}))
|
|
445
|
-
.pipe(take(1))
|
|
446
|
-
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
break;
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
//#endregion
|
|
455
|
-
onMouseUp(ev) {
|
|
456
|
-
if (this.operation) {
|
|
457
|
-
switch (this.operation.operation) {
|
|
458
|
-
case EDragOperation.createEvent:
|
|
459
|
-
{
|
|
460
|
-
combineLatest([this.previewEvent$])
|
|
461
|
-
.pipe(take(1))
|
|
462
|
-
.subscribe(([previewEvent]) => {
|
|
463
|
-
if (previewEvent) {
|
|
464
|
-
this.operation = null;
|
|
465
|
-
this.dragStartTimeslot = null;
|
|
466
|
-
this.resources$.next([
|
|
467
|
-
...this.resources$.value,
|
|
468
|
-
{
|
|
469
|
-
description: 'New resource group',
|
|
470
|
-
events: [{
|
|
471
|
-
start: previewEvent.start,
|
|
472
|
-
end: previewEvent.end,
|
|
473
|
-
color: this.randomColor(),
|
|
474
|
-
description: 'New event'
|
|
475
|
-
}]
|
|
476
|
-
}
|
|
477
|
-
]);
|
|
478
|
-
this.previewEvent$.next(null);
|
|
479
|
-
}
|
|
480
|
-
});
|
|
481
|
-
}
|
|
482
|
-
break;
|
|
483
|
-
case EDragOperation.moveEvent:
|
|
484
|
-
case EDragOperation.resizeEvent:
|
|
485
|
-
{
|
|
486
|
-
this.previewEvent$
|
|
487
|
-
.pipe(filter((ev) => !!ev))
|
|
488
|
-
.pipe(take(1))
|
|
489
|
-
.subscribe((previewEvent) => {
|
|
490
|
-
if (this.operation && this.operation.event && previewEvent) {
|
|
491
|
-
this.operation.event.start = previewEvent.start;
|
|
492
|
-
this.operation.event.end = previewEvent.end;
|
|
493
|
-
this.operation = null;
|
|
494
|
-
this.dragStartTimeslot = null;
|
|
495
|
-
this.resources$.next(this.resources$.value);
|
|
496
|
-
this.previewEvent$.next(null);
|
|
497
|
-
}
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
break;
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
ngOnDestroy() {
|
|
505
|
-
this.destroyed$.next(true);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
BsSchedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.BsCalendarMonthService }, { token: i2.BsTimelineService }], target: i0.ɵɵFactoryTarget.Component });
|
|
509
|
-
BsSchedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BsSchedulerComponent, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.BsIconComponent, selector: "bs-icon", inputs: ["icon"] }, { kind: "component", type: i5.ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i6.BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: i7.BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: i8.DayOfWeekPipe, name: "dayOfWeek" }] });
|
|
510
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BsSchedulerComponent, decorators: [{
|
|
511
|
-
type: Component,
|
|
512
|
-
args: [{ selector: 'bs-scheduler', template: "<div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\"\n *ngIf=\"(mode$ | async) === modes.week\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n <div class=\"flex-grow-1 calendar-head-cell\" *ngFor=\"let day of (shownDays$ | async)\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n <div class=\"position-relative\" *ngIf=\"(timeSlots$ | async) as row\">\n <ng-container *ngIf=\"(weekOptions$ | async) as weekOptions\">\n <!-- Timeslots -->\n <div *ngFor=\"let timeslots of row; let i = index\" class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n <div class=\"calendar-cell flex-grow-1\" *ngFor=\"let slot of timeslots.slots; let j = index\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n </div>\n\n <!-- Events -->\n <ng-container *ngIf=\"(timeSlotDuration$ | async) as timeSlotDuration\">\n <ng-container *ngIf=\"(timelinedEventPartsForThisWeek$ | async) as partData\">\n <div *ngFor=\"let eventPart of partData.parts\" class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n\n <div class=\"event-resize top\"\n *ngIf=\"eventPart.part.start === eventPart.part.event?.start\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n <div class=\"event-border\"></div>\n <div class=\"event-wrapper\" *ngIf=\"eventPart.part.event\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n <div class=\"event-resize bottom\"\n *ngIf=\"eventPart.part.end === eventPart.part.event?.end\"\n (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(previewEventPartsForThisWeek$ | async) as previewPartData\">\n <div *ngFor=\"let eventPart of previewPartData\" class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n<div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\" *ngIf=\"(mode$ | async) === modes.timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-left'\" class=\"px-0\"></bs-icon>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <bs-icon [icon]=\"'chevron-right'\" class=\"px-0\"></bs-icon>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n <ng-container *ngIf=\"(timeSlots$ | async) as timeSlots\">\n <tr>\n <td></td>\n <td *ngFor=\"let day of timeSlots\" [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n </tr>\n <tr>\n <td></td>\n <ng-container *ngIf=\"(timelineOptions$ | async) as timelineOptions\">\n <ng-container *ngFor=\"let day of timeSlots\">\n <td *ngFor=\"let slot of day.slots\">\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n </ng-container>\n </ng-container>\n </tr>\n <bs-resource-group-presenter *ngFor=\"let group of (resources$ | async)\" [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n </ng-container>\n </table>\n </div>\n</div>", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#F7F7F7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:black;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#DDD}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
|
|
513
|
-
}], ctorParameters: function () { return [{ type: i1.BsCalendarMonthService }, { type: i2.BsTimelineService }]; }, propDecorators: { timeSlotElements: [{
|
|
514
|
-
type: ViewChildren,
|
|
515
|
-
args: ['slot']
|
|
516
|
-
}], modeChange: [{
|
|
517
|
-
type: Output
|
|
518
|
-
}], mode: [{
|
|
519
|
-
type: Input
|
|
520
|
-
}], weekOptionsChange: [{
|
|
521
|
-
type: Output
|
|
522
|
-
}], weekOptions: [{
|
|
523
|
-
type: Input
|
|
524
|
-
}], timelineOptionsChange: [{
|
|
525
|
-
type: Output
|
|
526
|
-
}], timelineOptions: [{
|
|
527
|
-
type: Input
|
|
528
|
-
}], maxInnerHeight: [{
|
|
529
|
-
type: Input
|
|
530
|
-
}], resources: [{
|
|
531
|
-
type: Input
|
|
532
|
-
}], onMousemove: [{
|
|
533
|
-
type: HostListener,
|
|
534
|
-
args: ['document:mousemove', ['$event']]
|
|
535
|
-
}], onMouseUp: [{
|
|
536
|
-
type: HostListener,
|
|
537
|
-
args: ['document:mouseup', ['$event']]
|
|
538
|
-
}] } });
|
|
539
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2NoZWR1bGVyL3NyYy9jb21wb25lbnRzL3NjaGVkdWxlci9zY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zY2hlZHVsZXIvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGVyL3NjaGVkdWxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU81RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7Ozs7OztBQVk3RSxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLG9CQUE0QyxFQUFVLGVBQWtDO1FBQXhGLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBd0I7UUFBVSxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUE2SjVHLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBK0IsRUFBRSxDQUFDLENBQUM7UUFLbkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FB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R0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUM7Z0NBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dDQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dDQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dDQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDL0I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQUMsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O2lIQWxoQlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsbWhCQ3ZCakMsNjBPQTRHTTsyRkRyRk8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWM7NklBeUxGLGdCQUFnQjtzQkFBckMsWUFBWTt1QkFBQyxNQUFNO2dCQXdCSCxVQUFVO3NCQUExQixNQUFNO2dCQUlhLElBQUk7c0JBQXZCLEtBQUs7Z0JBZVcsaUJBQWlCO3NCQUFqQyxNQUFNO2dCQUlhLFdBQVc7c0JBQTlCLEtBQUs7Z0JBS1cscUJBQXFCO3NCQUFyQyxNQUFNO2dCQUlhLGVBQWU7c0JBQWxDLEtBQUs7Z0JBS1UsY0FBYztzQkFBN0IsS0FBSztnQkFNYyxTQUFTO3NCQUE1QixLQUFLO2dCQWdKTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkY5QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJzQ2FsZW5kYXJNb250aFNlcnZpY2UgfSBmcm9tICdAbWludHBsYXllci9uZy1ib290c3RyYXAvY2FsZW5kYXItbW9udGgnO1xuaW1wb3J0IHsgRVNjaGVkdWxlck1vZGUgfSBmcm9tICcuLi8uLi9lbnVtcy9zY2hlZHVsZXItbW9kZSc7XG5pbXBvcnQgeyBFRHJhZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL2RyYWctb3BlcmF0aW9uJztcbmltcG9ydCB7IERyYWdPcGVyYXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2RyYWctb3BlcmF0aW9uJztcbmltcG9ydCB7IFByZXZpZXdFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcHJldmlldy1ldmVudCc7XG5pbXBvcnQgeyBTY2hlZHVsZXJFdmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50JztcbmltcG9ydCB7IFNjaGVkdWxlckV2ZW50UGFydCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLWV2ZW50LXBhcnQnO1xuaW1wb3J0IHsgU2NoZWR1bGVyRXZlbnRXaXRoUGFydHMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NjaGVkdWxlci1ldmVudC13aXRoLXBhcnRzJztcbmltcG9ydCB7IFRpbWVTbG90IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90aW1lLXNsb3QnO1xuaW1wb3J0IHsgQnNUaW1lbGluZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aW1lbGluZS90aW1lbGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Jlc291cmNlLWdyb3VwJztcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXNvdXJjZSc7XG5pbXBvcnQgeyBTY2hlZHVsZXJTdGFtcFdpdGhTbG90cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NoZWR1bGVyLXN0YW1wLXdpdGgtc2xvdHMnO1xuaW1wb3J0IHsgV2Vla09wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dlZWstb3B0aW9ucyc7XG5pbXBvcnQgeyBUaW1lbGluZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3RpbWVsaW5lLW9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zY2hlZHVsZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2NoZWR1bGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2NoZWR1bGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJzU2NoZWR1bGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYWxlbmRhck1vbnRoU2VydmljZTogQnNDYWxlbmRhck1vbnRoU2VydmljZSwgcHJpdmF0ZSB0aW1lbGluZVNlcnZpY2U6IEJzVGltZWxpbmVTZXJ2aWNlKSB7XG4gICAgY29uc3QgbW9uZGF5ID0gdGhpcy5jYWxlbmRhck1vbnRoU2VydmljZS5nZXRNb25kYXlCZWZvcmUobmV3IERhdGUoKSk7XG4gICAgdGhpcy5jdXJyZW50V2Vla09yTW9udGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihtb25kYXkpO1xuXG4gICAgdGhpcy5zaG93bkRheXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLCB0aGlzLm1vZGUkXSlcbiAgICAgIC5waXBlKG1hcCgoW2N1cnJlbnREYXksIG1vZGVdKSA9PiB7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0SG91cnMoMCk7XG4gICAgICAgIGN1cnJlbnREYXkuc2V0TWludXRlcygwKTtcbiAgICAgICAgY3VycmVudERheS5zZXRTZWNvbmRzKDApO1xuICAgICAgICBjdXJyZW50RGF5LnNldE1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS53ZWVrOiB7XG4gICAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShBcnJheSg3KS5rZXlzKCkpLm1hcCgoeCkgPT4gdGhpcy5hZGREYXlzKGN1cnJlbnREYXksIHgpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZToge1xuICAgICAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZShjdXJyZW50RGF5LmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXkuZ2V0TW9udGgoKSwgMSk7XG4gICAgICAgICAgICBjb25zdCBkYXlzT2ZNb250aCA9IG5ldyBEYXRlKGN1cnJlbnREYXkuZ2V0RnVsbFllYXIoKSwgY3VycmVudERheS5nZXRNb250aCgpICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oQXJyYXkoZGF5c09mTW9udGgpLmtleXMoKSkubWFwKCh4KSA9PiB0aGlzLmFkZERheXMoZmlyc3REYXksIHgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCA9IHRoaXMuc2hvd25EYXlzJFxuICAgICAgLnBpcGUobWFwKChzaG93bkRheXMpID0+ICh7IHN0YXJ0OiBzaG93bkRheXNbMF0uZ2V0VGltZSgpLCBlbmQ6IHNob3duRGF5c1tzaG93bkRheXMubGVuZ3RoIC0gMV0uZ2V0VGltZSgpICsgMjQgKiA2MCAqIDYwICogMTAwMCB9KSkpO1xuICAgIFxuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMucmVzb3VyY2VzJFxuICAgICAgLnBpcGUobWFwKChyZXNvdXJjZXNPckdyb3VwcykgPT4gcmVzb3VyY2VzT3JHcm91cHMubWFwKHJlc09yR3JvdXAgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChyZXNPckdyb3VwKSkpKVxuICAgICAgLnBpcGUobWFwKGphZ2dlZFJlc291cmNlcyA9PiBqYWdnZWRSZXNvdXJjZXMucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKSkpXG4gICAgICAucGlwZShtYXAocmVzb3VyY2VzID0+IHJlc291cmNlcy5tYXAocmVzID0+IHJlcy5ldmVudHMpKSlcbiAgICAgIC5waXBlKG1hcChqYWdnZWRFdmVudHMgPT4gamFnZ2VkRXZlbnRzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4pLCBbXSkpKTtcblxuICAgICAgLy8gZ3JvdXBzLnJlZHVjZSgoZmxhdCwgdG9GbGF0dGVuKSA9PiBmbGF0LmNvbmNhdCh0b0ZsYXR0ZW4uY2hpbGRyZW4pLCBbXSlcbiAgICB0aGlzLmV2ZW50UGFydHMkID0gdGhpcy5ldmVudHMkLnBpcGUoXG4gICAgICBtYXAoKGV2ZW50cykgPT4gIGV2ZW50cy5tYXAoKGV2KSA9PiB0aGlzLnRpbWVsaW5lU2VydmljZS5zcGxpdEluUGFydHMoZXYpKSlcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudFBhcnRzRm9yVGhpc1dlZWskID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQsXG4gICAgICB0aGlzLmV2ZW50UGFydHMkXG4gICAgICAgIC5waXBlKG1hcChldmVudFBhcnRzID0+IGV2ZW50UGFydHMubWFwKGV2cCA9PiBldnAucGFydHMpKSlcbiAgICAgICAgLnBpcGUobWFwKGphZ2dlZFBhcnRzID0+ICBqYWdnZWRQYXJ0cy5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pKSlcbiAgICAgIF0pXG4gICAgICAucGlwZShtYXAoKFtzdGFydEFuZEVuZCwgZXZlbnRQYXJ0c10pID0+IHtcbiAgICAgICAgcmV0dXJuIGV2ZW50UGFydHMuZmlsdGVyKGV2ZW50UGFydCA9PiB7XG4gICAgICAgICAgcmV0dXJuICEoKGV2ZW50UGFydC5lbmQuZ2V0VGltZSgpIDw9IHN0YXJ0QW5kRW5kLnN0YXJ0KSB8fCAoZXZlbnRQYXJ0LnN0YXJ0LmdldFRpbWUoKSA+PSBzdGFydEFuZEVuZC5lbmQpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSk7XG5cbiAgICB0aGlzLnByZXZpZXdFdmVudFBhcnRzJCA9IHRoaXMucHJldmlld0V2ZW50JC5waXBlKFxuICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZVNlcnZpY2Uuc3BsaXRJblBhcnRzKGV2ZW50KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5wcmV2aWV3RXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF5c09mV2Vla1dpdGhUaW1lc3RhbXBzJCwgdGhpcy5wcmV2aWV3RXZlbnRQYXJ0cyRdKVxuICAgICAgLnBpcGUobWFwKChbc3RhcnRBbmRFbmQsIHByZXZpZXdFdmVudFBhcnRzXSkgPT4ge1xuICAgICAgICBpZiAocHJldmlld0V2ZW50UGFydHMpIHtcbiAgICAgICAgICByZXR1cm4gcHJldmlld0V2ZW50UGFydHMucGFydHMuZmlsdGVyKGV2ZW50UGFydCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISgoZXZlbnRQYXJ0LmVuZC5nZXRUaW1lKCkgPD0gc3RhcnRBbmRFbmQuc3RhcnQpIHx8IChldmVudFBhcnQuc3RhcnQuZ2V0VGltZSgpID49IHN0YXJ0QW5kRW5kLmVuZCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuXG4gICAgdGhpcy50aW1lbGluZWRFdmVudFBhcnRzRm9yVGhpc1dlZWskID0gdGhpcy5ldmVudFBhcnRzRm9yVGhpc1dlZWskXG4gICAgICAucGlwZShtYXAoZXZlbnRQYXJ0cyA9PiB7XG4gICAgICAgIC8vIFdlJ2xsIG9ubHkgdXNlIHRoZSBldmVudHMgZm9yIHRoaXMgd2Vla1xuICAgICAgICBjb25zdCBldmVudHMgPSBldmVudFBhcnRzLm1hcChlcCA9PiBlcC5ldmVudClcbiAgICAgICAgICAuZmlsdGVyKChlLCBpLCBsaXN0KSA9PiBsaXN0LmluZGV4T2YoZSkgPT09IGkpXG4gICAgICAgICAgLmZpbHRlcigoZSkgPT4gISFlKVxuICAgICAgICAgIC5tYXAoKGUpID0+IDxTY2hlZHVsZXJFdmVudD5lKTtcbiAgICAgICAgY29uc3QgdGltZWxpbmUgPSB0aGlzLnRpbWVsaW5lU2VydmljZS5nZXRUaW1lbGluZShldmVudHMpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRpbWVsaW5lLm1hcCh0cmFjayA9PiB0cmFjay5ldmVudHMubWFwKGV2ID0+ICh7IGV2ZW50OiBldiwgaW5kZXg6IHRyYWNrLmluZGV4IH0pKSlcbiAgICAgICAgICAucmVkdWNlKChmbGF0LCB0b0ZsYXR0ZW4pID0+IGZsYXQuY29uY2F0KHRvRmxhdHRlbiksIFtdKVxuICAgICAgICAgIC5tYXAoKGV2aSkgPT4gZXZlbnRQYXJ0cy5maWx0ZXIocCA9PiBwLmV2ZW50ID09PSBldmkuZXZlbnQpLm1hcChwID0+ICh7IHBhcnQ6IHAsIGluZGV4OiBldmkuaW5kZXggfSkpKVxuICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdG90YWw6IHRpbWVsaW5lLmxlbmd0aCxcbiAgICAgICAgICBwYXJ0czogcmVzdWx0XG4gICAgICAgIH07XG4gICAgICB9KSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGUkLCB0aGlzLnNob3duRGF5cyQsIHRoaXMudGltZVNsb3REdXJhdGlvbiRdKVxuICAgICAgLnBpcGUoZmlsdGVyKChbbW9kZSwgc2hvd25EYXlzLCBkdXJhdGlvbl0pID0+IG1vZGUgIT09IG51bGwpKVxuICAgICAgLnBpcGUobWFwKChbbW9kZSwgc2hvd25EYXlzLCBkdXJhdGlvbl0pID0+IHtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgY2FzZSBFU2NoZWR1bGVyTW9kZS53ZWVrOiB7XG4gICAgICAgICAgICBjb25zdCB0aW1lU2xvdHNQZXJEYXkgPSBNYXRoLmZsb29yKCg2MCAqIDYwICogMjQpIC8gZHVyYXRpb24pO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oQXJyYXkodGltZVNsb3RzUGVyRGF5KS5rZXlzKCkpLm1hcCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdGltZXNsb3RGb3JNb25kYXkgPSB0aGlzLmNyZWF0ZVRpbWVzbG90KHNob3duRGF5c1swXSwgaW5kZXgsIGR1cmF0aW9uKTtcblxuICAgICAgICAgICAgICByZXR1cm4gPFNjaGVkdWxlclN0YW1wV2l0aFNsb3RzPntcbiAgICAgICAgICAgICAgICBzbG90czogc2hvd25EYXlzLm1hcCgoZGF5KSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKGRheSk7XG4gICAgICAgICAgICAgICAgICBzdGFydC5zZXRIb3Vycyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRIb3VycygpKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldE1pbnV0ZXModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0TWludXRlcygpKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldFNlY29uZHModGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldE1pbGxpc2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5zdGFydC5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICBcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKGRheSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0SG91cnModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldEhvdXJzKCkpO1xuICAgICAgICAgICAgICAgICAgZW5kLnNldE1pbnV0ZXModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldE1pbnV0ZXMoKSk7XG4gICAgICAgICAgICAgICAgICBlbmQuc2V0U2Vjb25kcyh0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0U2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXRNaWxsaXNlY29uZHModGltZXNsb3RGb3JNb25kYXkuZW5kLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgIGVuZC5zZXREYXRlKGVuZC5nZXREYXRlKCkgKyB0aW1lc2xvdEZvck1vbmRheS5lbmQuZ2V0RGF0ZSgpIC0gdGltZXNsb3RGb3JNb25kYXkuc3RhcnQuZ2V0RGF0ZSgpKTtcbiAgICAgIFxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDxUaW1lU2xvdD57IHN0YXJ0LCBlbmQgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFtcDogdGltZXNsb3RGb3JNb25kYXkuc3RhcnRcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFRpbWVzbG90cyA9ICgyNCAqIDYwICogNjApIC8gZHVyYXRpb247XG4gICAgICAgICAgICByZXR1cm4gc2hvd25EYXlzLm1hcCgoZGF5KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiA8U2NoZWR1bGVyU3RhbXBXaXRoU2xvdHM+e1xuICAgICAgICAgICAgICAgIHNsb3RzOiBBcnJheS5mcm9tKEFycmF5KHRvdGFsVGltZXNsb3RzKS5rZXlzKCkpXG4gICAgICAgICAgICAgICAgICAubWFwKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUaW1lc2xvdChkYXksIGluZGV4LCBkdXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFtcDogZGF5XG4gICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdGhyb3cgJ1Vua25vd24gdmFsdWUgZm9yIE1vZGU6ICcgKyBtb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKCh0aW1lc2xvdHMpID0+IHtcbiAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlJ3JlIG5vdCB1c2luZyBhbiBvYnNlcnZhYmxlIGhlcmUsIGJ1dCBwZXJzaXN0IHRoZSB0aW1lc2xvdHMgaW4gYSBCZWhhdmlvclN1YmplY3QuXG4gICAgICAgIHRoaXMudGltZVNsb3RzJC5uZXh0KHRpbWVzbG90cyk7XG4gICAgICB9KTtcbiAgICBcbiAgICAgIHRoaXMud2Vla09wdGlvbnMkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHdlZWtPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMud2Vla09wdGlvbnNDaGFuZ2UuZW1pdCh3ZWVrT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgodGltZWxpbmVPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMudGltZWxpbmVPcHRpb25zQ2hhbmdlLmVtaXQodGltZWxpbmVPcHRpb25zKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gY29tYmluZUxhdGVzdChbdGhpcy5tb2RlJCwgdGhpcy5zY2FsZSRdKVxuICAgIC8vICAgLnBpcGUoZmlsdGVyKChbbW9kZSwgc2NhbGVdKSA9PiBtb2RlID09PSBFU2NoZWR1bGVyTW9kZS50aW1lbGluZSkpXG5cbiAgfVxuXG4gIHJlc291cmNlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PChSZXNvdXJjZSB8IFJlc291cmNlR3JvdXApW10+KFtdKTtcbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxTY2hlZHVsZXJFdmVudFtdPjtcbiAgZXZlbnRQYXJ0cyQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRXaXRoUGFydHNbXT47XG4gIGV2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRQYXJ0W10+O1xuICB0aW1lbGluZWRFdmVudFBhcnRzRm9yVGhpc1dlZWskOiBPYnNlcnZhYmxlPHsgdG90YWw6IG51bWJlciwgcGFydHM6IHsgcGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBpbmRleDogbnVtYmVyfVtdIH0+O1xuICB3ZWVrT3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdlZWtPcHRpb25zPih7IHVuaXRIZWlnaHQ6IDMwIH0pO1xuICB0aW1lbGluZU9wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lbGluZU9wdGlvbnM+KHsgdW5pdFdpZHRoOiA1MCB9KTtcbiAgXG4gIHByZXZpZXdFdmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByZXZpZXdFdmVudCB8IG51bGw+KG51bGwpO1xuICBwcmV2aWV3RXZlbnRQYXJ0cyQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRXaXRoUGFydHMgfCBudWxsPjtcbiAgcHJldmlld0V2ZW50UGFydHNGb3JUaGlzV2VlayQ6IE9ic2VydmFibGU8U2NoZWR1bGVyRXZlbnRQYXJ0W10+O1xuICBcbiAgY3VycmVudFdlZWtPck1vbnRoJDogQmVoYXZpb3JTdWJqZWN0PERhdGU+O1xuICBzaG93bkRheXMkOiBPYnNlcnZhYmxlPERhdGVbXT47XG4gIGRheXNPZldlZWtXaXRoVGltZXN0YW1wcyQ6IE9ic2VydmFibGU8e3N0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyfT47XG4gIHRpbWVTbG90RHVyYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDE4MDApO1xuICB0aW1lU2xvdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdPihbXSk7XG4gIG1vdXNlU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGhvdmVyZWRUaW1lU2xvdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVTbG90IHwgbnVsbD4obnVsbCk7XG4gIGhvdmVyZWRFdmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNjaGVkdWxlckV2ZW50IHwgbnVsbD4obnVsbCk7XG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdCgpO1xuICByZXNvdXJjZUdyb3VwUHJlc2VudGVyQ291bnRlciA9IDE7XG5cbiAgQFZpZXdDaGlsZHJlbignc2xvdCcpIHRpbWVTbG90RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gIGNyZWF0ZVRpbWVzbG90KGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIsIGR1cmF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lU2xvdFN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGltZVNsb3RTdGFydC5zZXRUaW1lKCt0aW1lU2xvdFN0YXJ0LmdldFRpbWUoKSArIGluZGV4ICogZHVyYXRpb24gKiAxMDAwKTtcbiAgICBjb25zdCB0aW1lU2xvdEVuZCA9IG5ldyBEYXRlKHRpbWVTbG90U3RhcnQpO1xuICAgIHRpbWVTbG90RW5kLnNldFRpbWUoK3RpbWVTbG90RW5kLmdldFRpbWUoKSArIGR1cmF0aW9uICogMTAwMCk7XG5cbiAgICByZXR1cm4gPFRpbWVTbG90Pnsgc3RhcnQ6IHRpbWVTbG90U3RhcnQsIGVuZDogdGltZVNsb3RFbmQgfTtcbiAgfVxuXG4gIGdldFJlc291cmNlc0Zvckdyb3VwKHJlc291cmNlT3JHcm91cDogUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKSA6IFJlc291cmNlW10ge1xuICAgIGlmICgnY2hpbGRyZW4nIGluIHJlc291cmNlT3JHcm91cCkge1xuICAgICAgcmV0dXJuIHJlc291cmNlT3JHcm91cC5jaGlsZHJlblxuICAgICAgICAubWFwKChjaGlsZCkgPT4gdGhpcy5nZXRSZXNvdXJjZXNGb3JHcm91cChjaGlsZCkpXG4gICAgICAgIC5yZWR1Y2UoKGZsYXQsIHRvRmxhdHRlbikgPT4gZmxhdC5jb25jYXQodG9GbGF0dGVuKSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Jlc291cmNlT3JHcm91cF07XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIE1vZGVcbiAgbW9kZXMgPSBFU2NoZWR1bGVyTW9kZTtcbiAgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVTY2hlZHVsZXJNb2RlPihFU2NoZWR1bGVyTW9kZS53ZWVrKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFU2NoZWR1bGVyTW9kZT4oKTtcbiAgcHVibGljIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbW9kZSh2YWx1ZTogRVNjaGVkdWxlck1vZGUpIHtcbiAgICB0aGlzLm1vZGUkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuICAvLyAvLyNyZWdpb24gU2NhbGVcbiAgLy8gc2NhbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTY2hlZHVsZXJTY2FsZT4oYXZhaWxhYmxlU2NhbGVzWzRdKTtcbiAgLy8gQE91dHB1dCgpIHB1YmxpYyBzY2FsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2NoZWR1bGVyU2NhbGU+KCk7XG4gIC8vIHB1YmxpYyBnZXQgc2NhbGUoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMuc2NhbGUkLnZhbHVlO1xuICAvLyB9XG4gIC8vIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2NhbGUodmFsdWU6IFNjaGVkdWxlclNjYWxlKSB7XG4gIC8vICAgdGhpcy5zY2FsZSQubmV4dCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy8gLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBXZWVrT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHdlZWtPcHRpb25zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXZWVrT3B0aW9ucz4oKTtcbiAgcHVibGljIGdldCB3ZWVrT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy53ZWVrT3B0aW9ucyQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCB3ZWVrT3B0aW9ucyh2YWx1ZTogV2Vla09wdGlvbnMpIHtcbiAgICB0aGlzLndlZWtPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFRpbWVsaW5lT3B0aW9uc1xuICBAT3V0cHV0KCkgcHVibGljIHRpbWVsaW5lT3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZWxpbmVPcHRpb25zPigpO1xuICBwdWJsaWMgZ2V0IHRpbWVsaW5lT3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lbGluZU9wdGlvbnMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdGltZWxpbmVPcHRpb25zKHZhbHVlOiBUaW1lbGluZU9wdGlvbnMpIHtcbiAgICB0aGlzLnRpbWVsaW5lT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBtYXhJbm5lckhlaWdodFxuICBASW5wdXQoKSBwdWJsaWMgbWF4SW5uZXJIZWlnaHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFJlc291cmNlc1xuICBwdWJsaWMgZ2V0IHJlc291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXMkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcmVzb3VyY2VzKHZhbHVlOiAoUmVzb3VyY2UgfCBSZXNvdXJjZUdyb3VwKVtdKSB7XG4gICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodmFsdWUpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByaXZhdGUgYWRkRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXN1bHQuc2V0RGF0ZShyZXN1bHQuZ2V0RGF0ZSgpICsgZGF5cyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uUHJldmlvdXNXZWVrT3JNb250aCgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlV2Vla09yTW9udGgoZmFsc2UpO1xuICB9XG5cbiAgb25OZXh0V2Vla09yTW9udGgoKSB7XG4gICAgdGhpcy5vbkNoYW5nZVdlZWtPck1vbnRoKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZVdlZWtPck1vbnRoKG5leHQ6IGJvb2xlYW4pIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmN1cnJlbnRXZWVrT3JNb250aCQsIHRoaXMubW9kZSRdKVxuICAgICAgLnBpcGUobWFwKChbY3VycmVudFdlZWtPck1vbnRoLCBtb2RlXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLndlZWs6IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZERheXMoY3VycmVudFdlZWtPck1vbnRoLCAobmV4dCA/IDcgOiAtNykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEVTY2hlZHVsZXJNb2RlLnRpbWVsaW5lOiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoY3VycmVudFdlZWtPck1vbnRoLmdldEZ1bGxZZWFyKCksIGN1cnJlbnRXZWVrT3JNb250aC5nZXRNb250aCgpICsgKG5leHQgPyAxIDogLTEpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgodykgPT4gdGhpcy5jdXJyZW50V2Vla09yTW9udGgkLm5leHQodykpO1xuICB9XG5cbiAgb25Ib3ZlckV2ZW50KGV2OiBTY2hlZHVsZXJFdmVudCB8IG51bGwpIHtcbiAgICB0aGlzLmhvdmVyZWRFdmVudCQubmV4dChldik7XG4gIH1cblxuICBvbkxlYXZlRXZlbnQoZXY6IFNjaGVkdWxlckV2ZW50IHwgbnVsbCkge1xuICAgIHRoaXMuaG92ZXJlZEV2ZW50JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdTdGFydFRpbWVzbG90OiBUaW1lU2xvdCB8IG51bGwgPSBudWxsO1xuICBvbkNyZWF0ZUV2ZW50KGV2OiBNb3VzZUV2ZW50LCBzbG90OiBUaW1lU2xvdCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5tb3VzZVN0YXRlJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgPSBzbG90O1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudCxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIHN0YXJ0OiBzbG90LnN0YXJ0LFxuICAgICAgICBlbmQ6IHNsb3QuZW5kLFxuICAgICAgICBjb2xvcjogJyNGMDAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgZXZlbnQnLFxuICAgICAgfSxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBzbG90LnN0YXJ0LCBlbmQ6IHNsb3QuZW5kIH0pO1xuICB9XG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgY29uc3QgYnJpZ2h0bmVzcyA9IDEyODtcbiAgICByZXR1cm4gJyMnICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpICsgdGhpcy5yYW5kb21DaGFubmVsKGJyaWdodG5lc3MpO1xuICB9XG4gIHJhbmRvbUNoYW5uZWwoYnJpZ2h0bmVzczogbnVtYmVyKXtcbiAgICBjb25zdCByID0gMjU1LWJyaWdodG5lc3M7XG4gICAgY29uc3QgbiA9IDB8KChNYXRoLnJhbmRvbSgpICogcikgKyBicmlnaHRuZXNzKTtcbiAgICBjb25zdCBzID0gbi50b1N0cmluZygxNik7XG4gICAgcmV0dXJuIChzLmxlbmd0aD09MSkgPyAnMCcrcyA6IHM7XG4gIH1cblxuICBvblN0YXJ0RHJhZ0V2ZW50KGV2ZW50UGFydDogU2NoZWR1bGVyRXZlbnRQYXJ0LCBldjogTW91c2VFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5ob3ZlcmVkVGltZVNsb3QkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChob3ZlcmVkVGltZVNsb3QpID0+IHtcbiAgICAgIGlmIChldmVudFBhcnQuZXZlbnQpIHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWRUaW1lU2xvdDtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQsXG4gICAgICAgICAgZXZlbnQ6IGV2ZW50UGFydC5ldmVudCxcbiAgICAgICAgICBtZXRhOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudFBhcnQuZXZlbnQuc3RhcnQsIGVuZDogZXZlbnRQYXJ0LmV2ZW50LmVuZCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uU3RhcnRSZXNpemVFdmVudChldmVudDogU2NoZWR1bGVyRXZlbnQgfCBudWxsLCBwb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgICAgICBjYXNlICd0b3AnOiB7XG4gICAgICAgICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICAgICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZUV2ZW50LFxuICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgbWV0YTogeyBwb3NpdGlvbiB9LFxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dCh7IHN0YXJ0OiBldmVudC5zdGFydCwgZW5kOiBldmVudC5lbmQgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6IHtcbiAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQsXG4gICAgICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7IHBvc2l0aW9uIH0sXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KHsgc3RhcnQ6IGV2ZW50LnN0YXJ0LCBlbmQ6IGV2ZW50LmVuZCB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gaG92ZXJlZFRpbWVzbG90JFxuICBwcml2YXRlIGdldEhvdmVyZWRUaW1lc2xvdChldjogTW91c2VFdmVudCwgdGltZVNsb3RzOiBTY2hlZHVsZXJTdGFtcFdpdGhTbG90c1tdKSB7XG4gICAgY29uc3QgaG92ZXJlZFNsb3RzID0gdGhpcy50aW1lU2xvdEVsZW1lbnRzLmZpbHRlcigoZWwpID0+IHtcbiAgICAgIGNvbnN0IHJjdCA9IGVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBpZiAocmN0LmxlZnQgPD0gZXYueCAmJiBldi54IDw9IHJjdC5yaWdodCAmJiByY3QudG9wIDw9IGV2LnkgJiYgZXYueSA8PSByY3QuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFob3ZlcmVkU2xvdHMgfHwgaG92ZXJlZFNsb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2xvdEVsZW1lbnQgPSBob3ZlcmVkU2xvdHNbMF0ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHN0clJvdyA9IHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICBpZiAoIXN0clJvdykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvdyA9IHBhcnNlSW50KHN0clJvdyk7XG5cbiAgICBjb25zdCBzdHJDb2x1bW4gPSBzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sdW1uJyk7XG4gICAgaWYgKCFzdHJDb2x1bW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSBwYXJzZUludChzdHJDb2x1bW4pO1xuXG4gICAgY29uc3Qgc2xvdCA9IHRpbWVTbG90c1tyb3ddLnNsb3RzW2NvbHVtbl07XG4gICAgcmV0dXJuIHNsb3Q7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBvbk1vdXNlbW92ZShldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMudGltZVNsb3RzJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodGltZVNsb3RzKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5nZXRIb3ZlcmVkVGltZXNsb3QoZXYsIHRpbWVTbG90cyk7XG4gICAgICB0aGlzLmhvdmVyZWRUaW1lU2xvdCQubmV4dChob3ZlcmVkKTtcblxuICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5vcGVyYXRpb24ub3BlcmF0aW9uKSB7XG4gICAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uLmV2ZW50ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QgJiYgaG92ZXJlZCAmJiAodGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kLmdldFRpbWUoKSAhPSBob3ZlcmVkLmVuZC5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA9PT0gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyAxIHNsb3RcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0LmdldFRpbWUoKSA8IGhvdmVyZWQuc3RhcnQuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJhZyBkb3duXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLmRyYWdTdGFydFRpbWVzbG90LnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IGhvdmVyZWQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpID4gaG92ZXJlZC5zdGFydC5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBEcmFnIHVwXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RXZlbnQkXG4gICAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgICAucGlwZShtYXAoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLmRyYWdTdGFydFRpbWVzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSBob3ZlcmVkLnN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICAgIGV2LmVuZCA9IHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLnByZXZpZXdFdmVudCQubmV4dChldikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLm1vdmVFdmVudDoge1xuICAgICAgICAgICAgaWYgKGhvdmVyZWQgJiYgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkge1xuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2KSA9PiAhIWV2ICYmICEhdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCkpXG4gICAgICAgICAgICAgICAgLnBpcGUobWFwKChldikgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ICYmIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gIDxQcmV2aWV3RXZlbnQ+e1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBuZXcgRGF0ZShldi5zdGFydC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICBlbmQ6IG5ldyBEYXRlKGV2LmVuZC5nZXRUaW1lKCkgKyBob3ZlcmVkLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMuZHJhZ1N0YXJ0VGltZXNsb3Quc3RhcnQuZ2V0VGltZSgpKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IGhvdmVyZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcmV2aWV3RXZlbnQkLm5leHQoZXYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGJyZWFrO1xuICAgICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICAgIGlmIChob3ZlcmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JFxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoZXYpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldiAmJiB0aGlzLm9wZXJhdGlvbiAmJiB0aGlzLm9wZXJhdGlvbi5ldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24ubWV0YS5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBldi5zdGFydCA9IGhvdmVyZWQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuZW5kID0gdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0aW9uLm1ldGEucG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZXYuc3RhcnQgPSB0aGlzLm9wZXJhdGlvbi5ldmVudC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgICBldi5lbmQgPSBob3ZlcmVkLmVuZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2O1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMucHJldmlld0V2ZW50JC5uZXh0KGV2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbikge1xuICAgICAgc3dpdGNoICh0aGlzLm9wZXJhdGlvbi5vcGVyYXRpb24pIHtcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5jcmVhdGVFdmVudDoge1xuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucHJldmlld0V2ZW50JF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3ByZXZpZXdFdmVudF0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHByZXZpZXdFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlcmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWdTdGFydFRpbWVzbG90ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc291cmNlcyQubmV4dChbXG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJlc291cmNlcyQudmFsdWUsXG4gICAgICAgICAgICAgICAgICA8UmVzb3VyY2U+e1xuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05ldyByZXNvdXJjZSBncm91cCcsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50czogW3tcbiAgICAgICAgICAgICAgICAgICAgICBzdGFydDogcHJldmlld0V2ZW50LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgIGVuZDogcHJldmlld0V2ZW50LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5yYW5kb21Db2xvcigpLFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmV3IGV2ZW50J1xuICAgICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld0V2ZW50JC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSBFRHJhZ09wZXJhdGlvbi5tb3ZlRXZlbnQ6XG4gICAgICAgIGNhc2UgRURyYWdPcGVyYXRpb24ucmVzaXplRXZlbnQ6IHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXYpID0+ICEhZXYpKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByZXZpZXdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRpb24gJiYgdGhpcy5vcGVyYXRpb24uZXZlbnQgJiYgcHJldmlld0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuc3RhcnQgPSBwcmV2aWV3RXZlbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVyYXRpb24uZXZlbnQuZW5kID0gcHJldmlld0V2ZW50LmVuZDtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnU3RhcnRUaW1lc2xvdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvdXJjZXMkLm5leHQodGhpcy5yZXNvdXJjZXMkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdFdmVudCQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gdy0xMDAgb3ZlcmZsb3cteS1hdXRvIG1iLTAgd2Vlay1zY2hlZHVsZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm51bGxcIlxuICAgICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy53ZWVrXCI+XG4gICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjYWxlbmRhci1sZWZ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBmbGV4LXN0YXJ0XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgZmxleC1lbmRcIiAoY2xpY2spPVwib25OZXh0V2Vla09yTW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBjYWxlbmRhci1oZWFkLWNlbGxcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIChzaG93bkRheXMkIHwgYXN5bmMpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWJsb2NrIGNvbC1mb3JtLWxhYmVsIHRleHQtY2VudGVyIHRleHQtbm93cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRheSB8IGRhdGU6ICdkZC1NTScgfX08L3NwYW4+PHNwYW4gY2xhc3M9XCJkLW5vbmUgZC1sZy1pbmxpbmUtYmxvY2tcIj4te3sgZGF5IHwgZGF0ZTogJ3l5eXknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiIFtzdHlsZS5oZWlnaHQucHhdPVwibWF4SW5uZXJIZWlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyByb3dcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIod2Vla09wdGlvbnMkIHwgYXN5bmMpIGFzIHdlZWtPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBUaW1lc2xvdHMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGltZXNsb3RzIG9mIHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IHAtMCB0aW1lc2xvdFwiIFtzdHlsZS5oZWlnaHQucHhdPVwid2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY2VsbCBjYWxlbmRhci1sZWZ0IGFsaWduLXRvcCBweC0yIHB5LTBcIj57eyB0aW1lc2xvdHMuc2xvdHNbMF0uc3RhcnQgfCBkYXRlOiAnSEg6bW06c3MnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsIGZsZXgtZ3Jvdy0xXCIgKm5nRm9yPVwibGV0IHNsb3Qgb2YgdGltZXNsb3RzLnNsb3RzOyBsZXQgaiA9IGluZGV4XCIgI3Nsb3QgKG1vdXNlZG93bik9XCJvbkNyZWF0ZUV2ZW50KCRldmVudCwgc2xvdClcIiBbYXR0ci5kYXRhLXJvd109XCJpXCIgW2F0dHIuZGF0YS1jb2x1bW5dPVwialwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBFdmVudHMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIih0aW1lU2xvdER1cmF0aW9uJCB8IGFzeW5jKSBhcyB0aW1lU2xvdER1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVkRXZlbnRQYXJ0c0ZvclRoaXNXZWVrJCB8IGFzeW5jKSBhcyBwYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHBhcnREYXRhLnBhcnRzXCIgY2xhc3M9XCJldmVudCBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVG9kYXlPZmZzZXQpIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKGV2ZW50UGFydC5wYXJ0IHwgYnNTZWNvbmRzVGltZXNwYW4pIC8gdGltZVNsb3REdXJhdGlvbiAqIHdlZWtPcHRpb25zLnVuaXRIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIidjYWxjKDkwcHggKyAoKDEwMCUgLSA5MHB4KSAvIDcgKiAnICsgKChldmVudFBhcnQucGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXJcIiBbY2xhc3MuaG92ZXJdPVwiKGhvdmVyZWRFdmVudCQgfCBhc3luYykgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnKSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQucGFydCB8IGJzU2Vjb25kc1RpbWVzcGFuKSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cIidjYWxjKDEwMCUgLyAnICsgcGFydERhdGEudG90YWwgKyAnICogJyArIGV2ZW50UGFydC5pbmRleCArICcpJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1yZXNpemUgdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXZlbnRQYXJ0LnBhcnQuc3RhcnQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRSZXNpemVFdmVudChldmVudFBhcnQucGFydC5ldmVudCwgJ3RvcCcpXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1ib3JkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXdyYXBwZXJcIiAqbmdJZj1cImV2ZW50UGFydC5wYXJ0LmV2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydERyYWdFdmVudChldmVudFBhcnQucGFydCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVyRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVFdmVudChldmVudFBhcnQucGFydC5ldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1iZ1wiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImV2ZW50UGFydC5wYXJ0LmV2ZW50LmNvbG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtbGFiZWxcIj57eyBldmVudFBhcnQucGFydC5ldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXJlc2l6ZSBib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJldmVudFBhcnQucGFydC5lbmQgPT09IGV2ZW50UGFydC5wYXJ0LmV2ZW50Py5lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvblN0YXJ0UmVzaXplRXZlbnQoZXZlbnRQYXJ0LnBhcnQuZXZlbnQsICdib3R0b20nKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHByZXZpZXdFdmVudFBhcnRzRm9yVGhpc1dlZWskIHwgYXN5bmMpIGFzIHByZXZpZXdQYXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnRQYXJ0IG9mIHByZXZpZXdQYXJ0RGF0YVwiIGNsYXNzPVwiZXZlbnQgcHJldmlldyBwLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiKGV2ZW50UGFydCB8IGJzU2Vjb25kc1RvZGF5T2Zmc2V0KSAvIHRpbWVTbG90RHVyYXRpb24gKiB3ZWVrT3B0aW9ucy51bml0SGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnRdPVwiJ2NhbGMoOTBweCArICgoMTAwJSAtIDkwcHgpIC8gNyAqICcgKyAoKGV2ZW50UGFydCB8IGRheU9mV2VlaykgLSAxKSArICcpKSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5uZXIgdy0xMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihldmVudFBhcnQgfCBic1NlY29uZHNUaW1lc3BhbikgLyB0aW1lU2xvdER1cmF0aW9uICogd2Vla09wdGlvbnMudW5pdEhlaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uLTEwMCBvdmVyZmxvdy15LWF1dG8gbWItMCBiZy13aGl0ZSB0aW1lbGluZVwiICpuZ0lmPVwiKG1vZGUkIHwgYXN5bmMpID09PSBtb2Rlcy50aW1lbGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkIGQtZmxleFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGZsZXgtc3RhcnRcIiAoY2xpY2spPVwib25QcmV2aW91c1dlZWtPck1vbnRoKClcIj5cbiAgICAgICAgICAgIDxicy1pY29uIFtpY29uXT1cIidjaGV2cm9uLWxlZnQnXCIgY2xhc3M9XCJweC0wXCI+PC9icy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGgzIHB5LTIgbWItMCB0ZXh0LWNlbnRlclwiPnt7IGN1cnJlbnRXZWVrT3JNb250aCQgfCBhc3luYyB8IGRhdGU6ICdNTU1NIHl5eXknIH19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gZmxleC1zdGFydFwiIChjbGljayk9XCJvbk5leHRXZWVrT3JNb250aCgpXCI+XG4gICAgICAgICAgICA8YnMtaWNvbiBbaWNvbl09XCInY2hldnJvbi1yaWdodCdcIiBjbGFzcz1cInB4LTBcIj48L2JzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ib2R5IHRhYmxlLXJlc3BvbnNpdmUgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIG1iLTBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZVNsb3RzJCB8IGFzeW5jKSBhcyB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIiBbYXR0ci5jb2xzcGFuXT1cImRheS5zbG90cy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG9zaXRpb24tc3RpY2t5IGRheS1sYWJlbFwiPnt7IGRheS5zdGFtcCB8IGRhdGU6ICdkIEVFJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIodGltZWxpbmVPcHRpb25zJCB8IGFzeW5jKSBhcyB0aW1lbGluZU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiB0aW1lU2xvdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IHNsb3Qgb2YgZGF5LnNsb3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBwLTAgdGV4dC1jZW50ZXJcIiBbc3R5bGUud2lkdGgucHhdPVwidGltZWxpbmVPcHRpb25zLnVuaXRXaWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2xvdC5zdGFydCB8IGRhdGU6ICdISDptbScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8YnMtcmVzb3VyY2UtZ3JvdXAtcHJlc2VudGVyICpuZ0Zvcj1cImxldCBncm91cCBvZiAocmVzb3VyY2VzJCB8IGFzeW5jKVwiIFtyZXNvdXJjZUdyb3VwXT1cImdyb3VwXCIgW3RpbWVTbG90c109XCJ0aW1lU2xvdHNcIj48L2JzLXJlc291cmNlLWdyb3VwLXByZXNlbnRlcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|