UNPKG

@uiw/react-baidu-map-map

Version:
126 lines (124 loc) 3.79 kB
"use strict"; 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 }); })] }); });