UNPKG

taro-hooks

Version:
89 lines (88 loc) 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var taro_1 = require("@tarojs/taro"); var core_1 = require("@taro-hooks/core"); var shared_1 = require("@taro-hooks/shared"); var useActivePromise_1 = tslib_1.__importDefault(require("../utils/useActivePromise")); function useMap(mapId, component) { var _ref = (0, core_1.useState)(), mapContext = _ref[0], setMapContext = _ref[1]; var _ref2 = (0, core_1.useState)({}), forceUpdate = _ref2[1]; (0, taro_1.useReady)(function () { setMapContext(component ? (0, taro_1.createMapContext)(mapId, component) : (0, taro_1.createMapContext)(mapId)); }); (0, core_1.useEffect)(function () { if (mapContext && shared_1.ISREACT) { forceUpdate({}); } }, [mapContext]); var getCenterAsync = (0, useActivePromise_1["default"])('getCenterLocation', mapContext); var getRegionAsync = (0, useActivePromise_1["default"])('getRegion', mapContext); var getRotateAsync = (0, useActivePromise_1["default"])('getRotate', mapContext); var getScaleAsync = (0, useActivePromise_1["default"])('getScale', mapContext); var getSkewAsync = (0, useActivePromise_1["default"])('getSkew', mapContext); var get = function get(iconPath) { var getCenterLocationOption = iconPath ? { iconPath: iconPath } : {}; return Promise.all([getCenterAsync(getCenterLocationOption), getRegionAsync(), getRotateAsync(), getScaleAsync(), getSkewAsync()]).then(function (_ref3) { var center = _ref3[0], region = _ref3[1], rotate = _ref3[2], scale = _ref3[3], skew = _ref3[4]; return { center: center, region: region, rotate: rotate, scale: scale, skew: skew }; }); }; var open = (0, useActivePromise_1["default"])('openMapApp', mapContext); var includeAsync = (0, useActivePromise_1["default"])('includePoints', mapContext); var include = function include(points, padding) { if (padding === void 0) { padding = []; } return includeAsync({ points: points, padding: padding }); }; var moveTo = (0, useActivePromise_1["default"])('moveToLocation', mapContext); var translate = (0, useActivePromise_1["default"])('translateMarker', mapContext); var addMarkersAsync = (0, useActivePromise_1["default"])('addMarkers', mapContext); var removeMarkersAsync = (0, useActivePromise_1["default"])('removeMarkers', mapContext); var toggleMarkers = function toggleMarkers(markers, clear) { if (clear === void 0) { clear = false; } if (Array.isArray(markers) && markers.every(shared_1.isNumber)) { // @ts-ignore (taro markers not safe for miniprogram, see: https://developers.weixin.qq.com/miniprogram/dev/component/map.html#marker ) return removeMarkersAsync({ markerIds: markers }); } var option = { markers: markers, clear: clear }; return addMarkersAsync(option); }; return [mapContext, { get: get, open: open, include: include, moveTo: moveTo, translate: translate, toggleMarkers: toggleMarkers }]; } exports["default"] = useMap;