UNPKG

nextjs-seo-manager

Version:
1 lines 56.2 kB
import{b as e,c as t,s as o,d as i}from"./default-2fe6655e.js";import n from"react";import{connect as l}from"react-redux";import a from"prop-types";import{f as s}from"./firebase-f83deced.js";import{getAuth as r,getIdToken as d,signOut as c}from"firebase/auth";import{Button as u,Box as p,Typography as h,DialogTitle as m,IconButton as v,DialogContent as g,DialogActions as f,CircularProgress as b,Chip as x,Tabs as E,Tab as y,Alert as C,TextField as S,Autocomplete as A,FormControl as w,InputLabel as I,Select as k,MenuItem as D,FormControlLabel as z,Switch as T}from"@mui/material";import P from"@mui/icons-material/Close";import O from"@mui/icons-material/OpenInNew";import"axios";import j from"@mui/icons-material/ArrowBack";import R from"@mui/icons-material/ArrowForward";import M from"@mui/icons-material/CloudUploadOutlined";import F from"@mui/material/LinearProgress";import{getStorage as N,ref as _,deleteObject as W,uploadBytesResumable as L,getDownloadURL as U}from"firebase/storage";import $ from"@mui/icons-material/InsertDriveFileOutlined";import{B}from"./BootstrapDialog-ee1e3a53.js";import"firebase/app";import"@mui/material/styles";const G=r(s);class q extends n.Component{constructor(t){super(t),this.componentDidMount=()=>{this.init()},this.componentWillUnmount=()=>{this.state.interval&&(clearInterval(this.state.interval),this.setState({interval:null}))},this.init=()=>{const t=setInterval(()=>e(this,void 0,void 0,function*(){this.setUserToken()}),6e4);this.setUserToken(),this.setState({interval:t})},this.setUserToken=()=>e(this,void 0,void 0,function*(){const t=yield new Promise(t=>e(void 0,void 0,void 0,function*(){const e=d(G.currentUser,!0);return t(e)}));this.setState({userToken:t})}),this.openWindow=()=>{var e,t,o,i,n,l,a,s,r;const d="Test"!==process.env.NEXT_PUBLIC_NODE_ENV_MANAGER&&"Development"!==process.env.NEXT_PUBLIC_NODE_ENV_MANAGER?`https://seomanager.dev/dashboard/?userToken=${this.state.userToken}&projectId=${null===(o=null===(t=null===(e=this.props)||void 0===e?void 0:e.seoData)||void 0===t?void 0:t.manager)||void 0===o?void 0:o.projectId}`:"Test"===process.env.NEXT_PUBLIC_NODE_ENV_MANAGER?`http://localhost:3001/dashboard/?userToken=${this.state.userToken}&projectId=${null===(l=null===(n=null===(i=this.props)||void 0===i?void 0:i.seoData)||void 0===n?void 0:n.manager)||void 0===l?void 0:l.projectId}`:`https://testing.seomanager.dev/dashboard/?userToken=${this.state.userToken}&projectId=${null===(r=null===(s=null===(a=this.props)||void 0===a?void 0:a.seoData)||void 0===s?void 0:s.manager)||void 0===r?void 0:r.projectId}`;window.open(d,"_blank")},this.state={interval:null,userToken:""}}render(){var e,t;return(null===(t=null===(e=null===window||void 0===window?void 0:window.location)||void 0===e?void 0:e.href)||void 0===t?void 0:t.includes("seomanager.dev/dashboard"))?null:this.state.userToken?n.createElement(u,{variant:"outlined",onClick:this.openWindow,type:"button",size:"small",endIcon:n.createElement(O,{sx:{fontSize:16}}),sx:{borderColor:"#e2e8f0",color:"#475569",textTransform:"none",fontWeight:500,fontSize:"0.8rem",borderRadius:"8px",px:2,"&:hover":{borderColor:"#94a3b8",backgroundColor:"#f8fafc"}}},"Open Dashboard"):null}}var X=l(e=>({user:null==e?void 0:e.user,seoData:null==e?void 0:e.seoData}))(q);!function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===o&&i.firstChild?i.insertBefore(n,i.firstChild):i.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}('/* ===== File Upload ===== */\n\n.file-upload .file-input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n outline: none;\n cursor: pointer;\n z-index: 2;\n}\n\n.file-upload .overlay {\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n position: absolute;\n z-index: 1;\n}\n\n.icon {\n width: 75px;\n margin-bottom: 1rem;\n}\n\n@media (max-width: 600px) {\n .icon {\n width: 50px;\n }\n}\n\n/* ===== File Viewer Grid ===== */\n\n.fileViewer {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 12px;\n padding: 16px 0;\n}\n\n.image-container {\n width: 100%;\n aspect-ratio: 1;\n border-radius: 8px;\n overflow: hidden;\n transition: all 0.2s ease;\n background-color: #ffffff;\n border: 2px solid transparent;\n position: relative;\n}\n\n.image-container:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n transform: translateY(-2px);\n}\n\n.file-details-section {\n width: 45%;\n}\n\n@media only screen and (max-width: 600px) {\n .fileViewer {\n grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));\n gap: 8px;\n }\n .image-container {\n min-height: 100px;\n }\n .file-details-section {\n width: 100%;\n }\n}\n\n/* ===== Image Carousel / Upload Zone ===== */\n\n.carousel-frame-design {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n width: 100%;\n height: min(calc(90vh - 10px), 300px);\n overflow: hidden;\n background-color: #ffffff;\n cursor: pointer;\n border-radius: 10px;\n border: 2px dashed #cbd5e1;\n transition: all 0.25s ease;\n}\n\n.carousel-frame-design:hover {\n border-color: #94a3b8;\n background-color: #f1f5f9;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n}\n\n.carousel-frame-design .carousel-slide {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-width: 100%;\n}\n\n.carousel-slide img {\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n border-radius: 6px;\n}\n\n.carousel-prev,\n.carousel-next {\n position: absolute;\n top: 50%;\n margin-top: -18px;\n z-index: 10;\n font-size: 28px;\n color: #ffffff;\n background: rgba(15, 23, 42, 0.5);\n border-radius: 50%;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: background 0.2s ease;\n}\n\n.carousel-prev:hover,\n.carousel-next:hover {\n background: rgba(15, 23, 42, 0.75);\n}\n\n.carousel-prev {\n left: 12px;\n}\n\n.carousel-next {\n right: 12px;\n}\n\n.carousel-addPhotos {\n position: absolute;\n top: 10%;\n right: 30px;\n margin-top: -15px;\n z-index: 10;\n background-color: transparent;\n cursor: pointer;\n box-shadow: none;\n}\n\n.carousel-dots {\n list-style: none;\n position: absolute;\n left: 0;\n right: 0;\n bottom: 5%;\n margin: 0 auto;\n padding: 0;\n width: max(100px, 15%);\n display: flex;\n justify-content: center;\n gap: 6px;\n}\n\n.carousel-dots li {\n width: 8px;\n height: 8px;\n border: 1.5px solid rgba(255, 255, 255, 0.9);\n border-radius: 50%;\n cursor: pointer;\n transition: background-color 0.2s ease;\n}\n\n.carousel-dots .active-dot {\n background-color: rgba(255, 255, 255, 0.9);\n}\n\n/* ===== Upload Drop Zone ===== */\n\n.seo-upload-zone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 160px;\n border: 2px dashed #cbd5e1;\n border-radius: 10px;\n background-color: #f8fafc;\n cursor: pointer;\n transition: all 0.25s ease;\n position: relative;\n gap: 8px;\n}\n\n.seo-upload-zone:hover {\n border-color: #94a3b8;\n background-color: #f1f5f9;\n}\n\n/* ===== Typography ===== */\n\n.nextjs-seo-manager__title {\n font-family: "Inter", "Roboto", "Helvetica", "Arial", sans-serif;\n font-size: 1.05rem;\n font-weight: 600;\n letter-spacing: 0.01em;\n}\n\n.nextjs-seo-manager__p {\n font-family: "Inter", "Roboto", "Helvetica", "Arial", sans-serif;\n font-size: 0.9rem;\n font-weight: 400;\n color: #475569;\n line-height: 1.6;\n}\n\n.nextjs-seo-manager__button {\n font-family: "Inter", "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 500;\n font-size: 0.85rem;\n text-transform: none;\n letter-spacing: 0.01em;\n}\n\n.nextjs-seo-manager__label {\n font-family: "Inter", "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 0.85rem;\n color: #64748b;\n}\n\n.nextjs-seo-manager__input {\n font-family: "Inter", "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 400;\n font-size: 14px;\n}\n\n/* ===== Events ===== */\n\n.event-box {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: box-shadow 0.2s ease, transform 0.2s ease;\n cursor: pointer;\n width: 48%;\n height: 50px;\n min-width: 250px;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 8px;\n}\n\n.event-box:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: translateY(-1px);\n}\n\n/* ===== Delete Button ===== */\n\n.delete-btn-container {\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: flex-end;\n width: 100%;\n height: 100%;\n left: 0px;\n top: 0px;\n}\n\n.delete-btn {\n background: #dc2626;\n margin: 20px auto;\n width: 200px;\n height: 44px;\n overflow: hidden;\n text-align: center;\n transition: background 0.2s ease;\n cursor: pointer;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(220, 38, 38, 0.3);\n z-index: 20;\n}\n\n.delete-btn:hover {\n background: #b91c1c;\n}\n\n.delete-btnText {\n color: white;\n transition: 0.3s;\n}\n\n.delete-hoverBtn {\n position: relative;\n width: 200px;\n height: 100px;\n margin-top: -100px;\n padding-top: 2px;\n background: #ef4444;\n left: -250px;\n transition: 0.3s;\n}\n\n.delete-hoverText {\n margin-top: 55px;\n margin-right: 0px;\n text-align: center;\n color: #fafafa;\n}\n'),r(s);const H=N(s);class J extends n.Component{constructor(t){super(t),this.componentDidMount=()=>{},this.deleteFile=()=>e(this,void 0,void 0,function*(){this.setState({deleteLoading:!0});if("yes"===prompt("Are you sure you want to delete this file? (yes or no)")){alert(`File Location: ${this.props.file.location}`);const e=_(H,this.props.file.location);yield W(e),this.props.onDelete(this.props.file,this.props.idx),this.setState({deleteLoading:!1}),this.props.onClose()}this.setState({deleteLoading:!1})}),this.renderDetailRow=(e,t)=>n.createElement(p,{sx:{mb:2}},n.createElement(h,{sx:{fontSize:"0.7rem",color:"#94a3b8",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",mb:.3}},e),n.createElement(h,{sx:{fontSize:"0.85rem",color:"#1e293b",wordBreak:"break-all",lineHeight:1.5}},t)),this.state={deleteLoading:!1}}render(){var e,t,o,i;return n.createElement(n.Fragment,null,n.createElement(B,{onClose:this.props.onClose,"aria-labelledby":"customized-dialog-title",open:this.props.open,maxWidth:!1},n.createElement(m,{sx:{m:0,p:2}},"File Details",n.createElement(v,{"aria-label":"close",onClick:this.props.onClose,sx:{position:"absolute",right:12,top:10,color:"#94a3b8","&:hover":{color:"#f8fafc",backgroundColor:"rgba(255,255,255,0.1)"}}},n.createElement(P,{fontSize:"small"}))),n.createElement(g,null,n.createElement(p,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:3,pt:1}},this.props.isImage&&n.createElement(p,{sx:{flex:"0 0 45%",display:"flex",alignItems:"flex-start",justifyContent:"center",backgroundColor:"#f8fafc",borderRadius:"10px",border:"1px solid #e2e8f0",overflow:"hidden",p:2}},n.createElement("img",{src:this.props.file.url,width:(null===(t=null===(e=this.props.file)||void 0===e?void 0:e.dimensions)||void 0===t?void 0:t.width)||"100%",height:(null===(i=null===(o=this.props.file)||void 0===o?void 0:o.dimensions)||void 0===i?void 0:i.height)||"auto",style:{width:"100%",height:"auto",objectFit:"contain",borderRadius:6}})),n.createElement(p,{sx:{flex:1}},this.renderDetailRow("File ID",this.props.file.fileId),this.renderDetailRow("File Name",this.props.file.fileName),this.renderDetailRow("Content Type",this.props.file.contentType),this.renderDetailRow("File Size",`${this.props.file.size} bytes`),this.renderDetailRow("URL",this.props.file.url),this.props.file.dimensions&&n.createElement(n.Fragment,null,this.renderDetailRow("Width",`${this.props.file.dimensions.width}px`),this.renderDetailRow("Height",`${this.props.file.dimensions.height}px`)),this.props.file.timeStamp&&this.renderDetailRow("Uploaded",new Date(this.props.file.timeStamp).toLocaleDateString(void 0,{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"}))))),n.createElement(f,null,n.createElement(p,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%"}},n.createElement(u,{variant:"text",id:"close-seo-manager",onClick:this.props.onClose,type:"button",sx:{color:"#64748b",textTransform:"none",fontWeight:500,"&:hover":{backgroundColor:"#f1f5f9"}}},"Close"),n.createElement(u,{variant:"outlined",onClick:this.deleteFile,type:"button",disabled:this.state.deleteLoading,startIcon:this.state.deleteLoading?n.createElement(b,{size:16}):null,sx:{borderColor:"#fecaca",color:"#dc2626",textTransform:"none",fontWeight:500,borderRadius:"8px","&:hover":{borderColor:"#dc2626",backgroundColor:"#fef2f2"}}},"Delete File")))))}}class V extends n.Component{constructor(e){super(e),this.isImage=()=>this.state.imageTypes.find(e=>e===this.props.item.contentType),this.state={imageTypes:["image/png","image/jpg","image/jpeg","image/webp","image/apng","image/avif","image/gif","image/svg+xml"],fileDetail:!1}}render(){var e,t,o,i,l;const a=this.isImage(),s=this.props.isClicked;return n.createElement(n.Fragment,null,n.createElement(J,{onClose:()=>{this.setState({fileDetail:!1})},open:this.state.fileDetail,onDelete:this.props.onDelete,file:this.props.item,idx:this.props.idx,isImage:a}),n.createElement("div",{style:{border:s?"2px solid #1e293b":"1px solid #e2e8f0",backgroundColor:s?"#f8fafc":"#ffffff",boxShadow:s?"0 0 0 3px rgba(30,41,59,0.1)":"none",borderRadius:8,overflow:"hidden",transition:"all 0.15s ease"},className:"image-container"},a&&n.createElement("img",{src:null===(e=this.props.item)||void 0===e?void 0:e.url,width:(null===(o=null===(t=this.props.item)||void 0===t?void 0:t.dimensions)||void 0===o?void 0:o.width)||"100%",height:(null===(l=null===(i=this.props.item)||void 0===i?void 0:i.dimensions)||void 0===l?void 0:l.height)||"auto",onClick:this.props.onClick,style:{width:"100%",height:"100%",objectFit:"cover",cursor:"pointer"}}),!a&&n.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",cursor:"pointer",gap:4,padding:8},onClick:this.props.onClick},n.createElement($,{sx:{color:"#94a3b8",fontSize:32}}),n.createElement(h,{sx:{textAlign:"center",fontSize:"0.7rem",color:"#64748b",wordBreak:"break-all",lineHeight:1.3}},this.props.item.fileName||this.props.item.contentType))))}}var Y=l(e=>({user:null==e?void 0:e.user,seoData:null==e?void 0:e.seoData}))(V);const Z=N(s),K=r(s);class Q extends n.Component{constructor(i){super(i),this.componentDidMount=()=>{},this.componentDidUpdate=e=>{!0===this.props.open&&!1===e.open&&(this.setState({loading:!0,selected:!0===this.props.multiple&&this.props.selected?{url:"",fileId:""}:Object.assign({},this.props.selected),selectedArray:!0===this.props.multiple&&this.props.selected?[...this.props.selected]:[]}),this.getData()),!1===this.props.open&&!0===e.open&&(this.setState({loading:!0,selected:{url:"",fileId:""},selectedArray:[],fileError:""}),this.getData()),JSON.stringify(this.props.selected)!==JSON.stringify(e.selected)&&this.setState({selected:!0===this.props.multiple&&this.props.selected?{url:"",fileId:""}:Object.assign({},this.props.selected),selectedArray:!0===this.props.multiple&&this.props.selected?[...this.props.selected]:[]})},this.getData=()=>e(this,void 0,void 0,function*(){var e,t;const i=yield o("/files/getProjectFiles","put",{},void 0,{X_Authorization:yield null===(e=null==K?void 0:K.currentUser)||void 0===e?void 0:e.getIdToken(),AuthorizationId:null===(t=null==K?void 0:K.currentUser)||void 0===t?void 0:t.uid});i.results.files.length>0?this.setState({files:i.results.files,loading:!1}):this.setState({loading:!1})}),this.imageClicked=e=>{var t,o;const i={url:e.url,fileId:e.fileId};if(this.props.accept&&!(null===(o=null===(t=this.props)||void 0===t?void 0:t.accept)||void 0===o?void 0:o.includes(null==e?void 0:e.contentType)))return this.setState({fileError:`Only accepting ${this.props.accept}`});if(this.setState({fileError:""}),!0===this.props.multiple){let t=[];this.state.selectedArray&&(t=[...this.state.selectedArray]);const o=t.findIndex(t=>t.fileId===e.fileId);o>=0?(t.splice(o,1),this.setState({selectedArray:t})):(t.push(i),this.setState({selectedArray:t}))}else this.state.selected.fileId===e.fileId?this.setState({selected:{url:"",fileId:""}}):this.setState({selected:i})},this.addFile=e=>{var o,i;const n=((e,o,i)=>{const n=i?.usageReport?.storage_used||0,l=i?.limitations?.storage_used;let a=0,s=[];for(let t in e.target.files){let o=e.target.files[t];if(o&&o.type){const{name:i,size:n,type:l}=e.target.files[t];a+=parseInt(n),o.localURL=URL.createObjectURL(o),s.push({object:o,name:o.name})}}return"number"==typeof l&&n+a>l?{error:"You cannot add these files as you have hit your storage limit. Add credits to continue."}:(i?.usageReport||(i.usageReport={}),i?.usageReport?.storage_used||(i.usageReport.storage_used=0),i.usageReport.storage_used+=a,t(i),{results:s})})(e,0,null===(i=null===(o=this.props)||void 0===o?void 0:o.seoData)||void 0===i?void 0:i.plan);if(n&&!n.error&&n.results.length>0){let e=n.results;this.uploadNewFile(e)}else n.error&&this.setState({fileError:n.error})},this.uploadNewFile=t=>new Promise((i,n)=>e(this,void 0,void 0,function*(){var i,n;try{const l=yield null===(i=null==K?void 0:K.currentUser)||void 0===i?void 0:i.getIdToken(),a=yield o("/files/generateFileIds","post",{type:"default",qty:t.length+1},void 0,{X_Authorization:l,AuthorizationId:null===(n=null==K?void 0:K.currentUser)||void 0===n?void 0:n.uid}),s=Object.keys(t||[]).map(o=>new Promise((i,n)=>e(this,void 0,void 0,function*(){var e,n,s,r,d,c;const u=t[o],p=u.object,h=u.name,m=a.results.photoId[o],v={contentType:p.type,cacheControl:"public,max-age=604800",customMetadata:{type:"default",userIdToken:l,userId:null===(e=null==K?void 0:K.currentUser)||void 0===e?void 0:e.uid,fileName:h,fileId:m,projectId:null===(s=null===(n=this.props.seoData)||void 0===n?void 0:n.manager)||void 0===s?void 0:s.projectId,seoManagerVersion:null===(r=this.props)||void 0===r?void 0:r.version}},g=`projects/${null===(c=null===(d=this.props.seoData)||void 0===d?void 0:d.manager)||void 0===c?void 0:c.projectId}/files/${m}`,f=_(Z,g),b=L(f,p,v);return b.on("state_changed",e=>{const t=e.bytesTransferred/e.totalBytes*100,o=this.state.uploadProgress;o[m]=t,this.setState({uploadProgress:o})},e=>(console.error("Error:",e),i({error:!0,results:!1})),()=>{U(b.snapshot.ref).then(e=>{const t={url:e,fileId:m,contentType:p.type,size:p.size,location:g,fileName:h};return i(t)})})}))),r=[...yield Promise.all(s),...this.state.files];this.setState({files:r,fileError:"",uploadProgress:{}})}catch(e){console.error("Error:",e),this.setState({uploadProgress:{}})}})),this.save=()=>{!0===this.props.multiple?this.props.onChangeComplete(this.state.selectedArray):this.props.onChangeComplete(this.state.selected),this.props.onClose()},this.fileDeleted=(e,t)=>{const o=this.state.files;if(o.splice(t,1),this.setState({files:o}),!0===this.props.multiple){let t=this.state.selectedArray;const o=t.findIndex(t=>t.fileId===e.fileId);o>=0&&(t.splice(o,1),this.setState({selectedArray:t}),this.props.onChangeComplete(t))}else{let t=this.state.selected;e.fileId===t.fileId&&(this.setState({selected:{url:"",fileId:""}}),this.props.onChangeComplete({url:"",fileId:""}))}},this.formatStorageDisplay=()=>{var e,t,o,i;const n=null===(t=null===(e=this.props)||void 0===e?void 0:e.seoData)||void 0===t?void 0:t.plan;if(!(null===(o=null==n?void 0:n.usageReport)||void 0===o?void 0:o.storage_used)||!(null==n?void 0:n.mb))return null;const l=(n.usageReport.storage_used/n.mb).toFixed(1),a=null===(i=null==n?void 0:n.limitations)||void 0===i?void 0:i.storage_used;if(!0===a||null==a)return`${l} MB used`;return`${l} / ${(a/n.mb).toFixed(1)} MB`};const{selected:n,multiple:l}=i;this.state={files:[],loading:!0,selected:!0===l&&n?{url:"",fileId:""}:Object.assign({},n),selectedArray:!0===l&&n?[...n]:[],fileError:"",uploadProgress:{}}}render(){var e,t,o,i;let l=0,a=0;Object.keys(this.state.uploadProgress).forEach(e=>{const t=this.state.uploadProgress[e];l+=100,a=t});const s=a/l*100,r=this.formatStorageDisplay();return n.createElement(n.Fragment,null,n.createElement(B,{onClose:this.props.onClose,"aria-labelledby":"customized-dialog-title",open:this.props.open,maxWidth:!1},n.createElement(m,{sx:{m:0,p:2}},"File Manager",n.createElement(v,{"aria-label":"close",onClick:this.props.onClose,sx:{position:"absolute",right:12,top:10,color:"#94a3b8","&:hover":{color:"#f8fafc",backgroundColor:"rgba(255,255,255,0.1)"}}},n.createElement(P,{fontSize:"small"}))),n.createElement(g,null,this.state.loading&&n.createElement(p,{sx:{width:"100%",height:350,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:2}},n.createElement(b,{size:36,sx:{color:"#1e293b"}}),n.createElement(h,{sx:{color:"#94a3b8",fontSize:"0.85rem"}},"Loading files...")),!1===this.state.loading&&n.createElement(n.Fragment,null,n.createElement(p,{sx:{mb:2}},n.createElement("div",{className:"file-upload seo-upload-zone"},n.createElement("input",{className:"file-input",type:"file",onChange:this.addFile,multiple:!0,style:{zIndex:2,position:"absolute",top:0,left:0,width:"100%",height:"100%",opacity:0,cursor:"pointer"}}),n.createElement(M,{sx:{fontSize:40,color:"#94a3b8"}}),n.createElement(h,{sx:{color:"#64748b",fontSize:"0.9rem",fontWeight:500}},"Click or drag files to upload"),n.createElement(h,{sx:{color:"#94a3b8",fontSize:"0.75rem"}},"PNG, JPG, JPEG up to 10MB"))),s>0&&s<100&&n.createElement(p,{sx:{width:"100%",mb:2}},n.createElement(F,{variant:"determinate",value:s,sx:{height:6,borderRadius:3,backgroundColor:"#e2e8f0","& .MuiLinearProgress-bar":{borderRadius:3,backgroundColor:"#1e293b"}}})),this.state.fileError&&n.createElement(p,{sx:{mb:2,p:1.5,backgroundColor:"#fef2f2",border:"1px solid #fecaca",borderRadius:"8px"}},n.createElement(h,{sx:{color:"#dc2626",fontSize:"0.85rem"}},this.state.fileError)),this.props.accept&&n.createElement(p,{sx:{mb:2}},n.createElement(x,{label:`Accepted: ${this.props.accept}`,size:"small",sx:{backgroundColor:"#f1f5f9",color:"#475569",fontSize:"0.75rem",fontWeight:500,borderRadius:"6px"}})),(null===(t=null===(e=this.state)||void 0===e?void 0:e.files)||void 0===t?void 0:t.length)>0&&n.createElement("div",{className:"fileViewer"},this.state.files.map((e,t)=>{let o=!1;if(!0===this.props.multiple){this.state.selectedArray.find(t=>t.fileId===e.fileId)&&(o=!0)}else this.state.selected.fileId===e.fileId&&(o=!0);return n.createElement(Y,{isClicked:o,key:`Photo-${t}`,onClick:()=>this.imageClicked(e),item:e,idx:t,onDelete:this.fileDeleted})})),0===(null===(i=null===(o=this.state)||void 0===o?void 0:o.files)||void 0===i?void 0:i.length)&&n.createElement(p,{sx:{width:"100%",py:6,display:"flex",flexDirection:"column",alignItems:"center",gap:1}},n.createElement(h,{sx:{color:"#94a3b8",fontSize:"0.9rem"}},"No files yet"),n.createElement(h,{sx:{color:"#cbd5e1",fontSize:"0.8rem"}},"Upload your first file using the area above")))),n.createElement(f,null,n.createElement(p,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",width:"100%"}},n.createElement(u,{variant:"text",id:"close-seo-manager",onClick:this.props.onClose,type:"button",sx:{color:"#64748b",textTransform:"none",fontWeight:500,"&:hover":{backgroundColor:"#f1f5f9"}}},"Close"),r&&n.createElement(x,{label:r,size:"small",sx:{backgroundColor:"#f1f5f9",color:"#475569",fontSize:"0.75rem",fontWeight:600,borderRadius:"6px",letterSpacing:"0.02em"}}),n.createElement(u,{variant:"contained",onClick:this.save,type:"button",disabled:!1,sx:{backgroundColor:"#1e293b",textTransform:"none",fontWeight:600,borderRadius:"8px",px:4,boxShadow:"0 1px 3px rgba(0,0,0,0.12)","&:hover":{backgroundColor:"#334155"}}},"Save")))))}}var ee=l(e=>({user:null==e?void 0:e.user,seoData:null==e?void 0:e.seoData,version:null==e?void 0:e.version}))(Q);class te extends n.Component{constructor(e){var t,o;super(e),this.componentDidUpdate=e=>{var t,o,i,n;JSON.stringify(e.files)!==JSON.stringify(this.props.files)&&(this.setState({files:""!==(null===(i=null===(o=null===(t=this.props)||void 0===t?void 0:t.files)||void 0===o?void 0:o[0])||void 0===i?void 0:i.url)?Object.keys((null===(n=this.props)||void 0===n?void 0:n.files)||[]).map(e=>{var t;return(null===(t=this.props)||void 0===t?void 0:t.files[e]).url}):[]}),this.props.files.length>0?this.compileData():this.state.autoAdvancedInterval&&clearInterval(this.state.autoAdvancedInterval))},this.componentDidMount=()=>{this.props.files.length>0&&this.compileData()},this.compileData=()=>{setTimeout(()=>{const e=Array.from(document.querySelectorAll(".carousel-frame")),t=e=>{const t=e.querySelector(".carousel-slide"),o=function(){let t=e.querySelectorAll(".carousel-slide img");const o=t[0].cloneNode(),i=t[t.length-1].cloneNode();return o.className="first-clone",i.className="last-clone",t=e.querySelectorAll(".carousel-slide img"),t}(),i=null==e?void 0:e.querySelector(".carousel-prev"),n=null==e?void 0:e.querySelector(".carousel-next"),l=Array.from(e.querySelectorAll(".carousel-dots li"));let a=1;function s(){a>=o.length-1||(t.style.transition="transform 400ms",a++,t.style.transform=`translateX(-${100*(a>1?a:2)}%)`)}function r(){a<=0||(t.style.transition="transform 400ms",a--,t.style.transform=`translateX(-${100*a}%)`)}function d(e){t.style.transition="transform 400ms",a=1+l.indexOf(e.target),t.style.transform=`translateX(-${100*a}%)`}const c=()=>{!0===this.state.started&&(null==n||n.removeEventListener("click",s),null==i||i.removeEventListener("click",r)),null==n||n.addEventListener("click",s),null==i||i.addEventListener("click",r)},u=()=>{l.forEach(e=>{!0===this.state.started&&(null==e||e.removeEventListener("click",d)),null==e||e.addEventListener("click",d)})},p=()=>{const e=()=>{o[a].classList.contains("last-clone")&&(t.style.transition="none",a=o.length-2,t.style.transform=`translateX(-${100*a}%)`),o[a].classList.contains("first-clone")&&(t.style.transition="none",a=o.length-a,t.style.transform=`translateX(-${100*a}%)`),l.forEach(e=>{l.indexOf(e)===a-1?e.classList.add("active-dot"):e.classList.remove("active-dot")})};!0===this.state.started&&(null==t||t.removeEventListener("transitionend",e)),t.addEventListener("transitionend",e)};l.length&&l[0].classList.add("active-dot"),u(),c(),p(),this.setState({started:!0})};e.forEach(e=>t(e))},100)},this.state={files:""!==(null===(o=null===(t=null==e?void 0:e.files)||void 0===t?void 0:t[0])||void 0===o?void 0:o.url)?Object.keys((null==e?void 0:e.files)||[]).map(t=>(null==e?void 0:e.files[t]).url):[],openPhotoManager:!1,autoAdvancedInterval:null,started:!1}}render(){return n.createElement(n.Fragment,null,n.createElement(ee,{open:this.state.openPhotoManager,onChangeComplete:this.props.onChangeComplete,onClose:()=>{this.setState({openPhotoManager:!1})},multiple:this.props.multiple,selected:!0===this.props.multiple?this.props.files:this.props.files[0],accept:this.props.accept}),this.state.files.length>0&&n.createElement("div",{className:"carousel-frame-design carousel-frame",onClick:()=>{this.setState({openPhotoManager:!0})}},n.createElement("div",{className:"carousel-slide"},Object.keys(this.state.files||[]).map(e=>{const t=this.state.files[e];return n.createElement("img",{src:t,key:`file-${e}`})})),this.state.files.length>1&&n.createElement(n.Fragment,null,n.createElement("div",{className:"carousel-prev"},n.createElement(j,{sx:{fontSize:20,color:"#ffffff"}})),n.createElement("div",{className:"carousel-next"},n.createElement(R,{sx:{fontSize:20,color:"#ffffff"}})),n.createElement("ol",{className:"carousel-dots"},Object.keys(this.state.files||[]).map(e=>n.createElement("li",{key:`file-${e}`}))))),0===this.state.files.length&&n.createElement("div",{className:"carousel-frame-design",style:{height:220,cursor:"pointer"},onClick:()=>{this.setState({openPhotoManager:!0})}},n.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:8,padding:20}},n.createElement(M,{sx:{fontSize:36,color:"#94a3b8"}}),n.createElement(h,{sx:{color:"#64748b",fontSize:"0.85rem",fontWeight:500}},"Click to select or upload file"),n.createElement(h,{sx:{color:"#cbd5e1",fontSize:"0.75rem"}},"Supports PNG, JPG, JPEG, WebP"))))}}var oe=l(e=>({user:null==e?void 0:e.user,seoData:null==e?void 0:e.seoData}))(te);const ie=r(s),ne={"& .MuiOutlinedInput-root":{borderRadius:"8px",backgroundColor:"#ffffff","&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#94a3b8"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#3b82f6",borderWidth:"2px"}},"& .MuiInputLabel-root.Mui-focused":{color:"#3b82f6"}},le={borderRadius:"8px",backgroundColor:"#ffffff","&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#94a3b8"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#3b82f6",borderWidth:"2px"}};class ae extends n.Component{constructor(t){var i,n,l,a,s,r;super(t),this.componentWillUnmount=()=>{this.state.temporaryAccessInterval&&clearInterval(this.state.temporaryAccessInterval)},this.formatTimeRemaining=e=>{const t=Date.now(),o=new Date(e).getTime(),i=Math.max(0,o-t),n=Math.floor(i/36e5),l=Math.floor(i%36e5/6e4);if(n>0)return`${n}h ${l}m`;if(l>0)return`${l} minute${1!==l?"s":""}`;const a=Math.floor(i/1e3);return`${a} second${1!==a?"s":""}`},this.componentDidMount=()=>e(this,void 0,void 0,function*(){var t,i,n;this.props.onIsLoading(!0),this.setState({loading:!0});if(null===(i=null===(t=this.props)||void 0===t?void 0:t.user)||void 0===i?void 0:i.temporaryAccessExpiresAt){const e=setInterval(()=>{this.forceUpdate()},6e4);this.setState({temporaryAccessInterval:e})}null===(n=null==ie?void 0:ie.currentUser)||void 0===n||n.getIdToken().then(t=>e(this,void 0,void 0,function*(){var e,i,n,l,a,s,r,d,c,u,p,h,m,v,g,f;const b=yield o("/seo/authorized_get","put",{path:(null===(l=null===(n=null===(i=null===(e=this.props)||void 0===e?void 0:e.seoData)||void 0===i?void 0:i.initial)||void 0===n?void 0:n.page)||void 0===l?void 0:l.path)||""},void 0,{X_Authorization:t,AuthorizationId:null===(a=null==ie?void 0:ie.currentUser)||void 0===a?void 0:a.uid});if(null===(s=null==b?void 0:b.results)||void 0===s?void 0:s.seoRequest){const e={type:"SET_MANAGER_SEO_DATA",results:null===(r=null==b?void 0:b.results)||void 0===r?void 0:r.seoRequest};this.props.dispatch(e)}if(null===(d=null==b?void 0:b.results)||void 0===d?void 0:d.plan){const e={type:"SET_MANAGER_PROJECT_PLAN",results:null===(c=null==b?void 0:b.results)||void 0===c?void 0:c.plan};this.props.dispatch(e)}const x=(null===(h=null===(p=null===(u=null==b?void 0:b.results)||void 0===u?void 0:u.seoRequest)||void 0===p?void 0:p.global)||void 0===h?void 0:h.ai)||{},E=(null===(g=null===(v=null===(m=null==b?void 0:b.results)||void 0===m?void 0:m.seoRequest)||void 0===v?void 0:v.page)||void 0===g?void 0:g.ai)||{};this.setState({loading:!1,isNewPage:!!(null===(f=null==b?void 0:b.results)||void 0===f?void 0:f.isNewPage),aiEnabled:x.enabled||!1,aiAutonomousAll:x.autonomousEnabled||!1,aiPageAutonomous:E.autonomous||!1}),setTimeout(()=>{this.props.onIsLoading(!1)},1e3)})),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?this.setState({isMobile:!0}):this.setState({isMobile:!1})}),this.onPageChange=(e,t)=>{var o,i,n;let l=Object.assign({},null===(n=null===(i=null===(o=this.props)||void 0===o?void 0:o.seoData)||void 0===i?void 0:i.manager)||void 0===n?void 0:n.page);l[t]=e;const a={type:"UPDATE_MANAGER_SEO_DATA",location:"page",results:l};this.props.dispatch(a);let s=this.state.savedLocations;s.page=!0,this.setState({savedLocations:s})},this.onGlobalChange=(e,t)=>{var o,i,n;let l=Object.assign({},null===(n=null===(i=null===(o=this.props)||void 0===o?void 0:o.seoData)||void 0===i?void 0:i.manager)||void 0===n?void 0:n.global);l[t]=e;const a={type:"UPDATE_MANAGER_SEO_DATA",location:"global",results:l};this.props.dispatch(a);let s=this.state.savedLocations;s.global=!0,this.setState({savedLocations:s})},this.addPerformAction=(e,t)=>{let o=this.state.performActionOnUpdate;o[t]=e,this.setState({performActionOnUpdate:o})},this.saveData=()=>{var t;this.setState({saving:!0}),null===(t=null==ie?void 0:ie.currentUser)||void 0===t||t.getIdToken().then(t=>e(this,void 0,void 0,function*(){var i,n,l,a,s,r;const d=Object.keys(this.state.performActionOnUpdate||[]).map(t=>e(this,void 0,void 0,function*(){const e=this.state.performActionOnUpdate[t];return e&&e.action&&(yield e.action()),!0}));if(yield Promise.all(d),!0===this.state.isNewPage){const e=yield o("/seo/create","post",{data:null===(n=null===(i=this.props)||void 0===i?void 0:i.seoData)||void 0===n?void 0:n.manager,savedLocations:this.state.savedLocations},void 0,{X_Authorization:t,AuthorizationId:null===(l=null==ie?void 0:ie.currentUser)||void 0===l?void 0:l.uid});(null==e?void 0:e.results)&&this.props.onChangeComplete&&this.props.onChangeComplete(null==e?void 0:e.results),this.setState({saving:!1})}else{const e=yield o("/seo/update","put",{data:null===(s=null===(a=this.props)||void 0===a?void 0:a.seoData)||void 0===s?void 0:s.manager,savedLocations:this.state.savedLocations},void 0,{X_Authorization:t,AuthorizationId:null===(r=null==ie?void 0:ie.currentUser)||void 0===r?void 0:r.uid});(null==e?void 0:e.results)&&this.props.onChangeComplete&&this.props.onChangeComplete(null==e?void 0:e.results),this.setState({saving:!1})}}))},this.authSignOut=()=>e(this,void 0,void 0,function*(){yield c(ie)}),this.updatePageAiInRedux=e=>{var t,o,i;const n=Object.assign(Object.assign({},null===(i=null===(o=null===(t=this.props)||void 0===t?void 0:t.seoData)||void 0===o?void 0:o.manager)||void 0===i?void 0:i.page),{ai:e});this.props.dispatch({type:"UPDATE_MANAGER_SEO_DATA",location:"page",results:n})},this.updateGlobalAiInRedux=e=>{var t,o,i;const n=Object.assign(Object.assign({},null===(i=null===(o=null===(t=this.props)||void 0===t?void 0:t.seoData)||void 0===o?void 0:o.manager)||void 0===i?void 0:i.global),{ai:e});this.props.dispatch({type:"UPDATE_MANAGER_SEO_DATA",location:"global",results:n})},this.toggleProjectAI=(t,i)=>e(this,void 0,void 0,function*(){var e,n,l,a,s,r;const d=this.state[t];this.setState({[t]:i,aiSaving:!0});const c=yield null===(e=null==ie?void 0:ie.currentUser)||void 0===e?void 0:e.getIdToken(),u={};"aiEnabled"===t&&(u.aiEnabled=i),"aiAutonomousAll"===t&&(u.aiAutonomousEnabled=i);const p=yield o("/seo/ai/settings","post",u,void 0,{X_Authorization:c,AuthorizationId:null===(n=null==ie?void 0:ie.currentUser)||void 0===n?void 0:n.uid});if((null==p?void 0:p.results)&&!(null==p?void 0:p.error)){const e=(null===(r=null===(s=null===(a=null===(l=this.props)||void 0===l?void 0:l.seoData)||void 0===a?void 0:a.manager)||void 0===s?void 0:s.global)||void 0===r?void 0:r.ai)||{},o=Object.assign({},e);"aiEnabled"===t&&(o.enabled=i),"aiAutonomousAll"===t&&(o.autonomousEnabled=i),this.updateGlobalAiInRedux(o)}else this.setState({[t]:d});this.setState({aiSaving:!1})}),this.togglePageAutonomous=t=>e(this,void 0,void 0,function*(){var e,i,n,l,a,s;const r=this.state.aiPageAutonomous;this.setState({aiPageAutonomous:t,aiSaving:!0});const d=null===(l=null===(n=null===(i=null===(e=this.props)||void 0===e?void 0:e.seoData)||void 0===i?void 0:i.manager)||void 0===n?void 0:n.page)||void 0===l?void 0:l.pageId;if(!d)return void this.setState({aiPageAutonomous:r,aiSaving:!1});const c=yield null===(a=null==ie?void 0:ie.currentUser)||void 0===a?void 0:a.getIdToken(),u=yield o("/seo/ai/settings/page-autonomous","put",{pageId:d,autonomous:t},void 0,{X_Authorization:c,AuthorizationId:null===(s=null==ie?void 0:ie.currentUser)||void 0===s?void 0:s.uid});(null==u?void 0:u.results)&&!(null==u?void 0:u.error)?this.updatePageAiInRedux({autonomous:t}):this.setState({aiPageAutonomous:r}),this.setState({aiSaving:!1})});const d=(null===(l=null===(n=null===(i=null==t?void 0:t.seoData)||void 0===i?void 0:i.manager)||void 0===n?void 0:n.global)||void 0===l?void 0:l.ai)||{},u=(null===(r=null===(s=null===(a=null==t?void 0:t.seoData)||void 0===a?void 0:a.manager)||void 0===s?void 0:s.page)||void 0===r?void 0:r.ai)||{};this.state={loading:!0,saving:!1,newImage:"",file:null,performActionOnUpdate:{},photoManager:!0,tabIndex:0,savedLocations:{},isNewPage:!1,isMobile:!0,aiEnabled:d.enabled||!1,aiAutonomousAll:d.autonomousEnabled||!1,aiPageAutonomous:u.autonomous||!1,aiSaving:!1,temporaryAccessInterval:null}}render(){var e,t,o,i,l,a,s,r,d,c,O,j,R,M,F,N,_,W,L,U,$,G,q,H,J,V,Y,Z,K,Q,ee,te,ae,se,ce,ue,pe,he,me,ve,ge,fe,be,xe,Ee,ye,Ce,Se,Ae,we,Ie,ke,De,ze,Te,Pe,Oe,je,Re,Me,Fe,Ne,_e,We,Le,Ue,$e,Be,Ge,qe,Xe,He,Je,Ve,Ye,Ze,Ke,Qe,et,tt,ot,it,nt,lt,at,st,rt,dt,ct;return!0===(null===(e=this.props)||void 0===e?void 0:e.isLoading)?null:n.createElement(B,{onClose:(e,t)=>{"backdropClick"!==t&&this.props.onClose()},"aria-labelledby":"SEO Manager Login",open:!0,maxWidth:!1,style:{zIndex:100},hideBackdrop:!0},n.createElement(m,{sx:{m:0,p:2}},"SEO Manager",n.createElement(v,{"aria-label":"close",onClick:this.props.onClose,sx:{position:"absolute",right:12,top:10,color:"#94a3b8","&:hover":{color:"#f8fafc",backgroundColor:"rgba(255,255,255,0.1)"}}},n.createElement(P,{fontSize:"small"}))),n.createElement(g,{dividers:!0,sx:{borderColor:"#e2e8f0"}},n.createElement(p,{sx:{width:"100%"}},n.createElement(E,{value:this.state.tabIndex,onChange:(e,t)=>{this.setState({tabIndex:t})},"aria-label":"Select SEO Manager Options",sx:{minHeight:40,"& .MuiTab-root":{textTransform:"none",fontWeight:500,fontSize:"0.875rem",minHeight:40,color:"#64748b","&.Mui-selected":{color:"#1e293b",fontWeight:600}},"& .MuiTabs-indicator":{backgroundColor:"#1e293b",height:2.5,borderRadius:"2px 2px 0 0"}}},n.createElement(y,Object.assign({label:"Page"},de(0))),n.createElement(y,Object.assign({label:"Global"},de(1))),n.createElement(y,Object.assign({label:"Account"},de(3))))),n.createElement(p,{mt:1.5,display:"flex",flexDirection:"column",alignItems:"center",gap:1},(()=>{var e;const t=null===(e=this.props)||void 0===e?void 0:e.user,o=null==t?void 0:t.temporaryAccessExpiresAt,i=null==t?void 0:t.temporaryAccessPageIds;if(o&&new Date(o)>new Date){const e=this.formatTimeRemaining(o),t="all"===i?"All pages":Array.isArray(i)?`${i.length} page${1!==i.length?"s":""}`:"This page";return n.createElement(C,{severity:"info",variant:"outlined",sx:{fontSize:"0.78rem",py:.5,width:"100%",maxWidth:400}},"Temporary access: ",t," · Expires in ",e)}return null})(),(()=>{var e,t;const o=null===(t=null===(e=this.props)||void 0===e?void 0:e.seoData)||void 0===t?void 0:t.plan;return o?(null==o?void 0:o.isTrialActive)&&"number"==typeof(null==o?void 0:o.trialDaysRemaining)?n.createElement(x,{size:"small",label:`Free trial: ${o.trialDaysRemaining} day${1!==o.trialDaysRemaining?"s":""} left`,sx:{borderRadius:"6px",backgroundColor:"#ecfdf5",color:"#059669",fontWeight:500,fontSize:"0.75rem"}}):"number"==typeof(null==o?void 0:o.creditsBalance)?n.createElement(x,{size:"small",label:`${o.creditsBalance.toLocaleString()} credits`,sx:{borderRadius:"6px",backgroundColor:"#eff6ff",color:"#2563eb",fontWeight:500,fontSize:"0.75rem"}}):null:null})(),n.createElement(X,null)),n.createElement(re,{value:this.state.tabIndex,index:0},n.createElement(p,{sx:{width:"100%",display:"flex",flexDirection:"column",gap:2.5}},n.createElement(p,null,n.createElement(oe,{files:(null===(l=null===(i=null===(o=null===(t=this.props)||void 0===t?void 0:t.seoData)||void 0===o?void 0:o.manager)||void 0===i?void 0:i.page)||void 0===l?void 0:l.image)?[null===(d=null===(r=null===(s=null===(a=this.props)||void 0===a?void 0:a.seoData)||void 0===s?void 0:s.manager)||void 0===r?void 0:r.page)||void 0===d?void 0:d.image]:[{url:"",fileId:""}],onChangeComplete:e=>{const t=(null==e?void 0:e.url)?e:{url:"",fileId:""};this.onPageChange(t,"image")},multiple:!1,accept:"image/png, image/jpeg, image/jpg, image/webp"})),n.createElement(S,{id:"page-path",label:"Page Path",variant:"outlined",size:"small",placeholder:"/about",value:(null===(R=null===(j=null===(O=null===(c=this.props)||void 0===c?void 0:c.seoData)||void 0===O?void 0:O.manager)||void 0===j?void 0:j.page)||void 0===R?void 0:R.path)||"",fullWidth:!0,sx:ne,onChange:e=>{let t=e.target.value;"/"!==(null==t?void 0:t[0])&&(t=`/${t}`),this.onPageChange(t,"path")}}),n.createElement(S,{id:"title",label:"Title",variant:"outlined",size:"small",placeholder:"Home - Stark Industries",onChange:e=>{this.onPageChange(e.target.value,"title")},value:(null===(_=null===(N=null===(F=null===(M=this.props)||void 0===M?void 0:M.seoData)||void 0===F?void 0:F.manager)||void 0===N?void 0:N.page)||void 0===_?void 0:_.title)||"",fullWidth:!0,sx:ne,helperText:n.createElement(h,{component:"span",sx:{fontSize:"0.75rem",color:"#94a3b8"}},(null===(G=null===($=null===(U=null===(L=null===(W=this.props)||void 0===W?void 0:W.seoData)||void 0===L?void 0:L.manager)||void 0===U?void 0:U.page)||void 0===$?void 0:$.title)||void 0===G?void 0:G.length)||0," / 60 characters")}),n.createElement(S,{id:"description",label:"Description",variant:"outlined",size:"small",placeholder:"A brief description of this page...",onChange:e=>{this.onPageChange(e.target.value,"description")},value:null===(V=null===(J=null===(H=null===(q=this.props)||void 0===q?void 0:q.seoData)||void 0===H?void 0:H.manager)||void 0===J?void 0:J.page)||void 0===V?void 0:V.description,fullWidth:!0,multiline:!0,minRows:2,sx:ne,helperText:n.createElement(h,{component:"span",sx:{fontSize:"0.75rem",color:"#94a3b8"}},(null===(ee=null===(Q=null===(K=null===(Z=null===(Y=this.props)||void 0===Y?void 0:Y.seoData)||void 0===Z?void 0:Z.manager)||void 0===K?void 0:K.page)||void 0===Q?void 0:Q.description)||void 0===ee?void 0:ee.length)||0," / 160 characters")}),n.createElement(A,{multiple:!0,id:"tags-keywords",options:[],value:(null===(ce=null===(se=null===(ae=null===(te=this.props)||void 0===te?void 0:te.seoData)||void 0===ae?void 0:ae.manager)||void 0===se?void 0:se.page)||void 0===ce?void 0:ce.keywordsArray)||[],freeSolo:!0,onChange:(e,t)=>{this.onPageChange(t,"keywordsArray")},renderTags:(e,t)=>e.map((e,o)=>n.createElement(x,Object.assign({label:e,size:"small"},t({index:o}),{sx:{borderRadius:"6px",backgroundColor:"#e2e8f0",color:"#334155",fontWeight:500,fontSize:"0.8rem","& .MuiChip-deleteIcon":{color:"#94a3b8","&:hover":{color:"#64748b"}}}}))),renderInput:e=>n.createElement(S,Object.assign({},e,{variant:"outlined",size:"small",label:"Keywords",placeholder:"Type and press Enter",sx:ne}))}),n.createElement(w,{size:"small",fullWidth:!0},n.createElement(I,{id:"follow"},"Follow"),n.createElement(k,{labelId:"follow",id:"follow-select",value:null===(me=null===(he=null===(pe=null===(ue=this.props)||void 0===ue?void 0:ue.seoData)||void 0===pe?void 0:pe.manager)||void 0===he?void 0:he.page)||void 0===me?void 0:me.follow,onChange:e=>{this.onPageChange(e.target.value,"follow")},label:"Follow",sx:le},n.createElement(D,{value:""},"Select Follow Option"),n.createElement(D,{value:"follow"},"Follow"),n.createElement(D,{value:"nofollow"},"No Follow"))),n.createElement(w,{size:"small",fullWidth:!0},n.createElement(I,{id:"index"},"Index"),n.createElement(k,{labelId:"index",id:"index-select",value:null===(be=null===(fe=null===(ge=null===(ve=this.props)||void 0===ve?void 0:ve.seoData)||void 0===ge?void 0:ge.manager)||void 0===fe?void 0:fe.page)||void 0===be?void 0:be.index,onChange:e=>{this.onPageChange(e.target.value,"index")},label:"Index",sx:le},n.createElement(D,{value:""},"Select Index Option"),n.createElement(D,{value:"index"},"Index"),n.createElement(D,{value:"noindex"},"No Index"))),n.createElement(w,{size:"small",fullWidth:!0},n.createElement(I,{id:"changeFreq"},"Change Frequency"),n.createElement(k,{labelId:"changeFreq",id:"changeFreq-select",value:null===(Ce=null===(ye=null===(Ee=null===(xe=this.props)||void 0===xe?void 0:xe.seoData)||void 0===Ee?void 0:Ee.manager)||void 0===ye?void 0:ye.page)||void 0===Ce?void 0:Ce.changeFreq,onChange:e=>{this.onPageChange(e.target.value,"changeFreq")},label:"Change Frequency",sx:le},n.createElement(D,{value:""},"Select Frequency"),n.createElement(D,{value:"always"},"Always"),n.createElement(D,{value:"daily"},"Daily"),n.createElement(D,{value:"weekly"},"Weekly"),n.createElement(D,{value:"monthly"},"Monthly"),n.createElement(D,{value:"yearly"},"Yearly"),n.createElement(D,{value:"never"},"Never"))),n.createElement(w,{size:"small",fullWidth:!0},n.createElement(I,{id:"priority"},"Priority (10 = Highest)"),n.createElement(k,{labelId:"priority",id:"priority-select",value:null===(Ie=null===(we=null===(Ae=null===(Se=this.props)||void 0===Se?void 0:Se.seoData)||void 0===Ae?void 0:Ae.manager)||void 0===we?void 0:we.page)||void 0===Ie?void 0:Ie.priority,onChange:e=>{this.onPageChange(e.target.value,"priority")},label:"Priority (10 = Highest)",sx:le},n.createElement(D,{value:""},"Select Priority"),n.createElement(D,{value:.1},"1"),n.createElement(D,{value:.2},"2"),n.createElement(D,{value:.3},"3"),n.createElement(D,{value:.4},"4"),n.createElement(D,{value:.5},"5"),n.createElement(D,{value:.6},"6"),n.createElement(D,{value:.7},"7"),n.createElement(D,{value:.8},"8"),n.createElement(D,{value:.9},"9"),n.createElement(D,{value:1},"10"))),n.createElement(S,{id:"ldJson",label:"Structured Data (JSON-LD)",variant:"outlined",size:"small",placeholder:'{ "@context": "https://schema.org", ... }',onChange:e=>{this.onPageChange(e.target.value,"ldJson")},value:null===(Te=null===(ze=null===(De=null===(ke=this.props)||void 0===ke?void 0:ke.seoData)||void 0===De?void 0:De.manager)||void 0===ze?void 0:ze.page)||void 0===Te?void 0:Te.ldJson,fullWidth:!0,multiline:!0,minRows:3,sx:Object.assign(Object.assign({},ne),{"& .MuiOutlinedInput-root":Object.assign(Object.assign({},ne["& .MuiOutlinedInput-root"]),{fontFamily:"'JetBrains Mono', 'Fira Code', monospace",fontSize:"0.82rem"})})}),!this.state.isNewPage&&n.createElement(p,{sx:{borderTop:"1px solid #e2e8f0",pt:2,mt:.5}},n.createElement(h,{sx:{fontSize:"0.85rem",color:"#475569",fontWeight:600,mb:1.5}},"AI Autonomous"),n.createElement(z,{control:n.createElement(T,{checked:this.state.aiPageAutonomous,onChange:e=>this.togglePageAutonomous(e.target.checked),disabled:this.state.aiSaving||!this.state.aiEnabled,size:"small",sx:{"& .MuiSwitch-switchBase.Mui-checked":{color:"#3b82f6"},"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track":{backgroundColor:"#3b82f6"}}}),label:n.createElement(p,{sx:{ml:.5}},n.createElement(h,{sx:{fontSize:"0.85rem",color:"#1e293b",fontWeight:500}},"Enable autonomous AI for this page"),n.createElement(h,{sx:{fontSize:"0.75rem",color:"#94a3b8"}},"The AI will automatically optimize this page's SEO on a recurring schedule.")),sx:{alignItems:"flex-start",mx:0}}),!this.state.aiEnabled&&n.createElement(C,{severity:"info",variant:"outlined",sx:{mt:1,fontSize:"0.78rem",py:0}},"Enable AI in the Global tab first to use autonomous features."),this.state.aiPageAutonomous&&this.state.aiEnabled&&n.createElement(C,{severity:"success",variant:"outlined",sx:{mt:1,fontSize:"0.78rem",py:0}},"This page is queued for autonomous AI optimization. The AI will analyze and improve SEO data on a recurring schedule (minimum 1 week between checks).")))),n.createElement(re,{value:this.state.tabIndex,index:1},n.createElement(p,{sx:{display:"flex",flexDirection:"column",gap:2.5}},n.createElement(S,{id:"default-title",label:"Default Title",variant:"outlined",size:"small",onChange:e=>{this.onGlobalChange(e.target.value,"defaultTitle")},value:null===(Re=null===(je=null===(Oe=null===(Pe=this.props)||void 0===Pe?void 0:Pe.seoData)||void 0===Oe?void 0:Oe.manager)||void 0===je?void 0:je.global)||void 0===Re?void 0:Re.defaultTitle,fullWidth:!0,sx:ne,helperText:n.createElement(h,{component:"span",sx:{fontSize:"0.75rem",color:"#94a3b8"}},(null===(_e=null===(Ne=null===(Fe=null===(Me=this.props)||void 0===Me?void 0:Me.seoData)||void 0===Fe?void 0:Fe.manager)||void 0===Ne?void 0:Ne.global)||void 0===_e?void 0:_e.defaultTitle.length)||0," / 60 characters")}),n.createElement(S,{id:"default-description",label:"Default Description",variant:"outlined",size:"small",onChange:e=>{this.onGlobalChange(e.target.value,"defaultDescription")},value:null===($e=null===(Ue=null===(Le=null===(We=this.props)||void 0===We?void 0:We.seoData)||void 0===Le?void 0:Le.manager)||void 0===Ue?void 0:Ue.global)||void 0===$e?void 0:$e.defaultDescription,fullWidth:!0,multiline:!0,minRows:2,sx:ne,helperText:n.createElement(h,{component:"span",sx:{fontSize:"0.75rem",color:"#94a3b8"}},(null===(Xe=null===(qe=null===(Ge=null===(Be=this.props)||void 0===Be?void 0:Be.seoData)||void 0===Ge?void 0:Ge.manager)||void 0===qe?void 0:qe.global)||void 0===Xe?void 0:Xe.defaultDescription.length)||0," / 160 characters")}),n.createElement(p,null,n.createElement(h,{sx:{fontSize:"0.85rem",color:"#475569",fontWeight:500,mb:1}},"Favicon"),n.createElement(oe,{files:(null===(Ze=null===(Ye=null===(Ve=null===(Je=null===(He=this.props)||void 0===He?void 0:He.seoData)||void 0===Je?void 0:Je.manager)||void 0===Ve?void 0:Ve.global)||void 0===Ye?void 0:Ye.favicon)||void 0===Ze?void 0:Ze.fileId)?[null===(tt=null===(et=null===(Qe=null===(Ke=this.props)||void 0===Ke?void 0:Ke.seoData)||void 0===Qe?void 0:Qe.manager)||void 0===et?void 0:et.global)||void 0===tt?void 0:tt.favicon]:[{url:"",fileId:""}],onChangeComplete:e=>{const t=(null==e?void 0:e.url)?e:{url:"",fileId:""};this.onGlobalChange(t,"favicon")},multiple:!1,accept:"image/png, image/jpeg, image/jpg, image/webp"})),n.createElement(p,null,n.createElement(h,{sx:{fontSize:"0.85rem",color:"#475569",fontWeight:500,mb:1}},"Navigation Theme Color"),n.createElement(p,{sx:{display:"flex",alignItems:"center",gap:2}},n.createElement("input",{type:"color",value:(null===(lt=null===(nt=null===(it=null===(ot=this.props)||void 0===ot?void 0:ot.seoData)||void 0===it?