text: import { attachShadow, createEvent, h, Host, proxyCustomElement } from '@stencil/core/internal/client';
  import { G as GESTURE_CONTROLLER } from './gesture-controller.js';
  import { b as getIonMode } from './ionic-global.js';
  
  const backdropIosCss = ":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}";
  
  const backdropMdCss = ":host{left:0;right:0;top:0;bottom:0;display:block;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);contain:strict;cursor:pointer;opacity:0.01;-ms-touch-action:none;touch-action:none;z-index:2}:host(.backdrop-hide){background:transparent}:host(.backdrop-no-tappable){cursor:auto}:host{background-color:var(--ion-backdrop-color, #000)}";
  
  const Backdrop = class extends HTMLElement {
    constructor() {
      super();
      this.__registerHost();
      attachShadow(this);
      this.ionBackdropTap = createEvent(this, "ionBackdropTap", 7);
      this.blocker = GESTURE_CONTROLLER.createBlocker({
        disableScroll: true
      });
      /**
       * If `true`, the backdrop will be visible.
       */
      this.visible = true;
      /**
       * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event.
       */
      this.tappable = true;
      /**
       * If `true`, the backdrop will stop propagation on tap.
       */
      this.stopPropagation = true;
    }
    connectedCallback() {
      if (this.stopPropagation) {
        this.blocker.block();
      }
    }
    disconnectedCallback() {
      this.blocker.unblock();
    }
    onMouseDown(ev) {
      this.emitTap(ev);
    }
    emitTap(ev) {
      if (this.stopPropagation) {
        ev.preventDefault();
        ev.stopPropagation();
      }
      if (this.tappable) {
        this.ionBackdropTap.emit();
      }
    }
    render() {
      const mode = getIonMode(this);
      return (h(Host, { tabindex: "-1", "aria-hidden": "true", class: {
          [mode]: true,
          'backdrop-hide': !this.visible,
          'backdrop-no-tappable': !this.tappable,
        } }));
    }
    static get style() { return {
      ios: backdropIosCss,
      md: backdropMdCss
    }; }
  };
  
  const IonBackdrop = /*@__PURE__*/proxyCustomElement(Backdrop, [33,"ion-backdrop",{"visible":[4],"tappable":[4],"stopPropagation":[4,"stop-propagation"]},[[2,"click","onMouseDown"]]]);
  
  export { IonBackdrop };
  