{"version":3,"file":"register-component.js","sources":["../../../../src/mixins/register-component.ts"],"sourcesContent":["import {defineComponent} from \"vue\";\r\nimport upperCamelCase from 'uppercamelcase';\r\nimport eventHelper from '../utils/event-helper';\r\nimport {convertEventToLowerCase, eventReg} from \"../utils/util\";\r\nimport type {WatchStopHandle, ComponentPublicInstance} from \"vue\";\r\n\r\nexport default defineComponent({\r\n inject: {\r\n parentInstance: {\r\n default: null\r\n }\r\n },\r\n inheritAttrs: false,\r\n props: {\r\n visible: {\r\n type: Boolean,\r\n default: true\r\n }, // 是否显示,默认 true\r\n zIndex: {\r\n type: Number\r\n },\r\n reEventWhenUpdate: {\r\n type: Boolean,\r\n default: false\r\n } // 是否在组件更新时重新注册事件,主要用于数组更新时,绑定了事件但事件的对象不会更新问题\r\n },\r\n emits: ['init'],\r\n data() {\r\n return {\r\n needInitComponents: [] as (ComponentPublicInstance & customComponent)[],\r\n unwatchFns: [] as WatchStopHandle[],\r\n propsRedirect: {},\r\n converters: {},\r\n isDestroy: false,\r\n cacheEvents: {},\r\n isMounted: false\r\n };\r\n },\r\n created() {\r\n this.$amapComponent = null as any;\r\n this.$parentComponent = null as any;\r\n },\r\n mounted() {\r\n if (this.parentInstance) {\r\n if (this.parentInstance.$amapComponent) {\r\n this.register();\r\n } else {\r\n this.parentInstance.addChildComponent(this);\r\n }\r\n }\r\n },\r\n\r\n beforeUnmount() {\r\n if (!this.$amapComponent) return;\r\n this.unregisterEvents();\r\n this.unwatchFns.forEach(item => item());\r\n this.unwatchFns = [];\r\n this.destroyComponent();\r\n this.isDestroy = true;\r\n },\r\n beforeUpdate() {\r\n if(this.reEventWhenUpdate && this.isMounted && this.$amapComponent){\r\n this.unregisterEvents();\r\n }\r\n },\r\n updated() {\r\n if(this.reEventWhenUpdate && this.isMounted && this.$amapComponent){\r\n this.registerEvents();\r\n }\r\n },\r\n methods: {\r\n getHandlerFun(prop) {\r\n if (this[`__${prop}`]) {\r\n return this[`__${prop}`];\r\n }\r\n if(!this.$amapComponent){\r\n return null;\r\n }\r\n return this.$amapComponent[`set${upperCamelCase(prop)}`];\r\n },\r\n\r\n convertProps() {\r\n const props = {};\r\n const {$props, propsRedirect} = this;\r\n return Object.keys($props).reduce((res, _key) => {\r\n let key = _key;\r\n const propsValue = this.convertSignalProp(key, $props[key]);\r\n if (propsValue === undefined) return res;\r\n if (propsRedirect && propsRedirect[_key]) key = propsRedirect[key];\r\n props[key] = propsValue;\r\n return res;\r\n }, props);\r\n },\r\n\r\n convertSignalProp(key, sourceData) {\r\n if (this.converters && this.converters[key]) {\r\n return this.converters[key].call(this, sourceData);\r\n }\r\n return sourceData;\r\n },\r\n\r\n registerEvents() {\r\n const $props = this.$attrs;\r\n Object.keys($props).forEach(key => {\r\n if(eventReg.test(key)){\r\n const eventKey = convertEventToLowerCase(key);\r\n eventHelper.addListener(this.$amapComponent, eventKey, $props[key]);\r\n this.cacheEvents[eventKey] = $props[key];\r\n }\r\n });\r\n },\r\n\r\n unregisterEvents() {\r\n Object.keys(this.cacheEvents).forEach(eventKey => {\r\n eventHelper.removeListener(this.$amapComponent, eventKey, this.cacheEvents[eventKey]);\r\n delete this.cacheEvents[eventKey];\r\n });\r\n },\r\n\r\n setPropWatchers() {\r\n const {propsRedirect, $props} = this;\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 = this.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 = this.$watch(prop, nv => {\r\n handleFun.call(this.$amapComponent, this.convertSignalProp(prop, nv));\r\n }, watchOptions);\r\n\r\n // collect watchers for destroyed\r\n this.unwatchFns.push(unwatch);\r\n });\r\n },\r\n\r\n // some prop can not init by initial created methods\r\n initProps() {\r\n const props = ['editable', 'visible', 'zooms'];\r\n\r\n props.forEach(propStr => {\r\n if (this[propStr] !== undefined) {\r\n const handleFun = this.getHandlerFun(propStr);\r\n handleFun && handleFun.call(this.$amapComponent, this.convertSignalProp(propStr, this[propStr]));\r\n }\r\n });\r\n\r\n // this.printReactiveProp();\r\n },\r\n\r\n lazyRegister(){\r\n const $parent = this.parentInstance as (ComponentPublicInstance & customComponent);\r\n if($parent && $parent.addChildComponent){\r\n $parent.addChildComponent(this);\r\n }\r\n },\r\n addChildComponent(component : ComponentPublicInstance & customComponent){\r\n this.needInitComponents.push(component);\r\n },\r\n createChildren(){\r\n while (this.needInitComponents.length > 0){\r\n this.needInitComponents[0].register();\r\n this.needInitComponents.splice(0, 1);\r\n }\r\n },\r\n register() {\r\n if(this.parentInstance && !this.$parentComponent){\r\n this.$parentComponent = this.parentInstance.$amapComponent;\r\n }\r\n const res = this['__initComponent'] && this['__initComponent'](this.convertProps());\r\n if (res && res.then) res.then((instance) => this.registerRest(instance)); // promise\r\n else this.registerRest(res);\r\n },\r\n\r\n registerRest(instance) {\r\n if (!this.$amapComponent && instance) this.$amapComponent = instance;\r\n this.registerEvents();\r\n this.initProps();\r\n this.setPropWatchers();\r\n this.$emit('init', this.$amapComponent, this);\r\n this.$nextTick(() => {\r\n this.createChildren();\r\n });\r\n this.isMounted = true;\r\n },\r\n\r\n // helper method\r\n $$getInstance() {\r\n return this.$amapComponent;\r\n },\r\n destroyComponent() {\r\n this.$amapComponent.setMap && this.$amapComponent.setMap(null);\r\n this.$amapComponent.close && this.$amapComponent.close();\r\n this.$amapComponent.editor && this.$amapComponent.editor.close();\r\n },\r\n __visible(flag){\r\n if(!!this.$amapComponent && !!this.$amapComponent.show && !!this.$amapComponent.hide){\r\n flag === false ? this.$amapComponent.hide() : this.$amapComponent.show();\r\n }\r\n },\r\n __zIndex(value){\r\n if (this.$amapComponent && this.$amapComponent.setzIndex) {\r\n this.$amapComponent.setzIndex(value);\r\n }\r\n }\r\n }\r\n});\r\n"],"names":["defineComponent","upperCamelCase","eventReg","convertEventToLowerCase","eventHelper"],"mappings":"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"}