mapwize-ui-react-native
Version:
Fully featured and ready to use UI to add Mapwize Indoor Maps and Navigation in your React Native app.
120 lines (109 loc) • 4.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const FloorController = ({
style,
reduxState: {
floors,
selectedFloor,
loadingFloor,
tooltipMessage,
mainColor
},
disabled,
onFloorSelected
}) => {
const [contentHeight, setContentHeight] = (0, _react.useState)(250);
const [scrollheight, setScrollheight] = (0, _react.useState)(250);
const scrollView = (0, _react.useRef)();
(0, _react.useEffect)(() => {
if (contentHeight > scrollheight) {
var _scrollView$current, _scrollView$current$s;
const ratio = (selectedFloor + 1) / floors.length;
const scrollTo = contentHeight - contentHeight * ratio;
scrollView === null || scrollView === void 0 ? void 0 : (_scrollView$current = scrollView.current) === null || _scrollView$current === void 0 ? void 0 : (_scrollView$current$s = _scrollView$current.scrollTo) === null || _scrollView$current$s === void 0 ? void 0 : _scrollView$current$s.call(_scrollView$current, {
y: scrollTo
});
}
}, [scrollheight, contentHeight, selectedFloor, floors]);
if (disabled) {
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
}
const reversedFloors = [...floors].reverse();
return /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
ref: scrollView,
style: [style, {}],
contentContainerStyle: styles.container,
showsVerticalScrollIndicator: false,
onLayout: evt => {
const {
height
} = evt.nativeEvent.layout;
setScrollheight(height);
}
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
onLayout: evt => {
const {
height
} = evt.nativeEvent.layout;
setContentHeight(height);
}
}, reversedFloors && reversedFloors.map(floor => /*#__PURE__*/_react.default.createElement(_reactNative.TouchableHighlight, {
style: [styles.floorItem, floor.number === selectedFloor && {
backgroundColor: mainColor
}],
underlayColor: mainColor,
activeOpacity: 0.3,
key: floor.number,
onPress: () => floor.number !== undefined && onFloorSelected(floor.number)
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
style: [styles.floorText, floor.number === selectedFloor && styles.floorTextSelected]
}, floor.title)))));
};
const styles = _reactNative.StyleSheet.create({
floorController: {},
floorItem: {
marginTop: 4,
borderRadius: 20,
backgroundColor: 'white',
alignItems: 'center',
justifyContent: 'center',
height: 40,
width: 40,
shadowOffset: {
width: 0,
height: 2
},
shadowOpacity: 0.2,
shadowRadius: 0,
elevation: 2
},
container: {
padding: 8,
flexGrow: 1,
flexDirection: 'column',
justifyContent: 'flex-end'
},
floorItemSelected: {
backgroundColor: '#c51596'
},
floorText: {
padding: 0,
margin: 0,
fontSize: 16,
color: 'black',
textAlign: 'center'
},
floorTextSelected: {
color: 'white'
}
});
var _default = FloorController;
exports.default = _default;
//# sourceMappingURL=floorcontroller.js.map