Mini Shell

Direktori : /proc/self/root/usr/share/l.v.e-manager/commons/spa-resources/static/
Upload File :
Current File : //proc/self/root/usr/share/l.v.e-manager/commons/spa-resources/static/php_selector.bundle.min.js

/*! For license information please see php_selector.bundle.min.js.LICENSE.txt */
!function(e){function t(t){for(var a,s,r=t[0],l=t[1],d=t[2],p=0,m=[];p<r.length;p++)s=r[p],i[s]&&m.push(i[s][0]),i[s]=0;for(a in l)Object.prototype.hasOwnProperty.call(l,a)&&(e[a]=l[a]);for(c&&c(t);m.length;)m.shift()();return o.push.apply(o,d||[]),n()}function n(){for(var e,t=0;t<o.length;t++){for(var n=o[t],a=!0,r=1;r<n.length;r++){var l=n[r];0!==i[l]&&(a=!1)}a&&(o.splice(t--,1),e=s(s.s=n[0]))}return e}var a={},i={5:0},o=[];function s(t){if(a[t])return a[t].exports;var n=a[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,s),n.l=!0,n.exports}s.m=e,s.c=a,s.d=function(e,t,n){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(s.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)s.d(n,a,function(t){return e[t]}.bind(null,a));return n},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="";var r=window.wpJsonpCloudLinuxLveManager=window.wpJsonpCloudLinuxLveManager||[],l=r.push.bind(r);r.push=t,r=r.slice();for(var d=0;d<r.length;d++)t(r[d]);var c=l;o.push([2034,1,0]),n()}({2034:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.main=void 0;const a=n(242),i=n(243),o=n(2035),s=n(301);function r(){return a.platformBrowserDynamic().bootstrapModule(o.AppModule).then(s.decorateModuleRef).catch((e=>{}))}t.main=r,i.bootloader(r)},2035:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initAppConfig=t.AppModule=void 0;const a=n(1),i=n(0),o=n(18),s=n(2036),r=n(2037),l=n(2046),d=n(10),c=n(102),p=n(154),m=n(228),u=n(196),g=n(124),h=n(145),v=n(107),f=n(369),b=n(251),x=n(252),C=n(847),_=n(135),y=n(117),D=n(201),w=n(848),S=n(849),A=n(202),k=n(254),P=n(2),I=n(249),V=n(2049),M=n(821),E=n(2055),O=n(165),R=n(179),T=[d.AppState,y.PHPSelectorRepo,y.BaseSelectorRepo,O.SentryInitializerService];let L=class extends x.BaseAppModule{constructor(e,t){super(),this.appRef=e,this.appState=t}};function F(e,t){return()=>t.loadConfig()}L=a.__decorate([i.NgModule({bootstrap:[l.App],declarations:[l.App,C.PhpExtensionsComponent,w.PHPOptionsComponent],imports:[...x.COMMON_MODULES,V.DomainsModule,I.TemplateDirectiveModule,_.AngularMaterialModules,o.RouterModule.forRoot(r.ROUTES,{useHash:!0,preloadingStrategy:o.PreloadAllModules,onSameUrlNavigation:"reload"}),M.CldiagModule],entryComponents:[u.UnavailableComponent],providers:[s.ENV_PROVIDERS,T,v.WindowRef,p.UsersRepo,c.ConfigRepo,h.CagefsRepo,m.MockService,g.UnavailableService,f.PingRepo,y.PHPSelectorRepo,D.AppService,D.SelectorAppService,A.LoadingBarService,S.FormAutoSavedGuard,R.IsolationRepo,{provide:P.PlatformLocation,useClass:k.IframePlatformLocation},P.\u0275BrowserPlatformLocation,E.AppPhpConfig,{provide:i.APP_INITIALIZER,useFactory:F,deps:[i.Injector,E.AppPhpConfig],multi:!0}].concat([{provide:i.ErrorHandler,useClass:b.SentryErrorHandler}])}),a.__metadata("design:paramtypes",[i.ApplicationRef,d.AppState])],L),t.AppModule=L,t.initAppConfig=F},2036:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ENV_PROVIDERS=t.decorateModuleRef=void 0;const a=n(40),i=n(0),o=n(35),s=n(77),r=n(354);let l=[o.XHR,{provide:s.HTTP_INTERCEPTORS,useClass:r.RequestInterceptor,multi:!0}],d=function(e){return e};i.enableProdMode(),d=e=>(a.disableDebugTools(),e),l=[...l],t.decorateModuleRef=d,t.ENV_PROVIDERS=[...l]},2037:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ROUTES=void 0;const a=n(2038),i=n(2041),o=n(849),s=n(850),r=n(134),l=n(124);t.ROUTES=[{path:"",redirectTo:"extensions",pathMatch:"full"},{path:"extensions",component:a.PhpExtensionsComponent,canDeactivate:[o.FormAutoSavedGuard],canActivate:[l.UnavailableService]},{path:"options",component:i.PHPOptionsComponent,canDeactivate:[o.FormAutoSavedGuard],canActivate:[l.UnavailableService]},...panelName===r.Panel.CPanel?[{path:"domains",component:s.DomainsComponent,canActivate:[l.UnavailableService]}]:[]]},2038:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(1).__exportStar(n(847),t)},2039:function(e,t){e.exports='\x3c!--\n    Copyright \xa9 Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved\n\n    Licensed under CLOUD LINUX LICENSE AGREEMENT\n    http://cloudlinux.com/docs/LICENSE.TXT\n--\x3e\n<div class="lvemanager-header-block">\n    <h2 class="lvemanager-page-title" *ngIf="selectorData" translate>Account PHP Settings</h2>\n</div>\n<div class="lvemanager-account-settings-banner" *ngIf="isCPanel">\n    <span class="lvemanager-banner-icon">&#8505;</span>\n    <span>{{ \'These settings apply to all your domains by default. To override settings for a specific domain, go to\' | translate }}\n        <a [routerLink]="[\'/domains\']">{{ \'Per Domain Settings\' | translate }}</a>\n        {{ \'tab.\' | translate }}\n    </span>\n</div>\n<div class="lvemanager-wrapper" *ngIf="selectorData">\n\n    <div class="lvemanager-version-card">\n        <fe-select [title]="\'PHP version\'"\n                   [attr.id]="\'phpSelectVersion\'"\n                   class="lvemanager-version-selector lvemanager-php-select"\n                   [boldTitle]="true"\n                   [dropdownWithBorder]="true"\n                   (change)="parseExtensions()"\n                   [(ngModel)]="currentVersion"\n                   [list]="phpVersionList"\n                   [disabled]="selectorData?.version_selection_disabled_msg"\n                   [selectBtnTooltip]="selectorData?.version_selection_disabled_msg"\n        >\n            <ui-button [upper]="false"\n                       [id]="\'setAsCurrentBtn\'"\n                       [customClass]="\'applyVersion\'"\n                       [style]="\'primary\'"\n                       [size]="\'small\'"\n                       [name]="\'setAsCurrentBtn\'"\n                       *ngIf="isSetAsCurrentAvailable()"\n                       (click)="setAsCurrent()">\n                {{ \'apply\' | translate }}\n            </ui-button>\n            <ui-button [upper]="false"\n                       [id]="\'resetToDefaultBtn\'"\n                       [customClass]="\'resetDefault\'"\n                       [style]="\'default\'"\n                       [size]="\'small\'"\n                       [name]="\'resetToDefault\'"\n                       [disabled]="isCurrentNativeVersion"\n                       (click)="useDefault.action ? useDefault.action() : null">\n                {{ \'Reset PHP Extensions to default\' | translate }}\n            </ui-button>\n        </fe-select>\n    </div>\n\n    <ui-info-banner *ngIf="isCurrentNativeVersion"\n                    id="uiMessagePHPNative"\n                    variant="warning"\n                    message="WARNING.nativeWarning">\n    </ui-info-banner>\n\n    <ul class="lvemanager-sub-tabs" *ngIf="!isCurrentNativeVersion">\n        <li class="lvemanager-sub-tab lvemanager-active">\n            <a [routerLink]="[\'/extensions\']" translate>Extensions</a>\n        </li>\n        <li class="lvemanager-sub-tab">\n            <a [routerLink]="[\'/options\']" translate>Options</a>\n        </li>\n    </ul>\n\n    <div class="lvemanager-extensions-card">\n        <div class="lvemanager-equal-height-column-container">\n            <div *ngFor="let extension of extensions">\n\n                <div class="lvemanager-settings-box" *ngFor="let letter of extension | keys">\n                    <div class="lvemanager-left-setting">\n                        <div class="lvemanager-column-letter">{{letter.key}}</div>\n                    </div>\n                    <div class="lvemanager-right-setting">\n                        <div class="lvemanager-setting-item"\n                             [class.lvemanager-checked]="item.checked"\n                             *ngFor="let item of letter.value">\n                            <ui-checkbox [id]="\'letter-\' + item.name"\n                                         (click)="checkExtension(item, $event)"\n                                         [(ngModel)]="item.checked"\n                                         [disabled]="item.loading || item.disabled"\n                                         [tooltip]="item.description | translate"></ui-checkbox>\n                            {{item.name}}\n                            <ui-spinner [id]="\'spinner-\' + item.name" [show]="item.loading"></ui-spinner>\n                        </div>\n                    </div>\n                </div>\n\n            </div>\n        </div>\n    </div>\n\n</div>\n'},2040:function(e,t){e.exports=".lvemanager-account-settings-banner{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;margin:0 0 20px;background:#e8f4fd;border-left:4px solid #2196F3;border-radius:4px;color:#1565c0;font-size:13px;line-height:1.5}.lvemanager-account-settings-banner .lvemanager-banner-icon{font-size:18px;flex-shrink:0;margin-top:1px}.lvemanager-account-settings-banner a{color:#1565c0;text-decoration:underline;font-weight:500}.lvemanager-sub-tabs{list-style:none;display:flex;margin:16px 0 20px;padding:0;border-bottom:2px solid #e0e0e0}.lvemanager-sub-tabs .lvemanager-sub-tab{margin:0;padding:0}.lvemanager-sub-tabs .lvemanager-sub-tab a{display:block;padding:10px 16px;color:#555;text-decoration:none;font-size:13px;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}.lvemanager-sub-tabs .lvemanager-sub-tab a:hover{color:#1a73e8}.lvemanager-sub-tabs .lvemanager-sub-tab.lvemanager-active a{color:#1a73e8;border-bottom-color:#1a73e8;font-weight:500}.lvemanager-version-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin-bottom:20px}:host .lvemanager-header-block{margin-top:0;margin-bottom:4px}.lvemanager-extensions-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px}.lvemanager-column-letter{width:26px;height:26px;background-color:#1a73e8;color:white;text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:12px;font-weight:600;flex-shrink:0}.lvemanager-settings-box{display:block;break-inside:avoid;margin-bottom:12px}.lvemanager-setting-item{display:flex;align-items:center;gap:6px;font-size:13px;padding:4px 0}.lvemanager-left-setting{display:flex;align-items:center;gap:8px;margin-bottom:6px}ui-checkbox{margin-right:2px}ui-spinner{margin-left:5px}.lvemanager-equal-height-column-container{columns:4;column-gap:24px}.lvemanager-equal-height-column-container>[class*='col-']{display:block;width:100%;float:none;padding:0}ui-info-banner{margin:0 30px 16px}@media (max-width:991px){.lvemanager-equal-height-column-container{columns:3}}@media (max-width:767px){.lvemanager-equal-height-column-container{columns:2}.lvemanager-header-buttons{margin-top:10px;padding-right:0}}@media (max-width:480px){.lvemanager-equal-height-column-container{columns:1}}"},2041:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(1).__exportStar(n(848),t)},2042:function(e,t){e.exports='\x3c!--\n    Copyright \xa9 Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved\n\n    Licensed under CLOUD LINUX LICENSE AGREEMENT\n    http://cloudlinux.com/docs/LICENSE.TXT\n--\x3e\n<div class="lvemanager-header-block">\n    <h2 class="lvemanager-page-title" translate>Account PHP Settings</h2>\n</div>\n<div class="lvemanager-account-settings-banner" *ngIf="isCPanel">\n    <span class="lvemanager-banner-icon">&#8505;</span>\n    <span>{{ \'These settings apply to all your domains by default. To override settings for a specific domain, go to\' | translate }}\n        <a [routerLink]="[\'/domains\']">{{ \'Per Domain Settings\' | translate }}</a>\n        {{ \'tab.\' | translate }}\n    </span>\n</div>\n<div class="lvemanager-wrapper">\n\n    <div class="lvemanager-version-card">\n        <fe-select [title]="\'PHP version\'"\n                   [attr.id]="\'phpSelectVersion\'"\n                   class="lvemanager-php-select"\n                   [boldTitle]="true"\n                   [dropdownWithBorder]="true"\n                   (change)="parseOptions()"\n                   [(ngModel)]="currentVersion"\n                   [list]="phpVersionList"\n                   [disabled]="selectorData?.version_selection_disabled_msg"\n                   [selectBtnTooltip]="selectorData?.version_selection_disabled_msg"\n        >\n            <ui-button [upper]="false"\n                       [id]="\'setAsCurrentBtn\'"\n                       [customClass]="\'applyVersion\'"\n                       [style]="\'primary\'"\n                       [size]="\'small\'"\n                       [name]="\'setAsCurrentBtn\'"\n                       *ngIf="isSetAsCurrentAvailable()"\n                       (click)="setAsCurrent()">\n                {{ \'apply\' | translate }}\n            </ui-button>\n            <ui-button [upper]="false"\n                       [id]="\'resetToDefaultBtn\'"\n                       [customClass]="\'resetDefault\'"\n                       [style]="\'default\'"\n                       [size]="\'small\'"\n                       [name]="\'resetToDefault\'"\n                       [disabled]="isCurrentNativeVersion"\n                       (click)="resetToNative ? resetToNative() : null">\n                {{ \'Reset PHP Extensions to default\' | translate }}\n            </ui-button>\n        </fe-select>\n    </div>\n\n    <ui-info-banner *ngIf="isCurrentNativeVersion"\n                    id="uiMessagePHPNative"\n                    variant="warning"\n                    message="WARNING.nativeWarning">\n    </ui-info-banner>\n\n    <ul class="lvemanager-sub-tabs" *ngIf="!isCurrentNativeVersion">\n        <li class="lvemanager-sub-tab">\n            <a [routerLink]="[\'/extensions\']" translate>Extensions</a>\n        </li>\n        <li class="lvemanager-sub-tab lvemanager-active">\n            <a [routerLink]="[\'/options\']" translate>Options</a>\n        </li>\n    </ul>\n\n    <div class="lvemanager-options-card">\n        <div *ngIf="options">\n            <div *ngFor="let option of options"\n                 [ngSwitch]="option.type"\n                 class="lvemanager-flex lvemanager-align-center lvemanager-option-item"\n                 [attr.id]="\'option-item-\' + option.title | replaceDots">\n                <fe-text *ngSwitchCase="\'value\'"\n                         [title]="option.title"\n                         [(ngModel)]="option.value"\n                         [tooltip]="option.comment"\n                         [disabled]="option.loading"\n                         [updateOn]="\'blur\'"\n                         [format]="\'text\'"\n                         [subTitleTemplate]="resetToDefaultButton"\n                         [subTitleTemplateContext]="{ option: option }"\n                         placement="right"></fe-text>\n                <fe-checkbox *ngSwitchCase="\'bool\'"\n                             [title]="option.title"\n                             [name]="option.title"\n                             [id]="option.title"\n                             [(ngModel)]="option.value"\n                             [tooltip]="option.comment"\n                             [disabled]="option.loading"\n                             [subTitleTemplate]="resetToDefaultButton"\n                             [subTitleTemplateContext]="{ option: option }"\n                             placement="right"></fe-checkbox>\n                <fe-select *ngSwitchCase="\'list\'"\n                           class="lvemanager-wide-list"\n                           [title]="option.title"\n                           [list]="option.range"\n                           [(ngModel)]="option.value"\n                           [tooltip]="option.comment"\n                           [disabled]="option.loading"\n                           [subTitleTemplate]="resetToDefaultButton"\n                           [subTitleTemplateContext]="{ option: option }"\n                           placement="right"></fe-select>\n                <div *ngIf="option.errors && option.errors.length" class="lvemanager-validation-error">\n                    <i class="material-icons">\n                        info\n                    </i>\n                    {{ option.errorsString | translate }}\n                </div>\n                <ui-spinner [id]="\'spinner-\' + option.title" [show]="option.loading"></ui-spinner>\n            </div>\n        </div>\n    </div>\n\n</div>\n\n<ng-template #resetToDefaultButton let-option="option">\n    <a class="lvemanager-subtitle-link"\n       *ngIf="option.notDefault"\n       [attr.id]="\'reset-to-default-\' + option.title"\n       (click)="useDefault(option)"\n       translate>useDefault</a>\n</ng-template>\n\n<modal-confirmation\n    #saveConfirmation\n    [header]="leaveOptionsMessage"></modal-confirmation>\n'},2043:function(e,t){e.exports=".lvemanager-account-settings-banner{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;margin:0 0 20px;background:#e8f4fd;border-left:4px solid #2196F3;border-radius:4px;color:#1565c0;font-size:13px;line-height:1.5}.lvemanager-account-settings-banner .lvemanager-banner-icon{font-size:18px;flex-shrink:0;margin-top:1px}.lvemanager-account-settings-banner a{color:#1565c0;text-decoration:underline;font-weight:500}.lvemanager-sub-tabs{list-style:none;display:flex;margin:16px 0 20px;padding:0;border-bottom:2px solid #e0e0e0}.lvemanager-sub-tabs .lvemanager-sub-tab{margin:0;padding:0}.lvemanager-sub-tabs .lvemanager-sub-tab a{display:block;padding:10px 16px;color:#555;text-decoration:none;font-size:13px;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .2s,border-color .2s}.lvemanager-sub-tabs .lvemanager-sub-tab a:hover{color:#1a73e8}.lvemanager-sub-tabs .lvemanager-sub-tab.lvemanager-active a{color:#1a73e8;border-bottom-color:#1a73e8;font-weight:500}.lvemanager-version-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin-bottom:20px}:host .lvemanager-header-block{margin-top:0;margin-bottom:4px}.lvemanager-options-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px}.lvemanager-option-item{height:53px;width:100%;max-width:740px}.lvemanager-subtitle-link{color:#2b98f0;font-family:'Noto Sans',sans-serif;font-size:14px;cursor:pointer;position:absolute;top:28px}.lvemanager-subtitle-link:hover{text-decoration:none}::ng-deep #phpSelectVersion .b_dropdown-menu,::ng-deep .lvemanager-wide-list .b_dropdown-menu{min-width:210px}fe-text,fe-select,fe-checkbox{position:relative}fe-text{width:100%}fe-text ::ng-deep ui-text{width:100%;max-width:400px}fe-text ::ng-deep ui-text input{text-align:left}.lvemanager-items-indent{padding:0}.lvemanager-php-select,.lvemanager-current-php-version{display:block;padding:0}.lvemanager-current-php-version{padding-top:30px}.lvemanager-current-php-version ::ng-deep .lvemanager-control-wrapper{display:flex;align-items:center}.lvemanager-column-letter{width:26px;height:26px;background-color:#1a73e8;color:white;text-transform:uppercase;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:12px;font-weight:600;flex-shrink:0}.lvemanager-settings-box{display:flex;margin-bottom:10px}.lvemanager-left-setting{width:73px;display:flex;justify-content:center;align-items:flex-start}.lvemanager-validation-error{color:#fc4c4c;display:flex;align-items:center;font-size:13px}.lvemanager-validation-error>*{margin:0 5px}ui-info-banner{margin:0 30px 16px}"},2044:function(e,t){e.exports='\x3c!--\n    Copyright \xa9 Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2020 All Rights Reserved\n\n    Licensed under CLOUD LINUX LICENSE AGREEMENT\n    http://cloudlinux.com/docs/LICENSE.TXT\n--\x3e\n\n\x3c!-- Isolation info banner --\x3e\n<ui-info-banner variant="info" *ngIf="dataReady && isolationFeatureAvailable && !isolationDeniedByAdmin">\n    <strong translate>Site Isolation</strong>\n    {{ \'activates\' | translate }}\n    <strong translate>CageFS per site</strong>\n    {{ \'and\' | translate }}\n    <strong translate>PHP Selector per site</strong>\n    {{ \'for a domain \u2014 the site gets its own filesystem isolation and independent PHP configuration.\' | translate }}\n    <br>\n    {{ \'Domains without isolation use your\' | translate }}\n    <a [routerLink]="[\'/extensions\']" translate>Account Global Settings</a>.\n    {{ \'When isolation is enabled, the domain inherits your current account settings \u2014 further changes are independent.\' | translate }}\n</ui-info-banner>\n\n\x3c!-- Isolation denied banner --\x3e\n<ui-info-banner variant="warning" *ngIf="isolationFeatureAvailable && isolationDeniedByAdmin && dataReady"\n                message="Site Isolation has been denied by your server administrator. Isolation toggles are disabled. Contact your hosting provider for more information.">\n</ui-info-banner>\n\n<div class="lvemanager-header-block" *ngIf="dataReady">\n    <h2 class="lvemanager-page-title" translate>Per Domain Settings</h2>\n</div>\n<div class="lvemanager-wrapper" *ngIf="dataReady">\n\n    <div class="lvemanager-domains-panel">\n        <span class="lvemanager-title" translate>\n            Domains that use:\n        </span>\n        <ui-info-panel\n            [value]="multiPHPDomainsCount"\n            id="multiPHPDomainsCount"\n            [header]="\'cPanel Multi PHP Manager\'"\n            [warning]="\'To use Cloudlinux PHP Selector for these domains you can transfer control using table below\'"\n        ></ui-info-panel>\n        <ui-info-panel\n            id="cloudLinuxDomainsCount"\n            [value]="cloudLinuxDomainsCount"\n            [success]="true"\n            [header]="\'CloudLinux PHP Selector\'"></ui-info-panel>\n        <ui-info-panel *ngIf="isolationFeatureAvailable"\n            id="isolatedDomainsCount"\n            [value]="isolatedCount"\n            [success]="true"\n            [header]="\'Isolated domains\'"></ui-info-panel>\n        <ui-info-panel *ngIf="isolationFeatureAvailable"\n            id="notIsolatedDomainsCount"\n            [value]="notIsolatedCount"\n            [header]="\'Not isolated domains\'"></ui-info-panel>\n    </div>\n\n    \x3c!-- Isolation bulk actions --\x3e\n    <div class="lvemanager-isolation-bulk-actions" *ngIf="isolationFeatureAvailable && !isolationDeniedByAdmin">\n        <span class="lvemanager-bulk-label" translate>Bulk actions:</span>\n        <ui-button [upper]="false"\n                   [id]="\'enableIsolationAll\'"\n                   [customClass]="\'bulk-action-btn\'"\n                   [style]="\'primary\'"\n                   [size]="\'normal\'"\n                   (clickAction)="enableIsolationAll()">\n            <span translate>Enable Isolation for All</span>\n        </ui-button>\n        <ui-button [upper]="false"\n                   [id]="\'disableIsolationAll\'"\n                   [customClass]="\'bulk-action-btn\'"\n                   [style]="\'default\'"\n                   [size]="\'normal\'"\n                   (clickAction)="disableIsolationAll()">\n            <span translate>Disable Isolation for All</span>\n        </ui-button>\n    </div>\n\n    <div class="row">\n        <div class="col-sm-12">\n            <ul class="nav nav-pills">\n                <li>\n                    <manage-show-only-mode\n                        [badges]="badges"\n                        [showOnlyModes]="availableShowOnlyModes"\n                        [title]="\'Show domains\'"\n                        (changed)="doFilter()"></manage-show-only-mode>\n                </li>\n                <li>\n                    <ui-text [(ngModel)]="filterField" icon="search" [placeholder]="\'Search by domain\'" name="filter"\n                             (ngModelChange)="doFilter()"></ui-text>\n                </li>\n                <li class="lvemanager-group-actions">\n                    <ui-group-actions\n                        [checkedItems]="domainTable.getSelectedItems()"\n                        [allItemsSelected]="domainTable.dataSelection.allUsersSelected"\n                        [hasSelectAll]="true"\n                        [items-info]="getDomainsCount()"\n                        (selectAll)="domainTable.selectAll()"\n                        (unSelectAll)="domainTable.clearSelection()"\n                    >\n                        <ui-button *ngIf="domainActions.length > 0"\n                                   class="lvemanager-domain-set-status"\n                                   [id]="\'domain-actions-button\'"\n                                   [style]="\'default\'"\n                                   [size]="\'normal\'"\n                                   [multi]="true"\n                                   [upper]="false"\n                                   [listOfActions]="domainActions">\n                            <span translate>Actions</span>\n                        </ui-button>\n                    </ui-group-actions>\n                </li>\n            </ul>\n        </div>\n    </div>\n    <ui-badge #badges></ui-badge>\n    <div class="row lvemanager-with_stats_grid"></div>\n</div>\n<domains-grid\n    [hidden]="!dataReady"\n    #domainTable\n    (onSelect)="updateSelection($event)"\n    [dataTableSource]="tableData"\n    (rowAction)="rowAction($event)"\n    [hasIsolationColumn]="isolationFeatureAvailable"\n    [isolationDenied]="isolationDeniedByAdmin"\n    [phpVersionList]="phpVersionList"\n    [accountPhpVersion]="currentVersion"\n></domains-grid>\n<modal-confirmation #changeConfirmation\n                    agreeButtonName="Confirm"\n                    [header]="{text: \'Confirm action\'}">\n    \x3c!-- Single domain confirmation (row-level "Use PHP Selector" button) --\x3e\n    <p *ngIf="!groupSelectorConfirmation"\n       [translate]="domainsHelper.confirmationMessage"\n       [translateParams]="domainsHelper.versionConfirm"></p>\n\n    \x3c!-- Group confirmation with eligible/skipped details --\x3e\n    <div *ngIf="groupSelectorConfirmation">\n        <p>\n            <strong translate>Will be switched to CloudLinux PHP Selector</strong>\n            ({{selectorEligibleDomains.length}}):\n        </p>\n        <ul class="lvemanager-confirmation-domain-list">\n            <li *ngFor="let d of selectorEligibleDomains">{{d.vhost}}</li>\n        </ul>\n        <div *ngIf="selectorSkippedDomains.length > 0" class="lvemanager-confirmation-skipped">\n            <p>\n                <strong translate>Skipped</strong>\n                ({{selectorSkippedDomains.length}}):\n            </p>\n            <ul class="lvemanager-confirmation-domain-list">\n                <li *ngFor="let item of selectorSkippedDomains">\n                    <strong>{{item.domain.vhost}}</strong>\n                    <span class="lvemanager-skip-reason"> \u2014 {{item.reason}}</span>\n                </li>\n            </ul>\n        </div>\n    </div>\n</modal-confirmation>\n\n<domain-config-modal\n    [domain]="configModalDomain"\n    [phpVersionList]="phpVersionList"\n    [accountPhpVersion]="currentVersion"\n    [(visible)]="configModalVisible"\n    (saved)="onConfigModalSaved()">\n</domain-config-modal>\n'},2045:function(e,t){e.exports='ui-info-banner{margin-bottom:12px}ui-info-banner a{color:#1565c0;text-decoration:none}ui-info-banner a:hover{text-decoration:underline}.lvemanager-isolation-bulk-actions{display:flex;align-items:center;gap:12px;padding:12px 0;margin-bottom:8px}.lvemanager-isolation-bulk-actions .lvemanager-bulk-label{font-size:13px;font-weight:600;color:#546e7a}.lvemanager-isolation-bulk-actions ::ng-deep button.lvemanager-bulk-action-btn{padding:0 18px;font-size:12px}.lvemanager-domains-panel{display:flex;position:relative;background:#f4f5f7;border-radius:5px;padding:0}.lvemanager-domains-panel .lvemanager-title{object-fit:contain;font-family:"SFUIText-Bold",sans-serif;font-size:22px;font-weight:bold;font-stretch:normal;font-style:normal;line-height:1.27;letter-spacing:normal;color:#000000;padding:47px 51px 47px 45px}.lvemanager-domains-panel ui-domains-info{margin-right:56px}.lvemanager-group-actions{float:right}.lvemanager-group-actions .lvemanager-domain-set-status ::ng-deep button{padding-left:20px;padding-right:20px}::ng-deep ui-info-panel{margin-right:15px}::ng-deep .lvemanager-confirmation-domain-list{margin:4px 0 12px 0;padding-left:20px;font-size:13px}::ng-deep .lvemanager-confirmation-domain-list li{padding:2px 0}::ng-deep .lvemanager-confirmation-skipped{border-top:1px solid #eee;padding-top:8px;margin-top:4px}::ng-deep .lvemanager-confirmation-skipped .lvemanager-skip-reason{color:#888;font-style:italic}'},2046:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.App=void 0;const a=n(1),i=n(0),o=n(18),s=n(368),r=n(134),l=n(117),d=n(181);let c=class extends s.AppTemplate{constructor(e,t,n,a,i,o){super(e,t,n,a),this.injector=e,this.viewRef=t,this.elementRef=n,this.renderer=a,this.selectorRepo=i,this.cpanelRepo=o,this.cpanelRepo.getDomains(!1).then((e=>{this.selectorRepo.getSelectorInfoParsed().then((t=>{this.selectorData=t,e||(this.selectorData.domains_tab_is_hidden=!0),this.tabs=this.getTabs()}))}))}getTabs(){if(!this.selectorData)return[];const e=[{link:"extensions",text:"Account Global Settings",altLink:"options"}];return this.appState.get("panelName")===r.Panel.CPanel&&!this.selectorData.domains_tab_is_hidden&&e.push({link:"domains",text:"Per Domain Settings"}),e}};a.__decorate([i.ViewChild(o.RouterOutlet),a.__metadata("design:type",o.RouterOutlet)],c.prototype,"routerOutlet",void 0),c=a.__decorate([i.Component({selector:"lvemanager",template:a.__importDefault(n(2047)).default,styles:[a.__importDefault(n(2048)).default]}),a.__metadata("design:paramtypes",[i.Injector,i.ViewContainerRef,i.ElementRef,i.Renderer2,l.PHPSelectorRepo,d.CpanelRepo])],c),t.App=c},2047:function(e,t){e.exports='\x3c!--\n    Copyright \xa9 Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved\n\n    Licensed under CLOUD LINUX LICENSE AGREEMENT\n    http://cloudlinux.com/docs/LICENSE.TXT\n--\x3e\n<link href="https://fonts.googleapis.com/css?family=Noto+Sans:400,700&amp;subset=cyrillic" rel="stylesheet">\n<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" rel="stylesheet">\n<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">\n<ng-template #tabHeaderTemplate>\n    <div class="navbar-header">\n        <a [routerLink]="[\'/\']" class="lvemanager-php-logo"></a>\n        <span class="lvemanager-php-logo-title">\n            PHP Selector\n        </span>\n    </div>\n    <div class="lvemanager-menu-wrapper lvemanager-collapse navbar-collapse"\n         id="uiNavigation"\n         #navigationMenu\n         ui-navigation>\n        <ng-container *ngFor="let tab of tabs">\n            <li *templateDirective [class.lvemanager-active]="isActive(tab.link) || (tab.hasOwnProperty(\'altLink\') && isActive(tab.altLink))" >\n                <a [routerLink]="[\'./\'+tab.link]">{{ tab.text | translate}}</a>\n            </li>\n        </ng-container>\n        <ng-container *templateDirective="\'right\'"></ng-container>\n    </div>\n</ng-template>\n<div #tabHeader\n     class="lvemanager-tabs-header">\n    <ng-container *ngTemplateOutlet="tabHeaderTemplate"></ng-container>\n\n    <div class="lvemanager-progress-bar-wrapper" [class.hidden]="appState.get(\'isHiddenProgressBar\')">\n        <mat-progress-bar mode="determinate" [value]="loadingBar.progress$ | async"></mat-progress-bar>\n    </div>\n</div>\n<div #tabHeaderFixed\n     fixedMenu\n     [fixedMenu-alias]="tabHeader"\n     [attr.id]="\'tabHeaderFixed\'"\n     class="lvemanager-tabs-header lvemanager-\'fixed-tabs-header\'">\n    <div class="">\n        <ng-container *ngTemplateOutlet="tabHeaderTemplate"></ng-container>\n    </div>\n</div>\n<div class="lvemanager-main_content_block">\n    <router-outlet #route></router-outlet>\n</div>\n<span id="language-code-translate-check" style="display: none;" translate>LANG_CODE</span>\n'},2048:function(e,t){e.exports=".lvemanager-ui-scroll::-webkit-scrollbar{width:12px;height:12px}.lvemanager-ui-scroll::-webkit-scrollbar-button{width:0;height:0}.lvemanager-ui-scroll::-webkit-scrollbar-thumb{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;background:#2b98f0;border:0 none transparent}.lvemanager-ui-scroll::-webkit-scrollbar-thumb:hover{background:#2b98f0}.lvemanager-ui-scroll::-webkit-scrollbar-thumb:active{background:#2b98f0}.lvemanager-ui-scroll::-webkit-scrollbar-track{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;background:#ffffff;border:0 none #ffffff}.lvemanager-ui-scroll::-webkit-scrollbar-track:hover{background:#ffffff}.lvemanager-ui-scroll::-webkit-scrollbar-track:active{background:#ffffff}.lvemanager-ui-scroll::-webkit-scrollbar-corner{background:transparent}.lvemanager-clearboth{zoom:1}.lvemanager-clearboth:before,.lvemanager-clearboth:after{content:\"\";display:table}.lvemanager-clearboth:after{clear:both}@keyframes spin{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.lvemanager-tabs-header{margin-bottom:30px}.lvemanager-tabs-header .navbar-header{margin-top:15px}.lvemanager-tabs-header .navbar-header .navbar-toggle{padding:4px 10px !important}.lvemanager-tabs-header .navbar-header .navbar-toggle .material-icons::before{color:#2b98f0;content:'close';-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.lvemanager-tabs-header .navbar-header .navbar-toggle.lvemanager-collapsed .material-icons::before{content:'menu'}.lvemanager-tabs-header .navbar-header .navbar-toggle:hover,.lvemanager-tabs-header .navbar-header .navbar-toggle:active,.lvemanager-tabs-header .navbar-header .navbar-toggle:focus{background-color:#f1f1f1;border-radius:2px}.lvemanager-tabs-header .lvemanager-menu-wrapper{border-radius:6px}.lvemanager-tabs-header .lvemanager-progress-bar-wrapper{height:4px}.lvemanager-tabs-header .lvemanager-menu-wrapper li>a{display:inline-flex;align-items:center;padding:3px 6px;border-radius:4px;margin:2px;position:relative;z-index:1}:host/deep/mat-progress-bar{padding-bottom:1px;margin-bottom:30px}:host/deep/mat-progress-bar .mat-progress-bar-fill:after{background-color:#2b98f0}:host/deep/mat-progress-bar .mat-progress-bar-buffer{display:none}:host/deep/mat-progress-bar .mat-progress-bar-background{display:none}.lvemanager-php-logo{height:60px;width:60px;vertical-align:middle;margin-right:15px;display:inline-block;background-size:contain;background-image:url(\"data:image/svg+xml;charset=utf-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3C!--%20Generator%3A%20Adobe%20Illustrator%2021.1.0%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%206.00%20Build%200)%20%20--%3E%0D%0A%3Csvg%20version%3D%221.1%22%20id%3D%22%D0%A1%D0%BB%D0%BE%D0%B9_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%0D%0A%09%20viewBox%3D%220%200%20150%20150%22%20style%3D%22enable-background%3Anew%200%200%20150%20150%3B%22%20xml%3Aspace%3D%22preserve%22%3E%0D%0A%3Cstyle%20type%3D%22text%2Fcss%22%3E%0D%0A%09.st0%7Bfill%3A%232D5794%3B%7D%0D%0A%09.st1%7Bfill%3A%23FFFFFF%3B%7D%0D%0A%09.st2%7Bfill%3A%23FCFCFC%3B%7D%0D%0A%3C%2Fstyle%3E%0D%0A%3Cg%3E%0D%0A%09%3Ccircle%20class%3D%22st0%22%20cx%3D%2274.9%22%20cy%3D%2275.5%22%20r%3D%2270%22%2F%3E%0D%0A%09%3Cg%3E%0D%0A%09%09%3Cg%3E%0D%0A%09%09%09%3Cpath%20class%3D%22st1%22%20d%3D%22M58.6%2C84.3c0%2C3.1-1.2%2C5.7-3.5%2C7.7c-2.3%2C2.1-5.1%2C3.1-8.2%2C3.1h-9.4v15h-3.9V72.5h12.1c3.7%2C0%2C6.8%2C1.1%2C9.3%2C3.4%0D%0A%09%09%09%09C57.5%2C78.1%2C58.7%2C80.9%2C58.6%2C84.3z%20M54.7%2C83.4c-0.1-2.2-1-3.9-2.8-5.3c-1.7-1.4-3.8-2.1-6.1-2.1h-8.4v15.7h8.6%0D%0A%09%09%09%09c2.4%2C0%2C4.5-0.8%2C6.1-2.3C54%2C87.9%2C54.9%2C85.9%2C54.7%2C83.4z%22%2F%3E%0D%0A%09%09%09%3Cpath%20class%3D%22st1%22%20d%3D%22M38.5%2C111.2h-5.9V71.5h13.1c4%2C0%2C7.3%2C1.2%2C10%2C3.6c2.7%2C2.4%2C4%2C5.5%2C4%2C9.2c0%2C3.3-1.3%2C6.2-3.9%2C8.5%0D%0A%09%09%09%09c-2.5%2C2.3-5.5%2C3.4-8.9%2C3.4h-8.4V111.2z%20M34.6%2C109.2h1.9v-15h10.4c2.9%2C0%2C5.4-0.9%2C7.6-2.9c2.1-1.9%2C3.2-4.2%2C3.2-7v0%0D%0A%09%09%09%09c0.1-3.1-1-5.6-3.3-7.7c-2.3-2.1-5.1-3.1-8.6-3.1H34.6V109.2z%20M46.1%2C92.8h-9.6V75h9.4c2.5%2C0%2C4.8%2C0.8%2C6.7%2C2.3c2%2C1.6%2C3%2C3.6%2C3.1%2C6.1%0D%0A%09%09%09%09c0.1%2C2.8-0.8%2C5.1-2.8%2C6.9C51.1%2C91.9%2C48.8%2C92.8%2C46.1%2C92.8z%20M38.5%2C90.8h7.6c2.2%2C0%2C4-0.7%2C5.5-2c1.6-1.4%2C2.3-3.1%2C2.2-5.3l0%2C0%0D%0A%09%09%09%09c-0.1-1.9-0.9-3.4-2.4-4.6C49.8%2C77.6%2C48%2C77%2C45.9%2C77h-7.4V90.8z%22%2F%3E%0D%0A%09%09%3C%2Fg%3E%0D%0A%09%09%3Cg%3E%0D%0A%09%09%09%3Cpath%20class%3D%22st1%22%20d%3D%22M89%2C110.2h-3.6V92.9H66.2v17.3h-3.7V72.5h3.7v16.8h19.2V72.5H89V110.2z%22%2F%3E%0D%0A%09%09%09%3Cpath%20class%3D%22st1%22%20d%3D%22M90%2C111.2h-5.6V93.9H67.2v17.3h-5.7V71.5h5.7v16.8h17.2V71.5H90V111.2z%20M86.4%2C109.2H88V73.5h-1.6v16.8H65.2%0D%0A%09%09%09%09V73.5h-1.7v35.7h1.7V91.9h21.2V109.2z%22%2F%3E%0D%0A%09%09%3C%2Fg%3E%0D%0A%09%09%3Cg%3E%0D%0A%09%09%09%3Cpath%20class%3D%22st1%22%20d%3D%22M118.9%2C84.3c0%2C3.1-1.2%2C5.7-3.5%2C7.7c-2.3%2C2.1-5.1%2C3.1-8.2%2C3.1h-9.4v15h-3.9V72.5H106c3.7%2C0%2C6.8%2C1.1%2C9.3%2C3.4%0D%0A%09%09%09%09C117.8%2C78.1%2C119%2C80.9%2C118.9%2C84.3z%20M115.1%2C83.4c-0.1-2.2-1-3.9-2.8-5.3c-1.7-1.4-3.8-2.1-6.1-2.1h-8.4v15.7h8.6%0D%0A%09%09%09%09c2.4%2C0%2C4.5-0.8%2C6.1-2.3C114.4%2C87.9%2C115.2%2C85.9%2C115.1%2C83.4z%22%2F%3E%0D%0A%09%09%09%3Cpath%20class%3D%22st1%22%20d%3D%22M98.8%2C111.2h-5.9V71.5H106c4%2C0%2C7.3%2C1.2%2C10%2C3.6c2.7%2C2.4%2C4%2C5.5%2C4%2C9.2c0%2C3.3-1.3%2C6.2-3.9%2C8.5%0D%0A%09%09%09%09c-2.5%2C2.3-5.5%2C3.4-8.9%2C3.4h-8.4V111.2z%20M94.9%2C109.2h1.9v-15h10.4c2.9%2C0%2C5.4-0.9%2C7.6-2.9c2.1-1.9%2C3.2-4.2%2C3.2-7v0%0D%0A%09%09%09%09c0.1-3.1-1-5.6-3.3-7.7c-2.3-2.1-5.1-3.1-8.6-3.1H94.9V109.2z%20M106.4%2C92.8h-9.6V75h9.4c2.5%2C0%2C4.8%2C0.8%2C6.7%2C2.3%0D%0A%09%09%09%09c2%2C1.6%2C3%2C3.6%2C3.1%2C6.1c0.1%2C2.8-0.8%2C5.1-2.8%2C6.9C111.4%2C91.9%2C109.1%2C92.8%2C106.4%2C92.8z%20M98.8%2C90.8h7.6c2.2%2C0%2C4-0.7%2C5.5-2%0D%0A%09%09%09%09c1.6-1.4%2C2.3-3.1%2C2.2-5.3v0c-0.1-1.9-0.9-3.4-2.4-4.6c-1.6-1.3-3.4-1.9-5.5-1.9h-7.4V90.8z%22%2F%3E%0D%0A%09%09%3C%2Fg%3E%0D%0A%09%3C%2Fg%3E%0D%0A%09%3Cpath%20class%3D%22st2%22%20d%3D%22M131.6%2C75c0.6%2C0.1%2C1.4%2C0%2C2.1-0.1c0.5%2C0%2C1%2C0%2C1.5%2C0C134.9%2C42.3%2C108%2C15.8%2C75%2C15.8c-33%2C0-59.9%2C26.5-60.2%2C59.2%0D%0A%09%09c0%2C0%2C0%2C0%2C0%2C0c0.2%2C0%2C0.4%2C0%2C0.5%2C0c0.4%2C0%2C0.9%2C0%2C1.3%2C0c0.8%2C0%2C1.5-0.1%2C2.3-0.1c0.3-30.4%2C25.3-55%2C56.1-55c30.8%2C0%2C55.8%2C24.7%2C56.1%2C55.1%0D%0A%09%09C131.2%2C75%2C131.4%2C75%2C131.6%2C75z%22%2F%3E%0D%0A%09%3Crect%20x%3D%2273.6%22%20y%3D%2216.7%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%2217.7%22%2F%3E%0D%0A%09%0D%0A%09%09%3Crect%20x%3D%2248.8%22%20y%3D%2224.1%22%20transform%3D%22matrix(0.9442%20-0.3294%200.3294%200.9442%20-8.0602%2018.3527)%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%2217.7%22%2F%3E%0D%0A%09%0D%0A%09%09%3Crect%20x%3D%2297.7%22%20y%3D%2224.1%22%20transform%3D%22matrix(-0.9442%20-0.3294%200.3294%20-0.9442%20181.7407%2096.7161)%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%2217.7%22%2F%3E%0D%0A%09%3Crect%20x%3D%2229.7%22%20y%3D%2241%22%20transform%3D%22matrix(0.866%20-0.5%200.5%200.866%20-20.7596%2022.2256)%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%2217.7%22%2F%3E%0D%0A%09%0D%0A%09%09%3Crect%20x%3D%22116.4%22%20y%3D%2239.2%22%20transform%3D%22matrix(-0.8192%20-0.5736%200.5736%20-0.8192%20186.7255%20154.9597)%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%2217.7%22%2F%3E%0D%0A%09%0D%0A%09%09%3Crect%20x%3D%2215.6%22%20y%3D%2271.7%22%20transform%3D%22matrix(6.123234e-17%20-1%201%206.123234e-17%20-56.9106%2090.7909)%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%224.3%22%2F%3E%0D%0A%09%0D%0A%09%09%3Crect%20x%3D%22131.7%22%20y%3D%2271.7%22%20transform%3D%22matrix(6.123234e-17%20-1%201%206.123234e-17%2059.1492%20206.8508)%22%20class%3D%22st2%22%20width%3D%222.7%22%20height%3D%224.4%22%2F%3E%0D%0A%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E%0D%0A\")}.lvemanager-php-logo-title{object-fit:contain;font-family:'Noto Sans',sans-serif;font-size:19px;font-weight:bold;font-stretch:normal;font-style:normal;line-height:1.32;letter-spacing:normal;color:#2d5794}.lvemanager-tabs-header{display:flex;flex-direction:column}.lvemanager-tabs-header .navbar-header{padding:12px;margin-top:0}.lvemanager-main_content_block{background:#f5f7fa;padding:24px;min-height:400px}"},2049:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(1).__exportStar(n(2050),t)},2050:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DomainsModule=void 0;const a=n(1),i=n(0),o=n(18),s=n(108),r=n(135),l=n(2),d=n(17),c=n(72),p=n(73),m=n(180),u=n(40),g=n(41),h=n(850),v=n(2051),f=n(297),b=n(2054),x=n(181),C=n(392),_=n(393),y=n(505),D=n(145),w=n(179);let S=class{};S=a.__decorate([i.NgModule({imports:[l.CommonModule,m.CommonComponentModule,u.BrowserModule,g.BrowserAnimationsModule,d.FormsModule,o.RouterModule,s.TooltipModule,r.AngularMaterialModules,c.CustomTranslateModule.forRoot(),f.ManageShowOnlyModeModule,p.ComponentModule,d.FormsModule,s.TooltipModule.forRoot(),b.UiGroupActionsModule,C.DomainsGridModule,_.UiPaginatorModule,y.UiBadgeModule],declarations:[h.DomainsComponent,v.DomainConfigModalComponent],exports:[h.DomainsComponent,v.DomainConfigModalComponent],providers:[x.CpanelRepo,D.CagefsRepo,w.IsolationRepo]})],S),t.DomainsModule=S},2051:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DomainConfigModalComponent=void 0;const a=n(1),i=n(0),o=n(117),s=n(57),r=n(23),l=n(230);let d=class{constructor(e,t,n){this.selectorRepo=e,this.notifications=t,this.translateService=n,this.phpVersionList=[],this.accountPhpVersion="",this.visible=!1,this.visibleChange=new i.EventEmitter,this.saved=new i.EventEmitter,this.activeTab="extensions",this.selectedPhpVersion="",this.rawExtensions=[],this.extensionLetterGroups=[],this.loading=!1,this.versionChanging=!1}ngOnChanges(e){e.visible&&this.visible&&this.domain&&(this.selectedPhpVersion=this.resolvePhpVersion(this.domain.version),this.activeTab="extensions",this.loadDomainData())}onEscapeKey(){this.close()}close(){this.visible=!1,this.visibleChange.emit(!1)}onOverlayClick(e){e.target.classList.contains("modal-overlay")&&this.close()}setTab(e){this.activeTab=e}get selectablePhpVersions(){return this.phpVersionList.filter((e=>e.id&&!e.id.startsWith("native")))}versionLabel(e){let t=e.caption||e.id;return e.id===this.accountPhpVersion?(t=t.replace(/\s*\(current\)/,""),t+" (account default)"):t}resolvePhpVersion(e){if(!e||!this.phpVersionList.length)return"";const t=this.phpVersionList.find((t=>t.id===e));if(t)return t.id;const n=e.match(/(\d)(\d+)$/);if(n){const e=n[1]+"."+n[2],t=this.phpVersionList.find((t=>t.id===e));if(t)return t.id}if(this.phpVersionList.length>0){const e=this.phpVersionList.find((e=>e.checked));return e?e.id:this.phpVersionList[0].id}return""}loadDomainData(){return a.__awaiter(this,void 0,void 0,(function*(){if(this.domain){this.loading=!0,this.rawExtensions=[],this.extensionLetterGroups=[];try{const e=yield this.selectorRepo.getDomainSelectorInfoParsed(this.domain.vhost),t=(e.available_versions||[]).find((e=>e.id===this.selectedPhpVersion));if(!t)return;t.extensions&&(this.rawExtensions=t.extensions,this.rawExtensions.forEach((e=>{e.initialValue=e.state})),this.buildExtensionLetterGroups())}catch(e){}finally{this.loading=!1}}}))}buildExtensionLetterGroups(){const e={};for(const t of this.rawExtensions){const n=t.name.charAt(0).toUpperCase();e[n]||(e[n]=[]),e[n].push(t)}this.extensionLetterGroups=Object.keys(e).sort().map((t=>({letter:t,items:e[t]})))}checkExtension(e,t){return a.__awaiter(this,void 0,void 0,(function*(){t.preventDefault(),!e.disabled&&this.domain&&(e.checked=!e.checked,e.loading=!0,yield this.saveDomainExtension(e),e.loading=!1)}))}saveDomainExtension(e){return a.__awaiter(this,void 0,void 0,(function*(){try{const t={};for(const e of this.rawExtensions)e.disabled||(t[e.name]={state:e.checked,disable:!1});const n=yield this.selectorRepo.setDomainExtensions(t,this.selectedPhpVersion,this.domain.vhost);if(n.warning)throw n.warning;this.translateService.get("moduleSaved",{extension:e.name}).subscribe((e=>{this.notifications.success("Success",e)}))}catch(t){if("string"==typeof t&&/.* enabled as dependency \(.*\)/gi.test(t)){const e=/(.*) enabled as dependency \(.*\)/gi.exec(t)[1],n=this.rawExtensions.find((t=>t.name===e));n&&(n.checked=!0)}else e.checked=!e.checked}}))}onPhpVersionChange(){return a.__awaiter(this,void 0,void 0,(function*(){if(!this.domain)return;this.versionChanging=!0;const e=this.selectedPhpVersion,t=this.domain.version,n=this.domain.phpMode,a=this.selectedPhpVersion===this.accountPhpVersion,i=a?"native":this.selectedPhpVersion;try{yield this.selectorRepo.setDomainPhpVersion(this.domain.vhost,i),this.domain.version=`alt-php${this.selectedPhpVersion.replace(".","")}`,this.domain.phpMode=a?"account":"per-domain",yield this.loadDomainData(),this.saved.emit()}catch(a){this.selectedPhpVersion=e,this.domain.version=t,this.domain.phpMode=n}finally{this.versionChanging=!1}}))}resetToDefaults(){return a.__awaiter(this,void 0,void 0,(function*(){if(this.domain)try{this.loading=!0,yield this.selectorRepo.setDomainPhpVersion(this.domain.vhost,"native"),this.domain.version=`alt-php${this.accountPhpVersion.replace(".","")}`,this.domain.phpMode="account",this.selectedPhpVersion=this.accountPhpVersion,this.notifications.success("Success",this.translateService.instant("SITE_ISOLATION.domainResetToDefaults")),this.saved.emit(),yield this.loadDomainData()}catch(e){}finally{this.loading=!1}}))}};a.__decorate([i.Input(),a.__metadata("design:type",l.DomainTableEntry)],d.prototype,"domain",void 0),a.__decorate([i.Input(),a.__metadata("design:type",Array)],d.prototype,"phpVersionList",void 0),a.__decorate([i.Input(),a.__metadata("design:type",String)],d.prototype,"accountPhpVersion",void 0),a.__decorate([i.Input(),a.__metadata("design:type",Boolean)],d.prototype,"visible",void 0),a.__decorate([i.Output(),a.__metadata("design:type",Object)],d.prototype,"visibleChange",void 0),a.__decorate([i.Output(),a.__metadata("design:type",Object)],d.prototype,"saved",void 0),a.__decorate([i.HostListener("document:keydown.escape"),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[]),a.__metadata("design:returntype",void 0)],d.prototype,"onEscapeKey",null),d=a.__decorate([i.Component({selector:"domain-config-modal",template:a.__importDefault(n(2052)).default,styles:[a.__importDefault(n(2053)).default]}),a.__metadata("design:paramtypes",[o.PHPSelectorRepo,s.ActionNotificationService,r.TranslateService])],d),t.DomainConfigModalComponent=d},2052:function(e,t){e.exports='\x3c!--\n    Copyright \xa9 Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2026 All Rights Reserved\n\n    Licensed under CLOUD LINUX LICENSE AGREEMENT\n    http://cloudlinux.com/docs/LICENSE.TXT\n--\x3e\n<div class="lvemanager-modal-overlay" *ngIf="visible" (click)="onOverlayClick($event)">\n    <div class="lvemanager-modal-dialog lvemanager-domain-config-modal">\n        <div class="lvemanager-modal-header">\n            <h3>\n                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#1976d2" stroke-width="2"\n                     stroke-linecap="round" stroke-linejoin="round" style="vertical-align:text-bottom;margin-right:6px;">\n                    <polyline points="4 17 10 11 4 5"/>\n                    <line x1="12" y1="19" x2="20" y2="19"/>\n                </svg>\n                <span translate>PHP Selector</span> \u2014 {{domain?.vhost}}\n            </h3>\n            <button class="lvemanager-modal-close" (click)="close()" [attr.aria-label]="\'Close\'">\n                &times;\n            </button>\n        </div>\n\n        <div class="modal-body">\n            <div class="lvemanager-info-banner">\n                <span class="lvemanager-banner-icon">&#8505;</span>\n                <span translate>PHP version and extensions for this domain. Changes are applied immediately.</span>\n            </div>\n\n            <div class="lvemanager-php-version-row">\n                <label translate>PHP version</label>\n                <div class="lvemanager-version-selector-row">\n                    <select [(ngModel)]="selectedPhpVersion"\n                            (ngModelChange)="onPhpVersionChange()"\n                            [disabled]="versionChanging"\n                            class="lvemanager-version-select">\n                        <option *ngFor="let ver of selectablePhpVersions" [value]="ver.id">{{versionLabel(ver)}}</option>\n                    </select>\n                    <ui-spinner *ngIf="versionChanging" [show]="true"></ui-spinner>\n                </div>\n            </div>\n\n            \x3c!-- TODO: restore sub-tabs when per-domain options are supported --\x3e\n\n            <h4 class="lvemanager-section-title" translate>Extensions</h4>\n\n            \x3c!-- Loading state --\x3e\n            <div *ngIf="loading" class="lvemanager-tab-content lvemanager-loading-content">\n                <ui-spinner [show]="true"></ui-spinner>\n                <span class="lvemanager-loading-text" translate>Loading domain configuration...</span>\n            </div>\n\n            <div *ngIf="!loading" class="lvemanager-tab-content">\n                <div class="lvemanager-extensions-grid" *ngIf="extensionLetterGroups.length > 0">\n                    <div class="lvemanager-ext-letter-group" *ngFor="let group of extensionLetterGroups">\n                        <div class="lvemanager-ext-letter">{{group.letter}}</div>\n                        <div class="lvemanager-ext-item" *ngFor="let ext of group.items"\n                             [class.lvemanager-checked]="ext.checked">\n                            <ui-checkbox [id]="\'modal-ext-\' + ext.name"\n                                         (click)="checkExtension(ext, $event)"\n                                         [(ngModel)]="ext.checked"\n                                         [disabled]="ext.loading || ext.disabled"\n                                         [tooltip]="ext.description | translate">\n                            </ui-checkbox>\n                            {{ext.name}}\n                            <ui-spinner [id]="\'modal-spinner-\' + ext.name" [show]="ext.loading"></ui-spinner>\n                        </div>\n                    </div>\n                </div>\n                <div class="lvemanager-placeholder-content" *ngIf="extensionLetterGroups.length === 0">\n                    <p class="lvemanager-muted-text" translate>No extensions available for the selected PHP version.</p>\n                </div>\n            </div>\n\n            \x3c!-- TODO: Per-domain options not supported by backend yet (set_options ignores --website).\n                 Re-enable this block once ClUserOptSelect supports per-domain options. --\x3e\n            \x3c!--\n            <div *ngIf="activeTab === \'options\' && !loading" class="lvemanager-tab-content">\n                <div class="lvemanager-options-list" *ngIf="options.length > 0">\n                    <div class="lvemanager-option-item" *ngFor="let opt of options">\n                        <label>{{opt.title}}</label>\n                        <input *ngIf="opt.type === \'value\'" type="text"\n                               [ngModel]="opt.value"\n                               [ngModelOptions]="{updateOn: \'blur\'}"\n                               (ngModelChange)="onOptionChanged(opt, $event)"\n                               [disabled]="opt.loading"\n                               class="lvemanager-option-input">\n                        <input *ngIf="opt.type === \'bool\'" type="checkbox"\n                               [ngModel]="opt.value"\n                               (ngModelChange)="onOptionChanged(opt, $event)"\n                               [disabled]="opt.loading">\n                        <select *ngIf="opt.type === \'list\'"\n                                [ngModel]="opt.value"\n                                (ngModelChange)="onOptionChanged(opt, $event)"\n                                [disabled]="opt.loading"\n                                class="lvemanager-option-select">\n                            <option *ngFor="let v of opt.range" [value]="v.id">{{v.caption}}</option>\n                        </select>\n                        <ui-spinner [show]="opt.loading"></ui-spinner>\n                    </div>\n                </div>\n                <div class="lvemanager-placeholder-content" *ngIf="options.length === 0">\n                    <p class="lvemanager-muted-text" translate>No options available for the selected PHP version.</p>\n                </div>\n            </div>\n            --\x3e\n        </div>\n\n        <div class="lvemanager-modal-footer">\n            <ui-button [upper]="false"\n                       [id]="\'resetDomainDefaults\'"\n                       [style]="\'default\'"\n                       [size]="\'normal\'"\n                       [disabled]="loading"\n                       (clickAction)="resetToDefaults()">\n                <span translate>Reset to Account Defaults</span>\n            </ui-button>\n            <ui-button [upper]="false"\n                       [id]="\'closeDomainModal\'"\n                       [style]="\'primary\'"\n                       [size]="\'normal\'"\n                       (clickAction)="close()">\n                <span translate>Close</span>\n            </ui-button>\n        </div>\n    </div>\n</div>\n'},2053:function(e,t){e.exports='.lvemanager-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:60px 20px;overflow-y:auto}.lvemanager-domain-config-modal{background:#fff;border-radius:8px;width:820px;max-width:95vw;display:flex;flex-direction:column;box-shadow:0 8px 32px rgba(0,0,0,0.2);animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.lvemanager-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e0e0e0}.lvemanager-modal-header h3{margin:0;font-size:16px;font-weight:600;color:#333}.lvemanager-modal-header .lvemanager-modal-close{background:none;border:none;font-size:20px;color:#888;cursor:pointer;padding:4px;line-height:1;border-radius:4px}.lvemanager-modal-header .lvemanager-modal-close:hover{color:#333;background:#f0f0f0}.modal-body{flex:1;overflow-y:auto;padding:20px;max-height:70vh}.lvemanager-info-banner{background:#e8f4fd;border-left:4px solid #2196F3;padding:12px 16px;border-radius:0 6px 6px 0;font-size:13px;color:#333;margin-bottom:16px;display:flex;align-items:flex-start;gap:10px;line-height:1.5}.lvemanager-info-banner .lvemanager-banner-icon{font-size:18px;flex-shrink:0;margin-top:1px;color:#2196F3}.lvemanager-php-version-row{border-bottom:1px solid #e8e8e8;padding-bottom:12px;margin-bottom:12px}.lvemanager-php-version-row label{display:block;font-weight:600;margin-bottom:8px;color:#333;font-size:13px}.lvemanager-php-version-row .lvemanager-version-selector-row{display:flex;align-items:center;gap:10px}.lvemanager-php-version-row .lvemanager-version-selector-row .lvemanager-version-select{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px;min-width:200px;background:#fff}.lvemanager-php-version-row .lvemanager-version-selector-row .lvemanager-version-select:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 2px rgba(25,118,210,0.1)}.lvemanager-modal-sub-tabs{display:flex;gap:0;border-bottom:2px solid #e0e0e0;margin-bottom:16px}.lvemanager-modal-sub-tabs button{padding:10px 16px;font-size:13px;color:#555;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-family:inherit;font-weight:400;transition:color .2s,border-color .2s}.lvemanager-modal-sub-tabs button:hover{color:#1976d2}.lvemanager-modal-sub-tabs button.lvemanager-active{color:#1976d2;border-bottom-color:#1976d2;font-weight:500}.lvemanager-section-title{font-size:13px;font-weight:600;color:#555;margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid #e0e0e0}.lvemanager-tab-content{min-height:150px}.lvemanager-loading-content{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px 0;color:#888;font-size:13px}.lvemanager-extensions-grid{columns:4;column-gap:24px;padding:4px 0}.lvemanager-ext-letter-group{break-inside:avoid;margin-bottom:12px}.lvemanager-ext-letter{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background-color:#1a73e8;color:white;font-size:12px;font-weight:600;text-transform:uppercase;margin-bottom:4px}.lvemanager-ext-item{display:flex;align-items:center;font-size:13px;line-height:28px;color:#333}.lvemanager-ext-item ui-checkbox{margin-right:4px;flex-shrink:0}.lvemanager-options-list{max-width:700px}.lvemanager-option-item{display:flex;align-items:center;padding:10px 0;border-bottom:1px solid #f0f0f0;gap:20px}.lvemanager-option-item label{width:220px;flex-shrink:0;font-size:13px;font-weight:500;color:#333;margin:0}.lvemanager-option-item .lvemanager-option-input{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px;flex:1;max-width:300px}.lvemanager-option-item .lvemanager-option-input:focus{outline:none;border-color:#1976d2;box-shadow:0 0 0 2px rgba(25,118,210,0.1)}.lvemanager-option-item .lvemanager-option-select{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px;background:#fff;min-width:150px}.lvemanager-option-item .lvemanager-option-select:focus{outline:none;border-color:#1976d2}.lvemanager-option-item input[type="checkbox"]{width:15px;height:15px;accent-color:#1976d2}.lvemanager-placeholder-content{padding:20px 0}.lvemanager-placeholder-content .lvemanager-muted-text{color:#999;font-size:13px}.lvemanager-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px;border-top:1px solid #e0e0e0}'},2054:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const a=n(1);a.__exportStar(n(807),t),a.__exportStar(n(808),t)},2055:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AppPhpConfig=void 0;const a=n(1),i=n(0),o=n(10),s=n(102),r=n(165);let l=class{constructor(e){this._injector=e}get _appConfig(){return this._injector.get(s.ConfigRepo)}get _appState(){return this._injector.get(o.AppState)}get _sentryInitializer(){return this._injector.get(r.SentryInitializerService)}loadConfig(){return new Promise(((e,t)=>{this._appConfig.getUserInfo().then((t=>{this._appState.set("SERVER_IP",t.server_ip),this._sentryInitializer.initSentry(),e(t)}),(e=>{t(e)}))}))}};l=a.__decorate([i.Injectable(),a.__metadata("design:paramtypes",[i.Injector])],l),t.AppPhpConfig=l},507:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PHPCommonComponent=void 0;const a=n(1),i=n(0),o=n(117),s=n(34),r=n(29),l=n(124),d=n(33),c=n(18),p=n(10),m=n(57),u=n(80),g=n(134);let h=class extends d.BaseComponent{constructor(e,t,n){super(e),this.injector=e,this.router=t,this.appState=n,this.loaderSettings={type:r.LoadingTypes.spin},this.saving=!1,this.selectedVersion="",this.phpVersionList=[],this.options=[],this.rawExtensions=[],this.nativeWarning=[new u.NotificationMessage("Warning","WARNING.nativeWarning",u.NotificationStatus.warning,null)]}get currentVersion(){return this._currentVersion||(this.selectorData||{}).selected_version}set currentVersion(e){this._currentVersion=e}get isCurrentNativeVersion(){return!!this.currentVersion&&this.currentVersion.startsWith("native")}get isCPanel(){return this.appState.get("panelName")===g.Panel.CPanel}ngOnInit(){this.selector_repo=this.injector.get(o.PHPSelectorRepo),this.notifications=this.injector.get(m.ActionNotificationService),this.unvailableService=this.injector.get(l.UnavailableService)}canDeactivate(){return this.saved}load(e=!1){return a.__awaiter(this,void 0,void 0,(function*(){this.selectorData=yield this.selector_repo.getSelectorInfoParsed(e),this.phpVersionList=this.selectorData.available_versions,this.phpVersionList.forEach((e=>{e.checked=e.id===this.currentVersion,e.caption=this.getTranslatedCaption(e)})),this.selectorData&&this.selectorData.hasOwnProperty("selector_enabled")&&!this.selectorData.selector_enabled&&this.unvailableService.showPage({error_id:"ERROR.phpSelectorDisabled"})}))}setAsCurrent(){return a.__awaiter(this,void 0,void 0,(function*(){try{this.currentVersion=this.currentVersion.slice(0,6),yield this.selector_repo.setCurrentVersion(this.currentVersion)}catch(e){}finally{yield this.load(!0),this.currentVersion=this.selectorData.selected_version}}))}isSetAsCurrentAvailable(){return!!this.selectorData&&this._currentVersion!==this.selectorData.selected_version}getTranslatedCaption(e){return e.checked&&e.name_modifier?this.translateService.instant("phpVersionCaptionItemCurrent",{version:e.id,modifier:`, ${e.name_modifier}`}):e.name_modifier&&!e.checked?this.translateService.instant("phpVersionCaptionItem",{version:e.id,modifier:`(${e.name_modifier})`}):e.checked?this.translateService.instant("phpVersionCaptionItemCurrent",{version:e.id,modifier:""}):this.translateService.instant("phpVersionCaptionItem",{version:e.id,modifier:""})}};a.__decorate([s.loading,a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[Boolean]),a.__metadata("design:returntype",Promise)],h.prototype,"load",null),a.__decorate([s.loading,a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[]),a.__metadata("design:returntype",Promise)],h.prototype,"setAsCurrent",null),h=a.__decorate([i.Injectable(),a.__metadata("design:paramtypes",[i.Injector,c.Router,p.AppState])],h),t.PHPCommonComponent=h},508:function(e,t){e.exports='.lvemanager-tools{padding-right:30px}.lvemanager-tools ::ng-deep ui-button{margin-left:6px}.lvemanager-tools ::ng-deep ui-button button[name="default"]{padding:0 22px}.lvemanager-tools ::ng-deep ui-button button[name="default"] .material-icons{margin-right:13px}::ng-deep .selector_dropdown .b_btn.btn-clear{min-width:0}.lvemanager-wrapper{padding-bottom:20px}.lvemanager-version-selector ::ng-deep ui-form-element{margin-left:20px}.lvemanager-divider{width:100%;height:2px;margin:30px 0;border-top:0;border-bottom:solid 1px #eeeeee}'},847:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PhpExtensionsComponent=void 0;const a=n(1),i=n(0),o=n(104),s=n(54),r=n(507),l=n(366),d=n(199),c=n(34),p=n(18),m=n(10),u=n(23);let g=class extends r.PHPCommonComponent{constructor(e,t,n,a){super(e,t,n),this.injector=e,this.router=t,this.appState=n,this.translateService=a,this.numberOfColumns=4,this.useDefault=new o.Tool("default",new s.Message("useDefault"),null,(()=>this.isCurrentNativeVersion?null:this.useDefaults()),null,this.isCurrentNativeVersion,!1,"default","normal","")}get saved(){return!this.rawExtensions.map((e=>e.loading)).reduce(((e,t)=>e||t),!1)}useDefaults(){return a.__awaiter(this,void 0,void 0,(function*(){try{yield this.selector_repo.useDefaults(this.currentVersion)}catch(e){}finally{yield this.load(!0),this.notifications.success("Success","moduleDefaultSaved")}}))}save(e){return a.__awaiter(this,void 0,void 0,(function*(){try{let t=yield this.selector_repo.setExtensions(l.mapValues(l.keyBy(this.rawExtensions,"name")),this.currentVersion);if(t.warning)throw t.warning;this.translateService.get("moduleSaved",{extension:e.name}).subscribe((e=>{this.notifications.success("Success",e)}))}catch(t){if(/.* enabled as dependency \(.*\)/gi.test(t)){let e=/(.*) enabled as dependency \(.*\)/gi.exec(t)[1];this.rawExtensions.find((t=>t.name===e)).checked=!0}else e.checked=!e.checked}}))}checkExtension(e,t){return a.__awaiter(this,void 0,void 0,(function*(){t.preventDefault(),e.disabled||(e.checked=!e.checked,e.loading=!0,yield this.save(e),e.loading=!1)}))}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return a.__awaiter(this,void 0,void 0,(function*(){if(e.ngOnInit.call(this),yield this.load(),this.parseExtensions(),this.selectorData.extensions_is_hidden)switch((this.router.url||"").split("?")[0]){case"/extensions":this.router.navigate(["/options"])}}))}parseExtensions(){let e=this.phpVersionList.find((e=>e.id===this.currentVersion));if(e){this.rawExtensions=e.extensions||[].filter((e=>!e.disabled)),this.rawExtensions.forEach((e=>{e.initialValue=e.state}));let t=e?l.chunk(this.rawExtensions,this.rawExtensions.length/this.numberOfColumns):[];this.extensions=t.map((e=>l.groupBy(e,(e=>e.name.substr(0,1)))))}}};a.__decorate([i.ViewChild("saveConfirmation"),a.__metadata("design:type",d.ModalConfirmation)],g.prototype,"saveConfirmation",void 0),a.__decorate([c.loading,a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[]),a.__metadata("design:returntype",Promise)],g.prototype,"useDefaults",null),g=a.__decorate([i.Component({selector:"php-extensions",template:a.__importDefault(n(2039)).default,styles:[a.__importDefault(n(508)).default,a.__importDefault(n(2040)).default]}),a.__metadata("design:paramtypes",[i.Injector,p.Router,m.AppState,u.TranslateService])],g),t.PhpExtensionsComponent=g},848:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PHPOptionsComponent=void 0;const a=n(1),i=n(0),o=n(54),s=n(507),r=n(199),l=n(246),d=n(23),c=n(18),p=n(10),m=[{fields:["max_execution_time","max_input_time"],requirements:[{m:l.Validator.wholeNumber}]},{fields:["mail.force_extra_parameters","include_path","open_basedir","safe_mode_exec_dir","safe_mode_include_dir","session.save_path"],requirements:[{m:l.Validator.isAsciiChars}]}];let u=class extends s.PHPCommonComponent{constructor(e,t,n,a){super(e,t,n),this.injector=e,this.router=t,this.appState=n,this.translateService=a,this.leaveOptionsMessage=new o.Message("If you leave page now, options won`t be saved!")}get saved(){return!this.options.map((e=>e.loading)).reduce(((e,t)=>e||t),!1)}save(e){return a.__awaiter(this,void 0,void 0,(function*(){try{if(e.requirements){if(e.requirements.map((t=>t.m(e.value).message)).filter((e=>!!e)).length)return}let t=yield this.selector_repo.setOptions(this.options,this.currentVersion);if(e.initialValue=e.value,t.warning)throw t.warning;this.translateService.get("optionSaved",{option:e.title}).subscribe((e=>{this.notifications.success("Success",e)}))}catch(t){e.value=e.initialValue}}))}useDefault(e){e.value=e.default}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return a.__awaiter(this,void 0,void 0,(function*(){e.ngOnInit.call(this),yield this.load(),this.parseOptions()}))}parseOptions(){let e=this.phpVersionList.find((e=>e.id===this.currentVersion));e&&e.options?(this.options=e.options,this.options.forEach((e=>{let t=m.find((t=>t.fields.includes(e.title)));t&&(e.requirements=t.requirements),e.initialValue=e.value,0===e.changeEvent.observers.length&&e.onChange.subscribe((e=>a.__awaiter(this,void 0,void 0,(function*(){e.loading=!0,yield this.save(e),e.loading=!1}))))}))):this.options=[]}};a.__decorate([i.ViewChild("saveConfirmation"),a.__metadata("design:type",r.ModalConfirmation)],u.prototype,"saveConfirmation",void 0),u=a.__decorate([i.Component({selector:"php-options",template:a.__importDefault(n(2042)).default,styles:[a.__importDefault(n(508)).default,a.__importDefault(n(2043)).default]}),a.__metadata("design:paramtypes",[i.Injector,c.Router,p.AppState,d.TranslateService])],u),t.PHPOptionsComponent=u},849:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FormAutoSavedGuard=t.ComponentCanDeactivate=void 0;const a=n(1),i=n(0),o=n(0);class s{unloadNotification(e){this.canDeactivate()||(e.returnValue=!0)}}a.__decorate([o.HostListener("window:beforeunload",["$event"]),a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[Object]),a.__metadata("design:returntype",void 0)],s.prototype,"unloadNotification",null),t.ComponentCanDeactivate=s;let r=class{constructor(e,t){this.componentFactoryResolver=e,this.appRef=t}canDeactivate(e){return a.__awaiter(this,void 0,void 0,(function*(){return!!e.canDeactivate()||(yield function(e,t=500,n=20){let a=0;return new Promise((i=>{setInterval((()=>{e.saved?i(!0):a>=n&&i(!1),a++}),t)}))}(e))}))}};r=a.__decorate([i.Injectable(),a.__param(0,i.Inject(i.ComponentFactoryResolver)),a.__param(1,i.Inject(i.ApplicationRef)),a.__metadata("design:paramtypes",[i.ComponentFactoryResolver,i.ApplicationRef])],r),t.FormAutoSavedGuard=r},850:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DomainsComponent=void 0;const a=n(1),i=n(0),o=n(199),s=n(23),r=n(18),l=n(10),d=n(507),c=n(34),p=n(181),m=n(230),u=n(392),g=n(820),h=n(179),v=n(57),f=n(454),b=n(4),x=n(8);let C=class extends d.PHPCommonComponent{constructor(e,t,n,a,i,o,s,r){super(e,t,a),this.injector=e,this.router=t,this.cpanelRepo=n,this.appState=a,this.translateService=i,this.domainsHelper=o,this.isolationRepo=s,this.notificationsService=r,this.someUsersSelected=!1,this.filterField="",this.allUsersSelected=!1,this.domainsData=null,this.tableData=[],this._allDomains=[],this.cloudLinuxDomainsCount=0,this.multiPHPDomainsCount=0,this.availableShowOnlyModes=[],this.isolationFeatureAvailable=!1,this.isolationDeniedByAdmin=!1,this.isolatedCount=0,this.notIsolatedCount=0,this.dataReady=!1,this.configModalVisible=!1,this.configModalDomain=null,this.groupSelectorConfirmation=!1,this.selectorEligibleDomains=[],this.selectorSkippedDomains=[],this.domainActions=[],this.destroy$=new b.Subject,this.loadCancel$=new b.Subject,this.availableShowOnlyModes=this.domainsHelper.getAvailableShowOnlyModes()}ngOnInit(){const e=Object.create(null,{ngOnInit:{get:()=>super.ngOnInit}});return a.__awaiter(this,void 0,void 0,(function*(){if(e.ngOnInit.call(this),yield this.load(),this.selectorData.domains_tab_is_hidden)this.openExtensions();else try{yield this.loadAllData()}catch(e){this.openExtensions()}}))}openExtensions(){this.router.navigate(["/extensions"])}loadAllData(e=!1){return a.__awaiter(this,void 0,void 0,(function*(){this.loadCancel$.next(),this.domainsData=yield this.cpanelRepo.getDomains(e),this.domainsHelper.initValues(e,this.domainsData,this.selectorData,this.currentVersion);const t=this.domainsHelper.parseDomains(),n=yield b.forkJoin([b.from(this.isolationRepo.getSiteIsolationStatus()).pipe(x.catchError((()=>b.of(null)))),b.from(this.isolationRepo.getDomainVersions()).pipe(x.catchError((()=>b.of(null))))]).pipe(x.takeUntil(this.destroy$),x.takeUntil(this.loadCancel$)).toPromise();if(!n)return;const[a,i]=n;if(a&&"success"===a.result&&(this.isolationFeatureAvailable=!1!==a.featureAvailable,this.isolationDeniedByAdmin=this.isolationFeatureAvailable&&!a.allowed,this.availableShowOnlyModes=this.domainsHelper.getAvailableShowOnlyModes().filter((e=>this.isolationFeatureAvailable||"isolatedDomains"!==e.name&&"notIsolatedDomains"!==e.name)),a.domains&&Array.isArray(a.domains))){const e={};for(const t of a.domains)e[t.domain]=t.isolated;for(const n of t)e.hasOwnProperty(n.vhost)&&(n.isolated=e[n.vhost])}i&&"success"===i.result&&i.domainVersions&&this.applyVersionMap(i.domainVersions,t),this._allDomains=t,this.cloudLinuxDomainsCount=this.domainsHelper.cloudlinuxDomainsCount(this.domainsData),this.multiPHPDomainsCount=this.domainsData.domains.length-this.cloudLinuxDomainsCount,this.applyFilter(),this.updateIsolationCounts(),this.dataReady=!0}))}reloadDomains(){return a.__awaiter(this,void 0,void 0,(function*(){this.dataReady=!1,yield this.loadAllData(!0)}))}save(e){}get saved(){return!1}getDomainsCount(){return this.pageRange=this.domainTable.getPageRange(),this.domainsHelper.getDomainsCount(this.tableData,this.domainTable,this.pageRange)}rowAction({action:e,row:t,version:n}){return a.__awaiter(this,void 0,void 0,(function*(){switch(e){case"setDefaultVersion":(yield this.domainsHelper.setDefaultVersion(t,this.changeConfirmation))&&(yield this.reloadDomains());break;case"toggleIsolation":yield this.toggleDomainIsolation(t);break;case"configureDomain":this.openConfigModal(t);break;case"goToAccountSettings":this.router.navigate(["/extensions"]);break;case"changeVersion":yield this.changeDomainVersion(t,n)}}))}updateSelection(e){this.someUsersSelected=e.someUsersSelected,this.allUsersSelected=e.allUsersSelected,this.updateDomainActions()}updateDomainActions(){this.domainActions=[];const e=this.domainTable?this.domainTable.getSelectedItems():[];0!==e.length&&(e.some((e=>e.actionAvailable))&&this.domainActions.push(new f.Action("use_php_selector","Use PHP Selector",(()=>this.setGroupDefaultVersion()))),this.isolationFeatureAvailable&&!this.isolationDeniedByAdmin&&(e.some((e=>!e.isolated))&&this.domainActions.push(new f.Action("enable_isolation","Enable Isolation",(()=>this.enableIsolationAll()))),e.some((e=>e.isolated))&&this.domainActions.push(new f.Action("disable_isolation","Disable Isolation",(()=>this.disableIsolationAll())))))}doFilter(){this.applyFilter(),this.domainTable&&this.domainTable.dataSource.paginator&&this.domainTable.dataSource.paginator.firstPage()}applyFilter(){let e=this._allDomains;const t=this.availableShowOnlyModes.filter((e=>e.checked));t.length>0&&(e=e.filter((e=>t.some((t=>t.filter(e)))))),this.filterField&&(e=e.filter((e=>e.vhost.includes(this.filterField)))),this.tableData=e}setAsCurrent(){const e=Object.create(null,{setAsCurrent:{get:()=>super.setAsCurrent}});return a.__awaiter(this,void 0,void 0,(function*(){yield e.setAsCurrent.call(this),this.domainsHelper.updateCloudlinuxCurrentVersion(this.currentVersion),yield this.reloadDomains()}))}setGroupDefaultVersion(){return a.__awaiter(this,void 0,void 0,(function*(){const e=this.domainTable.getSelectedItems(),t=e.filter((e=>e.actionAvailable)),n=e.filter((e=>!e.actionAvailable));if(0!==t.length){this.groupSelectorConfirmation=!0,this.selectorEligibleDomains=t,this.selectorSkippedDomains=n.map((e=>({domain:e,reason:this.getSkipReason(e)})));try{yield this.changeConfirmation.open()}catch(e){return void(this.groupSelectorConfirmation=!1)}this.groupSelectorConfirmation=!1,yield this.domainsHelper.setVersion(this.domainsData.defaultVersion,t.map((e=>e.vhost))),yield this.reloadDomains()}else this.notificationsService.warning("Warning","None of the selected domains can be switched to PHP Selector.")}))}getSkipReason(e){return e.currentSelector===m.SelectorType.cloudlinux?"Already uses CloudLinux PHP Selector":e.phpFpm?"PHP-FPM is enabled":"Not available for switching"}changeDomainVersion(e,t){return a.__awaiter(this,void 0,void 0,(function*(){e._loading=!0;const n=t===this.currentVersion,a="native"===t||t.startsWith("native"),i=a||n?"native":t;try{yield this.selector_repo.setDomainPhpVersion(e.vhost,i),a||n?(e.version=`alt-php${this.currentVersion.replace(".","")}`,e.phpMode="account"):(e.version=`alt-php${t.replace(".","")}`,e.phpMode="per-domain"),this.notificationsService.success("Success",this.translateService.instant("PHP version changed"))}catch(e){}finally{e._loading=!1,this.tableData=[...this.tableData]}}))}openConfigModal(e){this.configModalDomain=e,this.configModalVisible=!0}onConfigModalSaved(){this.tableData=[...this.tableData],this.updateIsolationCounts()}updateIsolationCounts(){this.isolatedCount=this._allDomains.filter((e=>e.isolated)).length,this.notIsolatedCount=this._allDomains.filter((e=>!e.isolated)).length}applyVersionMap(e,t){for(const n of t)if(n.currentSelector===m.SelectorType.cloudlinux)if(e[n.vhost]){const t=e[n.vhost];n.version=`alt-php${t.replace(".","")}`,n.phpMode=t===this.currentVersion?"account":"per-domain"}else this.currentVersion&&!this.currentVersion.startsWith("native")&&(n.version=`alt-php${this.currentVersion.replace(".","")}`,n.phpMode="account")}refreshDomainVersions(e){return a.__awaiter(this,void 0,void 0,(function*(){try{const t=yield this.isolationRepo.getDomainVersions();t&&"success"===t.result&&t.domainVersions&&this.applyVersionMap(t.domainVersions,e||this._allDomains)}catch(e){}}))}toggleDomainIsolation(e){return a.__awaiter(this,void 0,void 0,(function*(){if(this.isolationDeniedByAdmin)return;e._loading=!0;const t=!e.isolated;try{e.isolated?yield this.isolationRepo.disableDomainIsolation(e.vhost):yield this.isolationRepo.enableDomainIsolation(e.vhost),e.isolated=t,yield this.refreshDomainVersions([e]),this.notificationsService.success("Success",this.translateService.instant("SITE_ISOLATION.domainStatusChanged"))}catch(e){}finally{e._loading=!1,this.tableData=[...this.tableData],this.updateIsolationCounts()}}))}enableIsolationAll(){return a.__awaiter(this,void 0,void 0,(function*(){if(this.isolationDeniedByAdmin)return;const e=this.domainTable.getSelectedItems(),t=(e.length>0?e:this.tableData).filter((e=>!e.isolated));if(0!==t.length){t.forEach((e=>e._loading=!0)),this.tableData=[...this.tableData];try{for(const e of t)yield this.isolationRepo.enableDomainIsolation(e.vhost),e.isolated=!0,e._loading=!1;yield this.refreshDomainVersions(t),this.notificationsService.success("Success",this.translateService.instant("SITE_ISOLATION.isolationEnabled"))}catch(e){}finally{t.forEach((e=>e._loading=!1)),this.domainTable.clearSelection(),this.tableData=[...this.tableData],this.updateIsolationCounts()}}}))}disableIsolationAll(){return a.__awaiter(this,void 0,void 0,(function*(){if(this.isolationDeniedByAdmin)return;const e=this.domainTable.getSelectedItems(),t=(e.length>0?e:this.tableData).filter((e=>e.isolated));if(0!==t.length){t.forEach((e=>e._loading=!0)),this.tableData=[...this.tableData];try{for(const e of t)yield this.isolationRepo.disableDomainIsolation(e.vhost),e.isolated=!1,e._loading=!1;yield this.refreshDomainVersions(t),this.notificationsService.success("Success",this.translateService.instant("SITE_ISOLATION.isolationDisabled"))}catch(e){}finally{t.forEach((e=>e._loading=!1)),this.domainTable.clearSelection(),this.tableData=[...this.tableData],this.updateIsolationCounts()}}}))}ngOnDestroy(){this.loadCancel$.next(),this.loadCancel$.complete(),this.destroy$.next(),this.destroy$.complete(),this.domainsData=null,this._allDomains=[],this.tableData=[]}};a.__decorate([i.ViewChild("changeConfirmation"),a.__metadata("design:type",o.ModalConfirmation)],C.prototype,"changeConfirmation",void 0),a.__decorate([i.ViewChild("saveConfirmation"),a.__metadata("design:type",o.ModalConfirmation)],C.prototype,"saveConfirmation",void 0),a.__decorate([i.ViewChild("domainTable"),a.__metadata("design:type",u.DomainsGridComponent)],C.prototype,"domainTable",void 0),a.__decorate([c.loading,a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[Boolean]),a.__metadata("design:returntype",Promise)],C.prototype,"loadAllData",null),a.__decorate([c.loading,a.__metadata("design:type",Function),a.__metadata("design:paramtypes",[]),a.__metadata("design:returntype",Promise)],C.prototype,"reloadDomains",null),C=a.__decorate([i.Component({template:a.__importDefault(n(2044)).default,styles:[a.__importDefault(n(508)).default,a.__importDefault(n(2045)).default]}),a.__metadata("design:paramtypes",[i.Injector,r.Router,p.CpanelRepo,l.AppState,s.TranslateService,g.DomainsHelperUser,h.IsolationRepo,v.ActionNotificationService])],C),t.DomainsComponent=C}});