@storyblok/react 2.0.1 → 2.0.3

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.
@@ -1,3 +1,3 @@
1
- (function(l,u){typeof exports=="object"&&typeof module!="undefined"?u(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],u):(l=typeof globalThis!="undefined"?globalThis:l||self,u(l.storyblokReact={},l.React))})(this,function(l,u){"use strict";var Ce=Object.defineProperty;var T=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var D=(l,u,p)=>u in l?Ce(l,u,{enumerable:!0,configurable:!0,writable:!0,value:p}):l[u]=p,J=(l,u)=>{for(var p in u||(u={}))H.call(u,p)&&D(l,p,u[p]);if(T)for(var p of T(u))q.call(u,p)&&D(l,p,u[p]);return l};var V=(l,u)=>{var p={};for(var g in l)H.call(l,g)&&u.indexOf(g)<0&&(p[g]=l[g]);if(l!=null&&T)for(var g of T(l))u.indexOf(g)<0&&q.call(l,g)&&(p[g]=l[g]);return p};function p(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var g=p(u),F=Object.defineProperty,z=Object.defineProperties,Y=Object.getOwnPropertyDescriptors,j=Object.getOwnPropertySymbols,G=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,$=(o,e,t)=>e in o?F(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,y=(o,e)=>{for(var t in e||(e={}))G.call(e,t)&&$(o,t,e[t]);if(j)for(var t of j(e))Q.call(e,t)&&$(o,t,e[t]);return o},R=(o,e)=>z(o,Y(e));let C=!1;const I=[],W=o=>new Promise((e,t)=>{if(typeof window=="undefined"||(window.storyblokRegisterEvent=s=>{if(window.location===window.parent.location){console.warn("You are not in Draft Mode or in the Visual Editor.");return}C?s():I.push(s)},document.getElementById("storyblok-javascript-bridge")))return;const r=document.createElement("script");r.async=!0,r.src=o,r.id="storyblok-javascript-bridge",r.onerror=s=>t(s),r.onload=s=>{I.forEach(n=>n()),C=!0,e(s)},document.getElementsByTagName("head")[0].appendChild(r)});var X=Object.defineProperty,Z=(o,e,t)=>e in o?X(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,h=(o,e,t)=>(Z(o,typeof e!="symbol"?e+"":e,t),t);function x(o){return!(o!==o||o===1/0||o===-1/0)}function K(o,e,t){if(!x(e))throw new TypeError("Expected `limit` to be a finite number");if(!x(t))throw new TypeError("Expected `interval` to be a finite number");const r=[];let s=[],n=0;const a=function(){n++;const c=setTimeout(function(){n--,r.length>0&&a(),s=s.filter(function(f){return f!==c})},t);s.indexOf(c)<0&&s.push(c);const d=r.shift();d.resolve(o.apply(d.self,d.args))},i=function(...c){const d=this;return new Promise(function(f,P){r.push({resolve:f,reject:P,args:c,self:d}),n<e&&a()})};return i.abort=function(){s.forEach(clearTimeout),s=[],r.forEach(function(c){c.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),r.length=0},i}const ee=function(o,e){const t={};for(const r in o){const s=o[r];e.indexOf(r)>-1&&s!==null&&(t[r]=s)}return t},te=o=>o==="email",re=()=>({singleTag:"hr"}),se=()=>({tag:"blockquote"}),oe=()=>({tag:"ul"}),ne=o=>({tag:["pre",{tag:"code",attrs:o.attrs}]}),ie=()=>({singleTag:"br"}),ae=o=>({tag:`h${o.attrs.level}`}),le=o=>({singleTag:[{tag:"img",attrs:ee(o.attrs,["src","alt","title"])}]}),ce=()=>({tag:"li"}),he=()=>({tag:"ol"}),ue=()=>({tag:"p"}),de=()=>({tag:"b"}),pe=()=>({tag:"strike"}),fe=()=>({tag:"u"}),ge=()=>({tag:"strong"}),ye=()=>({tag:"code"}),me=()=>({tag:"i"}),be=o=>{const e=y({},o.attrs),{linktype:t="url"}=o.attrs;return te(t)&&(e.href=`mailto:${e.href}`),e.anchor&&(e.href=`${e.href}#${e.anchor}`,delete e.anchor),{tag:[{tag:"a",attrs:e}]}},ke=o=>({tag:[{tag:"span",attrs:o.attrs}]}),A={nodes:{horizontal_rule:re,blockquote:se,bullet_list:oe,code_block:ne,hard_break:ie,heading:ae,image:le,list_item:ce,ordered_list:he,paragraph:ue},marks:{bold:de,strike:pe,underline:fe,strong:ge,code:ye,italic:me,link:be,styled:ke}},ve=function(o){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},t=/[&<>"']/g,r=RegExp(t.source);return o&&r.test(o)?o.replace(t,s=>e[s]):o};class b{constructor(e){h(this,"marks"),h(this,"nodes"),e||(e=A),this.marks=e.marks||[],this.nodes=e.nodes||[]}addNode(e,t){this.nodes[e]=t}addMark(e,t){this.marks[e]=t}render(e){if(e&&e.content&&Array.isArray(e.content)){let t="";return e.content.forEach(r=>{t+=this.renderNode(r)}),t}return console.warn("The render method must receive an object with a content field, which is an array"),""}renderNode(e){const t=[];e.marks&&e.marks.forEach(s=>{const n=this.getMatchingMark(s);n&&t.push(this.renderOpeningTag(n.tag))});const r=this.getMatchingNode(e);return r&&r.tag&&t.push(this.renderOpeningTag(r.tag)),e.content?e.content.forEach(s=>{t.push(this.renderNode(s))}):e.text?t.push(ve(e.text)):r&&r.singleTag?t.push(this.renderTag(r.singleTag," /")):r&&r.html&&t.push(r.html),r&&r.tag&&t.push(this.renderClosingTag(r.tag)),e.marks&&e.marks.slice(0).reverse().forEach(s=>{const n=this.getMatchingMark(s);n&&t.push(this.renderClosingTag(n.tag))}),t.join("")}renderTag(e,t){return e.constructor===String?`<${e}${t}>`:e.map(r=>{if(r.constructor===String)return`<${r}${t}>`;{let s=`<${r.tag}`;if(r.attrs)for(const n in r.attrs){const a=r.attrs[n];a!==null&&(s+=` ${n}="${a}"`)}return`${s}${t}>`}}).join("")}renderOpeningTag(e){return this.renderTag(e,"")}renderClosingTag(e){return e.constructor===String?`</${e}>`:e.slice(0).reverse().map(t=>t.constructor===String?`</${t}>`:`</${t.tag}>`).join("")}getMatchingNode(e){const t=this.nodes[e.type];if(typeof t=="function")return t(e)}getMatchingMark(e){const t=this.marks[e.type];if(typeof t=="function")return t(e)}}class M{constructor(){h(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),h(this,"getOptionsPage",(e,t=25,r=1)=>R(y({},e),{per_page:t,page:r})),h(this,"delay",e=>new Promise(t=>setTimeout(t,e))),h(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),h(this,"range",(e=0,t=e)=>{const r=Math.abs(t-e)||0,s=e<t?1:-1;return this.arrayFrom(r,(n,a)=>a*s+e)}),h(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),h(this,"flatMap",(e=[],t)=>e.map(t).reduce((r,s)=>[...r,...s],[]))}stringify(e,t,r){const s=[];for(const n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;const a=e[n],i=r?"":encodeURIComponent(n);let c;typeof a=="object"?c=this.stringify(a,t?t+encodeURIComponent("["+i+"]"):i,Array.isArray(a)):c=(t?t+encodeURIComponent("["+i+"]"):i)+"="+encodeURIComponent(a),s.push(c)}return s.join("&")}}var k=(o=>(o.GET="get",o.DELETE="delete",o.POST="post",o.PUT="put",o))(k||{});class we{constructor(e){h(this,"baseURL"),h(this,"timeout"),h(this,"headers"),h(this,"responseInterceptor"),h(this,"ejectInterceptor"),h(this,"url"),h(this,"parameters"),this.baseURL=e.baseURL,this.timeout=e.timeout?e.timeout*1e3:1e3,this.headers=e.headers||[],this.responseInterceptor=e.responseInterceptor,this.ejectInterceptor=!1,this.url="",this.parameters={}}get(e,t){return this.url=e,this.parameters=t,this._methodHandler(k.GET)}post(e,t){return this.url=e,this.parameters=t,this._methodHandler(k.POST)}put(e,t){return this.url=e,this.parameters=t,this._methodHandler(k.PUT)}delete(e,t){return this.url=e,this.parameters=t,this._methodHandler(k.DELETE)}async _responseHandler(e){const t=[],r={data:{},headers:{},status:0,statusText:""};await e.json().then(s=>{r.data=s});for(const s of e.headers.entries())t[s[0]]=s[1];return r.headers=y({},t),r.status=e.status,r.statusText=e.statusText,r}async _methodHandler(e){const t=new URL(`${this.baseURL}${this.url}`);let r=null;if(e==="get"){const i=new M;t.search=i.stringify(this.parameters)}else r=JSON.stringify(this.parameters);const s=new AbortController,{signal:n}=s,a=setTimeout(()=>s.abort(),this.timeout);try{const i=await fetch(`${t}`,{method:e,headers:this.headers,body:r,signal:n});clearTimeout(a);const c=await this._responseHandler(i);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(c)):this._statusHandler(c)}catch(i){return i}}eject(){this.ejectInterceptor=!0}_statusHandler(e){if(/20[01]/g.test(`${e.status}`))return e;throw{message:new Error(e.statusText||`status: ${e.status}`),response:e}}}let w={};const m={};class _e{constructor(e,t){if(h(this,"client"),h(this,"maxRetries"),h(this,"throttle"),h(this,"accessToken"),h(this,"cache"),h(this,"helpers"),h(this,"relations"),h(this,"links"),h(this,"richTextResolver"),h(this,"resolveNestedRelations"),!t){const n=e.region?`-${e.region}`:"",a=e.https===!1?"http":"https";e.oauthToken?t=`${a}://api${n}.storyblok.com/v1`:t=`${a}://api${n}.storyblok.com/v2`}const r=Object.assign({},e.headers);let s=5;e.oauthToken&&(r.Authorization=e.oauthToken,s=3),e.rateLimit&&(s=e.rateLimit),e.richTextSchema?this.richTextResolver=new b(e.richTextSchema):this.richTextResolver=new b,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries,this.throttle=K(this.throttledRequest,s,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new M,this.resolveNestedRelations=!1,this.client=new we({baseURL:t,timeout:e.timeout||0,headers:r,responseInterceptor:e.responseInterceptor})}setComponentResolver(e){this.richTextResolver.addNode("blok",t=>{let r="";return t.attrs.body.forEach(s=>{r+=e(s.component,s)}),{html:r}})}parseParams(e){return e.version||(e.version="published"),e.token||(e.token=this.getToken()),e.cv||(e.cv=m[e.token]),Array.isArray(e.resolve_relations)&&(e.resolve_relations=e.resolve_relations.join(",")),e}factoryParamOptions(e,t){return this.helpers.isCDNUrl(e)?this.parseParams(t):t}makeRequest(e,t,r,s){const n=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,r,s));return this.cacheResponse(e,n)}get(e,t){t||(t={});const r=`/${e}`,s=this.factoryParamOptions(r,t);return this.cacheResponse(r,s)}async getAll(e,t,r){const s=(t==null?void 0:t.per_page)||25,n=`/${e}`,a=n.split("/"),i=r||a[a.length-1],c=1,d=await this.makeRequest(n,t,s,c),f=d.total?Math.ceil(d.total/s):1,P=await this.helpers.asyncMap(this.helpers.range(c,f),O=>this.makeRequest(n,t,s,O+1));return this.helpers.flatMap([d,...P],O=>Object.values(O.data[i]))}post(e,t){const r=`/${e}`;return Promise.resolve(this.throttle("post",r,t))}put(e,t){const r=`/${e}`;return Promise.resolve(this.throttle("put",r,t))}delete(e,t){const r=`/${e}`;return Promise.resolve(this.throttle("delete",r,t))}getStories(e){return this.get("cdn/stories",e)}getStory(e,t){return this.get(`cdn/stories/${e}`,t)}getToken(){return this.accessToken}ejectInterceptor(){this.client.eject()}_cleanCopy(e){return JSON.parse(JSON.stringify(e))}_insertLinks(e,t){const r=e[t];r&&r.fieldtype=="multilink"&&r.linktype=="story"&&typeof r.id=="string"&&this.links[r.id]?r.story=this._cleanCopy(this.links[r.id]):r&&r.linktype==="story"&&typeof r.uuid=="string"&&this.links[r.uuid]&&(r.story=this._cleanCopy(this.links[r.uuid]))}_insertRelations(e,t,r){if(r.indexOf(`${e.component}.${t}`)>-1){if(typeof e[t]=="string")this.relations[e[t]]&&(e[t]=this._cleanCopy(this.relations[e[t]]));else if(e[t]&&e[t].constructor===Array){const s=[];e[t].forEach(n=>{this.relations[n]&&s.push(this._cleanCopy(this.relations[n]))}),e[t]=s}}}iterateTree(e,t){const r=s=>{if(s!=null){if(s.constructor===Array)for(let n=0;n<s.length;n++)r(s[n]);else if(s.constructor===Object){if(s._stopResolving)return;for(const n in s)(s.component&&s._uid||s.type==="link")&&(this._insertRelations(s,n,t),this._insertLinks(s,n)),r(s[n])}}};r(e.content)}async resolveLinks(e,t){let r=[];if(e.link_uuids){const s=e.link_uuids.length,n=[],a=50;for(let i=0;i<s;i+=a){const c=Math.min(s,i+a);n.push(e.link_uuids.slice(i,c))}for(let i=0;i<n.length;i++)(await this.getStories({per_page:a,language:t.language,version:t.version,by_uuids:n[i].join(",")})).data.stories.forEach(c=>{r.push(c)})}else r=e.links;r.forEach(s=>{this.links[s.uuid]=R(y({},s),{_stopResolving:!0})})}async resolveRelations(e,t){let r=[];if(e.rel_uuids){const s=e.rel_uuids.length,n=[],a=50;for(let i=0;i<s;i+=a){const c=Math.min(s,i+a);n.push(e.rel_uuids.slice(i,c))}for(let i=0;i<n.length;i++)(await this.getStories({per_page:a,language:t.language,version:t.version,by_uuids:n[i].join(",")})).data.stories.forEach(c=>{r.push(c)})}else r=e.rels;r&&r.length>0&&r.forEach(s=>{this.relations[s.uuid]=R(y({},s),{_stopResolving:!0})})}async resolveStories(e,t){var r,s;let n=[];if(typeof t.resolve_relations<"u"&&t.resolve_relations.length>0&&(n=t.resolve_relations.split(","),await this.resolveRelations(e,t)),t.resolve_links&&["1","story","url"].indexOf(t.resolve_links)>-1&&(((r=e.links)==null?void 0:r.length)||((s=e.link_uuids)==null?void 0:s.length))&&await this.resolveLinks(e,t),this.resolveNestedRelations)for(const a in this.relations)this.iterateTree(this.relations[a],n);e.story?this.iterateTree(e.story,n):e.stories.forEach(a=>{this.iterateTree(a,n)})}cacheResponse(e,t,r){return new Promise((s,n)=>{const a=this.helpers.stringify({url:e,params:t}),i=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const c=i.get(a);if(c)return s(c)}try{(async()=>{var c;const d=await this.throttle("get",e,t);let f={data:d.data,headers:d.headers};if((c=d.headers)!=null&&c["per-page"]&&(f=Object.assign({},f,{perPage:d.headers["per-page"]?parseInt(d.headers["per-page"]):0,total:d.headers["per-page"]?parseInt(d.headers.total):0})),d.status!=200)return n(d);(f.data.story||f.data.stories)&&await this.resolveStories(f.data,t),t.version==="published"&&e!="/cdn/spaces/me"&&i.set(a,f),f.data.cv&&t.token&&(t.version=="draft"&&m[t.token]!=f.data.cv&&this.flushCache(),m[t.token]=f.data.cv),s(f)})()}catch{}})}throttledRequest(e,t,r){return this.client[e](t,r)}cacheVersions(){return m}cacheVersion(){return m[this.accessToken]}setCacheVersion(e){this.accessToken&&(m[this.accessToken]=e)}cacheProvider(){switch(this.cache.type){case"memory":return{get(e){return w[e]},getAll(){return w},set(e,t){w[e]=t},flush(){w={}}};default:return{get(){},getAll(){},set(){},flush(){}}}}flushCache(){return this.cacheProvider().flush(),this}}const Te=(o={})=>{const{apiOptions:e}=o;if(!e.accessToken){console.error("You need to provide an access token to interact with Storyblok API. Read https://www.storyblok.com/docs/api/content-delivery#topics/authentication");return}return{storyblokApi:new _e(e)}};var Re=o=>{if(typeof o!="object"||typeof o._editable=="undefined")return{};const e=JSON.parse(o._editable.replace(/^<!--#storyblok#/,"").replace(/-->$/,""));return{"data-blok-c":JSON.stringify(e),"data-blok-uid":e.id+"-"+e.uid}};let E;const Ee="https://app.storyblok.com/f/storyblok-v2-latest.js",_=(o,e,t={})=>{if(typeof window!="undefined"){if(typeof window.storyblokRegisterEvent=="undefined"){console.error("Storyblok Bridge is disabled. Please enable it to use it. Read https://github.com/storyblok/storyblok-js");return}if(!o){console.warn("Story ID is not defined. Please provide a valid ID.");return}window.storyblokRegisterEvent(()=>{new window.StoryblokBridge(t).on(["input","published","change"],s=>{s.action==="input"&&s.story.id===o?e(s.story):(s.action==="change"||s.action==="published")&&s.storyId===o&&window.location.reload()})})}},Se=(o={})=>{const{bridge:e,accessToken:t,use:r=[],apiOptions:s={},richText:n={}}=o;s.accessToken=s.accessToken||t;const a={bridge:e,apiOptions:s};let i={};return r.forEach(c=>{i=y(y({},i),c(a))}),e!==!1&&W(Ee),E=new b(n.schema),n.resolver&&N(E,n.resolver),i},N=(o,e)=>{o.addNode("blok",t=>{let r="";return t.attrs.body.forEach(s=>{r+=e(s.component,s)}),{html:r}})},Pe=(o,e,t)=>{let r=t||E;if(!r){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return o===""?"":o?(e&&(r=new b(e.schema),e.resolver&&N(r,e.resolver)),r.render(o)):(console.warn(`${o} is not a valid Richtext object. This might be because the value of the richtext field is empty.
1
+ (function(l,u){typeof exports=="object"&&typeof module!="undefined"?u(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],u):(l=typeof globalThis!="undefined"?globalThis:l||self,u(l.storyblokReact={},l.React))})(this,function(l,u){"use strict";var Oe=Object.defineProperty;var _=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var U=(l,u,p)=>u in l?Oe(l,u,{enumerable:!0,configurable:!0,writable:!0,value:p}):l[u]=p,D=(l,u)=>{for(var p in u||(u={}))H.call(u,p)&&U(l,p,u[p]);if(_)for(var p of _(u))q.call(u,p)&&U(l,p,u[p]);return l};var J=(l,u)=>{var p={};for(var g in l)H.call(l,g)&&u.indexOf(g)<0&&(p[g]=l[g]);if(l!=null&&_)for(var g of _(l))u.indexOf(g)<0&&q.call(l,g)&&(p[g]=l[g]);return p};function p(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var g=p(u),V=Object.defineProperty,F=Object.defineProperties,z=Object.getOwnPropertyDescriptors,j=Object.getOwnPropertySymbols,Y=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,$=(o,e,t)=>e in o?V(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,y=(o,e)=>{for(var t in e||(e={}))Y.call(e,t)&&$(o,t,e[t]);if(j)for(var t of j(e))Q.call(e,t)&&$(o,t,e[t]);return o},T=(o,e)=>F(o,z(e));let O=!1;const C=[],G=o=>new Promise((e,t)=>{if(typeof window=="undefined"||(window.storyblokRegisterEvent=s=>{if(window.location===window.parent.location){console.warn("You are not in Draft Mode or in the Visual Editor.");return}O?s():C.push(s)},document.getElementById("storyblok-javascript-bridge")))return;const r=document.createElement("script");r.async=!0,r.src=o,r.id="storyblok-javascript-bridge",r.onerror=s=>t(s),r.onload=s=>{C.forEach(n=>n()),O=!0,e(s)},document.getElementsByTagName("head")[0].appendChild(r)});var W=Object.defineProperty,X=(o,e,t)=>e in o?W(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,h=(o,e,t)=>(X(o,typeof e!="symbol"?e+"":e,t),t);function I(o){return!(o!==o||o===1/0||o===-1/0)}function Z(o,e,t){if(!I(e))throw new TypeError("Expected `limit` to be a finite number");if(!I(t))throw new TypeError("Expected `interval` to be a finite number");const r=[];let s=[],n=0;const a=function(){n++;const c=setTimeout(function(){n--,r.length>0&&a(),s=s.filter(function(f){return f!==c})},t);s.indexOf(c)<0&&s.push(c);const d=r.shift();d.resolve(o.apply(d.self,d.args))},i=function(...c){const d=this;return new Promise(function(f,E){r.push({resolve:f,reject:E,args:c,self:d}),n<e&&a()})};return i.abort=function(){s.forEach(clearTimeout),s=[],r.forEach(function(c){c.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),r.length=0},i}const K=function(o,e){const t={};for(const r in o){const s=o[r];e.indexOf(r)>-1&&s!==null&&(t[r]=s)}return t},ee=o=>o==="email",te=()=>({singleTag:"hr"}),re=()=>({tag:"blockquote"}),se=()=>({tag:"ul"}),oe=o=>({tag:["pre",{tag:"code",attrs:o.attrs}]}),ne=()=>({singleTag:"br"}),ie=o=>({tag:`h${o.attrs.level}`}),ae=o=>({singleTag:[{tag:"img",attrs:K(o.attrs,["src","alt","title"])}]}),le=()=>({tag:"li"}),ce=()=>({tag:"ol"}),he=()=>({tag:"p"}),ue=()=>({tag:"b"}),de=()=>({tag:"strike"}),pe=()=>({tag:"u"}),fe=()=>({tag:"strong"}),ge=()=>({tag:"code"}),ye=()=>({tag:"i"}),me=o=>{const e=y({},o.attrs),{linktype:t="url"}=o.attrs;return ee(t)&&(e.href=`mailto:${e.href}`),e.anchor&&(e.href=`${e.href}#${e.anchor}`,delete e.anchor),{tag:[{tag:"a",attrs:e}]}},be=o=>({tag:[{tag:"span",attrs:o.attrs}]}),A={nodes:{horizontal_rule:te,blockquote:re,bullet_list:se,code_block:oe,hard_break:ne,heading:ie,image:ae,list_item:le,ordered_list:ce,paragraph:he},marks:{bold:ue,strike:de,underline:pe,strong:fe,code:ge,italic:ye,link:me,styled:be}},ke=function(o){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},t=/[&<>"']/g,r=RegExp(t.source);return o&&r.test(o)?o.replace(t,s=>e[s]):o};class b{constructor(e){h(this,"marks"),h(this,"nodes"),e||(e=A),this.marks=e.marks||[],this.nodes=e.nodes||[]}addNode(e,t){this.nodes[e]=t}addMark(e,t){this.marks[e]=t}render(e){if(e&&e.content&&Array.isArray(e.content)){let t="";return e.content.forEach(r=>{t+=this.renderNode(r)}),t}return console.warn("The render method must receive an object with a content field, which is an array"),""}renderNode(e){const t=[];e.marks&&e.marks.forEach(s=>{const n=this.getMatchingMark(s);n&&t.push(this.renderOpeningTag(n.tag))});const r=this.getMatchingNode(e);return r&&r.tag&&t.push(this.renderOpeningTag(r.tag)),e.content?e.content.forEach(s=>{t.push(this.renderNode(s))}):e.text?t.push(ke(e.text)):r&&r.singleTag?t.push(this.renderTag(r.singleTag," /")):r&&r.html&&t.push(r.html),r&&r.tag&&t.push(this.renderClosingTag(r.tag)),e.marks&&e.marks.slice(0).reverse().forEach(s=>{const n=this.getMatchingMark(s);n&&t.push(this.renderClosingTag(n.tag))}),t.join("")}renderTag(e,t){return e.constructor===String?`<${e}${t}>`:e.map(r=>{if(r.constructor===String)return`<${r}${t}>`;{let s=`<${r.tag}`;if(r.attrs)for(const n in r.attrs){const a=r.attrs[n];a!==null&&(s+=` ${n}="${a}"`)}return`${s}${t}>`}}).join("")}renderOpeningTag(e){return this.renderTag(e,"")}renderClosingTag(e){return e.constructor===String?`</${e}>`:e.slice(0).reverse().map(t=>t.constructor===String?`</${t}>`:`</${t.tag}>`).join("")}getMatchingNode(e){const t=this.nodes[e.type];if(typeof t=="function")return t(e)}getMatchingMark(e){const t=this.marks[e.type];if(typeof t=="function")return t(e)}}class x{constructor(){h(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),h(this,"getOptionsPage",(e,t=25,r=1)=>T(y({},e),{per_page:t,page:r})),h(this,"delay",e=>new Promise(t=>setTimeout(t,e))),h(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),h(this,"range",(e=0,t=e)=>{const r=Math.abs(t-e)||0,s=e<t?1:-1;return this.arrayFrom(r,(n,a)=>a*s+e)}),h(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),h(this,"flatMap",(e=[],t)=>e.map(t).reduce((r,s)=>[...r,...s],[]))}stringify(e,t,r){const s=[];for(const n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;const a=e[n],i=r?"":encodeURIComponent(n);let c;typeof a=="object"?c=this.stringify(a,t?t+encodeURIComponent("["+i+"]"):i,Array.isArray(a)):c=(t?t+encodeURIComponent("["+i+"]"):i)+"="+encodeURIComponent(a),s.push(c)}return s.join("&")}}class ve{constructor(e){h(this,"baseURL"),h(this,"timeout"),h(this,"headers"),h(this,"responseInterceptor"),h(this,"fetch"),h(this,"ejectInterceptor"),h(this,"url"),h(this,"parameters"),this.baseURL=e.baseURL,this.headers=e.headers||[],this.timeout=e.timeout?e.timeout*1e3:1e3,this.responseInterceptor=e.responseInterceptor,this.fetch=(...t)=>e.fetch?e.fetch(...t):fetch(...t),this.ejectInterceptor=!1,this.url="",this.parameters={}}get(e,t){return this.url=e,this.parameters=t,this._methodHandler("get")}post(e,t){return this.url=e,this.parameters=t,this._methodHandler("post")}put(e,t){return this.url=e,this.parameters=t,this._methodHandler("put")}delete(e,t){return this.url=e,this.parameters=t,this._methodHandler("delete")}async _responseHandler(e){const t=[],r={data:{},headers:{},status:0,statusText:""};await e.json().then(s=>{r.data=s});for(const s of e.headers.entries())t[s[0]]=s[1];return r.headers=y({},t),r.status=e.status,r.statusText=e.statusText,r}async _methodHandler(e){const t=new URL(`${this.baseURL}${this.url}`);let r=null;if(e==="get"){const i=new x;t.search=i.stringify(this.parameters)}else r=JSON.stringify(this.parameters);const s=new AbortController,{signal:n}=s,a=setTimeout(()=>s.abort(),this.timeout);try{const i=await this.fetch(`${t}`,{method:e,headers:this.headers,body:r,signal:n});clearTimeout(a);const c=await this._responseHandler(i);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(c)):this._statusHandler(c)}catch(i){return i}}eject(){this.ejectInterceptor=!0}_statusHandler(e){if(/20[01]/g.test(`${e.status}`))return e;throw{message:new Error(e.statusText||`status: ${e.status}`),response:e}}}let v={};const m={};class we{constructor(e,t){if(h(this,"client"),h(this,"maxRetries"),h(this,"throttle"),h(this,"accessToken"),h(this,"cache"),h(this,"helpers"),h(this,"relations"),h(this,"links"),h(this,"richTextResolver"),h(this,"resolveNestedRelations"),!t){const n=e.region?`-${e.region}`:"",a=e.https===!1?"http":"https";e.oauthToken?t=`${a}://api${n}.storyblok.com/v1`:t=`${a}://api${n}.storyblok.com/v2`}const r=new Headers;r.set("Content-Type","application/json"),r.set("Accept","application/json"),r.forEach((n,a)=>{e.headers&&e.headers[a]&&r.set(a,e.headers[a])});let s=5;e.oauthToken&&(r.set("Authorization",e.oauthToken),s=3),e.rateLimit&&(s=e.rateLimit),e.richTextSchema?this.richTextResolver=new b(e.richTextSchema):this.richTextResolver=new b,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries,this.throttle=Z(this.throttledRequest,s,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new x,this.resolveNestedRelations=!1,this.client=new ve({baseURL:t,timeout:e.timeout||0,headers:r,responseInterceptor:e.responseInterceptor,fetch:e.fetch})}setComponentResolver(e){this.richTextResolver.addNode("blok",t=>{let r="";return t.attrs.body.forEach(s=>{r+=e(s.component,s)}),{html:r}})}parseParams(e){return e.version||(e.version="published"),e.token||(e.token=this.getToken()),e.cv||(e.cv=m[e.token]),Array.isArray(e.resolve_relations)&&(e.resolve_relations=e.resolve_relations.join(",")),e}factoryParamOptions(e,t){return this.helpers.isCDNUrl(e)?this.parseParams(t):t}makeRequest(e,t,r,s){const n=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,r,s));return this.cacheResponse(e,n)}get(e,t){t||(t={});const r=`/${e}`,s=this.factoryParamOptions(r,t);return this.cacheResponse(r,s)}async getAll(e,t,r){const s=(t==null?void 0:t.per_page)||25,n=`/${e}`,a=n.split("/"),i=r||a[a.length-1],c=1,d=await this.makeRequest(n,t,s,c),f=d.total?Math.ceil(d.total/s):1,E=await this.helpers.asyncMap(this.helpers.range(c,f),P=>this.makeRequest(n,t,s,P+1));return this.helpers.flatMap([d,...E],P=>Object.values(P.data[i]))}post(e,t){const r=`/${e}`;return Promise.resolve(this.throttle("post",r,t))}put(e,t){const r=`/${e}`;return Promise.resolve(this.throttle("put",r,t))}delete(e,t){const r=`/${e}`;return Promise.resolve(this.throttle("delete",r,t))}getStories(e){return this.get("cdn/stories",e)}getStory(e,t){return this.get(`cdn/stories/${e}`,t)}getToken(){return this.accessToken}ejectInterceptor(){this.client.eject()}_cleanCopy(e){return JSON.parse(JSON.stringify(e))}_insertLinks(e,t){const r=e[t];r&&r.fieldtype=="multilink"&&r.linktype=="story"&&typeof r.id=="string"&&this.links[r.id]?r.story=this._cleanCopy(this.links[r.id]):r&&r.linktype==="story"&&typeof r.uuid=="string"&&this.links[r.uuid]&&(r.story=this._cleanCopy(this.links[r.uuid]))}_insertRelations(e,t,r){if(r.indexOf(`${e.component}.${t}`)>-1){if(typeof e[t]=="string")this.relations[e[t]]&&(e[t]=this._cleanCopy(this.relations[e[t]]));else if(e[t]&&e[t].constructor===Array){const s=[];e[t].forEach(n=>{this.relations[n]&&s.push(this._cleanCopy(this.relations[n]))}),e[t]=s}}}iterateTree(e,t){const r=s=>{if(s!=null){if(s.constructor===Array)for(let n=0;n<s.length;n++)r(s[n]);else if(s.constructor===Object){if(s._stopResolving)return;for(const n in s)(s.component&&s._uid||s.type==="link")&&(this._insertRelations(s,n,t),this._insertLinks(s,n)),r(s[n])}}};r(e.content)}async resolveLinks(e,t){let r=[];if(e.link_uuids){const s=e.link_uuids.length,n=[],a=50;for(let i=0;i<s;i+=a){const c=Math.min(s,i+a);n.push(e.link_uuids.slice(i,c))}for(let i=0;i<n.length;i++)(await this.getStories({per_page:a,language:t.language,version:t.version,by_uuids:n[i].join(",")})).data.stories.forEach(c=>{r.push(c)})}else r=e.links;r.forEach(s=>{this.links[s.uuid]=T(y({},s),{_stopResolving:!0})})}async resolveRelations(e,t){let r=[];if(e.rel_uuids){const s=e.rel_uuids.length,n=[],a=50;for(let i=0;i<s;i+=a){const c=Math.min(s,i+a);n.push(e.rel_uuids.slice(i,c))}for(let i=0;i<n.length;i++)(await this.getStories({per_page:a,language:t.language,version:t.version,by_uuids:n[i].join(",")})).data.stories.forEach(c=>{r.push(c)})}else r=e.rels;r&&r.length>0&&r.forEach(s=>{this.relations[s.uuid]=T(y({},s),{_stopResolving:!0})})}async resolveStories(e,t){var r,s;let n=[];if(typeof t.resolve_relations<"u"&&t.resolve_relations.length>0&&(typeof t.resolve_relations=="string"&&(n=t.resolve_relations.split(",")),await this.resolveRelations(e,t)),t.resolve_links&&["1","story","url"].indexOf(t.resolve_links)>-1&&(((r=e.links)==null?void 0:r.length)||((s=e.link_uuids)==null?void 0:s.length))&&await this.resolveLinks(e,t),this.resolveNestedRelations)for(const a in this.relations)this.iterateTree(this.relations[a],n);e.story?this.iterateTree(e.story,n):e.stories.forEach(a=>{this.iterateTree(a,n)})}cacheResponse(e,t,r){return new Promise((s,n)=>{const a=this.helpers.stringify({url:e,params:t}),i=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const c=i.get(a);if(c)return s(c)}try{(async()=>{var c;const d=await this.throttle("get",e,t);let f={data:d.data,headers:d.headers};if((c=d.headers)!=null&&c["per-page"]&&(f=Object.assign({},f,{perPage:d.headers["per-page"]?parseInt(d.headers["per-page"]):0,total:d.headers["per-page"]?parseInt(d.headers.total):0})),d.status!=200)return n(d);(f.data.story||f.data.stories)&&await this.resolveStories(f.data,t),t.version==="published"&&e!="/cdn/spaces/me"&&i.set(a,f),f.data.cv&&t.token&&(t.version=="draft"&&m[t.token]!=f.data.cv&&this.flushCache(),m[t.token]=f.data.cv),s(f)})()}catch{}})}throttledRequest(e,t,r){return this.client[e](t,r)}cacheVersions(){return m}cacheVersion(){return m[this.accessToken]}setCacheVersion(e){this.accessToken&&(m[this.accessToken]=e)}cacheProvider(){switch(this.cache.type){case"memory":return{get(e){return v[e]},getAll(){return v},set(e,t){v[e]=t},flush(){v={}}};default:return{get(){},getAll(){},set(){},flush(){}}}}flushCache(){return this.cacheProvider().flush(),this}}const _e=(o={})=>{const{apiOptions:e}=o;if(!e.accessToken){console.error("You need to provide an access token to interact with Storyblok API. Read https://www.storyblok.com/docs/api/content-delivery#topics/authentication");return}return{storyblokApi:new we(e)}};var Te=o=>{if(typeof o!="object"||typeof o._editable=="undefined")return{};const e=JSON.parse(o._editable.replace(/^<!--#storyblok#/,"").replace(/-->$/,""));return{"data-blok-c":JSON.stringify(e),"data-blok-uid":e.id+"-"+e.uid}};let R;const Re="https://app.storyblok.com/f/storyblok-v2-latest.js",w=(o,e,t={})=>{if(typeof window!="undefined"){if(typeof window.storyblokRegisterEvent=="undefined"){console.error("Storyblok Bridge is disabled. Please enable it to use it. Read https://github.com/storyblok/storyblok-js");return}if(!o){console.warn("Story ID is not defined. Please provide a valid ID.");return}window.storyblokRegisterEvent(()=>{new window.StoryblokBridge(t).on(["input","published","change"],s=>{s.action==="input"&&s.story.id===o?e(s.story):(s.action==="change"||s.action==="published")&&s.storyId===o&&window.location.reload()})})}},Se=(o={})=>{const{bridge:e,accessToken:t,use:r=[],apiOptions:s={},richText:n={}}=o;s.accessToken=s.accessToken||t;const a={bridge:e,apiOptions:s};let i={};return r.forEach(c=>{i=y(y({},i),c(a))}),e!==!1&&G(Re),R=new b(n.schema),n.resolver&&M(R,n.resolver),i},M=(o,e)=>{o.addNode("blok",t=>{let r="";return t.attrs.body.forEach(s=>{r+=e(s.component,s)}),{html:r}})},Ee=(o,e,t)=>{let r=t||R;if(!r){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return o===""?"":o?(e&&(r=new b(e.schema),e.resolver&&M(r,e.resolver)),r.render(o)):(console.warn(`${o} is not a valid Richtext object. This might be because the value of the richtext field is empty.
2
2
 
3
- For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`),"")},L=u.forwardRef((r,t)=>{var s=r,{blok:o}=s,e=V(s,["blok"]);if(!o)return console.error("Please provide a 'blok' property to the StoryblokComponent"),g.default.createElement("div",null,"Please provide a blok property to the StoryblokComponent");const n=B(o.component);return n?g.default.createElement(n,J({ref:t,blok:o},e)):g.default.createElement("div",null)});L.displayName="StoryblokComponent";const Oe=(o,e={},t={})=>{let[r,s]=u.useState({});if(!v)return console.error("You can't use useStoryblok if you're not loading apiPlugin."),null;const n=typeof window!="undefined"&&typeof window.storyblokRegisterEvent!="undefined";return u.useEffect(()=>{async function a(){const{data:i}=await v.get(`cdn/stories/${o}`,e);s(i.story),n&&i.story.id&&_(i.story.id,c=>s(c),t)}a()},[o]),r},je=(o=null,e={})=>{let[t,r]=u.useState(o);return!(typeof window!="undefined"&&typeof window.storyblokRegisterEvent!="undefined")||!o?o:(u.useEffect(()=>{r(o),_(t.id,n=>r(n),e)},[o]),t)};let v=null;const U=()=>(v||console.error("You can't use getStoryblokApi if you're not loading apiPlugin."),v);let S={};const B=o=>S[o]?S[o]:(console.error(`Component ${o} doesn't exist.`),!1),$e=(o={})=>{const{storyblokApi:e}=Se(o);v=e,S=o.components};l.RichTextResolver=b,l.RichTextSchema=A,l.StoryblokComponent=L,l.apiPlugin=Te,l.getComponent=B,l.getStoryblokApi=U,l.registerStoryblokBridge=_,l.renderRichText=Pe,l.storyblokEditable=Re,l.storyblokInit=$e,l.useStoryblok=Oe,l.useStoryblokApi=U,l.useStoryblokBridge=_,l.useStoryblokState=je,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
3
+ For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`),"")},N=u.forwardRef((r,t)=>{var s=r,{blok:o}=s,e=J(s,["blok"]);if(!o)return console.error("Please provide a 'blok' property to the StoryblokComponent"),g.default.createElement("div",null,"Please provide a blok property to the StoryblokComponent");const n=B(o.component);return n?g.default.createElement(n,D({ref:t,blok:o},e)):g.default.createElement("div",null)});N.displayName="StoryblokComponent";const Pe=(o,e={},t={})=>{let[r,s]=u.useState({});if(!k)return console.error("You can't use useStoryblok if you're not loading apiPlugin."),null;const n=typeof window!="undefined"&&typeof window.storyblokRegisterEvent!="undefined";return u.useEffect(()=>{async function a(){const{data:i}=await k.get(`cdn/stories/${o}`,e);s(i.story),n&&i.story.id&&w(i.story.id,c=>s(c),t)}a()},[o]),r},je=(o=null,e={})=>{let[t,r]=u.useState(o);return!(typeof window!="undefined"&&typeof window.storyblokRegisterEvent!="undefined")||!o?o:(u.useEffect(()=>{r(o),w(t.id,n=>r(n),e)},[o]),t)};let k=null;const L=()=>(k||console.error("You can't use getStoryblokApi if you're not loading apiPlugin."),k);let S={};const B=o=>S[o]?S[o]:(console.error(`Component ${o} doesn't exist.`),!1),$e=(o={})=>{const{storyblokApi:e}=Se(o);k=e,S=o.components};l.RichTextResolver=b,l.RichTextSchema=A,l.StoryblokComponent=N,l.apiPlugin=_e,l.getComponent=B,l.getStoryblokApi=L,l.registerStoryblokBridge=w,l.renderRichText=Ee,l.storyblokEditable=Te,l.storyblokInit=$e,l.useStoryblok=Pe,l.useStoryblokApi=L,l.useStoryblokBridge=w,l.useStoryblokState=je,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -78,37 +78,37 @@ const loadBridge = (src) => {
78
78
  });
79
79
  };
80
80
  var m = Object.defineProperty;
81
- var R = (i, t, e) => t in i ? m(i, t, { enumerable: true, configurable: true, writable: true, value: e }) : i[t] = e;
82
- var l = (i, t, e) => (R(i, typeof t != "symbol" ? t + "" : t, e), e);
83
- function y(i) {
84
- return !(i !== i || i === 1 / 0 || i === -1 / 0);
81
+ var T = (c, t, e) => t in c ? m(c, t, { enumerable: true, configurable: true, writable: true, value: e }) : c[t] = e;
82
+ var l = (c, t, e) => (T(c, typeof t != "symbol" ? t + "" : t, e), e);
83
+ function k(c) {
84
+ return !(c !== c || c === 1 / 0 || c === -1 / 0);
85
85
  }
86
- function _(i, t, e) {
87
- if (!y(t))
86
+ function _(c, t, e) {
87
+ if (!k(t))
88
88
  throw new TypeError("Expected `limit` to be a finite number");
89
- if (!y(e))
89
+ if (!k(e))
90
90
  throw new TypeError("Expected `interval` to be a finite number");
91
91
  const s = [];
92
92
  let r = [], n = 0;
93
- const c = function() {
93
+ const i = function() {
94
94
  n++;
95
95
  const a = setTimeout(function() {
96
- n--, s.length > 0 && c(), r = r.filter(function(u) {
96
+ n--, s.length > 0 && i(), r = r.filter(function(u) {
97
97
  return u !== a;
98
98
  });
99
99
  }, e);
100
100
  r.indexOf(a) < 0 && r.push(a);
101
101
  const h = s.shift();
102
- h.resolve(i.apply(h.self, h.args));
102
+ h.resolve(c.apply(h.self, h.args));
103
103
  }, o = function(...a) {
104
104
  const h = this;
105
- return new Promise(function(u, g) {
105
+ return new Promise(function(u, p) {
106
106
  s.push({
107
107
  resolve: u,
108
- reject: g,
108
+ reject: p,
109
109
  args: a,
110
110
  self: h
111
- }), n < t && c();
111
+ }), n < t && i();
112
112
  });
113
113
  };
114
114
  return o.abort = function() {
@@ -119,41 +119,41 @@ function _(i, t, e) {
119
119
  }), s.length = 0;
120
120
  }, o;
121
121
  }
122
- const b = function(i, t) {
122
+ const R = function(c, t) {
123
123
  const e = {};
124
- for (const s in i) {
125
- const r = i[s];
124
+ for (const s in c) {
125
+ const r = c[s];
126
126
  t.indexOf(s) > -1 && r !== null && (e[s] = r);
127
127
  }
128
128
  return e;
129
- }, $ = (i) => i === "email", w = () => ({
129
+ }, b = (c) => c === "email", w = () => ({
130
130
  singleTag: "hr"
131
- }), E = () => ({
131
+ }), $ = () => ({
132
132
  tag: "blockquote"
133
133
  }), x = () => ({
134
134
  tag: "ul"
135
- }), P = (i) => ({
135
+ }), E = (c) => ({
136
136
  tag: [
137
137
  "pre",
138
138
  {
139
139
  tag: "code",
140
- attrs: i.attrs
140
+ attrs: c.attrs
141
141
  }
142
142
  ]
143
- }), O = () => ({
143
+ }), P = () => ({
144
144
  singleTag: "br"
145
- }), S = (i) => ({
146
- tag: `h${i.attrs.level}`
147
- }), C = (i) => ({
145
+ }), S = (c) => ({
146
+ tag: `h${c.attrs.level}`
147
+ }), C = (c) => ({
148
148
  singleTag: [
149
149
  {
150
150
  tag: "img",
151
- attrs: b(i.attrs, ["src", "alt", "title"])
151
+ attrs: R(c.attrs, ["src", "alt", "title"])
152
152
  }
153
153
  ]
154
- }), L = () => ({
154
+ }), O = () => ({
155
155
  tag: "li"
156
- }), U = () => ({
156
+ }), M = () => ({
157
157
  tag: "ol"
158
158
  }), H = () => ({
159
159
  tag: "p"
@@ -161,17 +161,17 @@ const b = function(i, t) {
161
161
  tag: "b"
162
162
  }), I = () => ({
163
163
  tag: "strike"
164
- }), M = () => ({
164
+ }), L = () => ({
165
165
  tag: "u"
166
166
  }), N = () => ({
167
167
  tag: "strong"
168
- }), q = () => ({
168
+ }), U = () => ({
169
169
  tag: "code"
170
- }), z = () => ({
170
+ }), q = () => ({
171
171
  tag: "i"
172
- }), F = (i) => {
173
- const t = __spreadValues2({}, i.attrs), { linktype: e = "url" } = i.attrs;
174
- return $(e) && (t.href = `mailto:${t.href}`), t.anchor && (t.href = `${t.href}#${t.anchor}`, delete t.anchor), {
172
+ }), z = (c) => {
173
+ const t = __spreadValues2({}, c.attrs), { linktype: e = "url" } = c.attrs;
174
+ return b(e) && (t.href = `mailto:${t.href}`), t.anchor && (t.href = `${t.href}#${t.anchor}`, delete t.anchor), {
175
175
  tag: [
176
176
  {
177
177
  tag: "a",
@@ -179,37 +179,37 @@ const b = function(i, t) {
179
179
  }
180
180
  ]
181
181
  };
182
- }, V = (i) => ({
182
+ }, j = (c) => ({
183
183
  tag: [
184
184
  {
185
185
  tag: "span",
186
- attrs: i.attrs
186
+ attrs: c.attrs
187
187
  }
188
188
  ]
189
- }), j = {
189
+ }), F = {
190
190
  nodes: {
191
191
  horizontal_rule: w,
192
- blockquote: E,
192
+ blockquote: $,
193
193
  bullet_list: x,
194
- code_block: P,
195
- hard_break: O,
194
+ code_block: E,
195
+ hard_break: P,
196
196
  heading: S,
197
197
  image: C,
198
- list_item: L,
199
- ordered_list: U,
198
+ list_item: O,
199
+ ordered_list: M,
200
200
  paragraph: H
201
201
  },
202
202
  marks: {
203
203
  bold: A,
204
204
  strike: I,
205
- underline: M,
205
+ underline: L,
206
206
  strong: N,
207
- code: q,
208
- italic: z,
209
- link: F,
210
- styled: V
207
+ code: U,
208
+ italic: q,
209
+ link: z,
210
+ styled: j
211
211
  }
212
- }, J = function(i) {
212
+ }, V = function(c) {
213
213
  const t = {
214
214
  "&": "&amp;",
215
215
  "<": "&lt;",
@@ -217,13 +217,13 @@ const b = function(i, t) {
217
217
  '"': "&quot;",
218
218
  "'": "&#39;"
219
219
  }, e = /[&<>"']/g, s = RegExp(e.source);
220
- return i && s.test(i) ? i.replace(e, (r) => t[r]) : i;
220
+ return c && s.test(c) ? c.replace(e, (r) => t[r]) : c;
221
221
  };
222
- class v {
222
+ class y {
223
223
  constructor(t) {
224
224
  l(this, "marks");
225
225
  l(this, "nodes");
226
- t || (t = j), this.marks = t.marks || [], this.nodes = t.nodes || [];
226
+ t || (t = F), this.marks = t.marks || [], this.nodes = t.nodes || [];
227
227
  }
228
228
  addNode(t, e) {
229
229
  this.nodes[t] = e;
@@ -249,7 +249,7 @@ class v {
249
249
  const s = this.getMatchingNode(t);
250
250
  return s && s.tag && e.push(this.renderOpeningTag(s.tag)), t.content ? t.content.forEach((r) => {
251
251
  e.push(this.renderNode(r));
252
- }) : t.text ? e.push(J(t.text)) : s && s.singleTag ? e.push(this.renderTag(s.singleTag, " /")) : s && s.html && e.push(s.html), s && s.tag && e.push(this.renderClosingTag(s.tag)), t.marks && t.marks.slice(0).reverse().forEach((r) => {
252
+ }) : t.text ? e.push(V(t.text)) : s && s.singleTag ? e.push(this.renderTag(s.singleTag, " /")) : s && s.html && e.push(s.html), s && s.tag && e.push(this.renderClosingTag(s.tag)), t.marks && t.marks.slice(0).reverse().forEach((r) => {
253
253
  const n = this.getMatchingMark(r);
254
254
  n && e.push(this.renderClosingTag(n.tag));
255
255
  }), e.join("");
@@ -261,9 +261,9 @@ class v {
261
261
  {
262
262
  let n = `<${r.tag}`;
263
263
  if (r.attrs)
264
- for (const c in r.attrs) {
265
- const o = r.attrs[c];
266
- o !== null && (n += ` ${c}="${o}"`);
264
+ for (const i in r.attrs) {
265
+ const o = r.attrs[i];
266
+ o !== null && (n += ` ${i}="${o}"`);
267
267
  }
268
268
  return `${n}${e}>`;
269
269
  }
@@ -286,7 +286,7 @@ class v {
286
286
  return e(t);
287
287
  }
288
288
  }
289
- class T {
289
+ class v {
290
290
  constructor() {
291
291
  l(this, "isCDNUrl", (t = "") => t.indexOf("/cdn/") > -1);
292
292
  l(this, "getOptionsPage", (t, e = 25, s = 1) => __spreadProps(__spreadValues2({}, t), {
@@ -297,7 +297,7 @@ class T {
297
297
  l(this, "arrayFrom", (t = 0, e) => [...Array(t)].map(e));
298
298
  l(this, "range", (t = 0, e = t) => {
299
299
  const s = Math.abs(e - t) || 0, r = t < e ? 1 : -1;
300
- return this.arrayFrom(s, (n, c) => c * r + t);
300
+ return this.arrayFrom(s, (n, i) => i * r + t);
301
301
  });
302
302
  l(this, "asyncMap", async (t, e) => Promise.all(t.map(e)));
303
303
  l(this, "flatMap", (t = [], e) => t.map(e).reduce((s, r) => [...s, ...r], []));
@@ -307,36 +307,36 @@ class T {
307
307
  for (const n in t) {
308
308
  if (!Object.prototype.hasOwnProperty.call(t, n))
309
309
  continue;
310
- const c = t[n], o = s ? "" : encodeURIComponent(n);
310
+ const i = t[n], o = s ? "" : encodeURIComponent(n);
311
311
  let a;
312
- typeof c == "object" ? a = this.stringify(c, e ? e + encodeURIComponent("[" + o + "]") : o, Array.isArray(c)) : a = (e ? e + encodeURIComponent("[" + o + "]") : o) + "=" + encodeURIComponent(c), r.push(a);
312
+ typeof i == "object" ? a = this.stringify(i, e ? e + encodeURIComponent("[" + o + "]") : o, Array.isArray(i)) : a = (e ? e + encodeURIComponent("[" + o + "]") : o) + "=" + encodeURIComponent(i), r.push(a);
313
313
  }
314
314
  return r.join("&");
315
315
  }
316
316
  }
317
- var f = /* @__PURE__ */ ((i) => (i.GET = "get", i.DELETE = "delete", i.POST = "post", i.PUT = "put", i))(f || {});
318
- class G {
317
+ class J {
319
318
  constructor(t) {
320
319
  l(this, "baseURL");
321
320
  l(this, "timeout");
322
321
  l(this, "headers");
323
322
  l(this, "responseInterceptor");
323
+ l(this, "fetch");
324
324
  l(this, "ejectInterceptor");
325
325
  l(this, "url");
326
326
  l(this, "parameters");
327
- this.baseURL = t.baseURL, this.timeout = t.timeout ? t.timeout * 1e3 : 1e3, this.headers = t.headers || [], this.responseInterceptor = t.responseInterceptor, this.ejectInterceptor = false, this.url = "", this.parameters = {};
327
+ this.baseURL = t.baseURL, this.headers = t.headers || [], this.timeout = t.timeout ? t.timeout * 1e3 : 1e3, this.responseInterceptor = t.responseInterceptor, this.fetch = (...e) => t.fetch ? t.fetch(...e) : fetch(...e), this.ejectInterceptor = false, this.url = "", this.parameters = {};
328
328
  }
329
329
  get(t, e) {
330
- return this.url = t, this.parameters = e, this._methodHandler(f.GET);
330
+ return this.url = t, this.parameters = e, this._methodHandler("get");
331
331
  }
332
332
  post(t, e) {
333
- return this.url = t, this.parameters = e, this._methodHandler(f.POST);
333
+ return this.url = t, this.parameters = e, this._methodHandler("post");
334
334
  }
335
335
  put(t, e) {
336
- return this.url = t, this.parameters = e, this._methodHandler(f.PUT);
336
+ return this.url = t, this.parameters = e, this._methodHandler("put");
337
337
  }
338
338
  delete(t, e) {
339
- return this.url = t, this.parameters = e, this._methodHandler(f.DELETE);
339
+ return this.url = t, this.parameters = e, this._methodHandler("delete");
340
340
  }
341
341
  async _responseHandler(t) {
342
342
  const e = [], s = {
@@ -356,19 +356,19 @@ class G {
356
356
  const e = new URL(`${this.baseURL}${this.url}`);
357
357
  let s = null;
358
358
  if (t === "get") {
359
- const o = new T();
359
+ const o = new v();
360
360
  e.search = o.stringify(this.parameters);
361
361
  } else
362
362
  s = JSON.stringify(this.parameters);
363
- const r = new AbortController(), { signal: n } = r, c = setTimeout(() => r.abort(), this.timeout);
363
+ const r = new AbortController(), { signal: n } = r, i = setTimeout(() => r.abort(), this.timeout);
364
364
  try {
365
- const o = await fetch(`${e}`, {
365
+ const o = await this.fetch(`${e}`, {
366
366
  method: t,
367
367
  headers: this.headers,
368
368
  body: s,
369
369
  signal: n
370
370
  });
371
- clearTimeout(c);
371
+ clearTimeout(i);
372
372
  const a = await this._responseHandler(o);
373
373
  return this.responseInterceptor && !this.ejectInterceptor ? this._statusHandler(this.responseInterceptor(a)) : this._statusHandler(a);
374
374
  } catch (o) {
@@ -387,7 +387,7 @@ class G {
387
387
  };
388
388
  }
389
389
  }
390
- let p = {};
390
+ let f = {};
391
391
  const d = {};
392
392
  class Q {
393
393
  constructor(t, e) {
@@ -402,16 +402,20 @@ class Q {
402
402
  l(this, "richTextResolver");
403
403
  l(this, "resolveNestedRelations");
404
404
  if (!e) {
405
- const n = t.region ? `-${t.region}` : "", c = t.https === false ? "http" : "https";
406
- t.oauthToken ? e = `${c}://api${n}.storyblok.com/v1` : e = `${c}://api${n}.storyblok.com/v2`;
405
+ const n = t.region ? `-${t.region}` : "", i = t.https === false ? "http" : "https";
406
+ t.oauthToken ? e = `${i}://api${n}.storyblok.com/v1` : e = `${i}://api${n}.storyblok.com/v2`;
407
407
  }
408
- const s = Object.assign({}, t.headers);
408
+ const s = new Headers();
409
+ s.set("Content-Type", "application/json"), s.set("Accept", "application/json"), s.forEach((n, i) => {
410
+ t.headers && t.headers[i] && s.set(i, t.headers[i]);
411
+ });
409
412
  let r = 5;
410
- t.oauthToken && (s.Authorization = t.oauthToken, r = 3), t.rateLimit && (r = t.rateLimit), t.richTextSchema ? this.richTextResolver = new v(t.richTextSchema) : this.richTextResolver = new v(), t.componentResolver && this.setComponentResolver(t.componentResolver), this.maxRetries = t.maxRetries, this.throttle = _(this.throttledRequest, r, 1e3), this.accessToken = t.accessToken || "", this.relations = {}, this.links = {}, this.cache = t.cache || { clear: "manual" }, this.helpers = new T(), this.resolveNestedRelations = false, this.client = new G({
413
+ t.oauthToken && (s.set("Authorization", t.oauthToken), r = 3), t.rateLimit && (r = t.rateLimit), t.richTextSchema ? this.richTextResolver = new y(t.richTextSchema) : this.richTextResolver = new y(), t.componentResolver && this.setComponentResolver(t.componentResolver), this.maxRetries = t.maxRetries, this.throttle = _(this.throttledRequest, r, 1e3), this.accessToken = t.accessToken || "", this.relations = {}, this.links = {}, this.cache = t.cache || { clear: "manual" }, this.helpers = new v(), this.resolveNestedRelations = false, this.client = new J({
411
414
  baseURL: e,
412
415
  timeout: t.timeout || 0,
413
416
  headers: s,
414
- responseInterceptor: t.responseInterceptor
417
+ responseInterceptor: t.responseInterceptor,
418
+ fetch: t.fetch
415
419
  });
416
420
  }
417
421
  setComponentResolver(t) {
@@ -440,8 +444,8 @@ class Q {
440
444
  return this.cacheResponse(s, r);
441
445
  }
442
446
  async getAll(t, e, s) {
443
- const r = (e == null ? void 0 : e.per_page) || 25, n = `/${t}`, c = n.split("/"), o = s || c[c.length - 1], a = 1, h = await this.makeRequest(n, e, r, a), u = h.total ? Math.ceil(h.total / r) : 1, g = await this.helpers.asyncMap(this.helpers.range(a, u), (k) => this.makeRequest(n, e, r, k + 1));
444
- return this.helpers.flatMap([h, ...g], (k) => Object.values(k.data[o]));
447
+ const r = (e == null ? void 0 : e.per_page) || 25, n = `/${t}`, i = n.split("/"), o = s || i[i.length - 1], a = 1, h = await this.makeRequest(n, e, r, a), u = h.total ? Math.ceil(h.total / r) : 1, p = await this.helpers.asyncMap(this.helpers.range(a, u), (g) => this.makeRequest(n, e, r, g + 1));
448
+ return this.helpers.flatMap([h, ...p], (g) => Object.values(g.data[o]));
445
449
  }
446
450
  post(t, e) {
447
451
  const s = `/${t}`;
@@ -505,14 +509,14 @@ class Q {
505
509
  async resolveLinks(t, e) {
506
510
  let s = [];
507
511
  if (t.link_uuids) {
508
- const r = t.link_uuids.length, n = [], c = 50;
509
- for (let o = 0; o < r; o += c) {
510
- const a = Math.min(r, o + c);
512
+ const r = t.link_uuids.length, n = [], i = 50;
513
+ for (let o = 0; o < r; o += i) {
514
+ const a = Math.min(r, o + i);
511
515
  n.push(t.link_uuids.slice(o, a));
512
516
  }
513
517
  for (let o = 0; o < n.length; o++)
514
518
  (await this.getStories({
515
- per_page: c,
519
+ per_page: i,
516
520
  language: e.language,
517
521
  version: e.version,
518
522
  by_uuids: n[o].join(",")
@@ -528,14 +532,14 @@ class Q {
528
532
  async resolveRelations(t, e) {
529
533
  let s = [];
530
534
  if (t.rel_uuids) {
531
- const r = t.rel_uuids.length, n = [], c = 50;
532
- for (let o = 0; o < r; o += c) {
533
- const a = Math.min(r, o + c);
535
+ const r = t.rel_uuids.length, n = [], i = 50;
536
+ for (let o = 0; o < r; o += i) {
537
+ const a = Math.min(r, o + i);
534
538
  n.push(t.rel_uuids.slice(o, a));
535
539
  }
536
540
  for (let o = 0; o < n.length; o++)
537
541
  (await this.getStories({
538
- per_page: c,
542
+ per_page: i,
539
543
  language: e.language,
540
544
  version: e.version,
541
545
  by_uuids: n[o].join(",")
@@ -551,18 +555,18 @@ class Q {
551
555
  async resolveStories(t, e) {
552
556
  var r, n;
553
557
  let s = [];
554
- if (typeof e.resolve_relations < "u" && e.resolve_relations.length > 0 && (s = e.resolve_relations.split(","), await this.resolveRelations(t, e)), e.resolve_links && ["1", "story", "url"].indexOf(e.resolve_links) > -1 && (((r = t.links) == null ? void 0 : r.length) || ((n = t.link_uuids) == null ? void 0 : n.length)) && await this.resolveLinks(t, e), this.resolveNestedRelations)
555
- for (const c in this.relations)
556
- this.iterateTree(this.relations[c], s);
557
- t.story ? this.iterateTree(t.story, s) : t.stories.forEach((c) => {
558
- this.iterateTree(c, s);
558
+ if (typeof e.resolve_relations < "u" && e.resolve_relations.length > 0 && (typeof e.resolve_relations == "string" && (s = e.resolve_relations.split(",")), await this.resolveRelations(t, e)), e.resolve_links && ["1", "story", "url"].indexOf(e.resolve_links) > -1 && (((r = t.links) == null ? void 0 : r.length) || ((n = t.link_uuids) == null ? void 0 : n.length)) && await this.resolveLinks(t, e), this.resolveNestedRelations)
559
+ for (const i in this.relations)
560
+ this.iterateTree(this.relations[i], s);
561
+ t.story ? this.iterateTree(t.story, s) : t.stories.forEach((i) => {
562
+ this.iterateTree(i, s);
559
563
  });
560
564
  }
561
565
  cacheResponse(t, e, s) {
562
566
  return new Promise((r, n) => {
563
- const c = this.helpers.stringify({ url: t, params: e }), o = this.cacheProvider();
567
+ const i = this.helpers.stringify({ url: t, params: e }), o = this.cacheProvider();
564
568
  if (this.cache.clear === "auto" && e.version === "draft" && this.flushCache(), e.version === "published" && t != "/cdn/spaces/me") {
565
- const a = o.get(c);
569
+ const a = o.get(i);
566
570
  if (a)
567
571
  return r(a);
568
572
  }
@@ -576,7 +580,7 @@ class Q {
576
580
  total: a.headers["per-page"] ? parseInt(a.headers.total) : 0
577
581
  })), a.status != 200)
578
582
  return n(a);
579
- (h.data.story || h.data.stories) && await this.resolveStories(h.data, e), e.version === "published" && t != "/cdn/spaces/me" && o.set(c, h), h.data.cv && e.token && (e.version == "draft" && d[e.token] != h.data.cv && this.flushCache(), d[e.token] = h.data.cv), r(h);
583
+ (h.data.story || h.data.stories) && await this.resolveStories(h.data, e), e.version === "published" && t != "/cdn/spaces/me" && o.set(i, h), h.data.cv && e.token && (e.version == "draft" && d[e.token] != h.data.cv && this.flushCache(), d[e.token] = h.data.cv), r(h);
580
584
  })();
581
585
  } catch {
582
586
  }
@@ -599,16 +603,16 @@ class Q {
599
603
  case "memory":
600
604
  return {
601
605
  get(t) {
602
- return p[t];
606
+ return f[t];
603
607
  },
604
608
  getAll() {
605
- return p;
609
+ return f;
606
610
  },
607
611
  set(t, e) {
608
- p[t] = e;
612
+ f[t] = e;
609
613
  },
610
614
  flush() {
611
- p = {};
615
+ f = {};
612
616
  }
613
617
  };
614
618
  default:
@@ -689,7 +693,7 @@ const storyblokInit$1 = (pluginOptions = {}) => {
689
693
  if (bridge !== false) {
690
694
  loadBridge(bridgeLatest);
691
695
  }
692
- richTextResolver = new v(richText.schema);
696
+ richTextResolver = new y(richText.schema);
693
697
  if (richText.resolver) {
694
698
  setComponentResolver(richTextResolver, richText.resolver);
695
699
  }
@@ -721,7 +725,7 @@ const renderRichText = (data, options, resolverInstance) => {
721
725
  return "";
722
726
  }
723
727
  if (options) {
724
- localResolver = new v(options.schema);
728
+ localResolver = new y(options.schema);
725
729
  if (options.resolver) {
726
730
  setComponentResolver(localResolver, options.resolver);
727
731
  }
@@ -795,4 +799,4 @@ const storyblokInit = (pluginOptions = {}) => {
795
799
  storyblokApiInstance = storyblokApi;
796
800
  componentsMap = pluginOptions.components;
797
801
  };
798
- export { v as RichTextResolver, j as RichTextSchema, StoryblokComponent, apiFactory as apiPlugin, getComponent, useStoryblokApi as getStoryblokApi, useStoryblokBridge as registerStoryblokBridge, renderRichText, editable as storyblokEditable, storyblokInit, useStoryblok, useStoryblokApi, useStoryblokBridge, useStoryblokState };
802
+ export { y as RichTextResolver, F as RichTextSchema, StoryblokComponent, apiFactory as apiPlugin, getComponent, useStoryblokApi as getStoryblokApi, useStoryblokBridge as registerStoryblokBridge, renderRichText, editable as storyblokEditable, storyblokInit, useStoryblok, useStoryblokApi, useStoryblokBridge, useStoryblokState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storyblok/react",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "SDK to integrate Storyblok into your project using React.",
5
5
  "main": "./dist/storyblok-react.js",
6
6
  "module": "./dist/storyblok-react.mjs",
@@ -24,7 +24,7 @@
24
24
  "prepublishOnly": "npm run build && cp ../README.md ./"
25
25
  },
26
26
  "dependencies": {
27
- "@storyblok/js": "^2.0.5"
27
+ "@storyblok/js": "^2.0.6"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@babel/core": "^7.20.7",