D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
psa
/
admin
/
htdocs
/
modules
/
performance-booster
/
dist
/
Filename :
236.js
back
Copy
(self.webpackChunk=self.webpackChunk||[]).push([[236],{236:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>v});var s=n(2857),i=n(303);i.default.interceptors.response.use((e=>e.data),(e=>401===e.response?.status?(window.location.reload(),new Promise((()=>{}))):Promise.reject(e)));const a="/api/modules/performance-booster",o=(e,{query:t,...n}={})=>i.default.get(`${a}/${e}?${t??""}`,n),r=(e,t)=>i.default.post(`${a}/${e}`,t);var l;!function(e){e.OPTIMIZED="OPTIMIZED",e.OUTDATED="OUTDATED",e.FAILED="FAILED",e.NOT_OPTIMIZED="NOT_OPTIMIZED"}(l||(l={}));const d=e=>4*e+"px",c=({children:e,data:t,label:n,description:i,...a})=>{const[o,r]=(0,s.useState)(!1);let l=`show-details-can-optimize-${t.name}`;return t.version&&t.conflicts&&t.conflicts.length>0?l=`show-details-cannot-optimize-${t.name}`:t.version&&t.conflicts&&t.conflicts.length>0&&(l=`show-details-cannot-revert-${t.name}`),(0,s.jsxs)("div",{style:{marginBottom:d(3)},children:[(0,s.jsx)(s.FormFieldCheckbox,{...a,label:(0,s.jsxs)(s.Fragment,{children:[n,i&&(0,s.jsx)("div",{children:(0,s.jsxs)(s.Hint,{children:[i," ",t.details&&(0,s.jsx)("a",{"data-action":l,onClick:e=>{e.preventDefault(),r((e=>!e))},children:(0,s.jsx)(s.Translate,{content:"optimization.viewSource"})})]})})]}),style:{marginBottom:0}}),t.details&&o&&(0,s.jsx)("div",{style:{marginTop:d(2),marginBottom:d(2),border:"1px solid #eee"},children:(0,s.jsx)(s.CodeEditor,{readOnly:!0,mode:"text/x-sh",children:t.details})}),t.conflicts&&(e=>{if(Array.isArray(e)&&!e.length)return null;const t=e=>{switch(e.type){case"link":return(0,s.jsx)("a",{href:e.value,target:"_blank",rel:"noreferrer",children:(0,s.jsx)(s.Icon,{name:"info-circle-filled",intent:"info"})});case"installer-link":return(0,s.jsx)("a",{href:e.value,children:(0,s.jsx)(s.Translate,{content:"conflicts.InstallComponents"})});default:return null}};return e.map((e=>(0,s.jsx)(s.Hint,{style:{display:"block",marginLeft:d(7),marginBottom:d(2)},children:(0,s.jsxs)(s.Text,{intent:"warning",style:{whiteSpace:"pre-wrap"},children:[(0,s.jsx)(s.Translate,{content:e.message,params:e.context})," ",e.options&&e.options.map(t)]})})))})(t.conflicts),t.errors&&!(t.conflicts&&t.conflicts.length>0)&&(0,s.jsx)(s.Hint,{style:{display:"block",marginLeft:d(7),marginBottom:d(2)},children:(0,s.jsx)(s.Text,{intent:"danger",children:(0,s.jsx)(s.Translate,{content:"optimization.lastAttemptFailed",params:{error:t.errors}})})})]})},m=(0,s.createContext)({dbSettingsGuiEnabled:!1,optimizations:{},stages:{},showSpeedupColumn:!0,excludedSpeedupStages:[]}),u=()=>(0,s.useContext)(m),p=({domainId:e,optimization:t,disabledOptimizations:n})=>{const{stages:i}=u(),a=t.stages.map((n=>((e,t,n,i)=>(0,s.jsx)(c,{id:`optimization-stage-${e.guid}-domain-${n}`,disabled:0!==(e?.conflicts?.length??0),name:`${i}[${e.guid}]`,label:(0,s.jsx)(s.Translate,{content:`optimization.optimize-${t.rawName}`,params:t.translationContext}),description:(0,s.jsx)(s.Translate,{content:`optimization.optimize-${t.rawName}-hint`}),data:{...t,...e}},`optimization-section-${n}-${e.guid}`))(n,i[n.guid],e,t.name)));return t.stages.length<2?a[0]:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(s.FormFieldCheckbox,{id:`optimization-section-group-${t.name}-domain-${e}`,disabled:n.includes(t.name),name:`${t.name}[masterCheckbox]`,label:(0,s.jsx)(s.Translate,{content:`optimization.group.${t.name}`})}),(0,s.jsx)("div",{style:{marginLeft:(4,"16px")},children:a})]})},x=(0,s.createContext)({measure:{isMeasuring:!1,domainId:null},setMeasure:()=>{}}),h=({children:e})=>{const[t,n]=(0,s.useState)({isMeasuring:!1,domainId:null}),i=(0,s.useMemo)((()=>({measure:t,setMeasure:n})),[t]);return(0,s.jsx)(x.Provider,{value:i,children:e})},g=()=>(0,s.useContext)(x),j=()=>(0,s.jsxs)(s.Popover,{target:(0,s.jsx)(s.Icon,{name:"info-circle-filled",intent:"info"}),placement:"left",children:[(0,s.jsx)(s.Paragraph,{children:(0,s.jsx)(s.Translate,{content:"speedup.description.explainTtfb"})}),(0,s.jsx)(s.Paragraph,{children:(0,s.jsx)(s.Translate,{content:"speedup.description.externalMeasurement",params:{link:(0,s.jsx)(s.Link,{href:"https://gtmetrix.com/",target:"_blank",children:"GTmetrix"})}})})]}),f=e=>{const{excludedSpeedupStages:t}=u();return!!e.optimizations.find((e=>e?.stages.find((e=>!t.includes(e.guid)&&e.status===l.OPTIMIZED))))};var b=n(613);const T=({title:e,children:t,loading:n,skeleton:i=(0,s.jsx)(s.SkeletonText,{lines:1,lineProps:{width:24}})})=>(0,s.jsxs)(s.Paragraph,{children:[(0,s.jsxs)(s.Text,{bold:!0,children:[e,": "]}),n?i:t]}),z=()=>(0,s.jsxs)(s.Paragraph,{children:[(0,s.jsx)(s.Icon,{name:"triangle-exclamation-mark-filled",intent:"warning",size:"16"})," ",(0,s.jsx)(s.Translate,{content:"speedup.measure.warning"})]}),I=({ttfbOptimizationsPercent:e,ttfbWithoutOptimizations:t,ttfbOptimizationDifferenceMs:n,ttfbThreshold:i})=>{const a=Boolean(e&&t>i);return(0,s.jsxs)(s.Fragment,{children:[e?(0,s.jsxs)(s.Fragment,{children:[n," ",(0,s.jsx)(s.Translate,{content:"speedup.ms"})]}):null,a?" (":null,t>i||!e?`${e}%`:null,a?")":null]})},w=({domain:e})=>{const{measure:t,setMeasure:n}=g(),{domainId:i,ttfbWithoutOptimizations:a,ttfbWithOptimizations:o,ttfbOptimizationsPercent:l,ttfbOptimizationDifferenceMs:d,ttfbThreshold:c,lastMeasureDate:m}=e,u=f(e),p=i===t.domainId;if(!p&&!u)return null;const x=async({domainId:e})=>{n({isMeasuring:!0,domainId:e});try{await(({domainId:e})=>r(`domains/${e}/measure`))({domainId:e})}catch(e){if(!(0,b.IZ)(e))throw e}};if(!(p||a&&o))return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(s.Paragraph,{children:(0,s.jsx)(s.Translate,{content:"speedup.measure.unmeasuredDescription"})}),(0,s.jsx)(s.Paragraph,{children:(0,s.jsx)(s.Translate,{content:"speedup.measure.unmeasuredStartMeasure",params:{link:(0,s.jsx)(s.Tooltip,{title:t.isMeasuring&&!p?(0,s.jsx)(s.Translate,{content:"speedup.measure.inProgress"}):(0,s.jsx)(s.Translate,{content:"speedup.measure.startMeasure"}),children:(0,s.jsx)(s.Link,{disabled:t.isMeasuring,onClick:()=>{x({domainId:i})},children:(0,s.jsx)(s.Translate,{content:"speedup.measure.unmeasuredStartMeasure_link_text"})})})}})}),(0,s.jsx)(z,{})]});const h=(0,s.jsx)(I,{ttfbOptimizationsPercent:l,ttfbOptimizationDifferenceMs:d,ttfbThreshold:c,ttfbWithoutOptimizations:a});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(s.Paragraph,{children:(0,s.jsx)(s.Translate,{content:"speedup.measure.measuredDescription"})}),(0,s.jsx)(T,{title:(0,s.jsx)(s.Translate,{content:"speedup.measure.lastRun"}),loading:p,skeleton:(0,s.jsx)(s.SkeletonText,{lines:1,lineProps:{width:180}}),children:new Date(m).toLocaleString(document.documentElement.lang??"en")}),(0,s.jsxs)(T,{title:(0,s.jsx)(s.Translate,{content:"speedup.measure.ttfbWithoutOptimizations"}),loading:p,children:[a," ",(0,s.jsx)(s.Translate,{content:"speedup.ms"})]}),(0,s.jsxs)(T,{title:(0,s.jsx)(s.Translate,{content:"speedup.measure.ttfbWithOptimizations"}),loading:p,children:[o," ",(0,s.jsx)(s.Translate,{content:"speedup.ms"})]}),(0,s.jsxs)(T,{title:(0,s.jsx)(s.Translate,{content:"domainsList.speedup"}),loading:p,skeleton:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(s.SkeletonText,{lines:1,lineProps:{width:45}}),(0,s.jsx)(s.Button,{ghost:!0,state:"loading"})]}),children:[(0,s.jsx)(s.Text,{intent:l>0?"success":"muted",children:h}),(0,s.jsx)(s.Button,{ghost:!0,icon:"refresh",disabled:t.isMeasuring,onClick:()=>{x({domainId:i})},tooltip:(0,s.jsx)(s.Translate,{content:"speedup.measure.startMeasure"}),style:{marginTop:"-6px",marginBottom:"-6px"}}),t.isMeasuring&&!p&&(0,s.jsxs)(s.Fragment,{children:[" (",(0,s.jsx)(s.Translate,{content:"speedup.measure.inProgress"}),") "]})]}),(0,s.jsx)(z,{})]})},O=({domain:e,onTaskComplete:t})=>{const{measure:n}=g(),i=f(e),a=e.domainId===n.domainId;return((e,t)=>{const n=(0,s.useRef)(new Set);(0,s.useEffect)((()=>{if("Jsw"in window){const s=(e,t)=>{e?.(t),n.current.add(t.id)},i=i=>{t.uniq&&n.current.has(i.id)||i.type===`ext-performance-booster-${e}`&&(t.onError&&"error"===i.status&&s(t.onError,i),t.onComplete&&"done"===i.status&&s(t.onComplete,i))};return Jsw.Observer.append(i,"plesk:taskComplete"),()=>Jsw.Observer.remove(i,"plesk:taskComplete")}}),[e,t])})("measuredomainspeed",{uniq:!0,onComplete:t}),a||i?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(s.Heading,{level:3,children:[(0,s.jsx)(s.Translate,{style:{verticalAlign:"middle"},content:"optimization.measurement-title"})," ",(0,s.jsx)(j,{})]}),(0,s.jsx)(w,{domain:e})]}):null},k="masterCheckbox",y=(0,s.jsx)(s.Form,{applyButton:!1,cancelButton:{children:(0,s.jsx)(s.Translate,{content:"optimization.cancel"})},submitButton:{children:(0,s.jsx)(s.Translate,{content:"optimization.apply"})},children:(0,s.jsx)(s.Columns,{vertical:!0,style:{gap:"1rem"},children:Array.from({length:3}).map(((e,t)=>(0,s.jsx)(s.Media,{image:(0,s.jsx)(s.Skeleton,{width:"20"}),children:(0,s.jsx)(s.SkeletonText,{})},t)))})}),M=({domainId:e,onClose:t})=>{const{measure:n,setMeasure:i}=g(),[a,d]=(0,s.useState)(null),[c,m]=(0,s.useState)(null),[x,h]=(0,s.useState)(null),[j,f]=(0,s.useState)(!1),{stages:b}=u(),T=!!(x?.optimizations??[]).find((e=>e.stages.find((e=>0===e?.conflicts?.length&&e.status!==l.OPTIMIZED)))),z=(0,s.useMemo)((()=>(x?.optimizations??[]).filter((e=>void 0===e.stages.find((e=>0===(e.conflicts?.length??0))))).map((e=>e.name))),[x]),I=(0,s.useMemo)((()=>(x?.optimizations??[]).flatMap((e=>e.stages)).filter((e=>0!==(e.conflicts?.length??0))).map((e=>e.guid))),[x]),w=async(e,t)=>{try{const{domain:s,isMeasuring:a}=await(({domainId:e},t={})=>o(`domains/${e}`,t))({domainId:e},{signal:t});h(s);const r={};for(const e of s.optimizations){r[e.name]={[k]:!!e.stages.find((e=>e.status===l.OPTIMIZED))};for(const t of e.stages)r[e.name][t.guid]=t.status===l.OPTIMIZED}n.isMeasuring!==a&&i({domainId:s.isMeasuring?s.domainId:null,isMeasuring:a}),d(r),m(r)}catch(e){"AbortError"!==e.name&&console.error(e)}};(0,s.useEffect)((()=>{const t=new AbortController;return e?w(e,t.signal):(d(null),h(null)),()=>t.abort()}),[e]);const M=(e,t)=>{const n=t?"enable":"disable";window?.Jsw?.UAT?.dispatchAction("CLICK",{dataset:{type:`checkbox-optimization-${e}-${n}`}})};return(0,s.jsx)(s.Drawer,{"data-type":"ext-optimization-drawer",placement:"right",size:"md",title:x?.name?(0,s.jsx)(s.Translate,{content:"optimization.title",params:{domain:x?.name}}):(0,s.jsx)(s.Skeleton,{maxWidth:400}),isOpen:!!e,onClose:t,form:x&&a?(0,s.jsxs)(s.Form,{applyButton:!1,cancelButton:{id:"btn-cancel",name:"cancel",children:(0,s.jsx)(s.Translate,{content:"optimization.cancel"})},submitButton:{id:"btn-apply",name:"apply",children:(0,s.jsx)(s.Translate,{content:"optimization.apply"})},onSubmit:async n=>{if(!e||!x)return;if(JSON.stringify(c)===JSON.stringify(n))return void t();f(!0);const s={domainGuids:[x.guid],enableOptimizations:{},disableOptimizations:{}};for(const[e,t]of Object.entries(n))e in s.enableOptimizations||(s.enableOptimizations[e]=[],s.disableOptimizations[e]=[]),Object.entries(t).forEach((([t,n])=>{t!==k&&(n?s.enableOptimizations[e].push(t):s.disableOptimizations[e].push(t))}));try{await(e=>r("domains/",e))(s),t()}catch(e){console.error(e)}finally{f(!1)}},state:j?"submit":void 0,values:a,onFieldChange:(e,t)=>{if(null===a)return;const[n,i]=e.split("[",2).map((e=>e.replaceAll(/[\[\]]/g,"")));if(z.includes(n))return;let o=(0,s.setIn)(a,e,t);if(e.includes(k))return Object.keys(o[n]).forEach((e=>{I.includes(e)||(o=(0,s.setIn)(o,`${n}[${e}]`,t))})),M(n,t),void d(o);if(M(b[i].name,t),void 0!==o[n][k]){const e=void 0!==Object.entries(o[n]).find((([e,t])=>e!==k&&!0===t));o=(0,s.setIn)(o,`${n}[${k}]`,e)}d(o)},children:[(0,s.jsx)(s.Alert,{intent:"warning",children:(0,s.jsx)(s.Translate,{content:"optimization.warning"})}),T&&(0,s.jsx)(s.Alert,{intent:"info",children:(0,s.jsx)(s.Translate,{content:"hints.measurePerformance"})}),(0,s.jsx)(s.Heading,{level:3,children:(0,s.jsx)(s.Translate,{content:"optimization.boost-title"})}),x.optimizations.map((t=>(0,s.jsx)(p,{domainId:e??0,optimization:t,disabledOptimizations:z},`optimization-section-${e}-${t.name}`))),(0,s.jsx)(O,{domain:x,onTaskComplete:()=>w(e)})]}):y})},v=({domainId:e,onClose:t})=>{const[n,i]=(0,s.useState)();return(0,s.useEffect)((()=>{const e=new AbortController;return(async()=>{try{const t=await((e={})=>o("bootstrap",e))({signal:e.signal});i(t)}catch(e){"AbortError"!==e.name&&console.error(e)}})(),()=>e.abort()}),[]),n?(0,s.jsx)(m.Provider,{value:n.config,children:(0,s.jsx)(s.LocaleProvider,{messages:n.locale,children:(0,s.jsx)(h,{children:(0,s.jsx)(M,{domainId:e,onClose:t})})})}):null}},2857:e=>{e.exports=window.PleskUiLibrary,e.exports.default=window.PleskUiLibrary}}]); //# sourceMappingURL=236.js.map