{ "version": 3, "sources": ["../../page/buy.js"], "sourcesContent": ["\"use strict\"\n\nimport * as App from '../app/app~fv=cw_byBD8.min.js';\nimport '../pkg/urlform~fv=VhWyOSvq.min.js'; // Namespaced as 'URLForm'.\n\n/**\n@typedef {import ('../pkg/urlformjs/urlform.js').FormParameters} FormParameters\n@typedef {import ('../pkg/urlformjs/urlform.js').FormOptions} FormOptions\n*/\n\n/**@type {FormOptions}*/\nconst FormOptions = {\n\t\"id\": \"buyMore\",\n\t/**@type {FormParameters}*/\n\t\"FormParameters\": [{\n\t\t\t\"name\": \"id\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"first_name\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"last_name\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"organization\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"email\",\n\t\t},\n\t\t{\n\t\t\t\"name\": \"number_of_labels\",\n\t\t\t\"type\": \"number\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"label_size\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"additional_info\"\n\t\t},\n\t],\n}\n\n// All required fields in the buy form. Fields not specified are optional.\nconst required = [\"first_name\", \"last_name\", \"email\"]\n\nApp.AddOnload(BuyOnLoad)\n\n/**\nBuyOnLoad sets up the buy page on page load.\n@returns {void} \n*/\nasync function BuyOnLoad() {\n\tlet initedFormOptions = URLForm.Init(FormOptions)\n\n\tdocument.getElementById('submitBuyForm').addEventListener('click', async () => {\n\t\tlet form = URLForm.GetForm(initedFormOptions)\n\t\t// console.debug(form)\n\n\t\t// Check that all required fields exist\n\t\tfor (let field of required) {\n\t\t\tif (!(field in form)) {\n\t\t\t\tlet err = `Field ${field} is required.`\n\t\t\t\tconsole.debug(err)\n\t\t\t\tApp.Error(err)\n\t\t\t}\n\t\t}\n\n\t\tif (!validateEmail(form.email)) {\n\t\t\tApp.Error(`Email is not a valid address ${form.email}`)\n\t\t}\n\n\t\t// Submit email\n\t\tlet formData = new(FormData)\n\t\tformData.append('pr', JSON.stringify(form))\n\t\tformData.append('email', \"buy@cyphr.me\")\n\t\tlet rjson = await App.FetchPost(App.API.Post.PurchaseOrder, formData)\n\t\t// console.debug(rjson)\n\t\tif (!rjson.success) {\n\t\t\tApp.Error(\"Submitting the order failed. Please try again, or email buy@cyphr.me .\")\n\t\t}\n\t\t// Default server msg from email endpoints is: Email sent successfully.\n\t\t// Check your inbox. This particular endpoint is sent to a cyphr.me email,\n\t\t// so users do not have an email in their inbox. Use custom success msg.\n\t\tApp.Notification(\"Your purchase request was received.\", \"success\")\n\t})\n}\n\n/**\nvalidateEmail returns whether the given email valid format. Solution from:\nhttps://stackoverflow.com/questions/46155/how-can-i-validate-an-email-address-in-javascript\n\nTODO maybe move to helpers or app?\n@param {string} email\n@returns {boolean}\n*/\nfunction validateEmail(email) {\n\tif (typeof email !== \"string\") {\n\t\treturn false\n\t}\n\tlet re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/ // Prevents matching multiple @ signs.\n\tlet matches = email.toLowerCase().match(re)\n\tif (isEmpty(matches)) {\n\t\treturn false\n\t}\n\treturn matches.includes(email)\n}"], "mappings": "AAEA,UAAYA,MAAS,gCACrB,MAAO,oCAQP,MAAMC,EAAc,CACnB,GAAM,UAEN,eAAkB,CAAC,CACjB,KAAQ,IACT,EACA,CACC,KAAQ,YACT,EACA,CACC,KAAQ,WACT,EACA,CACC,KAAQ,cACT,EACA,CACC,KAAQ,OACT,EACA,CACC,KAAQ,mBACR,KAAQ,QACT,EACA,CACC,KAAQ,YACT,EACA,CACC,KAAQ,iBACT,CACD,CACD,EAGMC,EAAW,CAAC,aAAc,YAAa,OAAO,EAEpDF,EAAI,UAAUG,CAAS,EAMvB,eAAeA,GAAY,CAC1B,IAAIC,EAAoB,QAAQ,KAAKH,CAAW,EAEhD,SAAS,eAAe,eAAe,EAAE,iBAAiB,QAAS,SAAY,CAC9E,IAAII,EAAO,QAAQ,QAAQD,CAAiB,EAI5C,QAASE,KAASJ,EACjB,GAAI,EAAEI,KAASD,GAAO,CACrB,IAAIE,EAAM,SAASD,iBACnB,QAAQ,MAAMC,CAAG,EACjBP,EAAI,MAAMO,CAAG,CACd,CAGIC,EAAcH,EAAK,KAAK,GAC5BL,EAAI,MAAM,gCAAgCK,EAAK,OAAO,EAIvD,IAAII,EAAW,IAAI,SACnBA,EAAS,OAAO,KAAM,KAAK,UAAUJ,CAAI,CAAC,EAC1CI,EAAS,OAAO,QAAS,cAAc,GAC3B,MAAMT,EAAI,UAAUA,EAAI,IAAI,KAAK,cAAeS,CAAQ,GAEzD,SACVT,EAAI,MAAM,wEAAwE,EAKnFA,EAAI,aAAa,sCAAuC,SAAS,CAClE,CAAC,CACF,CAUA,SAASQ,EAAcE,EAAO,CAC7B,GAAI,OAAOA,GAAU,SACpB,MAAO,GAER,IAAIC,EAAK,6BACLC,EAAUF,EAAM,YAAY,EAAE,MAAMC,CAAE,EAC1C,OAAI,QAAQC,CAAO,EACX,GAEDA,EAAQ,SAASF,CAAK,CAC9B", "names": ["App", "FormOptions", "required", "BuyOnLoad", "initedFormOptions", "form", "field", "err", "validateEmail", "formData", "email", "re", "matches"] }