{"version":3,"file":"eurosat-side-menu.mjs","sources":["../../../projects/side-menu/src/lib/es-side-menu.translates.ts","../../../projects/side-menu/src/lib/es-side-menu-item/es-side-menu-item.component.ts","../../../projects/side-menu/src/lib/es-side-menu-item/es-side-menu-item.component.html","../../../projects/side-menu/src/lib/es-side-menu-item/es-side-menu-item.module.ts","../../../projects/side-menu/src/lib/es-side-menu.component.ts","../../../projects/side-menu/src/lib/es-side-menu.component.html","../../../projects/side-menu/src/lib/es-side-menu.module.ts","../../../projects/side-menu/src/public_api.ts","../../../projects/side-menu/src/eurosat-side-menu.ts"],"sourcesContent":["\nexport class EsSideMenuTranslates {\n\n    static ADD_BOOKMARK          = 'an.es-side-menu.add.bookmark';\n    static EDIT_BOOKMARK         = 'an.es-side-menu.edit.bookmark';\n\n    defaults = {\n        [EsSideMenuTranslates.ADD_BOOKMARK]: 'Add bookmark',\n        [EsSideMenuTranslates.EDIT_BOOKMARK]: 'Edit bookmark',\n\n    };\n\n    static getDefaults() {\n        const self = new EsSideMenuTranslates;\n        return self.defaults;\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges, OnInit,\n    Output\n} from '@angular/core';\nimport {IEsMenu} from '../es-menu.interface';\nimport {EsIcon, EsIconModule} from '@eurosat/icon';\nimport {EsSideMenuTranslates} from '../es-side-menu.translates';\nimport {CdkDragDrop, DragDropModule, moveItemInArray} from '@angular/cdk/drag-drop';\nimport {CommonModule} from '@angular/common';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RouterModule} from '@angular/router';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n    selector: 'es-side-menu-item',\n    templateUrl: './es-side-menu-item.component.html',\n    styleUrls: ['./es-side-menu-item.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n        EsIconModule,\n        MatButtonModule,\n        RouterModule,\n        MatTooltipModule,\n        TranslateModule,\n        DragDropModule,\n    ]\n})\nexport class EsSideMenuItemComponent implements OnInit, OnChanges {\n\n    @Input() node: IEsMenu;\n    @Input() isParentExpanded = true;\n    @Input() isWide = false;\n    @Input() level = 1;\n    @Input() selectedNodes: IEsMenu[];\n    @Input() sideNavOpened = false;\n    @Input() smallScreen = false;\n    @Input() dragDrop = false;\n    @Output() addBookmarkClick: EventEmitter<any> = new EventEmitter<any>();\n    @Output() editBookmarkClick = new EventEmitter<IEsMenu>();\n    @Output() reorder = new EventEmitter<void>();\n\n    isExpanded = true;\n    isSelected = true;\n    isDraggable = false;\n    classes: {[index: string]: boolean };\n    translates = EsSideMenuTranslates;\n\n    nodeChildren: IEsMenu[];\n    esIcon = EsIcon;\n\n    ngOnInit() {\n        this.isDraggable = this.dragDrop && this.node.draggable !== undefined && this.node.draggable;\n    }\n\n    ngOnChanges() {\n        this.nodeChildren = this.node && this.node.children ? this.node.children : [];\n\n        if (this.selectedNodes) {\n            const ix = this.selectedNodes.indexOf(this.node);\n            this.isSelected = ix !== -1; // this node is the selected node or its ancestor\n            this.isExpanded = this.isParentExpanded &&\n                (this.isSelected || // expand if selected or ...\n                    // preserve expanded state when display is wide; collapse in mobile.\n                    (this.isWide && this.isExpanded));\n        } else {\n            this.isSelected = false;\n        }\n        this.setClasses();\n    }\n\n    setClasses() {\n        this.classes = {\n            ['level-' + this.level]: this.smallScreen,\n            collapsed: !this.isExpanded,\n            expanded: this.isExpanded,\n            selectedMenu: this.isSelected\n        };\n    }\n    headerClicked() {\n        this.isExpanded = !this.isExpanded;\n        this.setClasses();\n    }\n\n    onNodeClick(node: IEsMenu) {\n        if (this.selectedNodes[0]) {\n            this.selectedNodes[0].lastVisited = node.url;\n        }\n    }\n\n    onDropEnd(event: CdkDragDrop<string[]>) {\n        if (this.dragDrop) {\n            if (this.nodeChildren[event.currentIndex].draggable) {\n                moveItemInArray(this.nodeChildren, event.previousIndex, event.currentIndex);\n                this.reorder.emit();\n            }\n        }\n    }\n\n    onLinkDrag(event: any) {\n        if (this.isDraggable) {\n            event.preventDefault() ? event.preventDefault() : event.returnValue = false;\n        }\n    }\n}\n","@if (!node.children && !node.isExternal && (smallScreen || !smallScreen && sideNavOpened)) {\n    <div class=\"es-side-menu-item\">\n        <a [class.docked-icon-href]=\"!smallScreen\"\n           mat-button\n           [routerLink]=\"node.url\"\n           [queryParams]=\"node.queryParams\"\n           routerLinkActive=\"active\"\n           [ngClass]=\"classes\"\n           title=\"{{node.tooltip}}\"\n           (mousedown)=\"onLinkDrag($event)\"\n           (click)=\"onNodeClick(node)\"\n           tabindex=\"-1\"\n        >\n            @if (node.icon) {\n                <es-icon class=\"menu-icon\" [icon]=\"node.icon\" [color]=\"node.color\"></es-icon>\n            }\n            <span class=\"title\">{{ node.title }}</span>\n        </a>\n        @if (selectedNodes[0]?.showAddButton && sideNavOpened) {\n            <button\n                mat-icon-button\n                (click)=\"editBookmarkClick.emit(node)\"\n            >\n                <es-icon class=\"edit-bookmark-icon\"\n                         [icon]=\"'edit'\"\n                         [title]=\"translates.EDIT_BOOKMARK | translate\"\n                ></es-icon>\n            </button>\n        }\n    </div>\n}\n\n@if (!node.children && node.isExternal && (smallScreen || !smallScreen && sideNavOpened)) {\n    <div class=\"es-side-menu-item\">\n        <a mat-button\n           [href]=\"node.url\"\n           [ngClass]=\"classes\"\n           title=\"{{node.tooltip}}\"\n           (click)=\"onNodeClick(node)\"\n           (mousedown)=\"onLinkDrag($event)\"\n        >\n            @if (node.icon) {\n                <es-icon class=\"menu-icon\" [icon]=\"node.icon\" [color]=\"node.color\"></es-icon>\n            }\n            <span class=\"title\">{{ node.title }}</span>\n        </a>\n    </div>\n}\n\n@if (!node.children && !node.isExternal && !sideNavOpened && !smallScreen) {\n    <div class=\"es-side-menu-icon-item\">\n        <a mat-button\n           [routerLink]=\"node.url\"\n           [queryParams]=\"node.queryParams\"\n           routerLinkActive=\"active\"\n           [ngClass]=\"{'selectedMenu': isSelected}\"\n           title=\"{{node.tooltip}}\"\n           (click)=\"onNodeClick(node)\"\n           class=\"docked-icon-href\"\n           (mousedown)=\"onLinkDrag($event)\"\n        >\n            @if (node.icon) {\n                <es-icon [icon]=\"node.icon\" [color]=\"node.color\"></es-icon>\n            }\n            <span class=\"title\">&nbsp;</span>\n        </a>\n    </div>\n}\n\n@if (!node.children && node.isExternal && !sideNavOpened && !smallScreen) {\n    <div class=\"es-side-menu-icon-item\">\n        <a mat-icon-button\n           [href]=\"node.url\"\n           [ngClass]=\"{'selectedMenu': isSelected}\"\n           title=\"{{node.tooltip}}\"\n           [matTooltipPosition]=\"'after'\"\n           [matTooltip]=\"node.title\"\n           (click)=\"onNodeClick(node)\"\n           (mousedown)=\"onLinkDrag($event)\"\n        >\n            @if (node.icon) {\n                <es-icon [icon]=\"node.icon\" [color]=\"node.color\"></es-icon>\n            }\n        </a>\n    </div>\n}\n\n\n@if (node.children || (!node.hidden && !smallScreen)) {\n    <div>\n        @if (smallScreen && node.url != null) {\n            <div class=\"es-side-menu-item\">\n                <a mat-button [ngClass]=\"classes\" title=\"{{node.tooltip}}\"\n                   (click)=\"headerClicked()\" class=\"vertical-menu-item heading\"\n                   (mousedown)=\"onLinkDrag($event)\"\n                >\n                    {{ node.title }}\n                    <es-icon class=\"expand-arrow\" [style.transform]=\"isExpanded ? 'rotate(0deg)' : 'rotate(90deg)'\"\n                             [style.transition]=\"'0.5s transform'\"\n                             [icon]=\"esIcon.KEYBOARD_ARROW_DOWN\"\n                    ></es-icon>\n                </a>\n            </div>\n        }\n        @if (smallScreen && node.url == undefined) {\n            <div class=\"es-side-menu-item\">\n                <button mat-button [ngClass]=\"classes\" title=\"{{node.tooltip}}\"\n                        (click)=\"headerClicked()\" class=\"vertical-menu-item heading\"\n                        [attr.aria-pressed]=\"isExpanded\">\n                    @if (node.icon) {\n                        <es-icon class=\"menu-icon\" [icon]=\"node.icon\" [color]=\"node.color\"></es-icon>\n                    }\n                    <span class=\"title\">{{ node.title }}</span>\n                    <es-icon class=\"expand-arrow\" [style.transform]=\"isExpanded ? 'rotate(0deg)' : 'rotate(90deg)'\"\n                             [style.transition]=\"'0.5s transform'\"\n                             [icon]=\"esIcon.KEYBOARD_ARROW_DOWN\"\n                    ></es-icon>\n                </button>\n            </div>\n        }\n        @if (dragDrop) {\n            <div cdkDropList class=\"heading-children\" [ngClass]=\"classes\" (cdkDropListDropped)=\"onDropEnd($event)\">\n                @for (node of nodeChildren; track node.id) {\n                    <es-side-menu-item cdkDrag [level]=\"level + 1\" [isWide]=\"isWide\"\n                                       [isParentExpanded]=\"isExpanded\"\n                                       [selectedNodes]=\"selectedNodes\"\n                                       [sideNavOpened]=\"sideNavOpened\"\n                                       [smallScreen]=\"smallScreen\"\n                                       [node]=\"node\"\n                                       [dragDrop]=\"dragDrop\"\n                                       [cdkDragDisabled]=\"!dragDrop || node.draggable === undefined || !node.draggable\"\n                                       (editBookmarkClick)=\"editBookmarkClick.emit(node)\"\n                                       (reorder)=\"reorder.emit()\"\n                    >\n                    </es-side-menu-item>\n                }\n                @if (sideNavOpened && node.showAddButton) {\n                    <button class=\"big-add-button\"\n                            [ngClass]=\"{'es-side-menu-item': smallScreen, 'level-2': smallScreen}\"\n                            mat-button\n                            (click)=\"addBookmarkClick.emit()\"\n                    >\n                        <es-icon class=\"menu-icon\" [icon]=\"esIcon.ADD\"></es-icon>\n                        <span class=\"title\">{{ translates.ADD_BOOKMARK | translate }}</span>\n                    </button>\n                }\n                @if (!sideNavOpened && node.showAddButton) {\n                    <button class=\"small-add-button\"\n                            mat-button\n                            (click)=\"addBookmarkClick.emit()\"\n                    >\n                        <es-icon [icon]=\"esIcon.ADD\"></es-icon>&nbsp;\n                    </button>\n                }\n            </div>\n        }\n        @if (!dragDrop) {\n            <div class=\"heading-children\" [ngClass]=\"classes\">\n                @for (node of nodeChildren; track node.id) {\n                    <es-side-menu-item [level]=\"level + 1\" [isWide]=\"isWide\"\n                                       [isParentExpanded]=\"isExpanded\"\n                                       [selectedNodes]=\"selectedNodes\"\n                                       [sideNavOpened]=\"sideNavOpened\"\n                                       [smallScreen]=\"smallScreen\"\n                                       [node]=\"node\"\n                                       [dragDrop]=\"dragDrop\"\n                                       (editBookmarkClick)=\"editBookmarkClick.emit(node)\"\n                                       (reorder)=\"reorder.emit()\"\n                    >\n                    </es-side-menu-item>\n                }\n                @if (sideNavOpened && node.showAddButton) {\n                    <button class=\"big-add-button\"\n                            [ngClass]=\"{'es-side-menu-item': smallScreen, 'level-2': smallScreen}\"\n                            mat-button\n                            (click)=\"addBookmarkClick.emit()\"\n                    >\n                        <es-icon class=\"menu-icon\" [icon]=\"esIcon.ADD\"></es-icon>\n                        <span class=\"title\">{{ translates.ADD_BOOKMARK | translate }}</span>\n                    </button>\n                }\n                @if (!sideNavOpened && node.showAddButton) {\n                    <button class=\"small-add-button\"\n                            mat-button\n                            (click)=\"addBookmarkClick.emit()\"\n                    >\n                        <es-icon [icon]=\"esIcon.ADD\"></es-icon>&nbsp;\n                    </button>\n                }\n            </div>\n        }\n    </div>\n}\n","import { NgModule } from '@angular/core';\nimport { EsSideMenuItemComponent } from './es-side-menu-item.component';\n\n@NgModule({\n    imports: [EsSideMenuItemComponent],\n    exports: [EsSideMenuItemComponent]\n\n})\nexport class EsSideMenuItemModule { }\n","import {\n    ChangeDetectionStrategy, ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges, ViewEncapsulation\n} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {takeWhile} from 'rxjs/operators';\nimport {IEsMenu} from './es-menu.interface';\nimport {BreakpointObserver, Breakpoints, BreakpointState} from '@angular/cdk/layout';\nimport {CommonModule} from '@angular/common';\nimport {EsSideMenuItemModule} from './es-side-menu-item/es-side-menu-item.module';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {EsSideMenuItemComponent} from './es-side-menu-item/es-side-menu-item.component';\n\n@Component({\n    selector: 'es-side-menu',\n    templateUrl: './es-side-menu.component.html',\n    styleUrls: ['./es-side-menu.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n        CommonModule,\n        EsSideMenuItemModule,\n        MatSidenavModule,\n        EsSideMenuItemComponent\n    ]\n})\nexport class EsSideMenuComponent implements OnChanges, OnDestroy {\n\n    @Input() menu: IEsMenu[];\n    @Input() sideNavOpened = false;\n    @Input() smallScreen = false;\n    @Input() dragDrop = false;\n    @Output() addBookmarkClick: EventEmitter<any> = new EventEmitter<any>();\n    @Output() editBookmarkClick: EventEmitter<IEsMenu> = new EventEmitter<IEsMenu>();\n    @Output() onReorder: EventEmitter<IEsMenu[]> = new EventEmitter<IEsMenu[]>();\n\n    currentBranch: IEsMenu[] = [];\n    currentUrl = '';\n    currentPath = [];\n    index = 1;\n    parentMenu: IEsMenu[] = [];\n    isAlive = true;\n    isFullMenu: boolean;\n    isWide = false;\n    menuToDisplay: IEsMenu[];\n    pathname = '';\n\n    constructor(\n        private router: Router,\n        private breakpointObserver: BreakpointObserver,\n        private cd: ChangeDetectorRef,\n    ) {\n        this.router.events.pipe(takeWhile(() => this.isAlive)).subscribe(event => {\n            if (event instanceof NavigationEnd) {\n                if (this.currentUrl !== event.urlAfterRedirects.split('?', 1)[0]) {\n                    if (this.pathname !== window.location.pathname) {\n                        this.setMenu();\n                    }\n                }\n                this.pathname = window.location.pathname;\n            }\n        });\n\n        this.breakpointObserver\n            .observe([Breakpoints.XSmall, Breakpoints.Small])\n            .pipe(takeWhile(() => this.isAlive))\n            .subscribe((result: BreakpointState) => {\n                if (result.matches) {\n                    this.menuToDisplay = this.menu;\n                } else {\n                    this.menuToDisplay = this.parentMenu;\n                }\n                this.cd.markForCheck();\n            });\n    }\n\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['menu']) {\n            this.setMenu();\n        }\n    }\n    setMenu() {\n        this.isFullMenu = this.breakpointObserver.isMatched(Breakpoints.XSmall) || this.breakpointObserver.isMatched(Breakpoints.Small);\n        this.currentBranch = [];\n        this.parentMenu = [];\n\n        this.currentUrl = this.router.url;\n        if (window.location.search !== '') {\n            this.currentUrl = this.currentUrl.split(window.location.search)[0];\n        }\n        this.currentPath = this.currentUrl.split('/');\n\n        // pokud nejsem na dashbordu hledám aktuální cestu k menu\n        for (const menuBranch of this.menu) {\n            this.index = 1;\n            this.getCurrentMenu(menuBranch);\n        }\n\n        if (this.currentBranch[0] && this.currentBranch[0].hasOwnProperty('children')) {\n            this.parentMenu.push(this.currentBranch[0]);\n        }\n\n        if (this.isFullMenu) {\n            this.menuToDisplay = this.menu;\n        } else {\n            this.menuToDisplay = this.parentMenu;\n        }\n        this.cd.markForCheck();\n    }\n\n    getCurrentMenu(menuBranch: IEsMenu) {\n        const url = menuBranch.useUrlTree ?\n            this.router.createUrlTree([menuBranch.url], {queryParams: menuBranch.queryParams}) : menuBranch.url;\n        if (this.router.isActive(url, {\n            paths: 'subset',\n            queryParams: 'ignored',\n            fragment: 'ignored',\n            matrixParams: 'exact'\n        })) {\n            this.currentBranch.push(menuBranch);\n            if (menuBranch.children !== undefined) {\n                for (const child of menuBranch.children) {\n                    this.getCurrentMenu(child);\n                }\n            } else {\n                return;\n            }\n            return;\n        } else {\n            return;\n        }\n    }\n\n    onAddBookmarkClick() {\n        this.addBookmarkClick.emit();\n    }\n\n    onChildReorder() {\n        this.onReorder.emit(this.menuToDisplay);\n    }\n\n    ngOnDestroy() {\n        this.isAlive = false;\n    }\n}\n","<div class=\"es-side-menu\"\n     [class.small-screen]=\"smallScreen\"\n>\n    @for (node of menuToDisplay; track node.id) {\n        <es-side-menu-item\n            [sideNavOpened]=\"sideNavOpened\"\n            [smallScreen]=\"smallScreen\"\n            [isWide]=\"isWide\"\n            [node]=\"node\"\n            [level]=\"1\"\n            [selectedNodes]=\"currentBranch\"\n            [dragDrop]=\"dragDrop\"\n            (addBookmarkClick)=\"onAddBookmarkClick()\"\n            (editBookmarkClick)=\"editBookmarkClick.emit($event)\"\n            (reorder)=\"onChildReorder()\"\n        ></es-side-menu-item>\n    }\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { EsSideMenuComponent } from './es-side-menu.component';\nimport {EsSideMenuItemModule} from './es-side-menu-item/es-side-menu-item.module';\nimport {EsSideMenuItemComponent} from './es-side-menu-item/es-side-menu-item.component';\n\n@NgModule({\n    imports: [\n        EsSideMenuComponent,\n        EsSideMenuItemComponent,\n        EsSideMenuItemModule\n    ],\n    exports: [\n        EsSideMenuComponent,\n        EsSideMenuItemComponent,\n        EsSideMenuItemModule\n    ],\n})\nexport class EsSideMenuModule { }\n","/*\n * Public API Surface of side-menu\n */\n\nexport * from './lib/es-side-menu.component';\nexport * from './lib/es-side-menu.module';\nexport * from './lib/es-menu.interface';\nexport * from './lib/es-side-menu.translates';\nexport * from './lib/es-side-menu-item/es-side-menu-item.module';\nexport * from './lib/es-side-menu-item/es-side-menu-item.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}