{"version":3,"file":"ng-click-outside2.mjs","sources":["../../../projects/ng-click-outside2/src/lib/ng-click-outside-exclude.directive.ts","../../../projects/ng-click-outside2/src/lib/array-attribute.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside.directive.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside-attach-outside.directive.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside-delay-outside.directive.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside-emit-on-blur.directive.ts","../../../projects/ng-click-outside2/src/public-api.ts","../../../projects/ng-click-outside2/src/ng-click-outside2.ts"],"sourcesContent":["import {Directive, DOCUMENT, inject, input} from '@angular/core';\n\n\n/**\n * Optimization for Treeshaking: https://angular.io/guide/lightweight-injection-tokens\n */\nexport abstract class NgClickOutsideExcludeToken {\n  abstract isExclude(target: any): boolean;\n}\n\n/**\n * Directive to exclude elements from the click-outside\n */\n@Directive({\n  selector: '[clickOutsideExclude]',\n  standalone: true,\n  providers: [\n    {provide: NgClickOutsideExcludeToken, useExisting: NgClickOutsideExcludeDirective}\n  ]\n})\nexport class NgClickOutsideExcludeDirective extends NgClickOutsideExcludeToken {\n\n  /**\n   * A comma-separated string of DOM element queries to exclude when clicking outside of the element.\n   * For example: `[exclude]=\"'button,.btn-primary'\"`.\n   */\n  clickOutsideExclude = input('');\n\n  private document: Document = inject(DOCUMENT);\n\n  public excludeCheck(): HTMLElement[] {\n    const clickOutsideExclude = this.clickOutsideExclude()\n    if (clickOutsideExclude) {\n      try {\n        const nodes = Array.from(this.document.querySelectorAll(clickOutsideExclude)) as Array<HTMLElement>;\n        if (nodes) {\n          return nodes;\n        }\n      } catch (err) {\n        console.error('[ng-click-outside] Check your exclude selector syntax.', err);\n      }\n    }\n    return [];\n  }\n\n  public isExclude(target: any): boolean {\n    const nodesExcluded = this.excludeCheck();\n    for (let excludedNode of nodesExcluded) {\n      if (excludedNode.contains(target)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n","export function arrayAttribute (events: string | string[]) {\n  if (Array.isArray(events)) {\n    return events\n  } else {\n    return events.split(',')\n  }\n}\n","import {\n  afterNextRender,\n  booleanAttribute,\n  Directive,\n  ElementRef,\n  inject,\n  input,\n  NgZone,\n  OnDestroy,\n  output,\n  DOCUMENT\n} from '@angular/core';\nimport {NgClickOutsideExcludeToken} from \"./ng-click-outside-exclude.directive\";\nimport {arrayAttribute} from \"./array-attribute\";\n\n/**\n * Directive to detect clicks outside of the current element\n *\n * ```typescript\n * @Component({\n *   selector: 'app',\n *   template: `\n *     <div (clickOutside)=\"onClickedOutside($event)\">Click outside this</div>\n *   `\n * })\n * export class AppComponent {\n *   onClickedOutside(e: Event) {\n *     console.log('Clicked outside:', e);\n *   }\n * }\n * ```\n */\n@Directive({\n  selector: '[clickOutside]:not([delayClickOutsideInit]):not([attachOutsideOnClick])',\n  standalone: true,\n})\nexport class NgClickOutsideDirective implements OnDestroy {\n\n  /**\n   * Enables directive.\n   */\n  clickOutsideEnabled = input(true, {transform: booleanAttribute});\n\n  /**\n   * A comma-separated list of events to cause the trigger.\n   * ### For example, for additional mobile support:\n   * `[clickOutsideEvents]=\"'click,touchstart'\"`\n   */\n  clickOutsideEvents = input(['click'], {\n    transform: arrayAttribute\n  });\n\n  /**\n   * Outside Click Event\n   */\n  clickOutside = output<Event>();\n\n  excludeDirective = inject(NgClickOutsideExcludeToken, {host: true, optional: true});\n  protected _el = inject(ElementRef);\n  protected _ngZone = inject(NgZone);\n  private document = inject<Document>(DOCUMENT);\n  lastRemoved?: Node[];\n  mutationObserver?: MutationObserver;\n\n  constructor() {\n    this._initOnClickBody = this._initOnClickBody.bind(this);\n    this._onClickBody = this._onClickBody.bind(this);\n    afterNextRender(() => this._init())\n  }\n\n  ngOnDestroy() {\n    this._removeClickOutsideListener();\n    this.mutationObserver?.disconnect();\n  }\n\n  protected _init() {\n    this._initOnClickBody();\n  }\n\n  protected _initOnClickBody() {\n    this.initListener();\n  }\n\n  protected _emit(ev: Event) {\n    this._ngZone.run(() => this.clickOutside.emit(ev));\n  }\n\n  protected initListener() {\n    this.initMutationObserver();\n    this._initClickOutsideListener();\n  }\n\n  private initMutationObserver() {\n    this.mutationObserver = new MutationObserver((mutationList) => {\n      this.lastRemoved = mutationList.flatMap(list => Array.from((list.removedNodes as any).values()));\n    });\n\n    this.mutationObserver.observe(this._el.nativeElement, {\n      childList: true,\n      subtree: true,\n    });\n  }\n\n  protected _initClickOutsideListener() {\n    this._ngZone.runOutsideAngular(() => {\n      this.clickOutsideEvents().forEach(e => this.document.addEventListener(e, this._onClickBody));\n    });\n  }\n\n  protected _removeClickOutsideListener() {\n    this._ngZone.runOutsideAngular(() => {\n      this.clickOutsideEvents().forEach(e => this.document.removeEventListener(e, this._onClickBody));\n    });\n  }\n\n  private _onClickBody(ev: Event) {\n    if (!this.clickOutsideEnabled()) {\n      return;\n    }\n\n    if (!this._el.nativeElement.contains(ev.target) && !this.excludeDirective?.isExclude(ev.target) && !this.gotRemoved(ev.target as Node)) {\n      this._emit(ev);\n    }\n    this.resetLastRemovedList();\n  }\n\n  protected gotRemoved(target: Node, list = this.lastRemoved): boolean {\n    return list?.some(node => node === target || node.contains(target)) ?? false;\n  }\n\n  private resetLastRemovedList() {\n    this.lastRemoved = undefined;\n  }\n}\n","import {booleanAttribute, Directive, effect, input, OnDestroy} from '@angular/core';\nimport {NgClickOutsideDirective} from \"./ng-click-outside.directive\";\n\n/**\n * Directive only starts after a single click and the outside click event handler\n * will then be removed after a click outside has occurred.\n */\n@Directive({\n  selector: '[clickOutside][attachOutsideOnClick]',\n  standalone: true\n})\nexport class NgClickOutsideAttachOutsideDirective extends NgClickOutsideDirective implements OnDestroy {\n  /**\n   * By default, the outside click event handler is automatically attached.\n   *\n   * Explicitely setting this to `true`sets the handler after the element is clicked. The outside click event handler\n   * will then be removed after a click outside has occurred.\n   */\n  attachOutsideOnClick = input.required({transform: booleanAttribute});\n\n\n  constructor() {\n    super();\n    effect(() => {\n      this.attachOutsideOnClick();\n      this._init()\n    });\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._removeAttachOutsideOnClickListener();\n  }\n\n  protected override _init() {\n    if (this.attachOutsideOnClick()) {\n      this._initAttachOutsideOnClickListener();\n    } else {\n      this._initOnClickBody();\n    }\n  }\n\n  protected override _emit(ev: Event) {\n    if (this.attachOutsideOnClick()) {\n      this._removeClickOutsideListener();\n    }\n    super._emit(ev);\n  }\n\n  protected _initAttachOutsideOnClickListener() {\n    this._ngZone.runOutsideAngular(() => {\n      this.clickOutsideEvents().forEach(e => this._el.nativeElement.addEventListener(e, this._initOnClickBody));\n    });\n  }\n\n  protected _removeAttachOutsideOnClickListener() {\n    this._ngZone.runOutsideAngular(() => {\n      this.clickOutsideEvents().forEach(e => this._el.nativeElement.removeEventListener(e, this._initOnClickBody));\n    });\n  }\n}\n","import {booleanAttribute, Directive, input} from '@angular/core';\nimport {NgClickOutsideDirective} from \"./ng-click-outside.directive\";\n\n/**\n * Click oustside Directive but with an setTimeout on the listener\n * This may help for items that are conditionally shown ([see issue #13](https://github.com/arkon/ng-click-outside/issues/13)).\n */\n@Directive({\n  selector: '[clickOutside][delayClickOutsideInit]',\n  standalone: true\n})\nexport class NgClickOutsideDelayOutsideDirective extends NgClickOutsideDirective  {\n\n  /**\n   * Delays the initialization of the click outside handler.\n   * This may help for items that are conditionally shown ([see issue #13](https://github.com/arkon/ng-click-outside/issues/13)).\n   */\n  delayClickOutsideInit = input.required( {transform: booleanAttribute});\n\n  protected override _initOnClickBody() {\n    if (this.delayClickOutsideInit()) {\n      setTimeout(super.initListener.bind(this));\n    } else {\n      super.initListener();\n    }\n  }\n}\n","import {afterNextRender, Directive, DOCUMENT, inject, NgZone, OnDestroy, output} from '@angular/core';\n\n/**\n *  emits an event when user clicks outside of applications' window while it's visible.\n *  Especially useful if page contains iframes.\n */\n@Directive({\n  selector: '[clickOutsideEmitOnBlur]',\n  standalone: true\n})\nexport class NgClickOutsideEmitOnBlurDirective implements OnDestroy {\n  private _ngZone = inject(NgZone);\n  private document = inject<Document>(DOCUMENT);\n  blurWindow = output<Event>();\n\n  constructor() {\n    this._onWindowBlur = this._onWindowBlur.bind(this);\n    afterNextRender(() => this._initWindowBlurListener())\n  }\n\n  ngOnDestroy() {\n    this._removeWindowBlurListener();\n  }\n\n  private _initWindowBlurListener() {\n    this._ngZone.runOutsideAngular(() => {\n      this.document.defaultView?.addEventListener('blur', this._onWindowBlur);\n    });\n  }\n\n  /**\n   * Resolves problem with outside click on iframe\n   * @see https://github.com/arkon/ng-click-outside/issues/32\n   */\n  private _onWindowBlur(ev: Event) {\n    if (!this.document.hidden) {\n      this._ngZone.run(() => this.blurWindow.emit(ev));\n    }\n  }\n\n  private _removeWindowBlurListener() {\n    this._ngZone.runOutsideAngular(() => {\n      this.document.defaultView?.removeEventListener('blur', this._onWindowBlur);\n    });\n  }\n}\n","/*\n * Public API Surface of ng-click-outside2\n */\n\nexport * from './lib/ng-click-outside.directive';\nexport * from './lib/ng-click-outside-attach-outside.directive';\nexport * from './lib/ng-click-outside-delay-outside.directive';\nexport * from './lib/ng-click-outside-exclude.directive';\nexport * from './lib/ng-click-outside-emit-on-blur.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}