image-salon-sdk 1.0.53 → 1.0.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6897,12 +6897,13 @@ async function Sr(r) {
6897
6897
  const e = {
6898
6898
  maxSizeMB: 2,
6899
6899
  maxWidthOrHeight: 1920,
6900
- useWebWorker: !0
6900
+ useWebWorker: !0,
6901
+ libURL: "/workers/browser-image-compression.js"
6901
6902
  };
6902
6903
  try {
6903
6904
  return await Ss(r, e);
6904
6905
  } catch (t) {
6905
- throw Error(t);
6906
+ throw t;
6906
6907
  }
6907
6908
  }
6908
6909
  var Dt, Se, Re, It, Ue, qe, ut, st, Jt, Mt, bt, ft, Vt, nn, Hn, Ht, $t, Lt, Qt, Ct, Et, Pt, Wt, Tt, rn, An, Qe, xt, vn, $n, kn, At, sn, jt, on, an, ln, cn, dn, Fn, Nn, hn;
@@ -7100,7 +7101,7 @@ class Ps {
7100
7101
  console.error("Error reading file:", i.error);
7101
7102
  };
7102
7103
  } catch (n) {
7103
- this._renderUserToast(n, "error");
7104
+ this._renderUserToast(n == null ? void 0 : n.message, "error");
7104
7105
  }
7105
7106
  }
7106
7107
  _renderUserToast(e, t = "success") {
@@ -21,7 +21,7 @@ self.addEventListener('message', async (e) => {
21
21
  self.postMessage({ error: e.message + '\\n' + e.stack, id })
22
22
  }
23
23
  })
