{"version":3,"file":"cw-mnodson-ninja-splitter.mjs","sources":["../../../projects/ninja-split/src/lib/position.service.ts","../../../projects/ninja-split/src/lib/ninja-splitter.component.ts","../../../projects/ninja-split/src/lib/ninja-separator.component.ts","../../../projects/ninja-split/src/lib/horizontal-ninja.component.ts","../../../projects/ninja-split/src/lib/vertical-ninja.component.ts","../../../projects/ninja-split/src/lib/ninja-splitter.ts","../../../projects/ninja-split/src/public-api.ts","../../../projects/ninja-split/src/cw-mnodson-ninja-splitter.ts"],"sourcesContent":["import { ElementRef } from '@angular/core';\n// @dynamic\nexport class PositionService {\n  public static position(\n    element: ElementRef\n  ): { width: number; height: number; top: number; left: number } {\n    const nativeEl: any = element.nativeElement;\n    const elBCR = this.offset(nativeEl);\n    let offsetParentBCR = { top: 0, left: 0 };\n    const offsetParentEl = this.parentOffsetEl(nativeEl);\n    if (offsetParentEl !== this.document) {\n      offsetParentBCR = this.offset(offsetParentEl);\n      offsetParentBCR.top +=\n        offsetParentEl.clientTop - offsetParentEl.scrollTop;\n      offsetParentBCR.left +=\n        offsetParentEl.clientLeft - offsetParentEl.scrollLeft;\n    }\n\n    const boundingClientRect = nativeEl.getBoundingClientRect();\n    return {\n      width: boundingClientRect.width || nativeEl.offsetWidth,\n      height: boundingClientRect.height || nativeEl.offsetHeight,\n      top: elBCR.top - offsetParentBCR.top,\n      left: elBCR.left - offsetParentBCR.left,\n    };\n  }\n\n  public static offset(\n    element: ElementRef\n  ): { width: number; height: number; top: number; left: number } {\n    const nativeEl: any = element.nativeElement;\n    const boundingClientRect = nativeEl.getBoundingClientRect();\n    return {\n      width: boundingClientRect.width || nativeEl.offsetWidth,\n      height: boundingClientRect.height || nativeEl.offsetHeight,\n      top:\n        boundingClientRect.top +\n        (this.window.pageYOffset || this.document.documentElement.scrollTop),\n      left:\n        boundingClientRect.left +\n        (this.window.pageXOffset || this.document.documentElement.scrollLeft),\n    };\n  }\n\n  private static get window(): Window {\n    return window;\n  }\n\n  private static get document(): Document {\n    return window.document;\n  }\n\n  private static getStyle(nativeEl: any, cssProp: string): any {\n    // IE\n    if (nativeEl.currentStyle) {\n      return nativeEl.currentStyle[cssProp];\n    }\n\n    if (this.window.getComputedStyle) {\n      return this.window.getComputedStyle(nativeEl)[cssProp];\n    }\n    return nativeEl.style[cssProp];\n  }\n\n  private static isStaticPositioned(nativeEl: any): any {\n    return (this.getStyle(nativeEl, 'position') || 'static') === 'static';\n  }\n\n  private static parentOffsetEl(nativeEl: any): any {\n    let offsetParent = nativeEl.offsetParent || this.document;\n    while (\n      offsetParent &&\n      offsetParent !== this.document &&\n      this.isStaticPositioned(offsetParent)\n    ) {\n      offsetParent = offsetParent.offsetParent;\n    }\n    return offsetParent || this.document;\n  }\n}\n","import {\n  Component,\n  ViewChild,\n  ElementRef,\n  HostListener,\n  EventEmitter,\n  Input,\n  Output,\n  OnChanges,\n  SimpleChanges,\n  AfterViewInit,\n  Self,\n} from '@angular/core';\n\n@Component({\n  selector: 'ninja-splitter',\n  template: '',\n  styles: [\n    `\n      :host {\n        height: 100%;\n      }\n    `,\n  ],\n})\nexport class NinjaSplitterComponent implements OnChanges, AfterViewInit {\n  @ViewChild('primaryComponent', { static: true }) primaryComponent: ElementRef;\n  @ViewChild('secondaryComponent', { static: true })\n  secondaryComponent: ElementRef;\n\n  @Input('primary-component-initialratio') initialRatio = 0.5;\n  @Input('primary-minsize') primaryMinSize = 0;\n  @Input('secondary-minsize') secondaryMinSize = 0;\n  @Input('separator-width-px') separatorThickness = 5;\n  @Input('primary-component-toggle') primaryToggledOff = false;\n  @Input('secondary-component-toggle') secondaryToggledOff = false;\n  @Input('local-storage-key') localStorageKey: string | null = null;\n  @Output('on-change')\n  notifySizeDidChange: EventEmitter<{primary: number, secondary: number}> = new EventEmitter<{primary: number, secondary: number}>();\n  @Output('on-begin-resizing')\n  notifyBeginResizing: EventEmitter<void> = new EventEmitter<void>();\n  @Output('on-ended-resizing')\n  notifyEndedResizing: EventEmitter<void> = new EventEmitter<void>();\n\n  public get isHorizontal(): boolean {\n    return this.self.nativeElement.nodeName === 'HORIZONTAL-NINJA';\n  }\n\n  constructor(@Self() protected self: ElementRef) { }\n\n  primarySizeBeforeTogglingOff: number;\n  dividerSize = 8.0;\n  isResizing = false;\n  protected get sizePropertyName(): 'offsetWidth' | 'offsetHeight' {\n    if (\n      (this.self.nativeElement.nodeName as string).toUpperCase() ===\n      'HORIZONTAL-NINJA'\n    ) {\n      return 'offsetHeight';\n    } else {\n      return 'offsetWidth';\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.checkBothToggledOff();\n\n    if (!this.primaryToggledOff && !this.secondaryToggledOff) {\n      let ratio: number = this.initialRatio;\n      if (this.localStorageKey != null) {\n        const ratioStr = localStorage.getItem(this.localStorageKey);\n        if (ratioStr != null) {\n          ratio = +ratioStr;\n        }\n      }\n\n      const size = ratio * this.self.nativeElement[this.sizePropertyName];\n      this.applySizeChange(size);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.checkBothToggledOff();\n\n    if (changes.primaryToggledOff) {\n      if (changes.primaryToggledOff.currentValue === true) {\n        this.primarySizeBeforeTogglingOff = this.getPrimarySize();\n        this.applySizeChange(0);\n      } else {\n        this.applySizeChange(this.primarySizeBeforeTogglingOff);\n      }\n    } else if (changes.secondaryToggledOff) {\n      if (changes.secondaryToggledOff.currentValue === true) {\n        this.primarySizeBeforeTogglingOff = this.getPrimarySize();\n        this.applySizeChange(this.self.nativeElement[this.sizePropertyName]);\n      } else {\n        this.applySizeChange(this.primarySizeBeforeTogglingOff);\n      }\n    }\n  }\n\n  getPrimarySize(): number {\n    throw new Error(\n      \"NinjaSplitterComponent shouldn't be instantiated. Override this method.\"\n    );\n  }\n\n  getSecondarySize(): number {\n    throw new Error(\n      \"NinjaSplitterComponent shouldn't be instantiated. Override this method.\"\n    );\n  }\n\n  dividerPosition(size: number): void {\n    throw new Error(\n      \"NinjaSplitterComponent shouldn't be instantiated. Override this method.\"\n    );\n  }\n\n  getAvailableSize(): number {\n    return this.self.nativeElement[this.sizePropertyName] - this.dividerSize;\n  }\n\n  applySizeChange(size: number): void {\n    let primarySize = this.checkValidBounds(\n      size,\n      this.primaryMinSize,\n      this.getAvailableSize() - this.secondaryMinSize\n    );\n\n    if (this.primaryToggledOff) {\n      primarySize = 0;\n    } else if (this.secondaryToggledOff) {\n      primarySize = this.self.nativeElement[this.sizePropertyName];\n    }\n\n    this.dividerPosition(primarySize);\n    this.notifySizeDidChange.emit({\n      primary: this.getPrimarySize(),\n      secondary: this.getSecondarySize(),\n    });\n  }\n\n  notifyWillChangeSize(resizing: boolean): void {\n    this.isResizing = resizing;\n    this.notifyBeginResizing.emit();\n  }\n\n  checkValidBounds(newSize: number, minSize: number, maxSize: number): number {\n    if (newSize >= minSize && newSize <= maxSize) {\n      return newSize;\n    } else if (maxSize - newSize > 0) {\n      return minSize;\n    } else {\n      return maxSize;\n    }\n  }\n\n  checkBothToggledOff(): void {\n    if (this.primaryToggledOff && this.secondaryToggledOff) {\n      throw new Error(\n        'You cannot toggle off both the primary and secondary component'\n      );\n    }\n  }\n\n  stopResizing(): void {\n    this.isResizing = false;\n    this.primaryComponent.nativeElement.style.cursor = 'auto';\n    this.secondaryComponent.nativeElement.style.cursor = 'auto';\n\n    if (this.localStorageKey != null) {\n      const ratio =\n        this.getPrimarySize() / this.self.nativeElement[this.sizePropertyName];\n      localStorage.setItem(this.localStorageKey, JSON.stringify(ratio));\n    }\n\n    this.notifyEndedResizing.emit();\n  }\n\n  @HostListener('mouseup')\n  @HostListener('touchend')\n  onMouseup(): void {\n    if (this.isResizing) {\n      this.stopResizing();\n    }\n  }\n\n  @HostListener('document:mouseout', ['$event'])\n  onDocumentLeave(event): void {\n    if (this.isResizing) {\n      event = event ? event : window.event;\n      const from = event.relatedTarget || event.toElement;\n      if (!from || from.nodeName === 'HTML') {\n        this.stopResizing();\n      }\n    }\n  }\n}\n","import { Component, HostListener, EventEmitter, Input, Output, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'ninja-separator',\n  styleUrls: ['ninja-separator.component.scss'],\n  template: `\n    <div class=\"handle\"></div>\n  `\n})\nexport class NinjaSeparatorComponent {\n  @Input() thickness: number;\n  @Input() @HostBinding('class.horizontal') horizontal = true;\n  @Output()\n  notifyWillChangeSize: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @HostBinding('class.vertical')\n  public get vertical(): boolean {\n    return !this.horizontal;\n  }\n  @HostBinding('style.width')\n  public get width(): string {\n    if (this.horizontal) {\n      return `inherit`;\n    } else {\n      return `${this.thickness}px`;\n    }\n  }\n  @HostBinding('style.height')\n  public get height(): string {\n    if (this.vertical) {\n      return `inherit`;\n    } else {\n      return `${this.thickness}px`;\n    }\n  }\n\n  constructor() {}\n\n  @HostListener('mousedown')\n  onMousedown(): void {\n    this.notifyWillChangeSize.emit(true);\n  }\n}\n","import { Component, HostListener } from '@angular/core';\nimport { NinjaSplitterComponent } from './ninja-splitter.component';\nimport { PositionService } from './position.service';\n\n@Component({\n  selector: 'horizontal-ninja',\n  styles: [`:host {\n    height: 100%;\n    width: 100%;\n    display: flex;\n    flex-flow: column;\n  }\n\n  .ninja-com {\n    height: calc(50% - 4px);\n  }`],\n  template: `\n    <div\n      #primaryComponent\n      [hidden]=\"primaryToggledOff\"\n      class=\"upper ninja-com\">\n      <ng-content select=\".ninja-content-primary\"></ng-content>\n    </div>\n    <ninja-separator\n      #separator\n      [hidden]=\"primaryToggledOff || secondaryToggledOff\"\n      [thickness]=\"separatorThickness\"\n      (notifyWillChangeSize)=\"notifyWillChangeSize($event)\">\n    </ninja-separator>\n    <div\n      #secondaryComponent\n      [hidden]=\"secondaryToggledOff\"\n      class=\"lower ninja-com\">\n      <ng-content select=\".ninja-content-secondary\"></ng-content>\n    </div>\n  `,\n})\nexport class HorizontalNinjaSplitterComponent extends NinjaSplitterComponent {\n\n  getPrimarySize(): number {\n    return this.primaryComponent.nativeElement.offsetHeight;\n  }\n\n  getSecondarySize(): number {\n    return this.secondaryComponent.nativeElement.offsetHeight;\n  }\n\n  dividerPosition(size: number): void {\n    const sizePct = (size / this.self.nativeElement[this.sizePropertyName]) * 100.0;\n    this.primaryComponent.nativeElement.style.height = sizePct + '%';\n    this.secondaryComponent.nativeElement.style.height = `calc(${100 - sizePct}% -\n          ${+!(this.primaryToggledOff || this.secondaryToggledOff) * this.separatorThickness}px)`;\n  }\n\n  @HostListener('mousemove', ['$event'])\n  onMousemove(event: MouseEvent): any {\n    if (this.isResizing) {\n      const coords = PositionService.offset(this.primaryComponent);\n      this.applySizeChange(event.pageY - coords.top);\n      return false;\n    }\n  }\n}\n","import { Component, ViewChild, ElementRef, HostListener } from '@angular/core';\nimport { NinjaSplitterComponent } from './ninja-splitter.component';\nimport { PositionService } from './position.service';\n\n@Component({\n  selector: 'vertical-ninja',\n  styles: [`:host {\n    height: 100%;\n    width: 100%;\n    display: flex;\n  }\n\n  .ninja-com {\n    width: calc(50% - 4px);\n  }`],\n  template: `\n    <div\n      #primaryComponent\n      [hidden]=\"primaryToggledOff\"\n      class=\"left ninja-com\">\n      <ng-content select=\".ninja-content-primary\"></ng-content>\n    </div>\n    <ninja-separator\n      [horizontal]=\"false\"\n      #separator\n      [hidden]=\"primaryToggledOff || secondaryToggledOff\"\n      [thickness]=\"separatorThickness\"\n      (notifyWillChangeSize)=\"notifyWillChangeSize($event)\">\n    </ninja-separator>\n    <div\n      #secondaryComponent\n      [hidden]=\"secondaryToggledOff\"\n      class=\"right ninja-com\">\n      <ng-content select=\".ninja-content-secondary\"></ng-content>\n    </div>\n  `,\n})\nexport class VerticalNinjaSplitterComponent extends NinjaSplitterComponent {\n\n  @ViewChild('outer', { static: true }) outerContainer: ElementRef;\n\n  getPrimarySize(): number {\n    return this.primaryComponent.nativeElement.offsetWidth;\n  }\n\n  getSecondarySize(): number {\n    return this.secondaryComponent.nativeElement.offsetWidth;\n  }\n\n  dividerPosition(size: number): void {\n    const sizePct = (size / this.self.nativeElement[this.sizePropertyName]) * 100;\n    this.primaryComponent.nativeElement.style.width = sizePct + '%';\n    this.secondaryComponent.nativeElement.style.width =\n      'calc(' + (100 - sizePct) + '% - ' +\n      (this.primaryToggledOff || this.secondaryToggledOff ? 0 : this.separatorThickness) + 'px)';\n  }\n\n  @HostListener('mousemove', ['$event'])\n  onMousemove(event: MouseEvent): void {\n    if (this.isResizing) {\n      const coords = PositionService.offset(this.primaryComponent);\n      this.applySizeChange(event.pageX - coords.left);\n    }\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HorizontalNinjaSplitterComponent } from './horizontal-ninja.component';\nimport { VerticalNinjaSplitterComponent } from './vertical-ninja.component';\nimport { NinjaSeparatorComponent } from './ninja-separator.component';\nimport { NinjaSplitterComponent } from './ninja-splitter.component';\n\nexport function delayedInit(): ModuleWithProviders<NinjaSplitterModule> {\n  return {\n    ngModule: NinjaSplitterModule,\n    providers: []\n  };\n}\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [\n    HorizontalNinjaSplitterComponent,\n    VerticalNinjaSplitterComponent,\n    NinjaSeparatorComponent,\n    NinjaSplitterComponent\n  ],\n  exports: [HorizontalNinjaSplitterComponent, VerticalNinjaSplitterComponent]\n})\nexport class NinjaSplitterModule {\n  static forRoot = delayedInit();\n}\n","/*\n * Public API Surface of ninja-split\n */\n\nexport * from './lib/position.service';\nexport * from './lib/horizontal-ninja.component';\nexport * from './lib/ninja-separator.component';\nexport * from './lib/ninja-splitter';\nexport * from './lib/ninja-splitter.component';\nexport * from './lib/vertical-ninja.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NinjaSeparatorComponent"],"mappings":"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"}