zmp-react
Version:
Build full featured iOS & Android apps using ZMP & React
179 lines (159 loc) • 6.01 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _react = require("react");
var _useIsomorphicLayoutEffect = require("../shared/use-isomorphic-layout-effect");
var _utils = require("../shared/utils");
var _watchProp = require("../shared/watch-prop");
var _zmp = require("../shared/zmp");
var PhotoBrowser = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
var _zmpPhotoBrowser = (0, _react.useRef)(null);
var _props$init = props.init,
init = _props$init === void 0 ? true : _props$init,
params = props.params,
photos = props.photos,
_props$exposition = props.exposition,
exposition = _props$exposition === void 0 ? true : _props$exposition,
_props$expositionHide = props.expositionHideCaptions,
expositionHideCaptions = _props$expositionHide === void 0 ? false : _props$expositionHide,
type = props.type,
_props$navbar = props.navbar,
navbar = _props$navbar === void 0 ? true : _props$navbar,
_props$toolbar = props.toolbar,
toolbar = _props$toolbar === void 0 ? true : _props$toolbar,
theme = props.theme,
captionsTheme = props.captionsTheme,
iconsColor = props.iconsColor,
_props$swipeToClose = props.swipeToClose,
swipeToClose = _props$swipeToClose === void 0 ? true : _props$swipeToClose,
pageBackLinkText = props.pageBackLinkText,
popupCloseLinkText = props.popupCloseLinkText,
navbarOfText = props.navbarOfText,
navbarShowCount = props.navbarShowCount,
swiper = props.swiper,
url = props.url,
_props$routableModals = props.routableModals,
routableModals = _props$routableModals === void 0 ? false : _props$routableModals,
_props$virtualSlides = props.virtualSlides,
virtualSlides = _props$virtualSlides === void 0 ? true : _props$virtualSlides,
view = props.view,
renderNavbar = props.renderNavbar,
renderToolbar = props.renderToolbar,
renderCaption = props.renderCaption,
renderObject = props.renderObject,
renderLazyPhoto = props.renderLazyPhoto,
renderPhoto = props.renderPhoto,
renderPage = props.renderPage,
renderPopup = props.renderPopup,
renderStandalone = props.renderStandalone;
var open = function open(index) {
return _zmpPhotoBrowser.current.open(index);
};
var close = function close() {
return _zmpPhotoBrowser.current.close();
};
var expositionToggle = function expositionToggle() {
return _zmpPhotoBrowser.current.expositionToggle();
};
var expositionEnable = function expositionEnable() {
return _zmpPhotoBrowser.current.expositionEnable();
};
var expositionDisable = function expositionDisable() {
return _zmpPhotoBrowser.current.expositionDisable();
};
(0, _react.useImperativeHandle)(ref, function () {
return {
zmpPhotoBrowser: function zmpPhotoBrowser() {
return _zmpPhotoBrowser.current;
},
open: open,
close: close,
expositionToggle: expositionToggle,
expositionEnable: expositionEnable,
expositionDisable: expositionDisable
};
});
(0, _watchProp.watchProp)(photos, function (newValue) {
var pb = _zmpPhotoBrowser.current;
if (!pb) return;
pb.params.photos = newValue;
if (pb.opened && pb.swiper) {
pb.swiper.update();
}
});
var onMount = function onMount() {
if (!init) return;
(0, _zmp.zmpready)(function () {
var paramsComputed;
if (typeof params !== 'undefined') {
paramsComputed = params;
} else {
paramsComputed = {
photos: photos,
exposition: exposition,
expositionHideCaptions: expositionHideCaptions,
type: type,
navbar: navbar,
toolbar: toolbar,
theme: theme,
captionsTheme: captionsTheme,
iconsColor: iconsColor,
swipeToClose: swipeToClose,
pageBackLinkText: pageBackLinkText,
popupCloseLinkText: popupCloseLinkText,
navbarOfText: navbarOfText,
navbarShowCount: navbarShowCount,
swiper: swiper,
url: url,
routableModals: routableModals,
virtualSlides: virtualSlides,
view: view,
renderNavbar: renderNavbar,
renderToolbar: renderToolbar,
renderCaption: renderCaption,
renderObject: renderObject,
renderLazyPhoto: renderLazyPhoto,
renderPhoto: renderPhoto,
renderPage: renderPage,
renderPopup: renderPopup,
renderStandalone: renderStandalone
};
}
Object.keys(paramsComputed).forEach(function (param) {
if (typeof paramsComputed[param] === 'undefined' || paramsComputed[param] === '') delete paramsComputed[param];
});
paramsComputed = (0, _utils.extend)({}, paramsComputed, {
on: {
open: function open() {
(0, _utils.emit)(props, 'photoBrowserOpen');
},
close: function close() {
(0, _utils.emit)(props, 'photoBrowserClose');
},
opened: function opened() {
(0, _utils.emit)(props, 'photoBrowserOpened');
},
closed: function closed() {
(0, _utils.emit)(props, 'photoBrowserClosed');
},
swipeToClose: function swipeToClose() {
(0, _utils.emit)(props, 'photoBrowserSwipeToClose');
}
}
});
_zmpPhotoBrowser.current = _zmp.zmp.photoBrowser.create(paramsComputed);
});
};
var onDestroy = function onDestroy() {
if (_zmpPhotoBrowser.current && _zmpPhotoBrowser.current.destroy) _zmpPhotoBrowser.current.destroy();
_zmpPhotoBrowser.current = null;
};
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
onMount();
return onDestroy;
}, []);
return null;
});
PhotoBrowser.displayName = 'zmp-photo-browser';
var _default = PhotoBrowser;
exports.default = _default;