@storyblok/js 2.0.13 → 2.0.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
- (function(d,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(d=typeof globalThis<"u"?globalThis:d||self,p(d.storyblok={}))})(this,function(d){"use strict";let p=!1;const v=[],T=n=>new Promise((e,t)=>{if(typeof window>"u"||(window.storyblokRegisterEvent=r=>{if(window.location===window.parent.location){console.warn("You are not in Draft Mode or in the Visual Editor.");return}p?r():v.push(r)},document.getElementById("storyblok-javascript-bridge")))return;const s=document.createElement("script");s.async=!0,s.src=n,s.id="storyblok-javascript-bridge",s.onerror=r=>t(r),s.onload=r=>{v.forEach(o=>o()),p=!0,e(r)},document.getElementsByTagName("head")[0].appendChild(s)});var S=Object.defineProperty,x=(n,e,t)=>e in n?S(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,c=(n,e,t)=>(x(n,typeof e!="symbol"?e+"":e,t),t);function w(n){return!(n!==n||n===1/0||n===-1/0)}function P(n,e,t){if(!w(e))throw new TypeError("Expected `limit` to be a finite number");if(!w(t))throw new TypeError("Expected `interval` to be a finite number");const s=[];let r=[],o=0;const i=function(){o++;const l=setTimeout(function(){o--,s.length>0&&i(),r=r.filter(function(u){return u!==l})},t);r.indexOf(l)<0&&r.push(l);const h=s.shift();h.resolve(n.apply(h.self,h.args))},a=function(...l){const h=this;return new Promise(function(u,k){s.push({resolve:u,reject:k,args:l,self:h}),o<e&&i()})};return a.abort=function(){r.forEach(clearTimeout),r=[],s.forEach(function(l){l.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),s.length=0},a}const O=function(n,e){const t={};for(const s in n){const r=n[s];e.indexOf(s)>-1&&r!==null&&(t[s]=r)}return t},I=n=>n==="email",C=()=>({singleTag:"hr"}),A=()=>({tag:"blockquote"}),M=()=>({tag:"ul"}),N=n=>({tag:["pre",{tag:"code",attrs:n.attrs}]}),L=()=>({singleTag:"br"}),U=n=>({tag:`h${n.attrs.level}`}),B=n=>({singleTag:[{tag:"img",attrs:O(n.attrs,["src","alt","title"])}]}),H=()=>({tag:"li"}),q=()=>({tag:"ol"}),D=()=>({tag:"p"}),J=()=>({tag:"b"}),F=()=>({tag:"strike"}),V=()=>({tag:"u"}),z=()=>({tag:"strong"}),Y=()=>({tag:"code"}),K=()=>({tag:"i"}),Q=n=>{const e={...n.attrs},{linktype:t="url"}=n.attrs;return I(t)&&(e.href=`mailto:${e.href}`),e.anchor&&(e.href=`${e.href}#${e.anchor}`,delete e.anchor),{tag:[{tag:"a",attrs:e}]}},G=n=>({tag:[{tag:"span",attrs:n.attrs}]}),R={nodes:{horizontal_rule:C,blockquote:A,bullet_list:M,code_block:N,hard_break:L,heading:U,image:B,list_item:H,ordered_list:q,paragraph:D},marks:{bold:J,strike:F,underline:V,strong:z,code:Y,italic:K,link:Q,styled:G}},W=function(n){const e={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},t=/[&<>"']/g,s=RegExp(t.source);return n&&s.test(n)?n.replace(t,r=>e[r]):n};class f{constructor(e){c(this,"marks"),c(this,"nodes"),e||(e=R),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(s=>{t+=this.renderNode(s)}),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(r=>{const o=this.getMatchingMark(r);o&&t.push(this.renderOpeningTag(o.tag))});const s=this.getMatchingNode(e);return s&&s.tag&&t.push(this.renderOpeningTag(s.tag)),e.content?e.content.forEach(r=>{t.push(this.renderNode(r))}):e.text?t.push(W(e.text)):s&&s.singleTag?t.push(this.renderTag(s.singleTag," /")):s&&s.html&&t.push(s.html),s&&s.tag&&t.push(this.renderClosingTag(s.tag)),e.marks&&e.marks.slice(0).reverse().forEach(r=>{const o=this.getMatchingMark(r);o&&t.push(this.renderClosingTag(o.tag))}),t.join("")}renderTag(e,t){return e.constructor===String?`<${e}${t}>`:e.map(s=>{if(s.constructor===String)return`<${s}${t}>`;{let r=`<${s.tag}`;if(s.attrs)for(const o in s.attrs){const i=s.attrs[o];i!==null&&(r+=` ${o}="${i}"`)}return`${r}${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 _{constructor(){c(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),c(this,"getOptionsPage",(e,t=25,s=1)=>({...e,per_page:t,page:s})),c(this,"delay",e=>new Promise(t=>setTimeout(t,e))),c(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),c(this,"range",(e=0,t=e)=>{const s=Math.abs(t-e)||0,r=e<t?1:-1;return this.arrayFrom(s,(o,i)=>i*r+e)}),c(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),c(this,"flatMap",(e=[],t)=>e.map(t).reduce((s,r)=>[...s,...r],[]))}stringify(e,t,s){const r=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o))continue;const i=e[o],a=s?"":encodeURIComponent(o);let l;typeof i=="object"?l=this.stringify(i,t?t+encodeURIComponent("["+a+"]"):a,Array.isArray(i)):l=(t?t+encodeURIComponent("["+a+"]"):a)+"="+encodeURIComponent(i),r.push(l)}return r.join("&")}}class X{constructor(e){c(this,"baseURL"),c(this,"timeout"),c(this,"headers"),c(this,"responseInterceptor"),c(this,"fetch"),c(this,"ejectInterceptor"),c(this,"url"),c(this,"parameters"),this.baseURL=e.baseURL,this.headers=e.headers||[],this.timeout=e!=null&&e.timeout?e.timeout*1e3:0,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=[],s={data:{},headers:{},status:0,statusText:""};e.status!==204&&await e.json().then(r=>{s.data=r});for(const r of e.headers.entries())t[r[0]]=r[1];return s.headers={...t},s.status=e.status,s.statusText=e.statusText,s}async _methodHandler(e){let t=`${this.baseURL}${this.url}`,s=null;if(e==="get"){const l=new _;t=`${this.baseURL}${this.url}?${l.stringify(this.parameters)}`}else s=JSON.stringify(this.parameters);const r=new URL(t),o=new AbortController,{signal:i}=o;let a;this.timeout&&(a=setTimeout(()=>o.abort(),this.timeout));try{const l=await this.fetch(`${r}`,{method:e,headers:this.headers,body:s,signal:i});this.timeout&&clearTimeout(a);const h=await this._responseHandler(l);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(h)):this._statusHandler(h)}catch(l){return{message:l}}}eject(){this.ejectInterceptor=!0}_statusHandler(e){const t=/20[0-6]/g;return new Promise((s,r)=>{if(t.test(`${e.status}`))return s(e);const o={message:new Error(e.statusText),status:e.status,response:e.data.error||e.data.slug};r(o)})}}let m={};const g={};class Z{constructor(e,t){if(c(this,"client"),c(this,"maxRetries"),c(this,"throttle"),c(this,"accessToken"),c(this,"cache"),c(this,"helpers"),c(this,"relations"),c(this,"links"),c(this,"richTextResolver"),c(this,"resolveNestedRelations"),!t){const o=e.region?`-${e.region}`:"",i=e.https===!1?"http":"https";e.oauthToken?t=`${i}://api${o}.storyblok.com/v1`:t=`${i}://api${o}.storyblok.com/v2`}const s=new Headers;s.set("Content-Type","application/json"),s.set("Accept","application/json"),s.forEach((o,i)=>{e.headers&&e.headers[i]&&s.set(i,e.headers[i])});let r=5;e.oauthToken&&(s.set("Authorization",e.oauthToken),r=3),e.rateLimit&&(r=e.rateLimit),e.richTextSchema?this.richTextResolver=new f(e.richTextSchema):this.richTextResolver=new f,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries,this.throttle=P(this.throttledRequest,r,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new _,this.resolveNestedRelations=!1,this.client=new X({baseURL:t,timeout:e.timeout||0,headers:s,responseInterceptor:e.responseInterceptor,fetch:e.fetch})}setComponentResolver(e){this.richTextResolver.addNode("blok",t=>{let s="";return t.attrs.body.forEach(r=>{s+=e(r.component,r)}),{html:s}})}parseParams(e){return e.version||(e.version="published"),e.token||(e.token=this.getToken()),e.cv||(e.cv=g[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,s,r){const o=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,s,r));return this.cacheResponse(e,o)}get(e,t){t||(t={});const s=`/${e}`,r=this.factoryParamOptions(s,t);return this.cacheResponse(s,r)}async getAll(e,t,s){const r=(t==null?void 0:t.per_page)||25,o=`/${e}`,i=o.split("/"),a=s||i[i.length-1],l=1,h=await this.makeRequest(o,t,r,l),u=h.total?Math.ceil(h.total/r):1,k=await this.helpers.asyncMap(this.helpers.range(l,u),b=>this.makeRequest(o,t,r,b+1));return this.helpers.flatMap([h,...k],b=>Object.values(b.data[a]))}post(e,t){const s=`/${e}`;return Promise.resolve(this.throttle("post",s,t))}put(e,t){const s=`/${e}`;return Promise.resolve(this.throttle("put",s,t))}delete(e,t){const s=`/${e}`;return Promise.resolve(this.throttle("delete",s,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 s=e[t];s&&s.fieldtype=="multilink"&&s.linktype=="story"&&typeof s.id=="string"&&this.links[s.id]?s.story=this._cleanCopy(this.links[s.id]):s&&s.linktype==="story"&&typeof s.uuid=="string"&&this.links[s.uuid]&&(s.story=this._cleanCopy(this.links[s.uuid]))}_insertRelations(e,t,s){if(s.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 r=[];e[t].forEach(o=>{this.relations[o]&&r.push(this._cleanCopy(this.relations[o]))}),e[t]=r}}}iterateTree(e,t){const s=r=>{if(r!=null){if(r.constructor===Array)for(let o=0;o<r.length;o++)s(r[o]);else if(r.constructor===Object){if(r._stopResolving)return;for(const o in r)(r.component&&r._uid||r.type==="link")&&(this._insertRelations(r,o,t),this._insertLinks(r,o)),s(r[o])}}};s(e.content)}async resolveLinks(e,t){let s=[];if(e.link_uuids){const r=e.link_uuids.length,o=[],i=50;for(let a=0;a<r;a+=i){const l=Math.min(r,a+i);o.push(e.link_uuids.slice(a,l))}for(let a=0;a<o.length;a++)(await this.getStories({per_page:i,language:t.language,version:t.version,by_uuids:o[a].join(",")})).data.stories.forEach(l=>{s.push(l)})}else s=e.links;s.forEach(r=>{this.links[r.uuid]={...r,_stopResolving:!0}})}async resolveRelations(e,t){let s=[];if(e.rel_uuids){const r=e.rel_uuids.length,o=[],i=50;for(let a=0;a<r;a+=i){const l=Math.min(r,a+i);o.push(e.rel_uuids.slice(a,l))}for(let a=0;a<o.length;a++)(await this.getStories({per_page:i,language:t.language,version:t.version,by_uuids:o[a].join(",")})).data.stories.forEach(l=>{s.push(l)})}else s=e.rels;s&&s.length>0&&s.forEach(r=>{this.relations[r.uuid]={...r,_stopResolving:!0}})}async resolveStories(e,t){var s,r;let o=[];if(typeof t.resolve_relations<"u"&&t.resolve_relations.length>0&&(typeof t.resolve_relations=="string"&&(o=t.resolve_relations.split(",")),await this.resolveRelations(e,t)),t.resolve_links&&["1","story","url"].indexOf(t.resolve_links)>-1&&((s=e.links)!=null&&s.length||(r=e.link_uuids)!=null&&r.length)&&await this.resolveLinks(e,t),this.resolveNestedRelations)for(const i in this.relations)this.iterateTree(this.relations[i],o);e.story?this.iterateTree(e.story,o):e.stories.forEach(i=>{this.iterateTree(i,o)})}cacheResponse(e,t,s){return new Promise((r,o)=>{const i=this.helpers.stringify({url:e,params:t}),a=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const l=a.get(i);if(l)return r(l)}try{(async()=>{var l;const h=await this.throttle("get",e,t);let u={data:h.data,headers:h.headers};if((l=h.headers)!=null&&l["per-page"]&&(u=Object.assign({},u,{perPage:h.headers["per-page"]?parseInt(h.headers["per-page"]):0,total:h.headers["per-page"]?parseInt(h.headers.total):0})),h.status!=200)return o(h);(u.data.story||u.data.stories)&&await this.resolveStories(u.data,t),t.version==="published"&&e!="/cdn/spaces/me"&&a.set(i,u),u.data.cv&&t.token&&(t.version=="draft"&&g[t.token]!=u.data.cv&&this.flushCache(),g[t.token]=u.data.cv),r(u)})()}catch{}})}throttledRequest(e,t,s){return this.client[e](t,s)}cacheVersions(){return g}cacheVersion(){return g[this.accessToken]}setCacheVersion(e){this.accessToken&&(g[this.accessToken]=e)}cacheProvider(){switch(this.cache.type){case"memory":return{get(e){return m[e]},getAll(){return m},set(e,t){m[e]=t},flush(){m={}}};default:return{get(){},getAll(){},set(){},flush(){}}}}flushCache(){return this.cacheProvider().flush(),this}}const ee=(n={})=>{const{apiOptions:e}=n;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 Z(e)}},te=n=>{if(typeof n!="object"||typeof n._editable>"u")return{};const e=JSON.parse(n._editable.replace(/^<!--#storyblok#/,"").replace(/-->$/,""));return{"data-blok-c":JSON.stringify(e),"data-blok-uid":e.id+"-"+e.uid}};let y;const $="https://app.storyblok.com/f/storyblok-v2-latest.js",j=(n,e,t={})=>{if(!(typeof window>"u")){if(typeof window.storyblokRegisterEvent>"u"){console.error("Storyblok Bridge is disabled. Please enable it to use it. Read https://github.com/storyblok/storyblok-js");return}if(!n){console.warn("Story ID is not defined. Please provide a valid ID.");return}window.storyblokRegisterEvent(()=>{new window.StoryblokBridge(t).on(["input","published","change"],r=>{r.action==="input"&&r.story.id===n?e(r.story):(r.action==="change"||r.action==="published")&&r.storyId===n&&window.location.reload()})})}},se=(n={})=>{const{bridge:e,accessToken:t,use:s=[],apiOptions:r={},richText:o={}}=n;r.accessToken=r.accessToken||t;const i={bridge:e,apiOptions:r};let a={};return s.forEach(l=>{a={...a,...l(i)}}),e!==!1&&T($),y=new f(o.schema),o.resolver&&E(y,o.resolver),a},E=(n,e)=>{n.addNode("blok",t=>{let s="";return t.attrs.body.forEach(r=>{s+=e(r.component,r)}),{html:s}})},re=(n,e,t)=>{let s=t||y;if(!s){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return n===""?"":n?(e&&(s=new f(e.schema),e.resolver&&E(s,e.resolver)),s.render(n)):(console.warn(`${n} is not a valid Richtext object. This might be because the value of the richtext field is empty.
1
+ (function(d,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(d=typeof globalThis<"u"?globalThis:d||self,p(d.storyblok={}))})(this,function(d){"use strict";let p=!1;const v=[],w=o=>new Promise((t,e)=>{if(typeof window>"u"||(window.storyblokRegisterEvent=r=>{if(window.location===window.parent.location){console.warn("You are not in Draft Mode or in the Visual Editor.");return}p?r():v.push(r)},document.getElementById("storyblok-javascript-bridge")))return;const s=document.createElement("script");s.async=!0,s.src=o,s.id="storyblok-javascript-bridge",s.onerror=r=>e(r),s.onload=r=>{v.forEach(n=>n()),p=!0,t(r)},document.getElementsByTagName("head")[0].appendChild(s)});var E=Object.defineProperty,S=(o,t,e)=>t in o?E(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e,c=(o,t,e)=>(S(o,typeof t!="symbol"?t+"":t,e),e);function T(o){return!(o!==o||o===1/0||o===-1/0)}function x(o,t,e){if(!T(t))throw new TypeError("Expected `limit` to be a finite number");if(!T(e))throw new TypeError("Expected `interval` to be a finite number");const s=[];let r=[],n=0;const i=function(){n++;const l=setTimeout(function(){n--,s.length>0&&i(),r=r.filter(function(u){return u!==l})},e);r.indexOf(l)<0&&r.push(l);const h=s.shift();h.resolve(o.apply(h.self,h.args))},a=function(...l){const h=this;return new Promise(function(u,k){s.push({resolve:u,reject:k,args:l,self:h}),n<t&&i()})};return a.abort=function(){r.forEach(clearTimeout),r=[],s.forEach(function(l){l.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),s.length=0},a}const O=function(o,t){const e={};for(const s in o){const r=o[s];t.indexOf(s)>-1&&r!==null&&(e[s]=r)}return e},I=o=>o==="email",C=()=>({singleTag:"hr"}),A=()=>({tag:"blockquote"}),M=()=>({tag:"ul"}),N=o=>({tag:["pre",{tag:"code",attrs:o.attrs}]}),L=()=>({singleTag:"br"}),U=o=>({tag:`h${o.attrs.level}`}),B=o=>({singleTag:[{tag:"img",attrs:O(o.attrs,["src","alt","title"])}]}),H=()=>({tag:"li"}),q=()=>({tag:"ol"}),D=()=>({tag:"p"}),J=()=>({tag:"b"}),F=()=>({tag:"strike"}),V=()=>({tag:"u"}),z=()=>({tag:"strong"}),Y=()=>({tag:"code"}),K=()=>({tag:"i"}),Q=o=>{const t={...o.attrs},{linktype:e="url"}=o.attrs;return I(e)&&(t.href=`mailto:${t.href}`),t.anchor&&(t.href=`${t.href}#${t.anchor}`,delete t.anchor),{tag:[{tag:"a",attrs:t}]}},G=o=>({tag:[{tag:"span",attrs:o.attrs}]}),R={nodes:{horizontal_rule:C,blockquote:A,bullet_list:M,code_block:N,hard_break:L,heading:U,image:B,list_item:H,ordered_list:q,paragraph:D},marks:{bold:J,strike:F,underline:V,strong:z,code:Y,italic:K,link:Q,styled:G}},W=function(o){const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},e=/[&<>"']/g,s=RegExp(e.source);return o&&s.test(o)?o.replace(e,r=>t[r]):o};class f{constructor(t){c(this,"marks"),c(this,"nodes"),t||(t=R),this.marks=t.marks||[],this.nodes=t.nodes||[]}addNode(t,e){this.nodes[t]=e}addMark(t,e){this.marks[t]=e}render(t){if(t&&t.content&&Array.isArray(t.content)){let e="";return t.content.forEach(s=>{e+=this.renderNode(s)}),e}return console.warn("The render method must receive an object with a content field, which is an array"),""}renderNode(t){const e=[];t.marks&&t.marks.forEach(r=>{const n=this.getMatchingMark(r);n&&e.push(this.renderOpeningTag(n.tag))});const s=this.getMatchingNode(t);return s&&s.tag&&e.push(this.renderOpeningTag(s.tag)),t.content?t.content.forEach(r=>{e.push(this.renderNode(r))}):t.text?e.push(W(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=>{const n=this.getMatchingMark(r);n&&e.push(this.renderClosingTag(n.tag))}),e.join("")}renderTag(t,e){return t.constructor===String?`<${t}${e}>`:t.map(s=>{if(s.constructor===String)return`<${s}${e}>`;{let r=`<${s.tag}`;if(s.attrs)for(const n in s.attrs){const i=s.attrs[n];i!==null&&(r+=` ${n}="${i}"`)}return`${r}${e}>`}}).join("")}renderOpeningTag(t){return this.renderTag(t,"")}renderClosingTag(t){return t.constructor===String?`</${t}>`:t.slice(0).reverse().map(e=>e.constructor===String?`</${e}>`:`</${e.tag}>`).join("")}getMatchingNode(t){const e=this.nodes[t.type];if(typeof e=="function")return e(t)}getMatchingMark(t){const e=this.marks[t.type];if(typeof e=="function")return e(t)}}class _{constructor(){c(this,"isCDNUrl",(t="")=>t.indexOf("/cdn/")>-1),c(this,"getOptionsPage",(t,e=25,s=1)=>({...t,per_page:e,page:s})),c(this,"delay",t=>new Promise(e=>setTimeout(e,t))),c(this,"arrayFrom",(t=0,e)=>[...Array(t)].map(e)),c(this,"range",(t=0,e=t)=>{const s=Math.abs(e-t)||0,r=t<e?1:-1;return this.arrayFrom(s,(n,i)=>i*r+t)}),c(this,"asyncMap",async(t,e)=>Promise.all(t.map(e))),c(this,"flatMap",(t=[],e)=>t.map(e).reduce((s,r)=>[...s,...r],[]))}stringify(t,e,s){const r=[];for(const n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;const i=t[n],a=s?"":encodeURIComponent(n);let l;typeof i=="object"?l=this.stringify(i,e?e+encodeURIComponent("["+a+"]"):a,Array.isArray(i)):l=(e?e+encodeURIComponent("["+a+"]"):a)+"="+encodeURIComponent(i),r.push(l)}return r.join("&")}}class X{constructor(t){c(this,"baseURL"),c(this,"timeout"),c(this,"headers"),c(this,"responseInterceptor"),c(this,"fetch"),c(this,"ejectInterceptor"),c(this,"url"),c(this,"parameters"),this.baseURL=t.baseURL,this.headers=t.headers||[],this.timeout=t!=null&&t.timeout?t.timeout*1e3:0,this.responseInterceptor=t.responseInterceptor,this.fetch=(...e)=>t.fetch?t.fetch(...e):fetch(...e),this.ejectInterceptor=!1,this.url="",this.parameters={}}get(t,e){return this.url=t,this.parameters=e,this._methodHandler("get")}post(t,e){return this.url=t,this.parameters=e,this._methodHandler("post")}put(t,e){return this.url=t,this.parameters=e,this._methodHandler("put")}delete(t,e){return this.url=t,this.parameters=e,this._methodHandler("delete")}async _responseHandler(t){const e=[],s={data:{},headers:{},status:0,statusText:""};t.status!==204&&await t.json().then(r=>{s.data=r});for(const r of t.headers.entries())e[r[0]]=r[1];return s.headers={...e},s.status=t.status,s.statusText=t.statusText,s}async _methodHandler(t){let e=`${this.baseURL}${this.url}`,s=null;if(t==="get"){const l=new _;e=`${this.baseURL}${this.url}?${l.stringify(this.parameters)}`}else s=JSON.stringify(this.parameters);const r=new URL(e),n=new AbortController,{signal:i}=n;let a;this.timeout&&(a=setTimeout(()=>n.abort(),this.timeout));try{const l=await this.fetch(`${r}`,{method:t,headers:this.headers,body:s,signal:i});this.timeout&&clearTimeout(a);const h=await this._responseHandler(l);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(h)):this._statusHandler(h)}catch(l){return{message:l}}}eject(){this.ejectInterceptor=!0}_statusHandler(t){const e=/20[0-6]/g;return new Promise((s,r)=>{if(e.test(`${t.status}`))return s(t);const n={message:new Error(t.statusText),status:t.status,response:t.data.error||t.data.slug};r(n)})}}let m={};const g={};class Z{constructor(t,e){if(c(this,"client"),c(this,"maxRetries"),c(this,"throttle"),c(this,"accessToken"),c(this,"cache"),c(this,"helpers"),c(this,"relations"),c(this,"links"),c(this,"richTextResolver"),c(this,"resolveNestedRelations"),!e){const n=t.region?`-${t.region}`:"",i=t.https===!1?"http":"https";t.oauthToken?e=`${i}://api${n}.storyblok.com/v1`:e=`${i}://api${n}.storyblok.com/v2`}const s=new Headers;s.set("Content-Type","application/json"),s.set("Accept","application/json"),s.forEach((n,i)=>{t.headers&&t.headers[i]&&s.set(i,t.headers[i])});let r=5;t.oauthToken&&(s.set("Authorization",t.oauthToken),r=3),t.rateLimit&&(r=t.rateLimit),t.richTextSchema?this.richTextResolver=new f(t.richTextSchema):this.richTextResolver=new f,t.componentResolver&&this.setComponentResolver(t.componentResolver),this.maxRetries=t.maxRetries,this.throttle=x(this.throttledRequest,r,1e3),this.accessToken=t.accessToken||"",this.relations={},this.links={},this.cache=t.cache||{clear:"manual"},this.helpers=new _,this.resolveNestedRelations=!1,this.client=new X({baseURL:e,timeout:t.timeout||0,headers:s,responseInterceptor:t.responseInterceptor,fetch:t.fetch})}setComponentResolver(t){this.richTextResolver.addNode("blok",e=>{let s="";return e.attrs.body.forEach(r=>{s+=t(r.component,r)}),{html:s}})}parseParams(t){return t.version||(t.version="published"),t.token||(t.token=this.getToken()),t.cv||(t.cv=g[t.token]),Array.isArray(t.resolve_relations)&&(t.resolve_relations=t.resolve_relations.join(",")),t}factoryParamOptions(t,e){return this.helpers.isCDNUrl(t)?this.parseParams(e):e}makeRequest(t,e,s,r){const n=this.factoryParamOptions(t,this.helpers.getOptionsPage(e,s,r));return this.cacheResponse(t,n)}get(t,e){e||(e={});const s=`/${t}`,r=this.factoryParamOptions(s,e);return this.cacheResponse(s,r)}async getAll(t,e,s){const r=(e==null?void 0:e.per_page)||25,n=`/${t}`,i=n.split("/"),a=s||i[i.length-1],l=1,h=await this.makeRequest(n,e,r,l),u=h.total?Math.ceil(h.total/r):1,k=await this.helpers.asyncMap(this.helpers.range(l,u),b=>this.makeRequest(n,e,r,b+1));return this.helpers.flatMap([h,...k],b=>Object.values(b.data[a]))}post(t,e){const s=`/${t}`;return Promise.resolve(this.throttle("post",s,e))}put(t,e){const s=`/${t}`;return Promise.resolve(this.throttle("put",s,e))}delete(t,e){const s=`/${t}`;return Promise.resolve(this.throttle("delete",s,e))}getStories(t){return this.get("cdn/stories",t)}getStory(t,e){return this.get(`cdn/stories/${t}`,e)}getToken(){return this.accessToken}ejectInterceptor(){this.client.eject()}_cleanCopy(t){return JSON.parse(JSON.stringify(t))}_insertLinks(t,e){const s=t[e];s&&s.fieldtype=="multilink"&&s.linktype=="story"&&typeof s.id=="string"&&this.links[s.id]?s.story=this._cleanCopy(this.links[s.id]):s&&s.linktype==="story"&&typeof s.uuid=="string"&&this.links[s.uuid]&&(s.story=this._cleanCopy(this.links[s.uuid]))}_insertRelations(t,e,s){if(s.indexOf(`${t.component}.${e}`)>-1){if(typeof t[e]=="string")this.relations[t[e]]&&(t[e]=this._cleanCopy(this.relations[t[e]]));else if(t[e]&&t[e].constructor===Array){const r=[];t[e].forEach(n=>{this.relations[n]&&r.push(this._cleanCopy(this.relations[n]))}),t[e]=r}}}iterateTree(t,e){const s=r=>{if(r!=null){if(r.constructor===Array)for(let n=0;n<r.length;n++)s(r[n]);else if(r.constructor===Object){if(r._stopResolving)return;for(const n in r)(r.component&&r._uid||r.type==="link")&&(this._insertRelations(r,n,e),this._insertLinks(r,n)),s(r[n])}}};s(t.content)}async resolveLinks(t,e){let s=[];if(t.link_uuids){const r=t.link_uuids.length,n=[],i=50;for(let a=0;a<r;a+=i){const l=Math.min(r,a+i);n.push(t.link_uuids.slice(a,l))}for(let a=0;a<n.length;a++)(await this.getStories({per_page:i,language:e.language,version:e.version,by_uuids:n[a].join(",")})).data.stories.forEach(l=>{s.push(l)})}else s=t.links;s.forEach(r=>{this.links[r.uuid]={...r,_stopResolving:!0}})}async resolveRelations(t,e){let s=[];if(t.rel_uuids){const r=t.rel_uuids.length,n=[],i=50;for(let a=0;a<r;a+=i){const l=Math.min(r,a+i);n.push(t.rel_uuids.slice(a,l))}for(let a=0;a<n.length;a++)(await this.getStories({per_page:i,language:e.language,version:e.version,by_uuids:n[a].join(",")})).data.stories.forEach(l=>{s.push(l)})}else s=t.rels;s&&s.length>0&&s.forEach(r=>{this.relations[r.uuid]={...r,_stopResolving:!0}})}async resolveStories(t,e){var s,r;let n=[];if(typeof e.resolve_relations<"u"&&e.resolve_relations.length>0&&(typeof e.resolve_relations=="string"&&(n=e.resolve_relations.split(",")),await this.resolveRelations(t,e)),e.resolve_links&&["1","story","url"].indexOf(e.resolve_links)>-1&&((s=t.links)!=null&&s.length||(r=t.link_uuids)!=null&&r.length)&&await this.resolveLinks(t,e),this.resolveNestedRelations)for(const i in this.relations)this.iterateTree(this.relations[i],n);t.story?this.iterateTree(t.story,n):t.stories.forEach(i=>{this.iterateTree(i,n)})}async cacheResponse(t,e,s){const r=this.helpers.stringify({url:t,params:e}),n=this.cacheProvider();if(this.cache.clear==="auto"&&e.version==="draft"&&await this.flushCache(),e.version==="published"&&t!="/cdn/spaces/me"){const i=await n.get(r);if(i)return Promise.resolve(i)}return new Promise((i,a)=>{try{(async()=>{var l;try{const h=await this.throttle("get",t,e);let u={data:h.data,headers:h.headers};return(l=h.headers)!=null&&l["per-page"]&&(u=Object.assign({},u,{perPage:h.headers["per-page"]?parseInt(h.headers["per-page"]):0,total:h.headers["per-page"]?parseInt(h.headers.total):0})),h.status!=200?a(h):((u.data.story||u.data.stories)&&await this.resolveStories(u.data,e),e.version==="published"&&t!="/cdn/spaces/me"&&await n.set(r,u),u.data.cv&&e.token&&(e.version=="draft"&&g[e.token]!=u.data.cv&&await this.flushCache(),g[e.token]=u.data.cv),i(u))}catch(h){return a(h)}})()}catch{}})}throttledRequest(t,e,s){return this.client[t](e,s)}cacheVersions(){return g}cacheVersion(){return g[this.accessToken]}setCacheVersion(t){this.accessToken&&(g[this.accessToken]=t)}cacheProvider(){switch(this.cache.type){case"memory":return{get(t){return Promise.resolve(m[t])},getAll(){return Promise.resolve(m)},set(t,e){return m[t]=e,Promise.resolve(void 0)},flush(){return m={},Promise.resolve(void 0)}};case"custom":if(this.cache.custom)return this.cache.custom;default:return{get(){return Promise.resolve(void 0)},getAll(){return Promise.resolve(void 0)},set(){return Promise.resolve(void 0)},flush(){return Promise.resolve(void 0)}}}}async flushCache(){return await this.cacheProvider().flush(),this}}const tt=(o={})=>{const{apiOptions:t}=o;if(!t.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 Z(t)}},et=o=>{if(typeof o!="object"||typeof o._editable>"u")return{};const t=JSON.parse(o._editable.replace(/^<!--#storyblok#/,"").replace(/-->$/,""));return{"data-blok-c":JSON.stringify(t),"data-blok-uid":t.id+"-"+t.uid}};let y;const $="https://app.storyblok.com/f/storyblok-v2-latest.js",P=(o,t,e={})=>{if(!(typeof window>"u")){if(typeof window.storyblokRegisterEvent>"u"){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(e).on(["input","published","change"],r=>{r.action==="input"&&r.story.id===o?t(r.story):(r.action==="change"||r.action==="published")&&r.storyId===o&&window.location.reload()})})}},st=(o={})=>{const{bridge:t,accessToken:e,use:s=[],apiOptions:r={},richText:n={}}=o;r.accessToken=r.accessToken||e;const i={bridge:t,apiOptions:r};let a={};return s.forEach(l=>{a={...a,...l(i)}}),t!==!1&&w($),y=new f(n.schema),n.resolver&&j(y,n.resolver),a},j=(o,t)=>{o.addNode("blok",e=>{let s="";return e.attrs.body.forEach(r=>{s+=t(r.component,r)}),{html:s}})},rt=(o,t,e)=>{let s=e||y;if(!s){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return o===""?"":o?(t&&(s=new f(t.schema),t.resolver&&j(s,t.resolver)),s.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`),"")},oe=()=>T($);d.RichTextResolver=f,d.RichTextSchema=R,d.apiPlugin=ee,d.loadStoryblokBridge=oe,d.registerStoryblokBridge=j,d.renderRichText=re,d.storyblokEditable=te,d.storyblokInit=se,d.useStoryblokBridge=j,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
3
+ For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`),"")},nt=()=>w($);d.RichTextResolver=f,d.RichTextSchema=R,d.apiPlugin=tt,d.loadStoryblokBridge=nt,d.registerStoryblokBridge=P,d.renderRichText=rt,d.storyblokEditable=et,d.storyblokInit=st,d.useStoryblokBridge=P,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
@@ -1,26 +1,26 @@
1
1
  let k = !1;
2
- const b = [], w = (n) => new Promise((e, t) => {
2
+ const v = [], w = (n) => new Promise((t, e) => {
3
3
  if (typeof window > "u" || (window.storyblokRegisterEvent = (r) => {
4
4
  if (window.location === window.parent.location) {
5
5
  console.warn("You are not in Draft Mode or in the Visual Editor.");
6
6
  return;
7
7
  }
8
- k ? r() : b.push(r);
8
+ k ? r() : v.push(r);
9
9
  }, document.getElementById("storyblok-javascript-bridge")))
10
10
  return;
11
11
  const s = document.createElement("script");
12
- s.async = !0, s.src = n, s.id = "storyblok-javascript-bridge", s.onerror = (r) => t(r), s.onload = (r) => {
13
- b.forEach((o) => o()), k = !0, e(r);
12
+ s.async = !0, s.src = n, s.id = "storyblok-javascript-bridge", s.onerror = (r) => e(r), s.onload = (r) => {
13
+ v.forEach((o) => o()), k = !0, t(r);
14
14
  }, document.getElementsByTagName("head")[0].appendChild(s);
15
15
  });
16
- var $ = Object.defineProperty, j = (n, e, t) => e in n ? $(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, c = (n, e, t) => (j(n, typeof e != "symbol" ? e + "" : e, t), t);
17
- function v(n) {
16
+ var $ = Object.defineProperty, P = (n, t, e) => t in n ? $(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, c = (n, t, e) => (P(n, typeof t != "symbol" ? t + "" : t, e), e);
17
+ function b(n) {
18
18
  return !(n !== n || n === 1 / 0 || n === -1 / 0);
19
19
  }
20
- function x(n, e, t) {
21
- if (!v(e))
20
+ function j(n, t, e) {
21
+ if (!b(t))
22
22
  throw new TypeError("Expected `limit` to be a finite number");
23
- if (!v(t))
23
+ if (!b(e))
24
24
  throw new TypeError("Expected `interval` to be a finite number");
25
25
  const s = [];
26
26
  let r = [], o = 0;
@@ -30,7 +30,7 @@ function x(n, e, t) {
30
30
  o--, s.length > 0 && i(), r = r.filter(function(u) {
31
31
  return u !== l;
32
32
  });
33
- }, t);
33
+ }, e);
34
34
  r.indexOf(l) < 0 && r.push(l);
35
35
  const h = s.shift();
36
36
  h.resolve(n.apply(h.self, h.args));
@@ -42,7 +42,7 @@ function x(n, e, t) {
42
42
  reject: f,
43
43
  args: l,
44
44
  self: h
45
- }), o < e && i();
45
+ }), o < t && i();
46
46
  });
47
47
  };
48
48
  return a.abort = function() {
@@ -53,14 +53,14 @@ function x(n, e, t) {
53
53
  }), s.length = 0;
54
54
  }, a;
55
55
  }
56
- const E = function(n, e) {
57
- const t = {};
56
+ const x = function(n, t) {
57
+ const e = {};
58
58
  for (const s in n) {
59
59
  const r = n[s];
60
- e.indexOf(s) > -1 && r !== null && (t[s] = r);
60
+ t.indexOf(s) > -1 && r !== null && (e[s] = r);
61
61
  }
62
- return t;
63
- }, P = (n) => n === "email", S = () => ({
62
+ return e;
63
+ }, E = (n) => n === "email", S = () => ({
64
64
  singleTag: "hr"
65
65
  }), O = () => ({
66
66
  tag: "blockquote"
@@ -82,7 +82,7 @@ const E = function(n, e) {
82
82
  singleTag: [
83
83
  {
84
84
  tag: "img",
85
- attrs: E(n.attrs, ["src", "alt", "title"])
85
+ attrs: x(n.attrs, ["src", "alt", "title"])
86
86
  }
87
87
  ]
88
88
  }), L = () => ({
@@ -104,12 +104,12 @@ const E = function(n, e) {
104
104
  }), V = () => ({
105
105
  tag: "i"
106
106
  }), z = (n) => {
107
- const e = { ...n.attrs }, { linktype: t = "url" } = n.attrs;
108
- return P(t) && (e.href = `mailto:${e.href}`), e.anchor && (e.href = `${e.href}#${e.anchor}`, delete e.anchor), {
107
+ const t = { ...n.attrs }, { linktype: e = "url" } = n.attrs;
108
+ return E(e) && (t.href = `mailto:${t.href}`), t.anchor && (t.href = `${t.href}#${t.anchor}`, delete t.anchor), {
109
109
  tag: [
110
110
  {
111
111
  tag: "a",
112
- attrs: e
112
+ attrs: t
113
113
  }
114
114
  ]
115
115
  };
@@ -144,54 +144,54 @@ const E = function(n, e) {
144
144
  styled: Y
145
145
  }
146
146
  }, Q = function(n) {
147
- const e = {
147
+ const t = {
148
148
  "&": "&amp;",
149
149
  "<": "&lt;",
150
150
  ">": "&gt;",
151
151
  '"': "&quot;",
152
152
  "'": "&#39;"
153
- }, t = /[&<>"']/g, s = RegExp(t.source);
154
- return n && s.test(n) ? n.replace(t, (r) => e[r]) : n;
153
+ }, e = /[&<>"']/g, s = RegExp(e.source);
154
+ return n && s.test(n) ? n.replace(e, (r) => t[r]) : n;
155
155
  };
156
156
  class g {
157
- constructor(e) {
158
- c(this, "marks"), c(this, "nodes"), e || (e = K), this.marks = e.marks || [], this.nodes = e.nodes || [];
157
+ constructor(t) {
158
+ c(this, "marks"), c(this, "nodes"), t || (t = K), this.marks = t.marks || [], this.nodes = t.nodes || [];
159
159
  }
160
- addNode(e, t) {
161
- this.nodes[e] = t;
160
+ addNode(t, e) {
161
+ this.nodes[t] = e;
162
162
  }
163
- addMark(e, t) {
164
- this.marks[e] = t;
163
+ addMark(t, e) {
164
+ this.marks[t] = e;
165
165
  }
166
- render(e) {
167
- if (e && e.content && Array.isArray(e.content)) {
168
- let t = "";
169
- return e.content.forEach((s) => {
170
- t += this.renderNode(s);
171
- }), t;
166
+ render(t) {
167
+ if (t && t.content && Array.isArray(t.content)) {
168
+ let e = "";
169
+ return t.content.forEach((s) => {
170
+ e += this.renderNode(s);
171
+ }), e;
172
172
  }
173
173
  return console.warn(
174
174
  "The render method must receive an object with a content field, which is an array"
175
175
  ), "";
176
176
  }
177
- renderNode(e) {
178
- const t = [];
179
- e.marks && e.marks.forEach((r) => {
177
+ renderNode(t) {
178
+ const e = [];
179
+ t.marks && t.marks.forEach((r) => {
180
180
  const o = this.getMatchingMark(r);
181
- o && t.push(this.renderOpeningTag(o.tag));
181
+ o && e.push(this.renderOpeningTag(o.tag));
182
182
  });
183
- const s = this.getMatchingNode(e);
184
- return s && s.tag && t.push(this.renderOpeningTag(s.tag)), e.content ? e.content.forEach((r) => {
185
- t.push(this.renderNode(r));
186
- }) : e.text ? t.push(Q(e.text)) : s && s.singleTag ? t.push(this.renderTag(s.singleTag, " /")) : s && s.html && t.push(s.html), s && s.tag && t.push(this.renderClosingTag(s.tag)), e.marks && e.marks.slice(0).reverse().forEach((r) => {
183
+ const s = this.getMatchingNode(t);
184
+ return s && s.tag && e.push(this.renderOpeningTag(s.tag)), t.content ? t.content.forEach((r) => {
185
+ e.push(this.renderNode(r));
186
+ }) : t.text ? e.push(Q(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) => {
187
187
  const o = this.getMatchingMark(r);
188
- o && t.push(this.renderClosingTag(o.tag));
189
- }), t.join("");
188
+ o && e.push(this.renderClosingTag(o.tag));
189
+ }), e.join("");
190
190
  }
191
- renderTag(e, t) {
192
- return e.constructor === String ? `<${e}${t}>` : e.map((s) => {
191
+ renderTag(t, e) {
192
+ return t.constructor === String ? `<${t}${e}>` : t.map((s) => {
193
193
  if (s.constructor === String)
194
- return `<${s}${t}>`;
194
+ return `<${s}${e}>`;
195
195
  {
196
196
  let r = `<${s.tag}`;
197
197
  if (s.attrs)
@@ -199,99 +199,99 @@ class g {
199
199
  const i = s.attrs[o];
200
200
  i !== null && (r += ` ${o}="${i}"`);
201
201
  }
202
- return `${r}${t}>`;
202
+ return `${r}${e}>`;
203
203
  }
204
204
  }).join("");
205
205
  }
206
- renderOpeningTag(e) {
207
- return this.renderTag(e, "");
206
+ renderOpeningTag(t) {
207
+ return this.renderTag(t, "");
208
208
  }
209
- renderClosingTag(e) {
210
- return e.constructor === String ? `</${e}>` : e.slice(0).reverse().map((t) => t.constructor === String ? `</${t}>` : `</${t.tag}>`).join("");
209
+ renderClosingTag(t) {
210
+ return t.constructor === String ? `</${t}>` : t.slice(0).reverse().map((e) => e.constructor === String ? `</${e}>` : `</${e.tag}>`).join("");
211
211
  }
212
- getMatchingNode(e) {
213
- const t = this.nodes[e.type];
214
- if (typeof t == "function")
215
- return t(e);
212
+ getMatchingNode(t) {
213
+ const e = this.nodes[t.type];
214
+ if (typeof e == "function")
215
+ return e(t);
216
216
  }
217
- getMatchingMark(e) {
218
- const t = this.marks[e.type];
219
- if (typeof t == "function")
220
- return t(e);
217
+ getMatchingMark(t) {
218
+ const e = this.marks[t.type];
219
+ if (typeof e == "function")
220
+ return e(t);
221
221
  }
222
222
  }
223
223
  class T {
224
224
  constructor() {
225
- c(this, "isCDNUrl", (e = "") => e.indexOf("/cdn/") > -1), c(this, "getOptionsPage", (e, t = 25, s = 1) => ({
226
- ...e,
227
- per_page: t,
225
+ c(this, "isCDNUrl", (t = "") => t.indexOf("/cdn/") > -1), c(this, "getOptionsPage", (t, e = 25, s = 1) => ({
226
+ ...t,
227
+ per_page: e,
228
228
  page: s
229
- })), c(this, "delay", (e) => new Promise((t) => setTimeout(t, e))), c(this, "arrayFrom", (e = 0, t) => [...Array(e)].map(t)), c(this, "range", (e = 0, t = e) => {
230
- const s = Math.abs(t - e) || 0, r = e < t ? 1 : -1;
231
- return this.arrayFrom(s, (o, i) => i * r + e);
232
- }), c(this, "asyncMap", async (e, t) => Promise.all(e.map(t))), c(this, "flatMap", (e = [], t) => e.map(t).reduce((s, r) => [...s, ...r], []));
229
+ })), c(this, "delay", (t) => new Promise((e) => setTimeout(e, t))), c(this, "arrayFrom", (t = 0, e) => [...Array(t)].map(e)), c(this, "range", (t = 0, e = t) => {
230
+ const s = Math.abs(e - t) || 0, r = t < e ? 1 : -1;
231
+ return this.arrayFrom(s, (o, i) => i * r + t);
232
+ }), c(this, "asyncMap", async (t, e) => Promise.all(t.map(e))), c(this, "flatMap", (t = [], e) => t.map(e).reduce((s, r) => [...s, ...r], []));
233
233
  }
234
- stringify(e, t, s) {
234
+ stringify(t, e, s) {
235
235
  const r = [];
236
- for (const o in e) {
237
- if (!Object.prototype.hasOwnProperty.call(e, o))
236
+ for (const o in t) {
237
+ if (!Object.prototype.hasOwnProperty.call(t, o))
238
238
  continue;
239
- const i = e[o], a = s ? "" : encodeURIComponent(o);
239
+ const i = t[o], a = s ? "" : encodeURIComponent(o);
240
240
  let l;
241
241
  typeof i == "object" ? l = this.stringify(
242
242
  i,
243
- t ? t + encodeURIComponent("[" + a + "]") : a,
243
+ e ? e + encodeURIComponent("[" + a + "]") : a,
244
244
  Array.isArray(i)
245
- ) : l = (t ? t + encodeURIComponent("[" + a + "]") : a) + "=" + encodeURIComponent(i), r.push(l);
245
+ ) : l = (e ? e + encodeURIComponent("[" + a + "]") : a) + "=" + encodeURIComponent(i), r.push(l);
246
246
  }
247
247
  return r.join("&");
248
248
  }
249
249
  }
250
250
  class G {
251
- constructor(e) {
252
- c(this, "baseURL"), c(this, "timeout"), c(this, "headers"), c(this, "responseInterceptor"), c(this, "fetch"), c(this, "ejectInterceptor"), c(this, "url"), c(this, "parameters"), this.baseURL = e.baseURL, this.headers = e.headers || [], this.timeout = e != null && e.timeout ? e.timeout * 1e3 : 0, this.responseInterceptor = e.responseInterceptor, this.fetch = (...t) => e.fetch ? e.fetch(...t) : fetch(...t), this.ejectInterceptor = !1, this.url = "", this.parameters = {};
251
+ constructor(t) {
252
+ c(this, "baseURL"), c(this, "timeout"), c(this, "headers"), c(this, "responseInterceptor"), c(this, "fetch"), c(this, "ejectInterceptor"), c(this, "url"), c(this, "parameters"), this.baseURL = t.baseURL, this.headers = t.headers || [], this.timeout = t != null && t.timeout ? t.timeout * 1e3 : 0, this.responseInterceptor = t.responseInterceptor, this.fetch = (...e) => t.fetch ? t.fetch(...e) : fetch(...e), this.ejectInterceptor = !1, this.url = "", this.parameters = {};
253
253
  }
254
- get(e, t) {
255
- return this.url = e, this.parameters = t, this._methodHandler("get");
254
+ get(t, e) {
255
+ return this.url = t, this.parameters = e, this._methodHandler("get");
256
256
  }
257
- post(e, t) {
258
- return this.url = e, this.parameters = t, this._methodHandler("post");
257
+ post(t, e) {
258
+ return this.url = t, this.parameters = e, this._methodHandler("post");
259
259
  }
260
- put(e, t) {
261
- return this.url = e, this.parameters = t, this._methodHandler("put");
260
+ put(t, e) {
261
+ return this.url = t, this.parameters = e, this._methodHandler("put");
262
262
  }
263
- delete(e, t) {
264
- return this.url = e, this.parameters = t, this._methodHandler("delete");
263
+ delete(t, e) {
264
+ return this.url = t, this.parameters = e, this._methodHandler("delete");
265
265
  }
266
- async _responseHandler(e) {
267
- const t = [], s = {
266
+ async _responseHandler(t) {
267
+ const e = [], s = {
268
268
  data: {},
269
269
  headers: {},
270
270
  status: 0,
271
271
  statusText: ""
272
272
  };
273
- e.status !== 204 && await e.json().then((r) => {
273
+ t.status !== 204 && await t.json().then((r) => {
274
274
  s.data = r;
275
275
  });
276
- for (const r of e.headers.entries())
277
- t[r[0]] = r[1];
278
- return s.headers = { ...t }, s.status = e.status, s.statusText = e.statusText, s;
276
+ for (const r of t.headers.entries())
277
+ e[r[0]] = r[1];
278
+ return s.headers = { ...e }, s.status = t.status, s.statusText = t.statusText, s;
279
279
  }
280
- async _methodHandler(e) {
281
- let t = `${this.baseURL}${this.url}`, s = null;
282
- if (e === "get") {
280
+ async _methodHandler(t) {
281
+ let e = `${this.baseURL}${this.url}`, s = null;
282
+ if (t === "get") {
283
283
  const l = new T();
284
- t = `${this.baseURL}${this.url}?${l.stringify(
284
+ e = `${this.baseURL}${this.url}?${l.stringify(
285
285
  this.parameters
286
286
  )}`;
287
287
  } else
288
288
  s = JSON.stringify(this.parameters);
289
- const r = new URL(t), o = new AbortController(), { signal: i } = o;
289
+ const r = new URL(e), o = new AbortController(), { signal: i } = o;
290
290
  let a;
291
291
  this.timeout && (a = setTimeout(() => o.abort(), this.timeout));
292
292
  try {
293
293
  const l = await this.fetch(`${r}`, {
294
- method: e,
294
+ method: t,
295
295
  headers: this.headers,
296
296
  body: s,
297
297
  signal: i
@@ -308,15 +308,15 @@ class G {
308
308
  eject() {
309
309
  this.ejectInterceptor = !0;
310
310
  }
311
- _statusHandler(e) {
312
- const t = /20[0-6]/g;
311
+ _statusHandler(t) {
312
+ const e = /20[0-6]/g;
313
313
  return new Promise((s, r) => {
314
- if (t.test(`${e.status}`))
315
- return s(e);
314
+ if (e.test(`${t.status}`))
315
+ return s(t);
316
316
  const o = {
317
- message: new Error(e.statusText),
318
- status: e.status,
319
- response: e.data.error || e.data.slug
317
+ message: new Error(t.statusText),
318
+ status: t.status,
319
+ response: t.data.error || t.data.slug
320
320
  };
321
321
  r(o);
322
322
  });
@@ -325,79 +325,79 @@ class G {
325
325
  let p = {};
326
326
  const d = {};
327
327
  class W {
328
- constructor(e, t) {
329
- if (c(this, "client"), c(this, "maxRetries"), c(this, "throttle"), c(this, "accessToken"), c(this, "cache"), c(this, "helpers"), c(this, "relations"), c(this, "links"), c(this, "richTextResolver"), c(this, "resolveNestedRelations"), !t) {
330
- const o = e.region ? `-${e.region}` : "", i = e.https === !1 ? "http" : "https";
331
- e.oauthToken ? t = `${i}://api${o}.storyblok.com/v1` : t = `${i}://api${o}.storyblok.com/v2`;
328
+ constructor(t, e) {
329
+ if (c(this, "client"), c(this, "maxRetries"), c(this, "throttle"), c(this, "accessToken"), c(this, "cache"), c(this, "helpers"), c(this, "relations"), c(this, "links"), c(this, "richTextResolver"), c(this, "resolveNestedRelations"), !e) {
330
+ const o = t.region ? `-${t.region}` : "", i = t.https === !1 ? "http" : "https";
331
+ t.oauthToken ? e = `${i}://api${o}.storyblok.com/v1` : e = `${i}://api${o}.storyblok.com/v2`;
332
332
  }
333
333
  const s = new Headers();
334
334
  s.set("Content-Type", "application/json"), s.set("Accept", "application/json"), s.forEach((o, i) => {
335
- e.headers && e.headers[i] && s.set(i, e.headers[i]);
335
+ t.headers && t.headers[i] && s.set(i, t.headers[i]);
336
336
  });
337
337
  let r = 5;
338
- e.oauthToken && (s.set("Authorization", e.oauthToken), r = 3), e.rateLimit && (r = e.rateLimit), e.richTextSchema ? this.richTextResolver = new g(e.richTextSchema) : this.richTextResolver = new g(), e.componentResolver && this.setComponentResolver(e.componentResolver), this.maxRetries = e.maxRetries, this.throttle = x(this.throttledRequest, r, 1e3), this.accessToken = e.accessToken || "", this.relations = {}, this.links = {}, this.cache = e.cache || { clear: "manual" }, this.helpers = new T(), this.resolveNestedRelations = !1, this.client = new G({
339
- baseURL: t,
340
- timeout: e.timeout || 0,
338
+ t.oauthToken && (s.set("Authorization", t.oauthToken), r = 3), t.rateLimit && (r = t.rateLimit), t.richTextSchema ? this.richTextResolver = new g(t.richTextSchema) : this.richTextResolver = new g(), t.componentResolver && this.setComponentResolver(t.componentResolver), this.maxRetries = t.maxRetries, this.throttle = j(this.throttledRequest, r, 1e3), this.accessToken = t.accessToken || "", this.relations = {}, this.links = {}, this.cache = t.cache || { clear: "manual" }, this.helpers = new T(), this.resolveNestedRelations = !1, this.client = new G({
339
+ baseURL: e,
340
+ timeout: t.timeout || 0,
341
341
  headers: s,
342
- responseInterceptor: e.responseInterceptor,
343
- fetch: e.fetch
342
+ responseInterceptor: t.responseInterceptor,
343
+ fetch: t.fetch
344
344
  });
345
345
  }
346
- setComponentResolver(e) {
347
- this.richTextResolver.addNode("blok", (t) => {
346
+ setComponentResolver(t) {
347
+ this.richTextResolver.addNode("blok", (e) => {
348
348
  let s = "";
349
- return t.attrs.body.forEach((r) => {
350
- s += e(r.component, r);
349
+ return e.attrs.body.forEach((r) => {
350
+ s += t(r.component, r);
351
351
  }), {
352
352
  html: s
353
353
  };
354
354
  });
355
355
  }
356
- parseParams(e) {
357
- return e.version || (e.version = "published"), e.token || (e.token = this.getToken()), e.cv || (e.cv = d[e.token]), Array.isArray(e.resolve_relations) && (e.resolve_relations = e.resolve_relations.join(",")), e;
356
+ parseParams(t) {
357
+ return t.version || (t.version = "published"), t.token || (t.token = this.getToken()), t.cv || (t.cv = d[t.token]), Array.isArray(t.resolve_relations) && (t.resolve_relations = t.resolve_relations.join(",")), t;
358
358
  }
359
- factoryParamOptions(e, t) {
360
- return this.helpers.isCDNUrl(e) ? this.parseParams(t) : t;
359
+ factoryParamOptions(t, e) {
360
+ return this.helpers.isCDNUrl(t) ? this.parseParams(e) : e;
361
361
  }
362
- makeRequest(e, t, s, r) {
362
+ makeRequest(t, e, s, r) {
363
363
  const o = this.factoryParamOptions(
364
- e,
365
- this.helpers.getOptionsPage(t, s, r)
364
+ t,
365
+ this.helpers.getOptionsPage(e, s, r)
366
366
  );
367
- return this.cacheResponse(e, o);
367
+ return this.cacheResponse(t, o);
368
368
  }
369
- get(e, t) {
370
- t || (t = {});
371
- const s = `/${e}`, r = this.factoryParamOptions(s, t);
369
+ get(t, e) {
370
+ e || (e = {});
371
+ const s = `/${t}`, r = this.factoryParamOptions(s, e);
372
372
  return this.cacheResponse(s, r);
373
373
  }
374
- async getAll(e, t, s) {
375
- const r = (t == null ? void 0 : t.per_page) || 25, o = `/${e}`, i = o.split("/"), a = s || i[i.length - 1], l = 1, h = await this.makeRequest(o, t, r, l), u = h.total ? Math.ceil(h.total / r) : 1, f = await this.helpers.asyncMap(
374
+ async getAll(t, e, s) {
375
+ const r = (e == null ? void 0 : e.per_page) || 25, o = `/${t}`, i = o.split("/"), a = s || i[i.length - 1], l = 1, h = await this.makeRequest(o, e, r, l), u = h.total ? Math.ceil(h.total / r) : 1, f = await this.helpers.asyncMap(
376
376
  this.helpers.range(l, u),
377
- (m) => this.makeRequest(o, t, r, m + 1)
377
+ (m) => this.makeRequest(o, e, r, m + 1)
378
378
  );
379
379
  return this.helpers.flatMap(
380
380
  [h, ...f],
381
381
  (m) => Object.values(m.data[a])
382
382
  );
383
383
  }
384
- post(e, t) {
385
- const s = `/${e}`;
386
- return Promise.resolve(this.throttle("post", s, t));
384
+ post(t, e) {
385
+ const s = `/${t}`;
386
+ return Promise.resolve(this.throttle("post", s, e));
387
387
  }
388
- put(e, t) {
389
- const s = `/${e}`;
390
- return Promise.resolve(this.throttle("put", s, t));
388
+ put(t, e) {
389
+ const s = `/${t}`;
390
+ return Promise.resolve(this.throttle("put", s, e));
391
391
  }
392
- delete(e, t) {
393
- const s = `/${e}`;
394
- return Promise.resolve(this.throttle("delete", s, t));
392
+ delete(t, e) {
393
+ const s = `/${t}`;
394
+ return Promise.resolve(this.throttle("delete", s, e));
395
395
  }
396
- getStories(e) {
397
- return this.get("cdn/stories", e);
396
+ getStories(t) {
397
+ return this.get("cdn/stories", t);
398
398
  }
399
- getStory(e, t) {
400
- return this.get(`cdn/stories/${e}`, t);
399
+ getStory(t, e) {
400
+ return this.get(`cdn/stories/${t}`, e);
401
401
  }
402
402
  getToken() {
403
403
  return this.accessToken;
@@ -405,26 +405,26 @@ class W {
405
405
  ejectInterceptor() {
406
406
  this.client.eject();
407
407
  }
408
- _cleanCopy(e) {
409
- return JSON.parse(JSON.stringify(e));
408
+ _cleanCopy(t) {
409
+ return JSON.parse(JSON.stringify(t));
410
410
  }
411
- _insertLinks(e, t) {
412
- const s = e[t];
411
+ _insertLinks(t, e) {
412
+ const s = t[e];
413
413
  s && s.fieldtype == "multilink" && s.linktype == "story" && typeof s.id == "string" && this.links[s.id] ? s.story = this._cleanCopy(this.links[s.id]) : s && s.linktype === "story" && typeof s.uuid == "string" && this.links[s.uuid] && (s.story = this._cleanCopy(this.links[s.uuid]));
414
414
  }
415
- _insertRelations(e, t, s) {
416
- if (s.indexOf(`${e.component}.${t}`) > -1) {
417
- if (typeof e[t] == "string")
418
- this.relations[e[t]] && (e[t] = this._cleanCopy(this.relations[e[t]]));
419
- else if (e[t] && e[t].constructor === Array) {
415
+ _insertRelations(t, e, s) {
416
+ if (s.indexOf(`${t.component}.${e}`) > -1) {
417
+ if (typeof t[e] == "string")
418
+ this.relations[t[e]] && (t[e] = this._cleanCopy(this.relations[t[e]]));
419
+ else if (t[e] && t[e].constructor === Array) {
420
420
  const r = [];
421
- e[t].forEach((o) => {
421
+ t[e].forEach((o) => {
422
422
  this.relations[o] && r.push(this._cleanCopy(this.relations[o]));
423
- }), e[t] = r;
423
+ }), t[e] = r;
424
424
  }
425
425
  }
426
426
  }
427
- iterateTree(e, t) {
427
+ iterateTree(t, e) {
428
428
  const s = (r) => {
429
429
  if (r != null) {
430
430
  if (r.constructor === Array)
@@ -437,26 +437,26 @@ class W {
437
437
  (r.component && r._uid || r.type === "link") && (this._insertRelations(
438
438
  r,
439
439
  o,
440
- t
440
+ e
441
441
  ), this._insertLinks(r, o)), s(r[o]);
442
442
  }
443
443
  }
444
444
  };
445
- s(e.content);
445
+ s(t.content);
446
446
  }
447
- async resolveLinks(e, t) {
447
+ async resolveLinks(t, e) {
448
448
  let s = [];
449
- if (e.link_uuids) {
450
- const r = e.link_uuids.length, o = [], i = 50;
449
+ if (t.link_uuids) {
450
+ const r = t.link_uuids.length, o = [], i = 50;
451
451
  for (let a = 0; a < r; a += i) {
452
452
  const l = Math.min(r, a + i);
453
- o.push(e.link_uuids.slice(a, l));
453
+ o.push(t.link_uuids.slice(a, l));
454
454
  }
455
455
  for (let a = 0; a < o.length; a++)
456
456
  (await this.getStories({
457
457
  per_page: i,
458
- language: t.language,
459
- version: t.version,
458
+ language: e.language,
459
+ version: e.version,
460
460
  by_uuids: o[a].join(",")
461
461
  })).data.stories.forEach(
462
462
  (l) => {
@@ -464,70 +464,72 @@ class W {
464
464
  }
465
465
  );
466
466
  } else
467
- s = e.links;
467
+ s = t.links;
468
468
  s.forEach((r) => {
469
469
  this.links[r.uuid] = { ...r, _stopResolving: !0 };
470
470
  });
471
471
  }
472
- async resolveRelations(e, t) {
472
+ async resolveRelations(t, e) {
473
473
  let s = [];
474
- if (e.rel_uuids) {
475
- const r = e.rel_uuids.length, o = [], i = 50;
474
+ if (t.rel_uuids) {
475
+ const r = t.rel_uuids.length, o = [], i = 50;
476
476
  for (let a = 0; a < r; a += i) {
477
477
  const l = Math.min(r, a + i);
478
- o.push(e.rel_uuids.slice(a, l));
478
+ o.push(t.rel_uuids.slice(a, l));
479
479
  }
480
480
  for (let a = 0; a < o.length; a++)
481
481
  (await this.getStories({
482
482
  per_page: i,
483
- language: t.language,
484
- version: t.version,
483
+ language: e.language,
484
+ version: e.version,
485
485
  by_uuids: o[a].join(",")
486
486
  })).data.stories.forEach((l) => {
487
487
  s.push(l);
488
488
  });
489
489
  } else
490
- s = e.rels;
490
+ s = t.rels;
491
491
  s && s.length > 0 && s.forEach((r) => {
492
492
  this.relations[r.uuid] = { ...r, _stopResolving: !0 };
493
493
  });
494
494
  }
495
- async resolveStories(e, t) {
495
+ async resolveStories(t, e) {
496
496
  var s, r;
497
497
  let o = [];
498
- if (typeof t.resolve_relations < "u" && t.resolve_relations.length > 0 && (typeof t.resolve_relations == "string" && (o = t.resolve_relations.split(",")), await this.resolveRelations(e, t)), t.resolve_links && ["1", "story", "url"].indexOf(t.resolve_links) > -1 && ((s = e.links) != null && s.length || (r = e.link_uuids) != null && r.length) && await this.resolveLinks(e, t), this.resolveNestedRelations)
498
+ if (typeof e.resolve_relations < "u" && e.resolve_relations.length > 0 && (typeof e.resolve_relations == "string" && (o = e.resolve_relations.split(",")), await this.resolveRelations(t, e)), e.resolve_links && ["1", "story", "url"].indexOf(e.resolve_links) > -1 && ((s = t.links) != null && s.length || (r = t.link_uuids) != null && r.length) && await this.resolveLinks(t, e), this.resolveNestedRelations)
499
499
  for (const i in this.relations)
500
500
  this.iterateTree(this.relations[i], o);
501
- e.story ? this.iterateTree(e.story, o) : e.stories.forEach((i) => {
501
+ t.story ? this.iterateTree(t.story, o) : t.stories.forEach((i) => {
502
502
  this.iterateTree(i, o);
503
503
  });
504
504
  }
505
- cacheResponse(e, t, s) {
506
- return new Promise((r, o) => {
507
- const i = this.helpers.stringify({ url: e, params: t }), a = this.cacheProvider();
508
- if (this.cache.clear === "auto" && t.version === "draft" && this.flushCache(), t.version === "published" && e != "/cdn/spaces/me") {
509
- const l = a.get(i);
510
- if (l)
511
- return r(l);
512
- }
505
+ async cacheResponse(t, e, s) {
506
+ const r = this.helpers.stringify({ url: t, params: e }), o = this.cacheProvider();
507
+ if (this.cache.clear === "auto" && e.version === "draft" && await this.flushCache(), e.version === "published" && t != "/cdn/spaces/me") {
508
+ const i = await o.get(r);
509
+ if (i)
510
+ return Promise.resolve(i);
511
+ }
512
+ return new Promise((i, a) => {
513
513
  try {
514
514
  (async () => {
515
515
  var l;
516
- const h = await this.throttle("get", e, t);
517
- let u = { data: h.data, headers: h.headers };
518
- if ((l = h.headers) != null && l["per-page"] && (u = Object.assign({}, u, {
519
- perPage: h.headers["per-page"] ? parseInt(h.headers["per-page"]) : 0,
520
- total: h.headers["per-page"] ? parseInt(h.headers.total) : 0
521
- })), h.status != 200)
522
- return o(h);
523
- (u.data.story || u.data.stories) && await this.resolveStories(u.data, t), t.version === "published" && e != "/cdn/spaces/me" && a.set(i, u), u.data.cv && t.token && (t.version == "draft" && d[t.token] != u.data.cv && this.flushCache(), d[t.token] = u.data.cv), r(u);
516
+ try {
517
+ const h = await this.throttle("get", t, e);
518
+ let u = { data: h.data, headers: h.headers };
519
+ return (l = h.headers) != null && l["per-page"] && (u = Object.assign({}, u, {
520
+ perPage: h.headers["per-page"] ? parseInt(h.headers["per-page"]) : 0,
521
+ total: h.headers["per-page"] ? parseInt(h.headers.total) : 0
522
+ })), h.status != 200 ? a(h) : ((u.data.story || u.data.stories) && await this.resolveStories(u.data, e), e.version === "published" && t != "/cdn/spaces/me" && await o.set(r, u), u.data.cv && e.token && (e.version == "draft" && d[e.token] != u.data.cv && await this.flushCache(), d[e.token] = u.data.cv), i(u));
523
+ } catch (h) {
524
+ return a(h);
525
+ }
524
526
  })();
525
527
  } catch {
526
528
  }
527
529
  });
528
530
  }
529
- throttledRequest(e, t, s) {
530
- return this.client[e](t, s);
531
+ throttledRequest(t, e, s) {
532
+ return this.client[t](e, s);
531
533
  }
532
534
  cacheVersions() {
533
535
  return d;
@@ -535,65 +537,72 @@ class W {
535
537
  cacheVersion() {
536
538
  return d[this.accessToken];
537
539
  }
538
- setCacheVersion(e) {
539
- this.accessToken && (d[this.accessToken] = e);
540
+ setCacheVersion(t) {
541
+ this.accessToken && (d[this.accessToken] = t);
540
542
  }
541
543
  cacheProvider() {
542
544
  switch (this.cache.type) {
543
545
  case "memory":
544
546
  return {
545
- get(e) {
546
- return p[e];
547
+ get(t) {
548
+ return Promise.resolve(p[t]);
547
549
  },
548
550
  getAll() {
549
- return p;
551
+ return Promise.resolve(p);
550
552
  },
551
- set(e, t) {
552
- p[e] = t;
553
+ set(t, e) {
554
+ return p[t] = e, Promise.resolve(void 0);
553
555
  },
554
556
  flush() {
555
- p = {};
557
+ return p = {}, Promise.resolve(void 0);
556
558
  }
557
559
  };
560
+ case "custom":
561
+ if (this.cache.custom)
562
+ return this.cache.custom;
558
563
  default:
559
564
  return {
560
565
  get() {
566
+ return Promise.resolve(void 0);
561
567
  },
562
568
  getAll() {
569
+ return Promise.resolve(void 0);
563
570
  },
564
571
  set() {
572
+ return Promise.resolve(void 0);
565
573
  },
566
574
  flush() {
575
+ return Promise.resolve(void 0);
567
576
  }
568
577
  };
569
578
  }
570
579
  }
571
- flushCache() {
572
- return this.cacheProvider().flush(), this;
580
+ async flushCache() {
581
+ return await this.cacheProvider().flush(), this;
573
582
  }
574
583
  }
575
584
  const X = (n = {}) => {
576
- const { apiOptions: e } = n;
577
- if (!e.accessToken) {
585
+ const { apiOptions: t } = n;
586
+ if (!t.accessToken) {
578
587
  console.error(
579
588
  "You need to provide an access token to interact with Storyblok API. Read https://www.storyblok.com/docs/api/content-delivery#topics/authentication"
580
589
  );
581
590
  return;
582
591
  }
583
- return { storyblokApi: new W(e) };
592
+ return { storyblokApi: new W(t) };
584
593
  }, Z = (n) => {
585
594
  if (typeof n != "object" || typeof n._editable > "u")
586
595
  return {};
587
- const e = JSON.parse(
596
+ const t = JSON.parse(
588
597
  n._editable.replace(/^<!--#storyblok#/, "").replace(/-->$/, "")
589
598
  );
590
599
  return {
591
- "data-blok-c": JSON.stringify(e),
592
- "data-blok-uid": e.id + "-" + e.uid
600
+ "data-blok-c": JSON.stringify(t),
601
+ "data-blok-uid": t.id + "-" + t.uid
593
602
  };
594
603
  };
595
604
  let y;
596
- const R = "https://app.storyblok.com/f/storyblok-v2-latest.js", ee = (n, e, t = {}) => {
605
+ const R = "https://app.storyblok.com/f/storyblok-v2-latest.js", tt = (n, t, e = {}) => {
597
606
  if (!(typeof window > "u")) {
598
607
  if (typeof window.storyblokRegisterEvent > "u") {
599
608
  console.error(
@@ -606,54 +615,54 @@ const R = "https://app.storyblok.com/f/storyblok-v2-latest.js", ee = (n, e, t =
606
615
  return;
607
616
  }
608
617
  window.storyblokRegisterEvent(() => {
609
- new window.StoryblokBridge(t).on(["input", "published", "change"], (r) => {
610
- r.action === "input" && r.story.id === n ? e(r.story) : (r.action === "change" || r.action === "published") && r.storyId === n && window.location.reload();
618
+ new window.StoryblokBridge(e).on(["input", "published", "change"], (r) => {
619
+ r.action === "input" && r.story.id === n ? t(r.story) : (r.action === "change" || r.action === "published") && r.storyId === n && window.location.reload();
611
620
  });
612
621
  });
613
622
  }
614
- }, te = (n = {}) => {
623
+ }, et = (n = {}) => {
615
624
  const {
616
- bridge: e,
617
- accessToken: t,
625
+ bridge: t,
626
+ accessToken: e,
618
627
  use: s = [],
619
628
  apiOptions: r = {},
620
629
  richText: o = {}
621
630
  } = n;
622
- r.accessToken = r.accessToken || t;
623
- const i = { bridge: e, apiOptions: r };
631
+ r.accessToken = r.accessToken || e;
632
+ const i = { bridge: t, apiOptions: r };
624
633
  let a = {};
625
634
  return s.forEach((l) => {
626
635
  a = { ...a, ...l(i) };
627
- }), e !== !1 && w(R), y = new g(o.schema), o.resolver && _(y, o.resolver), a;
628
- }, _ = (n, e) => {
629
- n.addNode("blok", (t) => {
636
+ }), t !== !1 && w(R), y = new g(o.schema), o.resolver && _(y, o.resolver), a;
637
+ }, _ = (n, t) => {
638
+ n.addNode("blok", (e) => {
630
639
  let s = "";
631
- return t.attrs.body.forEach((r) => {
632
- s += e(r.component, r);
640
+ return e.attrs.body.forEach((r) => {
641
+ s += t(r.component, r);
633
642
  }), {
634
643
  html: s
635
644
  };
636
645
  });
637
- }, se = (n, e, t) => {
638
- let s = t || y;
646
+ }, st = (n, t, e) => {
647
+ let s = e || y;
639
648
  if (!s) {
640
649
  console.error(
641
650
  "Please initialize the Storyblok SDK before calling the renderRichText function"
642
651
  );
643
652
  return;
644
653
  }
645
- return n === "" ? "" : n ? (e && (s = new g(e.schema), e.resolver && _(s, e.resolver)), s.render(n)) : (console.warn(`${n} is not a valid Richtext object. This might be because the value of the richtext field is empty.
654
+ return n === "" ? "" : n ? (t && (s = new g(t.schema), t.resolver && _(s, t.resolver)), s.render(n)) : (console.warn(`${n} is not a valid Richtext object. This might be because the value of the richtext field is empty.
646
655
 
647
656
  For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`), "");
648
- }, re = () => w(R);
657
+ }, rt = () => w(R);
649
658
  export {
650
659
  g as RichTextResolver,
651
660
  K as RichTextSchema,
652
661
  X as apiPlugin,
653
- re as loadStoryblokBridge,
654
- ee as registerStoryblokBridge,
655
- se as renderRichText,
662
+ rt as loadStoryblokBridge,
663
+ tt as registerStoryblokBridge,
664
+ st as renderRichText,
656
665
  Z as storyblokEditable,
657
- te as storyblokInit,
658
- ee as useStoryblokBridge
666
+ et as storyblokInit,
667
+ tt as useStoryblokBridge
659
668
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storyblok/js",
3
- "version": "2.0.13",
3
+ "version": "2.0.15",
4
4
  "description": "SDK to integrate Storyblok into your project using JavaScript.",
5
5
  "main": "./dist/storyblok-js.js",
6
6
  "module": "./dist/storyblok-js.mjs",
@@ -27,7 +27,7 @@
27
27
  "prepublishOnly": "npm run build && cp ../README.md ./"
28
28
  },
29
29
  "dependencies": {
30
- "storyblok-js-client": "^5.3.8"
30
+ "storyblok-js-client": "^5.4.1"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@tsconfig/recommended": "^1.0.1",