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.
128 lines
4.0 KiB
128 lines
4.0 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
var _redux = require("redux");
|
|
|
|
var _reducers = _interopRequireDefault(require("./reducers"));
|
|
|
|
var _dragDrop = _interopRequireDefault(require("./actions/dragDrop"));
|
|
|
|
var _DragDropMonitorImpl = _interopRequireDefault(require("./DragDropMonitorImpl"));
|
|
|
|
var _HandlerRegistryImpl = _interopRequireDefault(require("./HandlerRegistryImpl"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } }
|
|
|
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
|
|
function makeStoreInstance(debugMode) {
|
|
// TODO: if we ever make a react-native version of this,
|
|
// we'll need to consider how to pull off dev-tooling
|
|
var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;
|
|
return (0, _redux.createStore)(_reducers.default, debugMode && reduxDevTools && reduxDevTools({
|
|
name: 'dnd-core',
|
|
instanceId: 'dnd-core'
|
|
}));
|
|
}
|
|
|
|
var DragDropManagerImpl =
|
|
/*#__PURE__*/
|
|
function () {
|
|
function DragDropManagerImpl() {
|
|
var _this = this;
|
|
|
|
var debugMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
|
|
_classCallCheck(this, DragDropManagerImpl);
|
|
|
|
this.isSetUp = false;
|
|
|
|
this.handleRefCountChange = function () {
|
|
var shouldSetUp = _this.store.getState().refCount > 0;
|
|
|
|
if (_this.backend) {
|
|
if (shouldSetUp && !_this.isSetUp) {
|
|
_this.backend.setup();
|
|
|
|
_this.isSetUp = true;
|
|
} else if (!shouldSetUp && _this.isSetUp) {
|
|
_this.backend.teardown();
|
|
|
|
_this.isSetUp = false;
|
|
}
|
|
}
|
|
};
|
|
|
|
var store = makeStoreInstance(debugMode);
|
|
this.store = store;
|
|
this.monitor = new _DragDropMonitorImpl.default(store, new _HandlerRegistryImpl.default(store));
|
|
store.subscribe(this.handleRefCountChange);
|
|
}
|
|
|
|
_createClass(DragDropManagerImpl, [{
|
|
key: "receiveBackend",
|
|
value: function receiveBackend(backend) {
|
|
this.backend = backend;
|
|
}
|
|
}, {
|
|
key: "getMonitor",
|
|
value: function getMonitor() {
|
|
return this.monitor;
|
|
}
|
|
}, {
|
|
key: "getBackend",
|
|
value: function getBackend() {
|
|
return this.backend;
|
|
}
|
|
}, {
|
|
key: "getRegistry",
|
|
value: function getRegistry() {
|
|
return this.monitor.registry;
|
|
}
|
|
}, {
|
|
key: "getActions",
|
|
value: function getActions() {
|
|
/* eslint-disable-next-line @typescript-eslint/no-this-alias */
|
|
var manager = this;
|
|
var dispatch = this.store.dispatch;
|
|
|
|
function bindActionCreator(actionCreator) {
|
|
return function () {
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
args[_key] = arguments[_key];
|
|
}
|
|
|
|
var action = actionCreator.apply(manager, args);
|
|
|
|
if (typeof action !== 'undefined') {
|
|
dispatch(action);
|
|
}
|
|
};
|
|
}
|
|
|
|
var actions = (0, _dragDrop.default)(this);
|
|
return Object.keys(actions).reduce(function (boundActions, key) {
|
|
var action = actions[key];
|
|
boundActions[key] = bindActionCreator(action);
|
|
return boundActions;
|
|
}, {});
|
|
}
|
|
}, {
|
|
key: "dispatch",
|
|
value: function dispatch(action) {
|
|
this.store.dispatch(action);
|
|
}
|
|
}]);
|
|
|
|
return DragDropManagerImpl;
|
|
}();
|
|
|
|
exports.default = DragDropManagerImpl; |