{"version":3,"file":"acknow-srl-ack6-lib-splitter.mjs","sources":["../../../projects/ack6-lib/splitter/components/splitter-divider/splitter-divider.component.ts","../../../projects/ack6-lib/splitter/components/splitter-divider/splitter-divider.component.html","../../../projects/ack6-lib/splitter/containers/splitter/splitter.component.ts","../../../projects/ack6-lib/splitter/containers/splitter/splitter.component.html","../../../projects/ack6-lib/splitter/splitter.module.ts","../../../projects/ack6-lib/splitter/containers/splitter/splitter-child.base.ts","../../../projects/ack6-lib/splitter/acknow-srl-ack6-lib-splitter.ts"],"sourcesContent":["import { Component, HostBinding, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'ack6-splitter-divider',\n  templateUrl: './splitter-divider.component.html',\n  styleUrls: ['./splitter-divider.component.css']\n})\nexport class SplitterDividerComponent implements OnInit {\n\n  @HostBinding('class.master-expanded') masterExpanded: boolean;\n\n  constructor() {\n    this.masterExpanded = false;\n  }\n\n  toggleDetail = () => {\n    this.masterExpanded = !this.masterExpanded;\n  };\n\n  ngOnInit(): void {\n  }\n\n}\n","<p-divider class=\"splitter\" layout=\"vertical\">\n  <button type=\"button\" pButton pRipple class=\"p-button-text\" (click)=\"toggleDetail()\">\n    <span class=\"pi\" [ngClass]=\"(masterExpanded)? 'pi-chevron-left' : 'pi-chevron-right'\"></span>\n  </button>\n</p-divider>\n","import {\n  Component,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EventEmitter,\n  OnInit,\n  Output,\n  Type,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { fromEvent, timer } from 'rxjs';\nimport { bufferTime, filter, finalize, switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport _ from 'lodash';\nimport { SplitterDividerComponent } from '../../components/splitter-divider/splitter-divider.component';\nimport { SplitterApi, SplitterComponentRef } from './splitter-api';\nimport { SplitterChildBase } from './splitter-child.base';\n\ndeclare type SplitterStackItem = {\n  id: string,\n  componentType: Type<SplitterChildBase>,\n  componentRef: ComponentRef<SplitterChildBase> | null,\n  context?: any\n};\n\n@Component({\n  selector: 'ack6-splitter',\n  templateUrl: './splitter.component.html',\n  styleUrls: ['./splitter.component.scss']\n})\nexport class SplitterComponent implements OnInit {\n\n  @ViewChild('container', {static: true, read: ViewContainerRef}) public container!: ViewContainerRef;\n\n  @Output() splitterReady: EventEmitter<SplitterApi>;\n\n  private idle: SplitterStackItem[] = [];\n  private stack: SplitterStackItem[] = [];\n\n  private api: SplitterApi = {\n    openComponent: (component: Type<any>, data?: any) => {\n      return this.openComponent(component, data);\n    },\n    closeComponent: () => {}\n  };\n\n  private divider1!: ComponentRef<SplitterDividerComponent>;\n  private divider2!: ComponentRef<SplitterDividerComponent>;\n\n  constructor(\n    private cfr: ComponentFactoryResolver,\n  ) {\n\n    this.splitterReady = new EventEmitter();\n\n    // mandatory, don't remove for any reason\n    this.attachEG();\n\n  }\n\n  ngOnInit(): void {\n\n    this.splitterReady.emit(this.api);\n\n  }\n\n  private openComponent(component: Type<any>, data = null, index?: number): SplitterComponentRef {\n\n    if (!this.container) {\n      throw new Error('missing anchors');\n    }\n\n    const factory = this.cfr.resolveComponentFactory<SplitterChildBase>(component);\n\n    const viewContainerRef = this.container;\n\n    if (this.stack.length >= 3) {\n      // destroy the actual component nr 1, but before, save the context and put it in the idle array\n\n      const idleStackItem = this.stack[0];\n\n      // save on idle\n      this.idle.push({\n        ...idleStackItem,\n        componentRef: null,\n        context: idleStackItem.componentRef && idleStackItem.componentRef.instance.getContext()\n      });\n\n      if (idleStackItem.componentRef) {\n        idleStackItem.componentRef.destroy();\n      }\n\n      // remove 0 element from stack\n      this.stack.splice(0, 1);\n    }\n\n    // prepend divider if needed\n    if (this.stack.length === 1) {\n\n      const dividerFactory = this.cfr.resolveComponentFactory(SplitterDividerComponent);\n\n      this.divider1 = viewContainerRef.createComponent(dividerFactory);\n\n    }\n\n    if (this.stack.length === 2) {\n\n      const dividerFactory = this.cfr.resolveComponentFactory(SplitterDividerComponent);\n\n      this.divider2 = viewContainerRef.createComponent(dividerFactory);\n\n    }\n\n    const componentRef = viewContainerRef.createComponent(factory, index);\n\n    const id = this.randomId();\n\n    const stackItem = {\n      id,\n      componentType: component,\n      componentRef\n    };\n\n    if (index !== 0) {\n      this.stack.push(stackItem);\n    } else {\n      this.stack.unshift(stackItem);\n    }\n\n    // set splitter api\n    const api: SplitterApi = {\n      ...this.api,\n      closeComponent: (d?: any) => {\n        this.closeComponent(id, d);\n      }\n    };\n\n    componentRef.instance.setSplitterApi(api);\n\n    componentRef.instance.setContext(data);\n\n    this.notifyStackChange();\n\n    return {\n      onClose: componentRef.instance.onClose,\n      updateContext: (context: any) => {\n        componentRef.instance.setContext(context);\n      }\n    };\n\n  }\n\n  private closeComponent(id: string, data?: any): void {\n\n    const stackIndex = this.stack.findIndex((s: SplitterStackItem) => s.id === id);\n\n    if (stackIndex === -1) {\n      throw new Error('item not found in stack');\n    }\n\n    const stackItem = this.stack[stackIndex];\n\n    const componentRef: ComponentRef<SplitterChildBase> | null = stackItem.componentRef;\n\n    if (!componentRef) {\n      return;\n    }\n\n    // check if component can be closed\n    if (!componentRef.instance.canClose()) {\n      return;\n    }\n\n    componentRef.instance.onClose.emit(data);\n    componentRef.destroy();\n\n    // check if there is other components after the one already destroyed\n    if (this.stack.length > (stackIndex + 1)) {\n\n      for (const subsequent of this.stack.slice(stackIndex + 1)) {\n\n        if (subsequent.componentRef) {\n          subsequent.componentRef.destroy();\n        }\n\n      }\n\n    }\n\n    this.stack = this.stack.slice(0, stackIndex);\n\n    while (this.idle.length && this.stack.length < 3) {\n      // check if something is idle\n      if (this.idle.length) {\n\n        const item = this.idle[this.idle.length - 1];\n\n\n        this.openComponent(item.componentType, item.context, 0);\n\n        this.idle.splice(this.idle.length - 1, 1);\n\n      }\n    }\n\n    if (this.stack.length < 3 && this.divider2) {\n      this.divider2.destroy();\n    }\n\n    if (this.stack.length < 2 && this.divider1) {\n      this.divider1.destroy();\n    }\n\n    this.notifyStackChange();\n\n  }\n\n  private randomId = () => Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n\n\n  // EG :)\n  private attachEG(): void {\n\n    const div: HTMLDivElement | null = document.querySelector('div');\n\n    if (div) {\n\n      div.setAttribute('tabindex', '0');\n\n      const source = fromEvent<KeyboardEvent>(div, 'keydown');\n\n      source.pipe(\n        takeUntil(timer(60000 * 5)),\n        finalize(() => console.log('eg listener gone')),\n        filter((evt: KeyboardEvent) => evt.key === 'Insert'),\n        switchMap(() => {\n\n          console.log('ehi.. so cosa vuoi davvero nel profondo del tuo essere.... da quando compare questo messaggio hai 1 secondo per scrivere la password');\n\n          return source.pipe(\n            bufferTime(800),\n            take(1),\n            tap(values => {\n\n              const password = values.map(val => val.key).join('');\n\n              console.log(`hai digitato: ${password}`);\n\n              if (password === 'fabio') {\n\n                const innerPwd = prompt('Pensavi davvero fosse l\\'unica password? povero illuso, per la seconda ti do un indizio, è una parola che utilizza spesso il nostro maestro di vita');\n\n                if (innerPwd === 'fidati') {\n                  window.open('https://en.wikipedia.org/wiki/Trollface#/media/File:Trollface_non-free.png');\n                }\n\n              } else {\n                console.error('Password sbagliata amico, ah, hai solo 850 ms in realtà per scrivere la password');\n              }\n\n            })\n          );\n\n        })\n      ).subscribe();\n\n    }\n\n  }\n\n  private notifyStackChange(): void {\n\n    for (let i = 0; i < this.stack.length; i++) {\n\n      const item = this.stack[i];\n\n      item.componentRef?.instance.stackChange(i, this.stack.length);\n\n    }\n\n  }\n\n\n}\n","\n<ng-container #container></ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SplitterComponent } from './containers/splitter/splitter.component';\nimport { SplitterDividerComponent } from './components/splitter-divider/splitter-divider.component';\nimport { DividerModule } from 'primeng/divider';\n\n\n@NgModule({\n  declarations: [\n    SplitterComponent,\n    SplitterDividerComponent\n  ],\n  imports: [\n    CommonModule,\n    DividerModule\n  ],\n  exports: [\n    SplitterComponent\n  ]\n})\nexport class SplitterModule { }\n","import { EventEmitter } from '@angular/core';\nimport { SplitterApi } from './splitter-api';\n\nexport abstract class SplitterChildBase {\n\n  /**\n   * close event emitted when component is about to close, emitted with data if passed to closeComponent API method\n   */\n  public onClose: EventEmitter<any>;\n\n  /**\n   * splitter api for current component\n   */\n  public splitterApi!: SplitterApi;\n\n  /**\n   * 0 based index of current component\n   */\n  public index!: number;\n\n  /**\n   * total count of component visualized by splitter, max 3\n   */\n  public totalCount!: number;\n\n  /**\n   * wether the component is the last or not\n   */\n  public get isLast(): boolean {\n    return this.totalCount - this.index === 1;\n  }\n\n  constructor() {\n\n    this.onClose = new EventEmitter();\n\n  }\n\n  /**\n   * function called internally to set the splitter api to the component,\n   * in case of override is recommended to call the super.setSplitter to ensure that everything works\n   * @param api splitter api\n   */\n  public setSplitterApi(api: SplitterApi): void {\n    this.splitterApi = api;\n  }\n\n  /**\n   * function called by splitter before closing the component, if this function return false the splitter will not close the component\n   * @returns true if component can close, false otherwise\n   */\n  public canClose(): boolean {\n    return true;\n  }\n\n  /**\n   * function called by splitter when components stack change,\n   * default implementation sets the parameters of the function in the homonymous properties of the class\n   * @param index la posizione del componente attuale (va da 0 a 2)\n   * @param totalCount il numero totale dei componenti a schermo\n   */\n  public stackChange(index: number, totalCount: number): void {\n    this.index = index;\n    this.totalCount = totalCount;\n  }\n\n  /**\n   * called by splitter to set the component context\n   * @param data component context\n   */\n  public abstract setContext(data: any): void;\n\n  /**\n   * called by splitter before hide the component (when the 4th component come on screen for example)\n   * this is mandatory if you want that your component return the same after it reappears\n   */\n  public abstract getContext(): any;\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}