@looorent/ngx-simple-modal
Version:
A simple unopinionated framework to implement simple modal based behaviour in angular (v2+) projects.
1 lines • 47.1 kB
Source Map (JSON)
{"version":3,"file":"looorent-ngx-simple-modal.mjs","sources":["../../src/simple-modal/simple-modal-options.ts","../../src/simple-modal/simple-modal-wrapper.component.ts","../../src/simple-modal/simple-modal-draggable.directive.ts","../../src/simple-modal/simple-modal-holder.component.ts","../../src/simple-modal/simple-modal.service.ts","../../src/simple-modal/simple-modal-service.factory.ts","../../src/simple-modal/simple-modal.module.ts","../../src/simple-modal/simple-modal.component.ts","../../src/looorent-ngx-simple-modal.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DefaultSimpleModalOptionConfig = new InjectionToken<SimpleModalOptions>('default-simple-modal.config'); // eslint-disable-line\n\nexport interface SimpleModalOptions {\n closeOnEscape: boolean;\n closeOnClickOutside: boolean;\n bodyClass: string;\n wrapperDefaultClasses: string;\n wrapperClass: string;\n draggableClass: string;\n animationDuration: number;\n autoFocus: boolean;\n draggable: boolean;\n}\n\nexport type SimpleModalOptionsOverrides = Partial<SimpleModalOptions>;\n\nexport const defaultSimpleModalOptions: SimpleModalOptions = {\n closeOnEscape: false,\n closeOnClickOutside: false,\n bodyClass: 'modal-open',\n wrapperDefaultClasses: 'modal fade-anim',\n wrapperClass: 'in',\n draggableClass: 'draggable',\n animationDuration: 300,\n autoFocus: false,\n draggable: false,\n};\n","import {\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n Injector,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { SimpleModalComponent } from './simple-modal.component';\n\n/**\n * The modal backdrop wrapping wrapper to the modal\n */\n@Component({\n selector: 'simple-modal-wrapper',\n template: `\n <div #wrapper [ngClass]=\"modalClasses\" [ngStyle]=\"{ display: 'block' }\" role=\"dialog\">\n <ng-template #viewContainer></ng-template>\n </div>\n `,\n})\nexport class SimpleModalWrapperComponent implements OnDestroy {\n /**\n * Target viewContainer to insert modal content component\n */\n @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\n\n /**\n * Link wrapper DOM element\n */\n @ViewChild('wrapper', { read: ElementRef, static: true })\n wrapper: ElementRef;\n\n /**\n * Wrapper modal and fade classes\n */\n modalClasses = 'modal fade-anim';\n\n /**\n * Dialog content componet\n * @type {SimpleModalComponent}\n */\n content: SimpleModalComponent<any, any>;\n\n /**\n * Click outside callback\n */\n clickOutsideCallback: (event: MouseEvent) => void;\n\n /**\n * Constructor\n * @param {ComponentFactoryResolver} resolver\n */\n constructor(private resolver: ComponentFactoryResolver) {}\n\n /**\n * Adds content modal component to wrapper\n * @param {Type<SimpleModalComponent>} component\n * @return {SimpleModalComponent}\n */\n addComponent<T, T1>(component: Type<SimpleModalComponent<T, T1>>): {ref: ComponentRef<SimpleModalComponent<T, T1>>; component: SimpleModalComponent<T, T1>} {\n const factory = this.resolver.resolveComponentFactory(component);\n const injector = Injector.create({\n providers: [],\n parent: this.viewContainer.injector\n });\n const componentRef = factory.create(injector);\n this.viewContainer.insert(componentRef.hostView);\n this.content = <SimpleModalComponent<T, T1>>componentRef.instance;\n this.content.wrapper = this.wrapper;\n return {ref: componentRef, component: this.content};\n }\n\n /**\n * Configures the function to call when you click on background of a modal but not the contents\n * @param callback\n */\n onClickOutsideModalContent(callback: () => void) {\n const containerEl = this.wrapper.nativeElement;\n\n this.clickOutsideCallback = (event: MouseEvent) => {\n if (event.target === containerEl) {\n callback();\n }\n };\n\n containerEl.addEventListener('click', this.clickOutsideCallback, false);\n }\n\n ngOnDestroy() {\n if (this.clickOutsideCallback) {\n const containerEl = this.wrapper.nativeElement;\n containerEl.removeEventListener('click', this.clickOutsideCallback, false);\n this.clickOutsideCallback = null;\n }\n }\n}\n","import {\n Directive,\n AfterViewInit,\n OnDestroy,\n Input,\n Output,\n ElementRef,\n NgZone,\n EventEmitter,\n Renderer2,\n OnChanges\n} from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, switchMap, map, takeUntil } from 'rxjs/operators';\n\nexport interface DraggedEvent {\n x: number;\n y: number;\n}\n\nexport interface DragOffset {\n x?: number;\n y?: number;\n}\n\n@Directive({\n selector: '[dialogDraggable]'\n})\nexport class DraggableDirective implements AfterViewInit, OnChanges, OnDestroy {\n @Input()\n dragHandle?: string | Element;\n @Input()\n dragTarget: string | Element;\n @Input()\n dragEnabled = false;\n @Input()\n set dialogDragOffset(offset: DragOffset) {\n this.reset(offset);\n }\n @Output()\n dragged = new EventEmitter<DraggedEvent>();\n\n /** Element to be dragged */\n private target: HTMLElement;\n /** Drag handle */\n private handle: Element;\n private delta = { x: 0, y: 0 };\n private offset = { x: 0, y: 0 };\n private enabled = true;\n private destroy$ = new Subject<void>();\n\n constructor(private host: ElementRef, private zone: NgZone, private renderer: Renderer2) {}\n\n public ngAfterViewInit(): void {\n if (!this.enabled) {\n return;\n }\n\n this.init();\n }\n\n public ngOnChanges() {\n if (!this.enabled && this.dragEnabled && this.dragTarget) {\n this.enabled = true;\n /** determine if the component has been init by the handle variable */\n if (this.handle) {\n this.renderer.setStyle(this.handle, 'cursor', 'move');\n } else if (this.enabled) {\n this.init();\n }\n }\n\n if (!this.dragEnabled) {\n this.enabled = false;\n if (this.handle) {\n this.renderer.setStyle(this.handle, 'cursor', '');\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n reset(offset?: DragOffset) {\n const defaultValues = { x: 0, y: 0 };\n this.offset = { ...defaultValues, ...offset };\n this.delta = { ...defaultValues };\n this.translate();\n }\n\n private setupEvents() {\n this.zone.runOutsideAngular(() => {\n const mousedown$ = fromEvent<MouseEvent>(this.handle, 'mousedown');\n const mousemove$ = fromEvent<MouseEvent>(document, 'mousemove');\n const mouseup$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n const mousedrag$ = mousedown$.pipe(\n filter(() => this.enabled),\n map(event => ({\n startX: event.clientX,\n startY: event.clientY\n })),\n switchMap(({ startX, startY }) =>\n mousemove$.pipe(\n map(event => {\n event.preventDefault();\n this.delta = {\n x: event.clientX - startX,\n y: event.clientY - startY\n };\n }),\n takeUntil(mouseup$)\n )\n ),\n takeUntil(this.destroy$)\n );\n\n mousedrag$.subscribe(() => {\n if (this.delta.x === 0 && this.delta.y === 0) {\n return;\n }\n\n this.translate();\n });\n\n mouseup$\n .pipe(\n filter(() => this.enabled),\n /** Only emit change if the element has moved */\n filter(() => this.delta.x !== 0 || this.delta.y !== 0),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.offset.x += this.delta.x;\n this.offset.y += this.delta.y;\n this.dragged.emit(this.offset);\n this.delta = { x: 0, y: 0 };\n });\n });\n }\n\n private translate() {\n if (this.target) {\n this.zone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n const transform = `translate(${this.offset.x + this.delta.x}px, ${this.offset.y + this.delta.y}px)`;\n this.renderer.setStyle(this.target, 'transform', transform);\n });\n });\n }\n }\n\n /**\n * Init the directive\n */\n private init() {\n if (!this.dragTarget) {\n throw new Error('You need to specify the drag target');\n }\n\n this.handle =\n this.dragHandle instanceof Element\n ? this.dragHandle\n : typeof this.dragHandle === 'string' && this.dragHandle\n ? document.querySelector(this.dragHandle as string)\n : this.host.nativeElement;\n\n /** add the move cursor */\n if (this.handle && this.enabled) {\n this.renderer.addClass(this.handle, 'handle');\n }\n\n this.target =\n this.dragTarget instanceof HTMLElement\n ? this.dragTarget\n : document.querySelector(this.dragTarget as string);\n\n this.setupEvents();\n\n this.translate();\n }\n}\n","import { Component, ComponentFactoryResolver, ElementRef, Inject, Type, ViewContainerRef, ViewChild, Renderer2, ComponentRef, NgZone } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { DefaultSimpleModalOptionConfig, SimpleModalOptions, SimpleModalOptionsOverrides } from './simple-modal-options';\nimport { SimpleModalWrapperComponent } from './simple-modal-wrapper.component';\nimport { SimpleModalComponent } from './simple-modal.component';\nimport { DraggableDirective } from './simple-modal-draggable.directive';\n\n/**\n * View container manager which manages a list of modals currently active\n * inside the viewvontainer\n */\n@Component({\n selector: 'simple-modal-holder',\n template: '<ng-template #viewContainer></ng-template>',\n})\nexport class SimpleModalHolderComponent {\n /**\n * Target viewContainer to insert modals\n */\n @ViewChild('viewContainer', { read: ViewContainerRef, static: true }) viewContainer;\n\n /**\n * modal collection, maintained by addModal and removeModal\n * @type {Array<SimpleModalComponent> }\n */\n modals: Array<SimpleModalComponent<any, any>> = [];\n\n /**\n * if auto focus is on and no element focused, store it here to be restored back after close\n */\n previousActiveElement = null;\n\n /**\n * Constructor\n * @param {ComponentFactoryResolver} resolver\n * @param renderer\n * @param ngZone\n * @param defaultSimpleModalOptions\n */\n constructor(\n private resolver: ComponentFactoryResolver,\n private renderer: Renderer2,\n private ngZone: NgZone,\n @Inject(DefaultSimpleModalOptionConfig) private defaultSimpleModalOptions: SimpleModalOptions,\n ) {\n }\n\n /**\n * Configures then adds modal to the modals array, and populates with data passed in\n * @param {Type<SimpleModalComponent>} component\n * @param {object?} data\n * @param {SimpleModalOptionsOverrides?} options\n * @return {Observable<*>}\n */\n addModal<T, T1>(\n component: Type<SimpleModalComponent<T, T1>>,\n data?: T,\n options?: SimpleModalOptionsOverrides,\n ): Observable<T1> {\n // create component\n if (!this.viewContainer) {\n return of(null);\n }\n const factory = this.resolver.resolveComponentFactory(SimpleModalWrapperComponent);\n const componentRef = this.viewContainer.createComponent(factory);\n const modalWrapper: SimpleModalWrapperComponent = <SimpleModalWrapperComponent>(\n componentRef.instance\n );\n const { ref: _componentRef, component: _component } = modalWrapper.addComponent(component);\n\n // assign options refs\n _component.options = options = Object.assign({}, this.defaultSimpleModalOptions, options) as SimpleModalOptions;\n\n // set base classes for wrapper\n modalWrapper.modalClasses = options.wrapperDefaultClasses;\n\n // add to stack\n this.modals.push(_component);\n\n // wait a tick then setup the following while adding a modal\n this.wait().then(() => {\n this.toggleWrapperClass(modalWrapper.wrapper, options.wrapperClass);\n this.toggleBodyClass(options.bodyClass);\n if (options.draggable) {\n this.setDraggable(_componentRef, options);\n }\n this.wait(options.animationDuration).then(() => {\n this.autoFocusFirstElement(_component.wrapper, options.autoFocus);\n _component.markAsReady();\n });\n });\n\n // when closing modal remove it\n _component.onClosing(modal => this.removeModal(modal));\n\n // if clicking on background closes modal\n this.configureCloseOnClickOutside(modalWrapper);\n\n // map and return observable\n _component.mapDataObject(data);\n\n return _component.setupObserver();\n }\n\n /**\n * triggers components close function\n * to take effect\n * @returns {Promise<void>}\n * @param closingModal\n */\n removeModal(closingModal: SimpleModalComponent<any, any>): Promise<any> {\n const options = closingModal.options;\n this.toggleWrapperClass(closingModal.wrapper, options.wrapperClass);\n return this.wait(options.animationDuration).then(() => {\n this.removeModalFromArray(closingModal);\n this.toggleBodyClass(options.bodyClass);\n this.restorePreviousFocus();\n });\n }\n\n /**\n * Instructs all open modals to\n */\n removeAllModals(): Promise<any> {\n return Promise.all(this.modals.map(modal => this.removeModal(modal)));\n }\n\n /**\n * Bind a body class 'modal-open' to a condition of modals in pool > 0\n * @param bodyClass - string to add and remove from body in document\n */\n private toggleBodyClass(bodyClass: string): void {\n if (!bodyClass) {\n return;\n }\n const body = document.getElementsByTagName('body')[0];\n const bodyClassItems = bodyClass.split(' ');\n if (!this.modals.length) {\n body.classList.remove(...bodyClassItems);\n } else {\n body.classList.add(...bodyClassItems);\n }\n }\n\n /**\n * if the option to close on background click is set, then hook up a callback\n * @param modalWrapper\n */\n private configureCloseOnClickOutside(modalWrapper: SimpleModalWrapperComponent) {\n modalWrapper.onClickOutsideModalContent(() => {\n if (modalWrapper.content.options.closeOnClickOutside) {\n modalWrapper.content.close();\n }\n });\n }\n\n /**\n * Auto focus o the first element if autofocus is on\n * @param componentWrapper\n * @param autoFocus\n */\n private autoFocusFirstElement(componentWrapper: ElementRef, autoFocus: boolean) {\n if (autoFocus) {\n const focusable = componentWrapper.nativeElement.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n if (focusable && focusable.length) {\n this.previousActiveElement = document.activeElement;\n focusable[0].focus();\n }\n }\n }\n\n /**\n * Restores the last focus is there was one\n */\n private restorePreviousFocus() {\n if (this.previousActiveElement) {\n this.previousActiveElement.focus();\n this.previousActiveElement = null;\n }\n }\n\n /**\n * Configure the adding and removal of a wrapper class - predominantly animation focused\n * @param modalWrapperEl\n * @param wrapperClass\n */\n private toggleWrapperClass(modalWrapperEl: ElementRef, wrapperClass: string): void {\n const wrapperClassList = modalWrapperEl.nativeElement.classList;\n const wrapperClassItems = wrapperClass.split(' ');\n if (wrapperClassList.toString().indexOf(wrapperClass) !== -1) {\n wrapperClassList.remove(...wrapperClassItems);\n } else {\n wrapperClassList.add(...wrapperClassItems);\n }\n }\n\n /**\n * Enables the drag option on the modal if the options have it enabled\n * @param component\n * @param options\n * @private\n */\n private setDraggable(component: ComponentRef<SimpleModalComponent<any, any>>, options: SimpleModalOptionsOverrides): void {\n const draggableDirective = new DraggableDirective(component.location, this.ngZone, this.renderer);\n draggableDirective.dragTarget = component.location.nativeElement;\n draggableDirective.dragHandle = component.instance.handle ? component.instance.handle.nativeElement : undefined;\n draggableDirective.ngAfterViewInit();\n component.location.nativeElement.classList.add(options.draggableClass);\n }\n\n /**\n * Helper function for a more readable timeout\n * @param ms\n */\n private wait(ms: number = 0): Promise<unknown> {\n return new Promise<unknown>((resolve, reject) => {\n setTimeout(() => resolve(undefined), ms);\n });\n }\n\n /**\n * Instructs the holder to remove the modal and\n * removes this component from the collection\n * @param {SimpleModalComponent} component\n */\n private removeModalFromArray(component): void {\n const index = this.modals.indexOf(component);\n if (index > -1) {\n this.viewContainer.remove(index);\n this.modals.splice(index, 1);\n }\n }\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n EmbeddedViewRef,\n Injectable,\n Injector,\n Optional,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SimpleModalHolderComponent } from './simple-modal-holder.component';\nimport { SimpleModalComponent } from './simple-modal.component';\nimport { SimpleModalOptionsOverrides } from './simple-modal-options';\n\nexport class SimpleModalServiceConfig {\n container: HTMLElement | string = null;\n}\n\n@Injectable()\nexport class SimpleModalService {\n /**\n * Placeholder of modals\n * @type {SimpleModalHolderComponent}\n */\n private modalHolderComponent: SimpleModalHolderComponent;\n\n /**\n * HTML container for modals\n * type {HTMLElement | string}\n */\n private _container;\n\n /**\n * @param {ComponentFactoryResolver} resolver\n * @param {ApplicationRef} applicationRef\n * @param {Injector} injector\n * @param {SimpleModalServiceConfig} config\n */\n constructor(\n private resolver: ComponentFactoryResolver,\n private applicationRef: ApplicationRef,\n private injector: Injector,\n @Optional() config: SimpleModalServiceConfig\n ) {\n if (config) {\n this.container = config.container as any;\n }\n }\n\n /**\n * Adds modal\n * @param {Type<SimpleModalComponent<T, T1>>} component\n * @param {T?} data\n * @param {SimpleModalOptionsOverrides?} options\n * @return {Observable<T1>}\n */\n addModal<T, T1>(\n component: Type<SimpleModalComponent<T, T1>>,\n data?: T,\n options?: SimpleModalOptionsOverrides\n ): Observable<T1> {\n if (!this.modalHolderComponent) {\n this.modalHolderComponent = this.createSimpleModalHolder();\n }\n return this.modalHolderComponent.addModal<T, T1>(component, data, options);\n }\n\n /**\n * Hides and removes modal from DOM, resolves promise when fully removed\n * @param {SimpleModalComponent} component\n * @return {Promise<{}>}\n\n */\n removeModal(component: SimpleModalComponent<any, any>): Promise<{}> {\n if (!this.modalHolderComponent) {\n return Promise.resolve({});\n }\n return this.modalHolderComponent.removeModal(component);\n }\n\n /**\n * Closes all modals, resolves promise when they're fully removed\n * @return {Promise<{}>}\n */\n removeAll(): Promise<{}> {\n if (!this.modalHolderComponent) {\n return Promise.resolve({});\n }\n return this.modalHolderComponent.removeAllModals();\n }\n\n /**\n * Accessor for contain - will auto generate from string\n * if needed or default to the root element if nothing was set\n */\n\n private set container(c) {\n this._container = c;\n }\n\n private get container(): HTMLElement {\n if (typeof this._container === 'string') {\n this._container = document.getElementById(this._container);\n }\n\n if (!this._container && this.applicationRef['components'].length) {\n const componentRootViewContainer = this.applicationRef['components'][0];\n this.container = (componentRootViewContainer.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n }\n\n // fallback\n if (!this._container || typeof this._container === 'string') {\n this._container = document.getElementsByTagName('body')[0];\n }\n\n return this._container;\n }\n\n /**\n * Creates and add to DOM modal holder component\n * @return {SimpleModalHolderComponent}\n */\n private createSimpleModalHolder(): SimpleModalHolderComponent {\n const componentFactory = this.resolver.resolveComponentFactory(SimpleModalHolderComponent);\n\n const componentRef = componentFactory.create(this.injector);\n const componentRootNode = (componentRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n\n this.applicationRef.attachView(componentRef.hostView);\n\n componentRef.onDestroy(() => {\n this.applicationRef.detachView(componentRef.hostView);\n });\n\n this.container.appendChild(componentRootNode);\n\n return componentRef.instance;\n }\n}\n","import { ApplicationRef, ComponentFactoryResolver, Injector } from '@angular/core';\n\nimport { SimpleModalService, SimpleModalServiceConfig } from './simple-modal.service';\n\n/**\n * Modal service factory. Creates modal service with options\n * @param { ComponentFactoryResolver } resolver\n * @param { ApplicationRef } applicationRef\n * @param { Injector } injector\n * @param { SimpleModalServiceConfig } options\n * @return { SimpleModalService }\n */\nexport function SimpleModalServiceFactory(resolver: ComponentFactoryResolver,\n applicationRef: ApplicationRef,\n injector: Injector,\n options: SimpleModalServiceConfig) {\n return new SimpleModalService(resolver, applicationRef, injector, options);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentFactoryResolver,\n Injector,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\n\nimport { SimpleModalHolderComponent } from './simple-modal-holder.component';\nimport { SimpleModalWrapperComponent } from './simple-modal-wrapper.component';\nimport { SimpleModalService, SimpleModalServiceConfig } from './simple-modal.service';\nimport { SimpleModalServiceFactory } from './simple-modal-service.factory';\nimport {\n defaultSimpleModalOptions,\n DefaultSimpleModalOptionConfig,\n SimpleModalOptions,\n} from './simple-modal-options';\nimport { DraggableDirective } from './simple-modal-draggable.directive';\n\n@NgModule({\n declarations: [SimpleModalHolderComponent, SimpleModalWrapperComponent, DraggableDirective],\n providers: [\n SimpleModalService,\n {\n provide: DefaultSimpleModalOptionConfig,\n useValue: defaultSimpleModalOptions,\n },\n ],\n imports: [CommonModule]\n})\nexport class SimpleModalModule {\n static forRoot(\n config: SimpleModalServiceConfig,\n defaultModalOptions?: SimpleModalOptions\n ): ModuleWithProviders<SimpleModalModule> {\n return {\n ngModule: SimpleModalModule,\n providers: [\n { provide: SimpleModalServiceConfig, useValue: config },\n {\n provide: SimpleModalService,\n useFactory: SimpleModalServiceFactory,\n deps: [ComponentFactoryResolver, ApplicationRef, Injector, SimpleModalServiceConfig],\n },\n {\n provide: DefaultSimpleModalOptionConfig,\n useValue: defaultModalOptions || defaultSimpleModalOptions,\n }\n ],\n };\n }\n\n constructor() {}\n}\n","import { Component, ElementRef, HostListener } from '@angular/core';\nimport { BehaviorSubject, Observable, Observer } from 'rxjs';\n\nimport { SimpleModalOptions } from './simple-modal-options';\n\nexport interface OnDestroyLike {\n ngOnDestroy(): void;\n [key: string]: any;\n}\n\n@Component({ template: '' })\n/**\n * Abstract modal\n * @template T - modal data;\n * @template T1 - modal result\n */\nexport abstract class SimpleModalComponent<T, T1> {\n /**\n * Observer to return result from modal\n */\n private observer: Observer<T1>;\n\n /**\n * Drag handle\n */\n handle: ElementRef | undefined;\n\n /**\n * Dialog result\n * @type {T1}\n */\n result: T1;\n\n /**\n * Dialog wrapper (modal placeholder)\n */\n wrapper: ElementRef;\n\n /**\n * ref of options for this component\n */\n options: SimpleModalOptions;\n\n /**\n * ready$ is when all animations and focusing have comleted\n */\n _ready$ = new BehaviorSubject<boolean>(false);\n\n /**\n * Callback to the holders close function\n */\n private closerCallback: (component) => Promise<any> = () => Promise.resolve();\n\n /**\n * Constructor\n */\n constructor() {}\n\n /**\n * Maps your object passed in the creation to fields in your own Dialog classes\n * @param {T} data\n */\n mapDataObject(data: T): void {\n data = data || <T>{};\n const keys = Object.keys(data);\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n if (\n data[key] &&\n this[key] &&\n typeof data[key] === 'object' &&\n typeof this[key] === 'object'\n ) {\n Object.assign(this[key], data[key]);\n } else {\n this[key] = data[key];\n }\n }\n }\n\n /**\n * Setup observer\n * @return {Observable<T1>}\n */\n setupObserver(): Observable<T1> {\n return Observable.create(observer => {\n this.observer = observer;\n\n // called if observable is unsubscribed to\n return () => {\n this.close();\n };\n });\n }\n\n /**\n * Defines what happens when close is called - default this\n * will just call the default remove modal process. If overridden\n * must include\n * @param callback\n */\n onClosing(callback: (component: SimpleModalComponent<any, any>) => Promise<any>): void {\n this.closerCallback = callback;\n }\n\n /**\n * Closes modal\n */\n close(): Promise<any> {\n return this.closerCallback(this).then(v => {\n if (this.observer) {\n this.observer.next(this.result);\n this.observer.complete();\n }\n return v;\n });\n }\n\n /**\n * keypress binding ngx way\n * @param evt\n */\n @HostListener('document:keydown.escape', ['$event'])\n onKeydownHandler(evt: KeyboardEvent) {\n if (this.options && this.options.closeOnEscape) {\n this.close();\n }\n }\n\n get ready$() {\n return this._ready$.asObservable();\n }\n\n markAsReady() {\n this._ready$.next(true);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}