kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
80 lines (78 loc) • 10.9 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _reactRedux = require("react-redux");
var _actions = require("@kepler.gl/actions");
var _dndLayerItems = require("../common/dnd-layer-items");
var _reducers = require("@kepler.gl/reducers");
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
var useDndLayers = function useDndLayers(layers, layerOrder) {
var dispatch = (0, _reactRedux.useDispatch)();
var _useState = (0, _react.useState)(),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
activeLayer = _useState2[0],
setActiveLayer = _useState2[1];
var onDragStart = (0, _react.useCallback)(function (event) {
var active = event.active;
var newActiveLayer = layers.find(function (layer) {
return layer.id === active.id;
});
if (newActiveLayer) {
setActiveLayer(newActiveLayer);
if (newActiveLayer !== null && newActiveLayer !== void 0 && newActiveLayer.config.isConfigActive) {
dispatch((0, _actions.layerConfigChange)(newActiveLayer, {
isConfigActive: false
}));
}
}
}, [dispatch, layers]);
var onDragEnd = (0, _react.useCallback)(function (event) {
var _over$data;
var active = event.active,
over = event.over;
var activeLayerId = active.id;
var overType = over === null || over === void 0 || (_over$data = over.data) === null || _over$data === void 0 || (_over$data = _over$data.current) === null || _over$data === void 0 ? void 0 : _over$data.type;
if (!overType) {
setActiveLayer(undefined);
return;
}
switch (overType) {
// moving layers into maps
case _dndLayerItems.DROPPABLE_MAP_CONTAINER_TYPE:
{
var _over$data$current$in, _over$data$current;
var mapIndex = (_over$data$current$in = (_over$data$current = over.data.current) === null || _over$data$current === void 0 ? void 0 : _over$data$current.index) !== null && _over$data$current$in !== void 0 ? _over$data$current$in : 0;
dispatch((0, _actions.toggleLayerForMap)(mapIndex, activeLayerId));
break;
}
// swaping layers
case _dndLayerItems.SORTABLE_LAYER_TYPE:
{
var newLayerOrder = (0, _reducers.reorderLayerOrder)(layerOrder, activeLayerId, over.id);
dispatch((0, _actions.reorderLayer)(newLayerOrder));
break;
}
// moving layers within side panel
case _dndLayerItems.SORTABLE_SIDE_PANEL_TYPE:
// move layer to the end of the list
dispatch((0, _actions.reorderLayer)((0, _reducers.reorderLayerOrder)(layerOrder, activeLayerId, layerOrder[layerOrder.length - 1])));
break;
default:
break;
}
setActiveLayer(undefined);
}, [dispatch, layerOrder]);
return {
activeLayer: activeLayer,
onDragStart: onDragStart,
onDragEnd: onDragEnd
};
};
var _default = exports["default"] = useDndLayers;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlYWN0UmVkdXgiLCJfYWN0aW9ucyIsIl9kbmRMYXllckl0ZW1zIiwiX3JlZHVjZXJzIiwidXNlRG5kTGF5ZXJzIiwibGF5ZXJzIiwibGF5ZXJPcmRlciIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJhY3RpdmVMYXllciIsInNldEFjdGl2ZUxheWVyIiwib25EcmFnU3RhcnQiLCJ1c2VDYWxsYmFjayIsImV2ZW50IiwiYWN0aXZlIiwibmV3QWN0aXZlTGF5ZXIiLCJmaW5kIiwibGF5ZXIiLCJpZCIsImNvbmZpZyIsImlzQ29uZmlnQWN0aXZlIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJvbkRyYWdFbmQiLCJfb3ZlciRkYXRhIiwib3ZlciIsImFjdGl2ZUxheWVySWQiLCJvdmVyVHlwZSIsImRhdGEiLCJjdXJyZW50IiwidHlwZSIsInVuZGVmaW5lZCIsIkRST1BQQUJMRV9NQVBfQ09OVEFJTkVSX1RZUEUiLCJfb3ZlciRkYXRhJGN1cnJlbnQkaW4iLCJfb3ZlciRkYXRhJGN1cnJlbnQiLCJtYXBJbmRleCIsImluZGV4IiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJTT1JUQUJMRV9MQVlFUl9UWVBFIiwibmV3TGF5ZXJPcmRlciIsInJlb3JkZXJMYXllck9yZGVyIiwicmVvcmRlckxheWVyIiwiU09SVEFCTEVfU0lERV9QQU5FTF9UWVBFIiwibGVuZ3RoIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZS1kbmQtbGF5ZXJzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VEaXNwYXRjaH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHtEcmFnRW5kRXZlbnQsIERyYWdTdGFydEV2ZW50fSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCB7bGF5ZXJDb25maWdDaGFuZ2UsIHJlb3JkZXJMYXllciwgdG9nZ2xlTGF5ZXJGb3JNYXB9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBEUk9QUEFCTEVfTUFQX0NPTlRBSU5FUl9UWVBFLFxuICBTT1JUQUJMRV9MQVlFUl9UWVBFLFxuICBTT1JUQUJMRV9TSURFX1BBTkVMX1RZUEVcbn0gZnJvbSAnLi4vY29tbW9uL2RuZC1sYXllci1pdGVtcyc7XG5pbXBvcnQge3Jlb3JkZXJMYXllck9yZGVyfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcblxudHlwZSBEbmRFZmZlY3RzSG9vayA9IHtcbiAgYWN0aXZlTGF5ZXI6IExheWVyIHwgdW5kZWZpbmVkO1xuICBvbkRyYWdTdGFydDogKGV2ZW50OiBEcmFnU3RhcnRFdmVudCkgPT4gdm9pZDtcbiAgb25EcmFnRW5kOiAoZXZlbnQ6IERyYWdFbmRFdmVudCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IHVzZURuZExheWVyczogKGxheWVyczogTGF5ZXJbXSwgbGF5ZXJPcmRlcjogc3RyaW5nW10pID0+IERuZEVmZmVjdHNIb29rID0gKFxuICBsYXllcnMsXG4gIGxheWVyT3JkZXJcbikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgW2FjdGl2ZUxheWVyLCBzZXRBY3RpdmVMYXllcl06IFtcbiAgICBhY3RpdmVFZmZlY3Q6IExheWVyIHwgdW5kZWZpbmVkLFxuICAgIHNldEFjdGl2ZUVmZmVjdDogKGVmZmVjdDogTGF5ZXIgfCB1bmRlZmluZWQpID0+IHZvaWRcbiAgXSA9IHVzZVN0YXRlKCk7XG5cbiAgY29uc3Qgb25EcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBjb25zdCB7YWN0aXZlfSA9IGV2ZW50O1xuICAgICAgY29uc3QgbmV3QWN0aXZlTGF5ZXIgPSBsYXllcnMuZmluZChsYXllciA9PiBsYXllci5pZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgIGlmIChuZXdBY3RpdmVMYXllcikge1xuICAgICAgICBzZXRBY3RpdmVMYXllcihuZXdBY3RpdmVMYXllcik7XG4gICAgICAgIGlmIChuZXdBY3RpdmVMYXllcj8uY29uZmlnLmlzQ29uZmlnQWN0aXZlKSB7XG4gICAgICAgICAgZGlzcGF0Y2gobGF5ZXJDb25maWdDaGFuZ2UobmV3QWN0aXZlTGF5ZXIsIHtpc0NvbmZpZ0FjdGl2ZTogZmFsc2V9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtkaXNwYXRjaCwgbGF5ZXJzXVxuICApO1xuXG4gIGNvbnN0IG9uRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHthY3RpdmUsIG92ZXJ9ID0gZXZlbnQ7XG5cbiAgICAgIGNvbnN0IHtpZDogYWN0aXZlTGF5ZXJJZH0gPSBhY3RpdmU7XG4gICAgICBjb25zdCBvdmVyVHlwZSA9IG92ZXI/LmRhdGE/LmN1cnJlbnQ/LnR5cGU7XG5cbiAgICAgIGlmICghb3ZlclR5cGUpIHtcbiAgICAgICAgc2V0QWN0aXZlTGF5ZXIodW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKG92ZXJUeXBlKSB7XG4gICAgICAgIC8vIG1vdmluZyBsYXllcnMgaW50byBtYXBzXG4gICAgICAgIGNhc2UgRFJPUFBBQkxFX01BUF9DT05UQUlORVJfVFlQRToge1xuICAgICAgICAgIGNvbnN0IG1hcEluZGV4ID0gb3Zlci5kYXRhLmN1cnJlbnQ/LmluZGV4ID8/IDA7XG4gICAgICAgICAgZGlzcGF0Y2godG9nZ2xlTGF5ZXJGb3JNYXAobWFwSW5kZXgsIGFjdGl2ZUxheWVySWQpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBzd2FwaW5nIGxheWVyc1xuICAgICAgICBjYXNlIFNPUlRBQkxFX0xBWUVSX1RZUEU6IHtcbiAgICAgICAgICBjb25zdCBuZXdMYXllck9yZGVyID0gcmVvcmRlckxheWVyT3JkZXIobGF5ZXJPcmRlciwgYWN0aXZlTGF5ZXJJZCwgb3Zlci5pZCk7XG4gICAgICAgICAgZGlzcGF0Y2gocmVvcmRlckxheWVyKG5ld0xheWVyT3JkZXIpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyAgbW92aW5nIGxheWVycyB3aXRoaW4gc2lkZSBwYW5lbFxuICAgICAgICBjYXNlIFNPUlRBQkxFX1NJREVfUEFORUxfVFlQRTpcbiAgICAgICAgICAvLyBtb3ZlIGxheWVyIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAgICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICAgIHJlb3JkZXJMYXllcihcbiAgICAgICAgICAgICAgcmVvcmRlckxheWVyT3JkZXIobGF5ZXJPcmRlciwgYWN0aXZlTGF5ZXJJZCwgbGF5ZXJPcmRlcltsYXllck9yZGVyLmxlbmd0aCAtIDFdKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHNldEFjdGl2ZUxheWVyKHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBbZGlzcGF0Y2gsIGxheWVyT3JkZXJdXG4gICk7XG5cbiAgcmV0dXJuIHthY3RpdmVMYXllciwgb25EcmFnU3RhcnQsIG9uRHJhZ0VuZH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VEbmRMYXllcnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFB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