"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.draggableUniDriverFactory = void 0;
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _dragAndDropDriverFactory = require("../../utils/DragAndDrop/dragAndDropDriverFactory");
var _unidriver = require("../../utils/test-utils/unidriver");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var draggableUniDriverFactory = (base, body) => {
  return _objectSpread(_objectSpread({}, (0, _unidriver.baseUniDriverFactory)(base, body)), {}, {
    /**
     * fire dragstart event for the provided draggable item
     * @param itemDetails { dataHook: string }
     * @return {Promise<void>}
     */
    beginDrag: function () {
      var _beginDrag = (0, _asyncToGenerator2.default)(function* (_ref) {
        var {
          dataHook
        } = _ref;
        return (0, _dragAndDropDriverFactory.dragAndDropDriverFactory)({
          base,
          element: yield base.getNative()
        }).beginDrag({
          dataHook
        });
      });
      function beginDrag(_x) {
        return _beginDrag.apply(this, arguments);
      }
      return beginDrag;
    }(),
    /**
     * fire dragover event for the provided draggable item
     * @param itemDetails { dataHook: string }
     * @return {Promise<void>}
     */
    dragOver: function () {
      var _dragOver = (0, _asyncToGenerator2.default)(function* (_ref2) {
        var {
          dataHook
        } = _ref2;
        return (0, _dragAndDropDriverFactory.dragAndDropDriverFactory)({
          base,
          element: yield base.getNative()
        }).dragOver({
          dataHook
        });
      });
      function dragOver(_x2) {
        return _dragOver.apply(this, arguments);
      }
      return dragOver;
    }(),
    /**
     * fire drop and dragend events for the provided draggable item
     * @param itemDetails { dataHook?: string }
     * @return {Promise<void>}
     */
    endDrag: function () {
      var _endDrag = (0, _asyncToGenerator2.default)(function* (draggableItemDetails) {
        return (0, _dragAndDropDriverFactory.dragAndDropDriverFactory)({
          base,
          element: yield base.getNative()
        }).endDrag(draggableItemDetails);
      });
      function endDrag(_x3) {
        return _endDrag.apply(this, arguments);
      }
      return endDrag;
    }()
  });
};
exports.draggableUniDriverFactory = draggableUniDriverFactory;
//# sourceMappingURL=Draggable.uni.driver.js.map