A fork of https://github.com/ueokande/vim-vixen
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.
74 lines
1.5 KiB
74 lines
1.5 KiB
import * as messages from '../../shared/messages'; |
|
|
|
interface Size { |
|
width: number; |
|
height: number; |
|
} |
|
|
|
interface Point { |
|
x: number; |
|
y: number; |
|
} |
|
|
|
export default interface FollowSlaveClient { |
|
filterHints(prefix: string): void; |
|
|
|
requestHintCount(viewSize: Size, framePosition: Point): void; |
|
|
|
createHints(viewSize: Size, framePosition: Point, tags: string[]): void; |
|
|
|
clearHints(): void; |
|
|
|
activateIfExists(tag: string, newTab: boolean, background: boolean): void; |
|
} |
|
|
|
export class FollowSlaveClientImpl implements FollowSlaveClient { |
|
private target: Window; |
|
|
|
constructor(target: Window) { |
|
this.target = target; |
|
} |
|
|
|
filterHints(prefix: string): void { |
|
this.postMessage({ |
|
type: messages.FOLLOW_SHOW_HINTS, |
|
prefix, |
|
}); |
|
} |
|
|
|
requestHintCount(viewSize: Size, framePosition: Point): void { |
|
this.postMessage({ |
|
type: messages.FOLLOW_REQUEST_COUNT_TARGETS, |
|
viewSize, |
|
framePosition, |
|
}); |
|
} |
|
|
|
createHints(viewSize: Size, framePosition: Point, tags: string[]): void { |
|
this.postMessage({ |
|
type: messages.FOLLOW_CREATE_HINTS, |
|
viewSize, |
|
framePosition, |
|
tags, |
|
}); |
|
} |
|
|
|
clearHints(): void { |
|
this.postMessage({ |
|
type: messages.FOLLOW_REMOVE_HINTS, |
|
}); |
|
} |
|
|
|
activateIfExists(tag: string, newTab: boolean, background: boolean): void { |
|
this.postMessage({ |
|
type: messages.FOLLOW_ACTIVATE, |
|
tag, |
|
newTab, |
|
background, |
|
}); |
|
} |
|
|
|
private postMessage(msg: messages.Message): void { |
|
this.target.postMessage(JSON.stringify(msg), '*'); |
|
} |
|
}
|
|
|