minmap.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <Teleport v-if="props.show" to="[xui_min_map]">
  3. <div :ref="eleRef" :class="[ns.e('container')]">
  4. <slot />
  5. </div>
  6. </Teleport>
  7. </template>
  8. <script lang="ts" setup>
  9. import { inject, ref, watchEffect } from 'vue'
  10. import { useNamespace } from '@kankan-components/hooks'
  11. import { minmapProps } from './minmap'
  12. const ns = useNamespace('minmap')
  13. const __sdk: any = inject('__sdk')
  14. const eleRef = ref('minmap')
  15. defineOptions({
  16. name: 'KkMinmap',
  17. })
  18. const show = (): void => {
  19. if (__sdk) {
  20. __sdk.MinMap.show()
  21. }
  22. }
  23. const hide = (): void => {
  24. if (__sdk) {
  25. __sdk.MinMap.hide()
  26. }
  27. }
  28. const props = defineProps(minmapProps)
  29. watchEffect(() => {
  30. if (props.show) {
  31. document.querySelector('[xui_min_map]')?.classList.add(ns.b())
  32. show()
  33. } else {
  34. hide()
  35. }
  36. })
  37. // __sdk.use('MinMap', { theme: { camera_fillStyle: props.color } }).then(() => {
  38. // // loading.value = true
  39. // if (document.querySelector('[xui_min_map]')) {
  40. // document.querySelector('[xui_min_map]')?.classList.add(ns.b())
  41. // }
  42. // })
  43. defineExpose({
  44. ref: eleRef,
  45. show,
  46. hide,
  47. })
  48. </script>