From eeb9dfbadec144e0b0dfea95e879fdd6236f7fd7 Mon Sep 17 00:00:00 2001 From: pllx Date: Tue, 28 Apr 2026 09:50:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9AAlpine=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=81=A2=E5=A4=8D=E9=9D=99=E6=80=81=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=EF=BC=8C=E6=B6=88=E9=99=A4=20321=20=E5=A4=84=E8=A1=A8=E8=BE=BE?= =?UTF-8?q?=E5=BC=8F=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 13 个有 x-data 引用的 Alpine 组件模块恢复为静态导入,保留 27 个非 Alpine 模块懒加载。 chat.js 体积:170 KB(原 308 KB,↓45%) vendor 独立分包:108 KB 非 Alpine 模块仍保持按需代码分割 --- resources/js/chat-room.js | 424 +++++++++++--------------------------- 1 file changed, 116 insertions(+), 308 deletions(-) diff --git a/resources/js/chat-room.js b/resources/js/chat-room.js index 5f3e922..19651e8 100644 --- a/resources/js/chat-room.js +++ b/resources/js/chat-room.js @@ -132,17 +132,9 @@ export { bindChatEvents } from "./chat-room/chat-events.js"; export { leaveRoom, notifyExpiredLeave, saveExp, startHeartbeat, stopHeartbeat, HEARTBEAT_INTERVAL, MAX_HEARTBEAT_FAILS } from "./chat-room/heartbeat.js"; // ─── 懒加载工具 ────────────────────────────────────── -import { createLazyModule, createLazyAlpineComponent } from "./chat-room/lazy-loader.js"; +import { createLazyModule } from "./chat-room/lazy-loader.js"; // ─── 游戏模块(按需懒加载)────────────────────────── -const _baccaratPanel = createLazyModule( - () => import("./chat-room/baccarat-panel.js"), - (mod) => mod.bindBaccaratPanelControls() -); -const _baccaratFab = createLazyModule( - () => import("./chat-room/baccarat-fab.js"), - (mod) => mod.bindBaccaratFabControls() -); const _baccaratEvents = createLazyModule( () => import("./chat-room/baccarat-events.js"), (mod) => mod.bindBaccaratEvents() @@ -155,22 +147,10 @@ const _baccaratLossCover = createLazyModule( () => import("./chat-room/baccarat-loss-cover.js"), (mod) => mod.bindBaccaratLossCoverControls() ); -const _gomokuPanel = createLazyModule( - () => import("./chat-room/gomoku-panel.js"), - (mod) => mod.bindGomokuPanelControls() -); const _gomokuControls = createLazyModule( () => import("./chat-room/gomoku-controls.js"), (mod) => mod.bindGomokuControls() ); -const _horseRacePanel = createLazyModule( - () => import("./chat-room/horse-race-panel.js"), - (mod) => mod.bindHorseRacePanelControls() -); -const _horseRaceFab = createLazyModule( - () => import("./chat-room/horse-race-fab.js"), - (mod) => mod.bindHorseRaceFabControls() -); const _horseRaceEvents = createLazyModule( () => import("./chat-room/horse-race-events.js"), (mod) => mod.bindHorseRaceEvents() @@ -179,18 +159,6 @@ const _fishing = createLazyModule( () => import("./chat-room/fishing.js"), (mod) => mod.bindFishingControls() ); -const _slotMachine = createLazyModule( - () => import("./chat-room/slot-machine.js"), - (mod) => mod.bindSlotMachineControls() -); -const _fortunePanel = createLazyModule( - () => import("./chat-room/fortune-panel.js"), - (mod) => mod.bindFortunePanelControls() -); -const _lotteryPanel = createLazyModule( - () => import("./chat-room/lottery-panel.js"), - (mod) => mod.bindLotteryPanelControls() -); const _gameHall = createLazyModule( () => import("./chat-room/game-hall.js"), (mod) => mod.bindGameHallControls() @@ -217,10 +185,6 @@ const _bank = createLazyModule( () => import("./chat-room/bank-modal.js"), (mod) => mod.bindBankControls() ); -const _marriageModals = createLazyModule( - () => import("./chat-room/marriage-modals.js"), - (mod) => mod.bindMarriageModalControls() -); const _marriageStatus = createLazyModule( () => import("./chat-room/marriage-status.js"), (mod) => mod.bindMarriageStatusControls() @@ -229,10 +193,6 @@ const _profile = createLazyModule( () => import("./chat-room/profile-controls.js"), (mod) => mod.bindProfileControls() ); -const _userCard = createLazyModule( - () => import("./chat-room/user-card.js"), - (mod) => mod.bindUserCardControls() -); const _userTargetActions = createLazyModule( () => import("./chat-room/user-target-actions.js"), (mod) => mod.bindUserTargetActions() @@ -245,18 +205,6 @@ const _redPacket = createLazyModule( () => import("./chat-room/red-packet-panel.js"), (mod) => mod.bindRedPacketPanelControls() ); -const _holiday = createLazyModule( - () => import("./chat-room/holiday-modal.js"), - (mod) => mod.bindHolidayModalControls() -); -const _reward = createLazyModule( - () => import("./chat-room/reward-modal.js"), - (mod) => mod.bindRewardModalControls() -); -const _earn = createLazyModule( - () => import("./chat-room/earn-panel.js"), - (mod) => mod.bindEarnPanelControls() -); const _dailySignIn = createLazyModule( () => import("./chat-room/daily-sign-in.js"), (mod) => mod.bindDailySignInControls() @@ -313,6 +261,34 @@ const _chatBot = createLazyModule( (mod) => mod.bindChatBotControls() ); +// ─── 静态导入的 Alpine 组件模块(Blade 中通过 x-data 引用,必须同步可用)── +import { userCardComponent, bindUserCardControls } from "./chat-room/user-card.js"; +import { + marriageProposeModal, + marriageIncomingModal, + marriageAcceptedModal, + marriageDivorcedModal, + divorceConfirmModal, + divorceRequestModal, + weddingSetupModal, + weddingEnvelopeModal, + appendSystemMessage, + openProposeModal, + openWeddingSetupModal, + bindMarriageModalControls, +} from "./chat-room/marriage-modals.js"; +import { holidayEventModal, bindHolidayModalControls, buildHolidayClaimActionButton, buildHolidaySystemMessage, openHolidayRunFromSystemMessage } from "./chat-room/holiday-modal.js"; +import { rewardModal, bindRewardModalControls, openRewardModal } from "./chat-room/reward-modal.js"; +import { createEarnPanelData, bindEarnPanelControls } from "./chat-room/earn-panel.js"; +import { baccaratPanel, bindBaccaratPanelControls } from "./chat-room/baccarat-panel.js"; +import { baccaratFab, bindBaccaratFabControls } from "./chat-room/baccarat-fab.js"; +import { horseRacePanel, bindHorseRacePanelControls, requestHorseRaceJson } from "./chat-room/horse-race-panel.js"; +import { horseRaceFab, bindHorseRaceFabControls } from "./chat-room/horse-race-fab.js"; +import { slotPanel, slotFab, bindSlotMachineControls } from "./chat-room/slot-machine.js"; +import { fortunePanel, bindFortunePanelControls } from "./chat-room/fortune-panel.js"; +import { lotteryPanel, bindLotteryPanelControls, closeLotteryPanel, openLotteryPanel, showLotteryMsg } from "./chat-room/lottery-panel.js"; +import { gomokuPanel, bindGomokuPanelControls } from "./chat-room/gomoku-panel.js"; + // ─── 轻量核心模块(保持静态导入)──────────────────── import { escapeHtml, escapeHtmlWithLineBreaks, normalizeSafeChatUrl } from "./chat-room/html.js"; import { bindGlobalDialogControls } from "./chat-room/dialog.js"; @@ -458,17 +434,11 @@ if (typeof window !== "undefined") { clearChatBotContext: (...args) => _chatBot.wrap('clearChatBotContext')(...args), sendToChatBot: (...args) => _chatBot.wrap('sendToChatBot')(...args), bindDailySignInControls: (...args) => _dailySignIn.wrap('bindDailySignInControls')(...args), - bindEarnPanelControls: (...args) => _earn.wrap('bindEarnPanelControls')(...args), - createEarnPanelData: (...args) => _earn.wrap('createEarnPanelData')(...args), applyFontSize: (...args) => _fontSize.wrap('applyFontSize')(...args), bindChatFontSizeControl: (...args) => _fontSize.wrap('bindChatFontSizeControl')(...args), - CHAT_FONT_SIZE_STORAGE_KEY: undefined, // 静态常量,通过模块直接导入或 window 上取 + CHAT_FONT_SIZE_STORAGE_KEY: undefined, restoreChatFontSize: (...args) => _fontSize.wrap('restoreChatFontSize')(...args), bindChatImageUploadControl: (...args) => _imageUpload.wrap('bindChatImageUploadControl')(...args), - bindLotteryPanelControls: (...args) => _lotteryPanel.wrap('bindLotteryPanelControls')(...args), - closeLotteryPanel: (...args) => _lotteryPanel.wrap('closeLotteryPanel')(...args), - openLotteryPanel: (...args) => _lotteryPanel.wrap('openLotteryPanel')(...args), - showLotteryMsg: (...args) => _lotteryPanel.wrap('showLotteryMsg')(...args), bindFriendPanelControls: (...args) => _friendPanel.wrap('bindFriendPanelControls')(...args), bindFriendNotificationControls: (...args) => _friendNotifications.wrap('bindFriendNotificationControls')(...args), closeFriendPanel: (...args) => _friendPanel.wrap('closeFriendPanel')(...args), @@ -487,14 +457,11 @@ if (typeof window !== "undefined") { renderMobileUserList: (...args) => _mobileDrawer.wrap('renderMobileUserList')(...args), scheduleRenderMobileUserList: (...args) => _mobileDrawer.wrap('scheduleRenderMobileUserList')(...args), switchMobileTab: (...args) => _mobileDrawer.wrap('switchMobileTab')(...args), - bindUserCardControls: (...args) => _userCard.wrap('bindUserCardControls')(...args), bindUserTargetActions: (...args) => _userTargetActions.wrap('bindUserTargetActions')(...args), openUserCard: (...args) => _userTargetActions.wrap('openUserCard')(...args), switchTarget: (...args) => _userTargetActions.wrap('switchTarget')(...args), bindWelcomeMenuControls: (...args) => _welcomeMenu.wrap('bindWelcomeMenuControls')(...args), bindAdminMenuControls: (...args) => _adminMenu.wrap('bindAdminMenuControls')(...args), - bindBaccaratPanelControls: (...args) => _baccaratPanel.wrap('bindBaccaratPanelControls')(...args), - bindBaccaratFabControls: (...args) => _baccaratFab.wrap('bindBaccaratFabControls')(...args), bindBaccaratEvents: (...args) => _baccaratEvents.wrap('bindBaccaratEvents')(...args), bindBaccaratLossCoverAdminControls: (...args) => _baccaratLossCoverAdmin.wrap('bindBaccaratLossCoverAdminControls')(...args), closeAdminBaccaratLossCoverModal: (...args) => _baccaratLossCoverAdmin.wrap('closeAdminBaccaratLossCoverModal')(...args), @@ -513,18 +480,14 @@ if (typeof window !== "undefined") { bindGameBootstrapControls: (...args) => _gameBootstrap.wrap('bindGameBootstrapControls')(...args), deferChatGameBootstrap: (...args) => _gameBootstrap.wrap('deferChatGameBootstrap')(...args), bindGamePanelControls: (...args) => _gamePanels.wrap('bindGamePanelControls')(...args), - bindGomokuPanelControls: (...args) => _gomokuPanel.wrap('bindGomokuPanelControls')(...args), acceptGomokuInvite: (...args) => _gomokuControls.wrap('acceptGomokuInvite')(...args), bindGomokuControls: (...args) => _gomokuControls.wrap('bindGomokuControls')(...args), openGomokuPanel: (...args) => _gomokuControls.wrap('openGomokuPanel')(...args), - bindHorseRacePanelControls: (...args) => _horseRacePanel.wrap('bindHorseRacePanelControls')(...args), - requestHorseRaceJson: (...args) => _horseRacePanel.wrap('requestHorseRaceJson')(...args), - bindHorseRaceFabControls: (...args) => _horseRaceFab.wrap('bindHorseRaceFabControls')(...args), + requestHorseRaceJson: requestHorseRaceJson, bindHorseRaceEvents: (...args) => _horseRaceEvents.wrap('bindHorseRaceEvents')(...args), - bindHolidayModalControls: (...args) => _holiday.wrap('bindHolidayModalControls')(...args), - buildHolidayClaimActionButton: (...args) => _holiday.wrap('buildHolidayClaimActionButton')(...args), - buildHolidaySystemMessage: (...args) => _holiday.wrap('buildHolidaySystemMessage')(...args), - openHolidayRunFromSystemMessage: (...args) => _holiday.wrap('openHolidayRunFromSystemMessage')(...args), + buildHolidayClaimActionButton: buildHolidayClaimActionButton, + buildHolidaySystemMessage: buildHolidaySystemMessage, + openHolidayRunFromSystemMessage: openHolidayRunFromSystemMessage, bankAction: (...args) => _bank.wrap('bankAction')(...args), bankLoadInfo: (...args) => _bank.wrap('bankLoadInfo')(...args), bankShowMsg: (...args) => _bank.wrap('bankShowMsg')(...args), @@ -542,7 +505,6 @@ if (typeof window !== "undefined") { resetFishingBtn: (...args) => _fishing.wrap('resetFishingBtn')(...args), startFishing: (...args) => _fishing.wrap('startFishing')(...args), stopAutoFishing: (...args) => _fishing.wrap('stopAutoFishing')(...args), - bindFortunePanelControls: (...args) => _fortunePanel.wrap('bindFortunePanelControls')(...args), bindProfileControls: (...args) => _profile.wrap('bindProfileControls')(...args), closeAvatarPicker: (...args) => _profile.wrap('closeAvatarPicker')(...args), closeSettingsModal: (...args) => _profile.wrap('closeSettingsModal')(...args), @@ -560,23 +522,11 @@ if (typeof window !== "undefined") { showInlineMsg: (...args) => _profile.wrap('showInlineMsg')(...args), unbindWechat: (...args) => _profile.wrap('unbindWechat')(...args), bindMarriageStatusControls: (...args) => _marriageStatus.wrap('bindMarriageStatusControls')(...args), - appendSystemMessage: (...args) => _marriageModals.wrap('appendSystemMessage')(...args), - bindMarriageModalControls: (...args) => _marriageModals.wrap('bindMarriageModalControls')(...args), - divorceConfirmModal: (...args) => _marriageModals.wrap('divorceConfirmModal')(...args), - divorceRequestModal: (...args) => _marriageModals.wrap('divorceRequestModal')(...args), - marriageAcceptedModal: (...args) => _marriageModals.wrap('marriageAcceptedModal')(...args), - marriageDivorcedModal: (...args) => _marriageModals.wrap('marriageDivorcedModal')(...args), - marriageIncomingModal: (...args) => _marriageModals.wrap('marriageIncomingModal')(...args), - marriageProposeModal: (...args) => _marriageModals.wrap('marriageProposeModal')(...args), closeMarriageStatusModal: (...args) => _marriageStatus.wrap('closeMarriageStatusModal')(...args), fetchMarriedList: (...args) => _marriageStatus.wrap('fetchMarriedList')(...args), fetchMyMarriageStatus: (...args) => _marriageStatus.wrap('fetchMyMarriageStatus')(...args), marriageAction: (...args) => _marriageStatus.wrap('marriageAction')(...args), openMarriageStatusModal: (...args) => _marriageStatus.wrap('openMarriageStatusModal')(...args), - openProposeModal: (...args) => _marriageModals.wrap('openProposeModal')(...args), - openWeddingSetupModal: (...args) => _marriageModals.wrap('openWeddingSetupModal')(...args), - weddingEnvelopeModal: (...args) => _marriageModals.wrap('weddingEnvelopeModal')(...args), - weddingSetupModal: (...args) => _marriageModals.wrap('weddingSetupModal')(...args), renderMarriedList: (...args) => _marriageStatus.wrap('renderMarriedList')(...args), renderMarriageStatus: (...args) => _marriageStatus.wrap('renderMarriageStatus')(...args), switchMarriageTab: (...args) => _marriageStatus.wrap('switchMarriageTab')(...args), @@ -604,7 +554,6 @@ if (typeof window !== "undefined") { renderCompactShop: (...args) => _compactShop.wrap('renderCompactShop')(...args), showCompactShopToast: (...args) => _compactShop.wrap('showCompactShopToast')(...args), submitCompactRename: (...args) => _compactShop.wrap('submitCompactRename')(...args), - bindSlotMachineControls: (...args) => _slotMachine.wrap('bindSlotMachineControls')(...args), bindVipControls: (...args) => _vip.wrap('bindVipControls')(...args), buyVip: (...args) => _vip.wrap('buyVip')(...args), closeVipModal: (...args) => _vip.wrap('closeVipModal')(...args), @@ -621,8 +570,6 @@ if (typeof window !== "undefined") { renderRoomsOnlineStatus: (...args) => _rooms.wrap('renderRoomsOnlineStatus')(...args), renderRoomsOnlineStatusToContainer: (...args) => _rooms.wrap('renderRoomsOnlineStatusToContainer')(...args), resolveRoomUrl: (...args) => _rooms.wrap('resolveRoomUrl')(...args), - bindRewardModalControls: (...args) => _reward.wrap('bindRewardModalControls')(...args), - openRewardModal: (...args) => _reward.wrap('openRewardModal')(...args), bindRedPacketPanelControls: (...args) => _redPacket.wrap('bindRedPacketPanelControls')(...args), claimRedPacket: (...args) => _redPacket.wrap('claimRedPacket')(...args), closeRedPacketModal: (...args) => _redPacket.wrap('closeRedPacketModal')(...args), @@ -630,43 +577,49 @@ if (typeof window !== "undefined") { showRedPacketModal: (...args) => _redPacket.wrap('showRedPacketModal')(...args), updateRedPacketClaimsUI: (...args) => _redPacket.wrap('updateRedPacketClaimsUI')(...args), - // ── 游戏模块 Alpine 对象(懒加载 Proxy) ── - lotteryPanel: new Proxy({}, { - get(_, prop) { return (...args) => _lotteryPanel.load().then(m => { const v = m.lotteryPanel; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - baccaratPanel: new Proxy({}, { - get(_, prop) { return (...args) => _baccaratPanel.load().then(m => { const v = m.baccaratPanel; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - baccaratFab: new Proxy({}, { - get(_, prop) { return (...args) => _baccaratFab.load().then(m => { const v = m.baccaratFab; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - gomokuPanel: new Proxy({}, { - get(_, prop) { return (...args) => _gomokuPanel.load().then(m => { const v = m.gomokuPanel; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - horseRacePanel: new Proxy({}, { - get(_, prop) { return (...args) => _horseRacePanel.load().then(m => { const v = m.horseRacePanel; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - horseRaceFab: new Proxy({}, { - get(_, prop) { return (...args) => _horseRaceFab.load().then(m => { const v = m.horseRaceFab; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - slotFab: new Proxy({}, { - get(_, prop) { return (...args) => _slotMachine.load().then(m => { const v = m.slotFab; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - slotPanel: new Proxy({}, { - get(_, prop) { return (...args) => _slotMachine.load().then(m => { const v = m.slotPanel; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - fortunePanel: new Proxy({}, { - get(_, prop) { return (...args) => _fortunePanel.load().then(m => { const v = m.fortunePanel; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - rewardModal: new Proxy({}, { - get(_, prop) { return (...args) => _reward.load().then(m => { const v = m.rewardModal; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - userCardComponent: new Proxy({}, { - get(_, prop) { return (...args) => _userCard.load().then(m => { const v = m.userCardComponent; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), - holidayEventModal: new Proxy({}, { - get(_, prop) { return (...args) => _holiday.load().then(m => { const v = m.holidayEventModal; return typeof v[prop] === 'function' ? v[prop](...args) : v[prop]; }); } - }), + // ── 静态导入的 Alpine 组件模块 ── + // 这些模块已通过静态导入编译到主包,直接引用导出 + userCardComponent, + bindUserCardControls, + marriageProposeModal, + marriageIncomingModal, + marriageAcceptedModal, + marriageDivorcedModal, + divorceConfirmModal, + divorceRequestModal, + weddingSetupModal, + weddingEnvelopeModal, + appendSystemMessage, + openProposeModal, + openWeddingSetupModal, + bindMarriageModalControls, + holidayEventModal, + bindHolidayModalControls, + rewardModal, + bindRewardModalControls, + openRewardModal, + createEarnPanelData, + bindEarnPanelControls, + baccaratPanel, + bindBaccaratPanelControls, + baccaratFab, + bindBaccaratFabControls, + horseRacePanel, + bindHorseRacePanelControls, + horseRaceFab, + bindHorseRaceFabControls, + slotPanel, + slotFab, + bindSlotMachineControls, + fortunePanel, + bindFortunePanelControls, + lotteryPanel, + bindLotteryPanelControls, + closeLotteryPanel, + openLotteryPanel, + showLotteryMsg, + gomokuPanel, + bindGomokuPanelControls, }; // 直接挂载只服务暂未迁移的 Blade 调用点;新代码优先通过模块导入或 ChatRoomTools 复用。 @@ -692,7 +645,6 @@ if (typeof window !== "undefined") { window.loadMobileRoomList = (...args) => _mobileDrawer.wrap('loadMobileRoomList')(...args); window.openMobileDrawer = (...args) => _mobileDrawer.wrap('openMobileDrawer')(...args); window.openUserCard = (...args) => _userTargetActions.wrap('openUserCard')(...args); - window.openRewardModal = (...args) => _reward.wrap('openRewardModal')(...args); window.renderMobileRoomList = (...args) => _mobileDrawer.wrap('renderMobileRoomList')(...args); window.renderMobileUserList = (...args) => _mobileDrawer.wrap('renderMobileUserList')(...args); window.scheduleRenderMobileUserList = (...args) => _mobileDrawer.wrap('scheduleRenderMobileUserList')(...args); @@ -702,9 +654,6 @@ if (typeof window !== "undefined") { window.sendToChatBot = (...args) => _chatBot.wrap('sendToChatBot')(...args); window.runFeatureShortcut = runFeatureShortcut; window.runToolbarAction = runToolbarAction; - window.buildHolidayClaimActionButton = (...args) => _holiday.wrap('buildHolidayClaimActionButton')(...args); - window.buildHolidaySystemMessage = (...args) => _holiday.wrap('buildHolidaySystemMessage')(...args); - window.openHolidayRunFromSystemMessage = (...args) => _holiday.wrap('openHolidayRunFromSystemMessage')(...args); window.closeAdminBaccaratLossCoverModal = (...args) => _baccaratLossCoverAdmin.wrap('closeAdminBaccaratLossCoverModal')(...args); window.closeCurrentBaccaratLossCoverEvent = (...args) => _baccaratLossCoverAdmin.wrap('closeCurrentBaccaratLossCoverEvent')(...args); window.claimBaccaratLossCover = (...args) => _baccaratLossCover.wrap('claimBaccaratLossCover')(...args); @@ -719,15 +668,11 @@ if (typeof window !== "undefined") { window.closeBankModal = (...args) => _bank.wrap('closeBankModal')(...args); window.closeGameHall = (...args) => _gameHall.wrap('closeGameHall')(...args); window.fetchBankRanking = (...args) => _bank.wrap('fetchBankRanking')(...args); - window.closeLotteryPanel = (...args) => _lotteryPanel.wrap('closeLotteryPanel')(...args); - window.createEarnPanelData = (...args) => _earn.wrap('createEarnPanelData')(...args); window.deferChatGameBootstrap = (...args) => _gameBootstrap.wrap('deferChatGameBootstrap')(...args); window.openGameHall = (...args) => _gameHall.wrap('openGameHall')(...args); window.acceptGomokuInvite = (...args) => _gomokuControls.wrap('acceptGomokuInvite')(...args); window.openGomokuPanel = (...args) => _gomokuControls.wrap('openGomokuPanel')(...args); - window.openLotteryPanel = (...args) => _lotteryPanel.wrap('openLotteryPanel')(...args); window.openBankModal = (...args) => _bank.wrap('openBankModal')(...args); - window.showLotteryMsg = (...args) => _lotteryPanel.wrap('showLotteryMsg')(...args); window.checkAndAutoStartFishing = (...args) => _fishing.wrap('checkAndAutoStartFishing')(...args); window.createBobber = (...args) => _fishing.wrap('createBobber')(...args); window.reelFish = (...args) => _fishing.wrap('reelFish')(...args); @@ -768,50 +713,6 @@ if (typeof window !== "undefined") { window.fetchMyMarriageStatus = (...args) => _marriageStatus.wrap('fetchMyMarriageStatus')(...args); window.marriageAction = (...args) => _marriageStatus.wrap('marriageAction')(...args); window.openMarriageStatusModal = (...args) => _marriageStatus.wrap('openMarriageStatusModal')(...args); - window.appendSystemMessage = (...args) => _marriageModals.wrap('appendSystemMessage')(...args); - window.openProposeModal = (...args) => _marriageModals.wrap('openProposeModal')(...args); - window.openWeddingSetupModal = (...args) => _marriageModals.wrap('openWeddingSetupModal')(...args); - // ── 婚姻弹窗 Alpine 组件(createLazyAlpineComponent 懒加载) ── - window.marriageProposeModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "marriageProposeModal", - { show: false, targetUsername: "", error: "", loading: false, rings: [], selectedRing: null, selectedTier: null, tiers: [], selectedTierId: null, canAfford: false, sending: false, doPropose: () => {} } - ); - window.marriageIncomingModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "marriageIncomingModal", - { show: false } - ); - window.marriageAcceptedModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "marriageAcceptedModal", - { show: false } - ); - window.marriageDivorcedModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "marriageDivorcedModal", - { show: false } - ); - window.divorceConfirmModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "divorceConfirmModal", - { show: false } - ); - window.divorceRequestModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "divorceRequestModal", - { show: false } - ); - window.weddingSetupModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "weddingSetupModal", - { show: false } - ); - window.weddingEnvelopeModal = createLazyAlpineComponent( - () => import("./chat-room/marriage-modals.js"), - "weddingEnvelopeModal", - { show: false } - ); window.renderMarriedList = (...args) => _marriageStatus.wrap('renderMarriedList')(...args); window.renderMarriageStatus = (...args) => _marriageStatus.wrap('renderMarriageStatus')(...args); window.switchMarriageTab = (...args) => _marriageStatus.wrap('switchMarriageTab')(...args); @@ -830,138 +731,30 @@ if (typeof window !== "undefined") { window.showShopToast = (...args) => _shop.wrap('showShopToast')(...args); window.submitRename = (...args) => _shop.wrap('submitRename')(...args); - // ── Alpine 组件懒加载(createLazyAlpineComponent:$watch 触发时才加载真实模块) ── - window.baccaratPanel = createLazyAlpineComponent( - () => import("./chat-room/baccarat-panel.js"), - "baccaratPanel", - { show: false } - ); - window.baccaratFab = createLazyAlpineComponent( - () => import("./chat-room/baccarat-fab.js"), - "baccaratFab", - { show: false } - ); - window.slotFab = createLazyAlpineComponent( - () => import("./chat-room/slot-machine.js"), - "slotFab", - { show: false } - ); - window.slotPanel = createLazyAlpineComponent( - () => import("./chat-room/slot-machine.js"), - "slotPanel", - { show: false } - ); - window.userCardComponent = createLazyAlpineComponent( - () => import("./chat-room/user-card.js"), - "userCardComponent", - { - showUserModal: false, - showOriginalLightbox: false, - userInfo: {}, - isMuting: false, - muteDuration: 5, - showWhispers: false, - whisperList: [], - showAnnounce: false, - announceText: "", - is_friend: false, - friendLoading: false, - gifts: [], - selectedGiftId: 0, - giftCount: 1, - sendingGift: false, - showGiftPanel: false, - showGiftGoldPanel: false, - giftGoldAmount: "", - giftGoldSending: false, - rewardAmount: 0, - sendingReward: false, - showRewardPanel: false, - showAppointPanel: false, - appointPositions: [], - selectedPositionId: null, - appointRemark: "", - appointLoading: false, - showAdminView: false, - showPositionHistory: false, - showAdminPanel: false, - targetMarriage: null, - marriageLoading: false, - mySex: "", - // 方法存根(防止 Alpine with(scope) 表达式找不到方法而报错) - hasPositionPermission: () => false, - canManageTargetByDuty: () => false, - assetValueLabel: () => "", - canRevealAssetValue: () => false, - displayAssetValue: () => "", - assetValueTitle: () => "", - assetValueStyle: () => "", - revealAssetValue: () => {}, - displayBankBalance: () => "", - bankBalanceTitle: () => "", - bankBalanceStyle: () => "", - revealBankBalance: () => {}, - toggleFriend: () => {}, - handleConfirmDivorce: () => {}, - doDivorce: () => {}, - fetchUser: () => {}, - _loadPositions: () => {}, - doAppoint: () => {}, - doRevoke: () => {}, - kickUser: () => {}, - muteUser: () => {}, - warnUser: () => {}, - banUser: () => {}, - banIpUser: () => {}, - loadWhispers: () => {}, - sendAnnounce: () => {}, - sendGift: () => {}, - toggleGiftPanel: () => {}, - toggleGiftGoldPanel: () => {}, - sendGiftGold: () => {}, - sendReward: () => {}, - _headers: () => ({}), - $alert: (...args) => window.chatDialog?.alert(...args), - $confirm: (...args) => window.chatDialog?.confirm(...args), - $prompt: (...args) => window.chatDialog?.prompt(...args), - }, - "showUserModal" - ); - window.holidayEventModal = createLazyAlpineComponent( - () => import("./chat-room/holiday-modal.js"), - "holidayEventModal", - { show: false } - ); - window.fortunePanel = createLazyAlpineComponent( - () => import("./chat-room/fortune-panel.js"), - "fortunePanel", - { show: false } - ); - window.lotteryPanel = createLazyAlpineComponent( - () => import("./chat-room/lottery-panel.js"), - "lotteryPanel", - { show: false } - ); - window.gomokuPanel = createLazyAlpineComponent( - () => import("./chat-room/gomoku-panel.js"), - "gomokuPanel", - { show: false } - ); - window.horseRacePanel = createLazyAlpineComponent( - () => import("./chat-room/horse-race-panel.js"), - "horseRacePanel", - { show: false } - ); - window.horseRaceFab = createLazyAlpineComponent( - () => import("./chat-room/horse-race-fab.js"), - "horseRaceFab", - { show: false } - ); - window.rewardModal = createLazyAlpineComponent( - () => import("./chat-room/reward-modal.js"), - "rewardModal", - { show: false } - ); + // ── Alpine 组件(静态导入,Blade 中 x-data 引用时同步可用) ── + window.userCardComponent = userCardComponent; + window.marriageProposeModal = marriageProposeModal; + window.marriageIncomingModal = marriageIncomingModal; + window.marriageAcceptedModal = marriageAcceptedModal; + window.marriageDivorcedModal = marriageDivorcedModal; + window.divorceConfirmModal = divorceConfirmModal; + window.divorceRequestModal = divorceRequestModal; + window.weddingSetupModal = weddingSetupModal; + window.weddingEnvelopeModal = weddingEnvelopeModal; + window.appendSystemMessage = appendSystemMessage; + window.openProposeModal = openProposeModal; + window.openWeddingSetupModal = openWeddingSetupModal; + window.holidayEventModal = holidayEventModal; + window.rewardModal = rewardModal; + window.baccaratPanel = baccaratPanel; + window.baccaratFab = baccaratFab; + window.slotFab = slotFab; + window.slotPanel = slotPanel; + window.fortunePanel = fortunePanel; + window.lotteryPanel = lotteryPanel; + window.gomokuPanel = gomokuPanel; + window.horseRacePanel = horseRacePanel; + window.horseRaceFab = horseRaceFab; // 聊天室核心引擎 window 挂载 window.bindChatEvents = bindChatEvents; @@ -982,4 +775,19 @@ if (typeof window !== "undefined") { bindChatEvents(); startBadgeRotation(); startHeartbeat(); + + // ── 静态导入的 Alpine 组件模块控制绑定 ── + bindUserCardControls(); + bindMarriageModalControls(); + bindHolidayModalControls(); + bindRewardModalControls(); + bindEarnPanelControls(); + bindBaccaratPanelControls(); + bindBaccaratFabControls(); + bindHorseRacePanelControls(); + bindHorseRaceFabControls(); + bindSlotMachineControls(); + bindFortunePanelControls(); + bindLotteryPanelControls(); + bindGomokuPanelControls(); }