You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
588 B
22 lines
588 B
3 years ago
|
import type { InjectionKey, Ref } from 'vue';
|
||
|
import { ref, inject, provide } from 'vue';
|
||
|
|
||
|
export interface HoverContextProps {
|
||
|
startRow: Ref<number>;
|
||
|
endRow: Ref<number>;
|
||
|
onHover: (start: number, end: number) => void;
|
||
|
}
|
||
|
export const HoverContextKey: InjectionKey<HoverContextProps> = Symbol('HoverContextProps');
|
||
|
|
||
|
export const useProvideHover = (props: HoverContextProps) => {
|
||
|
provide(HoverContextKey, props);
|
||
|
};
|
||
|
|
||
|
export const useInjectHover = () => {
|
||
|
return inject(HoverContextKey, {
|
||
|
startRow: ref(-1),
|
||
|
endRow: ref(-1),
|
||
|
onHover() {},
|
||
|
} as HoverContextProps);
|
||
|
};
|