PageSourceSearch

https://internetstiftelsen.se/app/themes/internetstiftelsen/assets/dist/Whois-DruvZ0Bt.js

js internetstiftelsen.se collected 2026-10-02 02:15:04 UTC 22,517 bytes, 277 lines download raw bytes

vendor: 4,337 bytes, line 1
1var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);import{g as getDefaultExportFromCjs,s as stringToNode}from"./site-Ccdaelcg.js";import{G as Gator}from"./gator-VUsfyu8U.js";import{B as Button,t as template}from"./template-B2OJZp1Y.js";import{o as objToQuery}from"./objToQuery-5XcApM6g.js";import{W as WidgetInstance}from"./index-YzPQyqFi.js";var punycode_1,hasRequiredPunycode;function requirePunycode(){if(hasRequiredPunycode)return punycode_1;hasRequiredPunycode=1;const maxInt=2147483647,base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,delimiter="-",regexPunycode=/^xn--/,regexNonASCII=/[^\0-\x7F]/,regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g,errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode;function error(type){throw new RangeError(errors[type])}function map(array,callback){const result=[];let length=array.length;for(;length--;)result[length]=callback(array[length]);return result}function mapDomain(domain,callback){const parts=domain.split("@");let result="";parts.length>1&&(result=parts[0]+"@",domain=parts[1]),domain=domain.replace(regexSeparators,".");const labels=domain.split("."),encoded=map(labels,callback).join(".");return result+encoded}function ucs2decode(string){const output=[];let counter=0;const length=string.length;for(;counter<length;){const value=string.charCodeAt(counter++);if(value>=55296&&value<=56319&&counter<length){const extra=string.charCodeAt(counter++);(extra&64512)==56320?output.push(((value&1023)<<10)+(extra&1023)+65536):(output.push(value),counter--)}else output.push(value)}return output}const ucs2encode=codePoints=>String.fromCodePoint(...codePoints),basicToDigit=function(codePoint){return codePoint>=48&&codePoint<58?26+(codePoint-48):codePoint>=65&&codePoint<91?codePoint-65:codePoint>=97&&codePoint<123?codePoint-97:base},digitToBasic=function(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)},adapt=function(delta,numPoints,firstTime){let k=0;for(delta=firstTime?floor(delta/damp):delta>>1,delta+=floor(delta/numPoints);delta>baseMinusTMin*tMax>>1;k+=base)delta=floor(delta/baseMinusTMin);return floor(k+(baseMinusTMin+1)*delta/(delta+skew))},decode=function(input){const output=[],inputLength=input.length;let i=0,n=initialN,bias=initialBias,basic=input.lastIndexOf(delimiter);basic<0&&(basic=0);for(let j=0;j<basic;++j)input.charCodeAt(j)>=128&&error("not-basic"),output.push(input.charCodeAt(j));for(let index=basic>0?basic+1:0;index<inputLength;){const oldi=i;for(let w=1,k=base;;k+=base){index>=inputLength&&error("invalid-input");const digit=basicToDigit(input.charCodeAt(index++));digit>=base&&error("invalid-input"),digit>floor((maxInt-i)/w)&&error("overflow"),i+=digit*w;const t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digit<t)break;const baseMinusT=base-t;w>floor(maxInt/baseMinusT)&&error("overflow"),w*=baseMinusT}const out=output.length+1;bias=adapt(i-oldi,out,oldi==0),floor(i/out)>maxInt-n&&error("overflow"),n+=floor(i/out),i%=out,output.splice(i++,0,n)}return String.fromCodePoint(...output)},encode=function(input){const output=[];input=ucs2decode(input);const inputLength=input.length;let n=initialN,delta=0,bias=initialBias;for(const currentValue of input)currentValue<128&&output.push(stringFromCharCode(currentValue));const basicLength=output.length;let handledCPCount=basicLength;for(basicLength&&output.push(delimiter);handledCPCount<inputLength;){let m=maxInt;for(const currentValue of input)currentValue>=n&&currentValue<m&&(m=currentValue);const handledCPCountPlusOne=handledCPCount+1;m-n>floor((maxInt-delta)/handledCPCountPlusOne)&&error("overflow"),delta+=(m-n)*handledCPCountPlusOne,n=m;for(const currentValue of input)if(currentValue<n&&++delta>maxInt&&error("overflow"),currentValue===n){let q=delta;for(let k=base;;k+=base){const t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q<t)break;const qMinusT=q-t,baseMinusT=base-t;output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0))),q=floor(qMinusT/baseMinusT)}
1output.push(stringFromCharCode(digitToBasic(q,0))),bias=adapt(delta,handledCPCountPlusOne,handledCPCount===basicLength),delta=0,++handledCPCount}++delta,++n}return output.join("")};return punycode_1={version:"2.3.1",ucs2:{decode:ucs2decode,encode:ucs2encode},decode,encode,toASCII:function(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})},toUnicode:function(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})}},punycode_1}var punycodeExports=requirePunycode();const punycode=getDefaultExportFromCjs(punycodeExports);function formToObj(element){const data={},inputs=element.querySelectorAll("input,select");return[].forEach.call(inputs,input=>{const name=input.getAttribute("name"),{value}=input,type=input.getAttribute("type");(type==="checkbox"&&input.checked||type!=="checkbox"&&value&&value.length)&&(data[name]=value)}),data}function api(endpoint,data=null,method="POST",appendData={}){return fetch(`/wp-json/iis/v1/${endpoint}`,{method,credentials:"same-origin",body:data?objToQuery(data):null,headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then(response=>{if(response.status>299)throw new Error(response.statusText);return response}).then(response=>response.json()).then(json=>{if(json.http_code&&parseInt(json.http_code,10)>299)throw new Error("Unexpected response");return json}).then(json=>({...json,...appendData}))}function stripHtml(input){const dummy=document.createElement("div");return dummy.innerHTML=input.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/"/g,"&quot;"),dummy.textContent||dummy.innerText}function readMore(attr,value,text){return`
2		<button type="button" data-${attr}="${value}" class="iis-a-button iis-a-button--lemon-light iis-a-button--small iis-a-button--icon whois-button u-nowrap">
3			<span class="iis-a-button__text">${text}</span>
4			<svg class="icon iis-a-button__icon"><use xlink:href="#icon-arrow-forwards"></use></svg>
5		</button>
6	`}const detailsTemplate=`<table class="data iis-m-table iis-m-table--lines">
7	<tbody>
8		<tr>
9			<td class="caption">{Iis_Lang.domain_name}</td>
10			<td>{domain}</td>
11		</tr>
12		<tr>
13			<td class="caption">
14				<div class="display-flex align-items-center justify-content-between">
15					<span aria-describedby="holder-tooltip">{Iis_Lang.holder}</span>
16					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="holder-tooltip" role="tooltip">
17						<span class="iis-a-tooltip__text">{Iis_Lang.gdpr_info_1}</span>
18						<svg class="iis-icon iis-a-button__icon"><use xlink:href="#icon-questionmark"></use></svg>
19					</span>
20				</div>
21			</td>
22			<td>{holder}</td>
23		</tr>
24		<tr>
25			<td class="caption">{Iis_Lang.domain_status}</td>
26			<td>{state}</td>
27		</tr>
28		<tr>
29			<td class="caption">
30				<div class="display-flex align-items-center justify-content-between">
31					<span aria-describedby="created-tooltip">{Iis_Lang.created}</span>
32					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="created-tooltip" role="tooltip">
33						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.created_tooltip}</span>
34						<svg class="iis-icon iis-a-button__icon">
35							<use xlink:href="#icon-questionmark"></use>
36						</svg>
37					</span>
38				</div>
39			</td>
40			<td aria-describedby="created-tooltip">
41				{created}
42			</td>
43		</tr>
44		<tr>
45			<td class="caption">
46				<div class="display-flex align-items-center justify-content-between">
47					<span aria-describedby="last-updated-tooltip">{Iis_Lang.last_updated}</span>
48					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="last-updated-tooltip" role="tooltip">
49						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.last_updated_tooltip}</span>
50						<svg class="iis-icon iis-a-button__icon">
51							<use xlink:href="#icon-questionmark"></use>
52						</svg>
53					</span>
54				</div>
55			</td>
56			<td aria-describedby="updated-tooltip">
57				{modified}
58			</td>
59		</tr>
60		<tr>
61			<td class="caption" aria-describedby="expire-date-tooltip">
62				<div class="display-flex align-items-center justify-content-between">
63					<span aria-describedby="expire-date-tooltip">{Iis_Lang.expire_date}</span>
64					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="expire-date-tooltip" role="tooltip">
65						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.expire_date_tooltip}</span>
66						<svg class="iis-icon iis-a-button__icon">
67							<use xlink:href="#icon-questionmark"></use>
68						</svg>
69					</span>
70				</div>
71			</td>
72			<td aria-describedby="expire-date-tooltip">
73				{expires}
74			</td>
75		</tr>
76		<tr>
77			<td class="caption" aria-describedby="deactivation-date-tooltip">
78				<div class="display-flex align-items-center justify-content-between">
79					<span aria-describedby="deactivation-date-tooltip">{Iis_Lang.deactivation_date}</span>
80					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="deactivation-date-tooltip" role="tooltip">
81						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.deactivation_date_tooltip}</span>
82						<svg class="iis-icon iis-a-button__icon">
83							<use xlink:href="#icon-questionmark"></use>
84						</svg>
85					</span>
86				</div>
87			</td>
88			<td aria-describedby="deactivation-date-tooltip">
89				{deactivationdate}
90			</td>
91		</tr>
92
93		<tr>
94			<td class="caption" aria-describedby="transferred-date-tooltip">
95				<div class="display-flex align-items-center justify-content-between">
96					<span aria-describedby="transferred-date-tooltip">{Iis_Lang.transferred_date}</span>
97					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="transferred-date-tooltip" role="tooltip">
98						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.transferred_date_tooltip}</span>
99						<svg class="iis-icon iis-a-button__icon">
100							<use xlink:href="#icon-questionmark"></use>
101						</svg>
102					</span>
103				</div>
104			</td>
105			<td>{transferred}</td>
106		</tr>
107		<tr>
108			<td class="caption" aria-describedby="deletion-date-tooltip">
109				<div class="display-flex align-items-center justify-content-between">
110					<span aria-describedby="deletion-date-tooltip">{Iis_Lang.deletion_date}</span>
111					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="deletion-date-tooltip" role="tooltip">
112						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.deletion_date_tooltip}</span>
113						<svg class="iis-icon iis-a-button__icon">
114							<use xlink:href="#icon-questionmark"></use>
115						</svg>
116					</span>
117				</div>
118			</td>
119			<td aria-describedby="deletion-date-tooltip">
120				{date_to_delete}
121			</td>
122		</tr>
123		<tr>
124			<td class="caption" aria-describedby="release-date-tooltip">
125				<div class="display-flex align-items-center justify-content-between">
126					<span aria-describedby="release-date-tooltip">{Iis_Lang.release_date}</span>
127					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="release-date-tooltip" role="tooltip">
128						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.release_date_tooltip}</span>
129						<svg class="iis-icon iis-a-button__icon">
130							<use xlink:href="#icon-questionmark"></use>
131						</svg>
132					</span>
133				</div>
134			</td>
135			<td aria-describedby="release-date-tooltip">
136				{date_to_release}
137			</td>
138		</tr>
139		<tr>
140			<td class="caption">
141				<div class="display-flex align-items-center justify-content-between">
142					<span aria-describedby="name-server-tooltip">{Iis_Lang.name_server}</span>
143					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="name-server-tooltip" role="tooltip">
144						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.name_server_tooltip}</span>
145						<svg class="iis-icon iis-a-button__icon">
146							<use xlink:href="#icon-questionmark"></use>
147						</svg>
148					</span>
149				</div>
150			</td>
151			<td aria-describedby="name-server-tooltip">
152				{nserver}
153			</td>
154		</tr>
155		<tr>
156			<td class="caption">DNSSEC</td>
157			<td>{dnssec}</td>
158		</tr>
159		<tr>
160			<td class="caption" aria-describedby="registry-lock-tooltip">
161				<div class="display-flex align-items-center justify-content-between">
162					<span aria-describedby="registry-lock-tooltip">{Iis_Lang.registry_lock}</span>
163					<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="registry-lock-tooltip" role="tooltip">
164						<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.registry_lock_tooltip}</span>
165						<svg class="iis-icon iis-a-button__icon">
166							<use xlink:href="#icon-questionmark"></use>
167						</svg>
168					</span>
169				</div>
170			</td>
171			<td>{registry-lock}</td>
172		</tr>
173		<tr>
174			<td class="caption">Status</td>
175			<td>{status}</td>
176		</tr>
177		<tr>
178			<td class="caption">Registrar</td>
179			<td>{registrar}</td>
180		</tr>
181		<tr>
182			<td colspan="2" class="caption"><a href="/sok-doman?domain={unicodeDomain}">{Iis_Lang.link_search_result}</a></td>
183		</tr>
184		<tr>
185			<td colspan="2" class="caption"><a href="{Iis_Lang.registrant_reachout_link}?domain={unicodeDomain}">{Iis_Lang.registrant_reachout_text}</a></td>
186		</tr>
187	</tbody>
188</table>
189`,contactTemplate=`<table class="data iis-m-table iis-m-table--lines">
190	<tr>
191		<td class="caption">{Iis_Lang.contact_id}</td>
192		<td>{contact}</td>
193	</tr>
194	<tr>
195		<td class="caption">
196			<div class="display-flex align-items-center justify-content-between">
197				<span aria-describedby="gdpr_2-tooltip">{Iis_Lang.name}</span>
198				<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="gdpr_2-tooltip" role="tooltip">
199					<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.gdpr_info_2}</span>
200					<svg class="iis-icon iis-a-button__icon"><use xlink:href="#icon-questionmark"></use></svg>
201				</span>
202			</div>
203		</td>
204		<td aria-describedby="gdpr_2-tooltip">(not shown)</td>
205	</tr>
206	<tr>
207		<td class="caption">{Iis_Lang.organization}</td>
208		<td>{org}</td>
209	</tr>
210	<tr>
211		<td class="caption">{Iis_Lang.organization_number}</td>
212		<td>{orgno}</td>
213	</tr>
214	<tr>
215		<td class="caption">
216			<div class="display-flex align-items-center justify-content-between">
217				<span aria-describedby="gdpr_3-tooltip">{Iis_Lang.holder_email_address}</span>
218				<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="gdpr_3-tooltip" role="tooltip">
219					<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.gdpr_info_3}</span>
220					<svg class="iis-icon iis-a-button__icon"><use xlink:href="#icon-questionmark"></use></svg>
221				</span>
222			</div>
223		</td>
224		<td aria-describedby="gdpr_3-tooltip">(not shown)</td>
225	</tr>
226	<tr>
227		<td>
228			<div class="display-flex align-items-center justify-content-between">
229				<span aria-describedby="gdpr_4-tooltip">{Iis_Lang.phone}</span>
230				<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="gdpr_4-tooltip" role="tooltip">
231					<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.gdpr_info_4}</span>
232					<svg class="iis-icon iis-a-button__icon"><use xlink:href="#icon-questionmark"></use></svg>
233				</span>
234			</div>
235		</td>
236		<td>(not shown)</td>
237	</tr>
238	<tr>
239		<td class="caption">
240			<div class="display-flex align-items-center justify-content-between">
241				<span aria-describedby="gdpr_5-tooltip">{Iis_Lang.fax}</span>
242				<span tabindex="0" class="iis-a-tooltip iis-a-button iis-a-button--standalone-icon iis-a-button--icon" id="gdpr_5-tooltip" role="tooltip">
243					<span class="iis-a-tooltip__text" data-tooltip>{Iis_Lang.gdpr_info_5}</span>
244					<svg class="iis-icon iis-a-button__icon"><use xlink:href="#icon-questionmark"></use></svg>
245				</span>
246			</div>
247		</td>
248		<td>(not shown)</td>
249	</tr>
250	<tr>
251		<td class="caption">{Iis_Lang.contact_created}</td>
252		<td>{created}</td>
253	</tr>
254	<tr>
255		<td class="caption">{Iis_Lang.contact_last_updated}</td>
256		<td>{modified}</td>
257	</tr>
258	<tr>
259		<td class="caption">Registrar</td>
260		<td>{registrar}</td>
261	</tr>
262</table>
263`;class Whois{constructor(element){__publicField(this,"freeFetched",results=>{this.setState({domains:results.map(result=>({domain:result.content,raw:result.domain}))})});__publicField(this,"onSubmit",e=>{e.preventDefault(),this.search()});__publicField(this,"onDetailsClick",({target})=>
263{const button=new Button(target.closest("[data-whois-details]")),domain=button.button.getAttribute("data-whois-details");button.start(),api("free/whois",{domain},"POST",{inputDomain:domain}).then(this.whoisFetched).catch(()=>this.setState({error:Iis_Lang.whois_unavailable})).finally(()=>button.stop())});__publicField(this,"onContactDetailsClick",({target})=>{new Button(target.closest("[data-whois-contact-details]")).start(),this.widget.reset(),this.widget.start()});__publicField(this,"onRecaptchaError",error=>{this.setState({error:!0})});__publicField(this,"contactDetailsFetched",data=>{const{error}=data;if(error){this.setState({error:Iis_Lang.whois_contact_unavailable});return}if(data.captcharesult!=="verified"){this.setState({error:"Är du en robot?"});return}this.setState({contactDetails:data})});__publicField(this,"whoisFetched",details=>{const{error}=details;if(error){this.setState({error:Iis_Lang.whois_unavailable});return}const detailsDefaults={date_to_delete:"",deactivationdate:"",date_to_release:""};details.holder!=="(not shown)"&&(details.holder=`
264				${details.holder}
265				${readMore("whois-contact-details",`${details.inputDomain}:${details.holder}`,Iis_Lang.view_contact_information)}
266			`),this.setState({details:{...detailsDefaults,...details,unicodeDomain:punycode.toUnicode(details.inputDomain)}})});__publicField(this,"renderDomain",({domain:domainStr,raw})=>{const[status,domain]=domainStr.split(" ").map(str=>str.trim()),color=status!=="free"?"ruby":"jade",statusTexts={free:"is_available",occupied:"is_already_registered",invalid:"invalid_domain",not_valid:"invalid_domain"},statusText=status in statusTexts?statusTexts[status]:"free_unavailable",title=document.createElement("h2");title.className=`color-${color} u-m-t-2`,title.innerText=stripHtml(raw),title.appendChild(stringToNode(` <span class="u-weight-normal">${Iis_Lang[statusText]}</span>`)),status==="occupied"&&title.appendChild(stringToNode(readMore("whois-details",domain,Iis_Lang.view_registration_info)));const wrapper=document.createElement("div");return wrapper.appendChild(title),wrapper.innerHTML});this.state={domains:[],details:null,contactDetails:null},this.element=element,this.form=this.element.querySelector("form"),this.submitBtn=new Button(this.form.querySelector('button[type="submit"]')),this.result=this.element.querySelector("[data-whois-result]");const widgetElement=document.querySelector("#frc-captcha-widget");this.widget=new WidgetInstance(widgetElement,{sitekey:void 0,skipStyleInjection:!0,doneCallback:solution=>{this.doneCallback(solution),widgetElement.dataset.lang==="en"?widgetElement.querySelector(".frc-text").innerHTML="Spam protection done!":widgetElement.querySelector(".frc-text").innerHTML="Spamkontroll utförd!",widgetElement.classList.remove("is-evaluating","has-error")},startedCallback:()=>{widgetElement.dataset.lang==="en"?widgetElement.querySelector(".frc-text").innerHTML="Processing spam protection...":widgetElement.querySelector(".frc-text").innerHTML="Utför spamkontroll...",widgetElement.classList.add("is-evaluating")},errorCallback:()=>{widgetElement.classList.add("has-error")}}),this.attach();const input=this.form.querySelector('input[name="q"]');"iisSearchDomain"in window&&window.iisSearchDomain.length&&(input.value=window.iisSearchDomain),input.value&&input.value.length&&(input.focus(),this.search())}setState(nextState){this.state={...this.state,...nextState},this.render()}attach(){this.form.addEventListener("submit",this.onSubmit),Gator(this.element).on("click","[data-whois-details]",this.onDetailsClick),Gator(this.element).on("click","[data-whois-contact-details]",this.onContactDetailsClick)}search(){this.submitBtn.start(),this.setState({details:null,contactDetails:null,domains:[],error:!1});const{q}=formToObj(this.form),domainParts=stripHtml(q.split(" ").join("").toLowerCase()).split("."),tlds=domainParts.length===1?["se","nu"]:[domainParts.pop()],host=domainParts.join("."),promises=tlds.map(tld=>`${host}.${tld}`).map(domain=>api("free",{domain:punycode.toASCII(domain)},"POST",{domain}));Promise.all(promises).then(this.freeFetched).catch(()=>this.setState({error:Iis_Lang.free_unavailable})).finally(()=>this.submitBtn.stop())}doneCallback(solution){const button=new Button(document.querySelector("[data-whois-contact-details]")),[domain,holder]=button.button.getAttribute("data-whois-contact-details").split(":");api("friendlycaptcha",{solution:encodeURIComponent(solution),holder,domain},"POST",{domain}).then(this.contactDetailsFetched).catch(this.onRecaptchaError).finally(()=>{button.stop()})}render(){this.result.innerHTML="";const{details,error,contactDetails}=this.state;if(error){const errorMsg=typeof error=="string"?error:"Något gick fel.";this.result.innerHTML=`
267				<div role="alert" class="u-m-t-2 iis-m-alert iis-m-alert--error">
268					<p>${errorMsg}</p>
269				</div>
270			`;return}if(details||contactDetails){const tpl=contactDetails?contactTemplate:detailsTemplate,data=contactDetails||details;data.url&&(data.registrar=`<a href="${data.url}" target="_blank">${data.registrar} <svg class="iis-icon iis-o-mega-menu__link__icon"><use xlink:href="#icon-external-link"></use></svg></a>`),this.result.innerHTML=`
271				<div class="iis-table-scroll-wrapper u-m-b-2 u-m-t-4">
272					<div class="iis-scroll-indicator"></div>
273					<div class="iis-table-container">
274						${template(tpl)({Iis_Lang:window.Iis_Lang,...data})}
275					</div>
276				</div>
277			`;return}this.state.domains.length&&this.state.domains.forEach(domain=>{this.result.innerHTML+=this.renderDomain(domain)})}}export{Whois 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.