{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/ripple/index.ts"],"sourcesContent":["import { createDirective } from 'casc-cesium-utils/private/create'\nimport { css } from 'casc-cesium-utils/private/dom'\nimport { position, stop, addEvt, cleanEvt } from 'casc-cesium-utils/private/event'\nimport { isKeyCode } from 'casc-cesium-utils/private/key-composition'\nimport throttle from 'casc-cesium-utils/private/throttle'\n\nfunction showRipple(evt, el, ctx, forceCenter) {\n  ctx.modifiers.stop === true && stop(evt)\n\n  const color = ctx.modifiers.color\n  let center = ctx.modifiers.center\n  center = center === true || forceCenter === true\n\n  const node = document.createElement('span'),\n    innerNode = document.createElement('span'),\n    pos = position(evt),\n    { left, top, width, height } = el.getBoundingClientRect(),\n    diameter = Math.sqrt(width * width + height * height),\n    radius = diameter / 2,\n    centerX = `${(width - diameter) / 2}px`,\n    x = center ? centerX : `${pos.left - left - radius}px`,\n    centerY = `${(height - diameter) / 2}px`,\n    y = center ? centerY : `${pos.top - top - radius}px`\n\n  innerNode.className = 'vc-ripple__inner'\n  css(innerNode, {\n    height: `${diameter}px`,\n    width: `${diameter}px`,\n    transform: `translate3d(${x},${y},0) scale3d(.2,.2,1)`,\n    opacity: 0\n  })\n\n  node.className = `vc-ripple${color ? ' text-' + color : ''}`\n  node.setAttribute('dir', 'ltr')\n  node.appendChild(innerNode)\n  el.appendChild(node)\n\n  const abort = () => {\n    node.remove()\n    clearTimeout(timer)\n  }\n  ctx.abort.push(abort)\n\n  let timer = setTimeout(() => {\n    innerNode.classList.add('vc-ripple__inner--enter')\n    innerNode.style.transform = `translate3d(${centerX},${centerY},0) scale3d(1,1,1)`\n    innerNode.style.opacity = '0.2'\n\n    timer = setTimeout(() => {\n      innerNode.classList.remove('vc-ripple__inner--enter')\n      innerNode.classList.add('vc-ripple__inner--leave')\n      innerNode.style.opacity = '0'\n\n      timer = setTimeout(() => {\n        node.remove()\n        ctx.abort.splice(ctx.abort.indexOf(abort), 1)\n      }, 275)\n    }, 250)\n  }, 50)\n}\n\nfunction updateModifiers(ctx, { modifiers, value, arg, instance }) {\n  // const cfg = Object.assign({}, instance.$q.config.ripple, modifiers, value)\n  const cfg = Object.assign({}, modifiers, value)\n  ctx.modifiers = {\n    early: cfg.early === true,\n    stop: cfg.stop === true,\n    center: cfg.center === true,\n    color: cfg.color || arg,\n    keyCodes: [].concat(cfg.keyCodes || 13)\n  }\n}\n\nexport default createDirective({\n  name: 'ripple',\n\n  beforeMount(el, binding) {\n    const ctx = {\n      enabled: binding.value !== false,\n      modifiers: {} as any,\n      abort: [],\n\n      start(evt) {\n        if (\n          ctx.enabled === true &&\n          evt.qSkipRipple !== true &&\n          (ctx.modifiers.early === true ? ['mousedown', 'touchstart'].includes(evt.type) === true : evt.type === 'click')\n        ) {\n          showRipple(evt, el, ctx, evt.qKeyEvent === true)\n        }\n      },\n\n      keystart: throttle(evt => {\n        if (\n          ctx.enabled === true &&\n          evt.qSkipRipple !== true &&\n          isKeyCode(evt, ctx.modifiers.keyCodes) === true &&\n          evt.type === `key${ctx.modifiers.early === true ? 'down' : 'up'}`\n        ) {\n          showRipple(evt, el, ctx, true)\n        }\n      }, 300)\n    }\n\n    updateModifiers(ctx, binding)\n\n    el.__vcripple = ctx\n\n    addEvt(ctx, 'main', [\n      [el, 'mousedown', 'start', 'passive'],\n      [el, 'touchstart', 'start', 'passive'],\n      [el, 'click', 'start', 'passive'],\n      [el, 'keydown', 'keystart', 'passive'],\n      [el, 'keyup', 'keystart', 'passive']\n    ])\n  },\n\n  updated(el, binding) {\n    if (binding.oldValue !== binding.value) {\n      const ctx = el.__vcripple\n      ctx.enabled = binding.value !== false\n\n      if (ctx.enabled === true && Object(binding.value) === binding.value) {\n        updateModifiers(ctx, binding)\n      }\n    }\n  },\n\n  beforeUnmount(el) {\n    const ctx = el.__vcripple\n    ctx.abort.forEach(fn => {\n      fn()\n    })\n    cleanEvt(ctx, 'main')\n    delete el._vcripple\n  }\n})\n"],"names":[],"mappings":"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"}