function applyMoveTransition (frags) {
      frags.forEach(function (frag) {
        frag._newPos = frag.node.getBoundingClientRect()
      })
      frags.forEach(function (frag) {
        var node = frag.node
        var oldPos = frag._oldPos
        if (!oldPos) return
        if (!frag.moved) {
          // transition busting to ensure correct bounding rect:
          // if an element has an ongoing transition and not "reinserted",
          // the bounding rect will not be calculated at its target position,
          // but rather an in-transition position.
          var p = node.parentNode
          var next = node.nextSibling
          p.removeChild(node)
          p.insertBefore(node, next)
        }
        var dx = oldPos.left - frag._newPos.left
        var dy = oldPos.top - frag._newPos.top
        if (dx !== 0 || dy !== 0) {
          frag.moved = true
          node.style.transform =
          node.style.WebkitTransform =
            'translate(' + dx + 'px, ' + dy + 'px)'
          node.style.transitionDuration = '0s'
        } else {
          frag.moved = false
        }
      })
      Vue.nextTick(function () {
        var f = document.documentElement.offsetHeight
        frags.forEach(function (frag) {
          var node = frag.node
          var moveClass = node.__v_trans.id + '-move'
          if (frag.moved) {
            addClass(node, moveClass)
            node.style.transform = node.style.WebkitTransform = ''
            node.style.transitionDuration = ''
            if (node._pendingMoveCb) {
              off(node, transitionEndEvent, node._pendingMoveCb)
            }
            node._pendingMoveCb = function cb () {
              off(node, transitionEndEvent, cb)
              node._pendingMoveCb = null
              removeClass(node, moveClass)
            }
            on(node, transitionEndEvent, node._pendingMoveCb)
          }
        })
      })
    }
Apply move transitions.
Calculate new target positions after the move, then apply the
FLIP technique to trigger CSS transforms.

@param {Array<Fragment>} frags