@storyblok/js 2.1.6 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/storyblok-js.js +2 -4
- package/dist/storyblok-js.mjs +129 -127
- package/dist/types/index.d.ts +2 -1
- package/package.json +1 -1
package/dist/storyblok-js.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(d,m){typeof exports=="object"&&typeof module<"u"?m(exports):typeof define=="function"&&define.amd?define(["exports"],m):(d=typeof globalThis<"u"?globalThis:d||self,m(d.storyblok={}))})(this,function(d){"use strict";let m=!1;const R=[],_=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}m?r():R.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=>{R.forEach(i=>i()),m=!0,e(r)},document.getElementsByTagName("head")[0].appendChild(s)});var
|
|
1
|
+
(function(d,m){typeof exports=="object"&&typeof module<"u"?m(exports):typeof define=="function"&&define.amd?define(["exports"],m):(d=typeof globalThis<"u"?globalThis:d||self,m(d.storyblok={}))})(this,function(d){"use strict";let m=!1;const R=[],_=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}m?r():R.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=>{R.forEach(i=>i()),m=!0,e(r)},document.getElementsByTagName("head")[0].appendChild(s)});var O=Object.defineProperty,A=(n,e,t)=>e in n?O(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,h=(n,e,t)=>(A(n,typeof e!="symbol"?e+"":e,t),t);function j(n){return!(n!==n||n===1/0||n===-1/0)}function N(n,e,t){if(!j(e))throw new TypeError("Expected `limit` to be a finite number");if(!j(t))throw new TypeError("Expected `interval` to be a finite number");const s=[];let r=[],i=0;const o=function(){i++;const a=setTimeout(function(){i--,s.length>0&&o(),r=r.filter(function(u){return u!==a})},t);r.indexOf(a)<0&&r.push(a);const l=s.shift();l.resolve(n.apply(l.self,l.args))},c=function(...a){const l=this;return new Promise(function(u,p){s.push({resolve:u,reject:p,args:a,self:l}),i<e&&o()})};return c.abort=function(){r.forEach(clearTimeout),r=[],s.forEach(function(a){a.reject(function(){Error.call(this,"Throttled function aborted"),this.name="AbortError"})}),s.length=0},c}const M=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},L=n=>n==="email",z=()=>({singleTag:"hr"}),U=()=>({tag:"blockquote"}),q=()=>({tag:"ul"}),H=n=>({tag:["pre",{tag:"code",attrs:n.attrs}]}),B=()=>({singleTag:"br"}),D=n=>({tag:`h${n.attrs.level}`}),J=n=>({singleTag:[{tag:"img",attrs:M(n.attrs,["src","alt","title"])}]}),F=()=>({tag:"li"}),V=()=>({tag:"ol"}),Y=()=>({tag:"p"}),K=n=>({tag:[{tag:"span",attrs:{["data-type"]:"emoji",["data-name"]:n.attrs.name,emoji:n.attrs.emoji}}]}),W=()=>({tag:"b"}),G=()=>({tag:"strike"}),Q=()=>({tag:"u"}),X=()=>({tag:"strong"}),Z=()=>({tag:"code"}),ee=()=>({tag:"i"}),te=n=>{const e={...n.attrs},{linktype:t="url"}=n.attrs;if(L(t)&&(e.href=`mailto:${e.href}`),e.anchor&&(e.href=`${e.href}#${e.anchor}`,delete e.anchor),e.custom){for(const s in e.custom)e[s]=e.custom[s];delete e.custom}return{tag:[{tag:"a",attrs:e}]}},se=n=>({tag:[{tag:"span",attrs:n.attrs}]}),re=()=>({tag:"sub"}),ie=()=>({tag:"sup"}),ne=n=>({tag:[{tag:"span",attrs:n.attrs}]}),oe=n=>{var e;return(e=n.attrs)!=null&&e.color?{tag:[{tag:"span",attrs:{style:`background-color:${n.attrs.color};`}}]}:{tag:""}},ae=n=>{var e;return(e=n.attrs)!=null&&e.color?{tag:[{tag:"span",attrs:{style:`color:${n.attrs.color}`}}]}:{tag:""}},S={nodes:{horizontal_rule:z,blockquote:U,bullet_list:q,code_block:H,hard_break:B,heading:D,image:J,list_item:F,ordered_list:V,paragraph:Y,emoji:K},marks:{bold:W,strike:G,underline:Q,strong:X,code:Z,italic:ee,link:te,styled:se,subscript:re,superscript:ie,anchor:ne,highlight:oe,textStyle:ae}},le=function(n){const e={"&":"&","<":"<",">":">",'"':""","'":"'"},t=/[&<>"']/g,s=RegExp(t.source);return n&&s.test(n)?n.replace(t,r=>e[r]):n};class b{constructor(e){h(this,"marks"),h(this,"nodes"),e||(e=S),this.marks=e.marks||[],this.nodes=e.nodes||[]}addNode(e,t){this.nodes[e]=t}addMark(e,t){this.marks[e]=t}render(e,t={optimizeImages:!1}){if(e&&e.content&&Array.isArray(e.content)){let s="";return e.content.forEach(r=>{s+=this.renderNode(r)}),t.optimizeImages?this.optimizeImages(s,t.optimizeImages):s}return console.warn(`The render method must receive an Object with a "content" field.
|
|
2
2
|
The "content" field must be an array of nodes as the type ISbRichtext.
|
|
3
3
|
ISbRichtext:
|
|
4
4
|
content?: ISbRichtext[]
|
|
@@ -21,6 +21,4 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
type: 'doc'
|
|
24
|
-
}`),""}optimizeImages(e,t){let s=0,r=0,i="",o="";typeof t!="boolean"&&(typeof t.width=="number"&&t.width>0&&(i+=`width="${t.width}" `,s=t.width),typeof t.height=="number"&&t.height>0&&(i+=`height="${t.height}" `,r=t.height),(t.loading==="lazy"||t.loading==="eager")&&(i+=`loading="${t.loading}" `),typeof t.class=="string"&&t.class.length>0&&(i+=`class="${t.class}" `),t.filters&&(typeof t.filters.blur=="number"&&t.filters.blur>=0&&t.filters.blur<=100&&(o+=`:blur(${t.filters.blur})`),typeof t.filters.brightness=="number"&&t.filters.brightness>=-100&&t.filters.brightness<=100&&(o+=`:brightness(${t.filters.brightness})`),t.filters.fill&&(t.filters.fill.match(/[0-9A-Fa-f]{6}/g)||t.filters.fill==="transparent")&&(o+=`:fill(${t.filters.fill})`),t.filters.format&&["webp","png","jpeg"].includes(t.filters.format)&&(o+=`:format(${t.filters.format})`),typeof t.filters.grayscale=="boolean"&&t.filters.grayscale&&(o+=":grayscale()"),typeof t.filters.quality=="number"&&t.filters.quality>=0&&t.filters.quality<=100&&(o+=`:quality(${t.filters.quality})`),t.filters.rotate&&[90,180,270].includes(t.filters.rotate)&&(o+=`:rotate(${t.filters.rotate})`),o.length>0&&(o="/filters"+o))),i.length>0&&(e=e.replace(/<img/g,`<img ${i.trim()}`));const c=s>0||r>0||o.length>0?`${s}x${r}${o}`:"";return e=e.replace(/a.storyblok.com\/f\/(\d+)\/([^.]+)\.(gif|jpg|jpeg|png|tif|tiff|bmp)/g,`a.storyblok.com/f/$1/$2.$3/m/${c}`),typeof t!="boolean"&&(t.sizes||t.srcset)&&(e=e.replace(/<img.*?src=["|'](.*?)["|']/g,a=>{var l,u;const p=a.match(/a.storyblok.com\/f\/(\d+)\/([^.]+)\.(gif|jpg|jpeg|png|tif|tiff|bmp)/g);if(p&&p.length>0){const f={srcset:(l=t.srcset)==null?void 0:l.map(g=>{if(typeof g=="number")return`//${p}/m/${g}x0${o} ${g}w`;if(typeof g=="object"&&g.length===2){let T=0,P=0;return typeof g[0]=="number"&&(T=g[0]),typeof g[1]=="number"&&(P=g[1]),`//${p}/m/${T}x${P}${o} ${T}w`}}).join(", "),sizes:(u=t.sizes)==null?void 0:u.map(g=>g).join(", ")};let $="";return f.srcset&&($+=`srcset="${f.srcset}" `),f.sizes&&($+=`sizes="${f.sizes}" `),a.replace(/<img/g,`<img ${$.trim()}`)}return a})),e}renderNode(e){const t=[];e.marks&&e.marks.forEach(r=>{const i=this.getMatchingMark(r);i&&i.tag!==""&&t.push(this.renderOpeningTag(i.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(ae(e.text)):s&&s.singleTag?t.push(this.renderTag(s.singleTag," /")):s&&s.html?t.push(s.html):e.type==="emoji"&&t.push(this.renderEmoji(e)),s&&s.tag&&t.push(this.renderClosingTag(s.tag)),e.marks&&e.marks.slice(0).reverse().forEach(r=>{const i=this.getMatchingMark(r);i&&i.tag!==""&&t.push(this.renderClosingTag(i.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 i in s.attrs){const o=s.attrs[i];o!==null&&(r+=` ${i}="${o}"`)}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)}renderEmoji(e){if(e.attrs.emoji)return e.attrs.emoji;const t=[{tag:"img",attrs:{src:e.attrs.fallbackImage,draggable:"false",loading:"lazy",align:"absmiddle"}}];return this.renderTag(t," /")}}class v{constructor(){h(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),h(this,"getOptionsPage",(e,t=25,s=1)=>({...e,per_page:t,page:s})),h(this,"delay",e=>new Promise(t=>setTimeout(t,e))),h(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),h(this,"range",(e=0,t=e)=>{const s=Math.abs(t-e)||0,r=e<t?1:-1;return this.arrayFrom(s,(i,o)=>o*r+e)}),h(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),h(this,"flatMap",(e=[],t)=>e.map(t).reduce((s,r)=>[...s,...r],[]))}stringify(e,t,s){const r=[];for(const i in e){if(!Object.prototype.hasOwnProperty.call(e,i))continue;const o=e[i],c=s?"":encodeURIComponent(i);let a;typeof o=="object"?a=this.stringify(o,t?t+encodeURIComponent("["+c+"]"):c,Array.isArray(o)):a=(t?t+encodeURIComponent("["+c+"]"):c)+"="+encodeURIComponent(o),r.push(a)}return r.join("&")}getRegionURL(e){const t="api.storyblok.com",s="api-us.storyblok.com",r="app.storyblokchina.cn";switch(e){case"us":return s;case"cn":return r;default:return t}}}class le{constructor(e){h(this,"baseURL"),h(this,"timeout"),h(this,"headers"),h(this,"responseInterceptor"),h(this,"fetch"),h(this,"ejectInterceptor"),h(this,"url"),h(this,"parameters"),this.baseURL=e.baseURL,this.headers=e.headers||new 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 a=new v;t=`${this.baseURL}${this.url}?${a.stringify(this.parameters)}`}else s=JSON.stringify(this.parameters);const r=new URL(t),i=new AbortController,{signal:o}=i;let c;this.timeout&&(c=setTimeout(()=>i.abort(),this.timeout));try{const a=await this.fetch(`${r}`,{method:e,headers:this.headers,body:s,signal:o});this.timeout&&clearTimeout(c);const l=await this._responseHandler(a);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(l)):this._statusHandler(l)}catch(a){return{message:a}}}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 i={message:new Error(e.statusText),status:e.status,response:Array.isArray(e.data)?e.data[0]:e.data.error||e.data.slug};r(i)})}}let k={};const y={};class ce{constructor(e,t){if(h(this,"client"),h(this,"maxRetries"),h(this,"throttle"),h(this,"accessToken"),h(this,"cache"),h(this,"helpers"),h(this,"resolveCounter"),h(this,"relations"),h(this,"links"),h(this,"richTextResolver"),h(this,"resolveNestedRelations"),!t){const i=new v().getRegionURL,o=e.https===!1?"http":"https";e.oauthToken?t=`${o}://${i(e.region)}/v1`:t=`${o}://${i(e.region)}/v2`}const s=new Headers;s.set("Content-Type","application/json"),s.set("Accept","application/json"),s.forEach((i,o)=>{e.headers&&e.headers[o]&&s.set(o,e.headers[o])});let r=5;e.oauthToken&&(s.set("Authorization",e.oauthToken),r=3),e.rateLimit&&(r=e.rateLimit),e.richTextSchema?this.richTextResolver=new b(e.richTextSchema):this.richTextResolver=new b,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries||5,this.throttle=A(this.throttledRequest,r,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new v,this.resolveCounter=0,this.resolveNestedRelations=e.resolveNestedRelations||!0,this.client=new le({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&&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=y[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 i=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,s,r));return this.cacheResponse(e,i)}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,i=`/${e}`,o=i.split("/"),c=s||o[o.length-1],a=1,l=await this.makeRequest(i,t,r,a),u=l.total?Math.ceil(l.total/r):1,p=await this.helpers.asyncMap(this.helpers.range(a,u),f=>this.makeRequest(i,t,r,f+1));return this.helpers.flatMap([l,...p],f=>Object.values(f.data[c]))}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,s){const r=e[t];r&&r.fieldtype=="multilink"&&r.linktype=="story"&&typeof r.id=="string"&&this.links[s][r.id]?r.story=this._cleanCopy(this.links[s][r.id]):r&&r.linktype==="story"&&typeof r.uuid=="string"&&this.links[s][r.uuid]&&(r.story=this._cleanCopy(this.links[s][r.uuid]))}_insertRelations(e,t,s,r){if(s.indexOf(`${e.component}.${t}`)>-1){if(typeof e[t]=="string")this.relations[r][e[t]]&&(e[t]=this._cleanCopy(this.relations[r][e[t]]));else if(e[t]&&e[t].constructor===Array){const i=[];e[t].forEach(o=>{this.relations[r][o]&&i.push(this._cleanCopy(this.relations[r][o]))}),e[t]=i}}}iterateTree(e,t,s){const r=i=>{if(i!=null){if(i.constructor===Array)for(let o=0;o<i.length;o++)r(i[o]);else if(i.constructor===Object){if(i._stopResolving)return;for(const o in i)(i.component&&i._uid||i.type==="link")&&(this._insertRelations(i,o,t,s),this._insertLinks(i,o,s)),r(i[o])}}};r(e.content)}async resolveLinks(e,t,s){let r=[];if(e.link_uuids){const i=e.link_uuids.length,o=[],c=50;for(let a=0;a<i;a+=c){const l=Math.min(i,a+c);o.push(e.link_uuids.slice(a,l))}for(let a=0;a<o.length;a++)(await this.getStories({per_page:c,language:t.language,version:t.version,by_uuids:o[a].join(",")})).data.stories.forEach(l=>{r.push(l)})}else r=e.links;r.forEach(i=>{this.links[s][i.uuid]={...i,_stopResolving:!0}})}async resolveRelations(e,t,s){let r=[];if(e.rel_uuids){const i=e.rel_uuids.length,o=[],c=50;for(let a=0;a<i;a+=c){const l=Math.min(i,a+c);o.push(e.rel_uuids.slice(a,l))}for(let a=0;a<o.length;a++)(await this.getStories({per_page:c,language:t.language,version:t.version,by_uuids:o[a].join(",")})).data.stories.forEach(l=>{r.push(l)})}else r=e.rels;r&&r.length>0&&r.forEach(i=>{this.relations[s][i.uuid]={...i,_stopResolving:!0}})}async resolveStories(e,t,s){var r,i;let o=[];if(this.links[s]={},this.relations[s]={},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,s)),t.resolve_links&&["1","story","url"].indexOf(t.resolve_links)>-1&&((r=e.links)!=null&&r.length||(i=e.link_uuids)!=null&&i.length)&&await this.resolveLinks(e,t,s),this.resolveNestedRelations)for(const c in this.relations[s])this.iterateTree(this.relations[s][c],o,s);e.story?this.iterateTree(e.story,o,s):e.stories.forEach(c=>{this.iterateTree(c,o,s)}),delete this.links[s],delete this.relations[s]}async cacheResponse(e,t,s){const r=this.helpers.stringify({url:e,params:t}),i=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&await this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const o=await i.get(r);if(o)return Promise.resolve(o)}return new Promise((o,c)=>{try{(async()=>{var a;try{const l=await this.throttle("get",e,t);let u={data:l.data,headers:l.headers};if((a=l.headers)!=null&&a["per-page"]&&(u=Object.assign({},u,{perPage:l.headers["per-page"]?parseInt(l.headers["per-page"]):0,total:l.headers["per-page"]?parseInt(l.headers.total):0})),l.status!=200)return c(l);if(u.data.story||u.data.stories){const p=this.resolveCounter=++this.resolveCounter%1e3;await this.resolveStories(u.data,t,`${p}`)}return t.version==="published"&&e!="/cdn/spaces/me"&&await i.set(r,u),u.data.cv&&t.token&&(t.version=="draft"&&y[t.token]!=u.data.cv&&await this.flushCache(),y[t.token]=u.data.cv),o(u)}catch(l){return c(l)}})()}catch{}})}throttledRequest(e,t,s){return this.client[e](t,s)}cacheVersions(){return y}cacheVersion(){return y[this.accessToken]}setCacheVersion(e){this.accessToken&&(y[this.accessToken]=e)}cacheProvider(){switch(this.cache.type){case"memory":return{get(e){return Promise.resolve(k[e])},getAll(){return Promise.resolve(k)},set(e,t){return k[e]=t,Promise.resolve(void 0)},flush(){return k={},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 he=(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 ce(e)}},ue=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 w;const S="https://app.storyblok.com/f/storyblok-v2-latest.js",E=(n,e,t={})=>{var c;const r=!(typeof window>"u")&&typeof window.storyblokRegisterEvent<"u",o=+new URL((c=window.location)==null?void 0:c.href).searchParams.get("_storyblok")===n;if(!(!r||!o)){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"],l=>{l.action==="input"&&l.story.id===n?e(l.story):(l.action==="change"||l.action==="published")&&l.storyId===n&&window.location.reload()})})}},de=(n={})=>{var u,p;const{bridge:e,accessToken:t,use:s=[],apiOptions:r={},richText:i={}}=n;r.accessToken=r.accessToken||t;const o={bridge:e,apiOptions:r};let c={};s.forEach(f=>{c={...c,...f(o)}});const l=!(typeof window>"u")&&((p=(u=window.location)==null?void 0:u.search)==null?void 0:p.includes("_storyblok_tk"));return e!==!1&&l&&_(S),w=new b(i.schema),i.resolver&&I(w,i.resolver),c},I=(n,e)=>{n.addNode("blok",t=>{let s="";return t.attrs.body.forEach(r=>{s+=e(r.component,r)}),{html:s}})},pe=(n,e,t)=>{let s=t||w;if(!s){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return n===""?"":n?(e&&(s=new b(e.schema),e.resolver&&I(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.
|
|
25
|
-
|
|
26
|
-
For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`),"")},ge=()=>_(S);d.RichTextResolver=b,d.RichTextSchema=x,d.apiPlugin=he,d.loadStoryblokBridge=ge,d.registerStoryblokBridge=E,d.renderRichText=pe,d.storyblokEditable=ue,d.storyblokInit=de,d.useStoryblokBridge=E,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|
|
24
|
+
}`),""}optimizeImages(e,t){let s=0,r=0,i="",o="";typeof t!="boolean"&&(typeof t.width=="number"&&t.width>0&&(i+=`width="${t.width}" `,s=t.width),typeof t.height=="number"&&t.height>0&&(i+=`height="${t.height}" `,r=t.height),(t.loading==="lazy"||t.loading==="eager")&&(i+=`loading="${t.loading}" `),typeof t.class=="string"&&t.class.length>0&&(i+=`class="${t.class}" `),t.filters&&(typeof t.filters.blur=="number"&&t.filters.blur>=0&&t.filters.blur<=100&&(o+=`:blur(${t.filters.blur})`),typeof t.filters.brightness=="number"&&t.filters.brightness>=-100&&t.filters.brightness<=100&&(o+=`:brightness(${t.filters.brightness})`),t.filters.fill&&(t.filters.fill.match(/[0-9A-Fa-f]{6}/g)||t.filters.fill==="transparent")&&(o+=`:fill(${t.filters.fill})`),t.filters.format&&["webp","png","jpeg"].includes(t.filters.format)&&(o+=`:format(${t.filters.format})`),typeof t.filters.grayscale=="boolean"&&t.filters.grayscale&&(o+=":grayscale()"),typeof t.filters.quality=="number"&&t.filters.quality>=0&&t.filters.quality<=100&&(o+=`:quality(${t.filters.quality})`),t.filters.rotate&&[90,180,270].includes(t.filters.rotate)&&(o+=`:rotate(${t.filters.rotate})`),o.length>0&&(o="/filters"+o))),i.length>0&&(e=e.replace(/<img/g,`<img ${i.trim()}`));const c=s>0||r>0||o.length>0?`${s}x${r}${o}`:"";return e=e.replace(/a.storyblok.com\/f\/(\d+)\/([^.]+)\.(gif|jpg|jpeg|png|tif|tiff|bmp)/g,`a.storyblok.com/f/$1/$2.$3/m/${c}`),typeof t!="boolean"&&(t.sizes||t.srcset)&&(e=e.replace(/<img.*?src=["|'](.*?)["|']/g,a=>{var l,u;const p=a.match(/a.storyblok.com\/f\/(\d+)\/([^.]+)\.(gif|jpg|jpeg|png|tif|tiff|bmp)/g);if(p&&p.length>0){const f={srcset:(l=t.srcset)==null?void 0:l.map(g=>{if(typeof g=="number")return`//${p}/m/${g}x0${o} ${g}w`;if(typeof g=="object"&&g.length===2){let $=0,C=0;return typeof g[0]=="number"&&($=g[0]),typeof g[1]=="number"&&(C=g[1]),`//${p}/m/${$}x${C}${o} ${$}w`}}).join(", "),sizes:(u=t.sizes)==null?void 0:u.map(g=>g).join(", ")};let T="";return f.srcset&&(T+=`srcset="${f.srcset}" `),f.sizes&&(T+=`sizes="${f.sizes}" `),a.replace(/<img/g,`<img ${T.trim()}`)}return a})),e}renderNode(e){const t=[];e.marks&&e.marks.forEach(r=>{const i=this.getMatchingMark(r);i&&i.tag!==""&&t.push(this.renderOpeningTag(i.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(le(e.text)):s&&s.singleTag?t.push(this.renderTag(s.singleTag," /")):s&&s.html?t.push(s.html):e.type==="emoji"&&t.push(this.renderEmoji(e)),s&&s.tag&&t.push(this.renderClosingTag(s.tag)),e.marks&&e.marks.slice(0).reverse().forEach(r=>{const i=this.getMatchingMark(r);i&&i.tag!==""&&t.push(this.renderClosingTag(i.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 i in s.attrs){const o=s.attrs[i];o!==null&&(r+=` ${i}="${o}"`)}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)}renderEmoji(e){if(e.attrs.emoji)return e.attrs.emoji;const t=[{tag:"img",attrs:{src:e.attrs.fallbackImage,draggable:"false",loading:"lazy",align:"absmiddle"}}];return this.renderTag(t," /")}}class v{constructor(){h(this,"isCDNUrl",(e="")=>e.indexOf("/cdn/")>-1),h(this,"getOptionsPage",(e,t=25,s=1)=>({...e,per_page:t,page:s})),h(this,"delay",e=>new Promise(t=>setTimeout(t,e))),h(this,"arrayFrom",(e=0,t)=>[...Array(e)].map(t)),h(this,"range",(e=0,t=e)=>{const s=Math.abs(t-e)||0,r=e<t?1:-1;return this.arrayFrom(s,(i,o)=>o*r+e)}),h(this,"asyncMap",async(e,t)=>Promise.all(e.map(t))),h(this,"flatMap",(e=[],t)=>e.map(t).reduce((s,r)=>[...s,...r],[]))}stringify(e,t,s){const r=[];for(const i in e){if(!Object.prototype.hasOwnProperty.call(e,i))continue;const o=e[i],c=s?"":encodeURIComponent(i);let a;typeof o=="object"?a=this.stringify(o,t?t+encodeURIComponent("["+c+"]"):c,Array.isArray(o)):a=(t?t+encodeURIComponent("["+c+"]"):c)+"="+encodeURIComponent(o),r.push(a)}return r.join("&")}getRegionURL(e){const t="api.storyblok.com",s="api-us.storyblok.com",r="app.storyblokchina.cn";switch(e){case"us":return s;case"cn":return r;default:return t}}}class ce{constructor(e){h(this,"baseURL"),h(this,"timeout"),h(this,"headers"),h(this,"responseInterceptor"),h(this,"fetch"),h(this,"ejectInterceptor"),h(this,"url"),h(this,"parameters"),this.baseURL=e.baseURL,this.headers=e.headers||new 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 a=new v;t=`${this.baseURL}${this.url}?${a.stringify(this.parameters)}`}else s=JSON.stringify(this.parameters);const r=new URL(t),i=new AbortController,{signal:o}=i;let c;this.timeout&&(c=setTimeout(()=>i.abort(),this.timeout));try{const a=await this.fetch(`${r}`,{method:e,headers:this.headers,body:s,signal:o});this.timeout&&clearTimeout(c);const l=await this._responseHandler(a);return this.responseInterceptor&&!this.ejectInterceptor?this._statusHandler(this.responseInterceptor(l)):this._statusHandler(l)}catch(a){return{message:a}}}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 i={message:new Error(e.statusText),status:e.status,response:Array.isArray(e.data)?e.data[0]:e.data.error||e.data.slug};r(i)})}}let k={};const y={};class he{constructor(e,t){if(h(this,"client"),h(this,"maxRetries"),h(this,"throttle"),h(this,"accessToken"),h(this,"cache"),h(this,"helpers"),h(this,"resolveCounter"),h(this,"relations"),h(this,"links"),h(this,"richTextResolver"),h(this,"resolveNestedRelations"),!t){const i=new v().getRegionURL,o=e.https===!1?"http":"https";e.oauthToken?t=`${o}://${i(e.region)}/v1`:t=`${o}://${i(e.region)}/v2`}const s=new Headers;s.set("Content-Type","application/json"),s.set("Accept","application/json"),s.forEach((i,o)=>{e.headers&&e.headers[o]&&s.set(o,e.headers[o])});let r=5;e.oauthToken&&(s.set("Authorization",e.oauthToken),r=3),e.rateLimit&&(r=e.rateLimit),e.richTextSchema?this.richTextResolver=new b(e.richTextSchema):this.richTextResolver=new b,e.componentResolver&&this.setComponentResolver(e.componentResolver),this.maxRetries=e.maxRetries||5,this.throttle=N(this.throttledRequest,r,1e3),this.accessToken=e.accessToken||"",this.relations={},this.links={},this.cache=e.cache||{clear:"manual"},this.helpers=new v,this.resolveCounter=0,this.resolveNestedRelations=e.resolveNestedRelations||!0,this.client=new ce({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&&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=y[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 i=this.factoryParamOptions(e,this.helpers.getOptionsPage(t,s,r));return this.cacheResponse(e,i)}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,i=`/${e}`,o=i.split("/"),c=s||o[o.length-1],a=1,l=await this.makeRequest(i,t,r,a),u=l.total?Math.ceil(l.total/r):1,p=await this.helpers.asyncMap(this.helpers.range(a,u),f=>this.makeRequest(i,t,r,f+1));return this.helpers.flatMap([l,...p],f=>Object.values(f.data[c]))}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,s){const r=e[t];r&&r.fieldtype=="multilink"&&r.linktype=="story"&&typeof r.id=="string"&&this.links[s][r.id]?r.story=this._cleanCopy(this.links[s][r.id]):r&&r.linktype==="story"&&typeof r.uuid=="string"&&this.links[s][r.uuid]&&(r.story=this._cleanCopy(this.links[s][r.uuid]))}_insertRelations(e,t,s,r){if(s.indexOf(`${e.component}.${t}`)>-1){if(typeof e[t]=="string")this.relations[r][e[t]]&&(e[t]=this._cleanCopy(this.relations[r][e[t]]));else if(e[t]&&e[t].constructor===Array){const i=[];e[t].forEach(o=>{this.relations[r][o]&&i.push(this._cleanCopy(this.relations[r][o]))}),e[t]=i}}}iterateTree(e,t,s){const r=i=>{if(i!=null){if(i.constructor===Array)for(let o=0;o<i.length;o++)r(i[o]);else if(i.constructor===Object){if(i._stopResolving)return;for(const o in i)(i.component&&i._uid||i.type==="link")&&(this._insertRelations(i,o,t,s),this._insertLinks(i,o,s)),r(i[o])}}};r(e.content)}async resolveLinks(e,t,s){let r=[];if(e.link_uuids){const i=e.link_uuids.length,o=[],c=50;for(let a=0;a<i;a+=c){const l=Math.min(i,a+c);o.push(e.link_uuids.slice(a,l))}for(let a=0;a<o.length;a++)(await this.getStories({per_page:c,language:t.language,version:t.version,by_uuids:o[a].join(",")})).data.stories.forEach(l=>{r.push(l)})}else r=e.links;r.forEach(i=>{this.links[s][i.uuid]={...i,_stopResolving:!0}})}async resolveRelations(e,t,s){let r=[];if(e.rel_uuids){const i=e.rel_uuids.length,o=[],c=50;for(let a=0;a<i;a+=c){const l=Math.min(i,a+c);o.push(e.rel_uuids.slice(a,l))}for(let a=0;a<o.length;a++)(await this.getStories({per_page:c,language:t.language,version:t.version,by_uuids:o[a].join(",")})).data.stories.forEach(l=>{r.push(l)})}else r=e.rels;r&&r.length>0&&r.forEach(i=>{this.relations[s][i.uuid]={...i,_stopResolving:!0}})}async resolveStories(e,t,s){var r,i;let o=[];if(this.links[s]={},this.relations[s]={},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,s)),t.resolve_links&&["1","story","url"].indexOf(t.resolve_links)>-1&&((r=e.links)!=null&&r.length||(i=e.link_uuids)!=null&&i.length)&&await this.resolveLinks(e,t,s),this.resolveNestedRelations)for(const c in this.relations[s])this.iterateTree(this.relations[s][c],o,s);e.story?this.iterateTree(e.story,o,s):e.stories.forEach(c=>{this.iterateTree(c,o,s)}),delete this.links[s],delete this.relations[s]}async cacheResponse(e,t,s){const r=this.helpers.stringify({url:e,params:t}),i=this.cacheProvider();if(this.cache.clear==="auto"&&t.version==="draft"&&await this.flushCache(),t.version==="published"&&e!="/cdn/spaces/me"){const o=await i.get(r);if(o)return Promise.resolve(o)}return new Promise((o,c)=>{try{(async()=>{var a;try{const l=await this.throttle("get",e,t);let u={data:l.data,headers:l.headers};if((a=l.headers)!=null&&a["per-page"]&&(u=Object.assign({},u,{perPage:l.headers["per-page"]?parseInt(l.headers["per-page"]):0,total:l.headers["per-page"]?parseInt(l.headers.total):0})),l.status!=200)return c(l);if(u.data.story||u.data.stories){const p=this.resolveCounter=++this.resolveCounter%1e3;await this.resolveStories(u.data,t,`${p}`)}return t.version==="published"&&e!="/cdn/spaces/me"&&await i.set(r,u),u.data.cv&&t.token&&(t.version=="draft"&&y[t.token]!=u.data.cv&&await this.flushCache(),y[t.token]=u.data.cv),o(u)}catch(l){return c(l)}})()}catch{}})}throttledRequest(e,t,s){return this.client[e](t,s)}cacheVersions(){return y}cacheVersion(){return y[this.accessToken]}setCacheVersion(e){this.accessToken&&(y[this.accessToken]=e)}cacheProvider(){switch(this.cache.type){case"memory":return{get(e){return Promise.resolve(k[e])},getAll(){return Promise.resolve(k)},set(e,t){return k[e]=t,Promise.resolve(void 0)},flush(){return k={},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 ue=(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 he(e)}},de=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 w;const E="https://app.storyblok.com/f/storyblok-v2-latest.js",x=(n,e,t={})=>{var c;const r=!(typeof window>"u")&&typeof window.storyblokRegisterEvent<"u",o=+new URL((c=window.location)==null?void 0:c.href).searchParams.get("_storyblok")===n;if(!(!r||!o)){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"],l=>{l.action==="input"&&l.story.id===n?e(l.story):(l.action==="change"||l.action==="published")&&l.storyId===n&&window.location.reload()})})}},pe=(n={})=>{var u,p;const{bridge:e,accessToken:t,use:s=[],apiOptions:r={},richText:i={}}=n;r.accessToken=r.accessToken||t;const o={bridge:e,apiOptions:r};let c={};s.forEach(f=>{c={...c,...f(o)}});const l=!(typeof window>"u")&&((p=(u=window.location)==null?void 0:u.search)==null?void 0:p.includes("_storyblok_tk"));return e!==!1&&l&&_(E),w=new b(i.schema),i.resolver&&I(w,i.resolver),c},I=(n,e)=>{n.addNode("blok",t=>{let s="";return t.attrs.body.forEach(r=>{s+=e(r.component,r)}),{html:s}})},P=n=>{var e,t;return!n||((e=n==null?void 0:n.content)==null?void 0:e[0].type)!=="blok"&&!((t=n==null?void 0:n.content)!=null&&t[0].content)},ge=(n,e,t)=>{let s=t||w;if(!s){console.error("Please initialize the Storyblok SDK before calling the renderRichText function");return}return P(n)?"":(e&&(s=new b(e.schema),e.resolver&&I(s,e.resolver)),s.render(n))},fe=()=>_(E);d.RichTextResolver=b,d.RichTextSchema=S,d.apiPlugin=ue,d.isRichTextEmpty=P,d.loadStoryblokBridge=fe,d.registerStoryblokBridge=x,d.renderRichText=ge,d.storyblokEditable=de,d.storyblokInit=pe,d.useStoryblokBridge=x,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|
package/dist/storyblok-js.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
let R = !1;
|
|
2
|
-
const T = [], j = (
|
|
2
|
+
const T = [], j = (o) => new Promise((e, t) => {
|
|
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.");
|
|
@@ -9,40 +9,40 @@ const T = [], j = (n) => new Promise((e, t) => {
|
|
|
9
9
|
}, document.getElementById("storyblok-javascript-bridge")))
|
|
10
10
|
return;
|
|
11
11
|
const s = document.createElement("script");
|
|
12
|
-
s.async = !0, s.src =
|
|
12
|
+
s.async = !0, s.src = o, s.id = "storyblok-javascript-bridge", s.onerror = (r) => t(r), s.onload = (r) => {
|
|
13
13
|
T.forEach((i) => i()), R = !0, e(r);
|
|
14
14
|
}, document.getElementsByTagName("head")[0].appendChild(s);
|
|
15
15
|
});
|
|
16
|
-
var I = Object.defineProperty, P = (
|
|
17
|
-
function _(
|
|
18
|
-
return !(
|
|
16
|
+
var I = Object.defineProperty, P = (o, e, t) => e in o ? I(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, h = (o, e, t) => (P(o, typeof e != "symbol" ? e + "" : e, t), t);
|
|
17
|
+
function _(o) {
|
|
18
|
+
return !(o !== o || o === 1 / 0 || o === -1 / 0);
|
|
19
19
|
}
|
|
20
|
-
function S(
|
|
20
|
+
function S(o, e, t) {
|
|
21
21
|
if (!_(e))
|
|
22
22
|
throw new TypeError("Expected `limit` to be a finite number");
|
|
23
23
|
if (!_(t))
|
|
24
24
|
throw new TypeError("Expected `interval` to be a finite number");
|
|
25
25
|
const s = [];
|
|
26
26
|
let r = [], i = 0;
|
|
27
|
-
const
|
|
27
|
+
const n = function() {
|
|
28
28
|
i++;
|
|
29
29
|
const a = setTimeout(function() {
|
|
30
|
-
i--, s.length > 0 &&
|
|
30
|
+
i--, s.length > 0 && n(), r = r.filter(function(u) {
|
|
31
31
|
return u !== a;
|
|
32
32
|
});
|
|
33
33
|
}, t);
|
|
34
34
|
r.indexOf(a) < 0 && r.push(a);
|
|
35
35
|
const l = s.shift();
|
|
36
|
-
l.resolve(
|
|
36
|
+
l.resolve(o.apply(l.self, l.args));
|
|
37
37
|
}, c = function(...a) {
|
|
38
38
|
const l = this;
|
|
39
|
-
return new Promise(function(u,
|
|
39
|
+
return new Promise(function(u, p) {
|
|
40
40
|
s.push({
|
|
41
41
|
resolve: u,
|
|
42
|
-
reject:
|
|
42
|
+
reject: p,
|
|
43
43
|
args: a,
|
|
44
44
|
self: l
|
|
45
|
-
}), i < e &&
|
|
45
|
+
}), i < e && n();
|
|
46
46
|
});
|
|
47
47
|
};
|
|
48
48
|
return c.abort = function() {
|
|
@@ -53,36 +53,36 @@ function S(n, e, t) {
|
|
|
53
53
|
}), s.length = 0;
|
|
54
54
|
}, c;
|
|
55
55
|
}
|
|
56
|
-
const C = function(
|
|
56
|
+
const C = function(o, e) {
|
|
57
57
|
const t = {};
|
|
58
|
-
for (const s in
|
|
59
|
-
const r =
|
|
58
|
+
for (const s in o) {
|
|
59
|
+
const r = o[s];
|
|
60
60
|
e.indexOf(s) > -1 && r !== null && (t[s] = r);
|
|
61
61
|
}
|
|
62
62
|
return t;
|
|
63
|
-
}, O = (
|
|
63
|
+
}, O = (o) => o === "email", A = () => ({
|
|
64
64
|
singleTag: "hr"
|
|
65
65
|
}), N = () => ({
|
|
66
66
|
tag: "blockquote"
|
|
67
67
|
}), L = () => ({
|
|
68
68
|
tag: "ul"
|
|
69
|
-
}), M = (
|
|
69
|
+
}), M = (o) => ({
|
|
70
70
|
tag: [
|
|
71
71
|
"pre",
|
|
72
72
|
{
|
|
73
73
|
tag: "code",
|
|
74
|
-
attrs:
|
|
74
|
+
attrs: o.attrs
|
|
75
75
|
}
|
|
76
76
|
]
|
|
77
77
|
}), z = () => ({
|
|
78
78
|
singleTag: "br"
|
|
79
|
-
}), U = (
|
|
80
|
-
tag: `h${
|
|
81
|
-
}), q = (
|
|
79
|
+
}), U = (o) => ({
|
|
80
|
+
tag: `h${o.attrs.level}`
|
|
81
|
+
}), q = (o) => ({
|
|
82
82
|
singleTag: [
|
|
83
83
|
{
|
|
84
84
|
tag: "img",
|
|
85
|
-
attrs: C(
|
|
85
|
+
attrs: C(o.attrs, ["src", "alt", "title"])
|
|
86
86
|
}
|
|
87
87
|
]
|
|
88
88
|
}), H = () => ({
|
|
@@ -91,18 +91,18 @@ const C = function(n, e) {
|
|
|
91
91
|
tag: "ol"
|
|
92
92
|
}), D = () => ({
|
|
93
93
|
tag: "p"
|
|
94
|
-
}),
|
|
94
|
+
}), J = (o) => ({
|
|
95
95
|
tag: [
|
|
96
96
|
{
|
|
97
97
|
tag: "span",
|
|
98
98
|
attrs: {
|
|
99
99
|
["data-type"]: "emoji",
|
|
100
|
-
["data-name"]:
|
|
101
|
-
emoji:
|
|
100
|
+
["data-name"]: o.attrs.name,
|
|
101
|
+
emoji: o.attrs.emoji
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
]
|
|
105
|
-
}),
|
|
105
|
+
}), F = () => ({
|
|
106
106
|
tag: "b"
|
|
107
107
|
}), V = () => ({
|
|
108
108
|
tag: "strike"
|
|
@@ -114,8 +114,8 @@ const C = function(n, e) {
|
|
|
114
114
|
tag: "code"
|
|
115
115
|
}), G = () => ({
|
|
116
116
|
tag: "i"
|
|
117
|
-
}), Q = (
|
|
118
|
-
const e = { ...
|
|
117
|
+
}), Q = (o) => {
|
|
118
|
+
const e = { ...o.attrs }, { linktype: t = "url" } = o.attrs;
|
|
119
119
|
if (O(t) && (e.href = `mailto:${e.href}`), e.anchor && (e.href = `${e.href}#${e.anchor}`, delete e.anchor), e.custom) {
|
|
120
120
|
for (const s in e.custom)
|
|
121
121
|
e[s] = e.custom[s];
|
|
@@ -129,46 +129,46 @@ const C = function(n, e) {
|
|
|
129
129
|
}
|
|
130
130
|
]
|
|
131
131
|
};
|
|
132
|
-
}, X = (
|
|
132
|
+
}, X = (o) => ({
|
|
133
133
|
tag: [
|
|
134
134
|
{
|
|
135
135
|
tag: "span",
|
|
136
|
-
attrs:
|
|
136
|
+
attrs: o.attrs
|
|
137
137
|
}
|
|
138
138
|
]
|
|
139
139
|
}), Z = () => ({
|
|
140
140
|
tag: "sub"
|
|
141
141
|
}), ee = () => ({
|
|
142
142
|
tag: "sup"
|
|
143
|
-
}), te = (
|
|
143
|
+
}), te = (o) => ({
|
|
144
144
|
tag: [
|
|
145
145
|
{
|
|
146
146
|
tag: "span",
|
|
147
|
-
attrs:
|
|
147
|
+
attrs: o.attrs
|
|
148
148
|
}
|
|
149
149
|
]
|
|
150
|
-
}), se = (
|
|
150
|
+
}), se = (o) => {
|
|
151
151
|
var e;
|
|
152
|
-
return (e =
|
|
152
|
+
return (e = o.attrs) != null && e.color ? {
|
|
153
153
|
tag: [
|
|
154
154
|
{
|
|
155
155
|
tag: "span",
|
|
156
156
|
attrs: {
|
|
157
|
-
style: `background-color:${
|
|
157
|
+
style: `background-color:${o.attrs.color};`
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
]
|
|
161
161
|
} : {
|
|
162
162
|
tag: ""
|
|
163
163
|
};
|
|
164
|
-
}, re = (
|
|
164
|
+
}, re = (o) => {
|
|
165
165
|
var e;
|
|
166
|
-
return (e =
|
|
166
|
+
return (e = o.attrs) != null && e.color ? {
|
|
167
167
|
tag: [
|
|
168
168
|
{
|
|
169
169
|
tag: "span",
|
|
170
170
|
attrs: {
|
|
171
|
-
style: `color:${
|
|
171
|
+
style: `color:${o.attrs.color}`
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
]
|
|
@@ -187,10 +187,10 @@ const C = function(n, e) {
|
|
|
187
187
|
list_item: H,
|
|
188
188
|
ordered_list: B,
|
|
189
189
|
paragraph: D,
|
|
190
|
-
emoji:
|
|
190
|
+
emoji: J
|
|
191
191
|
},
|
|
192
192
|
marks: {
|
|
193
|
-
bold:
|
|
193
|
+
bold: F,
|
|
194
194
|
strike: V,
|
|
195
195
|
underline: Y,
|
|
196
196
|
strong: K,
|
|
@@ -204,7 +204,7 @@ const C = function(n, e) {
|
|
|
204
204
|
highlight: se,
|
|
205
205
|
textStyle: re
|
|
206
206
|
}
|
|
207
|
-
}, oe = function(
|
|
207
|
+
}, oe = function(o) {
|
|
208
208
|
const e = {
|
|
209
209
|
"&": "&",
|
|
210
210
|
"<": "<",
|
|
@@ -212,7 +212,7 @@ const C = function(n, e) {
|
|
|
212
212
|
'"': """,
|
|
213
213
|
"'": "'"
|
|
214
214
|
}, t = /[&<>"']/g, s = RegExp(t.source);
|
|
215
|
-
return
|
|
215
|
+
return o && s.test(o) ? o.replace(t, (r) => e[r]) : o;
|
|
216
216
|
};
|
|
217
217
|
class y {
|
|
218
218
|
constructor(e) {
|
|
@@ -259,28 +259,28 @@ class y {
|
|
|
259
259
|
), "";
|
|
260
260
|
}
|
|
261
261
|
optimizeImages(e, t) {
|
|
262
|
-
let s = 0, r = 0, i = "",
|
|
263
|
-
typeof t != "boolean" && (typeof t.width == "number" && t.width > 0 && (i += `width="${t.width}" `, s = t.width), typeof t.height == "number" && t.height > 0 && (i += `height="${t.height}" `, r = t.height), (t.loading === "lazy" || t.loading === "eager") && (i += `loading="${t.loading}" `), typeof t.class == "string" && t.class.length > 0 && (i += `class="${t.class}" `), t.filters && (typeof t.filters.blur == "number" && t.filters.blur >= 0 && t.filters.blur <= 100 && (
|
|
264
|
-
const c = s > 0 || r > 0 ||
|
|
262
|
+
let s = 0, r = 0, i = "", n = "";
|
|
263
|
+
typeof t != "boolean" && (typeof t.width == "number" && t.width > 0 && (i += `width="${t.width}" `, s = t.width), typeof t.height == "number" && t.height > 0 && (i += `height="${t.height}" `, r = t.height), (t.loading === "lazy" || t.loading === "eager") && (i += `loading="${t.loading}" `), typeof t.class == "string" && t.class.length > 0 && (i += `class="${t.class}" `), t.filters && (typeof t.filters.blur == "number" && t.filters.blur >= 0 && t.filters.blur <= 100 && (n += `:blur(${t.filters.blur})`), typeof t.filters.brightness == "number" && t.filters.brightness >= -100 && t.filters.brightness <= 100 && (n += `:brightness(${t.filters.brightness})`), t.filters.fill && (t.filters.fill.match(/[0-9A-Fa-f]{6}/g) || t.filters.fill === "transparent") && (n += `:fill(${t.filters.fill})`), t.filters.format && ["webp", "png", "jpeg"].includes(t.filters.format) && (n += `:format(${t.filters.format})`), typeof t.filters.grayscale == "boolean" && t.filters.grayscale && (n += ":grayscale()"), typeof t.filters.quality == "number" && t.filters.quality >= 0 && t.filters.quality <= 100 && (n += `:quality(${t.filters.quality})`), t.filters.rotate && [90, 180, 270].includes(t.filters.rotate) && (n += `:rotate(${t.filters.rotate})`), n.length > 0 && (n = "/filters" + n))), i.length > 0 && (e = e.replace(/<img/g, `<img ${i.trim()}`));
|
|
264
|
+
const c = s > 0 || r > 0 || n.length > 0 ? `${s}x${r}${n}` : "";
|
|
265
265
|
return e = e.replace(
|
|
266
266
|
/a.storyblok.com\/f\/(\d+)\/([^.]+)\.(gif|jpg|jpeg|png|tif|tiff|bmp)/g,
|
|
267
267
|
`a.storyblok.com/f/$1/$2.$3/m/${c}`
|
|
268
268
|
), typeof t != "boolean" && (t.sizes || t.srcset) && (e = e.replace(/<img.*?src=["|'](.*?)["|']/g, (a) => {
|
|
269
269
|
var l, u;
|
|
270
|
-
const
|
|
270
|
+
const p = a.match(
|
|
271
271
|
/a.storyblok.com\/f\/(\d+)\/([^.]+)\.(gif|jpg|jpeg|png|tif|tiff|bmp)/g
|
|
272
272
|
);
|
|
273
|
-
if (
|
|
273
|
+
if (p && p.length > 0) {
|
|
274
274
|
const g = {
|
|
275
|
-
srcset: (l = t.srcset) == null ? void 0 : l.map((
|
|
276
|
-
if (typeof
|
|
277
|
-
return `//${
|
|
278
|
-
if (typeof
|
|
275
|
+
srcset: (l = t.srcset) == null ? void 0 : l.map((d) => {
|
|
276
|
+
if (typeof d == "number")
|
|
277
|
+
return `//${p}/m/${d}x0${n} ${d}w`;
|
|
278
|
+
if (typeof d == "object" && d.length === 2) {
|
|
279
279
|
let v = 0, $ = 0;
|
|
280
|
-
return typeof
|
|
280
|
+
return typeof d[0] == "number" && (v = d[0]), typeof d[1] == "number" && ($ = d[1]), `//${p}/m/${v}x${$}${n} ${v}w`;
|
|
281
281
|
}
|
|
282
282
|
}).join(", "),
|
|
283
|
-
sizes: (u = t.sizes) == null ? void 0 : u.map((
|
|
283
|
+
sizes: (u = t.sizes) == null ? void 0 : u.map((d) => d).join(", ")
|
|
284
284
|
};
|
|
285
285
|
let b = "";
|
|
286
286
|
return g.srcset && (b += `srcset="${g.srcset}" `), g.sizes && (b += `sizes="${g.sizes}" `), a.replace(/<img/g, `<img ${b.trim()}`);
|
|
@@ -310,8 +310,8 @@ class y {
|
|
|
310
310
|
let r = `<${s.tag}`;
|
|
311
311
|
if (s.attrs)
|
|
312
312
|
for (const i in s.attrs) {
|
|
313
|
-
const
|
|
314
|
-
|
|
313
|
+
const n = s.attrs[i];
|
|
314
|
+
n !== null && (r += ` ${i}="${n}"`);
|
|
315
315
|
}
|
|
316
316
|
return `${r}${t}>`;
|
|
317
317
|
}
|
|
@@ -358,7 +358,7 @@ class k {
|
|
|
358
358
|
page: s
|
|
359
359
|
})), h(this, "delay", (e) => new Promise((t) => setTimeout(t, e))), h(this, "arrayFrom", (e = 0, t) => [...Array(e)].map(t)), h(this, "range", (e = 0, t = e) => {
|
|
360
360
|
const s = Math.abs(t - e) || 0, r = e < t ? 1 : -1;
|
|
361
|
-
return this.arrayFrom(s, (i,
|
|
361
|
+
return this.arrayFrom(s, (i, n) => n * r + e);
|
|
362
362
|
}), h(this, "asyncMap", async (e, t) => Promise.all(e.map(t))), h(this, "flatMap", (e = [], t) => e.map(t).reduce((s, r) => [...s, ...r], []));
|
|
363
363
|
}
|
|
364
364
|
/**
|
|
@@ -373,13 +373,13 @@ class k {
|
|
|
373
373
|
for (const i in e) {
|
|
374
374
|
if (!Object.prototype.hasOwnProperty.call(e, i))
|
|
375
375
|
continue;
|
|
376
|
-
const
|
|
376
|
+
const n = e[i], c = s ? "" : encodeURIComponent(i);
|
|
377
377
|
let a;
|
|
378
|
-
typeof
|
|
379
|
-
|
|
378
|
+
typeof n == "object" ? a = this.stringify(
|
|
379
|
+
n,
|
|
380
380
|
t ? t + encodeURIComponent("[" + c + "]") : c,
|
|
381
|
-
Array.isArray(
|
|
382
|
-
) : a = (t ? t + encodeURIComponent("[" + c + "]") : c) + "=" + encodeURIComponent(
|
|
381
|
+
Array.isArray(n)
|
|
382
|
+
) : a = (t ? t + encodeURIComponent("[" + c + "]") : c) + "=" + encodeURIComponent(n), r.push(a);
|
|
383
383
|
}
|
|
384
384
|
return r.join("&");
|
|
385
385
|
}
|
|
@@ -445,7 +445,7 @@ class ne {
|
|
|
445
445
|
)}`;
|
|
446
446
|
} else
|
|
447
447
|
s = JSON.stringify(this.parameters);
|
|
448
|
-
const r = new URL(t), i = new AbortController(), { signal:
|
|
448
|
+
const r = new URL(t), i = new AbortController(), { signal: n } = i;
|
|
449
449
|
let c;
|
|
450
450
|
this.timeout && (c = setTimeout(() => i.abort(), this.timeout));
|
|
451
451
|
try {
|
|
@@ -453,7 +453,7 @@ class ne {
|
|
|
453
453
|
method: e,
|
|
454
454
|
headers: this.headers,
|
|
455
455
|
body: s,
|
|
456
|
-
signal:
|
|
456
|
+
signal: n
|
|
457
457
|
});
|
|
458
458
|
this.timeout && clearTimeout(c);
|
|
459
459
|
const l = await this._responseHandler(a);
|
|
@@ -491,12 +491,12 @@ class ae {
|
|
|
491
491
|
*/
|
|
492
492
|
constructor(e, t) {
|
|
493
493
|
if (h(this, "client"), h(this, "maxRetries"), h(this, "throttle"), h(this, "accessToken"), h(this, "cache"), h(this, "helpers"), h(this, "resolveCounter"), h(this, "relations"), h(this, "links"), h(this, "richTextResolver"), h(this, "resolveNestedRelations"), !t) {
|
|
494
|
-
const i = new k().getRegionURL,
|
|
495
|
-
e.oauthToken ? t = `${
|
|
494
|
+
const i = new k().getRegionURL, n = e.https === !1 ? "http" : "https";
|
|
495
|
+
e.oauthToken ? t = `${n}://${i(e.region)}/v1` : t = `${n}://${i(e.region)}/v2`;
|
|
496
496
|
}
|
|
497
497
|
const s = new Headers();
|
|
498
|
-
s.set("Content-Type", "application/json"), s.set("Accept", "application/json"), s.forEach((i,
|
|
499
|
-
e.headers && e.headers[
|
|
498
|
+
s.set("Content-Type", "application/json"), s.set("Accept", "application/json"), s.forEach((i, n) => {
|
|
499
|
+
e.headers && e.headers[n] && s.set(n, e.headers[n]);
|
|
500
500
|
});
|
|
501
501
|
let r = 5;
|
|
502
502
|
e.oauthToken && (s.set("Authorization", e.oauthToken), r = 3), e.rateLimit && (r = e.rateLimit), e.richTextSchema ? this.richTextResolver = new y(e.richTextSchema) : this.richTextResolver = new y(), e.componentResolver && this.setComponentResolver(e.componentResolver), this.maxRetries = e.maxRetries || 5, this.throttle = S(this.throttledRequest, r, 1e3), this.accessToken = e.accessToken || "", this.relations = {}, this.links = {}, this.cache = e.cache || { clear: "manual" }, this.helpers = new k(), this.resolveCounter = 0, this.resolveNestedRelations = e.resolveNestedRelations || !0, this.client = new ne({
|
|
@@ -536,12 +536,12 @@ class ae {
|
|
|
536
536
|
return this.cacheResponse(s, r);
|
|
537
537
|
}
|
|
538
538
|
async getAll(e, t, s) {
|
|
539
|
-
const r = (t == null ? void 0 : t.per_page) || 25, i = `/${e}`,
|
|
539
|
+
const r = (t == null ? void 0 : t.per_page) || 25, i = `/${e}`, n = i.split("/"), c = s || n[n.length - 1], a = 1, l = await this.makeRequest(i, t, r, a), u = l.total ? Math.ceil(l.total / r) : 1, p = await this.helpers.asyncMap(
|
|
540
540
|
this.helpers.range(a, u),
|
|
541
541
|
(g) => this.makeRequest(i, t, r, g + 1)
|
|
542
542
|
);
|
|
543
543
|
return this.helpers.flatMap(
|
|
544
|
-
[l, ...
|
|
544
|
+
[l, ...p],
|
|
545
545
|
(g) => Object.values(g.data[c])
|
|
546
546
|
);
|
|
547
547
|
}
|
|
@@ -584,8 +584,8 @@ class ae {
|
|
|
584
584
|
));
|
|
585
585
|
else if (e[t] && e[t].constructor === Array) {
|
|
586
586
|
const i = [];
|
|
587
|
-
e[t].forEach((
|
|
588
|
-
this.relations[r][
|
|
587
|
+
e[t].forEach((n) => {
|
|
588
|
+
this.relations[r][n] && i.push(this._cleanCopy(this.relations[r][n]));
|
|
589
589
|
}), e[t] = i;
|
|
590
590
|
}
|
|
591
591
|
}
|
|
@@ -594,22 +594,22 @@ class ae {
|
|
|
594
594
|
const r = (i) => {
|
|
595
595
|
if (i != null) {
|
|
596
596
|
if (i.constructor === Array)
|
|
597
|
-
for (let
|
|
598
|
-
r(i[
|
|
597
|
+
for (let n = 0; n < i.length; n++)
|
|
598
|
+
r(i[n]);
|
|
599
599
|
else if (i.constructor === Object) {
|
|
600
600
|
if (i._stopResolving)
|
|
601
601
|
return;
|
|
602
|
-
for (const
|
|
602
|
+
for (const n in i)
|
|
603
603
|
(i.component && i._uid || i.type === "link") && (this._insertRelations(
|
|
604
604
|
i,
|
|
605
|
-
|
|
605
|
+
n,
|
|
606
606
|
t,
|
|
607
607
|
s
|
|
608
608
|
), this._insertLinks(
|
|
609
609
|
i,
|
|
610
|
-
|
|
610
|
+
n,
|
|
611
611
|
s
|
|
612
|
-
)), r(i[
|
|
612
|
+
)), r(i[n]);
|
|
613
613
|
}
|
|
614
614
|
}
|
|
615
615
|
};
|
|
@@ -618,17 +618,17 @@ class ae {
|
|
|
618
618
|
async resolveLinks(e, t, s) {
|
|
619
619
|
let r = [];
|
|
620
620
|
if (e.link_uuids) {
|
|
621
|
-
const i = e.link_uuids.length,
|
|
621
|
+
const i = e.link_uuids.length, n = [], c = 50;
|
|
622
622
|
for (let a = 0; a < i; a += c) {
|
|
623
623
|
const l = Math.min(i, a + c);
|
|
624
|
-
|
|
624
|
+
n.push(e.link_uuids.slice(a, l));
|
|
625
625
|
}
|
|
626
|
-
for (let a = 0; a <
|
|
626
|
+
for (let a = 0; a < n.length; a++)
|
|
627
627
|
(await this.getStories({
|
|
628
628
|
per_page: c,
|
|
629
629
|
language: t.language,
|
|
630
630
|
version: t.version,
|
|
631
|
-
by_uuids:
|
|
631
|
+
by_uuids: n[a].join(",")
|
|
632
632
|
})).data.stories.forEach(
|
|
633
633
|
(l) => {
|
|
634
634
|
r.push(l);
|
|
@@ -646,17 +646,17 @@ class ae {
|
|
|
646
646
|
async resolveRelations(e, t, s) {
|
|
647
647
|
let r = [];
|
|
648
648
|
if (e.rel_uuids) {
|
|
649
|
-
const i = e.rel_uuids.length,
|
|
649
|
+
const i = e.rel_uuids.length, n = [], c = 50;
|
|
650
650
|
for (let a = 0; a < i; a += c) {
|
|
651
651
|
const l = Math.min(i, a + c);
|
|
652
|
-
|
|
652
|
+
n.push(e.rel_uuids.slice(a, l));
|
|
653
653
|
}
|
|
654
|
-
for (let a = 0; a <
|
|
654
|
+
for (let a = 0; a < n.length; a++)
|
|
655
655
|
(await this.getStories({
|
|
656
656
|
per_page: c,
|
|
657
657
|
language: t.language,
|
|
658
658
|
version: t.version,
|
|
659
|
-
by_uuids:
|
|
659
|
+
by_uuids: n[a].join(",")
|
|
660
660
|
})).data.stories.forEach((l) => {
|
|
661
661
|
r.push(l);
|
|
662
662
|
});
|
|
@@ -671,26 +671,26 @@ class ae {
|
|
|
671
671
|
}
|
|
672
672
|
async resolveStories(e, t, s) {
|
|
673
673
|
var r, i;
|
|
674
|
-
let
|
|
675
|
-
if (this.links[s] = {}, this.relations[s] = {}, typeof t.resolve_relations < "u" && t.resolve_relations.length > 0 && (typeof t.resolve_relations == "string" && (
|
|
674
|
+
let n = [];
|
|
675
|
+
if (this.links[s] = {}, this.relations[s] = {}, 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, s)), t.resolve_links && ["1", "story", "url"].indexOf(t.resolve_links) > -1 && ((r = e.links) != null && r.length || (i = e.link_uuids) != null && i.length) && await this.resolveLinks(e, t, s), this.resolveNestedRelations)
|
|
676
676
|
for (const c in this.relations[s])
|
|
677
677
|
this.iterateTree(
|
|
678
678
|
this.relations[s][c],
|
|
679
|
-
|
|
679
|
+
n,
|
|
680
680
|
s
|
|
681
681
|
);
|
|
682
|
-
e.story ? this.iterateTree(e.story,
|
|
683
|
-
this.iterateTree(c,
|
|
682
|
+
e.story ? this.iterateTree(e.story, n, s) : e.stories.forEach((c) => {
|
|
683
|
+
this.iterateTree(c, n, s);
|
|
684
684
|
}), delete this.links[s], delete this.relations[s];
|
|
685
685
|
}
|
|
686
686
|
async cacheResponse(e, t, s) {
|
|
687
687
|
const r = this.helpers.stringify({ url: e, params: t }), i = this.cacheProvider();
|
|
688
688
|
if (this.cache.clear === "auto" && t.version === "draft" && await this.flushCache(), t.version === "published" && e != "/cdn/spaces/me") {
|
|
689
|
-
const
|
|
690
|
-
if (
|
|
691
|
-
return Promise.resolve(
|
|
689
|
+
const n = await i.get(r);
|
|
690
|
+
if (n)
|
|
691
|
+
return Promise.resolve(n);
|
|
692
692
|
}
|
|
693
|
-
return new Promise((
|
|
693
|
+
return new Promise((n, c) => {
|
|
694
694
|
try {
|
|
695
695
|
(async () => {
|
|
696
696
|
var a;
|
|
@@ -703,10 +703,10 @@ class ae {
|
|
|
703
703
|
})), l.status != 200)
|
|
704
704
|
return c(l);
|
|
705
705
|
if (u.data.story || u.data.stories) {
|
|
706
|
-
const
|
|
707
|
-
await this.resolveStories(u.data, t, `${
|
|
706
|
+
const p = this.resolveCounter = ++this.resolveCounter % 1e3;
|
|
707
|
+
await this.resolveStories(u.data, t, `${p}`);
|
|
708
708
|
}
|
|
709
|
-
return t.version === "published" && e != "/cdn/spaces/me" && await i.set(r, u), u.data.cv && t.token && (t.version == "draft" && f[t.token] != u.data.cv && await this.flushCache(), f[t.token] = u.data.cv),
|
|
709
|
+
return t.version === "published" && e != "/cdn/spaces/me" && await i.set(r, u), u.data.cv && t.token && (t.version == "draft" && f[t.token] != u.data.cv && await this.flushCache(), f[t.token] = u.data.cv), n(u);
|
|
710
710
|
} catch (l) {
|
|
711
711
|
return c(l);
|
|
712
712
|
}
|
|
@@ -768,8 +768,8 @@ class ae {
|
|
|
768
768
|
return await this.cacheProvider().flush(), this;
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
|
-
const
|
|
772
|
-
const { apiOptions: e } =
|
|
771
|
+
const ce = (o = {}) => {
|
|
772
|
+
const { apiOptions: e } = o;
|
|
773
773
|
if (!e.accessToken) {
|
|
774
774
|
console.error(
|
|
775
775
|
"You need to provide an access token to interact with Storyblok API. Read https://www.storyblok.com/docs/api/content-delivery#topics/authentication"
|
|
@@ -777,11 +777,11 @@ const le = (n = {}) => {
|
|
|
777
777
|
return;
|
|
778
778
|
}
|
|
779
779
|
return { storyblokApi: new ae(e) };
|
|
780
|
-
},
|
|
781
|
-
if (typeof
|
|
780
|
+
}, he = (o) => {
|
|
781
|
+
if (typeof o != "object" || typeof o._editable > "u")
|
|
782
782
|
return {};
|
|
783
783
|
const e = JSON.parse(
|
|
784
|
-
|
|
784
|
+
o._editable.replace(/^<!--#storyblok#/, "").replace(/-->$/, "")
|
|
785
785
|
);
|
|
786
786
|
return {
|
|
787
787
|
"data-blok-c": JSON.stringify(e),
|
|
@@ -789,41 +789,41 @@ const le = (n = {}) => {
|
|
|
789
789
|
};
|
|
790
790
|
};
|
|
791
791
|
let w;
|
|
792
|
-
const x = "https://app.storyblok.com/f/storyblok-v2-latest.js",
|
|
792
|
+
const x = "https://app.storyblok.com/f/storyblok-v2-latest.js", ue = (o, e, t = {}) => {
|
|
793
793
|
var c;
|
|
794
|
-
const r = !(typeof window > "u") && typeof window.storyblokRegisterEvent < "u",
|
|
794
|
+
const r = !(typeof window > "u") && typeof window.storyblokRegisterEvent < "u", n = +new URL((c = window.location) == null ? void 0 : c.href).searchParams.get(
|
|
795
795
|
"_storyblok"
|
|
796
|
-
) ===
|
|
797
|
-
if (!(!r || !
|
|
798
|
-
if (!
|
|
796
|
+
) === o;
|
|
797
|
+
if (!(!r || !n)) {
|
|
798
|
+
if (!o) {
|
|
799
799
|
console.warn("Story ID is not defined. Please provide a valid ID.");
|
|
800
800
|
return;
|
|
801
801
|
}
|
|
802
802
|
window.storyblokRegisterEvent(() => {
|
|
803
803
|
new window.StoryblokBridge(t).on(["input", "published", "change"], (l) => {
|
|
804
|
-
l.action === "input" && l.story.id ===
|
|
804
|
+
l.action === "input" && l.story.id === o ? e(l.story) : (l.action === "change" || l.action === "published") && l.storyId === o && window.location.reload();
|
|
805
805
|
});
|
|
806
806
|
});
|
|
807
807
|
}
|
|
808
|
-
},
|
|
809
|
-
var u,
|
|
808
|
+
}, pe = (o = {}) => {
|
|
809
|
+
var u, p;
|
|
810
810
|
const {
|
|
811
811
|
bridge: e,
|
|
812
812
|
accessToken: t,
|
|
813
813
|
use: s = [],
|
|
814
814
|
apiOptions: r = {},
|
|
815
815
|
richText: i = {}
|
|
816
|
-
} =
|
|
816
|
+
} = o;
|
|
817
817
|
r.accessToken = r.accessToken || t;
|
|
818
|
-
const
|
|
818
|
+
const n = { bridge: e, apiOptions: r };
|
|
819
819
|
let c = {};
|
|
820
820
|
s.forEach((g) => {
|
|
821
|
-
c = { ...c, ...g(
|
|
821
|
+
c = { ...c, ...g(n) };
|
|
822
822
|
});
|
|
823
|
-
const l = !(typeof window > "u") && ((
|
|
823
|
+
const l = !(typeof window > "u") && ((p = (u = window.location) == null ? void 0 : u.search) == null ? void 0 : p.includes("_storyblok_tk"));
|
|
824
824
|
return e !== !1 && l && j(x), w = new y(i.schema), i.resolver && E(w, i.resolver), c;
|
|
825
|
-
}, E = (
|
|
826
|
-
|
|
825
|
+
}, E = (o, e) => {
|
|
826
|
+
o.addNode("blok", (t) => {
|
|
827
827
|
let s = "";
|
|
828
828
|
return t.attrs.body.forEach((r) => {
|
|
829
829
|
s += e(r.component, r);
|
|
@@ -831,7 +831,10 @@ const x = "https://app.storyblok.com/f/storyblok-v2-latest.js", he = (n, e, t =
|
|
|
831
831
|
html: s
|
|
832
832
|
};
|
|
833
833
|
});
|
|
834
|
-
},
|
|
834
|
+
}, le = (o) => {
|
|
835
|
+
var e, t;
|
|
836
|
+
return !o || ((e = o == null ? void 0 : o.content) == null ? void 0 : e[0].type) !== "blok" && !((t = o == null ? void 0 : o.content) != null && t[0].content);
|
|
837
|
+
}, de = (o, e, t) => {
|
|
835
838
|
let s = t || w;
|
|
836
839
|
if (!s) {
|
|
837
840
|
console.error(
|
|
@@ -839,18 +842,17 @@ const x = "https://app.storyblok.com/f/storyblok-v2-latest.js", he = (n, e, t =
|
|
|
839
842
|
);
|
|
840
843
|
return;
|
|
841
844
|
}
|
|
842
|
-
return
|
|
843
|
-
|
|
844
|
-
For more info about the richtext object check https://github.com/storyblok/storyblok-js#rendering-rich-text`), "");
|
|
845
|
-
}, pe = () => j(x);
|
|
845
|
+
return le(o) ? "" : (e && (s = new y(e.schema), e.resolver && E(s, e.resolver)), s.render(o));
|
|
846
|
+
}, ge = () => j(x);
|
|
846
847
|
export {
|
|
847
848
|
y as RichTextResolver,
|
|
848
849
|
ie as RichTextSchema,
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
850
|
+
ce as apiPlugin,
|
|
851
|
+
le as isRichTextEmpty,
|
|
852
|
+
ge as loadStoryblokBridge,
|
|
853
|
+
ue as registerStoryblokBridge,
|
|
852
854
|
de as renderRichText,
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
855
|
+
he as storyblokEditable,
|
|
856
|
+
pe as storyblokInit,
|
|
857
|
+
ue as useStoryblokBridge
|
|
856
858
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import { SbSDKOptions, StoryblokBridgeConfigV2, ISbStoryData, SbInitResult, ISbR
|
|
|
2
2
|
import { RichtextResolver } from "storyblok-js-client";
|
|
3
3
|
export declare const useStoryblokBridge: <T extends StoryblokComponentType<string> = any>(id: Number, cb: (newStory: ISbStoryData<T>) => void, options?: StoryblokBridgeConfigV2) => void;
|
|
4
4
|
export declare const storyblokInit: (pluginOptions?: SbSDKOptions) => SbInitResult;
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const isRichTextEmpty: (data?: ISbRichtext) => boolean;
|
|
6
|
+
export declare const renderRichText: (data?: ISbRichtext, options?: SbRichTextOptions, resolverInstance?: RichtextResolver) => string;
|
|
6
7
|
export declare const loadStoryblokBridge: () => Promise<unknown>;
|
|
7
8
|
export { useStoryblokBridge as registerStoryblokBridge };
|
|
8
9
|
export { default as apiPlugin } from "./modules/api";
|