{"version":3,"file":"labb-angular-adapter.mjs","sources":["../../../../../packages/adapters/angular-adapter/src/lib/PComponentService.ts","../../../../../packages/adapters/angular-adapter/src/lib/XRayComponent.ts","../../../../../packages/adapters/angular-adapter/src/lib/PContainerModel.ts","../../../../../packages/adapters/angular-adapter/src/lib/PContainerService.ts","../../../../../packages/adapters/angular-adapter/src/lib/PContainerDirective.ts","../../../../../packages/adapters/angular-adapter/src/lib/PegaEntryComponent.ts","../../../../../packages/adapters/angular-adapter/src/lib/PContainerTree.pipe.ts","../../../../../packages/adapters/angular-adapter/src/lib/PContainerModule.ts","../../../../../packages/adapters/angular-adapter/src/lib/PContainerComponent.ts","../../../../../packages/adapters/angular-adapter/src/labb-angular-adapter.ts"],"sourcesContent":["import { Type } from \"@angular/core\";\nimport { PContainerComponent } from \"./PContainerComponent\";\n\nexport class PComponentService {\n\tprivate componentMap: { [type: string]: Type<PContainerComponent> } = {};\n\n\tpublic addDynamicComponent(type: string, component: Type<PContainerComponent>) {\n\t\tthis.componentMap[type] = component;\n\t}\n\n\tpublic getComponent(type: string): Type<PContainerComponent> {\n\t\treturn this.componentMap[type];\n\t}\n}\n","import { ChangeDetectorRef, Component } from \"@angular/core\";\nimport { PContainer } from \"@labb/dx-engine\";\n\n@Component({\n    selector: 'dx-xray',\n    styles: [\n        `:host {\n            display: block;\n            margin: 4px;\n            padding: 4px;\n            position: relative;\n            outline: 2px solid green;\n            -webkit-transition: outline 500ms ease-out; \n            -moz-transition: outline 500ms ease-out;\n            -o-transition: outline 500ms ease-out;\n        }\n        :host.updated {\n            outline-color: blue;\n            outline-width: 5px;\n        }\n        .header {\n            cursor: move;\n            margin: 0.3em 0;\n        }\n        .headericon {\n            float: right;\n            cursor: pointer;\n            margin-right: 5px;\n        }\n        .expanded {\n            white-space: pre-wrap;\n            position: absolute;\n            background-color: white;\n            color: black;\n            top: 0;\n            left: 0;\n            z-index: 10;\n            border: 1px solid;\n            padding: 10px;\n        }\n        table {\n            border-collapse: collapse;\n        }\n        td, th {\n            border: 1px solid #ddd !important;\n            padding: 2px !important;\n            max-width: 500px;\n            overflow: auto;\n        }\n        td pre {\n            margin: 0;\n        }\n\n        tr:nth-child(even) {\n            background-color: #f2f2f2 !important;\n        }\n\n        tr:hover {\n            background-color: #ddd !important;\n        }\n\n        th {\n            padding-top: 12px !important;\n            padding-bottom: 12px !important;\n            text-align: left !important;\n            background-color: #04AA6D !important;\n            color: white !important;\n        }`\n    ],\n    host: {\n        '[class]': \"updated ? 'updated' : ''\"\n    },\n    template: `\n        <pre class=\"header\" (click)=\"toggleDisplay()\">{{container.id}} <span class=\"headericon\">{{display ? '-' : '?'}}</span></pre>\n        <ng-content></ng-content>\n        @if(display) {\n            <div class=\"expanded\" id=\"draggable\">\n                <pre id=\"draggableheader\" class=\"header\">{{container.id}} <span class=\"headericon\" [attr.style]=\"'cursor: pointer;'\" (click)=\"toggleDisplay()\">{{display ? 'X' : '?'}}</span></pre>\n                <pre>\n                    <table>\n                        <caption>Config properties</caption>\n                        <thead>\n                            <tr>\n                                <th>Key</th>\n                                <th>Value</th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                            @for (key of propKeys; track key) {\n                                <tr>\n                                    <td><strong>{{key}}</strong></td>\n                                    <td>\n                                        <pre>{{stringify(container.config[key])}}</pre>\n                                    </td>\n                                </tr>\n                            }\n                        </tbody>\n                    </table>\n                    @if (stateKeys.length > 0) {\n                        <table>\n                            <caption>State properties</caption>\n                            <thead>\n                                <tr>\n                                    <th>Key</th>\n                                    <th>Value</th>\n                                </tr>\n                            </thead>\n                            <tbody>\n                                @for (key of stateKeys; track key) {\n                                    <tr>\n                                        <td><strong>{{key}}</strong></td>\n                                        <td>{{stringify(container.pconnect.getStateProps()[key])}}</td>\n                                    </tr>\n                                }\n                            </tbody>\n                        </table>\n                    }\n                </pre>\n            </div>\n        }\n    `,\n    standalone: false\n})\nexport class XRayComponent {\n    public container!: PContainer;\n    public display = false;\n    public updated = false;\n\n    public constructor(private readonly changeDetectorRef: ChangeDetectorRef) {\n    }\n    public ngOnInit() {\n        this.container.updates.subscribe(() => {\n            this.updated = true;\n            setTimeout(() => {\n                this.updated = false;\n            }, 1000);\n        });\n    }\n    public ngOnDestroy() { }\n\n    public toggleDisplay() {\n        this.display = !this.display;\n        (window as any).$pContainer = this.display ? this.container : undefined;\n        this.changeDetectorRef.detectChanges();\n        setTimeout(() => {\n            this.dragElement(document.getElementById(\"draggable\"));\n        });\n    }\n\n    public get propKeys() {\n        return Object.keys(this.container.config);\n    }\n\n    public get stateKeys() {\n        return Object.keys(this.container.pconnect.getStateProps());\n    }\n\n    public stringify(val: any) {\n        return JSON.stringify(val, null, 2);\n    }\n\n    private dragElement(elmnt: HTMLElement | null) {\n        if (elmnt === null) {\n            return;\n        }\n        let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\n        const header = document.getElementById(elmnt.id + \"header\");\n        if (header) {\n            // if present, the header is where you move the DIV from:\n            header.onmousedown = dragMouseDown;\n        } else {\n            // otherwise, move the DIV from anywhere inside the DIV:\n            elmnt.onmousedown = dragMouseDown;\n        }\n\n        function dragMouseDown(e: MouseEvent) {\n            e = e || window.event;\n            e.preventDefault();\n            // get the mouse cursor position at startup:\n            pos3 = e.clientX;\n            pos4 = e.clientY;\n            document.onmouseup = closeDragElement;\n            // call a function whenever the cursor moves:\n            document.onmousemove = elementDrag;\n        }\n\n        function elementDrag(e: MouseEvent) {\n            e = e || window.event;\n            e.preventDefault();\n            // calculate the new cursor position:\n            pos1 = pos3 - e.clientX;\n            pos2 = pos4 - e.clientY;\n            pos3 = e.clientX;\n            pos4 = e.clientY;\n            // set the element's new position:\n            if (elmnt) {\n                elmnt.style.top = (elmnt.offsetTop - pos2) + \"px\";\n                elmnt.style.left = (elmnt.offsetLeft - pos1) + \"px\";\n            }\n        }\n\n        function closeDragElement() {\n            // stop moving when mouse button is released:\n            document.onmouseup = null;\n            document.onmousemove = null;\n        }\n    }\n}","import { InjectionToken, Type } from '@angular/core';\n\nimport { PContainerComponent } from './PContainerComponent';\n\n/**\n * Dynamic containers injection token which is used to register DX Component implementations using a unique key for each implementation\n */\nexport const DYNAMIC_CONTAINERS = new InjectionToken<{ [key: string]: Type<PContainerComponent> }>('Dynamic Containers');\n","import { ComponentRef, Inject, Injectable, Type, ViewContainerRef } from '@angular/core';\n\nimport { LoggerService, PContainer } from '@labb/dx-engine';\n\nimport { PComponentService } from './PComponentService';\nimport { XRayComponent } from './XRayComponent';\nimport { PContainerComponent } from './PContainerComponent';\nimport { DYNAMIC_CONTAINERS } from './PContainerModel';\n\nconst logger = new LoggerService('angular-adapter:PContainerService');\n\n@Injectable({ providedIn: 'root' })\nexport class PContainerService extends PComponentService {\n  constructor(\n    @Inject(DYNAMIC_CONTAINERS)\n    containers: { [key: string]: Type<PContainerComponent> }[]\n  ) {\n    super();\n    containers.forEach((controlList) =>\n      Object.entries(controlList).forEach(([key, value]) =>\n        this.addDynamicComponent(key, value)\n      )\n    );\n  }\n\n  public createContainer(\n    viewContainerRef: ViewContainerRef,\n    container: PContainer\n  ): void {\n    const componentName = container.pconnect.getComponentName();\n    const component = this.getComponent(componentName) || this.getComponent('default');\n    if (!component) {\n      logger.error('The requested dynamic container %s could not be found', componentName);\n    }\n\n    const componentRef = this.createComponent(viewContainerRef, container, component);\n\n    let isXRay = window.PCore.getDebugger().isXRayOn();\n    if (componentName === 'RootContainer') {\n      window.PCore.getDebugger().onXRay(() => {\n        if (window.PCore.getDebugger().isXRayOn() !== isXRay) {\n          isXRay = window.PCore.getDebugger().isXRayOn();\n          this.renderContainer(viewContainerRef, container, componentRef);\n          this.update(container);\n        }\n      });\n    }\n\n    let isVisible = container.isVisible();\n    container.updates.subscribe(() => {\n      if (\n        container.isVisible() !== isVisible ||\n        window.PCore.getDebugger().isXRayOn() !== isXRay\n      ) {\n        isVisible = container.isVisible();\n        isXRay = window.PCore.getDebugger().isXRayOn();\n        this.renderContainer(viewContainerRef, container, componentRef);\n      }\n      setTimeout(() => {\n        componentRef?.hostView.detectChanges();\n      })\n    });\n    this.renderContainer(viewContainerRef, container, componentRef);\n  }\n\n  private update(container: PContainer) {\n    container.updates.emit();\n    container.children.forEach(child => this.update(child));\n  }\n\n  private createComponent(viewContainerRef: ViewContainerRef, container: PContainer, component: Type<PContainerComponent>): ComponentRef<PContainerComponent> {\n    const componentRef = viewContainerRef.createComponent(component);\n    componentRef.instance.container = container;\n    return componentRef;\n  }\n\n  private createXRay(viewContainerRef: ViewContainerRef, container: PContainer, componentRef: ComponentRef<PContainerComponent>): ComponentRef<XRayComponent> {\n    const debugComponentRef = viewContainerRef.createComponent(XRayComponent, {\n      projectableNodes: [[componentRef?.location.nativeElement]]\n    });\n    (debugComponentRef.instance as PContainerComponent).container = container;\n    return debugComponentRef;\n  }\n\n  private renderContainer(viewContainerRef: ViewContainerRef, container: PContainer, compRef: ComponentRef<PContainerComponent>): void {\n    while (viewContainerRef.length > 0) {\n      viewContainerRef.detach();\n    }\n    if (!container.isVisible()) {\n      return;\n    }\n    viewContainerRef.insert(compRef.hostView, 0);\n\n    if (window.PCore.getDebugger().isXRayOn()) {\n      const xrayComponentRef = this.createXRay(viewContainerRef, container, compRef);\n      xrayComponentRef.changeDetectorRef.detectChanges();\n    }\n    compRef.changeDetectorRef.detectChanges();\n  }\n}\n","import { Directive, Input, OnInit, ViewContainerRef } from '@angular/core';\n\nimport { PContainer } from '@labb/dx-engine';\nimport { PContainerService } from './PContainerService';\n\n@Directive({\n\tselector: '[dxContainer]',\n\tstandalone: false\n})\nexport class PContainerDirective implements OnInit {\n\t@Input() public container!: PContainer;\n\n\tconstructor(\n\t\tprivate viewContainerRef: ViewContainerRef,\n\t\tprivate containerService: PContainerService,\n\t) {\n\t}\n\n\tngOnInit() {\n\t\tthis.containerService.createContainer(this.viewContainerRef, this.container);\n\t}\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TokenInfo } from '@labb/constellation-core-types';\nimport { BootstrapService, LoggerService, OAuth2Config, PContainer } from '@labb/dx-engine';\n\nconst logger = new LoggerService('angular-adapter:PegaEntryComponent');\n\n@Component({\n    selector: 'dx-pega-entry',\n    template: `\n        @if (container) {\n            <ng-container dxContainer [container]=\"container\"/>\n        }\n    `,\n    standalone: false\n})\nexport class PegaEntryComponent implements OnInit {\n    /**\n     * Input binding for a token as coming from the OAuth2 service\n     */\n    @Input() public token!: TokenInfo;\n    /**\n     * Input binding for the configuration object used to retrieve a token\n     */\n    @Input() public authConfig!: OAuth2Config;\n    /**\n     * Input binding for path to the Infinity server\n     */\n    @Input() public infinityServer = '/prweb';\n    /**\n     * Input binding for the deploy URL. Constellation core will be downloaded from [deployUrl]/constellation.\n     * When no value is provided, then the deploy URL is determined as the url on which the application is running.\n     */\n    @Input() public deployUrl!: string;\n    /**\n     * Input binding for the application ID\n     */\n    @Input() public appID!: string;\n    /**\n     * Optional Input binding for a portal ID. If this value is provided the constellation core will be loaded in full portal mode instead of embedded mode \n     */\n    @Input() public portal!: string;\n    /**\n     * Optional Input binding for an assignment ID. If provided, an existig assignment will be picked up using this ID.\n     */\n    @Input() public assignmentID!: string;\n    /**\n     * Optional Input binding for a page ID. If provided, a page definition will be loaded using this ID and  the className.\n     */\n    @Input() public pageID!: string;\n    /**\n     * Optional Input binding for a class name. If provided, a page definition will be loaded using the page ID this className.\n     */\n    @Input() public className!: string;\n    /**\n     * Optional Input binding for starting a new case type. If provided, a new case type will be created using this case type ID and the startingFields.\n     */\n    @Input() public caseTypeID!: string;\n    /**\n     * Optional Input binding for picking up an exiting case.\n     */\n    @Input() public caseID!: string;\n    /**\n     * Optional Input binding for starting a new case type. If provided, a new case type will be created using the case type ID and this startingFields.\n     */\n    @Input() public startingFields: any = {};\n    /**\n     * Optional Input binding for extra headers which will be sent with each request to Pega.\n     */\n    @Input() public headers: { [key: string]: string } = {};\n    /**\n     * Optional Input binding for setting the locale\n     */\n    @Input() public localeID!: string;\n    /**\n     * Output binding which emits an event once the constellation core is fully loaded and the Pega API's have been called.\n     */\n    @Output() public loadingDone = new EventEmitter<boolean>();\n\n    /**\n     * A reference to the RootContainer type\n     */\n    public container!: PContainer;\n\n    /**\n     * Initialization method which will bootstrap the constellation core and load the Pega API's. It will also create a new case type if the caseTypeID is provided,\n     * open a page if the pageID and className are provided, or open an assignment if the assignmentID is provided.\n     * When initialization is succesful, an event with the value true will be sent to the loadingDone output binding.\n     * When initialization fails, an event with the value false will be sent instad.\n     */\n    public async ngOnInit(): Promise<void> {\n        try {\n            this.container = await BootstrapService.init({\n                authConfig: this.authConfig,\n                appID: this.appID,\n                deployUrl: this.deployUrl,\n                headers: this.headers,\n                infinityServer: this.infinityServer,\n                portal: this.portal,\n                token: this.token,\n                localeID: this.localeID\n            });\n            const context = this.portal ? 'root' : 'app';\n            if (this.caseTypeID) {\n                await BootstrapService.createCase(this.caseTypeID, context, this.startingFields);\n            } else if (this.pageID && this.className) {\n                await BootstrapService.openPage(this.pageID, this.className, context);\n            } else if (this.assignmentID) {\n                await BootstrapService.openAssignment(this.assignmentID, context);\n            } else if (this.caseID) {\n                await BootstrapService.openCase(this.caseID, context);\n            }\n\n            this.loadingDone.emit(true);\n        } catch (e) {\n            logger.log('Error loading pega entry: %s', e)\n            this.loadingDone.emit(false);\n        }\n    }\n}","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { PContainer } from \"@labb/dx-engine\";\n\ninterface ContainerTreeCompact {\n    [key: string]: ContainerTreeCompact | ''\n}\n\ninterface ContainerTreeVerbose {\n    id: string;\n    template: string;\n    value: string;\n    isVisible: boolean;\n    children?: ContainerTreeVerbose[];\n}\n\n@Pipe({\n    name: 'pContainerTree',\n    pure: false,\n    standalone: false\n})\nexport class PContainerTreePipe implements PipeTransform {\n    public transform(container: PContainer, compact = false): ContainerTreeCompact | '' | ContainerTreeVerbose {\n        if (compact) {\n            return this.transformCompact(container);\n        }\n        return this.transformVerbose(container);\n    }\n\n    private transformCompact(container: PContainer) {\n        if (!container) return undefined;\n        return container.children.length > 0 ? container.children.reduce((acc, c) => {\n            acc[this.debugString(c)] = this.transformCompact(c);\n            return acc;\n        }, {} as ContainerTreeCompact) : container.config.value ? container.config.value : '';\n    }\n\n    private transformVerbose(container: PContainer): ContainerTreeVerbose {\n        return container && {\n            id: container.id,\n            template: container.config.template,\n            value: container.config.value || undefined,\n            isVisible: container.isVisible(),\n            children: container.children.length > 0 ? container.children.map(child => this.transformVerbose(child)) : undefined\n        };\n    }\n\n    private debugString(container: PContainer) {\n        const hidden = container.isVisible() ? '' : '[hidden] ';\n        const id = container.id;\n        const template = container.config.template ? ` [${container.config.template}]` : '';\n        const value = (container.children.length > 0 && container.config.value) ? `: ${container.config.value}` : '';\n        const label = (container.config.label && container.config.showLabel) ? `: ${container.config.label}` : '';\n        return hidden + id + template + label + value;\n    }\n\n}","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PContainerDirective } from './PContainerDirective';\nimport { XRayComponent } from './XRayComponent';\nimport { PegaEntryComponent } from './PegaEntryComponent';\nimport { PContainerTreePipe } from './PContainerTree.pipe';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    PContainerDirective,\n    XRayComponent,\n    PegaEntryComponent,\n    PContainerTreePipe\n  ],\n  exports: [\n    PContainerDirective,\n    PegaEntryComponent\n  ],\n})\nexport class PContainerModule { }\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { PContainer } from '@labb/dx-engine';\n\n/**\n * The PContainerComponent is the basis for each implementation of a DX Container type.\n * This component is instantiated by the angular adapter and the PContainer as coming from the DX Engine is provided under the `container` attribute.\n */\n@Directive()\nexport class PContainerComponent<T extends PContainer = PContainer> implements OnInit, OnDestroy {\n\n    /**\n     * The DX Container instance from the DX Engine. The default PContainer class gives access to the Pega configuration for this container.\n     * If specialized fuctionality is available, then the generic type will be instantiated by a more specialized container (e.g. {@link @labb/dx-engine!FlowContainer}).\n     */\n    public container!: T;\n\n    ngOnInit(): void {\n        this.container.register();\n    }\n\n    ngOnDestroy(): void {\n        this.container.unregister();\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["logger","i1.PContainerService","i1.PContainerDirective"],"mappings":"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"}