24
- `;let pn;function Zn(P,j){return new Promise((G,E)=>{pn||(pn=function(C){const p=[];return p.push(C),URL.createObjectURL(new Blob(p))}(jn));const o=new Worker(pn);o.addEventListener("message",function(C){if(j.signal&&j.signal.aborted)o.terminate();else if(C.data.progress===void 0){if(C.data.error)return E(new Error(C.data.error)),void o.terminate();G(C.data.file),o.terminate()}else j.onProgress(C.data.progress)}),o.addEventListener("error",E),j.signal&&j.signal.addEventListener("abort",()=>{E(j.signal.reason),o.terminate()}),o.postMessage({file:P,imageCompressionLibUrl:j.libURL,options:{...j,onProgress:void 0,signal:void 0}})})}function ze(P,j){return new Promise(function(G,E){let o,a,C,p,F,_;if(o={...j},C=0,{onProgress:p}=o,o.maxSizeMB=o.maxSizeMB||Number.POSITIVE_INFINITY,F=typeof o.useWebWorker!="boolean"||o.useWebWorker,delete o.useWebWorker,o.onProgress=m=>{C=m,typeof p=="function"&&p(C)},!(P instanceof Blob||P instanceof ie))return E(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(P.type))return E(new Error("The file given is not an image"));if(_=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,!F||typeof Worker!="function"||_)return In(P,o).then((function(m){try{return a=m,l.call(this)}catch(v){return E(v)}}).bind(this),E);var c=(function(){try{return l.call(this)}catch(m){return E(m)}}).bind(this),h=function(m){try{return In(P,o).then(function(v){try{return a=v,c()}catch(O){return E(O)}},E)}catch(v){return E(v)}};try{return o.libURL=o.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.1/dist/browser-image-compression.js",Zn(P,o).then(function(m){try{return a=m,c()}catch{return h()}},h)}catch{h()}function l(){try{a.name=P.name,a.lastModified=P.lastModified}catch{}try{o.preserveExif&&P.type==="image/jpeg"&&(!o.fileType||o.fileType&&o.fileType===P.type)&&(a=e(P,a))}catch{}return G(a)}})}return ze.getDataUrlFromFile=Pe,ze.getFilefromDataUrl=me,ze.loadImage=we,ze.drawImageInCanvas=de,ze.drawFileInCanvas=Fe,ze.canvasToFile=We,ze.getExifOrientation=Wn,ze.handleMaxWidthOrHeight=Fn,ze.followExifOrientation=Nn,ze.cleanupCanvasMemory=Oe,ze.isAutoOrientationInBrowser=jt,ze.approximateBelowMaximumCanvasSizeOfBrowser=Ke,ze.copyExifWithoutOrientation=e,ze.getBrowserName=Ie,ze.version="2.0.1",ze});const _s=imageCompression;class Us extends Ge{constructor(){super("com.hamropatro.grpc.cms.ImageUploadRequest",[{no:1,name:"mime_type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.mimeType="",e!==void 0&&$e(this,t,e),t}internalBinaryRead(e,t,n,i){let s=i??this.create(),d=e.pos+t;for(;e.pos<d;){let[u,g]=e.tag();switch(u){case 1:s.mimeType=e.string();break;default:let A=n.readUnknownField;if(A==="throw")throw new globalThis.Error(`Unknown field ${u} (wire type ${g}) for ${this.typeName}`);let V=e.skip(g);A!==!1&&(A===!0?he.onRead:A)(this.typeName,s,u,g,V)}}return s}internalBinaryWrite(e,t,n){e.mimeType!==""&&t.tag(1,te.LengthDelimited).string(e.mimeType);let i=n.writeUnknownFields;return i!==!1&&(i==!0?he.onWrite:i)(this.typeName,e,t),t}}const ar=new Us;class Bs extends Ge{constructor(){super("com.hamropatro.grpc.cms.ImageUploadResponse",[{no:1,name:"key",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.key="",t.url="",e!==void 0&&$e(this,t,e),t}internalBinaryRead(e,t,n,i){let s=i??this.create(),d=e.pos+t;for(;e.pos<d;){let[u,g]=e.tag();switch(u){case 1:s.key=e.string();break;case 2:s.url=e.string();break;default:let A=n.readUnknownField;if(A==="throw")throw new globalThis.Error(`Unknown field ${u} (wire type ${g}) for ${this.typeName}`);let V=e.skip(g);A!==!1&&(A===!0?he.onRead:A)(this.typeName,s,u,g,V)}}return s}internalBinaryWrite(e,t,n){e.key!==""&&t.tag(1,te.LengthDelimited).string(e.key),e.url!==""&&t.tag(2,te.LengthDelimited).string(e.url);let i=n.writeUnknownFields;return i!==!1&&(i==!0?he.onWrite:i)(this.typeName,e,t),t}}const Gr=new Bs,lr=new Qn("com.hamropatro.grpc.cms.ImageUploadService",[{name:"Upload",options:{},I:ar,O:Gr},{name:"UploadUserImage",options:{},I:ar,O:Gr}]);class Os{constructor(e){Ue(this,"typeName",lr.typeName);Ue(this,"methods",lr.methods);Ue(this,"options",lr.options);this._transport=e}upload(e,t){const n=this.methods[0],i=this._transport.mergeOptions(t);return dt("unary",this._transport,n,i,e)}uploadUserImage(e,t){const n=this.methods[1],i=this._transport.mergeOptions(t);return dt("unary",this._transport,n,i,e)}}const Ss=async(r,e,t=!0)=>{var d;const n=(d=window.ImageSalonSDK)==null?void 0:d.grpcConfig,i=new Os(n),s=ar.create();try{return s.mimeType=r,t?await i.upload(s,e):await i.uploadUserImage(s,e)}catch(u){throw u}},Jr=async(r,e,t,n=!0)=>{try{const i=Rs(r,e),d=(await Ss(e==null?void 0:e.type,t,n)).response.url;return await fetch(d,{method:"PUT",headers:{"Content-Type":e==null?void 0:e.type,"x-amz-acl":"public-read"},body:i}),d==null?void 0:d.split("?")[0]}catch(i){throw i}},Rs=(r,e)=>{const t=e.type.split("/")[0];let n="";t==="video"?n=r==null?void 0:r.replace(/^data:video\/\w+;base64,/,""):t==="image"?n=r==null?void 0:r.replace(/^data:image\/\w+;base64,/,""):t==="audio"&&(n=r==null?void 0:r.replace(/^data:audio\/\w+;base64,/,""));const i=atob(n),s=new Uint8Array(i.length);for(let d=0;d<i.length;d++)s[d]=i.charCodeAt(d);return s};async function Qr(r){const e={maxSizeMB:2,maxWidthOrHeight:1920,useWebWorker:!0};try{return await _s(r,e)}catch(t){throw Error(t)}}class Ds{constructor(e){ce(this,Rt);ce(this,Me);ce(this,Ve);ce(this,Lt);ce(this,Be,[]);ce(this,qe,[]);ce(this,wt);ce(this,ot);ce(this,Xt);ce(this,Dt);ce(this,At,[]);ce(this,yt);ce(this,Mt);ce(this,sn);ce(this,$n);ce(this,Vt);ce(this,Ht);ce(this,xt);ce(this,Gt);ce(this,vt);ce(this,kt);ce(this,$t);ce(this,Pt);ce(this,_t);ce(this,on);ce(this,Cn);ce(this,Ye);ce(this,Ut);ce(this,En,!1);ce(this,Pn);ce(this,An);ce(this,Ft);ce(this,an);ce(this,Wt);ce(this,ln);ce(this,cn);ce(this,dn);ce(this,hn);ce(this,un);ce(this,vn);ce(this,kn);ce(this,fn);J(this,An,e.isAdmin),J(this,wt,!1),J(this,sn,e.handleUpload.bind(this)),J(this,Cn,e.accessToken),J(this,ln,e==null?void 0:e.mode),this._grpcOptionInitializer(),this._init(e).then(()=>{J(this,En,!0),this._renderView(e),this.updateWindowObject({initialized:!0}),this._initializeGrpcConfig(e.mode,e.endPoint)})}async _init(e){try{const{mode:t}=e;this.updateWindowObject({mode:t})}catch{throw Error("Initialization failed")}}_isAdminOptions(e){return e.isAdmin===!0}_renderView(e){return this._isAdminOptions(e)?(J(this,ot,!1),J(this,Xt,!1),J(this,Vt,0),J(this,kt,""),J(this,_t,!1),J(this,ln,e.mode),J(this,$t,!1),J(this,Wt,""),J(this,Ut,null),this._removeToastContainer(),this._renderAdminView(e)):(J(this,an,""),J(this,cn,e.restrictedFileSize),J(this,dn,e==null?void 0:e.localizedFileRestrictedMessage),J(this,un,e==null?void 0:e.localizedSuccessMessage),J(this,hn,e==null?void 0:e.localizedErrorMessage),J(this,vn,e.removeImageConfirm.bind(this)),J(this,kn,e.removeImagePreviewCB.bind(this)),J(this,fn,e.getUploadingState.bind(this)),this._removeUserToast(),this._renderUserView(e))}_renderAdminView(e){if(!L(this,En))return;const{parentContainerId:t}=e;if(e.isAdmin===!0)var{buttonProps:n}=e;J(this,Rt,document.getElementById(t));const i=document.createElement("button");i.className=n!=null&&n.buttonClass?n==null?void 0:n.buttonClass:"browse-image-button",i.addEventListener("focus",()=>{i.blur()});const s=document.createElement("span");s.textContent=n!=null&&n.buttonText?n==null?void 0:n.buttonText:"Browse Files";const d=document.createElement("span");d.innerHTML=n!=null&&n.buttonIcon?n==null?void 0:n.buttonIcon:"",i.type="button",i.append(s,d),n!=null&&n.buttonStyle&&Object.assign(i.style,n==null?void 0:n.buttonStyle),i.addEventListener("click",()=>{this._selectedImageContainer()}),L(this,Rt).appendChild(i)}async _grpcOptionInitializer(){J(this,Ye,await Ts(L(this,Cn),L(this,ln)))}_selectedImageContainer(){var ne;J(this,Mt,st(`Save (${(ne=L(this,Be))==null?void 0:ne.length})`,"dialog-btn confirm")),J(this,Ht,le("folder-container")),J(this,xt,le("folder-list-wrapper")),this._fetchAllFolders();const e=st("Cancel","dialog-btn cancel");st("","dialog-modal-close-btn","",!1,'<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="24" height="24" viewBox="0 0 50 50"> <path d="M 9.15625 6.3125 L 6.3125 9.15625 L 22.15625 25 L 6.21875 40.96875 L 9.03125 43.78125 L 25 27.84375 L 40.9375 43.78125 L 43.78125 40.9375 L 27.84375 25 L 43.6875 9.15625 L 40.84375 6.3125 L 25 22.15625 Z"></path> </svg>').addEventListener("click",()=>{Hn.hide(),J(this,Be,[]),J(this,qe,[])}),J(this,Me,le("browse-container"));const n=le();n.style.display="flex",n.style.alignItems="center",n.style.justifyContent="space-between",n.style.padding="10px 20px";const i=bn("Folders","folder-title"),s=st("","add-folder-btn");s.append(jr()),this._createUpdateFolderDialog(s,"create"),n.append(i,s),L(this,Ht).append(n,L(this,xt));const d=this._renderSearchField(),u=this._createBrowseMoreContainer(),g=this._createBrowseImageMain(),A=le("footer");e.onclick=()=>{L(this,$n).call(this),Hn.hide(),J(this,qe,[]),J(this,Be,[])},L(this,Mt).onclick=()=>{L(this,sn).call(this),Hn.hide(),J(this,Be,[]),J(this,qe,[])},A.append(e,L(this,Mt));const V=le("container-right-main");V.append(d,u,g,A),L(this,Me).append(L(this,Ht),V),Hn.show({content:L(this,Me)})}_renderUserView(e){const{parentContainerId:t,restrictedFileSize:n,imagePreview:i}=e;J(this,Rt,document.getElementById(t)),J(this,Ft,ge("div","user-view-container"));const s=le("user-view-browse-wrapper","user-view-browse-wrapper"),d=ge("span","","",""),u=this._renderUserViewBrowseButton(),g=ge("p","","margin-block: 0px; font-size:14px");if(g.append(d,u),n){const A=ge("p","","margin-block: 0px; font-size: 13px; color: #777",`Max File size: ${n}MB`);s.append(sr(),g,A)}else s.append(sr(),g);return L(this,Ft).append(s),i&&this._renderImagePreview(i,"",s,!0),L(this,Rt).appendChild(L(this,Ft)),L(this,Rt)}_renderImagePreview(e,t,n,i=!1){var fe;const s=document.getElementById("user-view-browse-wrapper"),d=s||n;d&&(d.style.display="none");const u=document.getElementById("user-image-preview");u&&u.remove();const g=ge("div","user-image-preview");g.id="user-image-preview";const A=ge("img","","max-width: 230px;max-height:250px;object-fit:cover;");A.src=e,A.alt=t||"";const V=ge("div","",`width: 18px; height: 18px; display: ${i?"flex":"none"}; cursor:pointer; align-items: center; justify-content: center; padding: 4px; position: absolute; top: -5px; right: -5px; background: #c10007; border-radius: 50%;z-index:1`);V.id="remove-preview-btn";const ne=ir();ne.style.fill="#fff",V==null||V.appendChild(ne),V.addEventListener("click",()=>{this._removeUserToast(),L(this,vn).call(this)});const ie=ge("button","","display:none");ie.id="image-preview-hidden-btn",ie.addEventListener("click",()=>{var me;(me=L(this,Ft))==null||me.removeChild(g),L(this,kn).call(this),d&&(d.style.display="flex")}),g==null||g.append(A,V,ie),(fe=L(this,Ft))==null||fe.append(g)}_renderRemovePreviewBtn(){const e=document.getElementById("remove-preview-btn");e&&(e.style.display="flex")}async _readFileAsBase64(e){const t=L(this,cn)*1024*1024;if(e.size>t){this._renderUserToast(L(this,dn)?L(this,dn):`File size must be less than ${L(this,cn)}MB.`,"error");return}J(this,wt,!0),L(this,fn).call(this,!0);try{const n=await Qr(e);this._removeUserToast();const i=new FileReader;i.readAsDataURL(n),i.onload=()=>{this._userViewUploadAndAddSelectedImageList(i.result,e)},i.onerror=()=>{console.error("Error reading file:",i.error)}}catch(n){this._renderUserToast(n,"error")}}_renderUserToast(e,t="success"){const n=ge("div","","display:flex;align-items:center;gap:5px;margin-top:5px;");n.id="user-toast-container";const i=ge("p","","margin-block:0px;font-size:14px;padding-top:3px");i.textContent=e,i.style.color=t==="success"?"#4caf50":"#ee3f3f";const s=t==="success"?Pr("#4caf50"):rr();s.style.width="15px",s.style.height="15px",n.append(s,i),L(this,Ft).appendChild(n)}_removeUserToast(){const e=document.getElementById("user-toast-container");e&&e.remove()}_renderUserViewBrowseButton(){const e=or("file");e.style.display="none",e.setAttribute("multiple","true"),e.setAttribute("accept","image/*");const t=ge("a","user-upload-btn","","Click to upload");return t.classList.add("user-upload-btn"),t.role="button",t.addEventListener("click",()=>{this._removeUserToast(),e.click()}),e.addEventListener("change",()=>{const n=e.files[0];n&&this._readFileAsBase64(n),e.value=""}),t}_renderUserUploading(){const e=ge("div","","margin-top:5px;margin-bottom:8px;display:flex;flex-direction:column;align-items:center;gap:5px;font-weight:600;font-size:14px");e.id="user-uploading",e.innerHTML="Uploading...";const t=ge("div","linear-loader");e.appendChild(t),L(this,Ft).append(e)}_removeUserUploading(){const e=document.getElementById("user-uploading");e&&e.remove()}async _userViewUploadAndAddSelectedImageList(e,t){this._renderUserUploading();try{this._renderImagePreview(e,t.name);const n=await Jr(e,t,L(this,Ye),!1);await this._uploadForUser(n,t),L(this,un)&&this._renderUserToast(L(this,un),"success")}catch{this._renderUserToast(L(this,hn)?L(this,hn):"Error uploading. Please try again later.","error")}finally{J(this,wt,!1),L(this,fn).call(this,!1),this._removeUserUploading(),this._renderRemovePreviewBtn()}}async _uploadForUser(e,t){var n;try{const i=await rs(e,Et[zr((n=t.type)==null?void 0:n.split("/")[0])],L(this,Ye));J(this,an,i==null?void 0:i.response),L(this,sn).call(this)}catch(i){throw Error(i)}}_createAllAndSelectedTab(e){const t=le("select-options"),n=bn("Browse","select"),i=bn("Selected","select","selected-images-tab");n.classList.add("selected"),[n,i].forEach((d,u)=>{d.addEventListener("click",()=>{var g;J(this,Vt,u),(g=document.querySelector(".select.selected"))==null||g.classList.remove("selected"),d.classList.add("selected"),this._updateSelectedImageListContainerUI()})}),t.append(n,i),e.appendChild(t)}_renderUploadButton(){const e=or("file");e.style.display="none",e.setAttribute("multiple","true"),e.setAttribute("accept","image/*,video/*,audio/*,.gif"),J(this,Lt,document.createElement("button")),L(this,Lt).className="browse-more-btn";const t=document.createElement("span");return t.textContent="Upload",L(this,Lt).append(sr(),t),L(this,Lt).type="button",L(this,Lt).addEventListener("click",()=>e.click()),e.addEventListener("change",async()=>{const n=e.files[0];try{J(this,wt,!0);const i=await Qr(n),s=new FileReader;s.readAsDataURL(i),s.onload=async()=>{await this._uploadAndAddSelectedImageList(s.result,n)}}catch(i){this._renderToastContainer(i,"error",L(this,Me))}e.value=""}),L(this,Lt)}_renderCreateFolderBtn(){const e=document.createElement("button");e.className="create-folder-btn";const t=document.createElement("span");return t.textContent="Create",e.append(jr(),t),this._createUpdateFolderDialog(e,"create"),e}_renderSearchField(){let e;const t=le("search-browse-container"),n=le("search-input-wrapper","search-input-wrapper");J(this,Pt,or("search")),L(this,Pt).value="",L(this,Pt).addEventListener("input",s=>{J(this,qe,[]);const d=s.target;e&&clearTimeout(e),e=setTimeout(()=>{if(!d.value){J(this,kt,""),J(this,$t,!1),J(this,_t,!1),this._fetchFilesFromFolder(L(this,Dt));return}J(this,_t,!0),J(this,on,d.value),this._search(L(this,on))},750)}),L(this,Pt).setAttribute("placeholder","Search");const i=As();return i.style.position="absolute",i.style.top="50%",i.style.left="5%",i.style.transform="translate(-5%, -50%)",n.append(i,L(this,Pt)),t.append(n),t}_createBrowseMoreContainer(){J(this,Gt,le("browse-more-btn-container")),this._createAllAndSelectedTab(L(this,Gt));const e=this._renderUploadButton(),t=this._renderCreateFolderBtn(),n=document.createElement("div");return n.style.display="flex",n.style.alignItems="center",n.style.gap="10px",n.append(e,t),L(this,Gt).appendChild(n),L(this,Gt)}_createBrowseImageMain(){const e=le("browse-image-main");return J(this,Ve,le("selected-image-container")),L(this,Ve).addEventListener("scroll",()=>{const t=L(this,Ve).clientHeight,n=L(this,Ve).scrollTop,i=L(this,Ve).scrollHeight;t+n>=i-5&&L(this,$t)&&(L(this,_t)?this._search(L(this,on)):this._fetchFilesFromFolder(L(this,Dt)))}),e.appendChild(L(this,Ve)),e}_renderFetchingSkeletonUI(){for(let e=0;e<20;e++){const t=le("skeleton");t.innerHTML="",L(this,Ve).append(t)}}_renderEmptyImageContainer(){if(L(this,ot)||L(this,wt))return;const e=le(),t=le(),n=document.createElement("p");L(this,_t)&&L(this,Vt)===0?(t.innerHTML=`
24
+ `;let pn;function Zn(P,j){return new Promise((G,E)=>{pn||(pn=function(C){const p=[];return p.push(C),URL.createObjectURL(new Blob(p))}(jn));const o=new Worker(pn);o.addEventListener("message",function(C){if(j.signal&&j.signal.aborted)o.terminate();else if(C.data.progress===void 0){if(C.data.error)return E(new Error(C.data.error)),void o.terminate();G(C.data.file),o.terminate()}else j.onProgress(C.data.progress)}),o.addEventListener("error",E),j.signal&&j.signal.addEventListener("abort",()=>{E(j.signal.reason),o.terminate()}),o.postMessage({file:P,imageCompressionLibUrl:j.libURL,options:{...j,onProgress:void 0,signal:void 0}})})}function ze(P,j){return new Promise(function(G,E){let o,a,C,p,F,_;if(o={...j},C=0,{onProgress:p}=o,o.maxSizeMB=o.maxSizeMB||Number.POSITIVE_INFINITY,F=typeof o.useWebWorker!="boolean"||o.useWebWorker,delete o.useWebWorker,o.onProgress=m=>{C=m,typeof p=="function"&&p(C)},!(P instanceof Blob||P instanceof ie))return E(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(P.type))return E(new Error("The file given is not an image"));if(_=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,!F||typeof Worker!="function"||_)return In(P,o).then((function(m){try{return a=m,l.call(this)}catch(v){return E(v)}}).bind(this),E);var c=(function(){try{return l.call(this)}catch(m){return E(m)}}).bind(this),h=function(m){try{return In(P,o).then(function(v){try{return a=v,c()}catch(O){return E(O)}},E)}catch(v){return E(v)}};try{return o.libURL=o.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.1/dist/browser-image-compression.js",Zn(P,o).then(function(m){try{return a=m,c()}catch{return h()}},h)}catch{h()}function l(){try{a.name=P.name,a.lastModified=P.lastModified}catch{}try{o.preserveExif&&P.type==="image/jpeg"&&(!o.fileType||o.fileType&&o.fileType===P.type)&&(a=e(P,a))}catch{}return G(a)}})}return ze.getDataUrlFromFile=Pe,ze.getFilefromDataUrl=me,ze.loadImage=we,ze.drawImageInCanvas=de,ze.drawFileInCanvas=Fe,ze.canvasToFile=We,ze.getExifOrientation=Wn,ze.handleMaxWidthOrHeight=Fn,ze.followExifOrientation=Nn,ze.cleanupCanvasMemory=Oe,ze.isAutoOrientationInBrowser=jt,ze.approximateBelowMaximumCanvasSizeOfBrowser=Ke,ze.copyExifWithoutOrientation=e,ze.getBrowserName=Ie,ze.version="2.0.1",ze});const _s=imageCompression;class Us extends Ge{constructor(){super("com.hamropatro.grpc.cms.ImageUploadRequest",[{no:1,name:"mime_type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.mimeType="",e!==void 0&&$e(this,t,e),t}internalBinaryRead(e,t,n,i){let s=i??this.create(),d=e.pos+t;for(;e.pos<d;){let[u,g]=e.tag();switch(u){case 1:s.mimeType=e.string();break;default:let A=n.readUnknownField;if(A==="throw")throw new globalThis.Error(`Unknown field ${u} (wire type ${g}) for ${this.typeName}`);let V=e.skip(g);A!==!1&&(A===!0?he.onRead:A)(this.typeName,s,u,g,V)}}return s}internalBinaryWrite(e,t,n){e.mimeType!==""&&t.tag(1,te.LengthDelimited).string(e.mimeType);let i=n.writeUnknownFields;return i!==!1&&(i==!0?he.onWrite:i)(this.typeName,e,t),t}}const ar=new Us;class Bs extends Ge{constructor(){super("com.hamropatro.grpc.cms.ImageUploadResponse",[{no:1,name:"key",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.key="",t.url="",e!==void 0&&$e(this,t,e),t}internalBinaryRead(e,t,n,i){let s=i??this.create(),d=e.pos+t;for(;e.pos<d;){let[u,g]=e.tag();switch(u){case 1:s.key=e.string();break;case 2:s.url=e.string();break;default:let A=n.readUnknownField;if(A==="throw")throw new globalThis.Error(`Unknown field ${u} (wire type ${g}) for ${this.typeName}`);let V=e.skip(g);A!==!1&&(A===!0?he.onRead:A)(this.typeName,s,u,g,V)}}return s}internalBinaryWrite(e,t,n){e.key!==""&&t.tag(1,te.LengthDelimited).string(e.key),e.url!==""&&t.tag(2,te.LengthDelimited).string(e.url);let i=n.writeUnknownFields;return i!==!1&&(i==!0?he.onWrite:i)(this.typeName,e,t),t}}const Gr=new Bs,lr=new Qn("com.hamropatro.grpc.cms.ImageUploadService",[{name:"Upload",options:{},I:ar,O:Gr},{name:"UploadUserImage",options:{},I:ar,O:Gr}]);class Os{constructor(e){Ue(this,"typeName",lr.typeName);Ue(this,"methods",lr.methods);Ue(this,"options",lr.options);this._transport=e}upload(e,t){const n=this.methods[0],i=this._transport.mergeOptions(t);return dt("unary",this._transport,n,i,e)}uploadUserImage(e,t){const n=this.methods[1],i=this._transport.mergeOptions(t);return dt("unary",this._transport,n,i,e)}}const Ss=async(r,e,t=!0)=>{var d;const n=(d=window.ImageSalonSDK)==null?void 0:d.grpcConfig,i=new Os(n),s=ar.create();try{return s.mimeType=r,t?await i.upload(s,e):await i.uploadUserImage(s,e)}catch(u){throw u}},Jr=async(r,e,t,n=!0)=>{try{const i=Rs(r,e),d=(await Ss(e==null?void 0:e.type,t,n)).response.url;return await fetch(d,{method:"PUT",headers:{"Content-Type":e==null?void 0:e.type,"x-amz-acl":"public-read"},body:i}),d==null?void 0:d.split("?")[0]}catch(i){throw i}},Rs=(r,e)=>{const t=e.type.split("/")[0];let n="";t==="video"?n=r==null?void 0:r.replace(/^data:video\/\w+;base64,/,""):t==="image"?n=r==null?void 0:r.replace(/^data:image\/\w+;base64,/,""):t==="audio"&&(n=r==null?void 0:r.replace(/^data:audio\/\w+;base64,/,""));const i=atob(n),s=new Uint8Array(i.length);for(let d=0;d<i.length;d++)s[d]=i.charCodeAt(d);return s};async function Qr(r){const e={maxSizeMB:2,maxWidthOrHeight:1920,useWebWorker:!0,libURL:"/workers/browser-image-compression.js"};try{return await _s(r,e)}catch(t){throw t}}class Ds{constructor(e){ce(this,Rt);ce(this,Me);ce(this,Ve);ce(this,Lt);ce(this,Be,[]);ce(this,qe,[]);ce(this,wt);ce(this,ot);ce(this,Xt);ce(this,Dt);ce(this,At,[]);ce(this,yt);ce(this,Mt);ce(this,sn);ce(this,$n);ce(this,Vt);ce(this,Ht);ce(this,xt);ce(this,Gt);ce(this,vt);ce(this,kt);ce(this,$t);ce(this,Pt);ce(this,_t);ce(this,on);ce(this,Cn);ce(this,Ye);ce(this,Ut);ce(this,En,!1);ce(this,Pn);ce(this,An);ce(this,Ft);ce(this,an);ce(this,Wt);ce(this,ln);ce(this,cn);ce(this,dn);ce(this,hn);ce(this,un);ce(this,vn);ce(this,kn);ce(this,fn);J(this,An,e.isAdmin),J(this,wt,!1),J(this,sn,e.handleUpload.bind(this)),J(this,Cn,e.accessToken),J(this,ln,e==null?void 0:e.mode),this._grpcOptionInitializer(),this._init(e).then(()=>{J(this,En,!0),this._renderView(e),this.updateWindowObject({initialized:!0}),this._initializeGrpcConfig(e.mode,e.endPoint)})}async _init(e){try{const{mode:t}=e;this.updateWindowObject({mode:t})}catch{throw Error("Initialization failed")}}_isAdminOptions(e){return e.isAdmin===!0}_renderView(e){return this._isAdminOptions(e)?(J(this,ot,!1),J(this,Xt,!1),J(this,Vt,0),J(this,kt,""),J(this,_t,!1),J(this,ln,e.mode),J(this,$t,!1),J(this,Wt,""),J(this,Ut,null),this._removeToastContainer(),this._renderAdminView(e)):(J(this,an,""),J(this,cn,e.restrictedFileSize),J(this,dn,e==null?void 0:e.localizedFileRestrictedMessage),J(this,un,e==null?void 0:e.localizedSuccessMessage),J(this,hn,e==null?void 0:e.localizedErrorMessage),J(this,vn,e.removeImageConfirm.bind(this)),J(this,kn,e.removeImagePreviewCB.bind(this)),J(this,fn,e.getUploadingState.bind(this)),this._removeUserToast(),this._renderUserView(e))}_renderAdminView(e){if(!L(this,En))return;const{parentContainerId:t}=e;if(e.isAdmin===!0)var{buttonProps:n}=e;J(this,Rt,document.getElementById(t));const i=document.createElement("button");i.className=n!=null&&n.buttonClass?n==null?void 0:n.buttonClass:"browse-image-button",i.addEventListener("focus",()=>{i.blur()});const s=document.createElement("span");s.textContent=n!=null&&n.buttonText?n==null?void 0:n.buttonText:"Browse Files";const d=document.createElement("span");d.innerHTML=n!=null&&n.buttonIcon?n==null?void 0:n.buttonIcon:"",i.type="button",i.append(s,d),n!=null&&n.buttonStyle&&Object.assign(i.style,n==null?void 0:n.buttonStyle),i.addEventListener("click",()=>{this._selectedImageContainer()}),L(this,Rt).appendChild(i)}async _grpcOptionInitializer(){J(this,Ye,await Ts(L(this,Cn),L(this,ln)))}_selectedImageContainer(){var ne;J(this,Mt,st(`Save (${(ne=L(this,Be))==null?void 0:ne.length})`,"dialog-btn confirm")),J(this,Ht,le("folder-container")),J(this,xt,le("folder-list-wrapper")),this._fetchAllFolders();const e=st("Cancel","dialog-btn cancel");st("","dialog-modal-close-btn","",!1,'<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="24" height="24" viewBox="0 0 50 50"> <path d="M 9.15625 6.3125 L 6.3125 9.15625 L 22.15625 25 L 6.21875 40.96875 L 9.03125 43.78125 L 25 27.84375 L 40.9375 43.78125 L 43.78125 40.9375 L 27.84375 25 L 43.6875 9.15625 L 40.84375 6.3125 L 25 22.15625 Z"></path> </svg>').addEventListener("click",()=>{Hn.hide(),J(this,Be,[]),J(this,qe,[])}),J(this,Me,le("browse-container"));const n=le();n.style.display="flex",n.style.alignItems="center",n.style.justifyContent="space-between",n.style.padding="10px 20px";const i=bn("Folders","folder-title"),s=st("","add-folder-btn");s.append(jr()),this._createUpdateFolderDialog(s,"create"),n.append(i,s),L(this,Ht).append(n,L(this,xt));const d=this._renderSearchField(),u=this._createBrowseMoreContainer(),g=this._createBrowseImageMain(),A=le("footer");e.onclick=()=>{L(this,$n).call(this),Hn.hide(),J(this,qe,[]),J(this,Be,[])},L(this,Mt).onclick=()=>{L(this,sn).call(this),Hn.hide(),J(this,Be,[]),J(this,qe,[])},A.append(e,L(this,Mt));const V=le("container-right-main");V.append(d,u,g,A),L(this,Me).append(L(this,Ht),V),Hn.show({content:L(this,Me)})}_renderUserView(e){const{parentContainerId:t,restrictedFileSize:n,imagePreview:i}=e;J(this,Rt,document.getElementById(t)),J(this,Ft,ge("div","user-view-container"));const s=le("user-view-browse-wrapper","user-view-browse-wrapper"),d=ge("span","","",""),u=this._renderUserViewBrowseButton(),g=ge("p","","margin-block: 0px; font-size:14px");if(g.append(d,u),n){const A=ge("p","","margin-block: 0px; font-size: 13px; color: #777",`Max File size: ${n}MB`);s.append(sr(),g,A)}else s.append(sr(),g);return L(this,Ft).append(s),i&&this._renderImagePreview(i,"",s,!0),L(this,Rt).appendChild(L(this,Ft)),L(this,Rt)}_renderImagePreview(e,t,n,i=!1){var fe;const s=document.getElementById("user-view-browse-wrapper"),d=s||n;d&&(d.style.display="none");const u=document.getElementById("user-image-preview");u&&u.remove();const g=ge("div","user-image-preview");g.id="user-image-preview";const A=ge("img","","max-width: 230px;max-height:250px;object-fit:cover;");A.src=e,A.alt=t||"";const V=ge("div","",`width: 18px; height: 18px; display: ${i?"flex":"none"}; cursor:pointer; align-items: center; justify-content: center; padding: 4px; position: absolute; top: -5px; right: -5px; background: #c10007; border-radius: 50%;z-index:1`);V.id="remove-preview-btn";const ne=ir();ne.style.fill="#fff",V==null||V.appendChild(ne),V.addEventListener("click",()=>{this._removeUserToast(),L(this,vn).call(this)});const ie=ge("button","","display:none");ie.id="image-preview-hidden-btn",ie.addEventListener("click",()=>{var me;(me=L(this,Ft))==null||me.removeChild(g),L(this,kn).call(this),d&&(d.style.display="flex")}),g==null||g.append(A,V,ie),(fe=L(this,Ft))==null||fe.append(g)}_renderRemovePreviewBtn(){const e=document.getElementById("remove-preview-btn");e&&(e.style.display="flex")}async _readFileAsBase64(e){const t=L(this,cn)*1024*1024;if(e.size>t){this._renderUserToast(L(this,dn)?L(this,dn):`File size must be less than ${L(this,cn)}MB.`,"error");return}J(this,wt,!0),L(this,fn).call(this,!0);try{const n=await Qr(e);this._removeUserToast();const i=new FileReader;i.readAsDataURL(n),i.onload=()=>{this._userViewUploadAndAddSelectedImageList(i.result,e)},i.onerror=()=>{console.error("Error reading file:",i.error)}}catch(n){this._renderUserToast(n==null?void 0:n.message,"error")}}_renderUserToast(e,t="success"){const n=ge("div","","display:flex;align-items:center;gap:5px;margin-top:5px;");n.id="user-toast-container";const i=ge("p","","margin-block:0px;font-size:14px;padding-top:3px");i.textContent=e,i.style.color=t==="success"?"#4caf50":"#ee3f3f";const s=t==="success"?Pr("#4caf50"):rr();s.style.width="15px",s.style.height="15px",n.append(s,i),L(this,Ft).appendChild(n)}_removeUserToast(){const e=document.getElementById("user-toast-container");e&&e.remove()}_renderUserViewBrowseButton(){const e=or("file");e.style.display="none",e.setAttribute("multiple","true"),e.setAttribute("accept","image/*");const t=ge("a","user-upload-btn","","Click to upload");return t.classList.add("user-upload-btn"),t.role="button",t.addEventListener("click",()=>{this._removeUserToast(),e.click()}),e.addEventListener("change",()=>{const n=e.files[0];n&&this._readFileAsBase64(n),e.value=""}),t}_renderUserUploading(){const e=ge("div","","margin-top:5px;margin-bottom:8px;display:flex;flex-direction:column;align-items:center;gap:5px;font-weight:600;font-size:14px");e.id="user-uploading",e.innerHTML="Uploading...";const t=ge("div","linear-loader");e.appendChild(t),L(this,Ft).append(e)}_removeUserUploading(){const e=document.getElementById("user-uploading");e&&e.remove()}async _userViewUploadAndAddSelectedImageList(e,t){this._renderUserUploading();try{this._renderImagePreview(e,t.name);const n=await Jr(e,t,L(this,Ye),!1);await this._uploadForUser(n,t),L(this,un)&&this._renderUserToast(L(this,un),"success")}catch{this._renderUserToast(L(this,hn)?L(this,hn):"Error uploading. Please try again later.","error")}finally{J(this,wt,!1),L(this,fn).call(this,!1),this._removeUserUploading(),this._renderRemovePreviewBtn()}}async _uploadForUser(e,t){var n;try{const i=await rs(e,Et[zr((n=t.type)==null?void 0:n.split("/")[0])],L(this,Ye));J(this,an,i==null?void 0:i.response),L(this,sn).call(this)}catch(i){throw Error(i)}}_createAllAndSelectedTab(e){const t=le("select-options"),n=bn("Browse","select"),i=bn("Selected","select","selected-images-tab");n.classList.add("selected"),[n,i].forEach((d,u)=>{d.addEventListener("click",()=>{var g;J(this,Vt,u),(g=document.querySelector(".select.selected"))==null||g.classList.remove("selected"),d.classList.add("selected"),this._updateSelectedImageListContainerUI()})}),t.append(n,i),e.appendChild(t)}_renderUploadButton(){const e=or("file");e.style.display="none",e.setAttribute("multiple","true"),e.setAttribute("accept","image/*,video/*,audio/*,.gif"),J(this,Lt,document.createElement("button")),L(this,Lt).className="browse-more-btn";const t=document.createElement("span");return t.textContent="Upload",L(this,Lt).append(sr(),t),L(this,Lt).type="button",L(this,Lt).addEventListener("click",()=>e.click()),e.addEventListener("change",async()=>{const n=e.files[0];try{J(this,wt,!0);const i=await Qr(n),s=new FileReader;s.readAsDataURL(i),s.onload=async()=>{await this._uploadAndAddSelectedImageList(s.result,n)}}catch(i){this._renderToastContainer(i,"error",L(this,Me))}e.value=""}),L(this,Lt)}_renderCreateFolderBtn(){const e=document.createElement("button");e.className="create-folder-btn";const t=document.createElement("span");return t.textContent="Create",e.append(jr(),t),this._createUpdateFolderDialog(e,"create"),e}_renderSearchField(){let e;const t=le("search-browse-container"),n=le("search-input-wrapper","search-input-wrapper");J(this,Pt,or("search")),L(this,Pt).value="",L(this,Pt).addEventListener("input",s=>{J(this,qe,[]);const d=s.target;e&&clearTimeout(e),e=setTimeout(()=>{if(!d.value){J(this,kt,""),J(this,$t,!1),J(this,_t,!1),this._fetchFilesFromFolder(L(this,Dt));return}J(this,_t,!0),J(this,on,d.value),this._search(L(this,on))},750)}),L(this,Pt).setAttribute("placeholder","Search");const i=As();return i.style.position="absolute",i.style.top="50%",i.style.left="5%",i.style.transform="translate(-5%, -50%)",n.append(i,L(this,Pt)),t.append(n),t}_createBrowseMoreContainer(){J(this,Gt,le("browse-more-btn-container")),this._createAllAndSelectedTab(L(this,Gt));const e=this._renderUploadButton(),t=this._renderCreateFolderBtn(),n=document.createElement("div");return n.style.display="flex",n.style.alignItems="center",n.style.gap="10px",n.append(e,t),L(this,Gt).appendChild(n),L(this,Gt)}_createBrowseImageMain(){const e=le("browse-image-main");return J(this,Ve,le("selected-image-container")),L(this,Ve).addEventListener("scroll",()=>{const t=L(this,Ve).clientHeight,n=L(this,Ve).scrollTop,i=L(this,Ve).scrollHeight;t+n>=i-5&&L(this,$t)&&(L(this,_t)?this._search(L(this,on)):this._fetchFilesFromFolder(L(this,Dt)))}),e.appendChild(L(this,Ve)),e}_renderFetchingSkeletonUI(){for(let e=0;e<20;e++){const t=le("skeleton");t.innerHTML="",L(this,Ve).append(t)}}_renderEmptyImageContainer(){if(L(this,ot)||L(this,wt))return;const e=le(),t=le(),n=document.createElement("p");L(this,_t)&&L(this,Vt)===0?(t.innerHTML=`
25
25
  <svg width="300" height="300" viewBox="0 0 1000 1000" fill="none" xmlns="http://www.w3.org/2000/svg">
26
26
  <g clip-path="url(#clip0_2304_257)">
27
27
  <path d="M564.829 772.4H336.658V948.386H564.829V772.4Z" fill="#EBEBEB"/>