diff --git a/ui/drawer.js b/ui/drawer.js index 431099c..8c18f88 100644 --- a/ui/drawer.js +++ b/ui/drawer.js @@ -63,9 +63,14 @@ async function loadSettings() { } export function createDrawer() { -if ($("#amily2_main_drawer").length > 0) return; + const settings = extension_settings[extensionName]; + const location = settings.iconLocation || 'topbar'; -const amily2DrawerHtml = ` + if (location === 'topbar') { + if ($("#amily2_main_drawer").length > 0) return; + + + const amily2DrawerHtml = `
@@ -73,68 +78,90 @@ const amily2DrawerHtml = `
- `; - $("#sys-settings-button").after(amily2DrawerHtml); + `; + $("#sys-settings-button").after(amily2DrawerHtml); + $(document).off("mousedown.amily2Drawer").on( + "mousedown.amily2Drawer", + "#amily2_drawer_icon", + async function (e) { + e.preventDefault(); + e.stopPropagation(); -$(document).on( - "mousedown", - "#amily2_drawer_icon", - async function (e) { - e.preventDefault(); - e.stopPropagation(); + const drawerIcon = $(this); + const contentPanel = $("#amily2_drawer_content"); - const drawerIcon = $(this); - const contentPanel = $("#amily2_drawer_content"); - - - - $('.openDrawer').not(contentPanel).not('.pinnedOpen').addClass('resizing').each((_, el) => { - slideToggle(el, { - ...getSlideToggleOptions(), - onAnimationEnd: function (el) { - el.closest('.drawer-content').classList.remove('resizing'); - }, + $('.openDrawer').not(contentPanel).not('.pinnedOpen').addClass('resizing').each((_, el) => { + slideToggle(el, { + ...getSlideToggleOptions(), + onAnimationEnd: function (el) { + el.closest('.drawer-content').classList.remove('resizing'); + }, + }); }); - }); - - $('.openIcon').not(drawerIcon).not('.drawerPinnedOpen').toggleClass('closedIcon openIcon'); - $('.openDrawer').not(contentPanel).not('.pinnedOpen').toggleClass('closedDrawer openDrawer'); - - drawerIcon.toggleClass('closedIcon openIcon'); - contentPanel.toggleClass('closedDrawer openDrawer'); - - - contentPanel.addClass('resizing').each((_, el) => { - slideToggle(el, { - ...getSlideToggleOptions(), - onAnimationEnd: function (el) { - el.closest('.drawer-content').classList.remove('resizing'); - }, + $('.openIcon').not(drawerIcon).not('.drawerPinnedOpen').toggleClass('closedIcon openIcon'); + $('.openDrawer').not(contentPanel).not('.pinnedOpen').toggleClass('closedDrawer openDrawer'); + drawerIcon.toggleClass('closedIcon openIcon'); + contentPanel.toggleClass('closedDrawer openDrawer'); + contentPanel.addClass('resizing').each((_, el) => { + slideToggle(el, { + ...getSlideToggleOptions(), + onAnimationEnd: function (el) { + el.closest('.drawer-content').classList.remove('resizing'); + }, + }); }); - }); + const isInitialized = contentPanel.data("initialized"); + if (drawerIcon.hasClass("openIcon") && !isInitialized) { + try { + const modalContent = await $.get(`${extensionFolderPath}/assets/amily2-modal.html`); + contentPanel.html(modalContent); + await loadSettings(); + bindModalEvents(); + contentPanel.data("initialized", true); + console.log("[Amily2号-建设部] 顶栏宫殿内室已根据最高指令激活。"); + applyUpdateIndicator(); + } catch (error) { + console.error("[Amily2号-建设部] 加载顶栏宫殿内部HTML失败:", error); + contentPanel.html('

紧急报告:无法加载Amily2号府邸内饰。

'); + } + } + }, + ); - const isInitialized = contentPanel.data("initialized"); - if (drawerIcon.hasClass("openIcon") && !isInitialized) { + } else if (location === 'extensions') { + if ($("#extensions_settings2 #amily2_chat_optimiser").length > 0) return; + const amilyFrameHtml = ` +
+
+
+ Amily2号 优化中枢 +
+
+ +
+
+ `; + + $('#extensions_settings2').append(amilyFrameHtml); + + (async () => { try { - const extensionFolderPath = `scripts/extensions/third-party/${extensionName}`; - const modalContent = await $.get( - `${extensionFolderPath}/assets/amily2-modal.html`, - ); - contentPanel.html(modalContent); - await loadSettings(); + console.log("[Amily2号-建设部] 收到指令,开始在'扩展'官方区域建造宫殿。"); + const modalContent = await $.get(`${extensionFolderPath}/assets/amily2-modal.html`); + $('#amily2_extension_frame .inline-drawer-content').html(modalContent); + await loadSettings(); bindModalEvents(); - contentPanel.data("initialized", true); - console.log("[Amily2号-建设部] 宫殿内室已根据最高指令激活。"); - applyUpdateIndicator(); + console.log("[Amily2号-建设部] '扩展'宫殿已根据最高指令建成并完全激活。"); + applyUpdateIndicator(); + } catch (error) { - console.error("[Amily2号-建设部] 加载宫殿内部HTML失败:", error); - contentPanel.html( - '

紧急报告:无法加载Amily2号府邸内饰。

', - ); + console.error("[Amily2号-建设部] 在'扩展'区域加载宫殿HTML失败:", error); + $('#extensions_settings2').append('

紧急报告:在扩展区域建造Amily2号府邸时发生意外。

'); } - } - }, -); + })(); + } }