UNPKG

dnd-core

Version:

Drag and drop sans the GUI

49 lines 1.97 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var xor_1 = __importDefault(require("lodash/xor")); var dragDrop_1 = require("../actions/dragDrop"); var registry_1 = require("../actions/registry"); var equality_1 = require("../utils/equality"); var dirtiness_1 = require("../utils/dirtiness"); function dirtyHandlerIds(state, action) { if (state === void 0) { state = dirtiness_1.NONE; } switch (action.type) { case dragDrop_1.HOVER: break; case registry_1.ADD_SOURCE: case registry_1.ADD_TARGET: case registry_1.REMOVE_TARGET: case registry_1.REMOVE_SOURCE: return dirtiness_1.NONE; case dragDrop_1.BEGIN_DRAG: case dragDrop_1.PUBLISH_DRAG_SOURCE: case dragDrop_1.END_DRAG: case dragDrop_1.DROP: default: return dirtiness_1.ALL; } var _a = action.payload, _b = _a.targetIds, targetIds = _b === void 0 ? [] : _b, _c = _a.prevTargetIds, prevTargetIds = _c === void 0 ? [] : _c; var result = xor_1.default(targetIds, prevTargetIds); var didChange = result.length > 0 || !equality_1.areArraysEqual(targetIds, prevTargetIds); if (!didChange) { return dirtiness_1.NONE; } // Check the target ids at the innermost position. If they are valid, add them // to the result var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]; var innermostTargetId = targetIds[targetIds.length - 1]; if (prevInnermostTargetId !== innermostTargetId) { if (prevInnermostTargetId) { result.push(prevInnermostTargetId); } if (innermostTargetId) { result.push(innermostTargetId); } } return result; } exports.default = dirtyHandlerIds; //# sourceMappingURL=dirtyHandlerIds.js.map