1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7616],{12868:(e,a,t)=>{t.d(a,{A:()=>r});var n=t(20387);let s={name:"download",size:24,node:[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]};s.node;let r=(0,n.A)(s)},17193:(e,a,t)=>{t.d(a,{Fl:()=>o,RA:()=>l,ds:()=>i});var n=t(71245);let s=[{code:"AX",name:"\xc5land Islands",ibanCountry:"FI"},{code:"GF",name:"French Guiana",ibanCountry:"FR"},{code:"GP",name:"Guadeloupe",ibanCountry:"FR"},{code:"MQ",name:"Martinique",ibanCountry:"FR"},{code:"RE",name:"R\xe9union",ibanCountry:"FR"},{code:"PF",name:"French Polynesia",ibanCountry:"FR"},{code:"TF",name:"French Southern Territories",ibanCountry:"FR"},{code:"YT",name:"Mayotte",ibanCountry:"FR"},{code:"NC",name:"New Caledonia",ibanCountry:"FR"},{code:"BL",name:"Saint Barth\xe9lemy",ibanCountry:"FR"},{code:"MF",name:"Saint Martin (French part)",ibanCountry:"FR"},{code:"PM",name:"Saint Pierre and Miquelon",ibanCountry:"FR"},{code:"WF",name:"Wallis and Futuna",ibanCountry:"FR"},{code:"IM",name:"Isle of Man",ibanCountry:"GB"},{code:"JE",name:"Jersey",ibanCountry:"GB"},{code:"GG",name:"Guernsey",ibanCountry:"GB"}];function r(e){return s.find(a=>a.code===e.toUpperCase())}function o(e){return r(e)?.ibanCountry??e.toUpperCase()}function i(e){let a=r(e);return a?`${a.name} uses the ${a.ibanCountry} IBAN format. This is format coverage only; generated bank and branch details are not targeted to this territory.`:null}let l=[...Object.values(n).map(e=>({code:e.country,name:e.name,ibanCountry:e.country})),...s].sort((e,a)=>e.name.localeCompare(a.name,"en"))},29567:(e,a,t)=>{t.d(a,{$B:()=>u,Vu:()=>c,Yd:()=>m});var n=t(56464),s=t(35183),r=t(86012),o=t(29843),i=t(12868),l=t(93197),d=t(86277);function c(e){let[a,t]=(0,r.useState)([]),[n,s]=(0,r.useState)(null),[o,i]=(0,r.useState)(!1),[c,u]=(0,r.useState)(""),[m,h]=(0,r.useState)(""),p=(0,r.useRef)(!1),[b,y]=(0,r.useState)(null);async function x(){try{let e=await fetch("/api/me",{cache:"no-store"});e.ok&&s((await e.json()).entitlement)}catch{}}async function g(a){if(!p.current){p.current=!0,i(!0),u(""),h(""),t([]),y(null);try{let n=await fetch("/api/"+e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),s=await n.json();if(!n.ok)throw Error(s.error);t(s.records),y(s.meta?.replay?{...s.meta,configuration:a}:null),h(s.meta?.notice||"Your results are ready."),await x()}catch(e){u(e.message)}finally{i(!1),p.current=!1}}}async function j(e){try{await (0,l.Dk)(e),h("Copied.")}catch(e){u(e.message)}}async function v(t){try{await (0,d.L)(a,t,"genory-"+e,b??void 0)}catch(e){u(e.message)}}return(0,r.useEffect)(()=>{let e=setTimeout(()=>{x()},0);return()=>clearTimeout(e)},[]),{records:a,metadata:b,allowance:n,busy:o,error:c,message:m,setError:u,setMessage:h,generate:g,copy:j,download:v}}function u({state:e}){return(0,n.jsxs)("p",{className:"small-text",children:[e.allowance?`${(0,s.VV)(e.allowance.remaining)} records remaining. Up to ${e.allowance.bulk} per request.`:"Guests: 5 records per day, one per request."," ",(0,n.jsx)("a",{href:"/pricing",children:"View plans"})]})}function m({state:e,synthetic:a=!1,compact:t=!1}){let s=Object.keys(e.records[0]||{});return(0,n.jsxs)("section",{className:"result-panel new-tool-results"+(t?" identifier-results":""),children:[(0,n.jsx)("span",{className:"eyebrow",children:a?"SYNTHETIC TEST DATA":"OUTPUT"}),(0,n.jsx)("h2",{children:e.records.length?`${e.records.length} ${1===e.records.length?"result":"results"} ready`:"Your results appear here"}),(0,n.jsx)("p",{role:"status",className:"status",children:e.message}),e.error&&(0,n.jsx)("p",{role:"alert",className:"error",children:e.error}),e.metadata?.replay&&(0,n.jsxs)("p",{className:"small-text",style:{overflowWrap:"anywhere"},children:["Reproducible results \xb7 Seed: ",e.metadata.replay.seed," \xb7 Engine: ",e.metadata.replay.generatorVersion,". JSON downloads include the seed, configuration and data version."]}),e.records.length>0?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"export-actions",children:[(0,n.jsxs)("button",{onClick:()=>e.copy(e.records.map(e=>Object.values(e).join(" ")).join("\n")),children:[(0,n.jsx)(o.A,{size:16}),"Copy values"]}),(0,n.jsxs)("button",{disabled:!e.allowance?.canExport,onClick:()=>e.download("json"),children:[(0,n.jsx)(i.A,{size:16}),"JSON"]}),(0,n.jsxs)("button",{disabled:!e.allowance?.canExport,onClick:()=>e.download("csv"),children:[(0,n.jsx)(i.A,{size:16}),"CSV"]})]}),(0,n.jsx)("div",{className:"table-wrap",tabIndex:0,"aria-label":"Generated results",children:(0,n.jsxs)("table",{children:[(0,n.jsx)("thead",{children:(0,n.jsxs)("tr",{children:[s.map(e=>(0,n.jsx)("th",{children:e},e)),(0,n.jsx)("th",{children:"Copy"})]})}),(0,n.jsx)("tbody",{children:e.records.map((a,t)=>(0,n.jsxs)("tr",{children:[s.map(e=>(0,n.jsx)("td",{children:String(a[e]??"")},e)),(0,n.jsx)("td",{children:(0,n.jsx)("button",{className:"field-copy","aria-label":`Copy result ${t+1}`,onClick:()=>e.copy(Object.values(a).join(" ")),children:(0,n.jsx)(o.A,{size:16})})})]},t))})]})})]}):t?(0,n.jsx)("p",{className:"small-text",children:e.busy?"Generatingâ¦":e.error?"Please try Generate again.":"Select Generate to create your first sample."}):(0,n.jsxs)("div",{className:"empty-state",children:[(0,n.jsx)("span",{className:"empty-symbol",children:"{ }"}),(0,n.jsx)("p",{children:"Choose your settings and select Generate."})]}),(!t||e.records.length>0)&&(0,n.jsxs)("p",{className:"small-text",children:[!t&&"Scroll the table horizontally to see more columns. ","JSON and CSV downloads are included with Pro and Developer. Generated results are not stored."]})]})}},35183:(e,a,t)=>{t.d(a,{IM:()=>s,TG:()=>i,VV:()=>l,hF:()=>o,mu:()=>n,q:()=>c,vw:()=>d});let n={months:12,freeMonths:2},s=Math.round(n.freeMonths/n.months*100);function r(e){return e*(n.months-n.freeMonths)}function o(e){let a=e*n.months,t=r(e);return{original:a,price:t,savings:a-t}}function i(e,a="USD"){return new Intl.NumberFormat("en-US",{style:"currency",currency:a}).format(e/100)}
1function l(e){return null===e?"Unlimited":e.toLocaleString("en")}let d={free:{name:"Free",monthlyCents:0,yearlyCents:0,records:20,bulk:1,presets:1,keys:0,rpm:30},pro:{name:"Pro",monthlyCents:790,get yearlyCents(){return r(this.monthlyCents)},records:5e4,bulk:50,presets:20,keys:0,rpm:30},developer:{name:"Developer",monthlyCents:1990,get yearlyCents(){return r(this.monthlyCents)},records:5e5,bulk:100,presets:100,keys:3,rpm:60}};function c(e,a=Date.now()){let t=function(e,a=Date.now()){return e&&("pro"===e.plan||"developer"===e.plan)&&(!e.paid_started_at||new Date(e.paid_started_at).getTime()<=a)&&(!0===e.subscription_unlimited&&null===e.paid_until||new Date(e.paid_until).getTime()>a)?e.plan:"free"}(e,a),n=new Date(e?.paid_started_at??a).getTime(),s="free"===t?new Date(a).toISOString().slice(0,10):`${e.paid_started_at}:${Math.floor(Math.max(0,a-n)/2592e6)}`,r=e?.role==="admin"&&!0===e.unlimited_generation,o="free"!==t&&e?.subscription_unlimited===!0&&null===e.paid_until,i="free"===t?864e5*Math.floor(a/864e5)+864e5:Math.min(n+(Math.floor(Math.max(0,a-n)/2592e6)+1)*2592e6,o?1/0:new Date(e.paid_until).getTime());return{plan:t,adFree:"free"!==t,canExport:"free"!==t,apiEnabled:"developer"===t,...d[t],unlimitedGeneration:r,unlimitedSubscription:o,records:r?null:e?d[t].records:5,period:s,resetAt:r?null:new Date(i).toISOString(),paidUntil:"free"===t?null:e.paid_until}}},39024:(e,a,t)=>{t.d(a,{A:()=>r});var n=t(20387);let s={name:"trash",size:24,node:[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],aliases:["trash-2"]};s.node;let r=(0,n.A)(s)},42136:(e,a,t)=>{t.d(a,{g:()=>r,z:()=>o});var n=t(56464),s=t(62948);let r={scenario:"valid",seed:""};function o({value:e,onChange:a,paid:t,scenarios:r=!0,fixture:i=!1}){return(0,n.jsxs)("details",{children:[(0,n.jsx)("summary",{children:"Test scenarios and reproducible results"}),r&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{children:["Test scenario",(0,n.jsx)("select",{value:e.scenario,disabled:i,onChange:t=>a({...e,scenario:t.target.value}),children:s.SG.map(e=>(0,n.jsxs)("option",{value:e,disabled:"mixed"===e&&!t,children:[s.OI[e],"mixed"===e?" \xb7 Pro":""]},e))})]}),(0,n.jsx)("p",{className:"small-text",children:i?"Published examples always use the valid scenario.":"valid"===e.scenario?"Standard generation: all available validation checks must pass.":"Intentionally invalid IBANs are for testing rejection. A test case may fail additional checks as a consequence."})]}),(0,n.jsxs)("label",{children:["Seed (optional)",(0,n.jsx)("input",{value:e.seed,maxLength:80,placeholder:"Leave blank for fresh random data",onChange:t=>a({...e,seed:t.target.value})})]}),(0,n.jsx)("p",{className:"small-text",children:"The same seed, settings and generator/data versions reproduce the same results. Seeds are for test data, never passwords."}),(e.generatorVersion||e.dataVersion)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("p",{className:"small-text",children:"This preset requires its saved generator and data versions."}),(0,n.jsx)("button",{type:"button",className:"text-button",onClick:()=>a({...e,generatorVersion:void 0,dataVersion:void 0}),children:"Use current versions"})]})]})}},55756:(e,a,t)=>{t.d(a,{A:()=>r});var n=t(20387);let s={name:"arrow-down",size:24,node:[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]};s.node;let r=(0,n.A)(s)},59962:(e,a,t)=>{t.d(a,{U5:()=>s,Uw:()=>r,tI:()=>o});var n=t(6355);let s="genory.iban-test-cases",r=n.Ikc({createdAt:n.aig(),cases:n.YOg(n.Ikc({iban:n.YjP().max(128),expectedValid:n.zMY().optional(),expectedError:n.YjP().max(40).nullable().optional()})).min(1).max(1e3)});function o(e){let a=r.parse({createdAt:Date.now(),cases:e.map(e=>({iban:e.iban,expectedValid:"boolean"==typeof e.expectedValid?e.expectedValid:void 0,expectedError:e.expectedError??null}))});sessionStorage.setItem(s,JSON.stringify(a)),location.assign("/tools/iban-validator")}},62251:(e,a,t)=>{t.d(a,{A:()=>r});var n=t(20387);let s={name:"arrow-up",size:24,node:[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]};s.node;let r=(0,n.A)(s)},62948:(e,a,t)=>{t.d(a,{Fx:()=>i,OI:()=>r,SG:()=>s});var n=t(6355);
1let s=["valid","invalid-checksum","wrong-length","invalid-characters","mixed"],r={valid:"Valid IBAN","invalid-checksum":"Invalid checksum","wrong-length":"Wrong length","invalid-characters":"Invalid characters",mixed:"Mixed test cases"},o={seed:n.YjP().trim().max(80).default(""),generatorVersion:n.YjP().max(80).optional(),dataVersion:n.YjP().max(80).optional()},i=n.Ikc({scenario:n.k5n(s).default("valid"),...o})},73660:(e,a,t)=>{t.d(a,{l:()=>o});var n=t(56464),s=t(86012),r=t(24915);function o({country:e,enabled:a,value:t,onChange:i}){let[l,d]=(0,s.useState)([]),[c,u]=(0,s.useState)(""),[m,h]=(0,s.useState)(!1),[p,b]=(0,s.useState)("");(0,s.useEffect)(()=>{if(u(""),d([]),b(""),!a)return;let t=new AbortController;return h(!0),fetch("/api/iban/banks?country="+encodeURIComponent(e),{signal:t.signal}).then(async e=>{let a=await e.json();if(!e.ok)throw Error(a.error);return a.banks}).then(d).catch(e=>{t.signal.aborted||b(e.message)}).finally(()=>{t.signal.aborted||h(!1)}),()=>t.abort()},[e,a]);let y=e=>e.normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase(),x=y(c).trim().split(/\s+/).filter(Boolean),g=l.filter(e=>x.every(a=>y([e.bankName,e.bankCode,e.bic,e.city,e.postalCode,e.country,e.countryName].filter(Boolean).join(" ")).includes(a))),j=l.find(e=>e.bankCode===t),v=j&&!g.some(e=>e.bankCode===t)?[j,...g]:g;return(0,n.jsxs)("div",{className:"bank-picker",children:[(0,n.jsxs)("div",{className:"bank-picker-heading",children:[(0,n.jsx)("strong",{children:"Choose a bank"}),(0,n.jsx)("span",{className:"badge",children:"PRO"})]}),a?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{children:["Search banks",(0,n.jsx)("input",{type:"search",maxLength:100,value:c,onChange:e=>u(e.target.value),placeholder:"Bank name, city, country, code or postal code",disabled:m})]}),(0,n.jsxs)("label",{children:["Bank",(0,n.jsxs)("select",{className:"country-select",value:t,onChange:e=>i(e.target.value),disabled:m||!!p,children:[(0,n.jsx)("option",{value:"",children:"Automatic selection"}),v.map(e=>(0,n.jsxs)("option",{value:e.bankCode,children:[(0,r.R)(e.country)," ",e.bankName," \xb7 ",e.bankCode," \xb7 ",e.country,e.city?" \xb7 "+e.city:"",e.postalCode?" "+e.postalCode:""]},e.bankCode))]})]}),(0,n.jsx)("p",{className:"small-text",role:"status",children:m?"Loading supported banksâ¦":p||(l.length?`${g.length} matching ${1===g.length?"bank":"banks"}. Only supported banks are listed; city and postal data may be unavailable.`:"Automatic IBAN test data is available. Choosing a bank is not yet supported for this country.")})]}):(0,n.jsxs)("p",{className:"small-text",children:["Automatic bank selection is included. ",(0,n.jsx)("a",{href:"/pricing",children:"Upgrade to Pro"})," to choose a supported bank and search by name, city, country, code or postal code."]})]})}},80560:(e,a,t)=>{t.d(a,{A:()=>r});var n=t(20387);let s={name:"plus",size:24,node:[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]};s.node;let r=(0,n.A)(s)},86277:(e,a,t)=>{t.d(a,{L:()=>s});var n=t(93197);async function s(e,a,s,r){let o=await fetch("/api/export-access",{cache:"no-store"}),i=await o.json();if(!o.ok)throw Error(i.error||"Pro access is required for file exports.");let{toCSV:l}=await t.e(8671).then(t.bind(t,58671)),d="json"===a?JSON.stringify(r?{records:e,meta:r}:e,null,2):"csv"===a?l(e):(0,n.F7)(e),c=URL.createObjectURL(new Blob([d],{type:"json"===a?"application/json":"csv"===a?"text/csv;charset=utf-8":"text/plain;charset=utf-8"})),u=document.createElement("a");u.href=c,u.download=`${s}.${a}`,u.click(),setTimeout(()=>URL.revokeObjectURL(c),1e3)}},97616:(e,a,t)=>{t.r(a),t.d(a,{DatasetBuilder:()=>S});var n=t(56464),s=t(86012),r=t(62251),o=t(55756),i=t(39024),l=t(80560),d=t(42136),c=t(73660),u=t(17193),m=t(6355),h=t(55913),p=t(62948);let b=["firstName","lastName","fullName","email","country","uuid","integer","decimal","date","choice","boolean","street","houseNumber","city","region","postalCode","addressQuality","iban","bankName","bic","ibanCountry","bankWarning","scenario","expectedValid","expectedError"],y=m.YjP().regex(/^\d{4}-\d{2}-\d{2}$/).refine(e=>Number.isFinite(Date.parse(e))&&new Date(e).toISOString().slice(0,10)===e,"Use a valid date (YYYY-MM-DD)."),x=m.Ikc({name:m.YjP().trim().min(1).max(40).regex(/^[A-Za-z][A-Za-z0-9_]*$/,"Column names must start with a letter and contain letters, numbers or underscores.").refine(e=>!["__proto__","constructor","prototype"].includes(e),"Reserved column name"),type:m.k5n(b),min:m.aig().min(-1e9).max(1e9).default(0),max:m.aig().min(-1e9).max(1e9).default(100),decimals:m.aig().int().min(0).max(4).default(2),from:y.default("2020-01-01"),to:y.default("2030-12-31"),choices:m.YOg(m.YjP().trim().min(1).max(100)).max(50).default([])}).superRefine((e,a)=>{if(["integer","decimal"].includes(e.type)){let t="integer"===e.type?1:10**e.decimals;Math.ceil(e.min*t)>Math.floor(e.max*t)&&a.addIssue({code:"custom",message:`${e.name}
1: the range contains no values at this precision.`})}"date"===e.type&&e.from>e.to&&a.addIssue({code:"custom",message:`${e.name}: start date must not be after end date.`}),"choice"!==e.type||e.choices.length||a.addIssue({code:"custom",message:`${e.name}: enter at least one choice.`})}),g=m.Ikc({tool:m.euz("dataset").default("dataset"),...p.Fx.shape,bankCountry:m.YjP().refine(e=>u.RA.some(a=>a.code===e),"Unsupported IBAN country or territory").default("DE"),bankCode:m.YjP().trim().min(1).max(30).optional(),country:m.YjP().refine(e=>h.X.some(a=>a.code===e),"Unsupported country").default("DE"),columns:m.YOg(x).min(1).max(20)}).superRefine((e,a)=>{new Set(e.columns.map(e=>e.name.toLowerCase())).size!==e.columns.length&&a.addIssue({code:"custom",message:"Column names must be unique (ignoring case)."})}),j=e=>e.map(([e,a])=>({name:e,type:a})),v=[{id:"onboarding",name:"Customer onboarding",options:g.parse({country:"DE",bankCountry:"DE",columns:j([["name","fullName"],["email","email"],["street","street"],["houseNumber","houseNumber"],["city","city"],["postalCode","postalCode"],["country","country"],["addressQuality","addressQuality"],["iban","iban"],["bank","bankName"],["bic","bic"],["bankWarning","bankWarning"]])})},{id:"payment",name:"Payment form testing",options:g.parse({country:"DE",bankCountry:"DE",columns:j([["iban","iban"],["bank","bankName"],["bic","bic"],["ibanCountry","ibanCountry"],["bankWarning","bankWarning"]])})},{id:"validation",name:"IBAN validation tests",options:g.parse({country:"DE",bankCountry:"DE",columns:j([["iban","iban"],["scenario","scenario"],["expectedValid","expectedValid"],["expectedError","expectedError"],["bankWarning","bankWarning"]])})}];var f=t(59962),C=t(24915),k=t(29567);let N={firstName:"First name",lastName:"Last name",fullName:"Full name",email:"Test email",country:"Country code",uuid:"UUID",integer:"Whole number",decimal:"Decimal number",date:"Date",choice:"Pick from a list",boolean:"True / false",street:"Synthetic street",houseNumber:"House number",city:"City",region:"Region",postalCode:"Postal code",addressQuality:"Address coverage",iban:"IBAN",bankName:"Bank name",bic:"BIC / SWIFT",ibanCountry:"IBAN country",bankWarning:"Bank coverage / warning",scenario:"Test scenario",expectedValid:"Expected valid",expectedError:"Expected error code"},w=(e,a)=>({name:e,type:a,min:0,max:100,decimals:2,from:"2020-01-01",to:"2030-12-31",choices:[]});function S(){let e=(0,k.Vu)("dataset"),[a,t]=(0,s.useState)(d.g),[m,p]=(0,s.useState)("DE"),[y,x]=(0,s.useState)(""),[j,S]=(0,s.useState)([]),[E,A]=(0,s.useState)("DE"),[M,I]=(0,s.useState)(1),[F,D]=(0,s.useState)([w("name","fullName"),w("email","email"),w("country","country")]),[V,T]=(0,s.useState)(""),[R,P]=(0,s.useState)(!1),[B,_]=(0,s.useState)(!1);function O(e,a){D(t=>t.map((t,n)=>n===e?{...t,...a}:t))}function U(e,a){D(t=>{let n=[...t];return[n[e],n[e+a]]=[n[e+a],n[e]],n})}function $(){return{...g.parse({tool:"dataset",country:E,columns:F,bankCountry:m,bankCode:y||void 0,...a}),amount:M}}async function G(){if(!R){e.setError(""),P(!0);try{let a=$();if(!V.trim())throw Error("Enter a preset name.");let t=await fetch("/api/presets",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:V,options:a})}),n=await t.json();if(!t.ok)throw Error(n.error);e.setMessage("Configuration saved to your dashboard. Generated rows were not saved.")}catch(a){e.setError(a.message)}finally{P(!1)}}}(0,s.useEffect)(()=>{let a=!0,n=new URLSearchParams(location.search).get("preset");return n?(fetch("/api/dashboard").then(async s=>{let r=await s.json();if(!s.ok)throw Error(r.error);let o=r.presets.find(e=>e.id===n);if(!o||"dataset"!==o.options.tool)throw Error("Dataset preset not found.");let i=g.parse(o.options);a&&(D(i.columns),A(i.country),t({scenario:i.scenario,seed:i.seed,generatorVersion:i.generatorVersion,dataVersion:i.dataVersion}),p(i.bankCountry),x(i.bankCode||""),I(o.options.amount||1),e.setMessage("Preset loaded. Select Generate to create fresh data."))}).catch(t=>{a&&e.setError(t.message)}).finally(()=>{a&&_(!0)}),()=>{a=!1}):void _(!0)},[]);let Y=F.some(e=>["iban","bankName","bic","ibanCountry","bankWarning","scenario","expectedValid","expectedError"].includes(e.type));return(0,n.jsxs)("div",{className:"dataset-workspace",children:[(0,n.jsxs)("form",{className:"panel dataset-control
1s",onSubmit:a=>{a.preventDefault();try{let a=$();S(a.columns),e.generate(a)}catch(a){e.setError(a.message)}},children:[(0,n.jsxs)("div",{className:"section-heading",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{className:"eyebrow",children:"BUILD YOUR DATASET"}),(0,n.jsx)("h2",{children:"Choose the columns you need."})]}),(0,n.jsxs)("span",{className:"badge",children:[F.length," / 20 columns"]})]}),(0,n.jsxs)("label",{children:["Start from a template",(0,n.jsxs)("select",{defaultValue:"",onChange:n=>{var s;let r;s=n.target.value,(r=v.find(e=>e.id===s))&&("validation"===r.id&&e.allowance?.canExport&&I(e=>Math.max(4,e)),D(r.options.columns),A(r.options.country),p(r.options.bankCountry),x(""),t({...d.g,seed:a.seed,scenario:"validation"===r.id&&e.allowance?.canExport?"mixed":"valid"}),e.setMessage("Template applied. Adjust settings and generate a new dataset.")),n.target.value=""},children:[(0,n.jsx)("option",{value:"",children:"Choose a template"}),v.map(e=>(0,n.jsx)("option",{value:e.id,children:e.name},e.id))]})]}),(0,n.jsxs)("div",{className:"dataset-settings",children:[(0,n.jsxs)("label",{children:["Name locale / country",(0,n.jsx)("select",{className:"country-select",value:E,onChange:e=>A(e.target.value),children:h.X.map(e=>(0,n.jsxs)("option",{value:e.code,children:[e.name," ",(0,C.R)(e.code)]},e.code))})]}),(0,n.jsxs)("label",{children:["Number of rows",(0,n.jsx)("input",{type:"number",min:1,max:e.allowance?.bulk??1,value:M,onChange:e=>I(Number(e.target.value)),required:!0})]})]}),(0,n.jsx)(k.$B,{state:e}),Y&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("label",{children:["Banking country or territory",(0,n.jsx)("select",{value:m,onChange:e=>{p(e.target.value),x("")},children:u.RA.map(e=>(0,n.jsxs)("option",{value:e.code,children:[e.name," \xb7 ",e.ibanCountry," format"]},e.code))})]}),(0,u.ds)(m)&&(0,n.jsx)("p",{className:"coverage-note",children:(0,u.ds)(m)}),(0,n.jsx)(c.l,{country:m,enabled:!!e.allowance?.canExport,value:y,onChange:x}),(0,n.jsx)("p",{className:"small-text",children:"Bank fields share one source per row. Missing bank data stays empty. Add the Bank coverage / warning field to include validation limits in exports. Name locale and banking country are separate settings."})]}),(0,n.jsx)(d.z,{value:a,onChange:e=>{t(e),"mixed"===e.scenario&&I(e=>Math.max(4,e))},paid:!!e.allowance?.canExport,scenarios:Y}),(0,n.jsx)("div",{className:"dataset-columns",children:F.map((e,a)=>(0,n.jsxs)("fieldset",{className:"dataset-column",children:[(0,n.jsxs)("legend",{children:["Column ",a+1]}),(0,n.jsxs)("div",{className:"dataset-column-top",children:[(0,n.jsxs)("label",{children:["Column name",(0,n.jsx)("input",{"aria-label":`Column ${a+1} name`,value:e.name,maxLength:40,pattern:"[A-Za-z][A-Za-z0-9_]*",required:!0,onChange:e=>O(a,{name:e.target.value})})]}),(0,n.jsxs)("label",{children:["Data type",(0,n.jsx)("select",{"aria-label":`Column ${a+1} type`,value:e.type,onChange:e=>O(a,{type:e.target.value}),children:b.map(e=>(0,n.jsx)("option",{value:e,children:N[e]},e))})]}),(0,n.jsxs)("div",{className:"column-actions",children:[(0,n.jsx)("button",{type:"button","aria-label":`Move column ${a+1} up`,disabled:0===a,onClick:()=>U(a,-1),children:(0,n.jsx)(r.A,{size:17})}),(0,n.jsx)("button",{type:"button","aria-label":`Move column ${a+1} down`,disabled:a===F.length-1,onClick:()=>U(a,1),children:(0,n.jsx)(o.A,{size:17})}),(0,n.jsx)("button",{type:"button","aria-label":`Remove column ${a+1}`,disabled:1===F.length,onClick:()=>D(e=>e.filter((e,t)=>t!==a)),children:(0,n.jsx)(i.A,{size:17})})]})]}),["integer","decimal"].includes(e.type)&&(0,n.jsxs)("div",{className:"dataset-settings",children:[(0,n.jsxs)("label",{children:["Minimum",(0,n.jsx)("input",{type:"number",step:"any",min:-1e9,max:1e9,value:e.min,required:!0,onChange:e=>O(a,{min:Number(e.target.value)})})]}),(0,n.jsxs)("label",{children:["Maximum",(0,n.jsx)("input",{type:"number",step:"any",min:-1e9,max:1e9,value:e.max,required:!0,onChange:e=>O(a,{max:Number(e.target.value)})})]}),"decimal"===e.type&&(0,n.jsxs)("label",{children:["Decimal places",(0,n.jsx)("input",{type:"number",min:0,max:4,value:e.decimals,required:!0,onChange:e=>O(a,{decimals:Number(e.target.value)})})]})]}),"date"===e.type&&(0,n.jsxs)("div",{className:"dataset-settings",children:[(0,n.jsxs)("label",{children:["From",(0,n.jsx)("input",{type:"date",value:e.from,required:!0,onChange:e=>O(a,{from:e.target.value})})]}),(0,n.jsxs)("label",{children:["To",(0,n.jsx)("input",{type:"date",value:e.to,required:!0,onChange:e=>O(a,{to:e.target.value})})]})]}),"choice"===e.type&&(0,n.jsxs)("label",{children:["Choices (one per line)",(0,n.jsx)("textarea",{rows:3,maxLength:5050,value:e.choices.join("\n"),required:!0,onChange:e=>O(a,{choices:e.target.value.split("\n")})})]})]},a))}),(0,n.jsxs)("div",{className:"dataset-buttons",children:[(0,n.jsxs)("button",{type:"button",className:"button secondary",disabled:F.length>=20,onClick:()=>{let e=F.length+1;for(;F.some(a=>a.name===`field_${e}`);)e++;D([...F,w(`field_${e}`,"integer")])},children:[(0,n.jsx)(l.A,{size:17}),"Add column"]}),(0,n.jsx)("button",{className:"button primary",disabled:!B||e.busy,children:e.busy?"Generatingâ¦":"Generate dataset"})]}),(0,n.jsx)("p",{className:"small-text",children:"Names and email local parts match within each row. Test emails use example.com. Generated rows are not stored. Number ranges and date ranges include both endpoints. Dates use UTC."}
1),(0,n.jsxs)("details",{className:"dataset-presets",children:[(0,n.jsx)("summary",{children:"Save this configuration"}),(0,n.jsx)("p",{className:"small-text",children:"Sign in to save column settings within your planâs preset limit. Choice lists are part of the saved configuration; use synthetic values only."}),(0,n.jsxs)("label",{children:["Preset name",(0,n.jsx)("input",{value:V,maxLength:80,onChange:e=>T(e.target.value)})]}),(0,n.jsx)("button",{type:"button",className:"button secondary",disabled:R||!B,onClick:G,children:R?"Savingâ¦":"Save preset"})]})]}),(0,n.jsxs)("div",{style:{minWidth:0},children:[e.records.length>0&&j.some(e=>"iban"===e.type)&&(0,n.jsx)("button",{className:"button secondary",onClick:()=>{try{let a=e=>j.find(a=>a.type===e)?.name;(0,f.tI)(e.records.map(e=>({iban:e[a("iban")],expectedValid:a("expectedValid")?e[a("expectedValid")]:void 0,expectedError:a("expectedError")?e[a("expectedError")]:null})))}catch{e.setError("Could not transfer results. Include expected outcome columns for a full comparison.")}},children:"Validate IBAN results"}),(0,n.jsx)(k.Yd,{state:e,synthetic:!0})]})]})}}}]);
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.