oc-client-browser
Version:
2 lines • 12.7 kB
JavaScript
(()=>{var R=[],D={},I={"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:[]}},k=-1,U=-2,L=-3,T=-4,H=-5,M=-6,P=-7,q="B",$="D",B="E",J="M",V="N",W="P",F="R",G="S",Y="Y",Z="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,v]=s.pop();switch(y){case P:v(void 0);continue;case H:v(null);continue;case U:v(NaN);continue;case M:v(1/0);continue;case L:v(-1/0);continue;case T:v(-0);continue}if(r[y])v(r[y]);else{const b=t[y];if(b&&"object"==typeof b)if(Array.isArray(b))if("string"==typeof b[0]){var[l,c,d]=b;switch(l){case $:v(r[y]=new Date(c));continue;case Z:v(r[y]=new URL(c));continue;case q:v(r[y]=BigInt(c));continue;case F:v(r[y]=new RegExp(c,d));continue;case Y:v(r[y]=Symbol.for(c));continue;case G:const w=new Set;r[y]=w;for(let e=1;e<b.length;e++)s.push([b[e],e=>{w.add(e)}]);v(w);continue;case J:const g=new Map;r[y]=g;for(let e=1;e<b.length;e+=2){const E=[];s.push([b[e+1],e=>{E[1]=e}]),s.push([b[e],e=>{E[0]=e}]),i.push(()=>{g.set(E[0],E[1])})}v(g);continue;case V:const j=Object.create(null);r[y]=j;for(const x of Object.keys(c).reverse()){const S=[];s.push([c[x],e=>{S[1]=e}]),s.push([Number(x.slice(1)),e=>{S[0]=e}]),i.push(()=>{j[S[0]]=S[1]})}v(j);continue;case W:r[c]?v(r[y]=r[c]):(m=new K,n[c]=m,v(r[y]=m.promise));continue;case B:var[,u,m]=b,u=new(m&&Q&&Q[m]?Q[m]:Error)(u);r[y]=u,v(u);continue;case z:v(r[y]=r[c]);continue;default:if(Array.isArray(o)){const A=[];var p=b.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(b[0],...A);if(e)return void v(r[y]=e.value)}throw new SyntaxError});continue}throw new SyntaxError}}else{const N=[];r[y]=N;for(let t=0;t<b.length;t++){var f=b[t];f!==k&&s.push([f,e=>{N[t]=e}])}v(N)}else{const C={};r[y]=C;for(const O of Object.keys(b).reverse()){const _=[];s.push([b[O],e=>{_[1]=e}]),s.push([Number(O.slice(1)),e=>{_[0]=e}]),i.push(()=>{C[_[0]]=_[1]})}v(C)}else r[y]=b,v(b)}}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 B:{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(l){if(l.status)return l;l.status="loading",l.conf=l.conf||{},l.cmd=l.cmd||[],l.renderedComponents=l.renderedComponents||{},l.clientVersion="2.1.3";let i=(e,t)=>{if(!t)throw e+" parameter is required"},s=document,c=window,d=()=>{},t=!1,r=!1,u={};var e=e=>"boolean"==typeof e;let m=setTimeout,n=l.cmd,p=l.conf,h=l.renderedComponents,f="data-rendered",y="data-rendering",v=e=>console.log(e),b=e=>p.debug&&console.log(e),w=e=>"x-text/stream"!==e.headers.get("Content-Type")?e.json():X(e.body).then(e=>e.value),g=p.retryInterval||Number(5e3),j=p.retryLimit||Number(30),a=!!e(p.disableLoader)&&p.disableLoader,E=p.retrySendNumber||!0,x=p.pollingInterval||500,S=p.tag||"oc-component";e=!!e(p.disableLifecycles)&&p.disableLifecycles;let A="Failed to load % component "+j+" times. Giving up",N="Error rendering component: %, error: ",C="Failed to retrieve the component. Retrying in "+g/1e3+" seconds...",O=p.loadingMessage||"",_=(e,t)=>e.replace("%",t),k=I,o=R,U=D,L=(e,t)=>{(e=Array.isArray(e)?e:[e]).map(e=>{!t&&k[e.type]||(k[e.type]={externals:e.externals})})};p.templates&&L(p.templates,!0);let T=()=>{let e=p.globalHeaders;return{Accept:"application/vnd.oc.unrendered+json","Content-Type":"application/json",..."function"==typeof e?e():e}};l.addStylesToHead=e=>{let t=s.createElement("style");t.textContent=e,s.head.appendChild(t)};let H=()=>{l.ready(l.renderUnloadedComponents)};l.registerTemplates=e=>(L(e),H(),k),l.require=(r,e,t)=>{t||(t=e,e=r,r=void 0),"string"==typeof r&&(r=[r]);let n=()=>{let e=c;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 M=(t,r,n)=>{var e;n||(n=r,r=[]),t.length?(e=t[0],l.require(e.global,e.url,e=>{M(t.slice(1),r.concat(e),n)})):n(r)};l.requireSeries=M;let P=(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);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,l.events.fire("oc:rendered",t)),r()},q=(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=T();fetch(t,{method:"POST",headers:a,body:JSON.stringify(s)}).then(w).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)};l.getData=q,l.getAction=t=>new Promise((r,n)=>{var e=t.component;q({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()})}),l.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"<"+S+' href="'+r+'"></'+S+">"},l.ready=e=>{t?e():r?n.push(e):(r=!0,l.requireSeries(o,()=>{t=!0,r=!1,l.events=(()=>{let n={};return{fire(e,t){if(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(U).length&&s.head.appendChild(Object.assign(s.createElement("script"),{type:"importmap",textContent:JSON.stringify({imports:U})})),e(),l.events.fire("oc:ready",l),l.status="ready",n.map(e=>{e(l)}),l.cmd={push:e=>e(l)}}))};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):l.render(e,t.data,r)};return l.render=(n,o,a)=>{l.ready(()=>{if(o&&1==o.__oc_emptyResponse)return a(null,"");let t=n.type;"jade"!=t&&"handlebars"!=t||(t="oc-template-"+t);let r=k[t];r?l.require(["oc","components",n.key],n.src,e=>{e?M(r.externals,()=>{try{a(null,("oc-template-handlebars"==t?c.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))})},l.renderNestedComponent=(n,o)=>{l.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(()=>{l.renderNestedComponent(n,o)},x):(b("Unrendered component found. Trying to retrieve it..."),r(y,!0),a||(n.innerHTML='<div class="oc-loading">'+O+"</div>"),l.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="",l.events.fire("oc:failed",{originalError:e,data:t,component:n}),v(e),o()):P(n,t,o)}))})},l.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;l.ready(()=>{var e,t;n?fetch((e=n,t={...p.globalParameters,...E?{__oc_Retry:r}:{}},e+(~e.indexOf("?")?"&":"?")+new URLSearchParams(t)),{headers:T()}).then(w).then(r=>{let n=r.template;r.data.id=a,r.data.element=i,$(n,r,(e,t)=>{e?o(_(N,r.href)+e):(b(_("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(C),t=n,r=e=>{l.renderByHref({href:n,retryNumber:e,id:s,element:i},o)},e=()=>{o(_(A,n))},null==u[t]&&(u[t]=j),u[t]<=0?e():(m(()=>{r(j-u[t]+1)},g),u[t]--)}):o(N+"Href parameter missing")})},l.renderUnloadedComponents=()=>{l.ready(()=>{let r=s.querySelectorAll(`${S}:not([data-rendered="true"]):not([data-failed="true"])`);r.forEach((e,t)=>{l.renderNestedComponent(e,()=>{t==r.length-1&&l.renderUnloadedComponents()})})})},l.load=(t,r,n)=>{l.ready(()=>{if(n=n||d,t){(t=t[0]||t).innerHTML="<"+S+' href="'+r+'" />';let e=t.querySelector(S);l.renderNestedComponent(e,()=>{n(e)})}})},H(),window.customElements&&window.customElements.define(S,class extends HTMLElement{#connected=!1;#manageLifecycle=!e;constructor(){super()}connectedCallback(){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&&l.renderNestedComponent(this,()=>{})}disconnectedCallback(){var e;this.#connected&&(this.#connected=!1,(e=this.getAttribute("id"))&&l.events.fire("oc:unrendered",{element:this,id:e}),this.#manageLifecycle&&this.unmount&&"true"==this.getAttribute("data-rendered")&&(this.unmount(),this.removeAttribute("data-rendered")))}}),l}(e)})();
//# sourceMappingURL=oc-client.min.map