toto10's picture
Upload folder using huggingface_hub (#4)
ea35075
raw
history blame
2.25 kB
export type IPostMessage = {
method: string
type: 'call' | 'return'
payload: any
}
const iframe = document.getElementById('open-pose-editor') as HTMLIFrameElement
const poseMessage = (message: IPostMessage) => {
iframe.contentWindow?.postMessage(message)
}
const MessageReturnHandler: Record<string, (arg: any) => void> = {}
const MessageEventHandler: Record<string, (arg: any) => void> = {}
window.addEventListener('message', (event) => {
const { data } = event
if (data && data.cmd && data.cmd == 'openpose-3d' && data.method) {
const method = data.method
console.log('Method', method, event)
if (data.type == 'return') {
MessageReturnHandler[method]?.(data.payload)
} else if (data.type == 'event') {
console.log(MessageEventHandler)
MessageEventHandler[method]?.(data.payload)
}
}
})
function InvokeOnlineOpenPose3D(method: string, ...args: any[]) {
return new Promise((resolve, reject) => {
const id = setTimeout(() => {
delete MessageReturnHandler[method]
reject({
method,
status: 'Timeout',
})
}, 1000)
const onReutrn = (arg: any) => {
clearTimeout(id)
resolve(arg)
}
MessageReturnHandler[method] = onReutrn
poseMessage({
method,
type: 'call',
payload: args,
})
})
}
function CreateClick(name: string, ...args: any[]) {
const ele = document.getElementById(name)
ele?.addEventListener('click', async () => {
console.log(name)
const value = await InvokeOnlineOpenPose3D(name, ...args)
console.log('return', value)
})
}
MessageEventHandler['MakeImages'] = (arg) => {
console.log('event', arg)
}
CreateClick('GetAPIs')
CreateClick('GetAppVersion')
CreateClick('MakeImages')
CreateClick('Pause')
CreateClick('Resume')
CreateClick('OutputWidth', 512)
CreateClick('OutputHeight', 512)
CreateClick('OnlyHand', true)
CreateClick('MoveMode', true)
CreateClick('GetWidth')
CreateClick('GetHeight')
CreateClick('GetSceneData')
CreateClick('LockView')
CreateClick('UnlockView')
CreateClick('RestoreView')