@vuemap/vue-amap
Version:
高德地图vue3版本封装
1 lines • 15.6 kB
Source Map (JSON)
{"version":3,"file":"useRegister.mjs","sources":["../../../mixins/useRegister.ts"],"sourcesContent":["import {\r\n inject,\r\n onMounted,\r\n onBeforeUnmount,\r\n onBeforeUpdate,\r\n onUpdated,\r\n getCurrentInstance,\r\n isProxy, toRaw, unref,\r\n watch,\r\n nextTick\r\n} from 'vue';\r\nimport {convertEventToLowerCase, eventReg, upperCamelCase, bindInstanceEvent, removeInstanceEvent} from \"../utils\";\r\nimport type {ComponentInternalInstance, WatchStopHandle} from 'vue';\r\n\r\nexport type TRegisterFn = () => void\r\nexport interface IProvideType{\r\n // 父组件的地图相关实例\r\n $amapComponent: any\r\n // // 父组件用来缓存需要执行注册的回调\r\n // needInitComponents: TRegisterFn[]\r\n // 当组件初始化的时候如果父组件还未初始化成功,那么需要调用该方法将自身的初始化方法注册到父组件中\r\n addChildComponent: (cb: TRegisterFn) => void\r\n // 父组件是否已经销毁\r\n isDestroy: boolean\r\n [key : string]: any\r\n}\r\n\r\n\r\ninterface TInitComponentProps {\r\n // 属性名重定向\r\n propsRedirect?: Record<string, string>;\r\n emits: (event: any, ...args: any[]) => void;\r\n // 转化数据使用\r\n converts?: Record<string, (val: any) => any>\r\n // 是否是根节点,只用于map组件初始化使用\r\n isRoot?: boolean\r\n // 监听事件使用的方法,默认是读取地图实例的属性的set方法\r\n watchRedirectFn?: Record<string, (source: any) => any>\r\n // 需要初始化的子组件\r\n needInitComponents?: TRegisterFn[]\r\n provideData?: IProvideType\r\n destroyComponent?: () => void\r\n}\r\n\r\nexport const provideKey = 'parentInstance';\r\n\r\nexport const useRegister = <T, D = any>(_init: (options: any, parentComponent: D) => Promise<T>, params: TInitComponentProps) => {\r\n let componentInstance = getCurrentInstance() as ComponentInternalInstance;\r\n let {props, attrs} = componentInstance;\r\n let parentInstance = inject<IProvideType | undefined>(provideKey, undefined);\r\n const emits = params.emits;\r\n\r\n let isMounted = false;\r\n let $amapComponent: T;\r\n \r\n onMounted(() => {\r\n if(parentInstance){\r\n if(parentInstance.$amapComponent){\r\n register();\r\n }else{\r\n parentInstance.addChildComponent(register);\r\n }\r\n }else if(params.isRoot){\r\n register();\r\n }\r\n });\r\n onBeforeUnmount(() => {\r\n if(!$amapComponent){\r\n return;\r\n }\r\n unregisterEvents();\r\n stopWatchers();\r\n if(params.destroyComponent){\r\n params.destroyComponent();\r\n }else{\r\n destroyComponent();\r\n }\r\n if(params.provideData){\r\n params.provideData.isDestroy = true;\r\n }\r\n parentInstance = undefined;\r\n props = undefined as any;\r\n attrs = undefined as any;\r\n componentInstance = undefined as any;\r\n $amapComponent = undefined as any;\r\n });\r\n \r\n onBeforeUpdate(() => {\r\n if(props.reEventWhenUpdate && isMounted && $amapComponent){\r\n unregisterEvents();\r\n }\r\n });\r\n \r\n onUpdated(() => {\r\n if(props.reEventWhenUpdate && isMounted && $amapComponent){\r\n registerEvents();\r\n }\r\n });\r\n \r\n const register = () => {\r\n const options = convertProps();\r\n _init(options, parentInstance?.$amapComponent).then(mapInstance => {\r\n $amapComponent = mapInstance;\r\n registerEvents();\r\n initProps();\r\n setPropWatchers();\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n Object.assign(componentInstance.ctx, componentInstance.exposed);\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n emits('init', $amapComponent, componentInstance.ctx);\r\n nextTick(() => {\r\n createChildren();\r\n }).then();\r\n isMounted = true;\r\n });\r\n };\r\n \r\n // 初始化属性\r\n const initProps = () => {\r\n const propsList = ['editable', 'visible', 'zooms'];\r\n\r\n propsList.forEach(propStr => {\r\n if (props[propStr] !== undefined) {\r\n const handleFun = getHandlerFun(propStr);\r\n handleFun && handleFun.call($amapComponent, convertProxyToRaw(convertSignalProp(propStr, props[propStr])));\r\n }\r\n });\r\n };\r\n \r\n // 开始处理props数据\r\n const propsRedirect = params.propsRedirect || {};\r\n const convertProps = () => {\r\n const propsCache: Record<string, any> = {};\r\n if(props.extraOptions){\r\n Object.assign(propsCache, props.extraOptions);\r\n }\r\n Object.keys(props).forEach(_key => {\r\n let key = _key;\r\n const propsValue = convertSignalProp(key, props[key]);\r\n if (propsValue !== undefined){\r\n if (propsRedirect && propsRedirect[_key]){\r\n key = propsRedirect[key];\r\n }\r\n propsCache[key] = propsValue;\r\n }\r\n });\r\n return propsCache;\r\n };\r\n \r\n const converters = params.converts || {};\r\n const convertSignalProp = (key: string, sourceData: any) => {\r\n if (converters && converters[key]) {\r\n return converters[key].call(this, sourceData);\r\n }\r\n return sourceData;\r\n };\r\n\r\n const convertProxyToRaw = (value: any) => {\r\n if(isProxy(value)){\r\n return toRaw(value);\r\n }\r\n return unref(value);\r\n };\r\n \r\n // 结束处理props数据\r\n \r\n // 开始监控数据变化\r\n let unwatchFns: WatchStopHandle[] = [];\r\n let watchRedirectFn: Record<string, (source: any) => any> = Object.assign({\r\n __visible: (flag: boolean) => {\r\n if(!!$amapComponent && !!$amapComponent['show'] && !!$amapComponent['hide']){\r\n !flag ? $amapComponent['hide']() : $amapComponent['show']();\r\n }\r\n },\r\n __zIndex (value: number){\r\n if ($amapComponent && $amapComponent['setzIndex']) {\r\n $amapComponent['setzIndex'](value);\r\n }\r\n }\r\n }, params.watchRedirectFn || {});\r\n const setPropWatchers = () => {\r\n\r\n Object.keys(props).forEach(prop => {\r\n let handleProp = prop;\r\n if (propsRedirect && propsRedirect[prop]) handleProp = propsRedirect[prop];\r\n const handleFun = getHandlerFun(handleProp);\r\n if (!handleFun) return;\r\n const watchOptions = {\r\n deep: false\r\n };\r\n const propValueType = Object.prototype.toString.call(props[prop]);\r\n if ( propValueType === '[object Object]' || propValueType === '[object Array]') {\r\n watchOptions.deep = true;\r\n }\r\n // watch props\r\n const unwatch = watch(() => props[prop], nv => {\r\n handleFun.call($amapComponent, convertProxyToRaw(convertSignalProp(prop, nv)));\r\n }, watchOptions);\r\n\r\n // collect watchers for destroyed\r\n unwatchFns.push(unwatch);\r\n });\r\n };\r\n \r\n const stopWatchers = () => {\r\n unwatchFns.forEach(fn => fn());\r\n unwatchFns = [];\r\n watchRedirectFn = undefined as any;\r\n };\r\n\r\n const getHandlerFun = (prop: string) => {\r\n if (watchRedirectFn[`__${prop}`]) {\r\n return watchRedirectFn[`__${prop}`];\r\n }\r\n if(!$amapComponent){\r\n return null;\r\n }\r\n return $amapComponent[`set${upperCamelCase(prop)}`];\r\n };\r\n // 监控数据变化\r\n \r\n \r\n // 开始为地图实例注册事件\r\n const cacheEvents: Record<string, any> = {};\r\n const registerEvents = () => {\r\n Object.keys(attrs).forEach(key => {\r\n if(eventReg.test(key)){\r\n const eventKey = convertEventToLowerCase(key);\r\n bindInstanceEvent($amapComponent, eventKey, attrs[key]);\r\n cacheEvents[eventKey] = attrs[key];\r\n }\r\n });\r\n };\r\n const unregisterEvents = () => {\r\n Object.keys(cacheEvents).forEach(eventKey => {\r\n removeInstanceEvent($amapComponent, eventKey, cacheEvents[eventKey]);\r\n delete cacheEvents[eventKey];\r\n });\r\n };\r\n \r\n // 处理事件\r\n \r\n const createChildren = () => {\r\n const needInitComponents = params.needInitComponents || [];\r\n while (needInitComponents.length > 0){\r\n needInitComponents[0]();\r\n needInitComponents.splice(0, 1);\r\n }\r\n };\r\n \r\n // 销毁组件时的回调\r\n const destroyComponent = () => {\r\n if(!$amapComponent){\r\n return;\r\n }\r\n ($amapComponent as any).setMap && ($amapComponent as any).setMap(null);\r\n ($amapComponent as any).close && ($amapComponent as any).close();\r\n ($amapComponent as any).editor && ($amapComponent as any).editor.close();\r\n };\r\n\r\n function $$getInstance (): T{\r\n return $amapComponent;\r\n }\r\n return {\r\n $$getInstance,\r\n parentInstance,\r\n isMounted\r\n };\r\n};\r\n"],"names":[],"mappings":"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"}