| 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') |
|
|