','cached_models_amily2'];_0x3f16=function(){return _0x5d1f9d;};return _0x3f16();}async function initializePanel(_0x332c71,_0x2a1b7f){const _0x3cab50=_0x57f8,_0x83f49d=_0x1b3295;if(_0x332c71[_0x83f49d(0xb1)](_0x83f49d(0xc6)))return;try{const _0x3800af=await $[_0x83f49d(0xd1)](extensionFolderPath+_0x83f49d(0x92));_0x332c71[_0x3cab50(0x10f)](_0x3800af);const _0x2f2d44=_0x332c71[_0x83f49d(0xb5)](_0x3cab50(0x11d));if(_0x2f2d44[_0x83f49d(0xc8)]){const _0x28f55b=await $[_0x83f49d(0xd1)](extensionFolderPath+_0x83f49d(0xb7)),_0x14f008='
'+_0x28f55b+_0x3cab50(0xfb);_0x2f2d44['append'](_0x14f008);const _0x3a8620=await $[_0x3cab50(0x11f)](extensionFolderPath+_0x83f49d(0x87)),_0x59f024=_0x83f49d(0xa1)+_0x3a8620+_0x3cab50(0xfb);_0x2f2d44[_0x83f49d(0xcc)](_0x59f024);}await loadSettings(),bindModalEvents(),bindHistoriographyEvents(),bindHanlinyuanEvents(),_0x332c71[_0x3cab50(0x101)](_0x83f49d(0xc6),!![]),console[_0x83f49d(0x9b)](_0x83f49d(0xcb)),applyUpdateIndicator();}catch(_0x2f70c4){console[_0x83f49d(0xbf)](_0x83f49d(0xc2),_0x2f70c4);const _0x3a2756=_0x2a1b7f?_0x83f49d(0xce):_0x83f49d(0xaa);_0x2a1b7f?_0x2a1b7f['append'](_0x3a2756):_0x332c71[_0x83f49d(0x99)](_0x3a2756);}}function _0x57f8(_0x3d2b44,_0x2a0ea5){const _0x3f161b=_0x3f16();return _0x57f8=function(_0x57f82a,_0x53b8ca){_0x57f82a=_0x57f82a-0xcf;let _0x1dd1f5=_0x3f161b[_0x57f82a];return _0x1dd1f5;},_0x57f8(_0x3d2b44,_0x2a0ea5);}function toggleDrawerFallback(){const _0x9d4343=_0x57f8,_0x27ae45=_0x1b3295,_0x497118=$(_0x27ae45(0xca)),_0x389552=$('#amily2_drawer_content');_0x497118[_0x27ae45(0x9d)](_0x27ae45(0xae))&&!_0x389552['is'](_0x27ae45(0x95))&&_0x497118[_0x27ae45(0xc5)](_0x27ae45(0xae))[_0x27ae45(0x9a)](_0x27ae45(0xba)),_0x497118[_0x27ae45(0x9d)](_0x27ae45(0xba))?($(_0x27ae45(0xa7))['not'](_0x389552)[_0x27ae45(0xa3)](_0x9d4343(0xe2))[_0x27ae45(0x9a)](_0x27ae45(0xb4))[_0x27ae45(0x9e)]((_0xf3dc37,_0x4a042f)=>{slideToggle(_0x4a042f,{...getSlideToggleOptions(),'onAnimationEnd':function(_0x508f10){const _0x33dc9e=_0x57f8,_0x3b514e=_0x4bfe;_0x508f10[_0x3b514e(0xcf)](_0x3b514e(0x88))[_0x33dc9e(0x10b)][_0x33dc9e(0xee)](_0x3b514e(0xb4));}});}),$(_0x27ae45(0xac))[_0x9d4343(0x118)](_0x497118)[_0x27ae45(0xa3)](_0x27ae45(0xa5))[_0x27ae45(0xd0)](_0x27ae45(0xb3)),$('.openDrawer')[_0x9d4343(0x118)](_0x389552)[_0x27ae45(0xa3)](_0x9d4343(0xe2))[_0x27ae45(0xd0)](_0x27ae45(0xc0)),_0x497118[_0x27ae45(0xd0)]('closedIcon\x20openIcon'),_0x389552[_0x27ae45(0xd0)](_0x27ae45(0xc0)),_0x389552[_0x27ae45(0x9a)](_0x27ae45(0xb4))[_0x27ae45(0x9e)]((_0x2ddd15,_0x477d42)=>{slideToggle(_0x477d42,{...getSlideToggleOptions(),'onAnimationEnd':function(_0x4bfd0f){const _0x340365=_0x4bfe;_0x4bfd0f[_0x340365(0xcf)]('.drawer-content')['classList'][_0x340365(0xb6)](_0x340365(0xb4));}});})):(_0x497118[_0x27ae45(0xd0)]('openIcon\x20closedIcon'),_0x389552[_0x27ae45(0xd0)](_0x27ae45(0xaf)),_0x389552[_0x9d4343(0xf3)](_0x27ae45(0xb4))[_0x27ae45(0x9e)]((_0xb2f15a,_0x56cfb5)=>{slideToggle(_0x56cfb5,{...getSlideToggleOptions(),'onAnimationEnd':function(_0x5ef985){const _0x46f247=_0x57f8,_0x27a4fa=_0x4bfe;_0x5ef985[_0x27a4fa(0xcf)](_0x27a4fa(0x88))[_0x27a4fa(0x8e)][_0x46f247(0xee)](_0x27a4fa(0xb4));}});}));}export async function createDrawer(){const _0x40c492=_0x57f8,_0x3003fe=_0x1b3295,_0x375141=extension_settings[extensionName],_0x2c634c=_0x375141[_0x40c492(0xd4)]||_0x40c492(0xf7);if(_0x2c634c===_0x40c492(0xf7)){if($(_0x3003fe(0x86))[_0x3003fe(0xc8)]>0x0)return;const _0x10597b=_0x3003fe(0xa2);$(_0x3003fe(0xa0))[_0x3003fe(0xb9)](_0x10597b);const _0x2ed2f3=$(_0x3003fe(0x8f));await initializePanel(_0x2ed2f3);try{const {doNavbarIconClick:_0x16385d}=await import(_0x3003fe(0xb2));if(typeof _0x16385d===_0x3003fe(0xad))$(_0x3003fe(0xbd))['on'](_0x3003fe(0x9f),_0x16385d),console[_0x3003fe(0x9b)](_0x3003fe(0x98));else throw new Error(_0x3003fe(0x97));}catch(_0x276c43){$(_0x3003fe(0xbd))['on'](_0x40c492(0xf6),toggleDrawerFallback),console[_0x3003fe(0x9b)](_0x3003fe(0x96));}}else{if(_0x2c634c===_0x3003fe(0x90)){if($(_0x3003fe(0xbb))[_0x3003fe(0xc8)]>0x0)return;const _0x33180f=_0x3003fe(0x8d),_0x2d2eff=$(_0x33180f);$(_0x3003fe(0xd2))['append'](_0x2d2eff);const _0x305d54=_0x2d2eff[_0x3003fe(0xb5)](_0x3003fe(0xb0));initializePanel(_0x305d54,_0x2d2eff);}}}
+import { getSlideToggleOptions } from '/script.js';
+import { slideToggle } from '/lib.js';
+import { extension_settings } from "/scripts/extensions.js";
+import { extensionName, defaultSettings } from "../utils/settings.js";
+import {
+ checkAuthorization,
+ displayExpiryInfo,
+ pluginAuthStatus,
+} from "../utils/auth.js";
+import {
+ updateUI,
+ setAvailableModels,
+ populateModelDropdown,
+ applyUpdateIndicator,
+} from "./state.js";
+import { bindModalEvents } from "./bindings.js";
+import { fetchSupportedModels } from "../core/api.js";
+import { bindHistoriographyEvents } from "./historiography-bindings.js";
+import { bindHanlinyuanEvents } from "./hanlinyuan-bindings.js";
+import { showContentModal } from "./page-window.js";
+const extensionFolderPath = `scripts/extensions/third-party/${extensionName}`;
+
+
+async function loadSettings() {
+ extension_settings[extensionName] = {
+ ...defaultSettings,
+ ...(extension_settings[extensionName] || {}),
+ };
+
+
+ checkAuthorization();
+
+
+ const autoLogin = localStorage.getItem("plugin_auto_login") === "true";
+ console.log(
+ `[Amily2-调试] 授权状态: ${pluginAuthStatus.authorized}, 自动登录标志: ${autoLogin}`,
+ );
+ if (autoLogin && pluginAuthStatus.authorized) {
+ console.log("[Amily2号] 检测到有效授权,将执行自动UI更新。");
+ }
+
+ $("#expiry_info").html(displayExpiryInfo());
+ updateUI();
+
+ if (pluginAuthStatus.authorized && extension_settings[extensionName].apiUrl) {
+ const cachedModels = localStorage.getItem("cached_models_amily2");
+ if (cachedModels) {
+ const models = JSON.parse(cachedModels);
+ console.log(`[Amily2号] 从缓存加载模型列表 (${models.length}个)`);
+ setAvailableModels(models);
+ populateModelDropdown();
+ } else {
+ toastr.info("正在自动加载模型列表...", "Amily2号");
+ setTimeout(async () => {
+ const models = await fetchSupportedModels();
+ if (models.length > 0) {
+ setAvailableModels(models);
+ localStorage.setItem("cached_models_amily2", JSON.stringify(models));
+ populateModelDropdown();
+ }
+ }, 500);
+ }
+ }
+}
+
+export function createDrawer() {
+ const settings = extension_settings[extensionName];
+ const location = settings.iconLocation || 'topbar';
+
+ if (location === 'topbar') {
+ if ($("#amily2_main_drawer").length > 0) return;
+
+
+ const amily2DrawerHtml = `
+
+ `;
+ $("#sys-settings-button").after(amily2DrawerHtml);
+
+ $(document).off("mousedown.amily2Drawer").on(
+ "mousedown.amily2Drawer",
+ "#amily2_drawer_icon",
+ async function (e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ 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');
+ },
+ });
+ });
+ $('.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);
+ const mainContainer = contentPanel.find('#amily2_chat_optimiser');
+
+ if (mainContainer.length) {
+ // 加载内阁密室
+ const additionalFeaturesContent = await $.get(`${extensionFolderPath}/assets/Amily2-AdditionalFeatures.html`);
+ const additionalPanelHtml = `
${additionalFeaturesContent}
`;
+ mainContainer.append(additionalPanelHtml);
+
+ // 加载翰林院
+ const hanlinyuanContent = await $.get(`${extensionFolderPath}/assets/hanlinyuan.html`);
+ const hanlinyuanPanelHtml = `
${hanlinyuanContent}
`;
+ mainContainer.append(hanlinyuanPanelHtml);
+ }
+
+ await loadSettings();
+ bindModalEvents();
+ bindHistoriographyEvents();
+ bindHanlinyuanEvents(); // 【圣谕】召唤翰林院工匠
+ contentPanel.data("initialized", true);
+ console.log("[Amily-重构] 顶栏宫殿已按模块化蓝图竣工。");
+ applyUpdateIndicator();
+ } catch (error) {
+ console.error("[Amily-建设部] 紧急报告:加载模块化蓝图时发生意外:", error);
+ contentPanel.html('
紧急报告:无法加载Amily2号府邸内饰。
');
+ }
+ }
+ },
+ );
+
+ } else if (location === 'extensions') {
+ if ($("#extensions_settings2 #amily2_chat_optimiser").length > 0) return;
+ const amilyFrameHtml = `
+
+ `;
+
+ $('#extensions_settings2').append(amilyFrameHtml);
+
+ (async () => {
+ try {
+ console.log("[Amily-重构] 收到指令,开始在'扩展'官方区域模块化建造宫殿。");
+ const contentPanel = $('#amily2_extension_frame .inline-drawer-content');
+ const modalContent = await $.get(`${extensionFolderPath}/assets/amily2-modal.html`);
+ contentPanel.html(modalContent);
+ const mainContainer = contentPanel.find('#amily2_chat_optimiser');
+
+ if (mainContainer.length) {
+ // 加载内阁密室
+ const additionalFeaturesContent = await $.get(`${extensionFolderPath}/assets/Amily2-AdditionalFeatures.html`);
+ const additionalPanelHtml = `
${additionalFeaturesContent}
`;
+ mainContainer.append(additionalPanelHtml);
+
+ // 加载翰林院
+ const hanlinyuanContent = await $.get(`${extensionFolderPath}/assets/hanlinyuan.html`);
+ const hanlinyuanPanelHtml = `
${hanlinyuanContent}
`;
+ mainContainer.append(hanlinyuanPanelHtml);
+ }
+
+ await loadSettings();
+ bindModalEvents();
+ bindHistoriographyEvents();
+ bindHanlinyuanEvents(); // 【圣谕】再次召唤,以适应不同宫殿
+ applyUpdateIndicator();
+ } catch (error) {
+ console.error("[Amily-建设部] 紧急报告:加载模块化蓝图时发生意外:", error);
+ $('#extensions_settings2').append('
紧急报告:在扩展区域建造Amily2号府邸时发生意外。
');
+ }
+ })();
+ }
+}