mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* perf: change to import-x * feat: add rules * chore: fix rule * chore: fix * chore: fix * chore: fix * style: `pnpm lint:fix` * Revert "style: `pnpm lint:fix`" This reverts commitdb0116a288. * Revert "chore: fix" This reverts commit69c82a90c0. * chore: fix * style: `pnpm lint:fix` * fix: lint * chore: `pnpm format`
37 lines
1015 B
TypeScript
37 lines
1015 B
TypeScript
import { shallowReactive } from 'vue'
|
|
|
|
import type { ComponentInternalInstance, VNode } from 'vue'
|
|
import type { Mutable } from '@element-plus/utils'
|
|
import type { MessageHandler, MessageProps } from './message'
|
|
|
|
export type MessageContext = {
|
|
id: string
|
|
vnode: VNode
|
|
handler: MessageHandler
|
|
vm: ComponentInternalInstance
|
|
props: Mutable<MessageProps>
|
|
}
|
|
|
|
export const instances: MessageContext[] = shallowReactive([])
|
|
|
|
export const getInstance = (id: string) => {
|
|
const idx = instances.findIndex((instance) => instance.id === id)
|
|
const current = instances[idx]
|
|
let prev: MessageContext | undefined
|
|
if (idx > 0) {
|
|
prev = instances[idx - 1]
|
|
}
|
|
return { current, prev }
|
|
}
|
|
|
|
export const getLastOffset = (id: string): number => {
|
|
const { prev } = getInstance(id)
|
|
if (!prev) return 0
|
|
return prev.vm.exposed!.bottom.value
|
|
}
|
|
|
|
export const getOffsetOrSpace = (id: string, offset: number) => {
|
|
const idx = instances.findIndex((instance) => instance.id === id)
|
|
return idx > 0 ? 16 : offset
|
|
}
|