You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NativeDragSources.js 4.6 KiB

3 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  6. var _nativeTypesConfig;
  7. exports.createNativeDragSource = createNativeDragSource;
  8. exports.matchNativeItemType = matchNativeItemType;
  9. var _NativeTypes = require('./NativeTypes');
  10. var NativeTypes = _interopRequireWildcard(_NativeTypes);
  11. function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
  12. function _defineEnumerableProperties(obj, descs) { for (var key in descs) { var desc = descs[key]; desc.configurable = desc.enumerable = true; if ("value" in desc) desc.writable = true; Object.defineProperty(obj, key, desc); } return obj; }
  13. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  14. function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  15. function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {
  16. var result = typesToTry.reduce(function (resultSoFar, typeToTry) {
  17. return resultSoFar || dataTransfer.getData(typeToTry);
  18. }, null);
  19. return result != null // eslint-disable-line eqeqeq
  20. ? result : defaultValue;
  21. }
  22. var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {
  23. exposeProperty: 'files',
  24. matchesTypes: ['Files'],
  25. getData: function getData(dataTransfer) {
  26. return Array.prototype.slice.call(dataTransfer.files);
  27. }
  28. }), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {
  29. exposeProperty: 'urls',
  30. matchesTypes: ['Url', 'text/uri-list'],
  31. getData: function getData(dataTransfer, matchesTypes) {
  32. return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\n');
  33. }
  34. }), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {
  35. exposeProperty: 'text',
  36. matchesTypes: ['Text', 'text/plain'],
  37. getData: function getData(dataTransfer, matchesTypes) {
  38. return getDataFromDataTransfer(dataTransfer, matchesTypes, '');
  39. }
  40. }), _nativeTypesConfig);
  41. function createNativeDragSource(type) {
  42. var _nativeTypesConfig$ty = nativeTypesConfig[type],
  43. exposeProperty = _nativeTypesConfig$ty.exposeProperty,
  44. matchesTypes = _nativeTypesConfig$ty.matchesTypes,
  45. getData = _nativeTypesConfig$ty.getData;
  46. return function () {
  47. function NativeDragSource() {
  48. var _item, _mutatorMap;
  49. _classCallCheck(this, NativeDragSource);
  50. this.item = (_item = {}, _mutatorMap = {}, _mutatorMap[exposeProperty] = _mutatorMap[exposeProperty] || {}, _mutatorMap[exposeProperty].get = function () {
  51. // eslint-disable-next-line no-console
  52. console.warn('Browser doesn\'t allow reading "' + exposeProperty + '" until the drop event.');
  53. return null;
  54. }, _defineEnumerableProperties(_item, _mutatorMap), _item);
  55. }
  56. _createClass(NativeDragSource, [{
  57. key: 'mutateItemByReadingDataTransfer',
  58. value: function mutateItemByReadingDataTransfer(dataTransfer) {
  59. delete this.item[exposeProperty];
  60. this.item[exposeProperty] = getData(dataTransfer, matchesTypes);
  61. }
  62. }, {
  63. key: 'canDrag',
  64. value: function canDrag() {
  65. return true;
  66. }
  67. }, {
  68. key: 'beginDrag',
  69. value: function beginDrag() {
  70. return this.item;
  71. }
  72. }, {
  73. key: 'isDragging',
  74. value: function isDragging(monitor, handle) {
  75. return handle === monitor.getSourceId();
  76. }
  77. }, {
  78. key: 'endDrag',
  79. value: function endDrag() {}
  80. }]);
  81. return NativeDragSource;
  82. }();
  83. }
  84. function matchNativeItemType(dataTransfer) {
  85. var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);
  86. return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {
  87. var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;
  88. return matchesTypes.some(function (t) {
  89. return dataTransferTypes.indexOf(t) > -1;
  90. });
  91. })[0] || null;
  92. }