@intenque/network-sdk 2.2.0-beta.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +67 -1
- package/README.md +6 -5
- package/dist/capture/index.cjs +1 -1
- package/dist/capture/index.js +1 -1
- package/dist/cli/index.js +20 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/{constants-LVhc0PNb.d.cts → constants-BJeva5wC.d.cts} +1 -1
- package/dist/{constants-LVhc0PNb.d.ts → constants-BJeva5wC.d.ts} +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +9 -9
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +2 -2
- package/dist/react/index.js.map +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +14 -9
- package/dist/server/index.d.ts +14 -9
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
package/dist/react/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { S as SiteChannel } from '../constants-
|
|
4
|
-
export { D as DEFAULT_CDN_BASE, M as MANIFEST_SCHEMA_MAJOR, a as SDK_VERSION } from '../constants-
|
|
3
|
+
import { S as SiteChannel } from '../constants-BJeva5wC.cjs';
|
|
4
|
+
export { D as DEFAULT_CDN_BASE, M as MANIFEST_SCHEMA_MAJOR, a as SDK_VERSION } from '../constants-BJeva5wC.cjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Trusted root public keys — spec §4.5 (`rootPublicKeys`, "an array to allow overlap").
|
|
@@ -18,12 +18,12 @@ export { D as DEFAULT_CDN_BASE, M as MANIFEST_SCHEMA_MAJOR, a as SDK_VERSION } f
|
|
|
18
18
|
* bump. Removing an old root is a **major** (§4.5 "Root rotation").
|
|
19
19
|
* 4. Add the same entry to `MANIFEST_ROOT_PUBLIC_KEYS` on the hub, certify the manifest key under the new root.
|
|
20
20
|
*
|
|
21
|
-
* `rootPublicKeys`
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* `
|
|
26
|
-
*
|
|
21
|
+
* `rootPublicKeys` was EMPTY up to 2.2.0-beta.2 (no production root existed; a site that did not pass
|
|
22
|
+
* `manifestRootKeys` trusted no manifest and rendered nothing). 2.2.0 ships the first production root `root-2026`.
|
|
23
|
+
* The development root below is exported separately and is only ever referenced explicitly (`network-sdk init
|
|
24
|
+
* --root-keys …` writes it into `manifestRootKeys` of the site's `network.config.js`); it must never be merged into
|
|
25
|
+
* `rootPublicKeys`, because its private key lives on a developer machine and the dev bucket (`network-dev/v1`) is
|
|
26
|
+
* not production content.
|
|
27
27
|
*/
|
|
28
28
|
type RootPublicKey = {
|
|
29
29
|
kid: string;
|
|
@@ -34,7 +34,7 @@ type RootPublicKey = {
|
|
|
34
34
|
y: string;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
/** Production roots (
|
|
37
|
+
/** Production roots (§4.5). `root-2026`: generated offline 2026-11-10, shipped in SDK 2.2.0. */
|
|
38
38
|
declare const rootPublicKeys: readonly RootPublicKey[];
|
|
39
39
|
/**
|
|
40
40
|
* The DEVELOPMENT root (hub `.env` `MANIFEST_ROOT_PUBLIC_KEYS`, dev bucket `network-dev/v1`, kid `root-dev-a01e0d`).
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { S as SiteChannel } from '../constants-
|
|
4
|
-
export { D as DEFAULT_CDN_BASE, M as MANIFEST_SCHEMA_MAJOR, a as SDK_VERSION } from '../constants-
|
|
3
|
+
import { S as SiteChannel } from '../constants-BJeva5wC.js';
|
|
4
|
+
export { D as DEFAULT_CDN_BASE, M as MANIFEST_SCHEMA_MAJOR, a as SDK_VERSION } from '../constants-BJeva5wC.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Trusted root public keys — spec §4.5 (`rootPublicKeys`, "an array to allow overlap").
|
|
@@ -18,12 +18,12 @@ export { D as DEFAULT_CDN_BASE, M as MANIFEST_SCHEMA_MAJOR, a as SDK_VERSION } f
|
|
|
18
18
|
* bump. Removing an old root is a **major** (§4.5 "Root rotation").
|
|
19
19
|
* 4. Add the same entry to `MANIFEST_ROOT_PUBLIC_KEYS` on the hub, certify the manifest key under the new root.
|
|
20
20
|
*
|
|
21
|
-
* `rootPublicKeys`
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* `
|
|
26
|
-
*
|
|
21
|
+
* `rootPublicKeys` was EMPTY up to 2.2.0-beta.2 (no production root existed; a site that did not pass
|
|
22
|
+
* `manifestRootKeys` trusted no manifest and rendered nothing). 2.2.0 ships the first production root `root-2026`.
|
|
23
|
+
* The development root below is exported separately and is only ever referenced explicitly (`network-sdk init
|
|
24
|
+
* --root-keys …` writes it into `manifestRootKeys` of the site's `network.config.js`); it must never be merged into
|
|
25
|
+
* `rootPublicKeys`, because its private key lives on a developer machine and the dev bucket (`network-dev/v1`) is
|
|
26
|
+
* not production content.
|
|
27
27
|
*/
|
|
28
28
|
type RootPublicKey = {
|
|
29
29
|
kid: string;
|
|
@@ -34,7 +34,7 @@ type RootPublicKey = {
|
|
|
34
34
|
y: string;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
/** Production roots (
|
|
37
|
+
/** Production roots (§4.5). `root-2026`: generated offline 2026-11-10, shipped in SDK 2.2.0. */
|
|
38
38
|
declare const rootPublicKeys: readonly RootPublicKey[];
|
|
39
39
|
/**
|
|
40
40
|
* The DEVELOPMENT root (hub `.env` `MANIFEST_ROOT_PUBLIC_KEYS`, dev bucket `network-dev/v1`, kid `root-dev-a01e0d`).
|
package/dist/react/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {createContext,useRef,useEffect,useState,useContext,useCallback,useMemo}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Je=createContext(null),Q=createContext(null),ee=createContext(null);function $n(e){return jsx(Je.Provider,{value:e.config,children:e.children})}function V(e){let n=useContext(Je);return e??n}var F="2.2.0-beta.1",We=2,pe="https://inr-network-public.nyc3.cdn.digitaloceanspaces.com/network/v1";var ge={medium:"network",campaign:"cross-promo"},Xe=1e4,ne=2e3,ye=1e3,ze=300,ke=.5,Ye=864e5,qe=2e4,be=24,Ze=8,he=4096,Qe=10,en=64,j={webdriver:1,noLanguages:2,zeroPlugins:4,headlessUa:8,noOuterWindow:16},nn=["sig_fail","rev_rollback","stale_cache","fallback_invalid","fallback_key_expired","sitekey_from_fallback","sdk_outdated"];function tn(e,n,t){return `${e.replace(/\/+$/,"")}/${t==="preview"?"preview/":""}sites/${n}/manifest.json`}var te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Fn(e){let n="";for(let t=0;t<e.length;t+=3){let r=e[t]<<16|(e[t+1]??0)<<8|(e[t+2]??0);n+=te[r>>18]+te[r>>12&63],t+1<e.length&&(n+=te[r>>6&63]),t+2<e.length&&(n+=te[r&63]);}return n}function re(e){try{return crypto.getRandomValues(new Uint8Array(e))}catch{return null}}function rn(e=re){let n=e(16);if(!n||n.length<16)return null;n[6]=n[6]&15|64,n[8]=n[8]&63|128;let t=Array.from(n.subarray(0,16),r=>r.toString(16).padStart(2,"0")).join("");return `${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}function on(e,n,t,r=re){let i=g=>Number.isInteger(g)&&g>=0&&g<=65535,o=Math.floor(t/6e4);if(!i(e)||!i(n)||!(o>=0&&o<=4294967295))return null;let s=r(16);if(!s||s.length<16)return null;let a=new Uint8Array(24);return a[0]=e>>>8,a[1]=e&255,a[2]=n>>>8,a[3]=n&255,a[4]=o>>>24,a[5]=o>>>16&255,a[6]=o>>>8&255,a[7]=o&255,a.set(s.subarray(0,16),8),Fn(a)}function ve(e,n){let t=e.indexOf("#"),r=t<0?e:e.slice(0,t),i=t<0?"":e.slice(t),o=r.indexOf("?"),s=o<0?[]:r.slice(o+1).split("&").filter(a=>a!==""&&a.split("=")[0]!=="inr");return s.push(`${"inr"}=${n}`),`${o<0?r:r.slice(0,o)}?${s.join("&")}${i}`}var we=[],jn=[{kid:"root-dev-a01e0d",jwk:{kty:"EC",crv:"P-256",x:"4dO5Ybuh3aMQMYvVUYd82CZ2y-tM2wM4SeunZvxMKHQ",y:"Tw6MyboNkggXo9jV7_Tng8tCGNMin7Dxuept8AY0Anc"}}];var Hn=["section","container","heading","accentWord","subheading","grid","card","imageBox","image","placeholder","body","name","meta","description","button","buttonIcon"],sn=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function an(e){return !!e&&/^(localhost|.+\.localhost|127\.0\.0\.1|\[::1\]|::1)$/i.test(e)}function Gn(e){try{return !!e&&an(new URL(e).hostname)}catch{return false}}function Se(e,n,t){return e.channel!=="preview"&&(e.dev||an(n))&&!Gn(t)}function Jn(e){let n=sn(e.fallback)?e.fallback:null,t=n&&typeof n.site=="string"?n.site:"",r=typeof e.siteKey=="string"&&e.siteKey?e.siteKey:t,i=e.channel==="preview"?"preview":"production",o=n&&typeof n.cdnBase=="string"?n.cdnBase:void 0,s=n&&sn(n.analytics)?n.analytics:null,a=s&&typeof s.endpoint=="string"?s.endpoint:null,g=e.dev===true,p=Se({dev:g,channel:i},void 0,a)?null:a,y=e.consentMode==="require-consent"?"require-consent":"session-default";return {siteKey:r,siteKeyFromFallback:!e.siteKey&&!!t,channel:i,manifestUrl:e.manifestUrl??tn(e.cdnBase??o??pe,r,i),fallback:e.fallback,roots:e.manifestRootKeys??we,consent:e.consent,consentMode:y,theme:e.theme??{},unstyled:e.unstyled===true,verifySignature:e.verifySignature!==false,allowInsecureFallback:e.allowInsecureFallback===true,dev:g,onEvent:e.onEvent,capture:{siteKey:r,endpoint:p,consent:e.consent,consentMode:y}}}function ln(e,n,t){let r=o=>{try{t?.(o);}catch{}return o};try{if(location.protocol=="https:"&&/^http:/i.test(e))return r(!1)}catch{}try{if(navigator.sendBeacon(e,n))return r(!0)}catch{}let i=o=>fetch(e,{method:"POST",mode:"no-cors",keepalive:o,credentials:"omit",body:n});try{return i(!0).then(()=>r(!0),()=>{try{if(document.visibilityState=="visible")return void i(!1).then(()=>r(!0),()=>r(!1))}catch{}r(!1);}),!0}catch{return r(false)}}var dn={now:()=>Date.now(),random:re,roll:()=>Math.random(),send:ln,later:(e,n)=>{let t=setTimeout(e,n);return ()=>clearTimeout(t)},doc:()=>typeof document>"u"?void 0:document,win:()=>typeof window>"u"?void 0:window,nav:()=>typeof navigator>"u"?void 0:navigator,host:()=>typeof location>"u"?void 0:location.hostname,IO:()=>typeof IntersectionObserver=="function"?IntersectionObserver:void 0},cn=e=>({el:e,inter:false,since:null,ms:0,seen:false,fv:null}),un=e=>Math.min(Ye,Math.max(0,Math.round(e))),fn=e=>typeof e=="number"&&e>0?Math.min(qe,Math.round(e)):0,Wn=.005,Xn=new Set(nn);function zn(e,n){let t=0;try{e&&(e.webdriver===!0&&(t|=j.webdriver),(!e.languages||e.languages.length===0)&&(t|=j.noLanguages),e.plugins&&e.plugins.length===0&&(t|=j.zeroPlugins),/HeadlessChrome/.test(e.userAgent??"")&&(t|=j.headlessUa)),n&&n.outerWidth===0&&n.outerHeight===0&&(t|=j.noOuterWindow);}catch{}return t}function Yn(e){let n=[];for(let t of e){let r=t==="sig_revoked"?"sig_fail":t;Xn.has(r)&&!n.includes(r)&&n.push(r);}return n.slice(0,Ze)}var R=e=>{try{e();}catch{}};function mn(e,n){let t=rn(n.random);if(!t)return null;let r=e.manifest.analytics,i=Math.round(n.now()),o=r.enabled&&r.impressions&&r.samplePermille>0&&n.roll()*1e3<r.samplePermille?1:0,s=zn(n.nav(),n.win()),a=Yn(e.flags),g=e.rr!==null&&(a.includes("rev_rollback")||a.includes("stale_cache"))?e.rr:null,p=()=>{try{return e.withhold?.()===!0}catch{return true}},y=new Map,b=cn(null),c=[],k=[],h=false,v=0,f="",x="",d=null,w=null,S=false,I=false,L=false,fe=true,Ve=(l,m,u)=>{if(m)l.since===null&&(l.since=u,l.fv===null&&(l.fv=un(u-i)));else if(l.since!==null){let E=Math.max(0,u-l.since);l.ms+=E,E>=ye&&(l.seen=true),l.since=null;}},Fe=(l,m)=>{if(!l)return {seen:false,ms:0,fv:null};let u=l.since===null?0:Math.max(0,m-l.since);return {seen:l.seen||u>=ye,ms:un(l.ms+u),fv:l.fv}},N=()=>{let l=n.now(),m=L&&fe&&n.doc()?.visibilityState==="visible",u=false;for(let E of y.values()){let T=m&&E.inter&&E.el!==null;u=u||T,Ve(E,T,l);}Ve(b,m&&(b.inter||u),l),b.fv!==null&&!h&&!w&&!S&&(w=n.later(()=>R(()=>{w=null,S=!0,N(),K("timer");}),Xe));},On=l=>{for(let m of l){let u=b.el===m.target?b:[...y.values()].find(E=>E.el===m.target);u&&(u.inter=m.isIntersecting&&m.intersectionRatio>=ke-Wn);}N();},je=l=>({v:2,k:e.manifest.site,pv:t,r:e.manifest.revision,src:e.src,sdk:F,tok:r.token,sp:r.samplePermille,smp:o,t:Math.round(l),hd:p()?0:s,m:i}),He=(l,m,u=null)=>n.send(`${r.endpoint.replace(/\/+$/,"")}/${l}`,JSON.stringify(m),E=>R(()=>e.onSignal(l,E,u))),Bn=(l,m)=>JSON.stringify([l.seen,l.ms>=ze,m.map(u=>[u.seen,u.fv!==null])]),K=l=>{if(!L||!d||v>=Qe||h&&l==="timer")return false;let m=n.now(),u=Fe(b,m);if(b.fv===null||u.ms<1)return false;let E=k.map((U,de)=>({id:U,pos:de,...Fe(y.get(U),m)})),T=JSON.stringify([u,E]);if(h&&T===f)return false;let z=Bn(u,E);if(h&&l==="click"&&z===x)return false;w?.(),w=null,h=true,v+=1,f=T,x=z;let O=n.win(),$={...je(m),items:E,ss:u.seen,sm:u.ms,vp:p()?{w:0,h:0}:{w:fn(O?.innerWidth),h:fn(O?.innerHeight)},why:l};if(a.length&&($.fl=a),g!==null&&($.rr=g),JSON.stringify($).length>he){let U=E.filter(de=>de.fv!==null);for($.items=U;JSON.stringify($).length>he&&U.length;)U.pop();}return He("impression",$,l),true},Ge=()=>{let l=n.IO(),m=n.doc(),u=n.win();if(!I||L||!l||!m)return;L=true,d??=new l(O=>R(()=>On(O)),{threshold:ke}),b.el&&d.observe(b.el);for(let O of y.values())O.el&&d.observe(O.el);let E=()=>R(()=>{N(),m.visibilityState==="hidden"&&K("hidden");}),T=()=>R(()=>{N(),K("pagehide"),fe=!1,N();}),z=()=>R(()=>{fe=!0,N();});m.addEventListener("visibilitychange",E),u?.addEventListener("pagehide",T),u?.addEventListener("pageshow",z),c.push(()=>m.removeEventListener("visibilitychange",E),()=>u?.removeEventListener("pagehide",T),()=>u?.removeEventListener("pageshow",z)),N();};return {pv:t,m:i,smp:o,hd:s,get sent(){return h},setOrder(l){k=l.slice(0,be);},pos(l){let m=k.indexOf(l.id);return m>=0?m:Math.min(Math.max(0,l.position),be-1)},observe(l,m){R(()=>{let u=y.get(l);u&&u.el===m||(u?.el&&d?.unobserve(u.el),u?(u.el=m,u.inter=!1,N()):m&&y.set(l,cn(m)),m&&d&&L&&d.observe(m));});},start(l){R(()=>{l&&(b.el=l);let m=n.doc();if(!(I||o===0||!m))if(I=!0,m.prerendering){let u=()=>R(Ge);m.addEventListener("prerenderingchange",u,{once:!0}),c.push(()=>m.removeEventListener("prerenderingchange",u));}else Ge();});},stop(){R(()=>{if(I){N(),K("hidden"),I=!1,L=!1,w?.(),w=null,d?.disconnect();for(let l of c.splice(0))l();N();}});},common:je,post:He,flushForClick(){return R(()=>{N(),K("click");}),h},flush:K}}var qn=5*6e4;function pn(e,n,t=dn){let r=c=>{try{e()?.onEvent?.(c);}catch{}},i=n.manifest,o=n.source,s=null;try{let c=e(),k=c!==null&&Se(c,t.host?.(),i?.analytics.endpoint??null);i&&!k&&i.analytics.enabled&&(o==="live"||o==="fallback")&&(s=mn({manifest:i,src:o,flags:n.flags,rr:n.rr,onSignal:(h,v,f)=>r({type:"signal",payload:f?{kind:h,sent:v,why:f}:{kind:h,sent:v}}),withhold:()=>{let h=e();return h?.consentMode==="require-consent"&&!(h.consent?.get()==="granted"&&t.nav()?.globalPrivacyControl!==!0)}},t));}catch{s=null;}let a=s!==null&&i!==null&&i.analytics.clicks,g=new Map,p=[],y=c=>i?on(i.siteIndex,c.idx,t.now(),t.random):null,b=c=>{try{c();}catch{}};return {page:s,rendered(c){r({type:"impression",payload:{ids:c,revision:i?.revision??null}});},pointerDown(c,k){let h=null;return b(()=>{if(!a)return;let v=y(c);v&&(g.set(c.id,{id:v,at:t.now()}),c.instrumentation!=="none"&&(h=ve(k,v)));}),h},click(c,k,h,v){let f=k;return b(()=>{if(!a||!s)return;let x=g.get(c.id);g.delete(c.id);let d=x&&t.now()-x.at<=qn?x.id:y(c);if(!d||(c.instrumentation!=="none"&&(f=ve(k,d)),p.includes(d)))return;p.push(d),p.length>en&&p.shift();let w=s.flushForClick();s.post("click",{...s.common(t.now()),c:d,b:c.id,pos:s.pos(c),btn:v,via:h,ip:w});}),r({type:"click",payload:{id:c.id,href:k,via:h}}),f},observe:(c,k)=>b(()=>s?.observe(c,k)),setOrder:c=>b(()=>s?.setOrder(c)),start:c=>b(()=>s?.start(c)),stop:()=>b(()=>s?.stop())}}var Zn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",gn={};for(let e=0;e<64;e++)gn[Zn[e]]=e;function Qn(e){return /^[A-Za-z0-9_-]*$/.test(e)}function xe(e,n){if(typeof e!="string"||!Qn(e)||e.length!==Math.ceil(n*4/3))return null;let t=new Uint8Array(n),r=0,i=0,o=0;for(let s=0;s<e.length;s++)if(r=(r<<6|gn[e[s]])&65535,i+=6,i>=8){if(i-=8,o>=n)return null;t[o++]=r>>i&255;}return o!==n||i>0&&(r&(1<<i)-1)!==0?null:t}function Ee(e){let n="";for(let t of e)n+=t.toString(16).padStart(2,"0");return n}var kn=BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),et=kn>>1n;function Me(){let e=globalThis.crypto;return e&&e.subtle?e.subtle:null}function nt(e){let n=xe(e,64);if(!n)return "encoding";let t=BigInt(`0x${Ee(n.subarray(0,32))}`),r=BigInt(`0x${Ee(n.subarray(32))}`);return t===0n||t>=kn||r===0n||r>et?"range":null}var yn=new WeakMap;async function tt(e,n){let t=yn.get(e);if(t)return t;let r=n.importKey("jwk",{kty:"EC",crv:"P-256",x:e.x,y:e.y,ext:true},{name:"ECDSA",namedCurve:"P-256"},false,["verify"]);return yn.set(e,r),r}async function _e(e,n,t){try{let r=Me();if(!r||nt(t)!==null)return !1;let i=xe(t,64),o=await tt(e,r);return await r.verify({name:"ECDSA",hash:"SHA-256"},o,i,new TextEncoder().encode(n))}catch{return false}}var ie=/^[a-z0-9]+(-[a-z0-9]+)*$/,Ce=48,Re=24,Y=/^[a-z0-9][a-z0-9-]{1,63}$/,Le=/^[A-Za-z0-9_-]{85}[AQgw]$/,Ae=/^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/,se=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/,rt=/^[a-z0-9-]+\.\d+\.\d{8}\.[0-9a-f]{12}$/,bn=/^[a-z0-9.-]+$/,Ne=class extends Error{},_=()=>{throw new Ne};function P(e,n){(e===null||typeof e!="object"||Array.isArray(e))&&_();let t=e;for(let r of Object.keys(t))n.includes(r)||_();for(let r of n)r in t||_();return t}function ot(e){let n=0;for(let t of e)n++;return n}function A(e,n,t){typeof e!="string"&&_();let r=ot(e);return (r<n||r>t)&&_(),e}function M(e,n,t=1024){let r=A(e,0,t);return n.test(r)||_(),r}function q(e,n,t){return (typeof e!="number"||!Number.isInteger(e)||e<n||e>t)&&_(),e}function H(e){return typeof e!="boolean"&&_(),e}function oe(e,n){return e===null?null:n(e)}function G(e,n){return e!==n&&_(),n}function hn(e,n){return (typeof e!="string"||!n.includes(e))&&_(),e}function vn(e){let n;try{n=new URL(e);}catch{return "must be an absolute URL"}let t=n.hostname==="localhost"||n.hostname==="127.0.0.1";return n.protocol!=="https:"&&!(n.protocol==="http:"&&t)?"must be https":n.username||n.password||n.search||n.hash?"no userinfo, query or fragment":null}function ae(e){let n=A(e,1,1024);return vn(n)!==null&&_(),n}function wn(e){if(e.length>200)return "must be at most 200 characters";let n;try{n=new URL(e);}catch{return "must be an absolute URL"}if(n.protocol!=="https:")return "must use https";if(n.username||n.password)return "must not contain credentials";if(n.port!==""&&n.port!=="443")return "port must be 443";let t=n.hostname;return t.startsWith("[")||/^\d+(\.\d+){3}$/.test(t)?"IP addresses are not allowed":!bn.test(t)||!t.includes(".")||t.startsWith(".")||t.endsWith(".")?"invalid hostname":n.toString()!==e?"must be normalised":null}function it(e){let n=A(e,1,200);return wn(n)!==null&&_(),n}function Sn(e){let n=P(e,["kty","crv","x","y"]);return {kty:G(n.kty,"EC"),crv:G(n.crv,"P-256"),x:M(n.x,Ae),y:M(n.y,Ae)}}function st(e){let n=P(e,["src","src2x","alt","width","height"]);return {src:ae(n.src),src2x:ae(n.src2x),alt:A(n.alt,1,120),width:G(n.width,640),height:G(n.height,360)}}var at=["id","idx","name","description","url","domain","image","category","location","region","tags","pinned","position","instrumentation"];function lt(e){let n=P(e,at),t=A(n.name,2,60);/^[=+@]/.test(t)&&_();let r=M(n.domain,bn,253);(r.length<1||r.startsWith("www."))&&_();let i=n.tags;return (!Array.isArray(i)||i.length>10)&&_(),{id:M(n.id,ie,Ce),idx:q(n.idx,1,65535),name:t,description:A(n.description,1,140),url:it(n.url),domain:r,image:st(n.image),category:oe(n.category,o=>A(o,0,40)),location:oe(n.location,o=>A(o,0,60)),region:oe(n.region,o=>A(o,0,40)),tags:i.map(o=>A(o,0,24)),pinned:H(n.pinned),position:q(n.position,0,Re-1),instrumentation:hn(n.instrumentation,["none","landings","conversions"])}}function ct(e){let n=P(e,["kid","jwk","notBefore","notAfter","rootKid","rootSig","revokedKids"]),t=n.revokedKids;return Array.isArray(t)||_(),{kid:M(n.kid,Y),jwk:Sn(n.jwk),notBefore:M(n.notBefore,se),notAfter:M(n.notAfter,se),rootKid:M(n.rootKid,Y),rootSig:M(n.rootSig,Le),revokedKids:t.map(r=>M(r,Y))}}var ut=["schema","revision","publishedAt","site","siteIndex","channel","cdnBase","minSdkVersion","analytics","links","section","businesses","signer","sig"];function J(e){try{let n=P(e,ut),t=P(n.analytics,["enabled","endpoint","impressions","clicks","landings","samplePermille","token"]),r=P(n.links,["utmMedium","utmCampaign","utmSource","refParam","nofollow"]),i=P(n.section,["title","subtitle"]),o=P(n.sig,["alg","kid","value"]),s=n.businesses;return (!Array.isArray(s)||s.length>Re)&&_(),{schema:G(n.schema,2),revision:q(n.revision,1,Number.MAX_SAFE_INTEGER),publishedAt:M(n.publishedAt,se),site:M(n.site,ie,Ce),siteIndex:q(n.siteIndex,1,65535),channel:hn(n.channel,["production","preview"]),cdnBase:ae(n.cdnBase),minSdkVersion:M(n.minSdkVersion,/^\d+\.\d+\.\d+$/),analytics:{enabled:H(t.enabled),endpoint:ae(t.endpoint),impressions:H(t.impressions),clicks:H(t.clicks),landings:H(t.landings),samplePermille:q(t.samplePermille,0,1e3),token:M(t.token,rt)},links:{utmMedium:A(r.utmMedium,1,40),utmCampaign:A(r.utmCampaign,1,40),utmSource:M(r.utmSource,ie,Ce),refParam:M(r.refParam,/^[a-z]{1,8}$/),nofollow:H(r.nofollow)},section:{title:A(i.title,1,60),subtitle:oe(i.subtitle,a=>A(a,0,120))},businesses:s.map(lt),signer:ct(n.signer),sig:{alg:G(o.alg,"ES256"),kid:M(o.kid,Y),value:M(o.value,Le)}}}catch{return null}}var B=class extends Error{constructor(t,r){super(`${t} at ${r||"$"}`);this.path=r;this.name="CanonicalJsonError";}path};function W(e){return Ie(e,"$")}function Ie(e,n){if(e===null)return "null";switch(typeof e){case "boolean":return e?"true":"false";case "string":return JSON.stringify(e);case "number":if(!Number.isSafeInteger(e))throw new B(`non-integer or unsafe number ${String(e)}`,n);return String(e);case "object":{if(Array.isArray(e))return `[${e.map((i,o)=>Ie(i,`${n}[${o}]`)).join(",")}]`;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw new B("unsupported object type",n);let r=e;return `{${Object.keys(r).sort().map(i=>{let o=r[i];if(o===void 0)throw new B(`undefined value for key "${i}" (use null)`,n);return `${JSON.stringify(i)}:${Ie(o,`${n}.${i}`)}`}).join(",")}}`}default:throw new B(`unsupported type ${typeof e}`,n)}}function _n(e){return W({kid:e.kid,jwk:{kty:e.jwk.kty,crv:e.jwk.crv,x:e.jwk.x,y:e.jwk.y},notBefore:e.notBefore,notAfter:e.notAfter,rootKid:e.rootKid})}function Cn(e){let{sig:n,...t}=e;return W(t)}var En=e=>Array.isArray(e)&&e.every(n=>typeof n=="string");function Mn(e){return Date.parse(e)}async function Z(e,n){try{if(!n||typeof n!="object")return {ok:!1,reason:"malformed"};let t=n.now instanceof Date?n.now.getTime():NaN;if(!Number.isFinite(t))return {ok:!1,reason:"malformed"};if(n.source!=="live"&&n.source!=="fallback")return {ok:!1,reason:"malformed"};if(!n.expect||typeof n.expect.site!="string"||typeof n.expect.channel!="string")return {ok:!1,reason:"malformed"};if(n.source==="live"&&!En(n.revokedKids))return {ok:!1,reason:"malformed"};if(n.revokedKids!==void 0&&!En(n.revokedKids))return {ok:!1,reason:"malformed"};let r=J(e);if(!r)return {ok:!1,reason:"malformed"};if(r.site!==n.expect.site||r.channel!==n.expect.channel||r.links.utmSource!==n.expect.site)return {ok:!1,reason:"identity"};let i=r.signer,s=(Array.isArray(n.roots)?n.roots:[]).find(p=>p&&p.kid===i.rootKid);if(!s)return {ok:!1,reason:"root_unknown"};if(!await _e(s.jwk,_n(i),i.rootSig))return {ok:!1,reason:"root_sig"};let a=Mn(i.notBefore),g=Mn(i.notAfter);return !Number.isFinite(a)||!Number.isFinite(g)||g<a?{ok:!1,reason:"malformed"}:n.source==="live"&&(t<a||t>g+6048e5)?{ok:!1,reason:"window"}:r.sig.kid!==i.kid?{ok:!1,reason:"kid_mismatch"}:await _e(i.jwk,Cn(r),r.sig.value)?(n.revokedKids??[]).includes(r.sig.kid)||i.revokedKids.includes(r.sig.kid)?{ok:!1,reason:"revoked"}:{ok:!0,manifest:r}:{ok:!1,reason:"sig"}}catch{return {ok:false,reason:"malformed"}}}async function le(e,n){try{let t;if(typeof e=="string"){if(e.length>24576||new TextEncoder().encode(e).length>24576)return {ok:!1,reason:"malformed"};t=e;}else {if(!(e instanceof Uint8Array)||e.length>24576)return {ok:!1,reason:"malformed"};t=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(e);}let r=JSON.parse(t);return W(r)!==t?{ok:!1,reason:"malformed"}:await Z(r,n)}catch{return {ok:false,reason:"malformed"}}}var Te={businesses:[],loading:true,source:"empty",revision:null,manifest:null,flags:[],rr:null};function dt(e){if(e===null||typeof e!="object")return false;let n=e;return n.schema===2&&n.revision===0&&Array.isArray(n.businesses)&&n.businesses.length===0&&!("sig"in n)}function mt(e,n){let t=e.split("-")[0].split(".").map(Number),r=n.split("-")[0].split(".").map(Number);for(let i=0;i<3;i++){let o=t[i]??0,s=r[i]??0;if(o!==s)return o>s}return false}function Pe(e,n){let t=J(e);return t?t.site!==n.site||t.channel!==n.channel||t.links.utmSource!==n.site?{ok:false,reason:"identity"}:{ok:true,manifest:t}:{ok:false,reason:"malformed"}}async function An(e,n,t){let r=new AbortController,i=setTimeout(()=>r.abort(),4e3);try{let o=await e(n,{mode:"cors",credentials:"omit",cache:t,signal:r.signal});return o.ok?new Uint8Array(await o.arrayBuffer()):null}catch{return null}finally{clearTimeout(i);}}function Nn(e,n){return e.revision<n.revision||Date.parse(e.publishedAt)<Date.parse(n.publishedAt)}var pt=e=>e==="revoked"?"sig_revoked":"sig_fail";async function De(e,n={}){let t=[],r=null,i=n.warn??(a=>console.warn(`[network-sdk] ${a}`)),o=a=>{e.dev&&i(a);};try{let a=n.fetch??(typeof fetch=="function"?fetch.bind(globalThis):void 0),g=(n.now??(()=>new Date))(),p={site:e.siteKey,channel:e.channel},y=e.roots;if(e.siteKeyFromFallback&&t.push("sitekey_from_fallback"),!e.siteKey)return o("no siteKey and no fallback.site: rendering nothing (\xA74.6)"),s("empty",null,t);let b="full",c=Me()===null;if(!e.verifySignature)b="unverified",o("verifySignature is false: signatures are NOT checked");else if(c)if(t.push("insecure_context"),e.dev)b="unverified",i("crypto.subtle is unavailable (insecure context): signature verification skipped in dev (\xA74.6)");else if(e.allowInsecureFallback){let S=Pe(e.fallback,p);return S.ok?s("fallback",S.manifest,t):s("empty",null,t)}else return s("empty",null,t);let k=(S,I,L)=>b==="full"?Z(S,{roots:y,now:g,expect:p,source:I,revokedKids:L}):Promise.resolve(Pe(S,p)),h=(S,I)=>b==="full"?le(S,{roots:y,now:g,expect:p,source:"live",revokedKids:I}):(()=>{try{let L=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(S);return Promise.resolve(Pe(JSON.parse(L),p))}catch{return Promise.resolve({ok:!1,reason:"malformed"})}})(),v=null;if(e.fallback!==void 0&&!dt(e.fallback)){let S=await k(e.fallback,"fallback",[]);S.ok?v=S.manifest:(t.push("fallback_invalid"),o(`bundled fallback rejected (${S.reason}): floor ignored, fallback will not render (\xA74.6)`));}let f=v?v.signer.revokedKids:[],x=()=>v?(Date.parse(v.signer.notAfter)<g.getTime()&&t.push("fallback_key_expired"),s("fallback",v,t)):s("empty",null,t);if(!a)return t.push("fetch_fail"),x();let d=await An(a,e.manifestUrl,"default");if(d===null)return t.push("fetch_fail"),o(`manifest fetch failed (${e.manifestUrl}): rendering the fallback`),x();let w=await h(d,f);if(!w.ok)return t.push(pt(w.reason)),o(`live manifest rejected (${w.reason}): rendering the fallback`),x();if(v&&Nn(w.manifest,v)){d=await An(a,e.manifestUrl,"reload");let S=d===null?null:await h(d,f);if(S&&S.ok&&!Nn(S.manifest,v))t.push("stale_cache"),r=w.manifest.revision,w=S;else return t.push("rev_rollback"),r=S&&S.ok?S.manifest.revision:w.manifest.revision,o(`live manifest revision ${w.manifest.revision} is below the bundled floor ${v.revision}: rendering the fallback (rev_rollback)`),x()}return mt(w.manifest.minSdkVersion,F)&&(t.push("sdk_outdated"),o(`manifest requires SDK \u2265 ${w.manifest.minSdkVersion}, this is ${F}`)),s("live",w.manifest,t)}catch{return s("empty",null,t)}function s(a,g,p){let y=(n.hostname??gt()).replace(/^www\./,""),c={businesses:g?g.businesses.filter(k=>k.domain!==y&&k.id!==e.siteKey&&k.url.startsWith("https:")):[],loading:false,source:g?a:"empty",revision:g?g.revision:null,manifest:g,flags:p,rr:r};try{e.onEvent?.({type:"directory",payload:{source:c.source,revision:c.revision,flags:[...p]}});}catch{}return c}}function gt(){try{return typeof location<"u"?location.hostname.toLowerCase():""}catch{return ""}}var bt=e=>{if(e===null||typeof e!="object")return [typeof e];let n=e,t=n.sig&&typeof n.sig=="object"?n.sig:{};return [n.site,n.revision,n.publishedAt,t.value]};function ht(e){if(!e)return null;try{return JSON.stringify([e.siteKey,e.siteKeyFromFallback,e.channel,e.manifestUrl,e.verifySignature,e.allowInsecureFallback,e.dev,e.roots.map(n=>[n.kid,n.jwk.x,n.jwk.y]),bt(e.fallback)])}catch{return `${e.siteKey}|${e.manifestUrl}`}}function vt(e,n){return !e.loading&&e.source===n.source&&e.revision===n.revision&&e.rr===n.rr&&e.manifest?.sig.value===n.manifest?.sig.value&&e.businesses.length===n.businesses.length&&e.flags.join()===n.flags.join()}function Oe(e){let n=V(e),t=useRef(n);useEffect(()=>{t.current=n;});let r=ht(n),[i,o]=useState(Te);return useEffect(()=>{let s=t.current;if(!s){o(p=>!p.loading&&!p.manifest?p:{...Te,loading:false});return}let a=true,g={...s,onEvent:p=>t.current?.onEvent?.(p)};return De(g).then(p=>{a&&o(y=>vt(y,p)?y:p);}),()=>{a=false;}},[r]),i}function Tn(e,n,t){let r=new URLSearchParams({utm_source:n.utmSource,utm_medium:n.utmMedium,utm_campaign:n.utmCampaign,utm_content:t}).toString(),i=e.indexOf("#"),o=i>=0?e.slice(0,i):e,s=i>=0?e.slice(i):"";return `${o}${o.includes("?")?"&":"?"}${r}${s}`}function ce(e,n){try{let t=e.currentTarget;n&&t&&typeof t=="object"&&typeof t.href=="string"&&t.href!==n&&(t.href=n);}catch{}}var In=e=>e==="click"?0:e==="auxclick"?1:2,xt=["pointerDown","click","observe"];function Pn(e){return typeof e=="object"&&e!==null&&xt.every(n=>typeof e[n]=="function")}var D=e=>(...n)=>{try{e(...n);}catch{}};function Be(e,n){let t=useContext(Q),r=V(),i=useContext(ee),o=n===null?null:Pn(n)?n:Pn(i)?i:null,s=typeof n=="function"?n:null,a=e.id,g=useCallback(p=>{try{o?.observe(a,p);}catch{}},[o,a]);return useMemo(()=>{let p=t?.links??{utmSource:r?.siteKey??"",utmMedium:ge.medium,utmCampaign:ge.campaign,nofollow:false},y=Tn(e.url,p,e.id),b=null,c=()=>{b?.(),b=null;},k=(f,x)=>{c();let d={currentTarget:f.currentTarget};if(x<=0)return ce(d,y);let w=setTimeout(()=>{b=null,ce(d,y);},x);b=()=>clearTimeout(w);},h=(f,x)=>{o&&(ce(f,o.click(e,y,x,In(x))),k(f,ne));},v=(f="click",x)=>{let d=y;try{o&&(d=o.click(e,y,f,x??In(f)));}catch{d=y;}if(s)try{let w=s(e,d,f);if(typeof w=="string"&&w)return w}catch{}return d};return {href:y,linkProps:{href:y,target:"_blank",rel:`noopener noreferrer${p.nofollow?" nofollow":""}`,"aria-label":`Visit ${e.name} website (opens in a new tab)`,onPointerDown:D(f=>{c(),o&&ce(f,o.pointerDown(e,y));}),onPointerUp:D(f=>k(f,ne)),onPointerCancel:D(f=>k(f,ne)),onBlur:D(f=>k(f,0)),onClick:D(f=>h(f,"click")),onAuxClick:D(f=>{f.button===1&&h(f,"auxclick");}),onContextMenu:D(f=>h(f,"contextmenu")),onDragStart:D(f=>h(f,"drag"))},trackClick:v,observe:g}},[e,t,r,o,s,g])}var Ue="discover-businesses-heading",Dn=e=>e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`);function Mt(e,n,t){let r=n[e];return t?r||void 0:r?`inr-${Dn(e)} ${r}`:`inr-${Dn(e)}`}function _t(e){let n=e.trimEnd().lastIndexOf(" ");return n<0?["",e]:[e.slice(0,n+1),e.slice(n+1)]}function Ct(e){let n=V(e.config),t=e.onEvent??n?.onEvent,r=useMemo(()=>n?t===n.onEvent?n:{...n,onEvent:t}:null,[n,t]),i=useRef(r);useEffect(()=>{i.current=r;});let o=Oe(r),s=useMemo(()=>pn(()=>i.current,o),[o]),a=useMemo(()=>{let d=e.maxItems&&e.maxItems>0?e.maxItems:o.businesses.length;return o.businesses.slice(0,d)},[o.businesses,e.maxItems]),g=useRef(false);useEffect(()=>{a.length>0&&!g.current&&(g.current=true,s.rendered(a.map(d=>d.id)));},[a,s]),useEffect(()=>{s.setOrder(a.map(d=>d.id));},[a,s]);let p=!!r&&!o.loading&&a.length>0&&!!o.manifest,y=useRef(null);if(useEffect(()=>{if(p)return s.start(y.current),()=>s.stop()},[s,p]),!r||o.loading||a.length===0||!o.manifest)return null;let b=e.theme?{...r.theme,...e.theme}:r.theme,c=e.unstyled??r.unstyled,k=d=>Mt(d,b,c),h=e.title??o.manifest.section.title,v=e.subtitle===void 0?o.manifest.section.subtitle:e.subtitle,[f,x]=_t(h);return jsx(Q.Provider,{value:o.manifest,children:jsx(ee.Provider,{value:s,children:jsx("section",{ref:y,className:k("section"),"aria-labelledby":Ue,"data-inr-rev":o.revision??void 0,"data-inr-source":o.source,children:jsxs("div",{className:k("container"),children:[jsxs("h2",{id:Ue,className:k("heading"),children:[f,jsx("span",{className:k("accentWord"),children:x})]}),v?jsx("p",{className:k("subheading"),children:v}):null,jsx("div",{className:k("grid"),children:a.map(d=>jsx(At,{business:d,cls:k,renderCard:e.renderCard},d.id))})]})})})})}function At(e){let{business:n,cls:t}=e,r=Be(n),[i,o]=useState(false);if(e.renderCard)return jsx(Fragment,{children:e.renderCard(n,r)});let s=[n.category,n.location].filter(Boolean).join(" \xB7 ");return jsxs("article",{ref:r.observe,className:t("card"),"data-inr-id":n.id,children:[jsx("div",{className:t("imageBox"),children:i?jsx("div",{className:t("placeholder"),role:"img","aria-label":n.image.alt,children:n.name.trim().charAt(0).toUpperCase()}):jsx("img",{className:t("image"),src:n.image.src,srcSet:`${n.image.src} 1x, ${n.image.src2x} 2x`,alt:n.image.alt,width:n.image.width,height:n.image.height,loading:"lazy",decoding:"async",onError:()=>o(true)})}),jsxs("div",{className:t("body"),children:[jsx("h3",{className:t("name"),children:n.name}),s?jsx("p",{className:t("meta"),children:s}):null,jsx("p",{className:t("description"),children:n.description}),jsxs("a",{...r.linkProps,className:t("button"),children:["Visit Website",jsxs("svg",{className:t("buttonIcon"),"aria-hidden":"true",focusable:"false",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M15 3h6v6"}),jsx("path",{d:"M10 14 21 3"}),jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})]})]})]})]})}
|
|
2
|
-
export{
|
|
1
|
+
import {createContext,useRef,useEffect,useState,useContext,useCallback,useMemo}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Xe=createContext(null),ee=createContext(null),ne=createContext(null);function Vn(e){return jsx(Xe.Provider,{value:e.config,children:e.children})}function V(e){let n=useContext(Xe);return e??n}var F="2.2.0",ze=2,ge="https://inr-network-public.nyc3.cdn.digitaloceanspaces.com/network/v1";var ye={medium:"network",campaign:"cross-promo"},Ye=1e4,te=2e3,ke=1e3,qe=300,be=.5,Ze=864e5,Qe=2e4,he=24,en=8,we=4096,nn=10,tn=64,j={webdriver:1,noLanguages:2,zeroPlugins:4,headlessUa:8,noOuterWindow:16},rn=["sig_fail","rev_rollback","stale_cache","fallback_invalid","fallback_key_expired","sitekey_from_fallback","sdk_outdated"];function on(e,n,t){return `${e.replace(/\/+$/,"")}/${t==="preview"?"preview/":""}sites/${n}/manifest.json`}var ve="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",sn={};for(let e=0;e<64;e++)sn[ve[e]]=e;function jn(e){return /^[A-Za-z0-9_-]*$/.test(e)}function Se(e,n){if(typeof e!="string"||!jn(e)||e.length!==Math.ceil(n*4/3))return null;let t=new Uint8Array(n),r=0,i=0,o=0;for(let s=0;s<e.length;s++)if(r=(r<<6|sn[e[s]])&65535,i+=6,i>=8){if(i-=8,o>=n)return null;t[o++]=r>>i&255;}return o!==n||i>0&&(r&(1<<i)-1)!==0?null:t}function an(e){let n="",t=0,r=0;for(let i of e)for(t=(t<<8|i)&65535,r+=8;r>=6;)r-=6,n+=ve[t>>r&63];return r>0&&(n+=ve[t<<6-r&63]),n}function Y(e){let n="";for(let t of e)n+=t.toString(16).padStart(2,"0");return n}var Gn=an;function re(e){try{return crypto.getRandomValues(new Uint8Array(e))}catch{return null}}function ln(e=re){let n=e(16);return !n||n.length<16?null:(n[6]=n[6]&15|64,n[8]=n[8]&63|128,Y(n.subarray(0,16)).replace(/^(.{8})(.{4})(.{4})(.{4})/,"$1-$2-$3-$4-"))}function cn(e,n,t,r=re){let i=u=>Number.isInteger(u)&&u>=0&&u<=65535,o=Math.floor(t/6e4);if(!i(e)||!i(n)||!(o>=0&&o<=4294967295))return null;let s=r(16);if(!s||s.length<16)return null;let l=new Uint8Array(24),g=new DataView(l.buffer);return g.setUint16(0,e),g.setUint16(2,n),g.setUint32(4,o),l.set(s.subarray(0,16),8),Gn(l)}function xe(e){let n=e.indexOf("#");return n<0?[e,""]:[e.slice(0,n),e.slice(n)]}function Ee(e,n){let[t,r]=xe(e),i=t.indexOf("?"),o=i<0?[]:t.slice(i+1).split("&").filter(s=>s!==""&&s.split("=")[0]!=="inr");return o.push(`${"inr"}=${n}`),`${i<0?t:t.slice(0,i)}?${o.join("&")}${r}`}var Me=[{kid:"root-2026",jwk:{kty:"EC",crv:"P-256",x:"9Xly8AJB8fMVSBjA1TK7HnAxxYRXwwlPU54zl_AkUcs",y:"Tehja7BG1JLpIHfIMJjSRWPpZKXCvRIXS-EtAv1Mc68"}}],Jn=[{kid:"root-dev-a01e0d",jwk:{kty:"EC",crv:"P-256",x:"4dO5Ybuh3aMQMYvVUYd82CZ2y-tM2wM4SeunZvxMKHQ",y:"Tw6MyboNkggXo9jV7_Tng8tCGNMin7Dxuept8AY0Anc"}}];var Wn=["section","container","heading","accentWord","subheading","grid","card","imageBox","image","placeholder","body","name","meta","description","button","buttonIcon"],un=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function fn(e){return !!e&&/^(localhost|.+\.localhost|127\.0\.0\.1|\[::1\]|::1)$/i.test(e)}function Xn(e){try{return !!e&&fn(new URL(e).hostname)}catch{return false}}function _e(e,n,t){return e.channel!=="preview"&&(e.dev||fn(n))&&!Xn(t)}function zn(e){let n=un(e.fallback)?e.fallback:null,t=n&&typeof n.site=="string"?n.site:"",r=typeof e.siteKey=="string"&&e.siteKey?e.siteKey:t,i=e.channel==="preview"?"preview":"production",o=n&&typeof n.cdnBase=="string"?n.cdnBase:void 0,s=n&&un(n.analytics)?n.analytics:null,l=s&&typeof s.endpoint=="string"?s.endpoint:null,g=e.dev===true,u=_e({dev:g,channel:i},void 0,l)?null:l,y=e.consentMode==="require-consent"?"require-consent":"session-default";return {siteKey:r,siteKeyFromFallback:!e.siteKey&&!!t,channel:i,manifestUrl:e.manifestUrl??on(e.cdnBase??o??ge,r,i),fallback:e.fallback,roots:e.manifestRootKeys??Me,consent:e.consent,consentMode:y,theme:e.theme??{},unstyled:e.unstyled===true,verifySignature:e.verifySignature!==false,allowInsecureFallback:e.allowInsecureFallback===true,dev:g,onEvent:e.onEvent,capture:{siteKey:r,endpoint:u,consent:e.consent,consentMode:y}}}function dn(e,n,t){let r=o=>{try{t?.(o);}catch{}return o};try{if(location.protocol=="https:"&&/^http:/i.test(e))return r(!1)}catch{}try{if(navigator.sendBeacon(e,n))return r(!0)}catch{}let i=o=>fetch(e,{method:"POST",mode:"no-cors",keepalive:o,credentials:"omit",body:n});try{return i(!0).then(()=>r(!0),()=>{try{if(document.visibilityState=="visible")return void i(!1).then(()=>r(!0),()=>r(!1))}catch{}r(!1);}),!0}catch{return r(false)}}var yn={now:()=>Date.now(),random:re,roll:()=>Math.random(),send:dn,later:(e,n)=>{let t=setTimeout(e,n);return ()=>clearTimeout(t)},doc:()=>globalThis.document,win:()=>globalThis.window,nav:()=>globalThis.navigator,host:()=>globalThis.location?.hostname,IO:()=>globalThis.IntersectionObserver},mn=e=>({el:e,inter:false,since:null,ms:0,seen:false,fv:null}),pn=e=>Math.min(Ze,Math.max(0,Math.round(e))),gn=e=>typeof e=="number"&&e>0?Math.min(Qe,Math.round(e)):0,Yn=.005,qn=new Set(rn);function Zn(e,n){let t=0;try{e&&(e.webdriver===!0&&(t|=j.webdriver),(!e.languages||e.languages.length===0)&&(t|=j.noLanguages),e.plugins&&e.plugins.length===0&&(t|=j.zeroPlugins),/HeadlessChrome/.test(e.userAgent??"")&&(t|=j.headlessUa)),n&&n.outerWidth===0&&n.outerHeight===0&&(t|=j.noOuterWindow);}catch{}return t}function Qn(e){let n=[];for(let t of e){let r=t==="sig_revoked"?"sig_fail":t;qn.has(r)&&!n.includes(r)&&n.push(r);}return n.slice(0,en)}var R=e=>{try{e();}catch{}};function kn(e,n){let t=ln(n.random);if(!t)return null;let r=e.manifest.analytics,i=Math.round(n.now()),o=r.enabled&&r.impressions&&r.samplePermille>0&&n.roll()*1e3<r.samplePermille?1:0,s=Zn(n.nav(),n.win()),l=Qn(e.flags),g=e.rr!==null&&(l.includes("rev_rollback")||l.includes("stale_cache"))?e.rr:null,u=()=>{try{return e.withhold?.()===!0}catch{return true}},y=new Map,b=mn(null),c=[],k=[],h=false,w=0,d="",x="",m=null,v=null,S=false,I=false,L=false,de=true,je=(a,p,f)=>{if(p)a.since===null&&(a.since=f,a.fv===null&&(a.fv=pn(f-i)));else if(a.since!==null){let M=Math.max(0,f-a.since);a.ms+=M,M>=ke&&(a.seen=true),a.since=null;}},He=(a,p)=>{if(!a)return {seen:false,ms:0,fv:null};let f=a.since===null?0:Math.max(0,p-a.since);return {seen:a.seen||f>=ke,ms:pn(a.ms+f),fv:a.fv}},N=()=>{let a=n.now(),p=L&&de&&n.doc()?.visibilityState==="visible",f=false;for(let M of y.values()){let P=p&&M.inter&&M.el!==null;f=f||P,je(M,P,a);}je(b,p&&(b.inter||f),a),b.fv!==null&&!h&&!v&&!S&&(v=n.later(()=>R(()=>{v=null,S=!0,N(),K("timer");}),Ye));},Kn=a=>{for(let p of a){let f=b.el===p.target?b:[...y.values()].find(M=>M.el===p.target);f&&(f.inter=p.isIntersecting&&p.intersectionRatio>=be-Yn);}N();},Ge=a=>({v:2,k:e.manifest.site,pv:t,r:e.manifest.revision,src:e.src,sdk:F,tok:r.token,sp:r.samplePermille,smp:o,t:Math.round(a),hd:u()?0:s,m:i}),Je=(a,p,f=null)=>n.send(`${r.endpoint.replace(/\/+$/,"")}/${a}`,JSON.stringify(p),M=>R(()=>e.onSignal(a,M,f))),$n=(a,p)=>JSON.stringify([a.seen,a.ms>=qe,p.map(f=>[f.seen,f.fv!==null])]),K=a=>{if(!L||!m||w>=nn||h&&a==="timer")return false;let p=n.now(),f=He(b,p);if(b.fv===null||f.ms<1)return false;let M=k.map((U,me)=>({id:U,pos:me,...He(y.get(U),p)})),P=JSON.stringify([f,M]);if(h&&P===d)return false;let z=$n(f,M);if(h&&a==="click"&&z===x)return false;v?.(),v=null,h=true,w+=1,d=P,x=z;let O=n.win(),$={...Ge(p),items:M,ss:f.seen,sm:f.ms,vp:u()?{w:0,h:0}:{w:gn(O?.innerWidth),h:gn(O?.innerHeight)},why:a};if(l.length&&($.fl=l),g!==null&&($.rr=g),JSON.stringify($).length>we){let U=M.filter(me=>me.fv!==null);for($.items=U;JSON.stringify($).length>we&&U.length;)U.pop();}return Je("impression",$,a),true},We=()=>{let a=n.IO(),p=n.doc(),f=n.win();if(!I||L||!a||!p)return;L=true,m??=new a(O=>R(()=>Kn(O)),{threshold:be}),b.el&&m.observe(b.el);for(let O of y.values())O.el&&m.observe(O.el);let M=()=>R(()=>{N(),p.visibilityState==="hidden"&&K("hidden");}),P=()=>R(()=>{N(),K("pagehide"),de=!1,N();}),z=()=>R(()=>{de=!0,N();});p.addEventListener("visibilitychange",M),f?.addEventListener("pagehide",P),f?.addEventListener("pageshow",z),c.push(()=>p.removeEventListener("visibilitychange",M),()=>f?.removeEventListener("pagehide",P),()=>f?.removeEventListener("pageshow",z)),N();};return {pv:t,m:i,smp:o,hd:s,get sent(){return h},setOrder(a){k=a.slice(0,he);},pos(a){let p=k.indexOf(a.id);return p>=0?p:Math.min(Math.max(0,a.position),he-1)},observe(a,p){R(()=>{let f=y.get(a);f&&f.el===p||(f?.el&&m?.unobserve(f.el),f?(f.el=p,f.inter=!1,N()):p&&y.set(a,mn(p)),p&&m&&L&&m.observe(p));});},start(a){R(()=>{a&&(b.el=a);let p=n.doc();if(!(I||o===0||!p))if(I=!0,p.prerendering){let f=()=>R(We);p.addEventListener("prerenderingchange",f,{once:!0}),c.push(()=>p.removeEventListener("prerenderingchange",f));}else We();});},stop(){R(()=>{if(I){N(),K("hidden"),I=!1,L=!1,v?.(),v=null,m?.disconnect();for(let a of c.splice(0))a();N();}});},common:Ge,post:Je,flushForClick(){return R(()=>{N(),K("click");}),h},flush:K}}var et=5*6e4;function bn(e,n,t=yn){let r=c=>{try{e()?.onEvent?.(c);}catch{}},i=n.manifest,o=n.source,s=null;try{let c=e(),k=c!==null&&_e(c,t.host?.(),i?.analytics.endpoint??null);i&&!k&&i.analytics.enabled&&(o==="live"||o==="fallback")&&(s=kn({manifest:i,src:o,flags:n.flags,rr:n.rr,onSignal:(h,w,d)=>r({type:"signal",payload:d?{kind:h,sent:w,why:d}:{kind:h,sent:w}}),withhold:()=>{let h=e();return h?.consentMode==="require-consent"&&!(h.consent?.get()==="granted"&&t.nav()?.globalPrivacyControl!==!0)}},t));}catch{s=null;}let l=s!==null&&i!==null&&i.analytics.clicks,g=new Map,u=[],y=c=>i?cn(i.siteIndex,c.idx,t.now(),t.random):null,b=c=>{try{c();}catch{}};return {page:s,rendered(c){r({type:"impression",payload:{ids:c,revision:i?.revision??null}});},pointerDown(c,k){let h=null;return b(()=>{if(!l)return;let w=y(c);w&&(g.set(c.id,{id:w,at:t.now()}),c.instrumentation!=="none"&&(h=Ee(k,w)));}),h},click(c,k,h,w){let d=k;return b(()=>{if(!l||!s)return;let x=g.get(c.id);g.delete(c.id);let m=x&&t.now()-x.at<=et?x.id:y(c);if(!m||(c.instrumentation!=="none"&&(d=Ee(k,m)),u.includes(m)))return;u.push(m),u.length>tn&&u.shift();let v=s.flushForClick();s.post("click",{...s.common(t.now()),c:m,b:c.id,pos:s.pos(c),btn:w,via:h,ip:v});}),r({type:"click",payload:{id:c.id,href:k,via:h}}),d},observe:(c,k)=>b(()=>s?.observe(c,k)),setOrder:c=>b(()=>s?.setOrder(c)),start:c=>b(()=>s?.start(c)),stop:()=>b(()=>s?.stop())}}var ie=/^[a-z0-9]+(-[a-z0-9]+)*$/,Ce=48,Re=24,q=/^[a-z0-9][a-z0-9-]{1,63}$/,Le=/^[A-Za-z0-9_-]{85}[AQgw]$/,Ae=/^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/,se=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/,nt=/^[a-z0-9-]+\.\d+\.\d{8}\.[0-9a-f]{12}$/,hn=/^[a-z0-9.-]+$/,tt=/^([\w.~!$&'()*+,;=:@/?-]|%[\da-f]{2})*(#([\w.~!$&'()*+,;=:@/?-]|%[\da-f]{2})*)?$/i,Ne=class extends Error{},E=()=>{throw new Ne};function T(e,n){(e===null||typeof e!="object"||Array.isArray(e))&&E();let t=e;for(let r of Object.keys(t))n.includes(r)||E();for(let r of n)r in t||E();return t}function rt(e){let n=0;for(let t of e)n++;return n}function A(e,n,t){typeof e!="string"&&E();let r=rt(e);return (r<n||r>t)&&E(),e}function _(e,n,t=1024){let r=A(e,0,t);return n.test(r)||E(),r}function Z(e,n,t){return (typeof e!="number"||!Number.isInteger(e)||e<n||e>t)&&E(),e}function H(e){return typeof e!="boolean"&&E(),e}function oe(e,n){return e===null?null:n(e)}function G(e,n){return e!==n&&E(),n}function wn(e,n){return (typeof e!="string"||!n.includes(e))&&E(),e}function vn(e){let n;try{n=new URL(e);}catch{return "must be an absolute URL"}let t=n.hostname==="localhost"||n.hostname==="127.0.0.1";return n.protocol!=="https:"&&!(n.protocol==="http:"&&t)?"must be https":n.username||n.password||n.search||n.hash?"no userinfo, query or fragment":null}function ae(e){let n=A(e,1,1024);return vn(n)!==null&&E(),n}function Sn(e){if(e.length>200)return "must be at most 200 characters";let n;try{n=new URL(e);}catch{return "must be an absolute URL"}if(n.protocol!=="https:")return "must use https";if(n.username||n.password)return "must not contain credentials";if(n.port!==""&&n.port!=="443")return "port must be 443";let t=n.hostname;return t.startsWith("[")||/^\d+(\.\d+){3}$/.test(t)?"IP addresses are not allowed":!hn.test(t)||!t.includes(".")||t.startsWith(".")||t.endsWith(".")?"invalid hostname":n.toString()!==e||!tt.test(e.slice(n.origin.length))?"must be normalised":null}function ot(e){let n=A(e,1,200);return Sn(n)!==null&&E(),n}function le(e){let n=T(e,["kty","crv","x","y"]);return {kty:G(n.kty,"EC"),crv:G(n.crv,"P-256"),x:_(n.x,Ae),y:_(n.y,Ae)}}function it(e){let n=T(e,["src","src2x","alt","width","height"]);return {src:ae(n.src),src2x:ae(n.src2x),alt:A(n.alt,1,120),width:G(n.width,640),height:G(n.height,360)}}var st=["id","idx","name","description","url","domain","image","category","location","region","tags","pinned","position","instrumentation"];function at(e){let n=T(e,st),t=A(n.name,2,60);/^[=+@]/.test(t)&&E();let r=_(n.domain,hn,253);(r.length<1||r.startsWith("www."))&&E();let i=n.tags;return (!Array.isArray(i)||i.length>10)&&E(),{id:_(n.id,ie,Ce),idx:Z(n.idx,1,65535),name:t,description:A(n.description,1,140),url:ot(n.url),domain:r,image:it(n.image),category:oe(n.category,o=>A(o,0,40)),location:oe(n.location,o=>A(o,0,60)),region:oe(n.region,o=>A(o,0,40)),tags:i.map(o=>A(o,0,24)),pinned:H(n.pinned),position:Z(n.position,0,Re-1),instrumentation:wn(n.instrumentation,["none","landings","conversions"])}}function lt(e){let n=T(e,["kid","jwk","notBefore","notAfter","rootKid","rootSig","revokedKids"]),t=n.revokedKids;return Array.isArray(t)||E(),{kid:_(n.kid,q),jwk:le(n.jwk),notBefore:_(n.notBefore,se),notAfter:_(n.notAfter,se),rootKid:_(n.rootKid,q),rootSig:_(n.rootSig,Le),revokedKids:t.map(r=>_(r,q))}}var ct=["schema","revision","publishedAt","site","siteIndex","channel","cdnBase","minSdkVersion","analytics","links","section","businesses","signer","sig"];function J(e){try{let n=T(e,ct),t=T(n.analytics,["enabled","endpoint","impressions","clicks","landings","samplePermille","token"]),r=T(n.links,["utmMedium","utmCampaign","utmSource","refParam","nofollow"]),i=T(n.section,["title","subtitle"]),o=T(n.sig,["alg","kid","value"]),s=n.businesses;return (!Array.isArray(s)||s.length>Re)&&E(),{schema:G(n.schema,2),revision:Z(n.revision,1,Number.MAX_SAFE_INTEGER),publishedAt:_(n.publishedAt,se),site:_(n.site,ie,Ce),siteIndex:Z(n.siteIndex,1,65535),channel:wn(n.channel,["production","preview"]),cdnBase:ae(n.cdnBase),minSdkVersion:_(n.minSdkVersion,/^\d+\.\d+\.\d+$/),analytics:{enabled:H(t.enabled),endpoint:ae(t.endpoint),impressions:H(t.impressions),clicks:H(t.clicks),landings:H(t.landings),samplePermille:Z(t.samplePermille,0,1e3),token:_(t.token,nt)},links:{utmMedium:A(r.utmMedium,1,40),utmCampaign:A(r.utmCampaign,1,40),utmSource:_(r.utmSource,ie,Ce),refParam:_(r.refParam,/^[a-z]{1,8}$/),nofollow:H(r.nofollow)},section:{title:A(i.title,1,60),subtitle:oe(i.subtitle,l=>A(l,0,120))},businesses:s.map(at),signer:lt(n.signer),sig:{alg:G(o.alg,"ES256"),kid:_(o.kid,q),value:_(o.value,Le)}}}catch{return null}}var En=BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),ut=En>>1n;function Ie(){let e=globalThis.crypto;return e&&e.subtle?e.subtle:null}function ft(e){let n=Se(e,64);if(!n)return "encoding";let t=BigInt(`0x${Y(n.subarray(0,32))}`),r=BigInt(`0x${Y(n.subarray(32))}`);return t===0n||t>=En||r===0n||r>ut?"range":null}var xn=new WeakMap;async function dt(e,n){let t=xn.get(e);if(t)return t;let{kty:r,crv:i,x:o,y:s}=e,l=n.importKey("jwk",{...le({kty:r,crv:i,x:o,y:s}),ext:true},{name:"ECDSA",namedCurve:"P-256"},false,["verify"]);return xn.set(e,l),l}async function Te(e,n,t){try{let r=Ie();if(!r||ft(t)!==null)return !1;let i=Se(t,64),o=await dt(e,r);return await r.verify({name:"ECDSA",hash:"SHA-256"},o,i,new TextEncoder().encode(n))}catch{return false}}var B=class extends Error{constructor(t,r){super(`${t} at ${r||"$"}`);this.path=r;this.name="CanonicalJsonError";}path};function W(e){return Pe(e,"$")}function Pe(e,n){if(e===null)return "null";switch(typeof e){case "boolean":return e?"true":"false";case "string":return JSON.stringify(e);case "number":if(!Number.isSafeInteger(e))throw new B(`non-integer or unsafe number ${String(e)}`,n);return String(e);case "object":{if(Array.isArray(e))return `[${e.map((i,o)=>Pe(i,`${n}[${o}]`)).join(",")}]`;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw new B("unsupported object type",n);let r=e;return `{${Object.keys(r).sort().map(i=>{let o=r[i];if(o===void 0)throw new B(`undefined value for key "${i}" (use null)`,n);return `${JSON.stringify(i)}:${Pe(o,`${n}.${i}`)}`}).join(",")}}`}default:throw new B(`unsupported type ${typeof e}`,n)}}function An(e){return W({kid:e.kid,jwk:{kty:e.jwk.kty,crv:e.jwk.crv,x:e.jwk.x,y:e.jwk.y},notBefore:e.notBefore,notAfter:e.notAfter,rootKid:e.rootKid})}function Nn(e){let{sig:n,...t}=e;return W(t)}var _n=e=>Array.isArray(e)&&e.every(n=>typeof n=="string");function Cn(e){let n=Date.parse(e);return new Date(n).toISOString().startsWith(e.slice(0,19))||E(),n}async function Q(e,n){try{if(!n||typeof n!="object")return {ok:!1,reason:"malformed"};let t=n.now instanceof Date?n.now.getTime():NaN;if(!Number.isFinite(t))return {ok:!1,reason:"malformed"};if(n.source!=="live"&&n.source!=="fallback")return {ok:!1,reason:"malformed"};if(!n.expect||typeof n.expect.site!="string"||typeof n.expect.channel!="string")return {ok:!1,reason:"malformed"};if(n.source==="live"&&!_n(n.revokedKids))return {ok:!1,reason:"malformed"};if(n.revokedKids!==void 0&&!_n(n.revokedKids))return {ok:!1,reason:"malformed"};let r=J(e);if(!r)return {ok:!1,reason:"malformed"};if(r.site!==n.expect.site||r.channel!==n.expect.channel||r.links.utmSource!==n.expect.site)return {ok:!1,reason:"identity"};let i=r.signer,s=(Array.isArray(n.roots)?n.roots:[]).find(u=>u&&u.kid===i.rootKid);if(!s)return {ok:!1,reason:"root_unknown"};if(!await Te(s.jwk,An(i),i.rootSig))return {ok:!1,reason:"root_sig"};let l=Cn(i.notBefore),g=Cn(i.notAfter);return g<l?{ok:!1,reason:"malformed"}:n.source==="live"&&(t<l||t>g+6048e5)?{ok:!1,reason:"window"}:r.sig.kid!==i.kid?{ok:!1,reason:"kid_mismatch"}:await Te(i.jwk,Nn(r),r.sig.value)?(n.revokedKids??[]).includes(r.sig.kid)||i.revokedKids.includes(r.sig.kid)?{ok:!1,reason:"revoked"}:{ok:!0,manifest:r}:{ok:!1,reason:"sig"}}catch{return {ok:false,reason:"malformed"}}}async function ce(e,n){try{let t;if(typeof e=="string"){if(e.length>24576||new TextEncoder().encode(e).length>24576)return {ok:!1,reason:"malformed"};t=e;}else {if(!(e instanceof Uint8Array)||e.length>24576)return {ok:!1,reason:"malformed"};t=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(e);}let r=JSON.parse(t);return W(r)!==t?{ok:!1,reason:"malformed"}:await Q(r,n)}catch{return {ok:false,reason:"malformed"}}}var Oe={businesses:[],loading:true,source:"empty",revision:null,manifest:null,flags:[],rr:null};function pt(e){if(e===null||typeof e!="object")return false;let n=e;return n.schema===2&&n.revision===0&&Array.isArray(n.businesses)&&n.businesses.length===0&&!("sig"in n)}function gt(e,n){let t=e.split("-")[0].split(".").map(Number),r=n.split("-")[0].split(".").map(Number);for(let i=0;i<3;i++){let o=t[i]??0,s=r[i]??0;if(o!==s)return o>s}return false}function De(e,n){let t=J(e);return t?t.site!==n.site||t.channel!==n.channel||t.links.utmSource!==n.site?{ok:false,reason:"identity"}:{ok:true,manifest:t}:{ok:false,reason:"malformed"}}async function Rn(e,n,t){let r=new AbortController,i=setTimeout(()=>r.abort(),4e3);try{let o=await e(n,{mode:"cors",credentials:"omit",cache:t,signal:r.signal});return o.ok?new Uint8Array(await o.arrayBuffer()):null}catch{return null}finally{clearTimeout(i);}}function Ln(e,n){return e.revision<n.revision||Date.parse(e.publishedAt)<Date.parse(n.publishedAt)}var yt=e=>e==="revoked"?"sig_revoked":"sig_fail";async function Be(e,n={}){let t=[],r=null,i=n.warn??(l=>console.warn(`[network-sdk] ${l}`)),o=l=>{e.dev&&i(l);};try{let l=n.fetch??(typeof fetch=="function"?fetch.bind(globalThis):void 0),g=(n.now??(()=>new Date))(),u={site:e.siteKey,channel:e.channel},y=e.roots;if(e.siteKeyFromFallback&&t.push("sitekey_from_fallback"),!e.siteKey)return o("no siteKey and no fallback.site: rendering nothing (\xA74.6)"),s("empty",null,t);let b="full",c=Ie()===null;if(!e.verifySignature)b="unverified",o("verifySignature is false: signatures are NOT checked");else if(c)if(t.push("insecure_context"),e.dev)b="unverified",i("crypto.subtle is unavailable (insecure context): signature verification skipped in dev (\xA74.6)");else if(e.allowInsecureFallback){let S=De(e.fallback,u);return S.ok?s("fallback",S.manifest,t):s("empty",null,t)}else return s("empty",null,t);let k=(S,I,L)=>b==="full"?Q(S,{roots:y,now:g,expect:u,source:I,revokedKids:L}):Promise.resolve(De(S,u)),h=(S,I)=>b==="full"?ce(S,{roots:y,now:g,expect:u,source:"live",revokedKids:I}):(()=>{try{let L=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}).decode(S);return Promise.resolve(De(JSON.parse(L),u))}catch{return Promise.resolve({ok:!1,reason:"malformed"})}})(),w=null;if(e.fallback!==void 0&&!pt(e.fallback)){let S=await k(e.fallback,"fallback",[]);S.ok?w=S.manifest:(t.push("fallback_invalid"),o(`bundled fallback rejected (${S.reason}): floor ignored, fallback will not render (\xA74.6)`));}let d=w?w.signer.revokedKids:[],x=()=>w?(Date.parse(w.signer.notAfter)<g.getTime()&&t.push("fallback_key_expired"),s("fallback",w,t)):s("empty",null,t);if(!l)return t.push("fetch_fail"),x();let m=await Rn(l,e.manifestUrl,"default");if(m===null)return t.push("fetch_fail"),o(`manifest fetch failed (${e.manifestUrl}): rendering the fallback`),x();let v=await h(m,d);if(!v.ok)return t.push(yt(v.reason)),o(`live manifest rejected (${v.reason}): rendering the fallback`),x();if(w&&Ln(v.manifest,w)){m=await Rn(l,e.manifestUrl,"reload");let S=m===null?null:await h(m,d);if(S&&S.ok&&!Ln(S.manifest,w))t.push("stale_cache"),r=v.manifest.revision,v=S;else return t.push("rev_rollback"),r=S&&S.ok?S.manifest.revision:v.manifest.revision,o(`live manifest revision ${v.manifest.revision} is below the bundled floor ${w.revision}: rendering the fallback (rev_rollback)`),x()}return gt(v.manifest.minSdkVersion,F)&&(t.push("sdk_outdated"),o(`manifest requires SDK \u2265 ${v.manifest.minSdkVersion}, this is ${F}`)),s("live",v.manifest,t)}catch{return s("empty",null,t)}function s(l,g,u){let y=(n.hostname??kt()).replace(/^www\./,""),c={businesses:g?g.businesses.filter(k=>k.domain!==y&&k.id!==e.siteKey&&k.url.startsWith("https:")):[],loading:false,source:g?l:"empty",revision:g?g.revision:null,manifest:g,flags:u,rr:r};try{e.onEvent?.({type:"directory",payload:{source:c.source,revision:c.revision,flags:[...u]}});}catch{}return c}}function kt(){try{return (globalThis.location?.hostname??"").toLowerCase()}catch{return ""}}var wt=e=>{if(e===null||typeof e!="object")return [typeof e];let n=e,t=n.sig&&typeof n.sig=="object"?n.sig:{};return [n.site,n.revision,n.publishedAt,t.value]};function vt(e){if(!e)return null;try{return JSON.stringify([e.siteKey,e.siteKeyFromFallback,e.channel,e.manifestUrl,e.verifySignature,e.allowInsecureFallback,e.dev,e.roots.map(n=>[n.kid,n.jwk.x,n.jwk.y]),wt(e.fallback)])}catch{return `${e.siteKey}|${e.manifestUrl}`}}function St(e,n){return !e.loading&&e.source===n.source&&e.revision===n.revision&&e.rr===n.rr&&e.manifest?.sig.value===n.manifest?.sig.value&&e.businesses.length===n.businesses.length&&e.flags.join()===n.flags.join()}function Ke(e){let n=V(e),t=useRef(n);useEffect(()=>{t.current=n;});let r=vt(n),[i,o]=useState(Oe);return useEffect(()=>{let s=t.current;if(!s){o(u=>!u.loading&&!u.manifest?u:{...Oe,loading:false});return}let l=true,g={...s,onEvent:u=>t.current?.onEvent?.(u)};return Be(g).then(u=>{l&&o(y=>St(y,u)?y:u);}),()=>{l=false;}},[r]),i}function On(e,n,t){let r=new URLSearchParams({utm_source:n.utmSource,utm_medium:n.utmMedium,utm_campaign:n.utmCampaign,utm_content:t}).toString(),[i,o]=xe(e);return `${i}${i.includes("?")?"&":"?"}${r}${o}`}function ue(e,n){try{let t=e.currentTarget;n&&t&&typeof t=="object"&&typeof t.href=="string"&&t.href!==n&&(t.href=n);}catch{}}var Pn=e=>e==="click"?0:e==="auxclick"?1:2,Mt=["pointerDown","click","observe"];function Dn(e){return typeof e=="object"&&e!==null&&Mt.every(n=>typeof e[n]=="function")}var D=e=>(...n)=>{try{e(...n);}catch{}};function $e(e,n){let t=useContext(ee),r=V(),i=useContext(ne),o=n===null?null:Dn(n)?n:Dn(i)?i:null,s=typeof n=="function"?n:null,l=e.id,g=useCallback(u=>{try{o?.observe(l,u);}catch{}},[o,l]);return useMemo(()=>{let u=t?.links??{utmSource:r?.siteKey??"",utmMedium:ye.medium,utmCampaign:ye.campaign,nofollow:false},y=On(e.url,u,e.id),b=null,c=()=>{b?.(),b=null;},k=(d,x)=>{c();let m={currentTarget:d.currentTarget};if(x<=0)return ue(m,y);let v=setTimeout(()=>{b=null,ue(m,y);},x);b=()=>clearTimeout(v);},h=(d,x)=>{o&&(ue(d,o.click(e,y,x,Pn(x))),k(d,te));},w=(d="click",x)=>{let m=y;try{o&&(m=o.click(e,y,d,x??Pn(d)));}catch{m=y;}if(s)try{let v=s(e,m,d);if(typeof v=="string"&&v)return v}catch{}return m};return {href:y,linkProps:{href:y,target:"_blank",rel:`noopener noreferrer${u.nofollow?" nofollow":""}`,"aria-label":`Visit ${e.name} website (opens in a new tab)`,onPointerDown:D(d=>{c(),o&&ue(d,o.pointerDown(e,y));}),onPointerUp:D(d=>k(d,te)),onPointerCancel:D(d=>k(d,te)),onBlur:D(d=>k(d,0)),onClick:D(d=>h(d,"click")),onAuxClick:D(d=>{d.button===1&&h(d,"auxclick");}),onContextMenu:D(d=>h(d,"contextmenu")),onDragStart:D(d=>h(d,"drag"))},trackClick:w,observe:g}},[e,t,r,o,s,g])}var Fe="discover-businesses-heading",Bn=e=>e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`);function Ct(e,n,t){let r=n[e];return t?r||void 0:r?`inr-${Bn(e)} ${r}`:`inr-${Bn(e)}`}function At(e){let n=e.trimEnd().lastIndexOf(" ");return n<0?["",e]:[e.slice(0,n+1),e.slice(n+1)]}function Nt(e){let n=V(e.config),t=e.onEvent??n?.onEvent,r=useMemo(()=>n?t===n.onEvent?n:{...n,onEvent:t}:null,[n,t]),i=useRef(r);useEffect(()=>{i.current=r;});let o=Ke(r),s=useMemo(()=>bn(()=>i.current,o),[o]),l=useMemo(()=>{let m=e.maxItems&&e.maxItems>0?e.maxItems:o.businesses.length;return o.businesses.slice(0,m)},[o.businesses,e.maxItems]),g=useRef(false);useEffect(()=>{l.length>0&&!g.current&&(g.current=true,s.rendered(l.map(m=>m.id)));},[l,s]),useEffect(()=>{s.setOrder(l.map(m=>m.id));},[l,s]);let u=!!r&&!o.loading&&l.length>0&&!!o.manifest,y=useRef(null);if(useEffect(()=>{if(u)return s.start(y.current),()=>s.stop()},[s,u]),!r||o.loading||l.length===0||!o.manifest)return null;let b=e.theme?{...r.theme,...e.theme}:r.theme,c=e.unstyled??r.unstyled,k=m=>Ct(m,b,c),h=e.title??o.manifest.section.title,w=e.subtitle===void 0?o.manifest.section.subtitle:e.subtitle,[d,x]=At(h);return jsx(ee.Provider,{value:o.manifest,children:jsx(ne.Provider,{value:s,children:jsx("section",{ref:y,className:k("section"),"aria-labelledby":Fe,"data-inr-rev":o.revision??void 0,"data-inr-source":o.source,children:jsxs("div",{className:k("container"),children:[jsxs("h2",{id:Fe,className:k("heading"),children:[d,jsx("span",{className:k("accentWord"),children:x})]}),w?jsx("p",{className:k("subheading"),children:w}):null,jsx("div",{className:k("grid"),children:l.map(m=>jsx(Rt,{business:m,cls:k,renderCard:e.renderCard},m.id))})]})})})})}function Rt(e){let{business:n,cls:t}=e,r=$e(n),[i,o]=useState(false);if(e.renderCard)return jsx(Fragment,{children:e.renderCard(n,r)});let s=[n.category,n.location].filter(Boolean).join(" \xB7 ");return jsxs("article",{ref:r.observe,className:t("card"),"data-inr-id":n.id,children:[jsx("div",{className:t("imageBox"),children:i?jsx("div",{className:t("placeholder"),role:"img","aria-label":n.image.alt,children:n.name.trim().charAt(0).toUpperCase()}):jsx("img",{className:t("image"),src:n.image.src,srcSet:`${n.image.src} 1x, ${n.image.src2x} 2x`,alt:n.image.alt,width:n.image.width,height:n.image.height,loading:"lazy",decoding:"async",onError:()=>o(true)})}),jsxs("div",{className:t("body"),children:[jsx("h3",{className:t("name"),children:n.name}),s?jsx("p",{className:t("meta"),children:s}):null,jsx("p",{className:t("description"),children:n.description}),jsxs("a",{...r.linkProps,className:t("button"),children:["Visit Website",jsxs("svg",{className:t("buttonIcon"),"aria-hidden":"true",focusable:"false",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M15 3h6v6"}),jsx("path",{d:"M10 14 21 3"}),jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})]})]})]})]})}
|
|
2
|
+
export{ge as DEFAULT_CDN_BASE,Jn as DEV_ROOT_PUBLIC_KEYS,Nt as DiscoverBusinesses,Fe as HEADING_ID,ze as MANIFEST_SCHEMA_MAJOR,Vn as NetworkProvider,F as SDK_VERSION,Wn as THEME_SLOTS,On as buildHref,W as canonicalJson,zn as defineNetworkConfig,Be as loadDirectory,J as parseManifest,Me as rootPublicKeys,Ke as useNetworkDirectory,$e as useNetworkLink,Q as verifyManifest,ce as verifyManifestBytes};//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|