|
1 | 1 | /** |
2 | 2 | * @file Sheet Music App - renders ABC notation with abcjs and provides audio playback |
3 | 3 | */ |
4 | | -import { App } from "@modelcontextprotocol/ext-apps"; |
| 4 | +import { App, type McpUiHostContext } from "@modelcontextprotocol/ext-apps"; |
5 | 5 | import ABCJS from "abcjs"; |
6 | 6 | import "abcjs/abcjs-audio.css"; |
7 | 7 | import "./global.css"; |
@@ -109,18 +109,20 @@ app.ontoolinput = (params) => { |
109 | 109 |
|
110 | 110 | app.onerror = console.error; |
111 | 111 |
|
112 | | -app.onhostcontextchanged = (params) => { |
113 | | - if (params.safeAreaInsets) { |
114 | | - mainEl.style.paddingTop = `${params.safeAreaInsets.top}px`; |
115 | | - mainEl.style.paddingRight = `${params.safeAreaInsets.right}px`; |
116 | | - mainEl.style.paddingBottom = `${params.safeAreaInsets.bottom}px`; |
117 | | - mainEl.style.paddingLeft = `${params.safeAreaInsets.left}px`; |
| 112 | +function handleHostContextChanged(ctx: McpUiHostContext) { |
| 113 | + if (ctx.safeAreaInsets) { |
| 114 | + mainEl.style.paddingTop = `${ctx.safeAreaInsets.top}px`; |
| 115 | + mainEl.style.paddingRight = `${ctx.safeAreaInsets.right}px`; |
| 116 | + mainEl.style.paddingBottom = `${ctx.safeAreaInsets.bottom}px`; |
| 117 | + mainEl.style.paddingLeft = `${ctx.safeAreaInsets.left}px`; |
118 | 118 | } |
119 | | -}; |
| 119 | +} |
| 120 | + |
| 121 | +app.onhostcontextchanged = handleHostContextChanged; |
120 | 122 |
|
121 | 123 | app.connect().then(() => { |
122 | 124 | const ctx = app.getHostContext(); |
123 | 125 | if (ctx) { |
124 | | - app.onhostcontextchanged(ctx); |
| 126 | + handleHostContextChanged(ctx); |
125 | 127 | } |
126 | 128 | }); |
0 commit comments