@dotglitch/ngx-common 1.0.12 → 1.0.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dotglitch-ngx-common.mjs","sources":["../../../packages/common/src/directives/utils.ts","../../../packages/common/src/components/tooltip/tooltip.component.ts","../../../packages/common/src/components/tooltip/tooltip.component.html","../../../packages/common/src/directives/tooltip.directive.ts","../../../packages/common/src/components/menu/menu.component.ts","../../../packages/common/src/components/menu/menu.component.html","../../../packages/common/src/directives/menu.directive.ts","../../../packages/common/src/pipes/html-bypass.pipe.ts","../../../packages/common/src/pipes/resource-bypass.pipe.ts","../../../packages/common/src/pipes/script-bypass.pipe.ts","../../../packages/common/src/pipes/style-bypass.pipe.ts","../../../packages/common/src/pipes/url-bypass.pipe.ts","../../../packages/common/src/utils/index.ts","../../../packages/common/src/services/dependency.service.ts","../../../packages/common/src/services/dialog.service.ts","../../../packages/common/src/services/fetch.service.ts","../../../packages/common/src/services/keyboard.service.ts","../../../packages/common/src/components/lazy-loader/types.ts","../../../packages/common/src/components/lazy-loader/lazy-loader.service.ts","../../../packages/common/src/components/lazy-loader/lazy-loader.component.ts","../../../packages/common/src/components/lazy-loader/lazy-loader.component.html","../../../packages/common/src/components/lazy-loader/lazy-loader.module.ts","../../../packages/common/src/components/dynamic-html/types.ts","../../../packages/common/src/components/dynamic-html/dynamic-html.service.ts","../../../packages/common/src/components/dynamic-html/dynamic-html.component.ts","../../../packages/common/src/components/dynamic-html/dynamic-html.module.ts","../../../packages/common/src/public-api.ts","../../../packages/common/src/dotglitch-ngx-common.ts"],"sourcesContent":["/**\n * This utils file exists outside of the strict angular DI zone\n * This enables opening popups without requiring absolute DI bindings.\n */\n\nexport const getPosition = (el: HTMLElement | PointerEvent, config: any = {}, bounds: DOMRect) => {\n // Bounds of the popup owner\n const src: DOMRect = !!el['nodeName']\n ? (el as HTMLElement).getBoundingClientRect()\n : {\n // It's a pointer event, so we'll take the X and Y from the pointer.\n x: el['clientX'],\n y: el['clientY'],\n // Set a default tiny size, so we don't divide by zero.\n width: 0.0001,\n height: 0.0001\n } as DOMRect;\n\n // Popup bounds\n const { width, height } = bounds;\n\n const winh = window.innerHeight;\n const winw = window.innerWidth;\n\n const cords = {\n top: null,\n left: null\n };\n\n if (config?.position == \"left\" || config?.position == \"right\" || !config?.position) {\n switch (config?.alignment) {\n\n case \"end\": {\n // vertically bind to bottom\n cords.top = src.y + src.height - height;\n break;\n }\n case \"afterend\": {\n // vertically bind below bottom\n cords.top = src.y + src.height;\n break;\n }\n case \"beforestart\": {\n // vertically bind above top\n cords.top = src.y - height;\n break;\n }\n case \"start\": {\n // vertically bind to top\n cords.top = src.y;\n break;\n }\n case \"center\":\n default: {\n // vertically center\n cords.top = (src.y + (src.height / 2)) - (height / 2);\n break;\n }\n }\n\n // Apply bounds to prevent the dialog from being cut-off screen\n // Lower bound\n cords.top = Math.max(config?.edgePadding || 0, cords.top);\n // Upper bound\n cords.top = Math.min(winh - height, cords.top);\n\n if (config?.position == \"left\") {\n cords.left = src.x - (width + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n if (config?.position == \"right\" || !config?.position) {\n cords.left = src.x + (src.width + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n\n // Lower bound\n cords.left = Math.max(config?.edgePadding || 0, cords.left);\n // Upper bound\n cords.left = Math.min(winw - width, cords.left);\n }\n else if (config?.position == \"top\" || config?.position == \"bottom\") {\n switch (config?.alignment) {\n case \"end\": {\n // vertically bind to right\n cords.left = src.x + src.width - width;\n break;\n }\n case \"afterend\": {\n // vertically bind past right\n cords.left = src.x + src.width;\n break;\n }\n case \"beforestart\": {\n // vertically bind before left\n cords.left = src.x - width;\n break;\n }\n case \"start\": {\n // vertically bind to left\n cords.left = src.x;\n break;\n }\n case \"center\":\n default: {\n // vertically center\n cords.left = (src.x + (src.width / 2)) - (width / 2);\n break;\n }\n }\n\n // Apply bounds to prevent the dialog from being cut-off screen\n // Lower bound\n cords.left = Math.max(config?.edgePadding || 0, cords.left);\n // Upper bound\n cords.left = Math.min(winw - width, cords.left);\n\n\n if (config?.position == \"top\") {\n cords.top = src.y - (height + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n if (config?.position == \"bottom\") {\n cords.top = src.y + (src.height + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n\n // Lower bound\n cords.top = Math.max(config?.edgePadding || 0, cords.top);\n // Upper bound\n cords.top = Math.min(winh - height, cords.top);\n }\n\n // Assign unit\n cords.top = cords.top + 'px';\n cords.left = cords.left + 'px';\n\n return cords;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, HostListener, Inject, Input, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Optional } from '@angular/core';\nimport { createApplication } from '@angular/platform-browser';\nimport { firstValueFrom } from 'rxjs';\nimport { PopupOptions } from '../../types/popup';\n\nexport const calcTooltipBounds = async (template: TemplateRef<any> | Type<any>, data: any) => {\n const args = {\n data: data || {},\n template,\n config: {},\n selfCords: { left: \"0px\", top: \"0px\" },\n ownerCords: { x: 0, y: 0, width: 0, height: 0 },\n id: null\n }\n // Forcibly bootstrap the ctx menu outside of the client application's zone.\n const app = await createApplication({\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: args }\n ]\n });\n\n const del = document.createElement(\"div\");\n del.style.position = \"absolute\";\n del.style.left = '-1000vw';\n document.body.append(del);\n\n const base = app.bootstrap(TooltipComponent, del);\n const { instance } = base;\n\n await firstValueFrom(app.isStable);\n\n const el: HTMLElement = instance.viewContainer?.element?.nativeElement;\n\n const rect = el.getBoundingClientRect();\n app.destroy();\n del.remove();\n\n return rect;\n}\n\n\n@Component({\n selector: 'ngx-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [\n // NgIf,\n // NgTemplateOutlet,\n // NgComponentOutlet,\n CommonModule,\n ],\n standalone: true\n})\nexport class TooltipComponent {\n @Input() data: any;\n @Input() config: PopupOptions;\n @Input() ownerCords: DOMRect;\n @Input() selfCords;\n @Input() template: TemplateRef<any> | Type<any>;\n\n public isTemplate: boolean;\n public hasBootstrapped = false;\n public pointerIsOnVoid = false;\n public isLockedOpen = false;\n\n coverRectCords = {\n top: 0,\n left: 0,\n height: 0,\n width: 0\n }\n\n constructor(\n public viewContainer: ViewContainerRef,\n @Optional() @Inject(MAT_DIALOG_DATA) private _data: any,\n @Optional() public dialog: MatDialog, // optional only for the purpose of estimating dimensions\n @Optional() public dialogRef: MatDialogRef<any>,\n ) {\n // Defaults are set before @Input() hooks evaluate\n this.data = this.data || this._data?.data || {};\n this.config = this.config || this._data?.config;\n this.template = this.template || this._data?.template;\n this.ownerCords = this.ownerCords || this._data?.ownerCords;\n this.selfCords = this.selfCords || this._data?.selfCords;\n this.isLockedOpen = this._data?.isLockedOpen;\n }\n\n ngOnInit() {\n\n const selfY = parseInt(this.selfCords.top.replace('px', ''));\n const selfX = parseInt(this.selfCords.left.replace('px', ''));\n\n this.coverRectCords = {\n top: this.ownerCords.y - selfY - 16,\n left: this.ownerCords.x - selfX - 16,\n height: this.ownerCords.height + 32,\n width: this.ownerCords.width + 32\n }\n\n if (this.template instanceof TemplateRef)\n this.isTemplate = true;\n else if (typeof this.template == \"function\")\n this.isTemplate = false;\n else\n throw new Error(\"Unrecognized template object provided.\");\n\n // TODO: resolve the event hook with the .void element\n setTimeout(() => {\n this.hasBootstrapped = true;\n if (this.pointerIsOnVoid && !this.isLockedOpen)\n this.dialogRef.close();\n }, 200);\n }\n\n /**\n * Close the tooltip if these actions occur\n */\n @HostListener(\"window:resize\")\n @HostListener(\"window:blur\")\n @HostListener(\"pointerleave\")\n private onClose() {\n if (!this.isLockedOpen)\n this.dialogRef?.close();\n }\n\n closeOnVoid(force = false) {\n if (!this.isLockedOpen || force)\n this.dialogRef.close();\n }\n}\n","<!-- Mouse event blocker for pointer leave -->\n<div\n *ngIf=\"coverRectCords\"\n class=\"owner-mask\"\n [style.top]=\"coverRectCords.top + 'px'\"\n [style.left]=\"coverRectCords.left + 'px'\"\n [style.height]=\"coverRectCords.height + 'px'\"\n [style.width]=\"coverRectCords.width + 'px'\"\n style=\"z-index: -1;\"\n></div>\n\n<div class=\"void\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && !isLockedOpen && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"hasBootstrapped && closeOnVoid(true)\"\n></div>\n\n<div class=\"container\">\n <ng-container\n *ngIf=\"isTemplate == false\"\n [ngComponentOutlet]=\"$any(template)\"\n >\n </ng-container>\n\n <ng-container\n *ngIf=\"isTemplate == true\"\n >\n <ng-container\n [ngTemplateOutlet]=\"$any(template)\"\n [ngTemplateOutletContext]=\"{ '$implicit': data, dialog: dialogRef }\"\n ></ng-container>\n </ng-container>\n</div>\n","import { Directive, Input, HostListener, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { getPosition } from './utils';\nimport { } from '../types/popup';import { TooltipComponent, calcTooltipBounds } from '../components/tooltip/tooltip.component';\nimport { TooltipOptions } from '../types/tooltip';\n\n@Directive({\n selector: '[ngxTooltip],[ngx-tooltip]',\n providers: [\n MatDialog\n ],\n standalone: true\n})\nexport class TooltipDirective {\n\n /**\n */\n @Input(\"ngxTooltip\")\n @Input(\"ngx-tooltip\") template: TemplateRef<any> | Type<any>;\n\n /**\n * Configuration for opening the app menu\n */\n @Input(\"ngxTooltipConfig\")\n @Input(\"ngx-tooltip-config\") config: TooltipOptions = {};\n\n /**\n * Arbitrary data to pass into the template\n */\n @Input(\"ngxTooltipContext\")\n @Input(\"ngx-tooltip-context\") data: any = {};\n\n\n private dialogInstance: MatDialogRef<any>;\n private isCursorOverTarget = false;\n private isFreezeOnKeyCodeBound = false;\n\n constructor(\n private dialog: MatDialog,\n private viewContainer: ViewContainerRef\n ) {\n if (this.config.freezeOnKeyCode !== null) {\n this.isFreezeOnKeyCodeBound = true;\n document.body.addEventListener(\"keydown\", this.onKeyDownEvt);\n }\n }\n\n ngOnDestroy() {\n if (this.isFreezeOnKeyCodeBound) {\n document.body.removeEventListener(\"keydown\", this.onKeyDownEvt);\n }\n }\n\n onKeyDown(evt) {\n // TODO: fade message 'tooltip is locked open'\n if (evt.code == (\"F2\")) {\n this.dialogInstance.componentInstance.isLockedOpen = true;\n }\n }\n private onKeyDownEvt = this.onKeyDown.bind(this);\n\n // Needs to be public so we can manually open the dialog\n @HostListener('pointerenter', ['$event'])\n public async onPointerEnter(evt: PointerEvent) {\n // If the template is not a template ref, do nothing.\n if (!(this.template instanceof TemplateRef))\n return;\n\n // If the click trigger is set, we will immediately open the tooltip.\n // This will bypass all other triggers.\n if (this.config.triggers.includes(\"click\")) {\n if (!this.dialogInstance) {\n const el = this.viewContainer.element.nativeElement;\n const data = this.data;\n data.isLockedOpen = true;\n this.dialogInstance = await openTooltip(this.dialog, this.template, this.data, el, this.config);\n }\n return;\n }\n\n this.isCursorOverTarget = true;\n\n setTimeout(async () => {\n // If the cursor moved away in the time\n if (!this.isCursorOverTarget)\n return;\n\n if (!this.dialogInstance) {\n const el = this.viewContainer.element.nativeElement;\n this.dialogInstance = await openTooltip(this.dialog, this.template, this.data, el, this.config);\n }\n }, this.config.delay ?? 250);\n }\n\n @HostListener('pointerleave', ['$event'])\n public async onPointerLeave(evt: PointerEvent) {\n this.isCursorOverTarget = false;\n }\n}\n\n// Helper to open the context menu without using the directive.\nexport const openTooltip = async (\n dialog: MatDialog,\n template: TemplateRef<any> | Type<any>,\n data: any,\n el: HTMLElement,\n config?: TooltipOptions\n) => {\n\n const rect = await calcTooltipBounds(template, data);\n const ownerCords = el.getBoundingClientRect();\n const cords = getPosition(el, config, rect);\n const specificId = crypto.randomUUID();\n\n return new Promise(res => {\n dialog.open(TooltipComponent, {\n data: {\n data: data,\n template: template,\n config: config,\n ownerCords: ownerCords,\n selfCords: cords,\n id: specificId\n },\n panelClass: [\"ngx-tooltip\", 'ngx-' + specificId].concat(config?.customClass || []),\n position: cords,\n hasBackdrop: false\n })\n .afterClosed()\n .subscribe(s => {\n res(s);\n })\n }) as Promise<any>;\n};\n","import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Inject, Input, OnInit, Optional, Output, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { DomSanitizer, createApplication } from '@angular/platform-browser';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { firstValueFrom } from 'rxjs';\nimport { MenuItem, MenuOptions } from '../../types/menu';\n\nexport const calcMenuItemBounds = async (menuItems: MenuItem[], dataObj: any) => {\n const data = {\n data: dataObj,\n items: menuItems,\n config: {},\n id: null\n }\n\n return calcComponentBounds(MenuComponent, data);\n}\n\nconst calcComponentBounds = async (component: Type<any>, data: any) => {\n // Forcibly bootstrap the ctx menu outside of the client application's zone.\n const app = await createApplication({\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: data }\n ]\n });\n\n const del = document.createElement(\"div\");\n del.style.position = \"absolute\";\n del.style.left = '-1000vw';\n document.body.append(del);\n\n const base = app.bootstrap(component, del);\n const { instance } = base;\n\n await firstValueFrom(app.isStable);\n\n const el: HTMLElement = instance.viewContainer?.element?.nativeElement;\n\n const rect = el.getBoundingClientRect();\n app.destroy();\n del.remove();\n return rect;\n}\n\n@Component({\n selector: 'ngx-menu-template-wrapper',\n\n template: `\n <ng-container *ngIf=\"templateType == 'template'; else portalOutlet\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ '$implicit': data, dialog: dialogRef }\"\n />\n </ng-container>\n <ng-template #portalOutlet [cdkPortalOutlet]=\"componentPortal\" ></ng-template>\n`,\n imports: [ NgTemplateOutlet, PortalModule, NgIf ],\n standalone: true\n})\nclass TemplateWrapper {\n\n data: Object;\n template: TemplateRef<any>;\n\n templateType: \"template\" | \"component\"\n componentPortal: ComponentPortal<any>;\n\n constructor(\n @Optional() public dialogRef: MatDialogRef<any>,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n public viewContainer: ViewContainerRef\n ) {\n this.data = _data.data;\n this.template = _data.template;\n\n // TODO: This is probably invalid\n this.templateType = this.template instanceof TemplateRef ? \"template\" : \"component\";\n\n if (this.templateType == \"component\") {\n this.componentPortal = new ComponentPortal(this.template as any);\n }\n }\n}\n\n@Component({\n selector: 'ngx-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n imports: [\n NgIf,\n NgForOf,\n NgTemplateOutlet,\n MatIconModule,\n MatProgressSpinnerModule\n ],\n standalone: true\n})\nexport class MenuComponent implements OnInit {\n @Input() public data: any;\n @Input() public parentCords: DOMRect;\n @Input() public items: MenuItem[];\n @Input() public config: MenuOptions;\n @Input() public id: string;\n\n @Output() closeSignal = new EventEmitter();\n\n selfCords: DOMRect;\n // Check if there are any slashes or dots -- that will clearly exclude it from being a mat icon\n public readonly matIconRx = /[\\/\\.]/i;\n showIconColumn = true;\n showShortcutColumn = true;\n\n constructor(\n public viewContainer: ViewContainerRef,\n public sanitizer: DomSanitizer,\n @Optional() @Inject(MAT_DIALOG_DATA) private _data: any,\n @Optional() public dialog: MatDialog, // optional only for the purpose of estimating dimensions\n @Optional() public dialogRef: MatDialogRef<any>,\n private changeDetector: ChangeDetectorRef\n ) {\n // Defaults are set before @Input() hooks evaluate\n this.data = this._data?.data;\n this.parentCords = this._data?.parentCords;\n this.items = this._data?.items;\n this.config = this._data?.config;\n this.id = this._data?.id;\n }\n\n ngOnInit() {\n this.items?.forEach(i => {\n if (typeof i == \"string\") return;\n\n // Set defaults\n i['_disabled'] = false;\n i['_visible'] = true;\n\n if (i.label)\n try { i['_formattedLabel'] = this.formatLabel(i.label); } catch (e) { console.warn(e) }\n\n if (typeof i.isDisabled == \"function\")\n try { i['_disabled'] = i.isDisabled(this.data || {}); } catch(e) { console.warn(e) }\n\n if (typeof i.isVisible == \"function\")\n try { i['_visible'] = i.isVisible(this.data || {}); } catch (e) { console.warn(e) }\n\n if (typeof i.linkTemplate == \"function\")\n try { i['_link'] = i.linkTemplate(this.data || {}); } catch (e) { console.warn(e) }\n });\n\n // Show the icon column if there are any items with an icon\n this.showIconColumn = !!this.items?.find(i =>\n typeof i == \"object\" &&\n typeof i['icon'] == \"string\" &&\n i['icon'].length > 2\n );\n\n this.showShortcutColumn = !!this.items?.find(i =>\n typeof i == \"object\" &&\n typeof i['shortcut'] == \"string\" &&\n i['shortcut'].length > 2\n );\n\n // setTimeout(() => {\n // this.closeOnLeave = true\n // }, 300);\n }\n\n ngAfterViewInit() {\n if (this.parentCords) {\n this.selfCords = this.viewContainer?.element?.nativeElement?.getBoundingClientRect();\n this.changeDetector.detectChanges();\n }\n }\n\n /**\n *\n * @param item\n * @param evt\n * @returns\n */\n async onMenuItemClick(item: MenuItem, row: HTMLTableRowElement, hideBackdrop = false) {\n if (typeof item == 'string') return null;\n if (item.separator) return null;\n\n // If cache is enabled, only load if we don't have any children.\n const forceLoad = (item.cacheResolvedChildren ? !item.children : true);\n\n if (item.childrenResolver && forceLoad) {\n item['_isResolving'] = true;\n item.children = await item.childrenResolver(this.data);\n item['_isResolving'] = false;\n }\n\n if (!item.childTemplate && !item.children) {\n if (item.action) {\n item.action(this.data);\n this.close();\n }\n // If no action, this is simply a text item.\n\n return null;\n }\n\n // Need X pos, Y pos, width and height\n const bounds = row.getBoundingClientRect();\n\n const cords = {\n top: null,\n left: null,\n bottom: null,\n right: null\n };\n\n // Set position coordinates\n const { width, height } = await (item.childTemplate\n ? calcComponentBounds(TemplateWrapper, { template: item.childTemplate })\n : calcMenuItemBounds(item.children, this.data));\n\n if (bounds.y + height > window.innerHeight)\n cords.bottom = \"0px\";\n if (bounds.x + bounds.width + width > window.innerWidth)\n cords.left = ((bounds.x - width)) + \"px\";\n\n if (!cords.bottom) cords.top = bounds.y + \"px\";\n if (!cords.left) cords.left = bounds.x + bounds.width + \"px\";\n\n const component = item.children ? MenuComponent : TemplateWrapper as any;\n\n const dialogRef = this.dialog.open(component, {\n position: cords,\n panelClass: [\"ngx-menu\", \"ngx-app-menu\"].concat(this.config?.customClass || []),\n backdropClass: \"ngx-menu-backdrop\",\n hasBackdrop: !hideBackdrop,\n data: {\n data: this.data,\n parentCords: this.viewContainer?.element?.nativeElement?.getBoundingClientRect(),\n items: item.children,\n template: item.childTemplate,\n config: this.config\n }\n });\n\n let _s = dialogRef\n .afterClosed()\n .subscribe((result) => {\n if (result != -1) {\n if (result && typeof item.action == 'function')\n item.action(result);\n\n this.close();\n }\n else {\n item['_selfclose'] = Date.now();\n }\n\n _s.unsubscribe();\n });\n\n return dialogRef;\n }\n\n /**\n *\n * @param label\n * @returns\n */\n formatLabel(label: string): string {\n return label.replace(/_([a-z0-9])_/i, (match, group) => `<u>${group}</u>`);\n }\n\n /**\n * Close the context menu under these circumstances\n */\n // @HostListener(\"window:resize\", ['event'])\n // @HostListener(\"window:blur\", ['event'])\n close() {\n this.closeSignal.emit();\n\n this.dialogRef?.close();\n }\n\n /**\n * Check if the dialog is clipping offscreen\n * if so, move it back into view.\n */\n @HostListener(\"window:resize\")\n private onResize() {\n const el = this.viewContainer?.element?.nativeElement as HTMLElement;\n if (!el) return;\n\n const { width, height, x, y } = el.getBoundingClientRect();\n\n const target = document.querySelector(\".ngx-menu\") as HTMLElement;\n if (!target) return;\n\n // Move back into view if we're clipping outside of the bottom\n if (y + height > window.innerHeight) {\n const newTop = (window.innerHeight - (height + (this.config.edgePadding || 12))) + \"px\";\n target.style['margin-top'] = newTop;\n }\n\n // Move back into view if we're clipping off the right\n if (x + width > window.innerWidth) {\n const newLeft = (window.innerWidth - (width + (this.config.edgePadding || 12))) + \"px\"\n target.style['margin-left'] = newLeft;\n }\n }\n\n // private hoveredItems: MatDialogRef<any>[];\n // async onHover(item, row: HTMLTableRowElement) {\n // this.hoveredItems.forEach(i => i.close(-1));\n\n // if (typeof item['_selfclose'] == 'number' && (Date.now() - item['_selfclose']) < 3*1000) return;\n\n // const hi = await this.onMenuItemClick(item, row, true);\n // this.hoveredItems.push(hi);\n\n // hi.afterClosed().toPromise().then(e => {\n // this.viewContainer.element.nativeElement.focus();\n // this.hoveredItems.splice(this.hoveredItems.findIndex(i => i == hi), 1);\n // })\n // }\n\n // closeOnLeave = false;\n // async onLeave() {\n // if (this.closeOnLeave) {\n // if (this.hoveredItems.length > 0) {\n // this.hoveredItems.forEach(i => i.close(-1));\n // this.hoveredItems.splice(0);\n // }\n // else {\n // this.closeSignal.next(-1);\n\n // this.dialogRef.close(-1);\n // }\n // }\n // }\n}\n","<table>\n <tbody>\n <ng-container *ngFor=\"let item of items\">\n <ng-container>\n\n <!-- A row with a click action -->\n <tr #row\n *ngIf=\"item != 'separator' && item.separator != true && item['_visible']\"\n [class.disabled]=\"item['_disabled']\"\n (click)=\"!item['_disabled'] && onMenuItemClick(item, row)\"\n [class.hover]=\"item['children'] && row['hover']\"\n (pointerenter)=\"row['hover'] = true;\"\n (pointerleave)=\"row['hover'] = false\"\n >\n <!-- (item['children']?.length > 0 || item['childTemplate']) && onHover(item, row); closeOnLeave=true -->\n <td class=\"icon\" *ngIf=\"showIconColumn\">\n <img *ngIf=\"matIconRx.test(item.icon); else matIcon\" [src]=\"item.icon\" />\n <ng-template #matIcon>\n <mat-icon [fontIcon]=\"item.icon\"></mat-icon>\n </ng-template>\n </td>\n\n <!-- 'Normal' action based item -->\n <ng-container>\n <td class=\"label\"\n [style.padding-left]=\"showIconColumn ? 0 : '16px'\"\n >\n <a\n [attr.target]=\"item.linkTarget\"\n [attr.href]=\"(item['_link'] || item.link) ? sanitizer.bypassSecurityTrustUrl(item['_link'] || item.link) : undefined\"\n >\n <ng-container\n *ngIf=\"$any(item.labelTemplate)?.prototype; else labelTemplate\"\n [ngTemplateOutlet]=\"$any(item).labelTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': data, 'dialog': dialogRef }\"\n />\n\n <ng-template #labelTemplate>\n <ng-container *ngIf=\"!$any(item)?.labelTemplate\">\n <div [innerHTML]=\"item['_formattedLabel']\"></div>\n </ng-container>\n <ng-container *ngIf=\"$any(item)?.labelTemplate\">\n {{$any(item)?.labelTemplate(data || {})}}\n </ng-container>\n </ng-template>\n </a>\n </td>\n </ng-container>\n\n <td class=\"shortcut\" *ngIf=\"showShortcutColumn\">\n {{item.shortcutLabel}}\n </td>\n <td style=\"min-width: 16px\">\n <mat-icon *ngIf=\"\n (item.children && item.children.length > 0) ||\n item.childTemplate ||\n (item.childrenResolver && !item['_isResolving'])\n \"\n sytle=\"transform: translateY(2px)\"\n >\n chevron_right\n </mat-icon>\n\n <mat-progress-spinner *ngIf=\"item['_isResolving']\" mode=\"indeterminate\" [diameter]=\"20\" style=\"margin-right: 4px\"/>\n </td>\n </tr>\n\n <tr *ngIf=\"item != 'separator' && item.separator == true\" class=\"disabled separator\">\n <td class=\"center\" [attr.colspan]=\"2 + (showIconColumn ? 1 : 0) + (showShortcutColumn ? 1 : 0)\">\n <span class=\"hr\">\n {{item['label'] || ''}}\n </span>\n </td>\n </tr>\n <tr *ngIf=\"item == 'separator'\" class=\"disabled separator\">\n <td [attr.colspan]=\"2 + (showIconColumn ? 1 : 0) + (showShortcutColumn ? 1 : 0)\">\n <hr/>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n</table>\n\n<!-- <div *ngIf=\"true\" class=\"backdrop\"></div> -->\n<!-- <div\n *ngIf=\"parentCords && this.selfCords\"\n class=\"backdrop parent\"\n [style.top]=\"(parentCords.y - selfCords.y + 6) + 'px'\"\n [style.left]=\"(parentCords.x - selfCords.x + 12) + 'px'\"\n [style.width]=\"(parentCords.width) + 'px'\"\n [style.height]=\"(parentCords.height) + 'px'\"\n>\n</div> -->\n<!-- <ng-container *ngIf=\"parentCords && selfCords\">\n <div #top\n class=\"backdrop-outer\"\n [style.bottom]=\"(parentCords.y - selfCords.y)*-1 + parentCords.height + 'px'\"\n style=\"background: #f003;\"\n (pointerenter)=\"onLeave()\"\n ></div>\n <div #right\n class=\"backdrop-outer\"\n [style.left]=\"((parentCords.x - selfCords.x) + parentCords.width) + 'px'\"\n style=\"background: #0f03;\"\n (pointerenter)=\"onLeave()\"\n >\n <div>px: {{parentCords.x}}</div>\n <div>py: {{parentCords.y}}</div>\n <div>pw: {{parentCords.width}}</div>\n <div>ph: {{parentCords.height}}</div>\n <div>sx: {{selfCords.x}}</div>\n <div>sy: {{selfCords.y}}</div>\n <div>sw: {{selfCords.width}}</div>\n <div>sh: {{selfCords.height}}</div>\n </div>\n <div #bottom\n class=\"backdrop-outer\"\n [style.top]=\"((parentCords.y + parentCords.height - selfCords.y)) + 'px'\"\n style=\"background: #00f3;\"\n (pointerenter)=\"onLeave()\"\n ></div>\n <div #left\n class=\"backdrop-outer\"\n [style.right]=\"((parentCords.x - selfCords.x)*-1 + parentCords.width + 32) + 'px'\"\n style=\"background: #fff3;\"\n (pointerenter)=\"onLeave()\"\n ></div>\n</ng-container> -->\n","import { Directive, Input, ViewContainerRef } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { getPosition } from './utils';\nimport { MenuItem, MenuOptions } from '../types/menu';\nimport { MenuComponent, calcMenuItemBounds } from '../components/menu/menu.component';\n\n@Directive({\n selector: '[ngx-contextmenu],[ngx-menu],[ngxContextmenu],[ngxMenu]',\n providers: [\n MatDialog\n ],\n standalone: true\n})\nexport class MenuDirective {\n\n /**\n * The data representing the item the menu was opened for.\n */\n @Input(\"ngxMenuContext\")\n @Input(\"ngx-menu-context\") data: any;\n\n /**\n * The items that will be bound to the context menu.\n */\n @Input(\"ngxContextmenu\")\n @Input(\"ngx-contextmenu\") ctxMenuItems: MenuItem[];\n\n /**\n * The items that will be bound to the menu that pops\n * up when the user clicks the element.\n */\n @Input(\"ngxMenu\")\n @Input(\"ngx-menu\") menuItems: MenuItem[];\n\n /**\n * Configuration for opening the app menu\n */\n @Input(\"ngxMenuConfig\")\n @Input(\"ngx-menu-config\") config: MenuOptions = {};\n\n constructor(\n private dialog: MatDialog,\n private viewContainer: ViewContainerRef\n ) { }\n\n ngAfterViewInit() {\n const el = this.viewContainer.element.nativeElement as HTMLElement;\n\n // Automatically attach context menu items to\n // the contextmenu event\n if (this.ctxMenuItems) {\n el.onclick = this.openMenu.bind(this);\n el.addEventListener('contextmenu', (e) => {\n e.preventDefault();\n this.openMenu(e as any, this.ctxMenuItems);\n });\n }\n\n if (!this.config?.trigger) {\n el.addEventListener('click', this.openMenu.bind(this));\n }\n else {\n const triggers = Array.isArray(this.config.trigger) ? this.config.trigger : [this.config.trigger];\n\n triggers.forEach(t => {\n if (t == \"contextmenu\") {\n el.addEventListener(t, (e) => {\n e.preventDefault();\n this.openMenu(e as any, this.ctxMenuItems);\n });\n }\n else {\n el.addEventListener(t, this.openMenu.bind(this));\n }\n });\n }\n }\n\n async openMenu(evt: PointerEvent, items = this.menuItems) {\n const el = this.viewContainer.element.nativeElement as HTMLElement;\n\n el.classList.add(\"ngx-menu-open\");\n\n const isCtxEvent = evt.button == 2;\n\n return openMenu(this.dialog, items, this.data, evt, this.config, isCtxEvent ? null : el)\n .then((...res) => {\n el.classList.remove(\"ngx-menu-open\");\n return res;\n })\n .catch((ex) => {\n el.classList.remove(\"ngx-menu-open\");\n throw ex;\n });\n }\n}\n\n// Helper to open the menu without using the directive.\nexport const openMenu = async (\n dialog: MatDialog,\n menuItems: MenuItem[],\n data: any,\n evt: PointerEvent,\n config: MenuOptions = {},\n el?: HTMLElement\n) => {\n // console.log({ dialog, menuItems, data, evt, config, el });\n\n evt.preventDefault();\n evt.stopPropagation();\n\n // Apply defaults.\n if (!config.alignment)\n config.alignment = \"start\";\n\n const cords = getPosition(el || evt, config, await calcMenuItemBounds(menuItems, data));\n const specificId = crypto.randomUUID();\n\n return new Promise(res => {\n dialog.open(MenuComponent, {\n data: {\n data: data,\n items: menuItems,\n config: config,\n id: specificId\n },\n panelClass: [\"ngx-menu\", 'ngx-' + specificId].concat(config?.customClass || []),\n position: cords,\n backdropClass: \"ngx-menu-backdrop\"\n })\n .afterClosed()\n .subscribe(s => {\n res(s);\n })\n }) as Promise<any>;\n};\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'htmlbypass',\n standalone: true\n})\nexport class HtmlBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustHtml(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'resourcebypass',\n standalone: true\n})\nexport class ResourceBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'scriptbypass',\n standalone: true\n})\nexport class ScriptBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustScript(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'stylebypass',\n standalone: true\n})\nexport class StyleBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustStyle(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'urlbypass',\n standalone: true\n})\nexport class UrlBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustUrl(url);\n }\n}\n","export const sleep = ms => new Promise(r => setTimeout(r, ms));\n\n/**\n * Prompt the user to save a json file of the given object.\n */\nexport const saveObjectAsFile = (name: string, data: Object) => {\n const a = document.createElement(\"a\");\n const file = new Blob([JSON.stringify(data)], { type: \"application/json\" });\n a.href = URL.createObjectURL(file);\n a.download = name;\n a.click();\n a.remove();\n};\n\n/**\n * Formatted logger that will print a bit of context before the message.\n * @returns\n */\nexport const Logger = (context: string, contextColor: string, textColor: string = \"#03a9f4\") => ({\n log: (message, ...args) => {\n console.log(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n },\n warn: (message, ...args) => {\n console.warn(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n },\n err: (message, ...args) => {\n console.error(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n },\n error: (message, ...args) => {\n console.error(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n }\n});\n\n/**\n * Convert a string `fooBAR baz_160054''\"1]\"` into a slug: `foobar-baz-1600541`\n */\nexport const stringToSlug = (text: string) =>\n (text || '')\n .trim()\n .toLowerCase()\n .replace(/[\\-_+ ]/g, '-')\n .replace(/[^a-z0-9\\-]/g, '');\n\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Inject } from '@angular/core';\nimport { sleep } from '../utils';\n\nconst SCRIPT_INIT_TIMEOUT = 500; // ms\n\n/**\n * Service that installs CSS/JS dynamically\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DependencyService {\n\n constructor(\n @Inject(DOCUMENT) private document: Document\n ) { }\n\n /**\n * Install a Javascript file into the webpage on-demand\n * @param id Unique identifier for the JS script\n * @param src URL of the script\n * @param globalkey A global object the script will provide.\n * Providing this will ensure a promise only resolves after the\n * specified global object is provided, with a timeout of 500ms\n */\n loadScript(id: string, src: string, globalkey: string = null): Promise<void> {\n return new Promise((res, rej) => {\n if (this.document.getElementById(id)) return res();\n\n const script = this.document.createElement('script');\n script.id = id;\n\n script.setAttribute(\"async\", '');\n script.setAttribute(\"src\", src);\n\n script.onload = async () => {\n if (typeof globalkey == \"string\") {\n let i = 0;\n\n for (; !window[globalkey] && i < SCRIPT_INIT_TIMEOUT; i += 10)\n await sleep(10);\n\n if (i >= SCRIPT_INIT_TIMEOUT) {\n return rej(new Error(\"Timed out waiting for script to self-initialize.\"));\n }\n }\n\n res();\n }\n\n this.document.body.appendChild(script);\n })\n }\n\n // loadStylesheet(id: string, href: string) {\n // let themeLink = this.document.getElementById(id) as HTMLLinkElement;\n // if (themeLink) {\n // themeLink.href = href;\n // }\n // else {\n // const style = this.document.createElement('link');\n // style.id = id;\n // style.rel = 'stylesheet';\n // style.href = href;\n\n // const head = this.document.getElementsByTagName('head')[0];\n\n // head.appendChild(style);\n // }\n // }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Logger } from '../utils';\nimport { LazyLoaderService } from '../public-api';\n\nconst { log, warn, err } = Logger(\"DialogService\", \"#607d8b\");\n\nexport type DialogOptions = Partial<Omit<MatDialogConfig<any>, 'data'> & {\n /**\n *\n */\n group: string,\n\n /**\n * List of properties to be provided to @Input() injectors\n */\n inputs: { [key: string]: any },\n /**\n * List of properties to be provided to @Input() injectors\n */\n outputs: { [key: string]: Function },\n /**\n * Context in which to execute callbacks from the `outputs` property via\n * @Output() event Emitters\n */\n parent: any\n}>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n\n private dialogs: MatDialogRef<unknown, any>[] = [];\n\n constructor(\n private dialog: MatDialog,\n private lazyLoader: LazyLoaderService\n ) {\n }\n\n open(name: string, opts: DialogOptions = {}): Promise<any> {\n return new Promise((resolve, reject) => {\n\n const registration = this.lazyLoader.resolveRegistrationEntry(name, opts.group || \"default\");\n if (!registration)\n return reject(new Error(\"Cannot open dialog for \" + name + \". Could not find in registry.\"));\n\n\n const args = {\n closeOnNavigation: true,\n restoreFocus: true,\n width: registration['width'],\n height: registration['height'],\n ...opts,\n data: {\n id: name,\n inputs: opts.inputs || {},\n outputs: opts.outputs || {},\n group: opts.group\n },\n panelClass: [\n \"dialog-\" + name,\n ...(Array.isArray(opts.panelClass) ? opts.panelClass : [opts.panelClass] || [])\n ]\n };\n\n // TODO:\n let dialog = this.dialog.open(undefined, args);\n\n dialog['idx'] = name;\n this.dialogs.push(dialog);\n\n dialog.afterClosed().subscribe(result => {\n log(\"Dialog closed \" + name, result);\n resolve(result);\n });\n });\n }\n\n // Close all dialogs matching the given name\n close(name: string) {\n const dialogs = this.dialogs.filter(d => d['idx'] == name);\n dialogs.forEach(dialog => dialog.close());\n }\n\n /**\n * Method to close _all_ dialogs.\n * Should be used sparingly.\n */\n clearDialog() {\n this.dialogs.forEach(dialog => dialog.close());\n }\n\n /**\n * Open a confirmation dialog. Will reject if a cancel occurs.\n * @param title title of the dialog\n * @param message main question that a user needs to confirm/deny\n * @returns\n */\n // confirmAction(title: string, message: string): Promise<void> {\n // return new Promise((res, rej) => {\n // const dialog = this.dialog.open(ConfirmationComponent, {\n // maxHeight: \"90vh\",\n // maxWidth: \"90vw\",\n // panelClass: [\"dialog-confirmation\"],\n // closeOnNavigation: true,\n // restoreFocus: true,\n // data: {title, message}\n // });\n\n // dialog.afterClosed().subscribe(result => {\n // result == true ? res() : rej();\n // });\n // });\n // }\n}\n","import { HttpClient, HttpContext, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Injectable, isDevMode } from '@angular/core';\nimport { retry } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n// Total number of _retries_ if there is a 429 response code.\nconst retryCount = 2;\n\nexport type FetchOptions = {\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n context?: HttpContext;\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n body?: any,\n observe?: 'body' | 'events' | 'response';\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n}\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class Fetch {\n constructor(\n private http: HttpClient\n ) { }\n\n // Public interface for making AJAX transactions\n public get<T>(url: string, options: FetchOptions = {}, returnError = false): Promise<T> {\n return this.request<T>(\"get\", url, options, returnError);\n }\n public put<T>(url: string, body: any, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.body = (options.body && Object.keys(options.body).length > 0 ? options.body : body) || {};\n return this.request<T>(\"put\", url, options, returnError);\n }\n public post<T>(url: string, body: any, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.body = (options.body && Object.keys(options.body).length > 0 ? options.body : body) || {};\n return this.request<T>(\"post\", url, options, returnError);\n }\n public patch<T>(url: string, body: any, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.body = (options.body && Object.keys(options.body).length > 0 ? options.body : body) || {};\n return this.request<T>(\"patch\", url, options, returnError);\n }\n public delete<T>(url: string, options: FetchOptions = {}, returnError = false): Promise<T> {\n return this.request<T>(\"delete\", url, options, returnError);\n }\n\n // Internally, handle the observable as a promise.\n private request<T>(method: string, url: string, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.reportProgress = true;\n\n // Allow support for different response types.\n // Generally we shouldn't need this to be anything other than JSON.\n options.responseType = options.responseType || \"json\";\n options.withCredentials = true;\n\n const p = new Promise((resolve, reject) => {\n const o = this.http.request(method, url, options)\n .pipe(retry({\n delay(error, retryCount) {\n // 429 and 502 are most common for overloaded\n // backends -- so we'll retry if we get these errors\n if (error.status == 429 || error.status == 502)\n return of({});\n\n if (error.status == 504 && isDevMode())\n alert(\"It looks like you can't reach your development backend anymore\");\n\n throw error;\n },\n count: retryCount\n }))\n .subscribe(data => {\n resolve(data as unknown as T);\n\n // provide 3ms slacktime before releasing observable.\n setTimeout(() => {\n o.unsubscribe();\n }, 3);\n });\n });\n\n return p as Promise<T>;\n }\n}\n","import { Injectable, HostListener } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport type KeyCommand = {\n /**\n * The non-modifier key(s) that must be pressed for the event to fire.\n */\n key: string | string[],\n label: string,\n\n ctrl?: boolean,\n alt?: boolean,\n shift?: boolean,\n super?: boolean,\n tab?: boolean,\n\n /**\n * Should the handler interrupt default event handling\n */\n interrupt?: boolean,\n}\n\n/**\n * Service that listens for global keyboard events\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class KeyboardService {\n\n private heldKeys: { [key: string]: boolean } = {};\n public keyCommands: {\n ctrl?: boolean,\n alt?: boolean,\n shift?: boolean,\n super?: boolean,\n interrupt?: boolean,\n label: string,\n keys: string[],\n sub: Subject<KeyboardEvent>\n }[] = [];\n\n constructor() {\n window.addEventListener(\"keydown\", (evt) => this.onKeyDown(evt));\n window.addEventListener(\"keyup\", (evt) => this.onKeyUp(evt));\n }\n\n private onKeyDown(evt: KeyboardEvent) {\n // console.log(\"keydown\", evt.key)\n this.heldKeys[evt.key.toLowerCase()] = true;\n\n // Do a general filter where all of the modifiers must be matched if specified\n // Then check that the actual keys match what was specified\n let commands = this.keyCommands\n .filter(kc =>\n (kc.ctrl == undefined || kc.ctrl === evt.ctrlKey) &&\n (kc.alt == undefined || kc.alt === evt.altKey) &&\n (kc.shift == undefined || kc.shift === evt.shiftKey) &&\n (kc.super == undefined || kc.super === evt.metaKey) &&\n kc.keys.length == kc.keys.filter(k => this.heldKeys[k])?.length\n );\n\n if (evt.ctrlKey && commands.length > 0 || commands.find(c => c.interrupt)) {\n evt.stopPropagation();\n evt.preventDefault();\n }\n\n if (evt.key == \"Pause\")\n debugger;\n\n commands.forEach(kc => kc.sub.next(evt));\n\n /**\n * Prevent CTRL+P and other standard key events from being handled by the browser.\n * Allow specific combonations:\n * CTRL+W\n * CTRL+T\n * CTRL+F5\n */\n // if (evt.ctrlKey && !['w', 't', 'F5'].includes(evt.key)) {\n // evt.preventDefault();\n // }\n }\n\n private onKeyUp(evt: KeyboardEvent) {\n this.heldKeys[evt.key.toLowerCase()] = false;\n }\n\n private onKeyPress(evt: KeyboardEvent) {\n // this.heldKeys[evt.key] = false;\n }\n\n /**\n * Use this to subscribe to keyboard events throughout\n * the application. This is a passive listener and will\n * **NOT** interrupt the event chain.\n */\n public onKeyCommand(key: KeyCommand) {\n const sub = new Subject<KeyboardEvent>();\n let item = {\n ...key,\n keys: (Array.isArray(key.key) ? key.key : [key.key]),\n sub: sub\n }\n\n this.keyCommands.push(item);\n\n return {\n ...sub,\n subscribe: ((...args) => {\n const s = sub.subscribe(...args);\n return {\n ...s,\n unsubscribe: () => {\n s.unsubscribe();\n\n // Remove the keycommand from the list of listeners.\n const i = this.keyCommands.findIndex(c => c == item);\n this.keyCommands.splice(i, 1);\n }\n };\n }) as Subject<KeyboardEvent>['subscribe']\n };\n }\n\n /**\n * Return `true` if shift is currently pressed.\n */\n get isShiftPressed() {\n return !!this.heldKeys[\"shift\"];\n }\n /**\n * Return `true` if ctrl is currently pressed.\n */\n get isCtrlPressed() {\n return !!this.heldKeys[\"control\"];\n }\n /**\n * Return `true` if alt is currently pressed.\n */\n get isAltPressed() {\n return !!this.heldKeys[\"alt\"];\n }\n /**\n * Return `true` if super (mac/linux) or the windows key is currently pressed.\n */\n get isSuperPressed() {\n return !!this.heldKeys[\"super\"];\n }\n /**\n * Return `true` if tab is currently pressed.\n */\n get isTabPressed() {\n return !!this.heldKeys[\"tab\"];\n }\n\n @HostListener(\"window:blur\")\n @HostListener(\"window:resize\")\n clearKeys() {\n Object.keys(this.heldKeys).forEach(k => {\n this.heldKeys[k] = false;\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { TemplateRef } from '@angular/core';\n\nexport enum ComponentResolveStrategy {\n /**\n * Match the fist component we find\n * (best used for standalone components)\n * @default\n */\n PickFirst,\n /**\n * Perform an Exact ID to Classname of the Component\n * case sensitive, zero tolerance.\n */\n MatchIdToClassName,\n /**\n * Perform a fuzzy ID to classname match\n * case insensitive, mutes symbols\n * ignores \"Component\" and \"Module\" postfixes on class\n * names\n */\n FuzzyIdClassName,\n\n /**\n * Use a user-provided component match function\n */\n Custom\n}\n\nexport type NgxLazyLoaderConfig = Partial<{\n entries: ComponentRegistration[],\n\n notFoundTemplate: TemplateRef<any>,\n notFoundComponent: ComponentType<any>,\n\n errorTemplate: TemplateRef<any>,\n errorComponent: ComponentType<any>,\n\n loaderDistractorTemplate: TemplateRef<any>,\n loaderDistractorComponent: ComponentType<any>,\n\n logger: {\n log: (...args: any) => void,\n warn: (...args: any) => void,\n err: (...args: any) => void;\n },\n /**\n * What strategy should be used to resolve components\n * @default ComponentResolveStrategy.FuzzyIdClassName\n */\n componentResolveStrategy: ComponentResolveStrategy,\n customResolver: (registry: (CompiledComponent | CompiledModule)[]) => Object\n}>;\n\ntype RegistrationConfig = {\n /**\n * Specify a group to categorize components. If not specified,\n * will default to the `default` group.\n */\n group?: string,\n /**\n * load: () => import('./pages/my-page/my-page.component')\n */\n load: () => any,\n\n /**\n * Called before a component is loaded.\n * If it returns `false` the component will not be loaded.\n */\n // canActivate: () => boolean\n\n [key: string]: any\n}\n\nexport type ComponentRegistration = (\n ({ id: string } & RegistrationConfig) |\n ({ matcher: string[] | RegExp | ((value: string) => boolean); } & RegistrationConfig)\n);\n\nexport type DynamicRegistrationArgs<T = any> = {\n id: string,\n group?: string,\n matcher?: string[] | RegExp | ((val: string) => boolean),\n component?: T,\n load?: () => any;\n}\n\n/**\n * This is roughly a compiled component\n */\nexport type CompiledComponent = {\n (): CompiledComponent,\n ɵfac: Function,\n ɵcmp: {\n consts;\n contentQueries;\n data;\n declaredInputs;\n decls;\n dependencies;\n directiveDefs;\n encapsulation;\n exportAs;\n factory;\n features;\n findHostDirectiveDefs;\n getStandaloneInjector;\n hostAttrs;\n hostBindings;\n hostDirectives;\n hostVars;\n id: string;\n inputs;\n ngContentSelectors;\n onPush: boolean;\n outputs;\n pipeDefs;\n providersResolver;\n schemas;\n selectors: string[];\n setInput;\n standalone: boolean;\n styles: string[];\n tView;\n template;\n type: Function;\n vars: number;\n viewQuery;\n };\n};\n\n/**\n * This is roughly a compiled module\n */\nexport type CompiledModule = {\n (): CompiledModule,\n ɵfac: Function,\n ɵinj: {\n providers: any[],\n imports: any[];\n },\n ɵmod: {\n bootstrap: any[],\n declarations: Function[],\n exports: any[],\n id: unknown,\n imports: any[],\n schemas: unknown,\n transitiveCompileScopes: unknown,\n type: Function;\n };\n};\n\nexport type CompiledBundle = { [key: string]: CompiledComponent | CompiledModule; };\n\n\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { CompiledComponent, CompiledModule, ComponentRegistration, ComponentResolveStrategy, DynamicRegistrationArgs, NgxLazyLoaderConfig } from './types';\nimport { stringToSlug, Logger } from '../../utils';\n\n// Monkey-patch the type of these symbols.\nconst $id = Symbol(\"id\") as any as string;\nconst $group = Symbol(\"group\") as any as string;\n\nexport const NGX_LAZY_LOADER_CONFIG = new InjectionToken<NgxLazyLoaderConfig>('config');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LazyLoaderService {\n private get err() { return LazyLoaderService.config.logger.err; }\n private get log() { return LazyLoaderService.config.logger.log; }\n private get warn() { return LazyLoaderService.config.logger.warn; }\n\n // A proxied registry that mutates reference keys\n private static registry: {\n [key: string]: ComponentRegistration[];\n } = {};\n\n public static config: NgxLazyLoaderConfig;\n\n constructor(@Inject(NGX_LAZY_LOADER_CONFIG) config: NgxLazyLoaderConfig = {}) {\n // Ensure this is singleton and works regardless of special instancing requirements.\n LazyLoaderService.configure(config);\n }\n\n private static configure(config: NgxLazyLoaderConfig) {\n const { log, warn, err } = Logger(\"ngx-lazy-loader\", \"#009688\");\n\n this.config = {\n componentResolveStrategy: ComponentResolveStrategy.PickFirst,\n logger: {\n log,\n warn,\n err\n },\n ...config\n };\n\n config.entries?.forEach(e => this.addComponentToRegistry(e))\n\n // If a custom resolution strategy is provided but no resolution function is passed,\n // we throw an error\n if (\n this.config.componentResolveStrategy == ComponentResolveStrategy.Custom &&\n !this.config.customResolver\n ) {\n throw new Error(\"Cannot initialize. Configuration specifies a custom resolve matcher but none was provided\");\n }\n\n if (this.config.loaderDistractorComponent && this.config.loaderDistractorTemplate)\n throw new Error(\"Cannot have both a Component and Template for Distractor view.\")\n if (this.config.errorComponent && this.config.errorTemplate)\n throw new Error(\"Cannot have both a Component and Template for Error view.\")\n if (this.config.notFoundComponent && this.config.notFoundTemplate)\n throw new Error(\"Cannot have both a Component and Template for NotFound view.\")\n\n }\n\n private static addComponentToRegistry(registration: ComponentRegistration) {\n if (!registration)\n throw new Error(\"Cannot add <undefined> component into registry.\");\n\n // Clone the object into our repository and transfer the id into a standardized slug format\n\n const id = stringToSlug(registration.id ?? Date.now().toString()); // purge non-basic ASCII chars\n const group = registration.group || \"default\";\n\n registration[$id] = id;\n registration[$group] = id;\n\n\n if (!this.registry[group])\n this.registry[group] = [];\n\n // Check if we already have a registration for the component\n // if (this.registry[group] && typeof this.registry[group]['load'] == \"function\") {\n // // Warn the developer that the state is problematic\n // this.config.logger.warn(\n // `A previous entry already exists for ${id}! The old registration will be overridden.` +\n // `Please ensure you use groups if you intend to have duplicate component ids. ` +\n // `If this was intentional, first remove the old component from the registry before adding a new instance`\n // );\n\n // // If we're in dev mode, break the loader surface\n // if (isDevMode())\n // return;\n // }\n\n this.registry[group].push(registration);\n }\n\n /**\n * Register an Angular component\n * @param id identifier that is used to resolve the component\n * @param group\n * @param component Angular Component Class constructor\n */\n public registerComponent<T extends { new(...args: any[]): InstanceType<T>; }>(args: DynamicRegistrationArgs<T>) {\n if (this.isComponentRegistered(args.id, args.group)) {\n this.log(`Will not re-register component '${args.id}' in group '${args.group || 'default'}' `);\n return;\n }\n\n LazyLoaderService.addComponentToRegistry({\n id: stringToSlug(args.id),\n matcher: args.matcher,\n group: stringToSlug(args.group || \"default\"),\n load: args.load || (() => args.component)\n });\n }\n\n /**\n *\n * @param id\n * @param group\n */\n public unregisterComponent(id: string, group = \"default\") {\n const _id = stringToSlug(id);\n const _group = stringToSlug(group);\n\n if (!this.resolveRegistrationEntry(id, group))\n throw new Error(\"Cannot unregister component ${}! Component is not present in registry\")\n\n // TODO: handle clearing running instances\n delete LazyLoaderService.registry[_group][_id];\n }\n\n\n /**\n * Get the registration entry for a component.\n * Returns null if component is not in the registry.\n */\n public resolveRegistrationEntry(value: string, group = \"default\") {\n const _id = stringToSlug(value);\n const _group = stringToSlug(group);\n\n const targetGroup = (LazyLoaderService.registry[_group] || []);\n\n let items = targetGroup.filter(t => {\n if (!t) return false;\n\n // No matcher, check id\n if (!t.matcher)\n return t[$id] == _id;\n\n // Matcher is regex\n if (t.matcher instanceof RegExp)\n return t.matcher.test(_id) || t.matcher.test(value);\n\n // Matcher is string => regex\n if (typeof t.matcher == 'string') {\n const rx = new RegExp(t.matcher, 'ui');\n return rx.test(_id) || rx.test(value);\n }\n\n // Matcher is array\n if (Array.isArray(t.matcher)) {\n return !!t.matcher.find(e => stringToSlug(e) == _id);\n }\n\n // Custom matcher function\n if (typeof t.matcher == \"function\")\n return t.matcher(_id);\n\n return false;\n });\n\n if (items.length > 1) {\n this.warn(\"Resolved multiple components for the provided `[component]` binding. This may cause UI conflicts.\");\n }\n if (items.length == 0) {\n return null;\n }\n\n const out = items[0];\n\n if (out.matcher instanceof RegExp) {\n const result = _id.match(out.matcher) || value.match(out.matcher);\n\n return {\n entry: out,\n matchGroups: result?.groups\n };\n }\n\n return { entry: out };\n }\n\n /**\n * Check if a component is currently registered\n * Can be used to validate regex matchers and aliases.\n */\n public isComponentRegistered(value: string, group = \"default\") {\n return !!this.resolveRegistrationEntry(value, group);\n }\n\n /**\n *\n * @param bundle\n * @returns The component `Object` if a component was resolved, `null` if no component was found\n * `false` if the specified strategy was an invalid selection\n */\n public resolveComponent(id: string, group: string, modules: (CompiledComponent | CompiledModule)[]): Object | null | false {\n\n switch (LazyLoaderService.config.componentResolveStrategy) {\n case ComponentResolveStrategy.PickFirst: {\n\n return modules[0];\n }\n\n // Exact id -> classname match\n case ComponentResolveStrategy.MatchIdToClassName: {\n const matches =\n modules\n .filter(k => k.name == id);\n\n if (matches.length == 0)\n return null;\n\n return matches[0];\n }\n // Fuzzy id -> classname match\n case ComponentResolveStrategy.FuzzyIdClassName: {\n const _id = id.replace(/[^a-z0-9_\\-]/ig, '');\n\n if (_id.length == 0) {\n LazyLoaderService.config.logger.err(\"Fuzzy classname matching stripped all symbols from the ID specified!\");\n return false;\n }\n\n const rx = new RegExp(`^${id}(component|module)?$`, \"i\");\n\n const matches = modules\n .filter(mod => {\n let kid = mod.name.replace(/[^a-z0-9_\\-]/ig, '');\n\n return rx.test(kid);\n });\n\n if (matches.length > 1) {\n LazyLoaderService.config.logger.err(\"Fuzzy classname matching resolved multiple targets!\");\n return false;\n }\n\n if (matches.length == 0) {\n LazyLoaderService.config.logger.err(\"Fuzzy classname matching resolved no targets!\");\n return null;\n }\n\n return matches[0];\n }\n case ComponentResolveStrategy.Custom: {\n return LazyLoaderService.config.customResolver(modules as any);\n }\n default: {\n return false;\n }\n }\n }\n}\n","import { Input, ViewContainerRef, isDevMode, ComponentRef, EventEmitter, Optional, ViewChild, Component, Inject, Output, NgModule, AfterViewInit, OnInit } from '@angular/core';\nimport { NgComponentOutlet, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { MAT_DIALOG_DATA, } from '@angular/material/dialog';\nimport { DialogRef } from '@angular/cdk/dialog';\nimport { BehaviorSubject, debounceTime, Subscription } from 'rxjs';\nimport { LazyLoaderService } from './lazy-loader.service';\nimport { stringToSlug } from '../../utils';\nimport { CompiledBundle, NgxLazyLoaderConfig } from './types';\n\n\n@Component({\n selector: 'ngx-lazy-loader',\n templateUrl: './lazy-loader.component.html',\n styleUrls: [ './lazy-loader.component.scss' ],\n imports: [ NgIf, NgComponentOutlet, NgTemplateOutlet ],\n standalone: true\n})\nexport class LazyLoaderComponent implements AfterViewInit {\n @ViewChild(\"content\", { read: ViewContainerRef }) targetContainer: ViewContainerRef;\n\n /**\n * ! Here be dragons.\n * Only the bravest of Adventurers can survive the battles below,\n * and they must be trained and ready for the gruelling journey ahead.\n * Many a soul has tried to best these Dragons, yet only one has\n * succeeded since our founding.\n *\n * TL;DR -- Don't mess with this unless you know what you're doing.\n * This is central to a ton of moving parts -- breaking it will\n * cause more collateral damage than you may realize.\n */\n\n private _id: string;\n /**\n * The id of the component that will be lazy loaded\n */\n @Input(\"component\") set id(data: string) {\n const id = stringToSlug(data);\n\n // Check if there is a change to the loaded component's id\n // if it's updated, we destroy and rehydrate the entire container\n if (this.initialized && this._id != id) {\n this._id = id;\n this.ngAfterViewInit();\n }\n else {\n this._id = id;\n }\n };\n\n\n private _group = \"default\";\n @Input(\"group\") set group(data: string) {\n const group = stringToSlug(data);\n\n if (typeof group != \"string\" || !group) return;\n\n // If the group was updated, retry to bootstrap something into the container.\n if (this.initialized && this._group != group) {\n this._group = group;\n\n this.ngAfterViewInit();\n return;\n }\n\n this._group = group;\n }\n get group() { return this._group }\n\n private _matchGroups: { [key: string]: string };\n private _inputs: { [key: string]: any; };\n /**\n * A map of inputs to bind to the child.\n * Supports change detection. (May fail on deep JSON changes)\n *\n * ```html\n * <lazy-loader component=\"MyLazyComponent\"\n * [inputs]=\"{\n * prop1: true,\n * prop2: false,\n * complex: {\n * a: true,\n * b: 0\n * }\n * }\"\n * >\n * </lazy-loader>\n * ```\n */\n @Input(\"inputs\") set inputs(data: { [key: string]: any; }) {\n if (data == undefined) return;\n\n let previous = this._inputs;\n this._inputs = data;\n if (data == undefined)\n console.trace(data);\n\n if (this.targetComponentFactory) {\n const { inputs } = this.targetComponentFactory.ɵcmp;\n\n const currentKeys = Object.keys(inputs);\n\n const oldKeys = Object.keys(previous).filter(key => currentKeys.includes(key));\n const newKeys = Object.keys(data).filter(key => currentKeys.includes(key));\n\n const removed = oldKeys.filter(key => !newKeys.includes(key));\n\n // ? perhaps set to null or undefined instead\n removed.forEach(k => this.targetComponentInstance[k] = null);\n\n this.bindInputs();\n }\n }\n\n\n private outputSubscriptions: { [key: string]: Subscription; } = {};\n private _outputs: { [key: string]: Function; };\n /**\n * A map of outputs to bind from the child.\n * Should support change detection.\n * ```html\n * <lazy-loader component=\"MyLazyComponent\"\n * [outputs]=\"{\n * prop3: onOutputFire\n * }\"\n * >\n * </lazy-loader>\n * ```\n */\n @Input(\"outputs\") set outputs(data: { [key: string]: Function; }) {\n let previous = this._outputs;\n this._outputs = data;\n\n if (this.targetComponentFactory) {\n const { inputs } = this.targetComponentFactory.ɵcmp;\n\n const currentKeys = Object.keys(inputs);\n const removed = Object.keys(previous).filter(key => !currentKeys.includes(key));\n\n removed.forEach(k => {\n // Unsubscribe from observable\n this.outputSubscriptions[k]?.unsubscribe();\n delete this.targetComponentInstance[k];\n });\n\n this.bindOutputs();\n }\n }\n\n /**\n * Emits errors encountered when loading components\n */\n @Output() componentLoadError = new EventEmitter();\n\n /**\n * Emits when the component is fully constructed\n * and had it's inputs and outputs bound\n * > before `OnInit`\n *\n * Returns the active class instance of the lazy-loaded component\n */\n @Output() componentLoaded = new EventEmitter();\n\n\n /**\n * This is an instance of the component that is currently loaded.\n */\n public instance: any;\n\n\n /**\n * Container that provides the component data\n */\n private targetModule: CompiledBundle;\n\n /**\n * Component definition\n */\n private targetComponentFactory: any;\n\n /**\n * Active component container reference\n */\n private targetComponentContainerRef: ComponentRef<any>;\n private targetRef: any;\n /**\n * Reference to the component class instance\n */\n private targetComponentInstance: any;\n\n /**\n * Subscription with true/false state on whether the distractor should be\n */\n private distractorSubscription: Subscription;\n\n public config: NgxLazyLoaderConfig;\n private err;\n private warn;\n private log;\n\n // Force 500ms delay before revealing the spinner\n private loaderEmitter = new EventEmitter();\n private clearLoader$ = this.loaderEmitter.pipe(debounceTime(300));\n private loaderSub: Subscription;\n showLoader = true; // whether we render the DOM for the spinner\n isClearingLoader = false; // should the spinner start fading out\n\n constructor(\n private service: LazyLoaderService,\n @Optional() private viewContainerRef: ViewContainerRef,\n @Optional() public dialog: DialogRef,\n @Optional() @Inject(MAT_DIALOG_DATA) public dialogArguments\n ) {\n this.config = LazyLoaderService.config;\n this.err = LazyLoaderService.config.logger.err;\n this.warn = LazyLoaderService.config.logger.warn;\n this.log = LazyLoaderService.config.logger.log;\n\n // First, check for dialog arguments\n if (this.dialogArguments) {\n this.inputs = this.dialogArguments.inputs || this.dialogArguments.data;\n this.outputs = this.dialogArguments.outputs;\n this.id = this.dialogArguments.id;\n this.group = this.dialogArguments.group;\n }\n\n this.loaderSub = this.clearLoader$.subscribe(() => {\n this.showLoader = false;\n });\n }\n\n private initialized = false;\n async ngAfterViewInit() {\n this.ngOnDestroy(false);\n this.isClearingLoader = false;\n this.showLoader = true;\n\n this.initialized = true;\n\n if (!this._id) {\n this.warn(\"No component was specified!\");\n return this.loadDefault();\n }\n\n try {\n const _entry = this.service.resolveRegistrationEntry(this._id, this._group);\n if (!_entry || !_entry.entry) {\n this.err(`Failed to find Component '${this._id}' in group '${this._group}' in registry!`);\n return this.loadDefault();\n }\n\n const { entry, matchGroups } = _entry;\n this._matchGroups = matchGroups;\n\n // Download the \"module\" (the standalone component)\n const bundle: CompiledBundle = this.targetModule = await entry.load();\n\n\n // Check if there is some corruption on the bundle.\n if (!bundle || typeof bundle != 'object' || bundle['__esModule'] as any !== true || bundle.toString() != \"[object Module]\") {\n this.err(`Failed to load component/module for '${this._id}'! Parsed resource is invalid.`);\n return this.loadError();\n }\n\n const modules = Object.keys(bundle)\n .map(k => {\n const entry = bundle[k];\n\n // Strictly check for exported modules or standalone components\n if (typeof entry == \"function\" && typeof entry[\"ɵfac\"] == \"function\")\n return entry;\n return null;\n })\n .filter(e => e != null)\n .filter(entry => {\n entry['_isModule'] = !!entry['ɵmod']; // module\n entry['_isComponent'] = !!entry['ɵcmp']; // component\n\n return (entry['_isModule'] || entry['_isComponent']);\n });\n\n if (modules.length == 0) {\n this.err(`Component/Module loaded for '${this._id}' has no exported components or modules!`);\n return this.loadError();\n }\n\n const component = this.targetComponentFactory = this.service.resolveComponent(this._id, \"default\", modules);\n\n if (!component) {\n this.err(`Component '${this._id}' is invalid or corrupted!`);\n return this.loadError();\n }\n\n\n // Bootstrap the component into the container\n const componentRef = this.targetComponentContainerRef = this.targetContainer.createComponent(component as any);\n this.targetRef = this.targetContainer.insert(this.targetComponentContainerRef.hostView);\n\n const instance: any = this.targetComponentInstance = componentRef['instance'];\n\n this.bindInputs();\n this.bindOutputs();\n\n this.componentLoaded.next(instance);\n this.instance = instance;\n\n // Look for an observable called isLoading$ that will make us show/hide\n // the same distractor that is used on basic loading\n const isLoading$ = instance['ngxShowDistractor$'] as BehaviorSubject<boolean>;\n\n if (isLoading$ && typeof isLoading$.subscribe == \"function\") {\n this.distractorSubscription = isLoading$.subscribe(loading => {\n if (!loading) {\n this.isClearingLoader = true;\n this.loaderEmitter.emit();\n }\n else {\n this.showLoader = true;\n this.isClearingLoader = false;\n }\n });\n }\n else {\n this.isClearingLoader = true;\n }\n\n const name = Object.keys(bundle)[0];\n this.log(`Loaded '${name}'`);\n this.loaderEmitter.emit();\n\n return componentRef;\n }\n catch (ex) {\n\n if (isDevMode()) {\n console.warn(\"Component \" + this._id + \" threw an error on mount!\");\n console.warn(\"This will cause you to see a 404 panel.\");\n console.error(ex);\n }\n\n // Network errors throw a toast and return an error component\n if (ex && !isDevMode()) {\n console.error(\"Uncaught error when loading component\");\n throw ex;\n }\n\n return this.loadDefault();\n }\n }\n\n ngOnDestroy(clearAll = true) {\n // unsubscribe from all subscriptions\n Object.entries(this.outputSubscriptions).forEach(([key, sub]) => {\n sub.unsubscribe();\n });\n this.outputSubscriptions = {};\n\n // Clear all things\n if (clearAll) {\n this.loaderSub?.unsubscribe();\n }\n\n this.distractorSubscription?.unsubscribe();\n\n // Clear target container\n this.targetRef?.destroy();\n this.targetComponentContainerRef?.destroy();\n this.targetContainer?.clear();\n\n // Wipe the rest of the state clean\n this.targetRef = null;\n this.targetComponentContainerRef = null;\n }\n\n /**\n * Bind the input values to the child component.\n */\n private bindInputs() {\n if (!this._inputs || !this.targetComponentInstance) return;\n\n // Merge match groups\n if (typeof this._matchGroups == \"object\") {\n Object.entries(this._matchGroups).forEach(([key, val]) => {\n if (typeof this._inputs[key] == 'undefined')\n this._inputs[key] = val;\n });\n }\n\n // forward-bind inputs\n const { inputs } = this.targetComponentFactory.ɵcmp;\n\n // Returns a list of entries that need to be set\n // This makes it so that unnecessary setters are not invoked.\n const updated = Object.entries(inputs).filter(([parentKey, childKey]: [string, string]) => {\n return this.targetComponentInstance[childKey] != this._inputs[parentKey];\n });\n\n updated.forEach(([parentKey, childKey]: [string, string]) => {\n if (this._inputs.hasOwnProperty(parentKey))\n this.targetComponentInstance[childKey] = this._inputs[parentKey];\n });\n }\n\n /**\n * Bind the output handlers to the loaded child component\n */\n private bindOutputs() {\n if (!this._outputs || !this.targetComponentInstance) return;\n\n const { outputs } = this.targetComponentFactory.ɵcmp;\n\n // Get a list of unregistered outputs\n const newOutputs = Object.entries(outputs).filter(([parentKey, childKey]: [string, string]) => {\n return !this.outputSubscriptions[parentKey];\n });\n\n // Reverse bind via subscription\n newOutputs.forEach(([parentKey, childKey]: [string, string]) => {\n if (this._outputs.hasOwnProperty(parentKey)) {\n const target: EventEmitter<unknown> = this.targetComponentInstance[childKey];\n const outputs = this._outputs;\n\n // Angular folks, stop making this so difficult.\n const ctx = this.viewContainerRef['_hostLView'][8];\n const sub = target.subscribe(outputs[parentKey].bind(ctx)); // Subscription\n\n this.outputSubscriptions[parentKey] = sub;\n }\n });\n }\n\n /**\n * Load the \"Default\" component (404) screen normally.\n * This is shown when the component id isn't in the\n * registry or otherwise doesn't match\n *\n * This\n */\n private loadDefault() {\n if (this.config.notFoundComponent)\n this.targetContainer.createComponent(this.config.notFoundComponent);\n\n this.showLoader = false;\n }\n\n /**\n * Load the \"Error\" component.\n * This is shown when we are able to resolve the component\n * in the registry, but have some issue boostrapping the\n * component into the viewContainer\n */\n private loadError() {\n if (this.config.errorComponent)\n this.targetContainer.createComponent(this.config.errorComponent);\n\n this.showLoader = false;\n }\n}\n","<ng-container #content></ng-container>\n\n<div class=\"ngx-lazy-loader-distractor\" [class.destroying]=\"isClearingLoader\">\n <ng-container *ngIf=\"config.loaderDistractorComponent\" [ngComponentOutlet]=\"config.loaderDistractorComponent\"></ng-container>\n <ng-container *ngIf=\"config.loaderDistractorTemplate\" [ngTemplateOutlet]=\"config.loaderDistractorTemplate\" [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"></ng-container>\n</div>\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { NgxLazyLoaderConfig } from './types';\nimport { LazyLoaderComponent } from './lazy-loader.component';\nimport { LazyLoaderService, NGX_LAZY_LOADER_CONFIG } from './lazy-loader.service';\n\n@NgModule({\n imports: [LazyLoaderComponent],\n exports: [LazyLoaderComponent]\n})\nexport class LazyLoaderModule {\n public static forRoot(config: NgxLazyLoaderConfig): ModuleWithProviders<LazyLoaderModule> {\n return ({\n ngModule: LazyLoaderModule,\n providers: [\n LazyLoaderService,\n {\n provide: NGX_LAZY_LOADER_CONFIG,\n useValue: config\n }\n ]\n });\n }\n}\n","import { InjectionToken, Type } from '@angular/core';\n\nexport abstract class OnMount {\n abstract dynamicOnMount(attrs?: Map<string, string>, content?: string, element?: Element): void;\n}\n\nexport interface ComponentWithSelector {\n selector: string;\n component: Type<any>;\n}\nexport class DynamicHTMLOptions {\n components: Array<ComponentWithSelector>;\n}\n\nexport const NGX_DYNAMIC_CONFIG = new InjectionToken<DynamicHTMLOptions>('config');\n\n","import { Injectable, Injector, ElementRef, ComponentFactoryResolver, ComponentFactory, ComponentRef, Inject } from '@angular/core';\nimport { DynamicHTMLOptions, NGX_DYNAMIC_CONFIG, OnMount } from './types';\n\nexport interface DynamicHTMLRef {\n check: () => void;\n destroy: () => void;\n}\n\nfunction isBrowserPlatform() {\n return window != null && window.document != null;\n}\n\n@Injectable()\nexport class DynamicHTMLRenderer {\n\n private componentFactories = new Map<string, ComponentFactory<any>>();\n\n private componentRefs = new Map<any, Array<ComponentRef<any>>>();\n\n constructor(@Inject(NGX_DYNAMIC_CONFIG) private config: DynamicHTMLOptions, private cfr: ComponentFactoryResolver, private injector: Injector) {\n this.config.components.forEach(({ selector, component }) => {\n let cf: ComponentFactory<any>;\n cf = this.cfr.resolveComponentFactory(component);\n this.componentFactories.set(selector, cf);\n });\n }\n\n renderInnerHTML(elementRef: ElementRef, html: string): DynamicHTMLRef {\n if (!isBrowserPlatform()) {\n return {\n check: () => { },\n destroy: () => { },\n };\n }\n elementRef.nativeElement.innerHTML = html;\n\n const componentRefs: Array<ComponentRef<any>> = [];\n this.config.components.forEach(({ selector }) => {\n const elements = (elementRef.nativeElement as Element).querySelectorAll(selector);\n Array.prototype.forEach.call(elements, (el: Element) => {\n const content = el.innerHTML;\n const cmpRef = this.componentFactories.get(selector).create(this.injector, [], el);\n\n el.removeAttribute('ng-version');\n\n if (cmpRef.instance.dynamicOnMount) {\n const attrsMap = new Map<string, string>();\n if (el.hasAttributes()) {\n Array.prototype.forEach.call(el.attributes, (attr: Attr) => {\n attrsMap.set(attr.name, attr.value);\n });\n }\n (cmpRef.instance as OnMount).dynamicOnMount(attrsMap, content, el);\n }\n\n componentRefs.push(cmpRef);\n });\n });\n this.componentRefs.set(elementRef, componentRefs);\n\n return {\n check: () => componentRefs.forEach(ref => ref.changeDetectorRef.detectChanges()),\n destroy: () => {\n componentRefs.forEach(ref => ref.destroy());\n this.componentRefs.delete(elementRef);\n },\n };\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n SimpleChanges,\n OnChanges,\n OnDestroy,\n DoCheck,\n} from '@angular/core';\n\nimport { DynamicHTMLRenderer, DynamicHTMLRef } from './dynamic-html.service';\n\n@Component({\n selector: 'dynamic-html',\n template: '',\n standalone: true\n})\nexport class DynamicHTMLComponent implements DoCheck, OnChanges, OnDestroy {\n @Input() content: string;\n\n private ref: DynamicHTMLRef = null;\n\n constructor(\n private renderer: DynamicHTMLRenderer,\n private elementRef: ElementRef,\n ) { }\n\n ngOnChanges(_: SimpleChanges) {\n if (this.ref) {\n this.ref.destroy();\n this.ref = null;\n }\n if (this.content && this.elementRef) {\n this.ref = this.renderer.renderInnerHTML(this.elementRef, this.content);\n }\n }\n\n ngDoCheck() {\n if (this.ref) {\n this.ref.check();\n }\n }\n\n ngOnDestroy() {\n if (this.ref) {\n this.ref.destroy();\n this.ref = null;\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { DynamicHTMLComponent } from './dynamic-html.component';\nimport { DynamicHTMLOptions, NGX_DYNAMIC_CONFIG } from './types';\nimport { DynamicHTMLRenderer } from './dynamic-html.service';\n\n@NgModule({\n imports: [DynamicHTMLComponent],\n exports: [DynamicHTMLComponent],\n})\nexport class NgxDynamicHTMLModule {\n public static forRoot(config: DynamicHTMLOptions): ModuleWithProviders<NgxDynamicHTMLModule> {\n return {\n ngModule: NgxDynamicHTMLModule,\n providers: [\n DynamicHTMLRenderer,\n { provide: NGX_DYNAMIC_CONFIG, useValue: config }\n ],\n };\n }\n}\n","/*\n * Public API Surface of package\n */\n\n/**\n ** Types\n */\nexport * from './types/menu';\nexport * from './types/popup';\n\n/**\n ** Directives\n */\nexport * from './directives/tooltip.directive';\nexport * from './directives/menu.directive';\n\n/**\n ** Pipes\n */\nexport * from './pipes/html-bypass.pipe';\nexport * from './pipes/resource-bypass.pipe';\nexport * from './pipes/script-bypass.pipe';\nexport * from './pipes/style-bypass.pipe';\nexport * from './pipes/url-bypass.pipe';\n\n/**\n** Services\n*/\nexport * from './services/dependency.service';\nexport * from './services/dialog.service';\nexport * from './services/fetch.service';\nexport * from './services/keyboard.service';\n// export * from './services/serviceworker.service';\n\n/**\n** Lazy loader component & service\n*/\nexport * from './components/lazy-loader/lazy-loader.service';\nexport * from './components/lazy-loader/lazy-loader.module';\nexport * from './components/lazy-loader/lazy-loader.component';\nexport * from './components/lazy-loader/types';\n\n/**\n** Services\n*/\nexport * from './components/dynamic-html/dynamic-html.service';\nexport * from './components/dynamic-html/dynamic-html.module';\nexport * from './components/dynamic-html/dynamic-html.component';\nexport * from './components/dynamic-html/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i2.LazyLoaderService","i1.DynamicHTMLRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"dotglitch-ngx-common.mjs","sources":["../../../packages/common/src/directives/utils.ts","../../../packages/common/src/components/tooltip/tooltip.component.ts","../../../packages/common/src/components/tooltip/tooltip.component.html","../../../packages/common/src/directives/tooltip.directive.ts","../../../packages/common/src/components/menu/menu.component.ts","../../../packages/common/src/components/menu/menu.component.html","../../../packages/common/src/directives/menu.directive.ts","../../../packages/common/src/pipes/html-bypass.pipe.ts","../../../packages/common/src/pipes/resource-bypass.pipe.ts","../../../packages/common/src/pipes/script-bypass.pipe.ts","../../../packages/common/src/pipes/style-bypass.pipe.ts","../../../packages/common/src/pipes/url-bypass.pipe.ts","../../../packages/common/src/utils/index.ts","../../../packages/common/src/services/dependency.service.ts","../../../packages/common/src/services/dialog.service.ts","../../../packages/common/src/services/fetch.service.ts","../../../packages/common/src/services/keyboard.service.ts","../../../packages/common/src/components/lazy-loader/types.ts","../../../packages/common/src/components/lazy-loader/lazy-loader.service.ts","../../../packages/common/src/components/lazy-loader/lazy-loader.component.ts","../../../packages/common/src/components/lazy-loader/lazy-loader.component.html","../../../packages/common/src/components/lazy-loader/lazy-loader.module.ts","../../../packages/common/src/components/dynamic-html/types.ts","../../../packages/common/src/components/dynamic-html/dynamic-html.service.ts","../../../packages/common/src/components/dynamic-html/dynamic-html.component.ts","../../../packages/common/src/components/dynamic-html/dynamic-html.module.ts","../../../packages/common/src/public-api.ts","../../../packages/common/src/dotglitch-ngx-common.ts"],"sourcesContent":["/**\n * This utils file exists outside of the strict angular DI zone\n * This enables opening popups without requiring absolute DI bindings.\n */\n\nexport const getPosition = (el: HTMLElement | PointerEvent, config: any = {}, bounds: DOMRect) => {\n // Bounds of the popup owner\n const src: DOMRect = !!el['nodeName']\n ? (el as HTMLElement).getBoundingClientRect()\n : {\n // It's a pointer event, so we'll take the X and Y from the pointer.\n x: el['clientX'],\n y: el['clientY'],\n // Set a default tiny size, so we don't divide by zero.\n width: 0.0001,\n height: 0.0001\n } as DOMRect;\n\n // Popup bounds\n const { width, height } = bounds;\n\n const winh = window.innerHeight;\n const winw = window.innerWidth;\n\n const cords = {\n top: null,\n left: null\n };\n\n if (config?.position == \"left\" || config?.position == \"right\" || !config?.position) {\n switch (config?.alignment) {\n\n case \"end\": {\n // vertically bind to bottom\n cords.top = src.y + src.height - height;\n break;\n }\n case \"afterend\": {\n // vertically bind below bottom\n cords.top = src.y + src.height;\n break;\n }\n case \"beforestart\": {\n // vertically bind above top\n cords.top = src.y - height;\n break;\n }\n case \"start\": {\n // vertically bind to top\n cords.top = src.y;\n break;\n }\n case \"center\":\n default: {\n // vertically center\n cords.top = (src.y + (src.height / 2)) - (height / 2);\n break;\n }\n }\n\n // Apply bounds to prevent the dialog from being cut-off screen\n // Lower bound\n cords.top = Math.max(config?.edgePadding || 0, cords.top);\n // Upper bound\n cords.top = Math.min(winh - height, cords.top);\n\n if (config?.position == \"left\") {\n cords.left = src.x - (width + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n if (config?.position == \"right\" || !config?.position) {\n cords.left = src.x + (src.width + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n\n // Lower bound\n cords.left = Math.max(config?.edgePadding || 0, cords.left);\n // Upper bound\n cords.left = Math.min(winw - width, cords.left);\n }\n else if (config?.position == \"top\" || config?.position == \"bottom\") {\n switch (config?.alignment) {\n case \"end\": {\n // vertically bind to right\n cords.left = src.x + src.width - width;\n break;\n }\n case \"afterend\": {\n // vertically bind past right\n cords.left = src.x + src.width;\n break;\n }\n case \"beforestart\": {\n // vertically bind before left\n cords.left = src.x - width;\n break;\n }\n case \"start\": {\n // vertically bind to left\n cords.left = src.x;\n break;\n }\n case \"center\":\n default: {\n // vertically center\n cords.left = (src.x + (src.width / 2)) - (width / 2);\n break;\n }\n }\n\n // Apply bounds to prevent the dialog from being cut-off screen\n // Lower bound\n cords.left = Math.max(config?.edgePadding || 0, cords.left);\n // Upper bound\n cords.left = Math.min(winw - width, cords.left);\n\n\n if (config?.position == \"top\") {\n cords.top = src.y - (height + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n if (config?.position == \"bottom\") {\n cords.top = src.y + (src.height + (config?.arrowSize || 0) + (config?.arrowPadding || 0));\n }\n\n // Lower bound\n cords.top = Math.max(config?.edgePadding || 0, cords.top);\n // Upper bound\n cords.top = Math.min(winh - height, cords.top);\n }\n\n // Assign unit\n cords.top = cords.top + 'px';\n cords.left = cords.left + 'px';\n\n return cords;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, HostListener, Inject, Input, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Optional } from '@angular/core';\nimport { createApplication } from '@angular/platform-browser';\nimport { firstValueFrom } from 'rxjs';\nimport { PopupOptions } from '../../types/popup';\n\nexport const calcTooltipBounds = async (template: TemplateRef<any> | Type<any>, data: any) => {\n const args = {\n data: data || {},\n template,\n config: {},\n selfCords: { left: \"0px\", top: \"0px\" },\n ownerCords: { x: 0, y: 0, width: 0, height: 0 },\n id: null\n }\n // Forcibly bootstrap the ctx menu outside of the client application's zone.\n const app = await createApplication({\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: args }\n ]\n });\n\n const del = document.createElement(\"div\");\n del.style.position = \"absolute\";\n del.style.left = '-1000vw';\n document.body.append(del);\n\n const base = app.bootstrap(TooltipComponent, del);\n const { instance } = base;\n\n await firstValueFrom(app.isStable);\n\n const el: HTMLElement = instance.viewContainer?.element?.nativeElement;\n\n const rect = el.getBoundingClientRect();\n app.destroy();\n del.remove();\n\n return rect;\n}\n\n\n@Component({\n selector: 'ngx-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [\n // NgIf,\n // NgTemplateOutlet,\n // NgComponentOutlet,\n CommonModule,\n ],\n standalone: true\n})\nexport class TooltipComponent {\n @Input() data: any;\n @Input() config: PopupOptions;\n @Input() ownerCords: DOMRect;\n @Input() selfCords;\n @Input() template: TemplateRef<any> | Type<any>;\n\n public isTemplate: boolean;\n public hasBootstrapped = false;\n public pointerIsOnVoid = false;\n public isLockedOpen = false;\n\n coverRectCords = {\n top: 0,\n left: 0,\n height: 0,\n width: 0\n }\n\n constructor(\n public viewContainer: ViewContainerRef,\n @Optional() @Inject(MAT_DIALOG_DATA) private _data: any,\n @Optional() public dialog: MatDialog, // optional only for the purpose of estimating dimensions\n @Optional() public dialogRef: MatDialogRef<any>,\n ) {\n // Defaults are set before @Input() hooks evaluate\n this.data = this.data || this._data?.data || {};\n this.config = this.config || this._data?.config;\n this.template = this.template || this._data?.template;\n this.ownerCords = this.ownerCords || this._data?.ownerCords;\n this.selfCords = this.selfCords || this._data?.selfCords;\n this.isLockedOpen = this._data?.isLockedOpen;\n }\n\n ngOnInit() {\n\n const selfY = parseInt(this.selfCords.top.replace('px', ''));\n const selfX = parseInt(this.selfCords.left.replace('px', ''));\n\n this.coverRectCords = {\n top: this.ownerCords.y - selfY - 16,\n left: this.ownerCords.x - selfX - 16,\n height: this.ownerCords.height + 32,\n width: this.ownerCords.width + 32\n }\n\n if (this.template instanceof TemplateRef)\n this.isTemplate = true;\n else if (typeof this.template == \"function\")\n this.isTemplate = false;\n else\n throw new Error(\"Unrecognized template object provided.\");\n\n // TODO: resolve the event hook with the .void element\n setTimeout(() => {\n this.hasBootstrapped = true;\n if (this.pointerIsOnVoid && !this.isLockedOpen)\n this.dialogRef.close();\n }, 200);\n }\n\n /**\n * Close the tooltip if these actions occur\n */\n @HostListener(\"window:resize\")\n @HostListener(\"window:blur\")\n @HostListener(\"pointerleave\")\n private onClose() {\n if (!this.isLockedOpen)\n this.dialogRef?.close();\n }\n\n closeOnVoid(force = false) {\n if (!this.isLockedOpen || force)\n this.dialogRef.close();\n }\n}\n","<!-- Mouse event blocker for pointer leave -->\n<div\n *ngIf=\"coverRectCords\"\n class=\"owner-mask\"\n [style.top]=\"coverRectCords.top + 'px'\"\n [style.left]=\"coverRectCords.left + 'px'\"\n [style.height]=\"coverRectCords.height + 'px'\"\n [style.width]=\"coverRectCords.width + 'px'\"\n style=\"z-index: -1;\"\n></div>\n\n<div class=\"void\"\n (pointerenter)=\"pointerIsOnVoid = true; hasBootstrapped && !isLockedOpen && closeOnVoid()\"\n (pointerleave)=\"pointerIsOnVoid = false\"\n (pointerdown)=\"hasBootstrapped && closeOnVoid(true)\"\n></div>\n\n<div class=\"container\">\n <ng-container\n *ngIf=\"isTemplate == false\"\n [ngComponentOutlet]=\"$any(template)\"\n >\n </ng-container>\n\n <ng-container\n *ngIf=\"isTemplate == true\"\n >\n <ng-container\n [ngTemplateOutlet]=\"$any(template)\"\n [ngTemplateOutletContext]=\"{ '$implicit': data, dialog: dialogRef }\"\n ></ng-container>\n </ng-container>\n</div>\n","import { Directive, Input, HostListener, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { getPosition } from './utils';\nimport { } from '../types/popup';import { TooltipComponent, calcTooltipBounds } from '../components/tooltip/tooltip.component';\nimport { TooltipOptions } from '../types/tooltip';\n\n@Directive({\n selector: '[ngxTooltip],[ngx-tooltip]',\n providers: [\n MatDialog\n ],\n standalone: true\n})\nexport class TooltipDirective {\n\n /**\n */\n @Input(\"ngxTooltip\")\n @Input(\"ngx-tooltip\") template: TemplateRef<any> | Type<any>;\n\n /**\n * Configuration for opening the app menu\n */\n @Input(\"ngxTooltipConfig\")\n @Input(\"ngx-tooltip-config\") config: TooltipOptions = {};\n\n /**\n * Arbitrary data to pass into the template\n */\n @Input(\"ngxTooltipContext\")\n @Input(\"ngx-tooltip-context\") data: any = {};\n\n\n private dialogInstance: MatDialogRef<any>;\n private isCursorOverTarget = false;\n private isFreezeOnKeyCodeBound = false;\n\n constructor(\n private dialog: MatDialog,\n private viewContainer: ViewContainerRef\n ) {\n if (this.config.freezeOnKeyCode !== null) {\n this.isFreezeOnKeyCodeBound = true;\n document.body.addEventListener(\"keydown\", this.onKeyDownEvt);\n }\n }\n\n ngOnDestroy() {\n if (this.isFreezeOnKeyCodeBound) {\n document.body.removeEventListener(\"keydown\", this.onKeyDownEvt);\n }\n }\n\n onKeyDown(evt) {\n // TODO: fade message 'tooltip is locked open'\n if (evt.code == (\"F2\")) {\n this.dialogInstance.componentInstance.isLockedOpen = true;\n }\n }\n private onKeyDownEvt = this.onKeyDown.bind(this);\n\n // Needs to be public so we can manually open the dialog\n @HostListener('pointerenter', ['$event'])\n public async onPointerEnter(evt: PointerEvent) {\n // If the template is not a template ref, do nothing.\n if (!(this.template instanceof TemplateRef))\n return;\n\n // If the click trigger is set, we will immediately open the tooltip.\n // This will bypass all other triggers.\n if (this.config.triggers.includes(\"click\")) {\n if (!this.dialogInstance) {\n const el = this.viewContainer.element.nativeElement;\n const data = this.data;\n data.isLockedOpen = true;\n this.dialogInstance = await openTooltip(this.dialog, this.template, this.data, el, this.config);\n }\n return;\n }\n\n this.isCursorOverTarget = true;\n\n setTimeout(async () => {\n // If the cursor moved away in the time\n if (!this.isCursorOverTarget)\n return;\n\n if (!this.dialogInstance) {\n const el = this.viewContainer.element.nativeElement;\n this.dialogInstance = await openTooltip(this.dialog, this.template, this.data, el, this.config);\n }\n }, this.config.delay ?? 250);\n }\n\n @HostListener('pointerleave', ['$event'])\n public async onPointerLeave(evt: PointerEvent) {\n this.isCursorOverTarget = false;\n }\n}\n\n// Helper to open the context menu without using the directive.\nexport const openTooltip = async (\n dialog: MatDialog,\n template: TemplateRef<any> | Type<any>,\n data: any,\n el: HTMLElement,\n config?: TooltipOptions,\n focusTrap = false\n) => {\n\n const rect = await calcTooltipBounds(template, data);\n const ownerCords = el.getBoundingClientRect();\n const cords = getPosition(el, config, rect);\n const specificId = crypto.randomUUID();\n\n return new Promise(res => {\n dialog.open(TooltipComponent, {\n autoFocus: focusTrap,\n restoreFocus: focusTrap,\n data: {\n data: data,\n template: template,\n config: config,\n ownerCords: ownerCords,\n selfCords: cords,\n id: specificId\n },\n panelClass: [\"ngx-tooltip\", 'ngx-' + specificId].concat(config?.customClass || []),\n position: cords,\n hasBackdrop: false\n })\n .afterClosed()\n .subscribe(s => {\n res(s);\n })\n }) as Promise<any>;\n};\n","import { NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Inject, Input, OnInit, Optional, Output, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { DomSanitizer, createApplication } from '@angular/platform-browser';\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { firstValueFrom } from 'rxjs';\nimport { MenuItem, MenuOptions } from '../../types/menu';\n\nexport const calcMenuItemBounds = async (menuItems: MenuItem[], dataObj: any) => {\n const data = {\n data: dataObj,\n items: menuItems,\n config: {},\n id: null\n }\n\n return calcComponentBounds(MenuComponent, data);\n}\n\nconst calcComponentBounds = async (component: Type<any>, data: any) => {\n // Forcibly bootstrap the ctx menu outside of the client application's zone.\n const app = await createApplication({\n providers: [\n { provide: MAT_DIALOG_DATA, useValue: data }\n ]\n });\n\n const del = document.createElement(\"div\");\n del.style.position = \"absolute\";\n del.style.left = '-1000vw';\n document.body.append(del);\n\n const base = app.bootstrap(component, del);\n const { instance } = base;\n\n await firstValueFrom(app.isStable);\n\n const el: HTMLElement = instance.viewContainer?.element?.nativeElement;\n\n const rect = el.getBoundingClientRect();\n app.destroy();\n del.remove();\n return rect;\n}\n\n@Component({\n selector: 'ngx-menu-template-wrapper',\n\n template: `\n <ng-container *ngIf=\"templateType == 'template'; else portalOutlet\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ '$implicit': data, dialog: dialogRef }\"\n />\n </ng-container>\n <ng-template #portalOutlet [cdkPortalOutlet]=\"componentPortal\" ></ng-template>\n`,\n imports: [ NgTemplateOutlet, PortalModule, NgIf ],\n standalone: true\n})\nclass TemplateWrapper {\n\n data: Object;\n template: TemplateRef<any>;\n\n templateType: \"template\" | \"component\"\n componentPortal: ComponentPortal<any>;\n\n constructor(\n @Optional() public dialogRef: MatDialogRef<any>,\n @Inject(MAT_DIALOG_DATA) private _data: any,\n public viewContainer: ViewContainerRef\n ) {\n this.data = _data.data;\n this.template = _data.template;\n\n // TODO: This is probably invalid\n this.templateType = this.template instanceof TemplateRef ? \"template\" : \"component\";\n\n if (this.templateType == \"component\") {\n this.componentPortal = new ComponentPortal(this.template as any);\n }\n }\n}\n\n@Component({\n selector: 'ngx-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n imports: [\n NgIf,\n NgForOf,\n NgTemplateOutlet,\n MatIconModule,\n MatProgressSpinnerModule\n ],\n standalone: true\n})\nexport class MenuComponent implements OnInit {\n @Input() public data: any;\n @Input() public parentCords: DOMRect;\n @Input() public items: MenuItem[];\n @Input() public config: MenuOptions;\n @Input() public id: string;\n\n @Output() closeSignal = new EventEmitter();\n\n selfCords: DOMRect;\n // Check if there are any slashes or dots -- that will clearly exclude it from being a mat icon\n public readonly matIconRx = /[\\/\\.]/i;\n showIconColumn = true;\n showShortcutColumn = true;\n\n constructor(\n public viewContainer: ViewContainerRef,\n public sanitizer: DomSanitizer,\n @Optional() @Inject(MAT_DIALOG_DATA) private _data: any,\n @Optional() public dialog: MatDialog, // optional only for the purpose of estimating dimensions\n @Optional() public dialogRef: MatDialogRef<any>,\n private changeDetector: ChangeDetectorRef\n ) {\n // Defaults are set before @Input() hooks evaluate\n this.data = this._data?.data;\n this.parentCords = this._data?.parentCords;\n this.items = this._data?.items;\n this.config = this._data?.config;\n this.id = this._data?.id;\n }\n\n ngOnInit() {\n this.items?.forEach(i => {\n if (typeof i == \"string\") return;\n\n // Set defaults\n i['_disabled'] = false;\n i['_visible'] = true;\n\n if (i.label)\n try { i['_formattedLabel'] = this.formatLabel(i.label); } catch (e) { console.warn(e) }\n\n if (typeof i.isDisabled == \"function\")\n try { i['_disabled'] = i.isDisabled(this.data || {}); } catch(e) { console.warn(e) }\n\n if (typeof i.isVisible == \"function\")\n try { i['_visible'] = i.isVisible(this.data || {}); } catch (e) { console.warn(e) }\n\n if (typeof i.linkTemplate == \"function\")\n try { i['_link'] = i.linkTemplate(this.data || {}); } catch (e) { console.warn(e) }\n });\n\n // Show the icon column if there are any items with an icon\n this.showIconColumn = !!this.items?.find(i =>\n typeof i == \"object\" &&\n typeof i['icon'] == \"string\" &&\n i['icon'].length > 2\n );\n\n this.showShortcutColumn = !!this.items?.find(i =>\n typeof i == \"object\" &&\n typeof i['shortcut'] == \"string\" &&\n i['shortcut'].length > 2\n );\n\n // setTimeout(() => {\n // this.closeOnLeave = true\n // }, 300);\n }\n\n ngAfterViewInit() {\n if (this.parentCords) {\n this.selfCords = this.viewContainer?.element?.nativeElement?.getBoundingClientRect();\n this.changeDetector.detectChanges();\n }\n }\n\n /**\n *\n * @param item\n * @param evt\n * @returns\n */\n async onMenuItemClick(item: MenuItem, row: HTMLTableRowElement, hideBackdrop = false) {\n if (typeof item == 'string') return null;\n if (item.separator) return null;\n\n // If cache is enabled, only load if we don't have any children.\n const forceLoad = (item.cacheResolvedChildren ? !item.children : true);\n\n if (item.childrenResolver && forceLoad) {\n item['_isResolving'] = true;\n item.children = await item.childrenResolver(this.data);\n item['_isResolving'] = false;\n }\n\n if (!item.childTemplate && !item.children) {\n if (item.action) {\n item.action(this.data);\n this.close();\n }\n // If no action, this is simply a text item.\n\n return null;\n }\n\n // Need X pos, Y pos, width and height\n const bounds = row.getBoundingClientRect();\n\n const cords = {\n top: null,\n left: null,\n bottom: null,\n right: null\n };\n\n // Set position coordinates\n const { width, height } = await (item.childTemplate\n ? calcComponentBounds(TemplateWrapper, { template: item.childTemplate })\n : calcMenuItemBounds(item.children, this.data));\n\n if (bounds.y + height > window.innerHeight)\n cords.bottom = \"0px\";\n if (bounds.x + bounds.width + width > window.innerWidth)\n cords.left = ((bounds.x - width)) + \"px\";\n\n if (!cords.bottom) cords.top = bounds.y + \"px\";\n if (!cords.left) cords.left = bounds.x + bounds.width + \"px\";\n\n const component = item.children ? MenuComponent : TemplateWrapper as any;\n\n const dialogRef = this.dialog.open(component, {\n position: cords,\n panelClass: [\"ngx-menu\", \"ngx-app-menu\"].concat(this.config?.customClass || []),\n backdropClass: \"ngx-menu-backdrop\",\n hasBackdrop: !hideBackdrop,\n data: {\n data: this.data,\n parentCords: this.viewContainer?.element?.nativeElement?.getBoundingClientRect(),\n items: item.children,\n template: item.childTemplate,\n config: this.config\n }\n });\n\n let _s = dialogRef\n .afterClosed()\n .subscribe((result) => {\n if (result != -1) {\n if (result && typeof item.action == 'function')\n item.action(result);\n\n this.close();\n }\n else {\n item['_selfclose'] = Date.now();\n }\n\n _s.unsubscribe();\n });\n\n return dialogRef;\n }\n\n /**\n *\n * @param label\n * @returns\n */\n formatLabel(label: string): string {\n return label.replace(/_([a-z0-9])_/i, (match, group) => `<u>${group}</u>`);\n }\n\n /**\n * Close the context menu under these circumstances\n */\n // @HostListener(\"window:resize\", ['event'])\n // @HostListener(\"window:blur\", ['event'])\n close() {\n this.closeSignal.emit();\n\n this.dialogRef?.close();\n }\n\n /**\n * Check if the dialog is clipping offscreen\n * if so, move it back into view.\n */\n @HostListener(\"window:resize\")\n private onResize() {\n const el = this.viewContainer?.element?.nativeElement as HTMLElement;\n if (!el) return;\n\n const { width, height, x, y } = el.getBoundingClientRect();\n\n const target = document.querySelector(\".ngx-menu\") as HTMLElement;\n if (!target) return;\n\n // Move back into view if we're clipping outside of the bottom\n if (y + height > window.innerHeight) {\n const newTop = (window.innerHeight - (height + (this.config.edgePadding || 12))) + \"px\";\n target.style['margin-top'] = newTop;\n }\n\n // Move back into view if we're clipping off the right\n if (x + width > window.innerWidth) {\n const newLeft = (window.innerWidth - (width + (this.config.edgePadding || 12))) + \"px\"\n target.style['margin-left'] = newLeft;\n }\n }\n\n // private hoveredItems: MatDialogRef<any>[];\n // async onHover(item, row: HTMLTableRowElement) {\n // this.hoveredItems.forEach(i => i.close(-1));\n\n // if (typeof item['_selfclose'] == 'number' && (Date.now() - item['_selfclose']) < 3*1000) return;\n\n // const hi = await this.onMenuItemClick(item, row, true);\n // this.hoveredItems.push(hi);\n\n // hi.afterClosed().toPromise().then(e => {\n // this.viewContainer.element.nativeElement.focus();\n // this.hoveredItems.splice(this.hoveredItems.findIndex(i => i == hi), 1);\n // })\n // }\n\n // closeOnLeave = false;\n // async onLeave() {\n // if (this.closeOnLeave) {\n // if (this.hoveredItems.length > 0) {\n // this.hoveredItems.forEach(i => i.close(-1));\n // this.hoveredItems.splice(0);\n // }\n // else {\n // this.closeSignal.next(-1);\n\n // this.dialogRef.close(-1);\n // }\n // }\n // }\n}\n","<table>\n <tbody>\n <ng-container *ngFor=\"let item of items\">\n <ng-container>\n\n <!-- A row with a click action -->\n <tr #row\n *ngIf=\"item != 'separator' && item.separator != true && item['_visible']\"\n [class.disabled]=\"item['_disabled']\"\n (click)=\"!item['_disabled'] && onMenuItemClick(item, row)\"\n [class.hover]=\"item['children'] && row['hover']\"\n (pointerenter)=\"row['hover'] = true;\"\n (pointerleave)=\"row['hover'] = false\"\n >\n <!-- (item['children']?.length > 0 || item['childTemplate']) && onHover(item, row); closeOnLeave=true -->\n <td class=\"icon\" *ngIf=\"showIconColumn\">\n <img *ngIf=\"matIconRx.test(item.icon); else matIcon\" [src]=\"item.icon\" />\n <ng-template #matIcon>\n <mat-icon [fontIcon]=\"item.icon\"></mat-icon>\n </ng-template>\n </td>\n\n <!-- 'Normal' action based item -->\n <ng-container>\n <td class=\"label\"\n [style.padding-left]=\"showIconColumn ? 0 : '16px'\"\n >\n <a\n [attr.target]=\"item.linkTarget\"\n [attr.href]=\"(item['_link'] || item.link) ? sanitizer.bypassSecurityTrustUrl(item['_link'] || item.link) : undefined\"\n >\n <ng-container\n *ngIf=\"$any(item.labelTemplate)?.prototype; else labelTemplate\"\n [ngTemplateOutlet]=\"$any(item).labelTemplate\"\n [ngTemplateOutletContext]=\"{ '$implicit': data, 'dialog': dialogRef }\"\n />\n\n <ng-template #labelTemplate>\n <ng-container *ngIf=\"!$any(item)?.labelTemplate\">\n <div [innerHTML]=\"item['_formattedLabel']\"></div>\n </ng-container>\n <ng-container *ngIf=\"$any(item)?.labelTemplate\">\n {{$any(item)?.labelTemplate(data || {})}}\n </ng-container>\n </ng-template>\n </a>\n </td>\n </ng-container>\n\n <td class=\"shortcut\" *ngIf=\"showShortcutColumn\">\n {{item.shortcutLabel}}\n </td>\n <td style=\"min-width: 16px\">\n <mat-icon *ngIf=\"\n (item.children && item.children.length > 0) ||\n item.childTemplate ||\n (item.childrenResolver && !item['_isResolving'])\n \"\n sytle=\"transform: translateY(2px)\"\n >\n chevron_right\n </mat-icon>\n\n <mat-progress-spinner *ngIf=\"item['_isResolving']\" mode=\"indeterminate\" [diameter]=\"20\" style=\"margin-right: 4px\"/>\n </td>\n </tr>\n\n <tr *ngIf=\"item != 'separator' && item.separator == true\" class=\"disabled separator\">\n <td class=\"center\" [attr.colspan]=\"2 + (showIconColumn ? 1 : 0) + (showShortcutColumn ? 1 : 0)\">\n <span class=\"hr\">\n {{item['label'] || ''}}\n </span>\n </td>\n </tr>\n <tr *ngIf=\"item == 'separator'\" class=\"disabled separator\">\n <td [attr.colspan]=\"2 + (showIconColumn ? 1 : 0) + (showShortcutColumn ? 1 : 0)\">\n <hr/>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n</table>\n\n<!-- <div *ngIf=\"true\" class=\"backdrop\"></div> -->\n<!-- <div\n *ngIf=\"parentCords && this.selfCords\"\n class=\"backdrop parent\"\n [style.top]=\"(parentCords.y - selfCords.y + 6) + 'px'\"\n [style.left]=\"(parentCords.x - selfCords.x + 12) + 'px'\"\n [style.width]=\"(parentCords.width) + 'px'\"\n [style.height]=\"(parentCords.height) + 'px'\"\n>\n</div> -->\n<!-- <ng-container *ngIf=\"parentCords && selfCords\">\n <div #top\n class=\"backdrop-outer\"\n [style.bottom]=\"(parentCords.y - selfCords.y)*-1 + parentCords.height + 'px'\"\n style=\"background: #f003;\"\n (pointerenter)=\"onLeave()\"\n ></div>\n <div #right\n class=\"backdrop-outer\"\n [style.left]=\"((parentCords.x - selfCords.x) + parentCords.width) + 'px'\"\n style=\"background: #0f03;\"\n (pointerenter)=\"onLeave()\"\n >\n <div>px: {{parentCords.x}}</div>\n <div>py: {{parentCords.y}}</div>\n <div>pw: {{parentCords.width}}</div>\n <div>ph: {{parentCords.height}}</div>\n <div>sx: {{selfCords.x}}</div>\n <div>sy: {{selfCords.y}}</div>\n <div>sw: {{selfCords.width}}</div>\n <div>sh: {{selfCords.height}}</div>\n </div>\n <div #bottom\n class=\"backdrop-outer\"\n [style.top]=\"((parentCords.y + parentCords.height - selfCords.y)) + 'px'\"\n style=\"background: #00f3;\"\n (pointerenter)=\"onLeave()\"\n ></div>\n <div #left\n class=\"backdrop-outer\"\n [style.right]=\"((parentCords.x - selfCords.x)*-1 + parentCords.width + 32) + 'px'\"\n style=\"background: #fff3;\"\n (pointerenter)=\"onLeave()\"\n ></div>\n</ng-container> -->\n","import { Directive, Input, ViewContainerRef } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { getPosition } from './utils';\nimport { MenuItem, MenuOptions } from '../types/menu';\nimport { MenuComponent, calcMenuItemBounds } from '../components/menu/menu.component';\n\n@Directive({\n selector: '[ngx-contextmenu],[ngx-menu],[ngxContextmenu],[ngxMenu]',\n providers: [\n MatDialog\n ],\n standalone: true\n})\nexport class MenuDirective {\n\n /**\n * The data representing the item the menu was opened for.\n */\n @Input(\"ngxMenuContext\")\n @Input(\"ngx-menu-context\") data: any;\n\n /**\n * The items that will be bound to the context menu.\n */\n @Input(\"ngxContextmenu\")\n @Input(\"ngx-contextmenu\") ctxMenuItems: MenuItem[];\n\n /**\n * The items that will be bound to the menu that pops\n * up when the user clicks the element.\n */\n @Input(\"ngxMenu\")\n @Input(\"ngx-menu\") menuItems: MenuItem[];\n\n /**\n * Configuration for opening the app menu\n */\n @Input(\"ngxMenuConfig\")\n @Input(\"ngx-menu-config\") config: MenuOptions = {};\n\n constructor(\n private dialog: MatDialog,\n private viewContainer: ViewContainerRef\n ) { }\n\n ngAfterViewInit() {\n const el = this.viewContainer.element.nativeElement as HTMLElement;\n\n // Automatically attach context menu items to\n // the contextmenu event\n if (this.ctxMenuItems) {\n el.onclick = this.openMenu.bind(this);\n el.addEventListener('contextmenu', (e) => {\n e.preventDefault();\n this.openMenu(e as any, this.ctxMenuItems);\n });\n }\n\n if (!this.config?.trigger) {\n el.addEventListener('click', this.openMenu.bind(this));\n }\n else {\n const triggers = Array.isArray(this.config.trigger) ? this.config.trigger : [this.config.trigger];\n\n triggers.forEach(t => {\n if (t == \"contextmenu\") {\n el.addEventListener(t, (e) => {\n e.preventDefault();\n this.openMenu(e as any, this.ctxMenuItems);\n });\n }\n else {\n el.addEventListener(t, this.openMenu.bind(this));\n }\n });\n }\n }\n\n async openMenu(evt: PointerEvent, items = this.menuItems) {\n const el = this.viewContainer.element.nativeElement as HTMLElement;\n\n el.classList.add(\"ngx-menu-open\");\n\n const isCtxEvent = evt.button == 2;\n\n return openMenu(this.dialog, items, this.data, evt, this.config, isCtxEvent ? null : el)\n .then((...res) => {\n el.classList.remove(\"ngx-menu-open\");\n return res;\n })\n .catch((ex) => {\n el.classList.remove(\"ngx-menu-open\");\n throw ex;\n });\n }\n}\n\n// Helper to open the menu without using the directive.\nexport const openMenu = async (\n dialog: MatDialog,\n menuItems: MenuItem[],\n data: any,\n evt: PointerEvent,\n config: MenuOptions = {},\n el?: HTMLElement\n) => {\n // console.log({ dialog, menuItems, data, evt, config, el });\n\n evt.preventDefault();\n evt.stopPropagation();\n\n // Apply defaults.\n if (!config.alignment)\n config.alignment = \"start\";\n\n const cords = getPosition(el || evt, config, await calcMenuItemBounds(menuItems, data));\n const specificId = crypto.randomUUID();\n\n return new Promise(res => {\n dialog.open(MenuComponent, {\n data: {\n data: data,\n items: menuItems,\n config: config,\n id: specificId\n },\n panelClass: [\"ngx-menu\", 'ngx-' + specificId].concat(config?.customClass || []),\n position: cords,\n backdropClass: \"ngx-menu-backdrop\"\n })\n .afterClosed()\n .subscribe(s => {\n res(s);\n })\n }) as Promise<any>;\n};\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'htmlbypass',\n standalone: true\n})\nexport class HtmlBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustHtml(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'resourcebypass',\n standalone: true\n})\nexport class ResourceBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'scriptbypass',\n standalone: true\n})\nexport class ScriptBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustScript(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'stylebypass',\n standalone: true\n})\nexport class StyleBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustStyle(url);\n }\n}\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n\n/**\n * Url Sanitizer pipe.\n *\n * This trusts URLs that exist in a safe list defined in our environments.ts file.\n * Any other URLs will NOT be trusted, thus will not be loaded.\n */\n@Pipe({\n name: 'urlbypass',\n standalone: true\n})\nexport class UrlBypass implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n public transform(url: string): SafeUrl {\n return this.sanitizer.bypassSecurityTrustUrl(url);\n }\n}\n","export const sleep = ms => new Promise(r => setTimeout(r, ms));\n\n/**\n * Prompt the user to save a json file of the given object.\n */\nexport const saveObjectAsFile = (name: string, data: Object) => {\n const a = document.createElement(\"a\");\n const file = new Blob([JSON.stringify(data)], { type: \"application/json\" });\n a.href = URL.createObjectURL(file);\n a.download = name;\n a.click();\n a.remove();\n};\n\n/**\n * Formatted logger that will print a bit of context before the message.\n * @returns\n */\nexport const Logger = (context: string, contextColor: string, textColor: string = \"#03a9f4\") => ({\n log: (message, ...args) => {\n console.log(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n },\n warn: (message, ...args) => {\n console.warn(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n },\n err: (message, ...args) => {\n console.error(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n },\n error: (message, ...args) => {\n console.error(`%c[${context}] %c${message}`, 'color: ' + contextColor, 'color: ' + textColor, ...args);\n }\n});\n\n/**\n * Convert a string `fooBAR baz_160054''\"1]\"` into a slug: `foobar-baz-1600541`\n */\nexport const stringToSlug = (text: string) =>\n (text || '')\n .trim()\n .toLowerCase()\n .replace(/[\\-_+ ]/g, '-')\n .replace(/[^a-z0-9\\-]/g, '');\n\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, Inject } from '@angular/core';\nimport { sleep } from '../utils';\n\nconst SCRIPT_INIT_TIMEOUT = 500; // ms\n\n/**\n * Service that installs CSS/JS dynamically\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DependencyService {\n\n constructor(\n @Inject(DOCUMENT) private document: Document\n ) { }\n\n /**\n * Install a Javascript file into the webpage on-demand\n * @param id Unique identifier for the JS script\n * @param src URL of the script\n * @param globalkey A global object the script will provide.\n * Providing this will ensure a promise only resolves after the\n * specified global object is provided, with a timeout of 500ms\n */\n loadScript(id: string, src: string, globalkey: string = null): Promise<void> {\n return new Promise((res, rej) => {\n if (this.document.getElementById(id)) return res();\n\n const script = this.document.createElement('script');\n script.id = id;\n\n script.setAttribute(\"async\", '');\n script.setAttribute(\"src\", src);\n\n script.onload = async () => {\n if (typeof globalkey == \"string\") {\n let i = 0;\n\n for (; !window[globalkey] && i < SCRIPT_INIT_TIMEOUT; i += 10)\n await sleep(10);\n\n if (i >= SCRIPT_INIT_TIMEOUT) {\n return rej(new Error(\"Timed out waiting for script to self-initialize.\"));\n }\n }\n\n res();\n }\n\n this.document.body.appendChild(script);\n })\n }\n\n // loadStylesheet(id: string, href: string) {\n // let themeLink = this.document.getElementById(id) as HTMLLinkElement;\n // if (themeLink) {\n // themeLink.href = href;\n // }\n // else {\n // const style = this.document.createElement('link');\n // style.id = id;\n // style.rel = 'stylesheet';\n // style.href = href;\n\n // const head = this.document.getElementsByTagName('head')[0];\n\n // head.appendChild(style);\n // }\n // }\n}\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Logger } from '../utils';\nimport { LazyLoaderService } from '../public-api';\n\nconst { log, warn, err } = Logger(\"DialogService\", \"#607d8b\");\n\nexport type DialogOptions = Partial<Omit<MatDialogConfig<any>, 'data'> & {\n /**\n *\n */\n group: string,\n\n /**\n * List of properties to be provided to @Input() injectors\n */\n inputs: { [key: string]: any },\n /**\n * List of properties to be provided to @Input() injectors\n */\n outputs: { [key: string]: Function },\n /**\n * Context in which to execute callbacks from the `outputs` property via\n * @Output() event Emitters\n */\n parent: any\n}>;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n\n private dialogs: MatDialogRef<unknown, any>[] = [];\n\n constructor(\n private dialog: MatDialog,\n private lazyLoader: LazyLoaderService\n ) {\n }\n\n open(name: string, opts: DialogOptions = {}): Promise<any> {\n return new Promise((resolve, reject) => {\n\n const registration = this.lazyLoader.resolveRegistrationEntry(name, opts.group || \"default\");\n if (!registration)\n return reject(new Error(\"Cannot open dialog for \" + name + \". Could not find in registry.\"));\n\n\n const args = {\n closeOnNavigation: true,\n restoreFocus: true,\n width: registration['width'],\n height: registration['height'],\n ...opts,\n data: {\n id: name,\n inputs: opts.inputs || {},\n outputs: opts.outputs || {},\n group: opts.group\n },\n panelClass: [\n \"dialog-\" + name,\n ...(Array.isArray(opts.panelClass) ? opts.panelClass : [opts.panelClass] || [])\n ]\n };\n\n // TODO:\n let dialog = this.dialog.open(undefined, args);\n\n dialog['idx'] = name;\n this.dialogs.push(dialog);\n\n dialog.afterClosed().subscribe(result => {\n log(\"Dialog closed \" + name, result);\n resolve(result);\n });\n });\n }\n\n // Close all dialogs matching the given name\n close(name: string) {\n const dialogs = this.dialogs.filter(d => d['idx'] == name);\n dialogs.forEach(dialog => dialog.close());\n }\n\n /**\n * Method to close _all_ dialogs.\n * Should be used sparingly.\n */\n clearDialog() {\n this.dialogs.forEach(dialog => dialog.close());\n }\n\n /**\n * Open a confirmation dialog. Will reject if a cancel occurs.\n * @param title title of the dialog\n * @param message main question that a user needs to confirm/deny\n * @returns\n */\n // confirmAction(title: string, message: string): Promise<void> {\n // return new Promise((res, rej) => {\n // const dialog = this.dialog.open(ConfirmationComponent, {\n // maxHeight: \"90vh\",\n // maxWidth: \"90vw\",\n // panelClass: [\"dialog-confirmation\"],\n // closeOnNavigation: true,\n // restoreFocus: true,\n // data: {title, message}\n // });\n\n // dialog.afterClosed().subscribe(result => {\n // result == true ? res() : rej();\n // });\n // });\n // }\n}\n","import { HttpClient, HttpContext, HttpHeaders, HttpParams } from \"@angular/common/http\";\nimport { Injectable, isDevMode } from '@angular/core';\nimport { retry } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n// Total number of _retries_ if there is a 429 response code.\nconst retryCount = 2;\n\nexport type FetchOptions = {\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n context?: HttpContext;\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n body?: any,\n observe?: 'body' | 'events' | 'response';\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n}\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class Fetch {\n constructor(\n private http: HttpClient\n ) { }\n\n // Public interface for making AJAX transactions\n public get<T>(url: string, options: FetchOptions = {}, returnError = false): Promise<T> {\n return this.request<T>(\"get\", url, options, returnError);\n }\n public put<T>(url: string, body: any, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.body = (options.body && Object.keys(options.body).length > 0 ? options.body : body) || {};\n return this.request<T>(\"put\", url, options, returnError);\n }\n public post<T>(url: string, body: any, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.body = (options.body && Object.keys(options.body).length > 0 ? options.body : body) || {};\n return this.request<T>(\"post\", url, options, returnError);\n }\n public patch<T>(url: string, body: any, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.body = (options.body && Object.keys(options.body).length > 0 ? options.body : body) || {};\n return this.request<T>(\"patch\", url, options, returnError);\n }\n public delete<T>(url: string, options: FetchOptions = {}, returnError = false): Promise<T> {\n return this.request<T>(\"delete\", url, options, returnError);\n }\n\n // Internally, handle the observable as a promise.\n private request<T>(method: string, url: string, options: FetchOptions = {}, returnError = false): Promise<T> {\n options.reportProgress = true;\n\n // Allow support for different response types.\n // Generally we shouldn't need this to be anything other than JSON.\n options.responseType = options.responseType || \"json\";\n options.withCredentials = true;\n\n const p = new Promise((resolve, reject) => {\n const o = this.http.request(method, url, options)\n .pipe(retry({\n delay(error, retryCount) {\n // 429 and 502 are most common for overloaded\n // backends -- so we'll retry if we get these errors\n if (error.status == 429 || error.status == 502)\n return of({});\n\n if (error.status == 504 && isDevMode())\n alert(\"It looks like you can't reach your development backend anymore\");\n\n throw error;\n },\n count: retryCount\n }))\n .subscribe(data => {\n resolve(data as unknown as T);\n\n // provide 3ms slacktime before releasing observable.\n setTimeout(() => {\n o.unsubscribe();\n }, 3);\n });\n });\n\n return p as Promise<T>;\n }\n}\n","import { Injectable, HostListener } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport type KeyCommand = {\n /**\n * The non-modifier key(s) that must be pressed for the event to fire.\n */\n key: string | string[],\n label: string,\n\n ctrl?: boolean,\n alt?: boolean,\n shift?: boolean,\n super?: boolean,\n tab?: boolean,\n\n /**\n * Should the handler interrupt default event handling\n */\n interrupt?: boolean,\n}\n\n/**\n * Service that listens for global keyboard events\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class KeyboardService {\n\n private heldKeys: { [key: string]: boolean } = {};\n public keyCommands: {\n ctrl?: boolean,\n alt?: boolean,\n shift?: boolean,\n super?: boolean,\n interrupt?: boolean,\n label: string,\n keys: string[],\n sub: Subject<KeyboardEvent>\n }[] = [];\n\n constructor() {\n window.addEventListener(\"keydown\", (evt) => this.onKeyDown(evt));\n window.addEventListener(\"keyup\", (evt) => this.onKeyUp(evt));\n }\n\n private onKeyDown(evt: KeyboardEvent) {\n // console.log(\"keydown\", evt.key)\n this.heldKeys[evt.key.toLowerCase()] = true;\n\n // Do a general filter where all of the modifiers must be matched if specified\n // Then check that the actual keys match what was specified\n let commands = this.keyCommands\n .filter(kc =>\n (kc.ctrl == undefined || kc.ctrl === evt.ctrlKey) &&\n (kc.alt == undefined || kc.alt === evt.altKey) &&\n (kc.shift == undefined || kc.shift === evt.shiftKey) &&\n (kc.super == undefined || kc.super === evt.metaKey) &&\n kc.keys.length == kc.keys.filter(k => this.heldKeys[k])?.length\n );\n\n if (evt.ctrlKey && commands.length > 0 || commands.find(c => c.interrupt)) {\n evt.stopPropagation();\n evt.preventDefault();\n }\n\n if (evt.key == \"Pause\")\n debugger;\n\n commands.forEach(kc => kc.sub.next(evt));\n\n /**\n * Prevent CTRL+P and other standard key events from being handled by the browser.\n * Allow specific combonations:\n * CTRL+W\n * CTRL+T\n * CTRL+F5\n */\n // if (evt.ctrlKey && !['w', 't', 'F5'].includes(evt.key)) {\n // evt.preventDefault();\n // }\n }\n\n private onKeyUp(evt: KeyboardEvent) {\n this.heldKeys[evt.key.toLowerCase()] = false;\n }\n\n private onKeyPress(evt: KeyboardEvent) {\n // this.heldKeys[evt.key] = false;\n }\n\n /**\n * Use this to subscribe to keyboard events throughout\n * the application. This is a passive listener and will\n * **NOT** interrupt the event chain.\n */\n public onKeyCommand(key: KeyCommand) {\n const sub = new Subject<KeyboardEvent>();\n let item = {\n ...key,\n keys: (Array.isArray(key.key) ? key.key : [key.key]),\n sub: sub\n }\n\n this.keyCommands.push(item);\n\n return {\n ...sub,\n subscribe: ((...args) => {\n const s = sub.subscribe(...args);\n return {\n ...s,\n unsubscribe: () => {\n s.unsubscribe();\n\n // Remove the keycommand from the list of listeners.\n const i = this.keyCommands.findIndex(c => c == item);\n this.keyCommands.splice(i, 1);\n }\n };\n }) as Subject<KeyboardEvent>['subscribe']\n };\n }\n\n /**\n * Return `true` if shift is currently pressed.\n */\n get isShiftPressed() {\n return !!this.heldKeys[\"shift\"];\n }\n /**\n * Return `true` if ctrl is currently pressed.\n */\n get isCtrlPressed() {\n return !!this.heldKeys[\"control\"];\n }\n /**\n * Return `true` if alt is currently pressed.\n */\n get isAltPressed() {\n return !!this.heldKeys[\"alt\"];\n }\n /**\n * Return `true` if super (mac/linux) or the windows key is currently pressed.\n */\n get isSuperPressed() {\n return !!this.heldKeys[\"super\"];\n }\n /**\n * Return `true` if tab is currently pressed.\n */\n get isTabPressed() {\n return !!this.heldKeys[\"tab\"];\n }\n\n @HostListener(\"window:blur\")\n @HostListener(\"window:resize\")\n clearKeys() {\n Object.keys(this.heldKeys).forEach(k => {\n this.heldKeys[k] = false;\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { TemplateRef } from '@angular/core';\n\nexport enum ComponentResolveStrategy {\n /**\n * Match the fist component we find\n * (best used for standalone components)\n * @default\n */\n PickFirst,\n /**\n * Perform an Exact ID to Classname of the Component\n * case sensitive, zero tolerance.\n */\n MatchIdToClassName,\n /**\n * Perform a fuzzy ID to classname match\n * case insensitive, mutes symbols\n * ignores \"Component\" and \"Module\" postfixes on class\n * names\n */\n FuzzyIdClassName,\n\n /**\n * Use a user-provided component match function\n */\n Custom\n}\n\nexport type NgxLazyLoaderConfig = Partial<{\n entries: ComponentRegistration[],\n\n notFoundTemplate: TemplateRef<any>,\n notFoundComponent: ComponentType<any>,\n\n errorTemplate: TemplateRef<any>,\n errorComponent: ComponentType<any>,\n\n loaderDistractorTemplate: TemplateRef<any>,\n loaderDistractorComponent: ComponentType<any>,\n\n logger: {\n log: (...args: any) => void,\n warn: (...args: any) => void,\n err: (...args: any) => void;\n },\n /**\n * What strategy should be used to resolve components\n * @default ComponentResolveStrategy.FuzzyIdClassName\n */\n componentResolveStrategy: ComponentResolveStrategy,\n customResolver: (registry: (CompiledComponent | CompiledModule)[]) => Object\n}>;\n\ntype RegistrationConfig = {\n /**\n * Specify a group to categorize components. If not specified,\n * will default to the `default` group.\n */\n group?: string,\n /**\n * load: () => import('./pages/my-page/my-page.component')\n */\n load: () => any,\n\n /**\n * Called before a component is loaded.\n * If it returns `false` the component will not be loaded.\n */\n // canActivate: () => boolean\n\n [key: string]: any\n}\n\nexport type ComponentRegistration = (\n ({ id: string } & RegistrationConfig) |\n ({ matcher: string[] | RegExp | ((value: string) => boolean); } & RegistrationConfig)\n);\n\nexport type DynamicRegistrationArgs<T = any> = {\n id: string,\n group?: string,\n matcher?: string[] | RegExp | ((val: string) => boolean),\n component?: T,\n load?: () => any;\n}\n\n/**\n * This is roughly a compiled component\n */\nexport type CompiledComponent = {\n (): CompiledComponent,\n ɵfac: Function,\n ɵcmp: {\n consts;\n contentQueries;\n data;\n declaredInputs;\n decls;\n dependencies;\n directiveDefs;\n encapsulation;\n exportAs;\n factory;\n features;\n findHostDirectiveDefs;\n getStandaloneInjector;\n hostAttrs;\n hostBindings;\n hostDirectives;\n hostVars;\n id: string;\n inputs;\n ngContentSelectors;\n onPush: boolean;\n outputs;\n pipeDefs;\n providersResolver;\n schemas;\n selectors: string[];\n setInput;\n standalone: boolean;\n styles: string[];\n tView;\n template;\n type: Function;\n vars: number;\n viewQuery;\n };\n};\n\n/**\n * This is roughly a compiled module\n */\nexport type CompiledModule = {\n (): CompiledModule,\n ɵfac: Function,\n ɵinj: {\n providers: any[],\n imports: any[];\n },\n ɵmod: {\n bootstrap: any[],\n declarations: Function[],\n exports: any[],\n id: unknown,\n imports: any[],\n schemas: unknown,\n transitiveCompileScopes: unknown,\n type: Function;\n };\n};\n\nexport type CompiledBundle = { [key: string]: CompiledComponent | CompiledModule; };\n\n\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { CompiledComponent, CompiledModule, ComponentRegistration, ComponentResolveStrategy, DynamicRegistrationArgs, NgxLazyLoaderConfig } from './types';\nimport { stringToSlug, Logger } from '../../utils';\n\n// Monkey-patch the type of these symbols.\nconst $id = Symbol(\"id\") as any as string;\nconst $group = Symbol(\"group\") as any as string;\n\nexport const NGX_LAZY_LOADER_CONFIG = new InjectionToken<NgxLazyLoaderConfig>('config');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LazyLoaderService {\n private get err() { return LazyLoaderService.config.logger.err; }\n private get log() { return LazyLoaderService.config.logger.log; }\n private get warn() { return LazyLoaderService.config.logger.warn; }\n\n // A proxied registry that mutates reference keys\n private static registry: {\n [key: string]: ComponentRegistration[];\n } = {};\n\n public static config: NgxLazyLoaderConfig;\n\n constructor(@Inject(NGX_LAZY_LOADER_CONFIG) config: NgxLazyLoaderConfig = {}) {\n // Ensure this is singleton and works regardless of special instancing requirements.\n LazyLoaderService.configure(config);\n }\n\n private static configure(config: NgxLazyLoaderConfig) {\n const { log, warn, err } = Logger(\"ngx-lazy-loader\", \"#009688\");\n\n this.config = {\n componentResolveStrategy: ComponentResolveStrategy.PickFirst,\n logger: {\n log,\n warn,\n err\n },\n ...config\n };\n\n config.entries?.forEach(e => this.addComponentToRegistry(e))\n\n // If a custom resolution strategy is provided but no resolution function is passed,\n // we throw an error\n if (\n this.config.componentResolveStrategy == ComponentResolveStrategy.Custom &&\n !this.config.customResolver\n ) {\n throw new Error(\"Cannot initialize. Configuration specifies a custom resolve matcher but none was provided\");\n }\n\n if (this.config.loaderDistractorComponent && this.config.loaderDistractorTemplate)\n throw new Error(\"Cannot have both a Component and Template for Distractor view.\")\n if (this.config.errorComponent && this.config.errorTemplate)\n throw new Error(\"Cannot have both a Component and Template for Error view.\")\n if (this.config.notFoundComponent && this.config.notFoundTemplate)\n throw new Error(\"Cannot have both a Component and Template for NotFound view.\")\n\n }\n\n private static addComponentToRegistry(registration: ComponentRegistration) {\n if (!registration)\n throw new Error(\"Cannot add <undefined> component into registry.\");\n\n // Clone the object into our repository and transfer the id into a standardized slug format\n\n const id = stringToSlug(registration.id ?? Date.now().toString()); // purge non-basic ASCII chars\n const group = registration.group || \"default\";\n\n registration[$id] = id;\n registration[$group] = id;\n\n\n if (!this.registry[group])\n this.registry[group] = [];\n\n // Check if we already have a registration for the component\n // if (this.registry[group] && typeof this.registry[group]['load'] == \"function\") {\n // // Warn the developer that the state is problematic\n // this.config.logger.warn(\n // `A previous entry already exists for ${id}! The old registration will be overridden.` +\n // `Please ensure you use groups if you intend to have duplicate component ids. ` +\n // `If this was intentional, first remove the old component from the registry before adding a new instance`\n // );\n\n // // If we're in dev mode, break the loader surface\n // if (isDevMode())\n // return;\n // }\n\n this.registry[group].push(registration);\n }\n\n /**\n * Register an Angular component\n * @param id identifier that is used to resolve the component\n * @param group\n * @param component Angular Component Class constructor\n */\n public registerComponent<T extends { new(...args: any[]): InstanceType<T>; }>(args: DynamicRegistrationArgs<T>) {\n if (this.isComponentRegistered(args.id, args.group)) {\n this.log(`Will not re-register component '${args.id}' in group '${args.group || 'default'}' `);\n return;\n }\n\n LazyLoaderService.addComponentToRegistry({\n id: stringToSlug(args.id),\n matcher: args.matcher,\n group: stringToSlug(args.group || \"default\"),\n load: args.load || (() => args.component)\n });\n }\n\n /**\n *\n * @param id\n * @param group\n */\n public unregisterComponent(id: string, group = \"default\") {\n const _id = stringToSlug(id);\n const _group = stringToSlug(group);\n\n if (!this.resolveRegistrationEntry(id, group))\n throw new Error(\"Cannot unregister component ${}! Component is not present in registry\")\n\n // TODO: handle clearing running instances\n delete LazyLoaderService.registry[_group][_id];\n }\n\n\n /**\n * Get the registration entry for a component.\n * Returns null if component is not in the registry.\n */\n public resolveRegistrationEntry(value: string, group = \"default\") {\n const _id = stringToSlug(value);\n const _group = stringToSlug(group);\n\n const targetGroup = (LazyLoaderService.registry[_group] || []);\n\n let items = targetGroup.filter(t => {\n if (!t) return false;\n\n // No matcher, check id\n if (!t.matcher)\n return t[$id] == _id;\n\n // Matcher is regex\n if (t.matcher instanceof RegExp)\n return t.matcher.test(_id) || t.matcher.test(value);\n\n // Matcher is string => regex\n if (typeof t.matcher == 'string') {\n const rx = new RegExp(t.matcher, 'ui');\n return rx.test(_id) || rx.test(value);\n }\n\n // Matcher is array\n if (Array.isArray(t.matcher)) {\n return !!t.matcher.find(e => stringToSlug(e) == _id);\n }\n\n // Custom matcher function\n if (typeof t.matcher == \"function\")\n return t.matcher(_id);\n\n return false;\n });\n\n if (items.length > 1) {\n this.warn(\"Resolved multiple components for the provided `[component]` binding. This may cause UI conflicts.\");\n }\n if (items.length == 0) {\n return null;\n }\n\n const out = items[0];\n\n if (out.matcher instanceof RegExp) {\n const result = _id.match(out.matcher) || value.match(out.matcher);\n\n return {\n entry: out,\n matchGroups: result?.groups\n };\n }\n\n return { entry: out };\n }\n\n /**\n * Check if a component is currently registered\n * Can be used to validate regex matchers and aliases.\n */\n public isComponentRegistered(value: string, group = \"default\") {\n return !!this.resolveRegistrationEntry(value, group);\n }\n\n /**\n *\n * @param bundle\n * @returns The component `Object` if a component was resolved, `null` if no component was found\n * `false` if the specified strategy was an invalid selection\n */\n public resolveComponent(id: string, group: string, modules: (CompiledComponent | CompiledModule)[]): Object | null | false {\n\n switch (LazyLoaderService.config.componentResolveStrategy) {\n case ComponentResolveStrategy.PickFirst: {\n\n return modules[0];\n }\n\n // Exact id -> classname match\n case ComponentResolveStrategy.MatchIdToClassName: {\n const matches =\n modules\n .filter(k => k.name == id);\n\n if (matches.length == 0)\n return null;\n\n return matches[0];\n }\n // Fuzzy id -> classname match\n case ComponentResolveStrategy.FuzzyIdClassName: {\n const _id = id.replace(/[^a-z0-9_\\-]/ig, '');\n\n if (_id.length == 0) {\n LazyLoaderService.config.logger.err(\"Fuzzy classname matching stripped all symbols from the ID specified!\");\n return false;\n }\n\n const rx = new RegExp(`^${id}(component|module)?$`, \"i\");\n\n const matches = modules\n .filter(mod => {\n let kid = mod.name.replace(/[^a-z0-9_\\-]/ig, '');\n\n return rx.test(kid);\n });\n\n if (matches.length > 1) {\n LazyLoaderService.config.logger.err(\"Fuzzy classname matching resolved multiple targets!\");\n return false;\n }\n\n if (matches.length == 0) {\n LazyLoaderService.config.logger.err(\"Fuzzy classname matching resolved no targets!\");\n return null;\n }\n\n return matches[0];\n }\n case ComponentResolveStrategy.Custom: {\n return LazyLoaderService.config.customResolver(modules as any);\n }\n default: {\n return false;\n }\n }\n }\n}\n","import { Input, ViewContainerRef, isDevMode, ComponentRef, EventEmitter, Optional, ViewChild, Component, Inject, Output, NgModule, AfterViewInit, OnInit } from '@angular/core';\nimport { NgComponentOutlet, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { MAT_DIALOG_DATA, } from '@angular/material/dialog';\nimport { DialogRef } from '@angular/cdk/dialog';\nimport { BehaviorSubject, debounceTime, Subscription } from 'rxjs';\nimport { LazyLoaderService } from './lazy-loader.service';\nimport { stringToSlug } from '../../utils';\nimport { CompiledBundle, NgxLazyLoaderConfig } from './types';\n\n\n@Component({\n selector: 'ngx-lazy-loader',\n templateUrl: './lazy-loader.component.html',\n styleUrls: [ './lazy-loader.component.scss' ],\n imports: [ NgIf, NgComponentOutlet, NgTemplateOutlet ],\n standalone: true\n})\nexport class LazyLoaderComponent implements AfterViewInit {\n @ViewChild(\"content\", { read: ViewContainerRef }) targetContainer: ViewContainerRef;\n\n /**\n * ! Here be dragons.\n * Only the bravest of Adventurers can survive the battles below,\n * and they must be trained and ready for the gruelling journey ahead.\n * Many a soul has tried to best these Dragons, yet only one has\n * succeeded since our founding.\n *\n * TL;DR -- Don't mess with this unless you know what you're doing.\n * This is central to a ton of moving parts -- breaking it will\n * cause more collateral damage than you may realize.\n */\n\n private _id: string;\n /**\n * The id of the component that will be lazy loaded\n */\n @Input(\"component\") set id(data: string) {\n const id = stringToSlug(data);\n\n // Check if there is a change to the loaded component's id\n // if it's updated, we destroy and rehydrate the entire container\n if (this.initialized && this._id != id) {\n this._id = id;\n this.ngAfterViewInit();\n }\n else {\n this._id = id;\n }\n };\n\n\n private _group = \"default\";\n @Input(\"group\") set group(data: string) {\n const group = stringToSlug(data);\n\n if (typeof group != \"string\" || !group) return;\n\n // If the group was updated, retry to bootstrap something into the container.\n if (this.initialized && this._group != group) {\n this._group = group;\n\n this.ngAfterViewInit();\n return;\n }\n\n this._group = group;\n }\n get group() { return this._group }\n\n private _matchGroups: { [key: string]: string };\n private _inputs: { [key: string]: any; };\n /**\n * A map of inputs to bind to the child.\n * Supports change detection. (May fail on deep JSON changes)\n *\n * ```html\n * <lazy-loader component=\"MyLazyComponent\"\n * [inputs]=\"{\n * prop1: true,\n * prop2: false,\n * complex: {\n * a: true,\n * b: 0\n * }\n * }\"\n * >\n * </lazy-loader>\n * ```\n */\n @Input(\"inputs\") set inputs(data: { [key: string]: any; }) {\n if (data == undefined) return;\n\n let previous = this._inputs;\n this._inputs = data;\n if (data == undefined)\n console.trace(data);\n\n if (this.targetComponentFactory) {\n const { inputs } = this.targetComponentFactory.ɵcmp;\n\n const currentKeys = Object.keys(inputs);\n\n const oldKeys = Object.keys(previous).filter(key => currentKeys.includes(key));\n const newKeys = Object.keys(data).filter(key => currentKeys.includes(key));\n\n const removed = oldKeys.filter(key => !newKeys.includes(key));\n\n // ? perhaps set to null or undefined instead\n removed.forEach(k => this.targetComponentInstance[k] = null);\n\n this.bindInputs();\n }\n }\n\n\n private outputSubscriptions: { [key: string]: Subscription; } = {};\n private _outputs: { [key: string]: Function; };\n /**\n * A map of outputs to bind from the child.\n * Should support change detection.\n * ```html\n * <lazy-loader component=\"MyLazyComponent\"\n * [outputs]=\"{\n * prop3: onOutputFire\n * }\"\n * >\n * </lazy-loader>\n * ```\n */\n @Input(\"outputs\") set outputs(data: { [key: string]: Function; }) {\n let previous = this._outputs;\n this._outputs = data;\n\n if (this.targetComponentFactory) {\n const { inputs } = this.targetComponentFactory.ɵcmp;\n\n const currentKeys = Object.keys(inputs);\n const removed = Object.keys(previous).filter(key => !currentKeys.includes(key));\n\n removed.forEach(k => {\n // Unsubscribe from observable\n this.outputSubscriptions[k]?.unsubscribe();\n delete this.targetComponentInstance[k];\n });\n\n this.bindOutputs();\n }\n }\n\n /**\n * Emits errors encountered when loading components\n */\n @Output() componentLoadError = new EventEmitter();\n\n /**\n * Emits when the component is fully constructed\n * and had it's inputs and outputs bound\n * > before `OnInit`\n *\n * Returns the active class instance of the lazy-loaded component\n */\n @Output() componentLoaded = new EventEmitter();\n\n\n /**\n * This is an instance of the component that is currently loaded.\n */\n public instance: any;\n\n\n /**\n * Container that provides the component data\n */\n private targetModule: CompiledBundle;\n\n /**\n * Component definition\n */\n private targetComponentFactory: any;\n\n /**\n * Active component container reference\n */\n private targetComponentContainerRef: ComponentRef<any>;\n private targetRef: any;\n /**\n * Reference to the component class instance\n */\n private targetComponentInstance: any;\n\n /**\n * Subscription with true/false state on whether the distractor should be\n */\n private distractorSubscription: Subscription;\n\n public config: NgxLazyLoaderConfig;\n private err;\n private warn;\n private log;\n\n // Force 500ms delay before revealing the spinner\n private loaderEmitter = new EventEmitter();\n private clearLoader$ = this.loaderEmitter.pipe(debounceTime(300));\n private loaderSub: Subscription;\n showLoader = true; // whether we render the DOM for the spinner\n isClearingLoader = false; // should the spinner start fading out\n\n constructor(\n private service: LazyLoaderService,\n @Optional() private viewContainerRef: ViewContainerRef,\n @Optional() public dialog: DialogRef,\n @Optional() @Inject(MAT_DIALOG_DATA) public dialogArguments\n ) {\n this.config = LazyLoaderService.config;\n this.err = LazyLoaderService.config.logger.err;\n this.warn = LazyLoaderService.config.logger.warn;\n this.log = LazyLoaderService.config.logger.log;\n\n // First, check for dialog arguments\n if (this.dialogArguments) {\n this.inputs = this.dialogArguments.inputs || this.dialogArguments.data;\n this.outputs = this.dialogArguments.outputs;\n this.id = this.dialogArguments.id;\n this.group = this.dialogArguments.group;\n }\n\n this.loaderSub = this.clearLoader$.subscribe(() => {\n this.showLoader = false;\n });\n }\n\n private initialized = false;\n async ngAfterViewInit() {\n this.ngOnDestroy(false);\n this.isClearingLoader = false;\n this.showLoader = true;\n\n this.initialized = true;\n\n if (!this._id) {\n this.warn(\"No component was specified!\");\n return this.loadDefault();\n }\n\n try {\n const _entry = this.service.resolveRegistrationEntry(this._id, this._group);\n if (!_entry || !_entry.entry) {\n this.err(`Failed to find Component '${this._id}' in group '${this._group}' in registry!`);\n return this.loadDefault();\n }\n\n const { entry, matchGroups } = _entry;\n this._matchGroups = matchGroups;\n\n // Download the \"module\" (the standalone component)\n const bundle: CompiledBundle = this.targetModule = await entry.load();\n\n\n // Check if there is some corruption on the bundle.\n if (!bundle || typeof bundle != 'object' || bundle['__esModule'] as any !== true || bundle.toString() != \"[object Module]\") {\n this.err(`Failed to load component/module for '${this._id}'! Parsed resource is invalid.`);\n return this.loadError();\n }\n\n const modules = Object.keys(bundle)\n .map(k => {\n const entry = bundle[k];\n\n // Strictly check for exported modules or standalone components\n if (typeof entry == \"function\" && typeof entry[\"ɵfac\"] == \"function\")\n return entry;\n return null;\n })\n .filter(e => e != null)\n .filter(entry => {\n entry['_isModule'] = !!entry['ɵmod']; // module\n entry['_isComponent'] = !!entry['ɵcmp']; // component\n\n return (entry['_isModule'] || entry['_isComponent']);\n });\n\n if (modules.length == 0) {\n this.err(`Component/Module loaded for '${this._id}' has no exported components or modules!`);\n return this.loadError();\n }\n\n const component = this.targetComponentFactory = this.service.resolveComponent(this._id, \"default\", modules);\n\n if (!component) {\n this.err(`Component '${this._id}' is invalid or corrupted!`);\n return this.loadError();\n }\n\n\n // Bootstrap the component into the container\n const componentRef = this.targetComponentContainerRef = this.targetContainer.createComponent(component as any);\n this.targetRef = this.targetContainer.insert(this.targetComponentContainerRef.hostView);\n\n const instance: any = this.targetComponentInstance = componentRef['instance'];\n\n this.bindInputs();\n this.bindOutputs();\n\n this.componentLoaded.next(instance);\n this.instance = instance;\n\n // Look for an observable called isLoading$ that will make us show/hide\n // the same distractor that is used on basic loading\n const isLoading$ = instance['ngxShowDistractor$'] as BehaviorSubject<boolean>;\n\n if (isLoading$ && typeof isLoading$.subscribe == \"function\") {\n this.distractorSubscription = isLoading$.subscribe(loading => {\n if (!loading) {\n this.isClearingLoader = true;\n this.loaderEmitter.emit();\n }\n else {\n this.showLoader = true;\n this.isClearingLoader = false;\n }\n });\n }\n else {\n this.isClearingLoader = true;\n }\n\n const name = Object.keys(bundle)[0];\n this.log(`Loaded '${name}'`);\n this.loaderEmitter.emit();\n\n return componentRef;\n }\n catch (ex) {\n\n if (isDevMode()) {\n console.warn(\"Component \" + this._id + \" threw an error on mount!\");\n console.warn(\"This will cause you to see a 404 panel.\");\n console.error(ex);\n }\n\n // Network errors throw a toast and return an error component\n if (ex && !isDevMode()) {\n console.error(\"Uncaught error when loading component\");\n throw ex;\n }\n\n return this.loadDefault();\n }\n }\n\n ngOnDestroy(clearAll = true) {\n // unsubscribe from all subscriptions\n Object.entries(this.outputSubscriptions).forEach(([key, sub]) => {\n sub.unsubscribe();\n });\n this.outputSubscriptions = {};\n\n // Clear all things\n if (clearAll) {\n this.loaderSub?.unsubscribe();\n }\n\n this.distractorSubscription?.unsubscribe();\n\n // Clear target container\n this.targetRef?.destroy();\n this.targetComponentContainerRef?.destroy();\n this.targetContainer?.clear();\n\n // Wipe the rest of the state clean\n this.targetRef = null;\n this.targetComponentContainerRef = null;\n }\n\n /**\n * Bind the input values to the child component.\n */\n private bindInputs() {\n if (!this._inputs || !this.targetComponentInstance) return;\n\n // Merge match groups\n if (typeof this._matchGroups == \"object\") {\n Object.entries(this._matchGroups).forEach(([key, val]) => {\n if (typeof this._inputs[key] == 'undefined')\n this._inputs[key] = val;\n });\n }\n\n // forward-bind inputs\n const { inputs } = this.targetComponentFactory.ɵcmp;\n\n // Returns a list of entries that need to be set\n // This makes it so that unnecessary setters are not invoked.\n const updated = Object.entries(inputs).filter(([parentKey, childKey]: [string, string]) => {\n return this.targetComponentInstance[childKey] != this._inputs[parentKey];\n });\n\n updated.forEach(([parentKey, childKey]: [string, string]) => {\n if (this._inputs.hasOwnProperty(parentKey))\n this.targetComponentInstance[childKey] = this._inputs[parentKey];\n });\n }\n\n /**\n * Bind the output handlers to the loaded child component\n */\n private bindOutputs() {\n if (!this._outputs || !this.targetComponentInstance) return;\n\n const { outputs } = this.targetComponentFactory.ɵcmp;\n\n // Get a list of unregistered outputs\n const newOutputs = Object.entries(outputs).filter(([parentKey, childKey]: [string, string]) => {\n return !this.outputSubscriptions[parentKey];\n });\n\n // Reverse bind via subscription\n newOutputs.forEach(([parentKey, childKey]: [string, string]) => {\n if (this._outputs.hasOwnProperty(parentKey)) {\n const target: EventEmitter<unknown> = this.targetComponentInstance[childKey];\n const outputs = this._outputs;\n\n // Angular folks, stop making this so difficult.\n const ctx = this.viewContainerRef['_hostLView'][8];\n const sub = target.subscribe(outputs[parentKey].bind(ctx)); // Subscription\n\n this.outputSubscriptions[parentKey] = sub;\n }\n });\n }\n\n /**\n * Load the \"Default\" component (404) screen normally.\n * This is shown when the component id isn't in the\n * registry or otherwise doesn't match\n *\n * This\n */\n private loadDefault() {\n if (this.config.notFoundComponent)\n this.targetContainer.createComponent(this.config.notFoundComponent);\n\n this.showLoader = false;\n }\n\n /**\n * Load the \"Error\" component.\n * This is shown when we are able to resolve the component\n * in the registry, but have some issue boostrapping the\n * component into the viewContainer\n */\n private loadError() {\n if (this.config.errorComponent)\n this.targetContainer.createComponent(this.config.errorComponent);\n\n this.showLoader = false;\n }\n}\n","<ng-container #content></ng-container>\n\n<div class=\"ngx-lazy-loader-distractor\" [class.destroying]=\"isClearingLoader\">\n <ng-container *ngIf=\"config.loaderDistractorComponent\" [ngComponentOutlet]=\"config.loaderDistractorComponent\"></ng-container>\n <ng-container *ngIf=\"config.loaderDistractorTemplate\" [ngTemplateOutlet]=\"config.loaderDistractorTemplate\" [ngTemplateOutletContext]=\"{ '$implicit': inputs }\"></ng-container>\n</div>\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { NgxLazyLoaderConfig } from './types';\nimport { LazyLoaderComponent } from './lazy-loader.component';\nimport { LazyLoaderService, NGX_LAZY_LOADER_CONFIG } from './lazy-loader.service';\n\n@NgModule({\n imports: [LazyLoaderComponent],\n exports: [LazyLoaderComponent]\n})\nexport class LazyLoaderModule {\n public static forRoot(config: NgxLazyLoaderConfig): ModuleWithProviders<LazyLoaderModule> {\n return ({\n ngModule: LazyLoaderModule,\n providers: [\n LazyLoaderService,\n {\n provide: NGX_LAZY_LOADER_CONFIG,\n useValue: config\n }\n ]\n });\n }\n}\n","import { InjectionToken, Type } from '@angular/core';\n\nexport abstract class OnMount {\n abstract dynamicOnMount(attrs?: Map<string, string>, content?: string, element?: Element): void;\n}\n\nexport interface ComponentWithSelector {\n selector: string;\n component: Type<any>;\n}\nexport class DynamicHTMLOptions {\n components: Array<ComponentWithSelector>;\n}\n\nexport const NGX_DYNAMIC_CONFIG = new InjectionToken<DynamicHTMLOptions>('config');\n\n","import { Injectable, Injector, ElementRef, ComponentFactoryResolver, ComponentFactory, ComponentRef, Inject } from '@angular/core';\nimport { DynamicHTMLOptions, NGX_DYNAMIC_CONFIG, OnMount } from './types';\n\nexport interface DynamicHTMLRef {\n check: () => void;\n destroy: () => void;\n}\n\nfunction isBrowserPlatform() {\n return window != null && window.document != null;\n}\n\n@Injectable()\nexport class DynamicHTMLRenderer {\n\n private componentFactories = new Map<string, ComponentFactory<any>>();\n\n private componentRefs = new Map<any, Array<ComponentRef<any>>>();\n\n constructor(@Inject(NGX_DYNAMIC_CONFIG) private config: DynamicHTMLOptions, private cfr: ComponentFactoryResolver, private injector: Injector) {\n this.config.components.forEach(({ selector, component }) => {\n let cf: ComponentFactory<any>;\n cf = this.cfr.resolveComponentFactory(component);\n this.componentFactories.set(selector, cf);\n });\n }\n\n renderInnerHTML(elementRef: ElementRef, html: string): DynamicHTMLRef {\n if (!isBrowserPlatform()) {\n return {\n check: () => { },\n destroy: () => { },\n };\n }\n elementRef.nativeElement.innerHTML = html;\n\n const componentRefs: Array<ComponentRef<any>> = [];\n this.config.components.forEach(({ selector }) => {\n const elements = (elementRef.nativeElement as Element).querySelectorAll(selector);\n Array.prototype.forEach.call(elements, (el: Element) => {\n const content = el.innerHTML;\n const cmpRef = this.componentFactories.get(selector).create(this.injector, [], el);\n\n el.removeAttribute('ng-version');\n\n if (cmpRef.instance.dynamicOnMount) {\n const attrsMap = new Map<string, string>();\n if (el.hasAttributes()) {\n Array.prototype.forEach.call(el.attributes, (attr: Attr) => {\n attrsMap.set(attr.name, attr.value);\n });\n }\n (cmpRef.instance as OnMount).dynamicOnMount(attrsMap, content, el);\n }\n\n componentRefs.push(cmpRef);\n });\n });\n this.componentRefs.set(elementRef, componentRefs);\n\n return {\n check: () => componentRefs.forEach(ref => ref.changeDetectorRef.detectChanges()),\n destroy: () => {\n componentRefs.forEach(ref => ref.destroy());\n this.componentRefs.delete(elementRef);\n },\n };\n }\n}\n","import {\n Component,\n ElementRef,\n Input,\n SimpleChanges,\n OnChanges,\n OnDestroy,\n DoCheck,\n} from '@angular/core';\n\nimport { DynamicHTMLRenderer, DynamicHTMLRef } from './dynamic-html.service';\n\n@Component({\n selector: 'dynamic-html',\n template: '',\n standalone: true\n})\nexport class DynamicHTMLComponent implements DoCheck, OnChanges, OnDestroy {\n @Input() content: string;\n\n private ref: DynamicHTMLRef = null;\n\n constructor(\n private renderer: DynamicHTMLRenderer,\n private elementRef: ElementRef,\n ) { }\n\n ngOnChanges(_: SimpleChanges) {\n if (this.ref) {\n this.ref.destroy();\n this.ref = null;\n }\n if (this.content && this.elementRef) {\n this.ref = this.renderer.renderInnerHTML(this.elementRef, this.content);\n }\n }\n\n ngDoCheck() {\n if (this.ref) {\n this.ref.check();\n }\n }\n\n ngOnDestroy() {\n if (this.ref) {\n this.ref.destroy();\n this.ref = null;\n }\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { DynamicHTMLComponent } from './dynamic-html.component';\nimport { DynamicHTMLOptions, NGX_DYNAMIC_CONFIG } from './types';\nimport { DynamicHTMLRenderer } from './dynamic-html.service';\n\n@NgModule({\n imports: [DynamicHTMLComponent],\n exports: [DynamicHTMLComponent],\n})\nexport class NgxDynamicHTMLModule {\n public static forRoot(config: DynamicHTMLOptions): ModuleWithProviders<NgxDynamicHTMLModule> {\n return {\n ngModule: NgxDynamicHTMLModule,\n providers: [\n DynamicHTMLRenderer,\n { provide: NGX_DYNAMIC_CONFIG, useValue: config }\n ],\n };\n }\n}\n","/*\n * Public API Surface of package\n */\n\n/**\n ** Types\n */\nexport * from './types/menu';\nexport * from './types/popup';\n\n/**\n ** Directives\n */\nexport * from './directives/tooltip.directive';\nexport * from './directives/menu.directive';\n\n/**\n ** Pipes\n */\nexport * from './pipes/html-bypass.pipe';\nexport * from './pipes/resource-bypass.pipe';\nexport * from './pipes/script-bypass.pipe';\nexport * from './pipes/style-bypass.pipe';\nexport * from './pipes/url-bypass.pipe';\n\n/**\n** Services\n*/\nexport * from './services/dependency.service';\nexport * from './services/dialog.service';\nexport * from './services/fetch.service';\nexport * from './services/keyboard.service';\n// export * from './services/serviceworker.service';\n\n/**\n** Lazy loader component & service\n*/\nexport * from './components/lazy-loader/lazy-loader.service';\nexport * from './components/lazy-loader/lazy-loader.module';\nexport * from './components/lazy-loader/lazy-loader.component';\nexport * from './components/lazy-loader/types';\n\n/**\n** Services\n*/\nexport * from './components/dynamic-html/dynamic-html.service';\nexport * from './components/dynamic-html/dynamic-html.module';\nexport * from './components/dynamic-html/dynamic-html.component';\nexport * from './components/dynamic-html/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i2.LazyLoaderService","i1.DynamicHTMLRenderer"],"mappings":"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"}