@storyblok/react 2.0.14 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/storyblok-react.js +1 -1
- package/dist/storyblok-react.mjs +116 -114
- package/package.json +5 -5
package/dist/storyblok-react.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(function(l,d){typeof exports=="object"&&typeof module!="undefined"?d(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],d):(l=typeof globalThis!="undefined"?globalThis:l||self,d(l.storyblokReact={},l.React))})(this,function(l,d){"use strict";var Te=Object.defineProperty,_e=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var _=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var L=(l,d,f)=>d in l?Te(l,d,{enumerable:!0,configurable:!0,writable:!0,value:f}):l[d]=f,y=(l,d)=>{for(var f in d||(d={}))U.call(d,f)&&L(l,f,d[f]);if(_)for(var f of _(d))H.call(d,f)&&L(l,f,d[f]);return l},R=(l,d)=>_e(l,Re(d));var q=(l,d)=>{var f={};for(var g in l)U.call(l,g)&&d.indexOf(g)<0&&(f[g]=l[g]);if(l!=null&&_)for(var g of _(l))d.indexOf(g)<0&&H.call(l,g)&&(f[g]=l[g]);return f};function f(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var g=f(d);let $=!1;const j=[],B=o=>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}$?r():j.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=>t(r),s.onload=r=>{j.forEach(n=>n()),$=!0,e(r)},document.getElementsByTagName("head")[0].appendChild(s)});var D=Object.defineProperty,J=(o,e,t)=>e in o?D(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,u=(o,e,t)=>(J(o,typeof e!="symbol"?e+"":e,t),t);function C(o){return!(o!==o||o===1/0||o===-1/0)}function V(o,e,t){if(!C(e))throw new TypeError("Expected `limit` to be a finite number");if(!C(t))throw new TypeError("Expected `interval` to be a finite number");const s=[];let r=[],n=0;const i=function(){n++;const c=setTimeout(function(){n--,s.length>0&&i(),r=r.filter(function(p){return p!==c})},t);r.indexOf(c)<0&&r.push(c);const h=s.shift();h.resolve(o.apply(h.self,h.args))},a=function(...c){const h=this;return new Promise(function(p,v){s.push({resolve:p,reject:v,args:c,self:h}),n<e&&i()})};return a.abort=function(){r.forEach(clearTimeout),r=[],s.forEach(function(c){c.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),s.length=0},a}const Y=function(o,e){const t={};for(const s in o){const r=o[s];e.indexOf(s)>-1&&r!==null&&(t[s]=r)}return t},z=o=>o==="email",F=()=>({singleTag:"hr"}),G=()=>({tag:"blockquote"}),Q=()=>({tag:"ul"}),W=o=>({tag:["pre",{tag:"code",attrs:o.attrs}]}),X=()=>({singleTag:"br"}),Z=o=>({tag:`h${o.attrs.level}`}),K=o=>({singleTag:[{tag:"img",attrs:Y(o.attrs,["src","alt","title"])}]}),ee=()=>({tag:"li"}),te=()=>({tag:"ol"}),se=()=>({tag:"p"}),re=()=>({tag:"b"}),oe=()=>({tag:"strike"}),ne=()=>({tag:"u"}),ie=()=>({tag:"strong"}),ae=()=>({tag:"code"}),le=()=>({tag:"i"}),ce=o=>{const e=y({},o.attrs),{linktype:t="url"}=o.attrs;return z(t)&&(e.href=`mailto:${e.href}`),e.anchor&&(e.href=`${e.href}#${e.anchor}`,delete e.anchor),{tag:[{tag:"a",attrs:e}]}},he=o=>({tag:[{tag:"span",attrs:o.attrs}]}),O={nodes:{horizontal_rule:F,blockquote:G,bullet_list:Q,code_block:W,hard_break:X,heading:Z,image:K,list_item:ee,ordered_list:te,paragraph:se},marks:{bold:re,strike:oe,underline:ne,strong:ie,code:ae,italic:le,link:ce,styled:he}},ue=function(o){const e={"&":"&","<":"<",">":">",'"':""","'":"'"},t=/[&<>"']/g,s=RegExp(t.source);return o&&s.test(o)?o.replace(t,r=>e[r]):o};class k{constructor(e){u(this,"marks"),u(this,"nodes"),e||(e=O),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 n=this.getMatchingMark(r);n&&t.push(this.renderOpeningTag(n.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(ue(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 n=this.getMatchingMark(r);n&&t.push(this.renderClosingTag(n.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 n in s.attrs){const i=s.attrs[n];i!==null&&(r+=` ${n}="${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 I{constructor(){u(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),u(this,"getOptionsPage",(e,t=25,s=1)=>R(y({},e),{per_page:t,page:s})),u(this,"delay",e=>new Promise(t=>setTimeout(t,e))),u(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),u(this,"range",(e=0,t=e)=>{const s=Math.abs(t-e)||0,r=e<t?1:-1;return this.arrayFrom(s,(n,i)=>i*r+e)}),u(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),u(this,"flatMap",(e=[],t)=>e.map(t).reduce((s,r)=>[...s,...r],[]))}stringify(e,t,s){const r=[];for(const n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;const i=e[n],a=s?"":encodeURIComponent(n);let c;typeof i=="object"?c=this.stringify(i,t?t+encodeURIComponent("["+a+"]"):a,Array.isArray(i)):c=(t?t+encodeURIComponent("["+a+"]"):a)+"="+encodeURIComponent(i),r.push(c)}return r.join("&")}}class de{constructor(e){u(this,"baseURL"),u(this,"timeout"),u(this,"headers"),u(this,"responseInterceptor"),u(this,"fetch"),u(this,"ejectInterceptor"),u(this,"url"),u(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=y({},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 c=new I;t=`${this.baseURL}${this.url}?${c.stringify(this.parameters)}`}else s=JSON.stringify(this.parameters);const r=new URL(t),n=new AbortController,{signal:i}=n;let a;this.timeout&&(a=setTimeout(()=>n.abort(),this.timeout));try{const c=await this.fetch(`${r}`,{method:e,headers:this.headers,body:s,signal:i});this.timeout&&clearTimeout(a);const h=await this._responseHandler(c);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(h)):this._statusHandler(h)}catch(c){return{message:c}}}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 n={message:new Error(e.statusText),status:e.status,response:e.data.error||e.data.slug};r(n)})}}let w={};const m={};class pe{constructor(e,t){if(u(this,"client"),u(this,"maxRetries"),u(this,"throttle"),u(this,"accessToken"),u(this,"cache"),u(this,"helpers"),u(this,"relations"),u(this,"links"),u(this,"richTextResolver"),u(this,"resolveNestedRelations"),!t){const n=e.region?`-${e.region}`:"",i=e.https===!1?"http":"https";e.oauthToken?t=`${i}://api${n}.storyblok.com/v1`:t=`${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)=>{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 k(e.richTextSchema):this.richTextResolver=new k,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries,this.throttle=V(this.throttledRequest,r,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new I,this.resolveNestedRelations=!1,this.client=new de({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=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,s,r){const n=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,s,r));return this.cacheResponse(e,n)}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,n=`/${e}`,i=n.split("/"),a=s||i[i.length-1],c=1,h=await this.makeRequest(n,t,r,c),p=h.total?Math.ceil(h.total/r):1,v=await this.helpers.asyncMap(this.helpers.range(c,p),P=>this.makeRequest(n,t,r,P+1));return this.helpers.flatMap([h,...v],P=>Object.values(P.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(n=>{this.relations[n]&&r.push(this._cleanCopy(this.relations[n]))}),e[t]=r}}}iterateTree(e,t){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,t),this._insertLinks(r,n)),s(r[n])}}};s(e.content)}async resolveLinks(e,t){let s=[];if(e.link_uuids){const r=e.link_uuids.length,n=[],i=50;for(let a=0;a<r;a+=i){const c=Math.min(r,a+i);n.push(e.link_uuids.slice(a,c))}for(let a=0;a<n.length;a++)(await this.getStories({per_page:i,language:t.language,version:t.version,by_uuids:n[a].join(",")})).data.stories.forEach(c=>{s.push(c)})}else s=e.links;s.forEach(r=>{this.links[r.uuid]=R(y({},r),{_stopResolving:!0})})}async resolveRelations(e,t){let s=[];if(e.rel_uuids){const r=e.rel_uuids.length,n=[],i=50;for(let a=0;a<r;a+=i){const c=Math.min(r,a+i);n.push(e.rel_uuids.slice(a,c))}for(let a=0;a<n.length;a++)(await this.getStories({per_page:i,language:t.language,version:t.version,by_uuids:n[a].join(",")})).data.stories.forEach(c=>{s.push(c)})}else s=e.rels;s&&s.length>0&&s.forEach(r=>{this.relations[r.uuid]=R(y({},r),{_stopResolving:!0})})}async resolveStories(e,t){var s,r;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&&((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],n);e.story?this.iterateTree(e.story,n):e.stories.forEach(i=>{this.iterateTree(i,n)})}async cacheResponse(e,t,s){const r=this.helpers.stringify({url:e,params:t}),n=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&await this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const i=await n.get(r);if(i)return Promise.resolve(i)}return new Promise((i,a)=>{try{(async()=>{var c;try{const h=await this.throttle("get",e,t);let p={data:h.data,headers:h.headers};return(c=h.headers)!=null&&c["per-page"]&&(p=Object.assign({},p,{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):((p.data.story||p.data.stories)&&await this.resolveStories(p.data,t),t.version==="published"&&e!="/cdn/spaces/me"&&await n.set(r,p),p.data.cv&&t.token&&(t.version=="draft"&&m[t.token]!=p.data.cv&&await this.flushCache(),m[t.token]=p.data.cv),i(p))}catch(h){return a(h)}})()}catch{}})}throttledRequest(e,t,s){return this.client[e](t,s)}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 Promise.resolve(w[e])},getAll(){return Promise.resolve(w)},set(e,t){return w[e]=t,Promise.resolve(void 0)},flush(){return w={},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 fe=(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 pe(e)}},ge=o=>{if(typeof o!="object"||typeof o._editable>"u")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 S;const ye="https://app.storyblok.com/f/storyblok-v2-latest.js",T=(o,e,t={})=>{if(!(typeof window>"u")&&typeof window.storyblokRegisterEvent<"u"){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()})})}},me=(o={})=>{var e,t;const{bridge:s,accessToken:r,use:n=[],apiOptions:i={},richText:a={}}=o;i.accessToken=i.accessToken||r;const c={bridge:s,apiOptions:i};let h={};n.forEach(v=>{h=y(y({},h),v(c))});const p=!(typeof window>"u")&&((t=(e=window.location)==null?void 0:e.search)==null?void 0:t.includes("_storyblok_tk"));return s!==!1&&p&&B(ye),S=new k(a.schema),a.resolver&&A(S,a.resolver),h},A=(o,e)=>{o.addNode("blok",t=>{let s="";return t.attrs.body.forEach(r=>{s+=e(r.component,r)}),{html:s}})},ke=(o,e,t)=>{let s=t||S;if(!s){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return o===""?"":o?(e&&(s=new k(e.schema),e.resolver&&A(s,e.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.
|
|
1
|
+
(function(l,d){typeof exports=="object"&&typeof module!="undefined"?d(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],d):(l=typeof globalThis!="undefined"?globalThis:l||self,d(l.storyblokReact={},l.React))})(this,function(l,d){"use strict";var Te=Object.defineProperty,_e=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var _=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var L=(l,d,f)=>d in l?Te(l,d,{enumerable:!0,configurable:!0,writable:!0,value:f}):l[d]=f,y=(l,d)=>{for(var f in d||(d={}))U.call(d,f)&&L(l,f,d[f]);if(_)for(var f of _(d))H.call(d,f)&&L(l,f,d[f]);return l},R=(l,d)=>_e(l,Re(d));var q=(l,d)=>{var f={};for(var g in l)U.call(l,g)&&d.indexOf(g)<0&&(f[g]=l[g]);if(l!=null&&_)for(var g of _(l))d.indexOf(g)<0&&H.call(l,g)&&(f[g]=l[g]);return f};function f(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var g=f(d);let $=!1;const j=[],B=o=>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}$?r():j.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=>t(r),s.onload=r=>{j.forEach(n=>n()),$=!0,e(r)},document.getElementsByTagName("head")[0].appendChild(s)});var D=Object.defineProperty,J=(o,e,t)=>e in o?D(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,u=(o,e,t)=>(J(o,typeof e!="symbol"?e+"":e,t),t);function C(o){return!(o!==o||o===1/0||o===-1/0)}function V(o,e,t){if(!C(e))throw new TypeError("Expected `limit` to be a finite number");if(!C(t))throw new TypeError("Expected `interval` to be a finite number");const s=[];let r=[],n=0;const i=function(){n++;const c=setTimeout(function(){n--,s.length>0&&i(),r=r.filter(function(p){return p!==c})},t);r.indexOf(c)<0&&r.push(c);const h=s.shift();h.resolve(o.apply(h.self,h.args))},a=function(...c){const h=this;return new Promise(function(p,v){s.push({resolve:p,reject:v,args:c,self:h}),n<e&&i()})};return a.abort=function(){r.forEach(clearTimeout),r=[],s.forEach(function(c){c.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),s.length=0},a}const Y=function(o,e){const t={};for(const s in o){const r=o[s];e.indexOf(s)>-1&&r!==null&&(t[s]=r)}return t},z=o=>o==="email",F=()=>({singleTag:"hr"}),G=()=>({tag:"blockquote"}),Q=()=>({tag:"ul"}),W=o=>({tag:["pre",{tag:"code",attrs:o.attrs}]}),X=()=>({singleTag:"br"}),Z=o=>({tag:`h${o.attrs.level}`}),K=o=>({singleTag:[{tag:"img",attrs:Y(o.attrs,["src","alt","title"])}]}),ee=()=>({tag:"li"}),te=()=>({tag:"ol"}),se=()=>({tag:"p"}),re=()=>({tag:"b"}),oe=()=>({tag:"strike"}),ne=()=>({tag:"u"}),ie=()=>({tag:"strong"}),ae=()=>({tag:"code"}),le=()=>({tag:"i"}),ce=o=>{const e=y({},o.attrs),{linktype:t="url"}=o.attrs;return z(t)&&(e.href=`mailto:${e.href}`),e.anchor&&(e.href=`${e.href}#${e.anchor}`,delete e.anchor),{tag:[{tag:"a",attrs:e}]}},he=o=>({tag:[{tag:"span",attrs:o.attrs}]}),O={nodes:{horizontal_rule:F,blockquote:G,bullet_list:Q,code_block:W,hard_break:X,heading:Z,image:K,list_item:ee,ordered_list:te,paragraph:se},marks:{bold:re,strike:oe,underline:ne,strong:ie,code:ae,italic:le,link:ce,styled:he}},ue=function(o){const e={"&":"&","<":"<",">":">",'"':""","'":"'"},t=/[&<>"']/g,s=RegExp(t.source);return o&&s.test(o)?o.replace(t,r=>e[r]):o};class k{constructor(e){u(this,"marks"),u(this,"nodes"),e||(e=O),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 n=this.getMatchingMark(r);n&&t.push(this.renderOpeningTag(n.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(ue(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 n=this.getMatchingMark(r);n&&t.push(this.renderClosingTag(n.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 n in s.attrs){const i=s.attrs[n];i!==null&&(r+=` ${n}="${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 I{constructor(){u(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),u(this,"getOptionsPage",(e,t=25,s=1)=>R(y({},e),{per_page:t,page:s})),u(this,"delay",e=>new Promise(t=>setTimeout(t,e))),u(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),u(this,"range",(e=0,t=e)=>{const s=Math.abs(t-e)||0,r=e<t?1:-1;return this.arrayFrom(s,(n,i)=>i*r+e)}),u(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),u(this,"flatMap",(e=[],t)=>e.map(t).reduce((s,r)=>[...s,...r],[]))}stringify(e,t,s){const r=[];for(const n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;const i=e[n],a=s?"":encodeURIComponent(n);let c;typeof i=="object"?c=this.stringify(i,t?t+encodeURIComponent("["+a+"]"):a,Array.isArray(i)):c=(t?t+encodeURIComponent("["+a+"]"):a)+"="+encodeURIComponent(i),r.push(c)}return r.join("&")}}class de{constructor(e){u(this,"baseURL"),u(this,"timeout"),u(this,"headers"),u(this,"responseInterceptor"),u(this,"fetch"),u(this,"ejectInterceptor"),u(this,"url"),u(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=y({},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 c=new I;t=`${this.baseURL}${this.url}?${c.stringify(this.parameters)}`}else s=JSON.stringify(this.parameters);const r=new URL(t),n=new AbortController,{signal:i}=n;let a;this.timeout&&(a=setTimeout(()=>n.abort(),this.timeout));try{const c=await this.fetch(`${r}`,{method:e,headers:this.headers,body:s,signal:i});this.timeout&&clearTimeout(a);const h=await this._responseHandler(c);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(h)):this._statusHandler(h)}catch(c){return{message:c}}}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 n={message:new Error(e.statusText),status:e.status,response:e.data.error||e.data.slug};r(n)})}}let w={};const m={};class pe{constructor(e,t){if(u(this,"client"),u(this,"maxRetries"),u(this,"throttle"),u(this,"accessToken"),u(this,"cache"),u(this,"helpers"),u(this,"relations"),u(this,"links"),u(this,"richTextResolver"),u(this,"resolveNestedRelations"),!t){const n=e.region?`-${e.region}`:"",i=e.https===!1?"http":"https";e.oauthToken?t=`${i}://api${n}.storyblok.com/v1`:t=`${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)=>{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 k(e.richTextSchema):this.richTextResolver=new k,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries,this.throttle=V(this.throttledRequest,r,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new I,this.resolveNestedRelations=!1,this.client=new de({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=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,s,r){const n=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,s,r));return this.cacheResponse(e,n)}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,n=`/${e}`,i=n.split("/"),a=s||i[i.length-1],c=1,h=await this.makeRequest(n,t,r,c),p=h.total?Math.ceil(h.total/r):1,v=await this.helpers.asyncMap(this.helpers.range(c,p),P=>this.makeRequest(n,t,r,P+1));return this.helpers.flatMap([h,...v],P=>Object.values(P.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(n=>{this.relations[n]&&r.push(this._cleanCopy(this.relations[n]))}),e[t]=r}}}iterateTree(e,t){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,t),this._insertLinks(r,n)),s(r[n])}}};s(e.content)}async resolveLinks(e,t){let s=[];if(e.link_uuids){const r=e.link_uuids.length,n=[],i=50;for(let a=0;a<r;a+=i){const c=Math.min(r,a+i);n.push(e.link_uuids.slice(a,c))}for(let a=0;a<n.length;a++)(await this.getStories({per_page:i,language:t.language,version:t.version,by_uuids:n[a].join(",")})).data.stories.forEach(c=>{s.push(c)})}else s=e.links;s.forEach(r=>{this.links[r.uuid]=R(y({},r),{_stopResolving:!0})})}async resolveRelations(e,t){let s=[];if(e.rel_uuids){const r=e.rel_uuids.length,n=[],i=50;for(let a=0;a<r;a+=i){const c=Math.min(r,a+i);n.push(e.rel_uuids.slice(a,c))}for(let a=0;a<n.length;a++)(await this.getStories({per_page:i,language:t.language,version:t.version,by_uuids:n[a].join(",")})).data.stories.forEach(c=>{s.push(c)})}else s=e.rels;s&&s.length>0&&s.forEach(r=>{this.relations[r.uuid]=R(y({},r),{_stopResolving:!0})})}async resolveStories(e,t){var s,r;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&&((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],n);e.story?this.iterateTree(e.story,n):e.stories.forEach(i=>{this.iterateTree(i,n)})}async cacheResponse(e,t,s){const r=this.helpers.stringify({url:e,params:t}),n=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&await this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const i=await n.get(r);if(i)return Promise.resolve(i)}return new Promise((i,a)=>{try{(async()=>{var c;try{const h=await this.throttle("get",e,t);let p={data:h.data,headers:h.headers};return(c=h.headers)!=null&&c["per-page"]&&(p=Object.assign({},p,{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):((p.data.story||p.data.stories)&&await this.resolveStories(p.data,t),t.version==="published"&&e!="/cdn/spaces/me"&&await n.set(r,p),p.data.cv&&t.token&&(t.version=="draft"&&m[t.token]!=p.data.cv&&await this.flushCache(),m[t.token]=p.data.cv),i(p))}catch(h){return a(h)}})()}catch{}})}throttledRequest(e,t,s){return this.client[e](t,s)}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 Promise.resolve(w[e])},getAll(){return Promise.resolve(w)},set(e,t){return w[e]=t,Promise.resolve(void 0)},flush(){return w={},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 fe=(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 pe(e)}},ge=o=>{if(typeof o!="object"||typeof o._editable>"u")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 S;const ye="https://app.storyblok.com/f/storyblok-v2-latest.js",T=(o,e,t={})=>{var s;const r=!(typeof window>"u")&&typeof window.storyblokRegisterEvent<"u",n=+new URL((s=window.location)==null?void 0:s.href).searchParams.get("_storyblok")===o;if(!(!r||!n)){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"],i=>{i.action==="input"&&i.story.id===o?e(i.story):(i.action==="change"||i.action==="published")&&i.storyId===o&&window.location.reload()})})}},me=(o={})=>{var e,t;const{bridge:s,accessToken:r,use:n=[],apiOptions:i={},richText:a={}}=o;i.accessToken=i.accessToken||r;const c={bridge:s,apiOptions:i};let h={};n.forEach(v=>{h=y(y({},h),v(c))});const p=!(typeof window>"u")&&((t=(e=window.location)==null?void 0:e.search)==null?void 0:t.includes("_storyblok_tk"));return s!==!1&&p&&B(ye),S=new k(a.schema),a.resolver&&A(S,a.resolver),h},A=(o,e)=>{o.addNode("blok",t=>{let s="";return t.attrs.body.forEach(r=>{s+=e(r.component,r)}),{html:s}})},ke=(o,e,t)=>{let s=t||S;if(!s){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return o===""?"":o?(e&&(s=new k(e.schema),e.resolver&&A(s,e.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
3
|
For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`),"")},x=d.forwardRef((s,t)=>{var r=s,{blok:o}=r,e=q(r,["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=N(o.component);return n?g.default.createElement(n,y({ref:t,blok:o},e)):g.default.createElement("div",null)});x.displayName="StoryblokComponent";const be=(o,e={},t={})=>{let[s,r]=d.useState({});if(!b)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 d.useEffect(()=>{async function i(){const{data:a}=await b.get(`cdn/stories/${o}`,e);r(a.story),n&&a.story.id&&T(a.story.id,c=>r(c),t)}i()},[o]),s},ve=(o=null,e={})=>{let[t,s]=d.useState(o);return!(typeof window!="undefined"&&typeof window.storyblokRegisterEvent!="undefined")||!o?o:(d.useEffect(()=>{s(o),T(t.id,n=>s(n),e)},[o]),t)};let b=null;const M=()=>(b||console.error("You can't use getStoryblokApi if you're not loading apiPlugin."),b);let E={};const N=o=>E[o]?E[o]:(console.error(`Component ${o} doesn't exist.`),!1),we=(o={})=>{const{storyblokApi:e}=me(o);b=e,E=o.components};l.RichTextResolver=k,l.RichTextSchema=O,l.StoryblokComponent=x,l.apiPlugin=fe,l.getComponent=N,l.getStoryblokApi=M,l.registerStoryblokBridge=T,l.renderRichText=ke,l.storyblokEditable=ge,l.storyblokInit=we,l.useStoryblok=be,l.useStoryblokApi=M,l.useStoryblokBridge=T,l.useStoryblokState=ve,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/storyblok-react.mjs
CHANGED
|
@@ -31,7 +31,7 @@ var __objRest = (source, exclude) => {
|
|
|
31
31
|
};
|
|
32
32
|
import React, { forwardRef, useState, useEffect } from "react";
|
|
33
33
|
let v = false;
|
|
34
|
-
const k = [], w = (
|
|
34
|
+
const k = [], w = (n) => new Promise((t, e) => {
|
|
35
35
|
if (typeof window > "u" || (window.storyblokRegisterEvent = (r) => {
|
|
36
36
|
if (window.location === window.parent.location) {
|
|
37
37
|
console.warn("You are not in Draft Mode or in the Visual Editor.");
|
|
@@ -41,40 +41,40 @@ const k = [], w = (o) => new Promise((t, e) => {
|
|
|
41
41
|
}, document.getElementById("storyblok-javascript-bridge")))
|
|
42
42
|
return;
|
|
43
43
|
const s = document.createElement("script");
|
|
44
|
-
s.async = true, s.src =
|
|
45
|
-
k.forEach((
|
|
44
|
+
s.async = true, s.src = n, s.id = "storyblok-javascript-bridge", s.onerror = (r) => e(r), s.onload = (r) => {
|
|
45
|
+
k.forEach((o) => o()), v = true, t(r);
|
|
46
46
|
}, document.getElementsByTagName("head")[0].appendChild(s);
|
|
47
47
|
});
|
|
48
|
-
var $ = Object.defineProperty, P = (
|
|
49
|
-
function b(
|
|
50
|
-
return !(
|
|
48
|
+
var $ = Object.defineProperty, P = (n, t, e) => t in n ? $(n, t, { enumerable: true, configurable: true, writable: true, value: e }) : n[t] = e, h = (n, t, e) => (P(n, typeof t != "symbol" ? t + "" : t, e), e);
|
|
49
|
+
function b(n) {
|
|
50
|
+
return !(n !== n || n === 1 / 0 || n === -1 / 0);
|
|
51
51
|
}
|
|
52
|
-
function x(
|
|
52
|
+
function x(n, t, e) {
|
|
53
53
|
if (!b(t))
|
|
54
54
|
throw new TypeError("Expected `limit` to be a finite number");
|
|
55
55
|
if (!b(e))
|
|
56
56
|
throw new TypeError("Expected `interval` to be a finite number");
|
|
57
57
|
const s = [];
|
|
58
|
-
let r = [],
|
|
58
|
+
let r = [], o = 0;
|
|
59
59
|
const i = function() {
|
|
60
|
-
|
|
60
|
+
o++;
|
|
61
61
|
const c = setTimeout(function() {
|
|
62
|
-
|
|
62
|
+
o--, s.length > 0 && i(), r = r.filter(function(u) {
|
|
63
63
|
return u !== c;
|
|
64
64
|
});
|
|
65
65
|
}, e);
|
|
66
66
|
r.indexOf(c) < 0 && r.push(c);
|
|
67
|
-
const
|
|
68
|
-
|
|
67
|
+
const l = s.shift();
|
|
68
|
+
l.resolve(n.apply(l.self, l.args));
|
|
69
69
|
}, a = function(...c) {
|
|
70
|
-
const
|
|
70
|
+
const l = this;
|
|
71
71
|
return new Promise(function(u, d) {
|
|
72
72
|
s.push({
|
|
73
73
|
resolve: u,
|
|
74
74
|
reject: d,
|
|
75
75
|
args: c,
|
|
76
|
-
self:
|
|
77
|
-
}),
|
|
76
|
+
self: l
|
|
77
|
+
}), o < t && i();
|
|
78
78
|
});
|
|
79
79
|
};
|
|
80
80
|
return a.abort = function() {
|
|
@@ -85,36 +85,36 @@ function x(o, t, e) {
|
|
|
85
85
|
}), s.length = 0;
|
|
86
86
|
}, a;
|
|
87
87
|
}
|
|
88
|
-
const E = function(
|
|
88
|
+
const E = function(n, t) {
|
|
89
89
|
const e = {};
|
|
90
|
-
for (const s in
|
|
91
|
-
const r =
|
|
90
|
+
for (const s in n) {
|
|
91
|
+
const r = n[s];
|
|
92
92
|
t.indexOf(s) > -1 && r !== null && (e[s] = r);
|
|
93
93
|
}
|
|
94
94
|
return e;
|
|
95
|
-
}, j = (
|
|
95
|
+
}, j = (n) => n === "email", S = () => ({
|
|
96
96
|
singleTag: "hr"
|
|
97
|
-
}),
|
|
97
|
+
}), I = () => ({
|
|
98
98
|
tag: "blockquote"
|
|
99
|
-
}),
|
|
99
|
+
}), O = () => ({
|
|
100
100
|
tag: "ul"
|
|
101
|
-
}),
|
|
101
|
+
}), C = (n) => ({
|
|
102
102
|
tag: [
|
|
103
103
|
"pre",
|
|
104
104
|
{
|
|
105
105
|
tag: "code",
|
|
106
|
-
attrs:
|
|
106
|
+
attrs: n.attrs
|
|
107
107
|
}
|
|
108
108
|
]
|
|
109
109
|
}), A = () => ({
|
|
110
110
|
singleTag: "br"
|
|
111
|
-
}), N = (
|
|
112
|
-
tag: `h${
|
|
113
|
-
}), M = (
|
|
111
|
+
}), N = (n) => ({
|
|
112
|
+
tag: `h${n.attrs.level}`
|
|
113
|
+
}), M = (n) => ({
|
|
114
114
|
singleTag: [
|
|
115
115
|
{
|
|
116
116
|
tag: "img",
|
|
117
|
-
attrs: E(
|
|
117
|
+
attrs: E(n.attrs, ["src", "alt", "title"])
|
|
118
118
|
}
|
|
119
119
|
]
|
|
120
120
|
}), L = () => ({
|
|
@@ -135,8 +135,8 @@ const E = function(o, t) {
|
|
|
135
135
|
tag: "code"
|
|
136
136
|
}), V = () => ({
|
|
137
137
|
tag: "i"
|
|
138
|
-
}), z = (
|
|
139
|
-
const t = __spreadValues({},
|
|
138
|
+
}), z = (n) => {
|
|
139
|
+
const t = __spreadValues({}, n.attrs), { linktype: e = "url" } = n.attrs;
|
|
140
140
|
return j(e) && (t.href = `mailto:${t.href}`), t.anchor && (t.href = `${t.href}#${t.anchor}`, delete t.anchor), {
|
|
141
141
|
tag: [
|
|
142
142
|
{
|
|
@@ -145,19 +145,19 @@ const E = function(o, t) {
|
|
|
145
145
|
}
|
|
146
146
|
]
|
|
147
147
|
};
|
|
148
|
-
}, Y = (
|
|
148
|
+
}, Y = (n) => ({
|
|
149
149
|
tag: [
|
|
150
150
|
{
|
|
151
151
|
tag: "span",
|
|
152
|
-
attrs:
|
|
152
|
+
attrs: n.attrs
|
|
153
153
|
}
|
|
154
154
|
]
|
|
155
155
|
}), K = {
|
|
156
156
|
nodes: {
|
|
157
157
|
horizontal_rule: S,
|
|
158
|
-
blockquote:
|
|
159
|
-
bullet_list:
|
|
160
|
-
code_block:
|
|
158
|
+
blockquote: I,
|
|
159
|
+
bullet_list: O,
|
|
160
|
+
code_block: C,
|
|
161
161
|
hard_break: A,
|
|
162
162
|
heading: N,
|
|
163
163
|
image: M,
|
|
@@ -175,7 +175,7 @@ const E = function(o, t) {
|
|
|
175
175
|
link: z,
|
|
176
176
|
styled: Y
|
|
177
177
|
}
|
|
178
|
-
}, Q = function(
|
|
178
|
+
}, Q = function(n) {
|
|
179
179
|
const t = {
|
|
180
180
|
"&": "&",
|
|
181
181
|
"<": "<",
|
|
@@ -183,11 +183,11 @@ const E = function(o, t) {
|
|
|
183
183
|
'"': """,
|
|
184
184
|
"'": "'"
|
|
185
185
|
}, e = /[&<>"']/g, s = RegExp(e.source);
|
|
186
|
-
return
|
|
186
|
+
return n && s.test(n) ? n.replace(e, (r) => t[r]) : n;
|
|
187
187
|
};
|
|
188
188
|
class m {
|
|
189
189
|
constructor(t) {
|
|
190
|
-
|
|
190
|
+
h(this, "marks"), h(this, "nodes"), t || (t = K), this.marks = t.marks || [], this.nodes = t.nodes || [];
|
|
191
191
|
}
|
|
192
192
|
addNode(t, e) {
|
|
193
193
|
this.nodes[t] = e;
|
|
@@ -207,15 +207,15 @@ class m {
|
|
|
207
207
|
renderNode(t) {
|
|
208
208
|
const e = [];
|
|
209
209
|
t.marks && t.marks.forEach((r) => {
|
|
210
|
-
const
|
|
211
|
-
|
|
210
|
+
const o = this.getMatchingMark(r);
|
|
211
|
+
o && e.push(this.renderOpeningTag(o.tag));
|
|
212
212
|
});
|
|
213
213
|
const s = this.getMatchingNode(t);
|
|
214
214
|
return s && s.tag && e.push(this.renderOpeningTag(s.tag)), t.content ? t.content.forEach((r) => {
|
|
215
215
|
e.push(this.renderNode(r));
|
|
216
216
|
}) : 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) => {
|
|
217
|
-
const
|
|
218
|
-
|
|
217
|
+
const o = this.getMatchingMark(r);
|
|
218
|
+
o && e.push(this.renderClosingTag(o.tag));
|
|
219
219
|
}), e.join("");
|
|
220
220
|
}
|
|
221
221
|
renderTag(t, e) {
|
|
@@ -225,9 +225,9 @@ class m {
|
|
|
225
225
|
{
|
|
226
226
|
let r = `<${s.tag}`;
|
|
227
227
|
if (s.attrs)
|
|
228
|
-
for (const
|
|
229
|
-
const i = s.attrs[
|
|
230
|
-
i !== null && (r += ` ${
|
|
228
|
+
for (const o in s.attrs) {
|
|
229
|
+
const i = s.attrs[o];
|
|
230
|
+
i !== null && (r += ` ${o}="${i}"`);
|
|
231
231
|
}
|
|
232
232
|
return `${r}${e}>`;
|
|
233
233
|
}
|
|
@@ -252,20 +252,20 @@ class m {
|
|
|
252
252
|
}
|
|
253
253
|
class T {
|
|
254
254
|
constructor() {
|
|
255
|
-
|
|
255
|
+
h(this, "isCDNUrl", (t = "") => t.indexOf("/cdn/") > -1), h(this, "getOptionsPage", (t, e = 25, s = 1) => __spreadProps(__spreadValues({}, t), {
|
|
256
256
|
per_page: e,
|
|
257
257
|
page: s
|
|
258
|
-
})),
|
|
258
|
+
})), h(this, "delay", (t) => new Promise((e) => setTimeout(e, t))), h(this, "arrayFrom", (t = 0, e) => [...Array(t)].map(e)), h(this, "range", (t = 0, e = t) => {
|
|
259
259
|
const s = Math.abs(e - t) || 0, r = t < e ? 1 : -1;
|
|
260
|
-
return this.arrayFrom(s, (
|
|
261
|
-
}),
|
|
260
|
+
return this.arrayFrom(s, (o, i) => i * r + t);
|
|
261
|
+
}), h(this, "asyncMap", async (t, e) => Promise.all(t.map(e))), h(this, "flatMap", (t = [], e) => t.map(e).reduce((s, r) => [...s, ...r], []));
|
|
262
262
|
}
|
|
263
263
|
stringify(t, e, s) {
|
|
264
264
|
const r = [];
|
|
265
|
-
for (const
|
|
266
|
-
if (!Object.prototype.hasOwnProperty.call(t,
|
|
265
|
+
for (const o in t) {
|
|
266
|
+
if (!Object.prototype.hasOwnProperty.call(t, o))
|
|
267
267
|
continue;
|
|
268
|
-
const i = t[
|
|
268
|
+
const i = t[o], a = s ? "" : encodeURIComponent(o);
|
|
269
269
|
let c;
|
|
270
270
|
typeof i == "object" ? c = this.stringify(i, e ? e + encodeURIComponent("[" + a + "]") : a, Array.isArray(i)) : c = (e ? e + encodeURIComponent("[" + a + "]") : a) + "=" + encodeURIComponent(i), r.push(c);
|
|
271
271
|
}
|
|
@@ -274,7 +274,7 @@ class T {
|
|
|
274
274
|
}
|
|
275
275
|
class G {
|
|
276
276
|
constructor(t) {
|
|
277
|
-
|
|
277
|
+
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 = 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 = false, this.url = "", this.parameters = {};
|
|
278
278
|
}
|
|
279
279
|
get(t, e) {
|
|
280
280
|
return this.url = t, this.parameters = e, this._methodHandler("get");
|
|
@@ -309,9 +309,9 @@ class G {
|
|
|
309
309
|
e = `${this.baseURL}${this.url}?${c.stringify(this.parameters)}`;
|
|
310
310
|
} else
|
|
311
311
|
s = JSON.stringify(this.parameters);
|
|
312
|
-
const r = new URL(e),
|
|
312
|
+
const r = new URL(e), o = new AbortController(), { signal: i } = o;
|
|
313
313
|
let a;
|
|
314
|
-
this.timeout && (a = setTimeout(() =>
|
|
314
|
+
this.timeout && (a = setTimeout(() => o.abort(), this.timeout));
|
|
315
315
|
try {
|
|
316
316
|
const c = await this.fetch(`${r}`, {
|
|
317
317
|
method: t,
|
|
@@ -320,8 +320,8 @@ class G {
|
|
|
320
320
|
signal: i
|
|
321
321
|
});
|
|
322
322
|
this.timeout && clearTimeout(a);
|
|
323
|
-
const
|
|
324
|
-
return this.responseInterceptor && !this.ejectInterceptor ? this._statusHandler(this.responseInterceptor(
|
|
323
|
+
const l = await this._responseHandler(c);
|
|
324
|
+
return this.responseInterceptor && !this.ejectInterceptor ? this._statusHandler(this.responseInterceptor(l)) : this._statusHandler(l);
|
|
325
325
|
} catch (c) {
|
|
326
326
|
return {
|
|
327
327
|
message: c
|
|
@@ -336,12 +336,12 @@ class G {
|
|
|
336
336
|
return new Promise((s, r) => {
|
|
337
337
|
if (e.test(`${t.status}`))
|
|
338
338
|
return s(t);
|
|
339
|
-
const
|
|
339
|
+
const o = {
|
|
340
340
|
message: new Error(t.statusText),
|
|
341
341
|
status: t.status,
|
|
342
342
|
response: t.data.error || t.data.slug
|
|
343
343
|
};
|
|
344
|
-
r(
|
|
344
|
+
r(o);
|
|
345
345
|
});
|
|
346
346
|
}
|
|
347
347
|
}
|
|
@@ -349,12 +349,12 @@ let f = {};
|
|
|
349
349
|
const p = {};
|
|
350
350
|
class W {
|
|
351
351
|
constructor(t, e) {
|
|
352
|
-
if (
|
|
353
|
-
const
|
|
354
|
-
t.oauthToken ? e = `${i}://api${
|
|
352
|
+
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"), !e) {
|
|
353
|
+
const o = t.region ? `-${t.region}` : "", i = t.https === false ? "http" : "https";
|
|
354
|
+
t.oauthToken ? e = `${i}://api${o}.storyblok.com/v1` : e = `${i}://api${o}.storyblok.com/v2`;
|
|
355
355
|
}
|
|
356
356
|
const s = new Headers();
|
|
357
|
-
s.set("Content-Type", "application/json"), s.set("Accept", "application/json"), s.forEach((
|
|
357
|
+
s.set("Content-Type", "application/json"), s.set("Accept", "application/json"), s.forEach((o, i) => {
|
|
358
358
|
t.headers && t.headers[i] && s.set(i, t.headers[i]);
|
|
359
359
|
});
|
|
360
360
|
let r = 5;
|
|
@@ -383,8 +383,8 @@ class W {
|
|
|
383
383
|
return this.helpers.isCDNUrl(t) ? this.parseParams(e) : e;
|
|
384
384
|
}
|
|
385
385
|
makeRequest(t, e, s, r) {
|
|
386
|
-
const
|
|
387
|
-
return this.cacheResponse(t,
|
|
386
|
+
const o = this.factoryParamOptions(t, this.helpers.getOptionsPage(e, s, r));
|
|
387
|
+
return this.cacheResponse(t, o);
|
|
388
388
|
}
|
|
389
389
|
get(t, e) {
|
|
390
390
|
e || (e = {});
|
|
@@ -392,8 +392,8 @@ class W {
|
|
|
392
392
|
return this.cacheResponse(s, r);
|
|
393
393
|
}
|
|
394
394
|
async getAll(t, e, s) {
|
|
395
|
-
const r = (e == null ? void 0 : e.per_page) || 25,
|
|
396
|
-
return this.helpers.flatMap([
|
|
395
|
+
const r = (e == null ? void 0 : e.per_page) || 25, o = `/${t}`, i = o.split("/"), a = s || i[i.length - 1], c = 1, l = await this.makeRequest(o, e, r, c), u = l.total ? Math.ceil(l.total / r) : 1, d = await this.helpers.asyncMap(this.helpers.range(c, u), (g) => this.makeRequest(o, e, r, g + 1));
|
|
396
|
+
return this.helpers.flatMap([l, ...d], (g) => Object.values(g.data[a]));
|
|
397
397
|
}
|
|
398
398
|
post(t, e) {
|
|
399
399
|
const s = `/${t}`;
|
|
@@ -432,8 +432,8 @@ class W {
|
|
|
432
432
|
this.relations[t[e]] && (t[e] = this._cleanCopy(this.relations[t[e]]));
|
|
433
433
|
else if (t[e] && t[e].constructor === Array) {
|
|
434
434
|
const r = [];
|
|
435
|
-
t[e].forEach((
|
|
436
|
-
this.relations[
|
|
435
|
+
t[e].forEach((o) => {
|
|
436
|
+
this.relations[o] && r.push(this._cleanCopy(this.relations[o]));
|
|
437
437
|
}), t[e] = r;
|
|
438
438
|
}
|
|
439
439
|
}
|
|
@@ -442,13 +442,13 @@ class W {
|
|
|
442
442
|
const s = (r) => {
|
|
443
443
|
if (r != null) {
|
|
444
444
|
if (r.constructor === Array)
|
|
445
|
-
for (let
|
|
446
|
-
s(r[
|
|
445
|
+
for (let o = 0; o < r.length; o++)
|
|
446
|
+
s(r[o]);
|
|
447
447
|
else if (r.constructor === Object) {
|
|
448
448
|
if (r._stopResolving)
|
|
449
449
|
return;
|
|
450
|
-
for (const
|
|
451
|
-
(r.component && r._uid || r.type === "link") && (this._insertRelations(r,
|
|
450
|
+
for (const o in r)
|
|
451
|
+
(r.component && r._uid || r.type === "link") && (this._insertRelations(r, o, e), this._insertLinks(r, o)), s(r[o]);
|
|
452
452
|
}
|
|
453
453
|
}
|
|
454
454
|
};
|
|
@@ -457,17 +457,17 @@ class W {
|
|
|
457
457
|
async resolveLinks(t, e) {
|
|
458
458
|
let s = [];
|
|
459
459
|
if (t.link_uuids) {
|
|
460
|
-
const r = t.link_uuids.length,
|
|
460
|
+
const r = t.link_uuids.length, o = [], i = 50;
|
|
461
461
|
for (let a = 0; a < r; a += i) {
|
|
462
462
|
const c = Math.min(r, a + i);
|
|
463
|
-
|
|
463
|
+
o.push(t.link_uuids.slice(a, c));
|
|
464
464
|
}
|
|
465
|
-
for (let a = 0; a <
|
|
465
|
+
for (let a = 0; a < o.length; a++)
|
|
466
466
|
(await this.getStories({
|
|
467
467
|
per_page: i,
|
|
468
468
|
language: e.language,
|
|
469
469
|
version: e.version,
|
|
470
|
-
by_uuids:
|
|
470
|
+
by_uuids: o[a].join(",")
|
|
471
471
|
})).data.stories.forEach((c) => {
|
|
472
472
|
s.push(c);
|
|
473
473
|
});
|
|
@@ -480,17 +480,17 @@ class W {
|
|
|
480
480
|
async resolveRelations(t, e) {
|
|
481
481
|
let s = [];
|
|
482
482
|
if (t.rel_uuids) {
|
|
483
|
-
const r = t.rel_uuids.length,
|
|
483
|
+
const r = t.rel_uuids.length, o = [], i = 50;
|
|
484
484
|
for (let a = 0; a < r; a += i) {
|
|
485
485
|
const c = Math.min(r, a + i);
|
|
486
|
-
|
|
486
|
+
o.push(t.rel_uuids.slice(a, c));
|
|
487
487
|
}
|
|
488
|
-
for (let a = 0; a <
|
|
488
|
+
for (let a = 0; a < o.length; a++)
|
|
489
489
|
(await this.getStories({
|
|
490
490
|
per_page: i,
|
|
491
491
|
language: e.language,
|
|
492
492
|
version: e.version,
|
|
493
|
-
by_uuids:
|
|
493
|
+
by_uuids: o[a].join(",")
|
|
494
494
|
})).data.stories.forEach((c) => {
|
|
495
495
|
s.push(c);
|
|
496
496
|
});
|
|
@@ -502,18 +502,18 @@ class W {
|
|
|
502
502
|
}
|
|
503
503
|
async resolveStories(t, e) {
|
|
504
504
|
var s, r;
|
|
505
|
-
let
|
|
506
|
-
if (typeof e.resolve_relations < "u" && e.resolve_relations.length > 0 && (typeof e.resolve_relations == "string" && (
|
|
505
|
+
let o = [];
|
|
506
|
+
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)
|
|
507
507
|
for (const i in this.relations)
|
|
508
|
-
this.iterateTree(this.relations[i],
|
|
509
|
-
t.story ? this.iterateTree(t.story,
|
|
510
|
-
this.iterateTree(i,
|
|
508
|
+
this.iterateTree(this.relations[i], o);
|
|
509
|
+
t.story ? this.iterateTree(t.story, o) : t.stories.forEach((i) => {
|
|
510
|
+
this.iterateTree(i, o);
|
|
511
511
|
});
|
|
512
512
|
}
|
|
513
513
|
async cacheResponse(t, e, s) {
|
|
514
|
-
const r = this.helpers.stringify({ url: t, params: e }),
|
|
514
|
+
const r = this.helpers.stringify({ url: t, params: e }), o = this.cacheProvider();
|
|
515
515
|
if (this.cache.clear === "auto" && e.version === "draft" && await this.flushCache(), e.version === "published" && t != "/cdn/spaces/me") {
|
|
516
|
-
const i = await
|
|
516
|
+
const i = await o.get(r);
|
|
517
517
|
if (i)
|
|
518
518
|
return Promise.resolve(i);
|
|
519
519
|
}
|
|
@@ -522,14 +522,14 @@ class W {
|
|
|
522
522
|
(async () => {
|
|
523
523
|
var c;
|
|
524
524
|
try {
|
|
525
|
-
const
|
|
526
|
-
let u = { data:
|
|
527
|
-
return (c =
|
|
528
|
-
perPage:
|
|
529
|
-
total:
|
|
530
|
-
})),
|
|
531
|
-
} catch (
|
|
532
|
-
return a(
|
|
525
|
+
const l = await this.throttle("get", t, e);
|
|
526
|
+
let u = { data: l.data, headers: l.headers };
|
|
527
|
+
return (c = l.headers) != null && c["per-page"] && (u = Object.assign({}, u, {
|
|
528
|
+
perPage: l.headers["per-page"] ? parseInt(l.headers["per-page"]) : 0,
|
|
529
|
+
total: l.headers["per-page"] ? parseInt(l.headers.total) : 0
|
|
530
|
+
})), l.status != 200 ? a(l) : ((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" && p[e.token] != u.data.cv && await this.flushCache(), p[e.token] = u.data.cv), i(u));
|
|
531
|
+
} catch (l) {
|
|
532
|
+
return a(l);
|
|
533
533
|
}
|
|
534
534
|
})();
|
|
535
535
|
} catch {
|
|
@@ -589,54 +589,56 @@ class W {
|
|
|
589
589
|
return await this.cacheProvider().flush(), this;
|
|
590
590
|
}
|
|
591
591
|
}
|
|
592
|
-
const X = (
|
|
593
|
-
const { apiOptions: t } =
|
|
592
|
+
const X = (n = {}) => {
|
|
593
|
+
const { apiOptions: t } = n;
|
|
594
594
|
if (!t.accessToken) {
|
|
595
595
|
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");
|
|
596
596
|
return;
|
|
597
597
|
}
|
|
598
598
|
return { storyblokApi: new W(t) };
|
|
599
|
-
}, Z = (
|
|
600
|
-
if (typeof
|
|
599
|
+
}, Z = (n) => {
|
|
600
|
+
if (typeof n != "object" || typeof n._editable > "u")
|
|
601
601
|
return {};
|
|
602
|
-
const t = JSON.parse(
|
|
602
|
+
const t = JSON.parse(n._editable.replace(/^<!--#storyblok#/, "").replace(/-->$/, ""));
|
|
603
603
|
return {
|
|
604
604
|
"data-blok-c": JSON.stringify(t),
|
|
605
605
|
"data-blok-uid": t.id + "-" + t.uid
|
|
606
606
|
};
|
|
607
607
|
};
|
|
608
608
|
let y;
|
|
609
|
-
const _ = "https://app.storyblok.com/f/storyblok-v2-latest.js", tt = (
|
|
610
|
-
|
|
611
|
-
|
|
609
|
+
const _ = "https://app.storyblok.com/f/storyblok-v2-latest.js", tt = (n, t, e = {}) => {
|
|
610
|
+
var a;
|
|
611
|
+
const r = !(typeof window > "u") && typeof window.storyblokRegisterEvent < "u", i = +new URL((a = window.location) == null ? void 0 : a.href).searchParams.get("_storyblok") === n;
|
|
612
|
+
if (!(!r || !i)) {
|
|
613
|
+
if (!n) {
|
|
612
614
|
console.warn("Story ID is not defined. Please provide a valid ID.");
|
|
613
615
|
return;
|
|
614
616
|
}
|
|
615
617
|
window.storyblokRegisterEvent(() => {
|
|
616
|
-
new window.StoryblokBridge(e).on(["input", "published", "change"], (
|
|
617
|
-
|
|
618
|
+
new window.StoryblokBridge(e).on(["input", "published", "change"], (l) => {
|
|
619
|
+
l.action === "input" && l.story.id === n ? t(l.story) : (l.action === "change" || l.action === "published") && l.storyId === n && window.location.reload();
|
|
618
620
|
});
|
|
619
621
|
});
|
|
620
622
|
}
|
|
621
|
-
}, et = (
|
|
623
|
+
}, et = (n = {}) => {
|
|
622
624
|
var u, d;
|
|
623
625
|
const {
|
|
624
626
|
bridge: t,
|
|
625
627
|
accessToken: e,
|
|
626
628
|
use: s = [],
|
|
627
629
|
apiOptions: r = {},
|
|
628
|
-
richText:
|
|
629
|
-
} =
|
|
630
|
+
richText: o = {}
|
|
631
|
+
} = n;
|
|
630
632
|
r.accessToken = r.accessToken || e;
|
|
631
633
|
const i = { bridge: t, apiOptions: r };
|
|
632
634
|
let a = {};
|
|
633
635
|
s.forEach((g) => {
|
|
634
636
|
a = __spreadValues(__spreadValues({}, a), g(i));
|
|
635
637
|
});
|
|
636
|
-
const
|
|
637
|
-
return t !== false &&
|
|
638
|
-
}, R = (
|
|
639
|
-
|
|
638
|
+
const l = !(typeof window > "u") && ((d = (u = window.location) == null ? void 0 : u.search) == null ? void 0 : d.includes("_storyblok_tk"));
|
|
639
|
+
return t !== false && l && w(_), y = new m(o.schema), o.resolver && R(y, o.resolver), a;
|
|
640
|
+
}, R = (n, t) => {
|
|
641
|
+
n.addNode("blok", (e) => {
|
|
640
642
|
let s = "";
|
|
641
643
|
return e.attrs.body.forEach((r) => {
|
|
642
644
|
s += t(r.component, r);
|
|
@@ -644,13 +646,13 @@ const _ = "https://app.storyblok.com/f/storyblok-v2-latest.js", tt = (o, t, e =
|
|
|
644
646
|
html: s
|
|
645
647
|
};
|
|
646
648
|
});
|
|
647
|
-
}, st = (
|
|
649
|
+
}, st = (n, t, e) => {
|
|
648
650
|
let s = e || y;
|
|
649
651
|
if (!s) {
|
|
650
652
|
console.error("Please initialize the Storyblok SDK before calling the renderRichText function");
|
|
651
653
|
return;
|
|
652
654
|
}
|
|
653
|
-
return
|
|
655
|
+
return n === "" ? "" : n ? (t && (s = new m(t.schema), t.resolver && R(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.
|
|
654
656
|
|
|
655
657
|
For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`), "");
|
|
656
658
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storyblok/react",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.15",
|
|
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,21 +24,21 @@
|
|
|
24
24
|
"prepublishOnly": "npm run build && cp ../README.md ./"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@storyblok/js": "^2.1.
|
|
27
|
+
"@storyblok/js": "^2.1.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@babel/core": "^7.21.
|
|
30
|
+
"@babel/core": "^7.21.3",
|
|
31
31
|
"@babel/preset-env": "^7.20.2",
|
|
32
32
|
"@cypress/react": "^5.12.5",
|
|
33
33
|
"@cypress/vite-dev-server": "^2.2.3",
|
|
34
34
|
"@tsconfig/recommended": "^1.0.2",
|
|
35
35
|
"@types/react": "18.0.28",
|
|
36
36
|
"@vitejs/plugin-react": "^1.3.2",
|
|
37
|
-
"babel-jest": "^29.
|
|
37
|
+
"babel-jest": "^29.5.0",
|
|
38
38
|
"cypress": "^9.7.0",
|
|
39
39
|
"eslint-plugin-cypress": "^2.12.1",
|
|
40
40
|
"eslint-plugin-jest": "^27.2.1",
|
|
41
|
-
"jest": "^29.
|
|
41
|
+
"jest": "^29.5.0",
|
|
42
42
|
"react": "^18.2.0",
|
|
43
43
|
"react-dom": "^18.2.0",
|
|
44
44
|
"vite": "^2.9.15"
|