usePreviewFullscreen-DOsgAeT7.js 2.9 KB

1
  1. import{i as e}from"./chunk-aKtaBQYM.js";import{C as t,D as n,w as r}from"./client-BdOyoZJz.js";import{t as i}from"./maximize-2-Cggm3z8J.js";import{t as a}from"./minimize-2-BLq3FJZO.js";import{t as o}from"./x-Dctff5l9.js";var s=e(n(),1),c=t(),l=`w-[min(1800px,96vw)] h-[94vh]`,u=`p-1.5 rounded hover:bg-bambu-dark text-bambu-gray hover:text-white transition-colors`;function d({title:e,fullscreen:t,onClose:n,icon:d,titleExtra:f,actions:p,closeOnBackdropClick:m,children:h}){let{t:g}=r(),{panelRef:_,isFullscreen:v,toggleFullscreen:y}=t;return(0,s.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!document.fullscreenElement&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,c.jsx)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 ${v?`p-0`:`p-2 sm:p-4`}`,onClick:m?n:void 0,children:(0,c.jsxs)(`div`,{ref:_,className:`bg-bambu-dark-secondary border border-bambu-dark-tertiary flex flex-col ${v?`w-full h-full max-w-none rounded-none`:`${l} max-w-full max-h-full rounded-lg`}`,onClick:m?e=>e.stopPropagation():void 0,children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-4 p-4 border-b border-bambu-dark-tertiary flex-shrink-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[d,(0,c.jsx)(`h2`,{className:`text-lg font-semibold text-white truncate`,children:e}),f]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[p,(0,c.jsx)(`button`,{onClick:y,className:u,"aria-label":g(v?`fileManager.preview.exitFullscreen`:`fileManager.preview.fullscreen`),title:g(v?`fileManager.preview.exitFullscreen`:`fileManager.preview.fullscreen`),children:v?(0,c.jsx)(a,{className:`w-4 h-4`}):(0,c.jsx)(i,{className:`w-4 h-4`})}),(0,c.jsx)(`button`,{onClick:n,className:u,"aria-label":g(`common.close`),children:(0,c.jsx)(o,{className:`w-5 h-5`})})]})]}),h]})})}function f(){return typeof document<`u`&&document.fullscreenEnabled===!0&&typeof document.documentElement.requestFullscreen==`function`}function p(e){let t=f(),[n,r]=(0,s.useState)(!1),i=(0,s.useRef)(!1);return(0,s.useEffect)(()=>{if(!t)return;let n=e.current,a=()=>{i.current||r(document.fullscreenElement!=null&&document.fullscreenElement===e.current)};return document.addEventListener(`fullscreenchange`,a),()=>{document.removeEventListener(`fullscreenchange`,a),n&&document.fullscreenElement===n&&Promise.resolve(document.exitFullscreen()).catch(()=>{})}},[t,e]),{isFullscreen:n,toggleFullscreen:(0,s.useCallback)(()=>{if(i.current){i.current=!1,r(!1);return}if(t&&document.fullscreenElement){Promise.resolve(document.exitFullscreen()).catch(()=>{});return}let n=e.current;if(!n)return;let a=()=>{i.current=!0,r(!0)};if(!t){a();return}Promise.resolve(n.requestFullscreen()).catch(a)},[t,e]),apiAvailable:t}}function m(){let e=(0,s.useRef)(null),{isFullscreen:t,toggleFullscreen:n}=p(e);return{panelRef:e,isFullscreen:t,toggleFullscreen:n}}export{d as n,u as r,m as t};