oc-client-browser
Version:
2 lines • 13.1 kB
JavaScript
(()=>{var R=[],D={},B={"oc-template-handlebars":{externals:[{global:"Handlebars",url:"https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.7/handlebars.runtime.min.js"}]},"oc-template-jade":{externals:[{global:"jade",url:"https://cdnjs.cloudflare.com/ajax/libs/jade/1.11.0/runtime.min.js"}]},"oc-template-es6":{externals:[]}},_=-1,U=-2,L=-3,T=-4,H=-5,M=-6,P=-7,q="B",I="D",$="E",J="M",V="N",W="P",F="R",z="S",G="Y",Y="U",Z="Z",K=class{promise;resolve;reject;constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Q="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:void 0;function i(e){const{hydrated:t,values:r}=this;if("number"==typeof e)return a.call(this,e);if(!Array.isArray(e)||!e.length)throw new SyntaxError;var n=r.length;for(const o of e)r.push(o);return t.length=r.length,a.call(this,n)}function a(e){const{hydrated:r,values:t,deferred:n,plugins:o}=this;let a;const s=[[e,e=>{a=e}]];let i=[];for(;0<s.length;){const[y,b]=s.pop();switch(y){case P:b(void 0);continue;case H:b(null);continue;case U:b(NaN);continue;case M:b(1/0);continue;case L:b(-1/0);continue;case T:b(-0);continue}if(r[y])b(r[y]);else{const v=t[y];if(v&&"object"==typeof v)if(Array.isArray(v))if("string"==typeof v[0]){var[c,l,d]=v;switch(c){case I:b(r[y]=new Date(l));continue;case Y:b(r[y]=new URL(l));continue;case q:b(r[y]=BigInt(l));continue;case F:b(r[y]=new RegExp(l,d));continue;case G:b(r[y]=Symbol.for(l));continue;case z:const w=new Set;r[y]=w;for(let e=1;e<v.length;e++)s.push([v[e],e=>{w.add(e)}]);b(w);continue;case J:const g=new Map;r[y]=g;for(let e=1;e<v.length;e+=2){const E=[];s.push([v[e+1],e=>{E[1]=e}]),s.push([v[e],e=>{E[0]=e}]),i.push(()=>{g.set(E[0],E[1])})}b(g);continue;case V:const j=Object.create(null);r[y]=j;for(const S of Object.keys(l).reverse()){const x=[];s.push([l[S],e=>{x[1]=e}]),s.push([Number(S.slice(1)),e=>{x[0]=e}]),i.push(()=>{j[x[0]]=x[1]})}b(j);continue;case W:r[l]?b(r[y]=r[l]):(m=new K,n[l]=m,b(r[y]=m.promise));continue;case $:var[,u,m]=v,u=new(m&&Q&&Q[m]?Q[m]:Error)(u);r[y]=u,b(u);continue;case Z:b(r[y]=r[l]);continue;default:if(Array.isArray(o)){const A=[];var p=v.slice(1);for(let t=0;t<p.length;t++){var h=p[t];s.push([h,e=>{A[t]=e}])}i.push(()=>{for(const t of o){var e=t(v[0],...A);if(e)return void b(r[y]=e.value)}throw new SyntaxError});continue}throw new SyntaxError}}else{const C=[];r[y]=C;for(let t=0;t<v.length;t++){var f=v[t];f!==_&&s.push([f,e=>{C[t]=e}])}b(C)}else{const N={};r[y]=N;for(const O of Object.keys(v).reverse()){const k=[];s.push([v[O],e=>{k[1]=e}]),s.push([Number(O.slice(1)),e=>{k[0]=e}]),i.push(()=>{N[k[0]]=k[1]})}b(N)}else r[y]=v,b(v)}}for(;0<i.length;)i.pop()();return a}async function X(e,t){var t=(t??{})["plugins"];const r=new K,n=e.pipeThrough(function(){const o=new TextDecoder;let a="";return new TransformStream({transform(e,t){e=o.decode(e,{stream:!0});const r=(a+e).split("\n");a=r.pop()||"";for(const n of r)t.enqueue(n)},flush(e){a&&e.enqueue(a)}})}()).getReader(),o={values:[],hydrated:[],deferred:{},plugins:t};t=await async function(e){e=await e.read();if(!e.value)throw new SyntaxError;let t;try{t=JSON.parse(e.value)}catch(e){throw new SyntaxError}return{done:e.done,value:i.call(this,t)}}.call(o,n);let a=r.promise;return t.done?r.resolve():a=async function(e){let t=await e.read();for(;!t.done;)if(t.value){const o=t.value;switch(o[0]){case W:{var r=o.indexOf(":"),n=Number(o.slice(1,r));const a=this.deferred[n];if(!a)throw new Error(`Deferred ID ${n} not found in stream`);n=o.slice(r+1);let e;try{e=JSON.parse(n)}catch(e){throw new SyntaxError}r=i.call(this,e);a.resolve(r);break}case $:{n=o.indexOf(":"),r=Number(o.slice(1,n));const s=this.deferred[r];if(!s)throw new Error(`Deferred ID ${r} not found in stream`);n=o.slice(n+1);let e;try{e=JSON.parse(n)}catch(e){throw new SyntaxError}n=i.call(this,e);s.reject(n);break}default:throw new SyntaxError}t=await e.read()}}.call(o,n).then(r.resolve).catch(e=>{for(const t of Object.values(o.deferred))t.reject(e);r.reject(e)}),{done:a.then(()=>n.closed),value:t.value}}function ee(e){const t=new Error(e.message||e);return e.stack&&(t.stack=e.stack),Object.assign(t,e.originalError,e)}var e=window.oc||{},t=new class{loaded=new Set;errors=new Set;parse(e){const[t,r]=e.split("#");var n=t.startsWith("module:"),o=t.replace(/^module:/,""),[a,e]=(r?.split("=")||[]).reduce((e,t)=>t.startsWith("=")?[t.slice(1),e[1]]:[e[0],t],[]);return{src:o,isModule:n,fallback:a,id:e}}async load(...e){for(const t of e)Array.isArray(t)?await Promise.all(t.map(e=>this._load(e))):"function"==typeof t?await t():await this._load(t);return this}async _load(t){if(!this.loaded.has(t))try{t.endsWith(".css")?await this.css(t):await this.js(t),this.loaded.add(t)}catch(e){for(const r of this.errors)r(t);throw e}}js(e){const{src:n,isModule:o,fallback:a}=this.parse(e);return new Promise((e,t)=>{const r=document.createElement("script");r.type=o?"module":"text/javascript",r.src=n,r.onload=e,r.onerror=()=>a?this._load(a).then(e).catch(t):t(),document.head.append(r)})}css(e){const n=this.parse(e)["src"];return new Promise((e,t)=>{const r=document.createElement("link");r.rel="stylesheet",r.href=n,r.onload=e,r.onerror=t,document.head.append(r)})}onError(e){return this.errors.add(e),this}};window.ljs=t,window.oc=function(c){if(c.status)return c;c.status="loading",c.conf=c.conf||{},c.cmd=c.cmd||[],c.renderedComponents=c.renderedComponents||{},c.clientVersion="2.1.8";let i=(e,t)=>{if(!t)throw e+" parameter is required"},s=document,l=window,d=()=>{},t=!1,r=!1,u={};var e=e=>"boolean"==typeof e;let m=setTimeout,n=c.cmd,p=c.conf,h=c.renderedComponents,f="data-rendered",y="data-rendering",b=s.currentScript?.nonce,v=e=>console.log(e),w=e=>p.debug&&console.log(e),g=e=>"x-text/stream"!==e.headers.get("Content-Type")?e.json():X(e.body).then(e=>e.value),j=p.retryInterval||Number(5e3),E=p.retryLimit||Number(30),a=!!e(p.disableLoader)&&p.disableLoader,S=p.retrySendNumber||!0,x=p.pollingInterval||500,A=p.tag||"oc-component";e=!!e(p.disableLifecycles)&&p.disableLifecycles;let C="Failed to load % component "+E+" times. Giving up",N="Error rendering component: %, error: ",O="Failed to retrieve the component. Retrying in "+j/1e3+" seconds...",k=p.loadingMessage||"",_=(e,t)=>e.replace("%",t),U=B,o=R,L=D,T=(e,t)=>{(e=Array.isArray(e)?e:[e]).map(e=>{!t&&U[e.type]||(U[e.type]={externals:e.externals})})};p.templates&&T(p.templates,!0);let H=()=>{let e=p.globalHeaders;return{Accept:"application/vnd.oc.unrendered+json","Content-Type":"application/json",..."function"==typeof e?e():e}};c.addStylesToHead=e=>{let t=s.createElement("style");t.textContent=e,b&&t.setAttribute("nonce",b),s.head.appendChild(t)};let M=()=>{c.ready(c.renderUnloadedComponents)};c.registerTemplates=e=>(T(e),M(),U),c.require=(r,e,t)=>{t||(t=e,e=r,r=void 0),"string"==typeof r&&(r=[r]);let n=()=>{let e=l;if(null!=r){for(var t in r)if(e=e[r[t]],!e)return;return e}};var o=()=>{t(n())};n()?o():ljs.load(e,o)};let P=(t,r,n)=>{var e;n||(n=r,r=[]),t.length?(e=t[0],c.require(e.global,e.url,e=>{P(t.slice(1),r.concat(e),n)})):n(r)};c.requireSeries=P;let q=(e,t,r)=>{let n=e.setAttribute.bind(e);var o=t.name,a=t.version;n("id",t.id),n(f,!0),n(y,!1),n("data-version",a),n("data-id",t.ocId),"string"==typeof t.html&&(e.innerHTML=t.html),(e=>{for(var t of Array.from(e.querySelectorAll("script"))){let e=s.createElement("script");e.textContent=t.textContent;for(var r of Array.from(t.attributes))e.setAttribute(r.name,r.value);b&&e.setAttribute("nonce",b),t.parentNode?.replaceChild(e,t)}})(e),t.key&&n("data-hash",t.key),o&&(n("data-name",o),h[o]={version:a},t.baseUrl&&(h[o].baseUrl=t.baseUrl),t.element=e,c.events.fire("oc:rendered",{...t,id:t.ocId})),r()},I=(n,o)=>{o=o||d;let e=n.version,t=n.baseUrl,r=n.name;i("version",e),i("baseUrl",t),i("name",r),n.action&&(t=`${t}~actions/${n.action}/${n.name}/${n.version||""}`);var a={...p.globalParameters,...n.parameters},s=n.action?a:{components:[{action:n.action,name:r,version:e,parameters:a}]},a=H();fetch(t,{method:"POST",headers:a,body:JSON.stringify(s)}).then(g).then(e=>{var t,r;n.action?(r=e.error?ee(e.details||e.error):null,o(r,e.data)):(r=(t=e[0].response).error?ee(t.details||t.error):null,o(r,t.data,e[0]))}).catch(o)};c.getData=I,c.getAction=t=>new Promise((r,n)=>{var e=t.component;I({json:!0,name:e,...h[e],...t},(e,t)=>{if(e)n(e);else if(t.component){let e=t.component.props;delete e._staticPath,delete e._baseUrl,delete e._componentName,delete e._componentVersion,r(e)}else r()})}),c.build=e=>{i("baseUrl",e.baseUrl),i("name",e.name);var t=e=>e?e.match(/\/$/)?e:e+"/":"";let r=t(e.baseUrl)+t(e.name)+t(e.version);if(e.parameters){r+="?";for(var[n,o]of Object.entries(e.parameters))/[+&=]/.test(o)&&(o=encodeURIComponent(o)),r+=n+"="+o+"&";r=r.slice(0,-1)}return"<"+A+' href="'+r+'"></'+A+">"},c.ready=e=>{t?e():r?n.push(e):(r=!0,c.requireSeries(o,()=>{t=!0,r=!1,c.events=(()=>{let n={};return{fire(e,t){if(w(`OC event fired: "${e}"`),n[e])for(var r of n[e])r({type:e},t)},on(e,t){if(!t)throw new Error("Callback is required");n[e]||(n[e]=[]),n[e].push(t)},off(e,t){for(var r of e="string"==typeof e?[e]:e)n[r]&&(t?n[r]=n[r].filter(e=>e!==t):delete n[r])},reset(){n={}}}})(),0<Object.keys(L).length&&s.head.appendChild(Object.assign(s.createElement("script"),{type:"importmap",textContent:JSON.stringify({imports:L})})),e(),c.events.fire("oc:ready",c),c.status="ready",n.map(e=>{e(c)}),c.cmd={push:e=>e(c)}}))};const $=(e,t,r)=>{!!t.data?.component?.esm?(async(t,r)=>{try{const{_staticPath:n,_componentName:o,_componentVersion:a}=t.component.props;window.oc._esm=window.oc._esm||{};window.oc._esm[`${o}@${a}`]=e=>{return n+"public/"+e};const{mount:s}=await import(t.component.src);let e={};if(t.component.development)e.development=t.component.development;s(t.element,t.component.props,e);r(null)}catch(e){console.error("Error rendering ESM component",e);r(e)}})(t.data,r):c.render(e,t.data,r)};return c.render=(n,o,a)=>{c.ready(()=>{if(o&&1==o.__oc_emptyResponse)return a(null,"");let t=n.type;"jade"!=t&&"handlebars"!=t||(t="oc-template-"+t);let r=U[t];r?c.require(["oc","components",n.key],n.src,e=>{e?P(r.externals,()=>{try{a(null,("oc-template-handlebars"==t?l.Handlebars.template(e,[]):e)(o))}catch(e){a(""+e)}}):a(_("Error getting compiled view: %",n.src))}):a(_('Error loading component: view engine "%" not supported',n.type))})},c.renderNestedComponent=(n,o)=>{c.ready(()=>{let e=(n=n[0]||n).getAttribute.bind(n),r=n.setAttribute.bind(n);var t="true"==e(y);"true"==e(f)?o():t?m(()=>{c.renderNestedComponent(n,o)},x):(w("Unrendered component found. Trying to retrieve it..."),r(y,!0),a||(n.innerHTML='<div class="oc-loading">'+k+"</div>"),c.renderByHref({href:e("href"),id:e("id"),element:n},(e,t)=>{e||!t?(r(y,!1),r(f,!1),r("data-failed",!0),n.innerHTML="",c.events.fire("oc:failed",{originalError:e,data:t,component:n}),v(e),o()):q(n,t,o)}))})},c.renderByHref=(e,t,o)=>{o=o||t;let a=Math.floor(9999999999*Math.random()),r=e.retryNumber||+t||0,n=e.href||e,s=e.id||a,i=e.element;c.ready(()=>{var e,t;n?fetch((e=n,t={...p.globalParameters,...S?{__oc_Retry:r}:{}},e+(~e.indexOf("?")?"&":"?")+new URLSearchParams(t)),{headers:H()}).then(g).then(r=>{if(r.error)throw r;let n=r.template;r.data.id=a,r.data.element=i,$(n,r,(e,t)=>{e?o(_(N,r.href)+e):(w(_("Component '%' correctly rendered",n.src)),o(null,{id:s,ocId:a,html:t,baseUrl:r.baseUrl,key:n.key,version:r.version,name:r.name}))})}).catch(e=>{var t,r;e&&429==e.status&&(u[n]=0),v(O),window.oc.events.fire("oc:error",e),t=n,r=e=>{c.renderByHref({href:n,retryNumber:e,id:s,element:i},o)},e=()=>{o(_(C,n))},null==u[t]&&(u[t]=E),u[t]<=0?e():(m(()=>{r(E-u[t]+1)},j),u[t]--)}):o(N+"Href parameter missing")})},c.renderUnloadedComponents=()=>{c.ready(()=>{let r=s.querySelectorAll(`${A}:not([data-rendered="true"]):not([data-failed="true"])`);r.forEach((e,t)=>{c.renderNestedComponent(e,()=>{t==r.length-1&&c.renderUnloadedComponents()})})})},c.load=(t,r,n)=>{c.ready(()=>{if(n=n||d,t){(t=t[0]||t).innerHTML="<"+A+' href="'+r+'" />';let e=t.querySelector(A);c.renderNestedComponent(e,()=>{n(e)})}})},M(),window.customElements&&window.customElements.define(A,class extends HTMLElement{#connected=!1;#manageLifecycle=!e;constructor(){super()}connectedCallback(){if(this.#connected=!0,"true"==this.getAttribute("disable-lifecycle")||""==this.getAttribute("disable-lifecycle")?this.#manageLifecycle=!1:"false"==this.getAttribute("disable-lifecycle")&&(this.#manageLifecycle=!0),this.#manageLifecycle)if("lazy"===this.getAttribute("loading")){const r=new IntersectionObserver(e=>{for(const t of e)if(t.isIntersecting){r.disconnect(),c.renderNestedComponent(this,()=>{});break}});r.observe(this)}else c.renderNestedComponent(this,()=>{})}disconnectedCallback(){var e;this.#connected&&(this.#connected=!1,(e=this.getAttribute("id"))&&c.events.fire("oc:unrendered",{element:this,id:e}),this.#manageLifecycle&&this.unmount&&"true"==this.getAttribute("data-rendered")&&(this.unmount(),this.removeAttribute("data-rendered")))}}),c}(e)})();
//# sourceMappingURL=oc-client.min.map