diff --git a/packages/uni-api/src/index.ts b/packages/uni-api/src/index.ts index 63cb40ef8ccaa6284a06fe9277531bf923d2feb4..7f80af1d6fa5e6337c54aafd3e5ec3b4a9844c2b 100644 --- a/packages/uni-api/src/index.ts +++ b/packages/uni-api/src/index.ts @@ -3,6 +3,7 @@ export * from './service/base/upx2px' export * from './service/base/interceptor' export * from './service/context/createVideoContext' +export * from './service/context/createMapContext' export * from './service/ui/createIntersectionObserver' export * from './service/ui/createSelectorQuery' diff --git a/packages/uni-api/src/service/context/createMapContext.ts b/packages/uni-api/src/service/context/createMapContext.ts new file mode 100644 index 0000000000000000000000000000000000000000..45f5e7607194cdb2931227c0c8eae801cd63c75c --- /dev/null +++ b/packages/uni-api/src/service/context/createMapContext.ts @@ -0,0 +1,58 @@ +import { ComponentPublicInstance } from 'vue' +import { getCurrentPageVm } from '@dcloudio/uni-core' +import { operateMap } from '@dcloudio/uni-platform' +import { defineSyncApi } from '../../helpers/api' +import { + API_CREATE_MAP_CONTEXT, + API_TYPE_CREATE_MAP_CONTEXT, + CreateMapContextProtocol, +} from '../../protocols/context/context' + +class MapContext implements UniApp.MapContext { + private id: string + private vm: ComponentPublicInstance + constructor(id: string, vm: ComponentPublicInstance) { + this.id = id + this.vm = vm + } + getCenterLocation(options: any) { + operateMap(this.id, this.vm, 'getCenterLocation', options) + } + moveToLocation() { + operateMap(this.id, this.vm, 'moveToLocation') + } + getScale(options: any) { + operateMap(this.id, this.vm, 'getScale', options) + } + getRegion(options: any) { + operateMap(this.id, this.vm, 'getRegion', options) + } + includePoints(options: any) { + operateMap(this.id, this.vm, 'includePoints', options) + } + translateMarker(options: any) { + operateMap(this.id, this.vm, 'translateMarker', options) + } + addCustomLayer() {} + removeCustomLayer() {} + addGroundOverlay() {} + removeGroundOverlay() {} + updateGroundOverlay() {} + initMarkerCluster() {} + addMarkers() {} + removeMarkers() {} + moveAlong() {} + openMapAp() {} + $getAppMap() {} +} + +export const createMapContext = defineSyncApi( + API_CREATE_MAP_CONTEXT, + (id, context) => { + if (context) { + return new MapContext(id, context) + } + return new MapContext(id, getCurrentPageVm()!) + }, + CreateMapContextProtocol +) diff --git a/packages/uni-h5/dist/uni-h5.cjs.js b/packages/uni-h5/dist/uni-h5.cjs.js index 17c390ce002399e77851f83245e863cbf98abc64..1b40f7c6763584386b4c9834a64f6ae0eaff91fe 100644 --- a/packages/uni-h5/dist/uni-h5.cjs.js +++ b/packages/uni-h5/dist/uni-h5.cjs.js @@ -1249,7 +1249,7 @@ function validateProp(name, value, prop, isAbsent) { if (!shared.isPlainObject(prop)) { prop = {type: prop}; } - const {type, required, validator} = prop; + const {type, required, validator: validator2} = prop; if (required && isAbsent) { return 'Missing required args: "' + name + '"'; } @@ -1269,8 +1269,8 @@ function validateProp(name, value, prop, isAbsent) { return getInvalidTypeMessage(name, value, expectedTypes); } } - if (validator) { - return validator(value); + if (validator2) { + return validator2(value); } } const isSimpleType = /* @__PURE__ */ shared.makeMap("String,Number,Boolean,Function,Symbol"); @@ -1680,6 +1680,13 @@ function operateVideoPlayer(videoId, vm, type, data) { data }, pageId); } +function operateMap(id2, vm, type, data) { + const pageId = vm.$root.$page.id; + UniServiceJSBridge.publishHandler("map." + id2, { + type, + data + }, pageId); +} function addIntersectionObserver({reqId, component, options, callback: callback2}, _pageId) { const $el = findElem(component); ($el.__io || ($el.__io = {}))[reqId] = requestComponentObserver($el, options, callback2); @@ -1814,7 +1821,16 @@ const promiseInterceptor = { }); } }; +const validator = [ + { + name: "id", + type: String, + required: true + } +]; const API_CREATE_VIDEO_CONTEXT = "createVideoContext"; +const API_CREATE_MAP_CONTEXT = "createMapContext"; +const CreateMapContextProtocol = validator; const API_CREATE_INNER_AUDIO_CONTEXT = "createInnerAudioContext"; const RATES = [0.5, 0.8, 1, 1.25, 1.5, 2]; class VideoContext { @@ -1866,6 +1882,58 @@ const createVideoContext = defineSyncApi(API_CREATE_VIDEO_CONTEXT, (id2, context } return new VideoContext(id2, getCurrentPageVm()); }); +class MapContext { + constructor(id2, vm) { + this.id = id2; + this.vm = vm; + } + getCenterLocation(options) { + operateMap(this.id, this.vm, "getCenterLocation", options); + } + moveToLocation() { + operateMap(this.id, this.vm, "moveToLocation"); + } + getScale(options) { + operateMap(this.id, this.vm, "getScale", options); + } + getRegion(options) { + operateMap(this.id, this.vm, "getRegion", options); + } + includePoints(options) { + operateMap(this.id, this.vm, "includePoints", options); + } + translateMarker(options) { + operateMap(this.id, this.vm, "translateMarker", options); + } + addCustomLayer() { + } + removeCustomLayer() { + } + addGroundOverlay() { + } + removeGroundOverlay() { + } + updateGroundOverlay() { + } + initMarkerCluster() { + } + addMarkers() { + } + removeMarkers() { + } + moveAlong() { + } + openMapAp() { + } + $getAppMap() { + } +} +const createMapContext = defineSyncApi(API_CREATE_MAP_CONTEXT, (id2, context) => { + if (context) { + return new MapContext(id2, context); + } + return new MapContext(id2, getCurrentPageVm()); +}, CreateMapContextProtocol); const defaultOptions = { thresholds: [0], initialRatio: 0, @@ -13916,6 +13984,7 @@ var api = /* @__PURE__ */ Object.freeze({ createIntersectionObserver, createSelectorQuery, createVideoContext, + createMapContext, onTabBarMidButtonTap, cssVar, cssEnv, @@ -15554,6 +15623,7 @@ exports.closeSocket = closeSocket; exports.connectSocket = connectSocket; exports.createInnerAudioContext = createInnerAudioContext; exports.createIntersectionObserver = createIntersectionObserver; +exports.createMapContext = createMapContext; exports.createSelectorQuery = createSelectorQuery; exports.createVideoContext = createVideoContext; exports.cssBackdropFilter = cssBackdropFilter; diff --git a/packages/uni-h5/dist/uni-h5.es.js b/packages/uni-h5/dist/uni-h5.es.js index dbe0ec6d197c43e0130ac825547f06680b75e85e..d3cbd0a6eac46e7fb81f4687546a05cffe1e5d91 100644 --- a/packages/uni-h5/dist/uni-h5.es.js +++ b/packages/uni-h5/dist/uni-h5.es.js @@ -1246,7 +1246,7 @@ function validateProp(name, value, prop, isAbsent) { if (!isPlainObject(prop)) { prop = {type: prop}; } - const {type, required, validator} = prop; + const {type, required, validator: validator2} = prop; if (required && isAbsent) { return 'Missing required args: "' + name + '"'; } @@ -1266,8 +1266,8 @@ function validateProp(name, value, prop, isAbsent) { return getInvalidTypeMessage(name, value, expectedTypes); } } - if (validator) { - return validator(value); + if (validator2) { + return validator2(value); } } const isSimpleType = /* @__PURE__ */ makeMap$1("String,Number,Boolean,Function,Symbol"); @@ -1677,6 +1677,13 @@ function operateVideoPlayer(videoId, vm, type, data) { data }, pageId); } +function operateMap(id2, vm, type, data) { + const pageId = vm.$root.$page.id; + UniServiceJSBridge.publishHandler("map." + id2, { + type, + data + }, pageId); +} function addIntersectionObserver({reqId, component, options, callback: callback2}, _pageId) { const $el = findElem(component); ($el.__io || ($el.__io = {}))[reqId] = requestComponentObserver($el, options, callback2); @@ -1811,7 +1818,16 @@ const promiseInterceptor = { }); } }; +const validator = [ + { + name: "id", + type: String, + required: true + } +]; const API_CREATE_VIDEO_CONTEXT = "createVideoContext"; +const API_CREATE_MAP_CONTEXT = "createMapContext"; +const CreateMapContextProtocol = validator; const API_CREATE_INNER_AUDIO_CONTEXT = "createInnerAudioContext"; const RATES = [0.5, 0.8, 1, 1.25, 1.5, 2]; class VideoContext { @@ -1863,6 +1879,58 @@ const createVideoContext = defineSyncApi(API_CREATE_VIDEO_CONTEXT, (id2, context } return new VideoContext(id2, getCurrentPageVm()); }); +class MapContext { + constructor(id2, vm) { + this.id = id2; + this.vm = vm; + } + getCenterLocation(options) { + operateMap(this.id, this.vm, "getCenterLocation", options); + } + moveToLocation() { + operateMap(this.id, this.vm, "moveToLocation"); + } + getScale(options) { + operateMap(this.id, this.vm, "getScale", options); + } + getRegion(options) { + operateMap(this.id, this.vm, "getRegion", options); + } + includePoints(options) { + operateMap(this.id, this.vm, "includePoints", options); + } + translateMarker(options) { + operateMap(this.id, this.vm, "translateMarker", options); + } + addCustomLayer() { + } + removeCustomLayer() { + } + addGroundOverlay() { + } + removeGroundOverlay() { + } + updateGroundOverlay() { + } + initMarkerCluster() { + } + addMarkers() { + } + removeMarkers() { + } + moveAlong() { + } + openMapAp() { + } + $getAppMap() { + } +} +const createMapContext = defineSyncApi(API_CREATE_MAP_CONTEXT, (id2, context) => { + if (context) { + return new MapContext(id2, context); + } + return new MapContext(id2, getCurrentPageVm()); +}, CreateMapContextProtocol); const defaultOptions = { thresholds: [0], initialRatio: 0, @@ -13913,6 +13981,7 @@ var api = /* @__PURE__ */ Object.freeze({ createIntersectionObserver, createSelectorQuery, createVideoContext, + createMapContext, onTabBarMidButtonTap, cssVar, cssEnv, @@ -15504,4 +15573,4 @@ var index = /* @__PURE__ */ defineComponent({ return openBlock(), createBlock("div", clazz, [loadingVNode]); } }); -export {index$1 as AsyncErrorComponent, index as AsyncLoadingComponent, _sfc_main$7 as Audio, index$k as Button, _sfc_main$6 as Canvas, index$h as Checkbox, index$j as CheckboxGroup, index$g as Editor, index$l as Form, index$f as Icon, index$e as Image, Input, index$i as Label, LayoutComponent, index$3 as Map, _sfc_main$5 as MovableView, _sfc_main$4 as Navigator, index$2 as PageComponent, index$d as Progress, index$b as Radio, index$c as RadioGroup, ResizeSensor, _sfc_main$3 as RichText, _sfc_main$2 as ScrollView, index$a as Slider, _sfc_main$1 as SwiperItem, index$9 as Switch, index$8 as Text, index$7 as Textarea, UniServiceJSBridge$1 as UniServiceJSBridge, UniViewJSBridge$1 as UniViewJSBridge, index$5 as Video, index$6 as View, index$4 as WebView, addInterceptor, arrayBufferToBase64, base64ToArrayBuffer, canIUse, chooseFile, chooseImage, chooseVideo, clearStorage, clearStorageSync, closeSocket, connectSocket, createInnerAudioContext, createIntersectionObserver, createSelectorQuery, createVideoContext, cssBackdropFilter, cssConstant, cssEnv, cssVar, downloadFile, getApp$1 as getApp, getCurrentPages$1 as getCurrentPages, getFileInfo, getImageInfo, getLocation, getNetworkType, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getVideoInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, hideToast, loadFontFace, makePhoneCall, navigateBack, navigateTo, offAccelerometerChange, offCompassChange, offNetworkStatusChange, onAccelerometerChange, onCompassChange, onNetworkStatusChange, onSocketClose, onSocketError, onSocketMessage, onSocketOpen, onTabBarMidButtonTap, openDocument, pageScrollTo, index$m as plugin, promiseInterceptor, reLaunch, redirectTo, removeInterceptor, removeStorage, removeStorageSync, removeTabBarBadge, request, sendSocketMessage, setNavigationBarColor, setNavigationBarTitle, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, setupApp, setupPage, showLoading, showModal, showNavigationBarLoading, showTabBar, showTabBarRedDot, showToast, startAccelerometer, startCompass, startPullDownRefresh, stopAccelerometer, stopCompass, stopPullDownRefresh, switchTab, uni$1 as uni, uploadFile, upx2px, useAttrs, useCustomEvent, useOn, useSubscribe, useUserAction, vibrateLong, vibrateShort, withWebEvent}; +export {index$1 as AsyncErrorComponent, index as AsyncLoadingComponent, _sfc_main$7 as Audio, index$k as Button, _sfc_main$6 as Canvas, index$h as Checkbox, index$j as CheckboxGroup, index$g as Editor, index$l as Form, index$f as Icon, index$e as Image, Input, index$i as Label, LayoutComponent, index$3 as Map, _sfc_main$5 as MovableView, _sfc_main$4 as Navigator, index$2 as PageComponent, index$d as Progress, index$b as Radio, index$c as RadioGroup, ResizeSensor, _sfc_main$3 as RichText, _sfc_main$2 as ScrollView, index$a as Slider, _sfc_main$1 as SwiperItem, index$9 as Switch, index$8 as Text, index$7 as Textarea, UniServiceJSBridge$1 as UniServiceJSBridge, UniViewJSBridge$1 as UniViewJSBridge, index$5 as Video, index$6 as View, index$4 as WebView, addInterceptor, arrayBufferToBase64, base64ToArrayBuffer, canIUse, chooseFile, chooseImage, chooseVideo, clearStorage, clearStorageSync, closeSocket, connectSocket, createInnerAudioContext, createIntersectionObserver, createMapContext, createSelectorQuery, createVideoContext, cssBackdropFilter, cssConstant, cssEnv, cssVar, downloadFile, getApp$1 as getApp, getCurrentPages$1 as getCurrentPages, getFileInfo, getImageInfo, getLocation, getNetworkType, getStorage, getStorageInfo, getStorageInfoSync, getStorageSync, getSystemInfo, getSystemInfoSync, getVideoInfo, hideKeyboard, hideLoading, hideNavigationBarLoading, hideTabBar, hideTabBarRedDot, hideToast, loadFontFace, makePhoneCall, navigateBack, navigateTo, offAccelerometerChange, offCompassChange, offNetworkStatusChange, onAccelerometerChange, onCompassChange, onNetworkStatusChange, onSocketClose, onSocketError, onSocketMessage, onSocketOpen, onTabBarMidButtonTap, openDocument, pageScrollTo, index$m as plugin, promiseInterceptor, reLaunch, redirectTo, removeInterceptor, removeStorage, removeStorageSync, removeTabBarBadge, request, sendSocketMessage, setNavigationBarColor, setNavigationBarTitle, setStorage, setStorageSync, setTabBarBadge, setTabBarItem, setTabBarStyle, setupApp, setupPage, showLoading, showModal, showNavigationBarLoading, showTabBar, showTabBarRedDot, showToast, startAccelerometer, startCompass, startPullDownRefresh, stopAccelerometer, stopCompass, stopPullDownRefresh, switchTab, uni$1 as uni, uploadFile, upx2px, useAttrs, useCustomEvent, useOn, useSubscribe, useUserAction, vibrateLong, vibrateShort, withWebEvent}; diff --git a/packages/uni-h5/src/platform/index.ts b/packages/uni-h5/src/platform/index.ts index b88f7e7b5e17255e5d8e21af4c7041899fd5d844..3fc29da3b364cb2254a48e74e3917b585dce7aad 100644 --- a/packages/uni-h5/src/platform/index.ts +++ b/packages/uni-h5/src/platform/index.ts @@ -1,6 +1,7 @@ export * from './dom' export { getBaseSystemInfo } from '../service/api/base/getBaseSystemInfo' export { operateVideoPlayer } from '../service/api/context/operateVideoPlayer' +export { operateMap } from '../service/api/context/operateMap' export { addIntersectionObserver, removeIntersectionObserver, diff --git a/packages/uni-h5/src/service/api/context/operateMap.ts b/packages/uni-h5/src/service/api/context/operateMap.ts new file mode 100644 index 0000000000000000000000000000000000000000..53d33d20929863c0f49c1864d7bf16c26feadec5 --- /dev/null +++ b/packages/uni-h5/src/service/api/context/operateMap.ts @@ -0,0 +1,18 @@ +import { ComponentPublicInstance } from 'vue' + +export function operateMap( + id: string, + vm: ComponentPublicInstance, + type: string, + data?: unknown +) { + const pageId = vm.$root!.$page.id + UniServiceJSBridge.publishHandler( + 'map.' + id, + { + type, + data, + }, + pageId + ) +} diff --git a/packages/uni-h5/src/service/api/index.ts b/packages/uni-h5/src/service/api/index.ts index 1ed981e65030f7d8594b01c21d693971cdc439a9..f0c4dd8b7a893f93e77f705aebd097c60b2aff12 100644 --- a/packages/uni-h5/src/service/api/index.ts +++ b/packages/uni-h5/src/service/api/index.ts @@ -55,5 +55,6 @@ export { createIntersectionObserver, createSelectorQuery, createVideoContext, + createMapContext, onTabBarMidButtonTap, } from '@dcloudio/uni-api'