@uiw/react-baidu-map-map
Version:
Baidu Map Components for React.
126 lines (124 loc) • 3.79 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exportNames = {
Provider: true
};
exports.default = exports.Provider = void 0;
var _react = _interopRequireWildcard(require("react"));
var _useMap = require("./useMap");
Object.keys(_useMap).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _useMap[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _useMap[key];
}
});
});
var _context = require("./context");
Object.keys(_context).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _context[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function () {
return _context[key];
}
});
});
var _jsxRuntime = require("react/jsx-runtime");
/// <reference types="@uiw/react-baidu-map-types" />
const Provider = props => {
const [state, dispatch] = (0, _react.useReducer)(_context.reducer, _context.initialState);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.Context.Provider, {
value: {
state,
dispatch
},
children: props.children
});
};
exports.Provider = Provider;
var _default = exports.default = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
let {
className,
style,
children,
...props
} = _ref;
const [state, dispatch] = (0, _react.useReducer)(_context.reducer, _context.initialState);
window.BMap = window.BMap || window.BMapGL;
const elmRef = (0, _react.useRef)(null);
const {
setContainer,
container,
setCenter,
setAutoLocalCity,
map
} = (0, _useMap.useMap)({
container: elmRef.current,
...props
});
// eslint-disable-next-line react-hooks/exhaustive-deps
(0, _react.useEffect)(() => setContainer(elmRef.current), [elmRef.current]);
// eslint-disable-next-line react-hooks/exhaustive-deps
(0, _react.useMemo)(() => props.center && setCenter(props.center), [props.center]);
// eslint-disable-next-line react-hooks/exhaustive-deps
(0, _react.useEffect)(() => setAutoLocalCity(props.autoLocalCity), [props.autoLocalCity]);
// eslint-disable-next-line react-hooks/exhaustive-deps
(0, _react.useImperativeHandle)(ref, () => ({
...props,
map,
BMap,
container: elmRef.current
}), [map]);
const chields = typeof children === 'function' ? [children] : _react.default.Children.toArray(children);
(0, _react.useEffect)(() => {
if (map) {
dispatch({
map,
container: elmRef.current,
BMap
});
}
}, [map]);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_context.Context.Provider, {
value: {
state,
dispatch
},
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
ref: elmRef,
className: className,
style: {
fontSize: 1,
height: '100%',
...style
}
}), BMap && map && typeof children === 'function' && children({
BMap,
map,
container
}), BMap && map && chields.map((child, key) => {
if (! /*#__PURE__*/_react.default.isValidElement(child)) return null;
if (child.type && typeof child.type === 'string') {
return /*#__PURE__*/_react.default.cloneElement(child, {
key
});
}
return /*#__PURE__*/_react.default.cloneElement(child, {
...child.props,
BMap,
map,
container,
key
});
})]
});
});