MCPcopy Create free account
hub / github.com/microsoft/SandDance / processPickInfo

Function processPickInfo

docs/tests/v2/es6/js/sanddance.js:45644–45748  ·  view source on GitHub ↗
(_ref6)

Source from the content-addressed store, hash-verified

45642
45643
45644function processPickInfo(_ref6) {
45645 var pickInfo = _ref6.pickInfo,
45646 lastPickedInfo = _ref6.lastPickedInfo,
45647 mode = _ref6.mode,
45648 layers = _ref6.layers,
45649 viewports = _ref6.viewports,
45650 x = _ref6.x,
45651 y = _ref6.y,
45652 deviceX = _ref6.deviceX,
45653 deviceY = _ref6.deviceY,
45654 pixelRatio = _ref6.pixelRatio;
45655 var pickedColor = pickInfo.pickedColor,
45656 pickedLayer = pickInfo.pickedLayer,
45657 pickedObjectIndex = pickInfo.pickedObjectIndex;
45658 var affectedLayers = pickedLayer ? [pickedLayer] : [];
45659
45660 if (mode === 'hover') {
45661 // only invoke onHover events if picked object has changed
45662 var lastPickedObjectIndex = lastPickedInfo.index;
45663 var lastPickedLayerId = lastPickedInfo.layerId;
45664 var pickedLayerId = pickedLayer && pickedLayer.props.id; // proceed only if picked object changed
45665
45666 if (pickedLayerId !== lastPickedLayerId || pickedObjectIndex !== lastPickedObjectIndex) {
45667 if (pickedLayerId !== lastPickedLayerId) {
45668 // We cannot store a ref to lastPickedLayer in the context because
45669 // the state of an outdated layer is no longer valid
45670 // and the props may have changed
45671 var lastPickedLayer = layers.find(function (layer) {
45672 return layer.props.id === lastPickedLayerId;
45673 });
45674
45675 if (lastPickedLayer) {
45676 // Let leave event fire before enter event
45677 affectedLayers.unshift(lastPickedLayer);
45678 }
45679 } // Update layer manager context
45680
45681
45682 lastPickedInfo.layerId = pickedLayerId;
45683 lastPickedInfo.index = pickedObjectIndex;
45684 lastPickedInfo.info = null;
45685 }
45686 }
45687
45688 var viewport = getViewportFromCoordinates({
45689 viewports: viewports
45690 }); // TODO - add coords
45691
45692 var coordinate = viewport && viewport.unproject([x, y]);
45693 var baseInfo = {
45694 color: null,
45695 layer: null,
45696 index: -1,
45697 picked: false,
45698 x: x,
45699 y: y,
45700 pixel: [x, y],
45701 coordinate: coordinate,

Callers 1

pickObjectFunction · 0.70

Calls 6

getLayerPickingInfoFunction · 0.70
findMethod · 0.45
forEachMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected