62 lines
2.3 KiB
JavaScript
62 lines
2.3 KiB
JavaScript
// Page AI product facade — Pi Lab only.
|
||
// Hermes / OpenCode / ACP drawer 已物理删除;本模块仅保留 tree 需要的入口桥接。
|
||
|
||
export function createSidebarPageAiRuntime(context) {
|
||
const { pageUiState } = context || {};
|
||
|
||
function updatePageAiTriggerState() {
|
||
var trigger = document.querySelector('[data-testid="wolai-floating-ai"]');
|
||
if (!(trigger instanceof HTMLElement)) return;
|
||
var open = !!(pageUiState && pageUiState.pageAiOpen);
|
||
trigger.setAttribute('data-state', open ? 'open' : 'closed');
|
||
trigger.setAttribute('aria-expanded', open ? 'true' : 'false');
|
||
}
|
||
|
||
function openPageAiDrawer() {
|
||
// 产品唯一入口:Pi Lab。旧 Hermes/OpenCode/Board drawer 不再打开。
|
||
if (typeof window.createSidebarPageAiPiLabRuntime !== 'function') {
|
||
console.warn('[page-ai] Pi Lab runtime not loaded');
|
||
if (window.mnote && typeof window.mnote.toast === 'function') {
|
||
window.mnote.toast('Page AI 运行时未加载', { kind: 'warning' });
|
||
}
|
||
return;
|
||
}
|
||
try {
|
||
window.createSidebarPageAiPiLabRuntime({});
|
||
} catch (err) {
|
||
console.error('[page-ai] Pi Lab runtime init failed', err);
|
||
if (window.mnote && typeof window.mnote.toast === 'function') {
|
||
window.mnote.toast('Page AI 启动失败', { kind: 'error' });
|
||
}
|
||
return;
|
||
}
|
||
window.postMessage({ source: 'mnote-sidebar', type: 'mnote:pi-lab-show' }, window.location.origin);
|
||
if (pageUiState) pageUiState.pageAiOpen = true;
|
||
updatePageAiTriggerState();
|
||
}
|
||
|
||
function closePageAiDrawer() {
|
||
window.postMessage({ source: 'mnote-sidebar', type: 'mnote:pi-lab-hide' }, window.location.origin);
|
||
if (pageUiState) pageUiState.pageAiOpen = false;
|
||
updatePageAiTriggerState();
|
||
}
|
||
|
||
function isPageAiDrawerOpen() {
|
||
return !!(pageUiState && pageUiState.pageAiOpen);
|
||
}
|
||
|
||
function installPageAiDelegates() {
|
||
// no-op:Hermes/OpenCode drawer 事件委托已退役;Pi Lab 自有 runtime 处理交互。
|
||
}
|
||
|
||
var api = {
|
||
installPageAiDelegates: installPageAiDelegates,
|
||
openPageAiDrawer: openPageAiDrawer,
|
||
closePageAiDrawer: closePageAiDrawer,
|
||
isPageAiDrawerOpen: isPageAiDrawerOpen,
|
||
updatePageAiTriggerState: updatePageAiTriggerState
|
||
};
|
||
window.__mnoteSidebarPageAiRuntime = api;
|
||
return api;
|
||
}
|