import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
import { c as classnames } from './index2.js';

const indexCss = "body,html{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0, 0, 0, 0)}taro-view-core{display:block}";

const View = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
  constructor() {
    super();
    this.__registerHost();
    this.onLongPress = createEvent(this, "longpress", 7);
    this.startTime = 0;
    this.animation = undefined;
    this.hoverClass = undefined;
    this.hoverStartTime = 50;
    this.hoverStayTime = 400;
    this.hover = false;
    this.touch = false;
  }
  onTouchStart() {
    if (this.hoverClass) {
      this.touch = true;
      setTimeout(() => {
        if (this.touch) {
          this.hover = true;
        }
      }, this.hoverStartTime);
    }
    this.timeoutEvent = setTimeout(() => {
      this.onLongPress.emit();
    }, 350);
    this.startTime = Date.now();
  }
  onTouchMove() {
    clearTimeout(this.timeoutEvent);
  }
  onTouchEnd() {
    const spanTime = Date.now() - this.startTime;
    if (spanTime < 350) {
      clearTimeout(this.timeoutEvent);
    }
    if (this.hoverClass) {
      this.touch = false;
      setTimeout(() => {
        if (!this.touch) {
          this.hover = false;
        }
      }, this.hoverStayTime);
    }
  }
  componentDidRender() {
    const el = this.el;
    el.childNodes.forEach(item => {
      // Note: ['s-cn'] Content Reference Node
      if (item.nodeType === document.COMMENT_NODE && item['s-cn'])
        item['s-cn'] = false;
      // Note: ['s-sr'] Is a slot reference node (渲染完成后禁用 slotRelocation 特性, 避免 Stencil 组件相互调用时内置排序与第三方 UI 框架冲突导致组件顺序混乱)
      if (item.nodeType !== document.COMMENT_NODE && item['s-sr'])
        item['s-sr'] = false;
    });
  }
  render() {
    const cls = classnames({
      [`${this.hoverClass}`]: this.hover
    });
    let attr = {};
    if (!!this.animation) {
      attr['animation'] = this.animation;
      attr['data-animation'] = this.animation;
    }
    return (h(Host, Object.assign({ class: cls }, attr), h("slot", null)));
  }
  get el() { return this; }
  static get style() { return indexCss; }
}, [4, "taro-view-core", {
    "animation": [1],
    "hoverClass": [1, "hover-class"],
    "hoverStartTime": [2, "hover-start-time"],
    "hoverStayTime": [2, "hover-stay-time"],
    "hover": [32],
    "touch": [32]
  }, [[1, "touchstart", "onTouchStart"], [1, "touchmove", "onTouchMove"], [1, "touchend", "onTouchEnd"]]]);
function defineCustomElement$1() {
  if (typeof customElements === "undefined") {
    return;
  }
  const components = ["taro-view-core"];
  components.forEach(tagName => { switch (tagName) {
    case "taro-view-core":
      if (!customElements.get(tagName)) {
        customElements.define(tagName, View);
      }
      break;
  } });
}

const TaroViewCore = View;
const defineCustomElement = defineCustomElement$1;

export { TaroViewCore, defineCustomElement };

//# sourceMappingURL=taro-view-core.js.map