{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/navigation/breadcrumb/src/breadcrumb.props.ts","../../../../../projects/components/widgets/navigation/breadcrumb/src/breadcrumb.component.ts","../../../../../projects/components/widgets/navigation/breadcrumb/src/breadcrumb.component.html","../../../../../projects/components/widgets/navigation/breadcrumb/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-breadcrumb',\n        new Map(\n            [\n                ['class', PROP_STRING],\n                ['dataset', PROP_ANY],\n                ['itemlabel', PROP_STRING],\n                ['itemid', PROP_STRING],\n                ['itemlink', PROP_STRING],\n                ['itemicon', PROP_STRING],\n                ['itemchildren', PROP_STRING],\n                ['itemclass', PROP_STRING],\n                ['itemtarget', PROP_STRING],\n                ['name', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}]\n            ]\n        )\n    );\n};\n","import {Attribute, Component, Inject, Injector, Optional} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Location } from '@angular/common';\n\nimport { getRouteNameFromLink, getUrlParams, openLink } from '@wm/core';\nimport { APPLY_STYLES_TYPE, provideAsWidgetRef, DatasetAwareNavComponent, NavNode, styler, TextContentDirective  } from '@wm/components/base';\n\nimport { registerProps } from './breadcrumb.props';\n\nconst DEFAULT_CLS = 'breadcrumb app-breadcrumb';\nconst WIDGET_CONFIG = {widgetType: 'wm-breadcrumb', hostClass: DEFAULT_CLS};\n\n@Component({\n    standalone: true,\n    imports: [TextContentDirective],\n    selector: '[wmBreadcrumb]',\n    templateUrl: './breadcrumb.component.html',\n    providers: [\n        provideAsWidgetRef(BreadcrumbComponent)\n    ]\n})\nexport class BreadcrumbComponent extends DatasetAwareNavComponent {\n    static initializeProps = registerProps();\n    private disableMenuContext: boolean;\n\n    constructor(\n        inj: Injector,\n        private route: Router,\n        private location: Location,\n        @Attribute('beforenavigate.event') beforeNavigateCB: string,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n        styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n        this.disableMenuContext = !!beforeNavigateCB;\n    }\n\n    /**\n     * Gets the first path found based on the key provided inside info Object.\n     * @param info - Info object which has properties key(Active Page Name) and isPathFound[boolean] is set true if path found.\n     * @param children - a child Object form children Array.\n     * @param path - final path.\n     * @returns {*|Array}: returns array of objects which represents the final path.\n     */\n    private getPath(info: {key: string, isPathFound: boolean}, children: Array<NavNode>, path = []): Array<NavNode> {\n        children.forEach((child: NavNode) => {\n            // return if path already found.\n            if (info.isPathFound) {\n                return path;\n            }\n            // if key is matched set path found to true and return the path.\n            if (child.id === info.key) {\n                info.isPathFound = true;\n                // only push the child object by omiting the children within it.\n                path.push(child);\n                return path;\n            }\n            // if the node has children make a recursive call.\n            if (child.children.length) {\n                path.push(child);\n                this.getPath(info, child.children, path);\n                // if path is not found in that node pop the node.\n                if (!info.isPathFound) {\n                    path.pop();\n                }\n            }\n        });\n        // return the path.\n        return path;\n    }\n\n    private getCurrentRoute(): string {\n        return this.location.path().substr(1).split('?')[0];\n    }\n\n    // over rides resetNode function, generating path for the breadcrumb.\n    protected resetNodes() {\n        super.resetNodes();\n        // get path only if the widget have id property.\n        if (this.itemid || this.binditemid) {\n            this.nodes = this.getPath({key: this.getCurrentRoute(), isPathFound: false}, this.nodes);\n        }\n\n    }\n\n    onItemClick ($event: Event, $item: any) {\n        $event.preventDefault();\n        const locals = {$item: $item.value, $event};\n        const canNavigate = !(this.invokeEventCallback('beforenavigate', locals) === false);\n        const linkTarget = $item.target;\n        let itemLink = $item.link;\n\n        if (itemLink && canNavigate) {\n            if (itemLink.startsWith('#/') && (!linkTarget || linkTarget === '_self')) {\n                const queryParams = getUrlParams(itemLink);\n                itemLink = getRouteNameFromLink(itemLink);\n                this.route.navigate([itemLink], { queryParams});\n            } else {\n                openLink(itemLink, linkTarget);\n            }\n        }\n    }\n\n}\n","@for (item of nodes; track item; let last = $last; let index = $index) {\n  <li [class.active]=\"last\" class=\"{{item.class}}\">\n    <i class=\"{{item.icon}}\"></i>\n    @if (!last) {\n      <a [title]=\"item.label\" href=\"javascript:void(0)\" [wmNavigationControl]=\"item.link\" [disableMenuContext]=\"disableMenuContext || !!item.action\" (click)=\"onItemClick($event, item)\" [textContent]=\"item.label\"></a>\n    }\n    @if (last) {\n      <a [title]=\"item.label\" [textContent]=\"item.label\" href=\"javascript:void(0)\" class=\"text-muted\"\n      tabindex=\"0\" aria-current=\"page\"></a>\n    }\n  </li>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}