zmp-react
Version:
Build full featured iOS & Android apps using ZMP & React
61 lines (50 loc) • 1.45 kB
JavaScript
;
exports.__esModule = true;
exports.useTooltip = void 0;
var _react = require("react");
var _watchProp = require("./watch-prop");
var _zmp = require("./zmp");
var useTooltip = function useTooltip(elRef, props) {
var zmpTooltip = (0, _react.useRef)(null);
var tooltip = props.tooltip,
tooltipTrigger = props.tooltipTrigger;
var onMount = function onMount() {
if (!elRef.current) return;
if (!tooltip) return;
(0, _zmp.zmpready)(function () {
zmpTooltip.current = _zmp.zmp.tooltip.create({
targetEl: elRef.current,
text: tooltip,
trigger: tooltipTrigger
});
});
};
var onDestroy = function onDestroy() {
if (zmpTooltip.current && zmpTooltip.current.destroy) {
zmpTooltip.current.destroy();
zmpTooltip.current = null;
}
};
(0, _react.useEffect)(function () {
onMount();
return onDestroy;
}, []);
(0, _watchProp.watchProp)(tooltip, function (value) {
if (!value && zmpTooltip.current) {
zmpTooltip.current.destroy();
zmpTooltip.current = null;
return;
}
if (value && !zmpTooltip.current && _zmp.zmp) {
zmpTooltip.current = _zmp.zmp.tooltip.create({
targetEl: elRef.current,
text: value,
trigger: tooltipTrigger
});
return;
}
if (!value || !zmpTooltip.current) return;
zmpTooltip.current.setText(value);
});
};
exports.useTooltip = useTooltip;