{"version":3,"file":"attached_media_controller-Cv8w_3es.js","sources":["../../../app/javascript/controllers/editor/attached_media_controller.js"],"sourcesContent":["import {Controller} from \"@hotwired/stimulus\"\nimport {DirectUpload} from \"@rails/activestorage\"\n\nimport {useToastNotifiers} from \"../mixins/useToastNotifiers\"\n\nclass DirectUploadStatusCode {\n constructor(responseString) {\n this.statusCode = Number.parseInt(responseString.split(\"Status: \")[1])\n }\n\n get forbidden() {\n return this.statusCode === 403\n }\n}\n\nexport default class extends Controller {\n static values = {\n expiredSubscription: String,\n inputName: String,\n upload: { type: Boolean, default: true }\n }\n\n static targets = [\"input\", \"overlay\", \"removeButton\", \"overlayRemoveButton\", \"error\", \"retryButton\", \"overlayActions\"]\n\n initialize() {\n if(this.uploadValue) {\n this.upload = new DirectUpload(this.inputTarget.files[0], this.inputTarget.dataset.directUploadUrl, this)\n } else {\n this.element.removeAttribute(\"data-uploading\")\n this.element.removeAttribute(\"data-upload-error\")\n this.element.setAttribute(\"data-uploaded\", \"\")\n this.overlayTarget.classList.add(\"hidden\")\n this.removeButtonTarget.classList.add(\"group-hover:flex\")\n }\n }\n\n connect() {\n useToastNotifiers(this)\n\n if(this.uploadValue) {\n this.startUpload()\n }\n }\n\n startUpload() {\n this.element.setAttribute(\"data-uploading\", \"\")\n\n this.upload.create((error, blob) => {\n if(error) {\n this.onUploadError(error)\n } else {\n this.element.removeAttribute(\"data-uploading\")\n this.element.removeAttribute(\"data-upload-error\")\n\n this.element.setAttribute(\"data-uploaded\", \"\")\n\n let hiddenField = document.createElement('input')\n hiddenField.type = \"hidden\"\n hiddenField.value = blob.signed_id;\n hiddenField.name = `${this.inputNameValue}[signed_id]`\n\n this.element.appendChild(hiddenField)\n\n hiddenField = document.createElement('input')\n hiddenField.type = \"hidden\"\n hiddenField.value = blob.key;\n hiddenField.name = `${this.inputNameValue}[id]`\n\n this.element.appendChild(hiddenField)\n }\n })\n }\n\n retryUpload() {\n this.displayInitialState()\n this.startUpload()\n }\n\n remove() {\n this.dispatch('removed', {\n detail: this.element\n })\n\n this.element.remove()\n }\n\n // private\n\n directUploadWillStoreFileWithXHR(request) {\n request.upload.addEventListener(\n \"progress\",\n event => this.directUploadDidProgress(event)\n )\n }\n\n directUploadDidProgress(event) {\n if(event.loaded === event.total) {\n this.overlayTarget.classList.add(\"hidden\")\n this.removeButtonTarget.classList.add(\"group-hover:flex\")\n }\n }\n\n onUploadError(error) {\n const statusCode = new DirectUploadStatusCode(error)\n\n if(statusCode.forbidden) {\n this.showToastErrorMessage(this.expiredSubscriptionValue)\n }\n\n this.overlayActionsTarget.classList.remove(\"hidden\")\n\n this.element.removeAttribute(\"data-uploading\")\n this.element.setAttribute(\"data-upload-error\", \"\")\n\n this.showOverlay()\n\n this.removeButtonTarget.classList.remove(\"group-hover:flex\")\n this.overlayRemoveButtonTarget.classList.add(\"group-hover:flex\")\n\n this.retryButtonTarget.classList.add(\"hidden\", \"group-hover:flex\")\n this.errorTarget.classList.remove(\"hidden\")\n }\n\n showOverlay() {\n this.overlayTarget.classList.remove(\"hidden\")\n this.overlayTarget.classList.add(\"hover:bg-blush-80\")\n this.overlayTarget.querySelector(\"[data-spinner]\").classList.add(\"hidden\")\n }\n\n displayInitialState() {\n this.overlayTarget.classList.remove(\"hidden\")\n\n this.overlayActionsTarget.classList.add(\"hidden\")\n this.overlayTarget.querySelector(\"[data-spinner]\").classList.remove(\"hidden\")\n\n this.retryButtonTarget.classList.add(\"hidden\")\n this.retryButtonTarget.classList.remove(\"group-hover:flex\")\n\n this.overlayRemoveButtonTarget.classList.remove(\"group-hover:flex\")\n\n this.removeButtonTarget.classList.remove(\"group-hover:flex\")\n this.errorTarget.classList.add(\"hidden\")\n }\n\n get forbidden() {\n return 403\n }\n\n get inputName() {\n return this.inputNameValue || \"attachments[]\"\n }\n}\n"],"names":["DirectUploadStatusCode","responseString","attached_media_controller","Controller","DirectUpload","useToastNotifiers","error","blob","hiddenField","request","event","__publicField"],"mappings":"+SAKA,MAAMA,CAAuB,CAC3B,YAAYC,EAAgB,CAC1B,KAAK,WAAa,OAAO,SAASA,EAAe,MAAM,UAAU,EAAE,CAAC,CAAC,CACzE,CAEE,IAAI,WAAY,CACd,OAAO,KAAK,aAAe,GAC/B,CACA,CAEe,MAAKC,UAASC,CAAW,CAStC,YAAa,CACR,KAAK,YACN,KAAK,OAAS,IAAIC,EAAa,KAAK,YAAY,MAAM,CAAC,EAAG,KAAK,YAAY,QAAQ,gBAAiB,IAAI,GAExG,KAAK,QAAQ,gBAAgB,gBAAgB,EAC7C,KAAK,QAAQ,gBAAgB,mBAAmB,EAChD,KAAK,QAAQ,aAAa,gBAAiB,EAAE,EAC7C,KAAK,cAAc,UAAU,IAAI,QAAQ,EACzC,KAAK,mBAAmB,UAAU,IAAI,kBAAkB,EAE9D,CAEE,SAAU,CACRC,EAAkB,IAAI,EAEnB,KAAK,aACN,KAAK,YAAW,CAEtB,CAEE,aAAc,CACZ,KAAK,QAAQ,aAAa,iBAAkB,EAAE,EAE9C,KAAK,OAAO,OAAO,CAACC,EAAOC,IAAS,CAClC,GAAGD,EACD,KAAK,cAAcA,CAAK,MACnB,CACL,KAAK,QAAQ,gBAAgB,gBAAgB,EAC7C,KAAK,QAAQ,gBAAgB,mBAAmB,EAEhD,KAAK,QAAQ,aAAa,gBAAiB,EAAE,EAE7C,IAAIE,EAAc,SAAS,cAAc,OAAO,EAChDA,EAAY,KAAO,SACnBA,EAAY,MAAQD,EAAK,UACzBC,EAAY,KAAO,GAAG,KAAK,cAAc,cAEzC,KAAK,QAAQ,YAAYA,CAAW,EAEpCA,EAAc,SAAS,cAAc,OAAO,EAC5CA,EAAY,KAAO,SACnBA,EAAY,MAAQD,EAAK,IACzBC,EAAY,KAAO,GAAG,KAAK,cAAc,OAEzC,KAAK,QAAQ,YAAYA,CAAW,CAC5C,CACK,CAAA,CACL,CAEE,aAAc,CACZ,KAAK,oBAAmB,EACxB,KAAK,YAAW,CACpB,CAEE,QAAS,CACP,KAAK,SAAS,UAAW,CACvB,OAAQ,KAAK,OACd,CAAA,EAED,KAAK,QAAQ,OAAM,CACvB,CAIE,iCAAiCC,EAAS,CACxCA,EAAQ,OAAO,iBACb,WACAC,GAAS,KAAK,wBAAwBA,CAAK,CACjD,CACA,CAEE,wBAAwBA,EAAO,CAC1BA,EAAM,SAAWA,EAAM,QACxB,KAAK,cAAc,UAAU,IAAI,QAAQ,EACzC,KAAK,mBAAmB,UAAU,IAAI,kBAAkB,EAE9D,CAEE,cAAcJ,EAAO,CACA,IAAIN,EAAuBM,CAAK,EAErC,WACZ,KAAK,sBAAsB,KAAK,wBAAwB,EAG1D,KAAK,qBAAqB,UAAU,OAAO,QAAQ,EAEnD,KAAK,QAAQ,gBAAgB,gBAAgB,EAC7C,KAAK,QAAQ,aAAa,oBAAqB,EAAE,EAEjD,KAAK,YAAW,EAEhB,KAAK,mBAAmB,UAAU,OAAO,kBAAkB,EAC3D,KAAK,0BAA0B,UAAU,IAAI,kBAAkB,EAE/D,KAAK,kBAAkB,UAAU,IAAI,SAAU,kBAAkB,EACjE,KAAK,YAAY,UAAU,OAAO,QAAQ,CAC9C,CAEE,aAAc,CACZ,KAAK,cAAc,UAAU,OAAO,QAAQ,EAC5C,KAAK,cAAc,UAAU,IAAI,mBAAmB,EACpD,KAAK,cAAc,cAAc,gBAAgB,EAAE,UAAU,IAAI,QAAQ,CAC7E,CAEE,qBAAsB,CACpB,KAAK,cAAc,UAAU,OAAO,QAAQ,EAE5C,KAAK,qBAAqB,UAAU,IAAI,QAAQ,EAChD,KAAK,cAAc,cAAc,gBAAgB,EAAE,UAAU,OAAO,QAAQ,EAE5E,KAAK,kBAAkB,UAAU,IAAI,QAAQ,EAC7C,KAAK,kBAAkB,UAAU,OAAO,kBAAkB,EAE1D,KAAK,0BAA0B,UAAU,OAAO,kBAAkB,EAElE,KAAK,mBAAmB,UAAU,OAAO,kBAAkB,EAC3D,KAAK,YAAY,UAAU,IAAI,QAAQ,CAC3C,CAEE,IAAI,WAAY,CACd,MAAO,IACX,CAEE,IAAI,WAAY,CACd,OAAO,KAAK,gBAAkB,eAClC,CACA,CAvIEK,EADkBT,EACX,SAAS,CACd,oBAAqB,OACrB,UAAW,OACX,OAAQ,CAAE,KAAM,QAAS,QAAS,EAAI,CAC1C,GAEES,EAPkBT,EAOX,UAAU,CAAC,QAAS,UAAW,eAAgB,sBAAuB,QAAS,cAAe,gBAAgB"}