1(function() { 2 try { 3 var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}; 4 e.SENTRY_RELEASE = { id: "9bd7631" }; 5 var n = new e.Error().stack; 6 n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "bf4b55ef-b624-49ab-b66d-b5880003f32e", e._sentryDebugIdIdentifier = "sentry-dbid-bf4b55ef-b624-49ab-b66d-b5880003f32e"); 7 } catch (e) {} 8})(); 9import { n as __esmMin } from "./rolldown-runtime-C0oiEAqH.js"; 10import { Bs as Checkbox, Ct as AlertDescription, Dt as init_alert, Hs as Input, Qi as init_routes, St as AlertContent, Tt as AlertIcon, Us as init_input, Vs as init_checkbox, ar as bulk_path, bt as Alert, gn as init_label, hn as Label, ht as init_textarea, lr as bulk_verifications_path, mt as Textarea, xt as AlertActions } from "./controllers-CPhb1bs8.js"; 11import { l as unsafeCast } from "./type-guards-CYLeUmJ9.js"; 12import { i as require_compiler_runtime, t as require_jsx_runtime } from "./jsx-runtime-BypSXy5Z.js"; 13import { t as require_react } from "./react-CRpDT2aV.js"; 14import { n as init_icon, t as Icon } from "./icon-DZ9gyktL.js"; 15import { r as init_button, t as Button } from "./button-iG-phgd_.js"; 16import { cn as PageHeader, dn as PageHeaderBreadcrumbItem, fn as PageHeaderBreadcrumbLink, gn as init_page_header, hn as PageHeaderTitle, pn as PageHeaderHeading, un as PageHeaderBreadcrumb } from "./turbo-mount-GISyszOC.js"; 17import { a as init_dist, l as router, s as usePage, t as Head_default } from "./dist-mxJwmrVG.js"; 18import { n as useFlashMessages, t as init_useFlashMessages } from "./useFlashMessages-B9GgFsvq.js"; 19import { n as useLegacyBodyClass, t as init_useLegacyBodyClass } from "./useLegacyBodyClass-hQaEXYU1.js"; 20import { n as init_InfoPopover, t as InfoPopover } from "./InfoPopover-D6qs3TLW.js"; 21import { n as init_FileUploadArea, t as FileUploadArea } from "./FileUploadArea-Cp79rv4g.js"; 22//#region app/frontend/pages/BulkVerifications/New.tsx 23function New() { 24 const $ = (0, import_compiler_runtime.c)(49); 25 const { props } = usePage(); 26 useFlashMessages(props.flash); 27 useLegacyBodyClass("bulk_verifications new"); 28 const [name, setName] = (0, import_react.useState)(""); 29 const [emails, setEmails] = (0, import_react.useState)(""); 30 const [file, setFile] = (0, import_react.useState)(null); 31 const [withSources, setWithSources] = (0, import_react.useState)(false); 32 const [processing, setProcessing] = (0, import_react.useState)(false); 33 let t0; 34 if ($[0] !== emails || $[1] !== file || $[2] !== name || $[3] !== processing || $[4] !== withSources) { 35 t0 = function onSubmit(event) { 36 event.preventDefault(); 37 if (processing) return; 38 window.App?.analytics?.ga_track("Bulk Email Verification", "Creation"); 39 setProcessing(true); 40 const bulkVerification = { 41 name, 42 emails, 43 with_sources: withSources ? "1" : "0" 44 }; 45 if (file) bulkVerification.file = file; 46 router.post(bulk_verifications_path(), { bulk_verification: unsafeCast(bulkVerification) }, { onFinish: () => setProcessing(false) }); 47 }; 48 $[0] = emails; 49 $[1] = file; 50 $[2] = name; 51 $[3] = processing; 52 $[4] = withSources; 53 $[5] = t0; 54 } else t0 = $[5]; 55 const onSubmit = t0; 56 let t1; 57 if ($[6] === Symbol.for("react.memo_cache_sentinel")) { 58 t1 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Head_default, { title: "New Bulk Email Verifier" }); 59 $[6] = t1; 60 } else t1 = $[6]; 61 let t2; 62 if ($[7] === Symbol.for("react.memo_cache_sentinel")) { 63 t2 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PageHeaderBreadcrumbItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PageHeaderBreadcrumbLink, { 64 href: bulk_path(), 65 children: "Bulks" 66 }) }); 67 $[7] = t2; 68 } else t2 = $[7]; 69 let t3; 70 if ($[8] === Symbol.for("react.memo_cache_sentinel")) { 71 t3 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PageHeader, { 72 notFull: true, 73 className: "mb-2", 74 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PageHeaderHeading, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PageHeaderBreadcrumb, { children: [t2, /* @__P
74URE__ */ (0, import_jsx_runtime.jsx)(PageHeaderBreadcrumbItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PageHeaderBreadcrumbLink, { 75 href: bulk_verifications_path(), 76 children: "Email Verifier" 77 }) })] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PageHeaderTitle, { children: "New" })] }) 78 }); 79 $[8] = t3; 80 } else t3 = $[8]; 81 let t4; 82 if ($[9] === Symbol.for("react.memo_cache_sentinel")) { 83 t4 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Label, { 84 htmlFor: "list-name-field", 85 children: [ 86 "List name", 87 " ", 88 /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { 89 className: "grey", 90 id: "list-name-field-hint", 91 children: "Must be 3â256 characters" 92 }) 93 ] 94 }); 95 $[9] = t4; 96 } else t4 = $[9]; 97 let t5; 98 if ($[10] === Symbol.for("react.memo_cache_sentinel")) { 99 t5 = (event_0) => setName(event_0.target.value); 100 $[10] = t5; 101 } else t5 = $[10]; 102 let t6; 103 if ($[11] !== name) { 104 t6 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, { 105 fullWidth: true, 106 type: "text", 107 id: "list-name-field", 108 placeholder: "List name", 109 autoFocus: true, 110 required: true, 111 minLength: 3, 112 maxLength: 256, 113 "aria-describedby": "list-name-field-hint", 114 value: name, 115 onChange: t5 116 }); 117 $[11] = name; 118 $[12] = t6; 119 } else t6 = $[12]; 120 let t7; 121 if ($[13] === Symbol.for("react.memo_cache_sentinel")) { 122 t7 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 123 id: "bulk-upload", 124 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { children: "Enter your list of email addresses" }) 125 }); 126 $[13] = t7; 127 } else t7 = $[13]; 128 let t8; 129 if ($[14] === Symbol.for("react.memo_cache_sentinel")) { 130 t8 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Label, { 131 htmlFor: "bulk_verification_emails", 132 children: ["Enter the email addresses ", /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { 133 className: "grey", 134 children: "(comma-separated or one per line)" 135 })] 136 }); 137 $[14] = t8; 138 } else t8 = $[14]; 139 let t9; 140 if ($[15] === Symbol.for("react.memo_cache_sentinel")) { 141 t9 = (event_1) => setEmails(event_1.target.value); 142 $[15] = t9; 143 } else t9 = $[15]; 144 let t10; 145 if ($[16] !== emails) { 146 t10 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Textarea, { 147 id: "bulk_verification_emails", 148 rows: 3, 149 placeholder: "[email protected]\[email protected]\n...", 150 value: emails, 151 onChange: t9 152 }); 153 $[16] = emails; 154 $[17] = t10; 155 } else t10 = $[17]; 156 let t11; 157 if ($[18] === Symbol.for("react.memo_cache_sentinel")) { 158 t11 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Label, { 159 htmlFor: "select-file", 160 children: ["Or load the list from a file ", /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { 161 className: "grey", 162 children: "(CSV or TXT)" 163 })] 164 }); 165 $[18] = t11; 166 } else t11 = $[18]; 167 let t12; 168 if ($[19] === Symbol.for("react.memo_cache_sentinel")) { 169 t12 = ["csv", "txt"]; 170 $[19] = t12; 171 } else t12 = $[19]; 172 let t13; 173 if ($[20] === Symbol.for("react.memo_cache_sentinel")) { 174 t13 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { icon: "folder-open" }); 175 $[20] = t13; 176 } else t13 = $[20]; 177 let t14; 178 if ($[21] !== file) { 179 t14 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 180 className: "mt-4", 181 children: [t11, /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(FileUploadArea, { 182 file, 183 onFileChange: setFile, 184 acceptedExtensions: t12, 185 maxSize: MAX_FILE_SIZE, 186 inputId: "select-file", 187 children: [t13, "Select a file"] 188 })] 189 }); 190 $[21] = file; 191 $[22] = t14; 192 } else t14 = $[22]; 193 let t15; 194 let t16; 195 if ($[23] === Symbol.for("react.memo_cache_sentinel")) { 196 t15 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 197 className: "help-block", 198 children: "If your file contains multiple columns, we'll automatically detect the one containing the email addresses." 199 }); 200 t16 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { id: "file-name-container" }); 201 $[23] = t15; 202 $[24] = t16; 203 } else { 204 t15 = $[23]; 205 t16 = $[24]; 206 } 207 let t17; 208 if ($[25] === Symbol.for("react.memo_cache_sentinel")) { 209 t17 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}); 210 $[25] = t17; 211 } else t17 = $[25]; 212 let t18; 213 if ($[26] === Symbol.for("react.memo_cache_sentinel")) { 214 t18 = (event_2) => setWithSources(event_2.target.checked); 215 $[26] = t18; 216 } else t18 = $[26]; 217 let t19; 218 if ($[27] !== withSources) { 219 t19 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Checkbox, { 220 id: "with-sources-field", 221 checked: withSources, 222 onChange: t18 223 }); 224 $[27] = withSources; 225 $[28] = t19; 226 } else t19 = $[28]; 227 const t20 = withSources ? "check-square" : "square"; 228 let t21; 229 if ($[29] !== t20) { 230 t21 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 231 variant: "solid", 232 icon: t20, 233 className: "checkbox-icon" 234 }); 235 $[29] = t20; 236 $[30] = t21; 237 } else t21 = $[30]; 238 let t22; 239 if ($[31] !== t19 || $[32] !== t21) { 240 t22 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { 241 className: "checkbox-container", 242 htmlFor: "with-sources-field", 243 children: [ 244 t19, 245 t21, 246 "Include the sources in the result" 247 ] 248 }); 249 $[31] = t19; 250 $[32] = t21; 251 $[33] = t22; 252 } else t22 = $[33]; 253 let t23; 254 if ($[34] === Symbol.for("react.memo_cache_sentinel")) { 255 t23 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InfoPopover, { 256 side: "top", 257 children: "If this option is checked, the URLs of the sources will be included in additional columns. Only the active sources where the email address can still be found are returned." 258 }); 259 $[34] = t23; 260 } else t23 = $[34]; 261 let t24; 262 if ($[35] !== t22) { 263 t24 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 264 id: "bulk-filters", 265 children: [ 266 t17, 267 t22, 268 t23 269 ] 270 }); 271 $[35] = t22; 272 $[36] = t24; 273 } else t24 = $[36]; 274 let t25; 275 if ($[37] !== processing || $[38] !== props.checkoutHref || $[39] !== props.emailVerificationsLimit || $[40] !== props.firstHintLabel) { 276 t25 = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 277 className: "button-container",
278 children: props.emailVerificationsLimit <= 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Alert, { 279 variant: "warning", 280 className: "mt-4", 281 children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertIcon, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { 282 icon: "triangle-exclamation", 283 className: "h-alert__icon" 284 }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(AlertContent, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertDescription, { children: "You've reached the limit of email verifications included in your plan. Please upgrade to a higher plan to process this task." }), props.checkoutHref && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertActions, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, { 285 asChild: true, 286 variant: "primary", 287 size: "sm", 288 className: "ml-1", 289 children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { 290 href: props.checkoutHref, 291 children: "Get more credits" 292 }) 293 }) })] })] 294 }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, { 295 variant: "primary", 296 size: "lg", 297 type: "submit", 298 disabled: processing, 299 children: processing ? "Uploadingâ¦" : "Upload" 300 }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { 301 className: "button-container-hint", 302 children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: props.firstHintLabel }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: "Duplicate email addresses will be skipped." })] }) 303 })] }) 304 }); 305 $[37] = processing; 306 $[38] = props.checkoutHref; 307 $[39] = props.emailVerificationsLimit; 308 $[40] = props.firstHintLabel; 309 $[41] = t25; 310 } else t25 = $[41]; 311 let t26; 312 if ($[42] !== onSubmit || $[43] !== t10 || $[44] !== t14 || $[45] !== t24 || $[46] !== t25 || $[47] !== t6) { 313 t26 = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [t1, /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { 314 className: "board-box board-box--unboxed mb-0", 315 children: [t3, /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", { 316 id: "bulk-verification-form", 317 onSubmit, 318 children: [ 319 t4, 320 t6, 321 t7, 322 t8, 323 t10, 324 t14, 325 t15, 326 t16, 327 t24, 328 t25 329 ] 330 })] 331 })] }); 332 $[42] = onSubmit; 333 $[43] = t10; 334 $[44] = t14; 335 $[45] = t24; 336 $[46] = t25; 337 $[47] = t6; 338 $[48] = t26; 339 } else t26 = $[48]; 340 return t26; 341} 342var import_compiler_runtime, import_react, import_jsx_runtime, MAX_FILE_SIZE; 343function init_New() { 344 return (init_New = __esmMin((() => { 345 import_compiler_runtime = require_compiler_runtime(); 346 import_react = require_react(); 347 init_dist(); 348 init_alert(); 349 init_button(); 350 init_checkbox(); 351 init_icon(); 352 init_input(); 353 init_label(); 354 init_textarea(); 355 init_page_header(); 356 init_routes(); 357 init_FileUploadArea(); 358 init_InfoPopover(); 359 init_useFlashMessages(); 360 init_useLegacyBodyClass(); 361 import_jsx_runtime = require_jsx_runtime(); 362 MAX_FILE_SIZE = 1e7; 363 })))(); 364} 365//#endregion 366init_New(); 367export { New as default };
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.