UNPKG

oc-client-browser

Version:
16 lines 15.2 kB
(()=>{var R=[],z={},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:[]}},k=-1,H=-2,U=-3,L=-4,T=-5,M=-6,$=-7,D="B",P="D",I="E",q="M",J="N",W="P",V="R",F="S",Y="Y",G="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 s.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,s.call(this,n)}function s(e){const{hydrated:r,values:t,deferred:n,plugins:o}=this;let s;const a=[[e,e=>{s=e}]];let i=[];for(;0<a.length;){const[y,b]=a.pop();switch(y){case $:b(void 0);continue;case T:b(null);continue;case H:b(NaN);continue;case M:b(1/0);continue;case U:b(-1/0);continue;case L: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 P:b(r[y]=new Date(l));continue;case G:b(r[y]=new URL(l));continue;case D:b(r[y]=BigInt(l));continue;case V:b(r[y]=new RegExp(l,d));continue;case Y:b(r[y]=Symbol.for(l));continue;case F:const g=new Set;r[y]=g;for(let e=1;e<v.length;e++)a.push([v[e],e=>{g.add(e)}]);b(g);continue;case q:const w=new Map;r[y]=w;for(let e=1;e<v.length;e+=2){const E=[];a.push([v[e+1],e=>{E[1]=e}]),a.push([v[e],e=>{E[0]=e}]),i.push(()=>{w.set(E[0],E[1])})}b(w);continue;case J:const j=Object.create(null);r[y]=j;for(const x of Object.keys(l).reverse()){const _=[];a.push([l[x],e=>{_[1]=e}]),a.push([Number(x.slice(1)),e=>{_[0]=e}]),i.push(()=>{j[_[0]]=_[1]})}b(j);continue;case W:r[l]?b(r[y]=r[l]):(u=new K,n[l]=u,b(r[y]=u.promise));continue;case I:var[,m,u]=v,m=new(u&&Q&&Q[u]?Q[u]:Error)(m);r[y]=m,b(m);continue;case Z:b(r[y]=r[l]);continue;default:if(Array.isArray(o)){const A=[];var h=v.slice(1);for(let t=0;t<h.length;t++){var p=h[t];a.push([p,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!==k&&a.push([f,e=>{C[t]=e}])}b(C)}else{const S={};r[y]=S;for(const O of Object.keys(v).reverse()){const N=[];a.push([v[O],e=>{N[1]=e}]),a.push([Number(O.slice(1)),e=>{N[0]=e}]),i.push(()=>{S[N[0]]=N[1]})}b(S)}else r[y]=v,b(v)}}for(;0<i.length;)i.pop()();return s}async function X(e,t){var t=(t??{})["plugins"];const r=new K,n=e.pipeThrough(function(){const o=new TextDecoder;let s="";return new TransformStream({transform(e,t){e=o.decode(e,{stream:!0});const r=(s+e).split("\n");s=r.pop()||"";for(const n of r)t.enqueue(n)},flush(e){s&&e.enqueue(s)}})}()).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 s=r.promise;return t.done?r.resolve():s=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 s=this.deferred[n];if(!s)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);s.resolve(r);break}case I:{n=o.indexOf(":"),r=Number(o.slice(1,n));const a=this.deferred[r];if(!a)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);a.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:s.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:/,""),[s,e]=(r?.split("=")||[]).reduce((e,t)=>t.startsWith("=")?[t.slice(1),e[1]]:[e[0],t],[]);return{src:o,isModule:n,fallback:s,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:s}=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=()=>s?this._load(s).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.9";let i=(e,t)=>{if(!t)throw e+" parameter is required"},l=document,d=window,m=()=>{},t=!1,r=!1,u={};var e=e=>"boolean"==typeof e;let h=setTimeout,n=c.cmd,p=c.conf,a=c.renderedComponents,f="data-rendered",y="data-rendering",b=l.currentScript?.nonce,v=e=>console.log(e),g=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),j=p.retryInterval||Number(5e3),E=p.retryLimit||Number(30),s=!!e(p.disableLoader)&&p.disableLoader,x=p.retrySendNumber||!0,_=p.pollingInterval||500,A=p.tag||"oc-component";e=!!e(p.disableLifecycles)&&p.disableLifecycles;let C="Failed to load % component "+E+" times. Giving up",S="Error rendering component: %, error: ",O="Failed to retrieve the component. Retrying in "+j/1e3+" seconds...",N=p.loadingMessage||"",k=(e,t)=>e.replace("%",t),H=B,o=R,U=z,L=(e,t)=>{(e=Array.isArray(e)?e:[e]).map(e=>{!t&&H[e.type]||(H[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}};c.addStylesToHead=e=>{let t=l.createElement("style");t.textContent=e,b&&t.setAttribute("nonce",b),l.head.appendChild(t)};let M=()=>{c.ready(c.renderUnloadedComponents)};c.registerTemplates=e=>(L(e),M(),H),c.require=(r,e,t)=>{t||(t=e,e=r,r=void 0),"string"==typeof r&&(r=[r]);let n=()=>{let e=d;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 $=(t,r,n)=>{var e;n||(n=r,r=[]),t.length?(e=t[0],c.require(e.global,e.url,e=>{$(t.slice(1),r.concat(e),n)})):n(r)};c.requireSeries=$;let D=(e,t,r)=>{let n=e.setAttribute.bind(e);var o=t.name,s=t.version;n("id",t.id),n(f,!0),n(y,!1),n("data-version",s),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=l.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),a[o]={version:s},t.baseUrl&&(a[o].baseUrl=t.baseUrl),t.element=e,c.events.fire("oc:rendered",{...t,id:t.ocId})),r()},P=(n,o)=>{o=o||m;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 s={...p.globalParameters,...n.parameters},a=n.action?s:{components:[{action:n.action,name:r,version:e,parameters:s}]},s=T();fetch(t,{method:"POST",headers:s,body:JSON.stringify(a)}).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)};c.getData=P,c.getAction=t=>new Promise((r,n)=>{var e=t.component;P({json:!0,name:e,...a[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(g(`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(U).length&&l.head.appendChild(Object.assign(l.createElement("script"),{type:"importmap",textContent:JSON.stringify({imports:U})})),e(),c.events.fire("oc:ready",c),c.status="ready",n.map(e=>{e(c)}),c.cmd={push:e=>e(c)}}))};const I=(e,t,r)=>{var n=!!t.data?.component?.esm;!!t.data?.component?.iframe?((e,a,i)=>{try{let r=a.data;let t=r.element;r.name=a.name;r.version=a.version;r.baseUrl=a.baseUrl;let n=l.createElement("iframe");n.style.border="0";n.style.width="100%";n.style.display="block";if(r.component.sandbox)n.setAttribute("sandbox",r.component.sandbox);if(r.component.attributes)for(let[e,t]of Object.entries(r.component.attributes))n.setAttribute(e,t);let o=r.html;let s=()=>{if(r.component.enableMessaging)q(n,r);let e=`<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ${r.component.styles?`<style>${r.component.styles}</style>`:""} <style> body { margin: 0; padding: 0; } </style> </head> <body> ${o} ${r.component.scripts?`<script>${r.component.scripts}<\/script>`:""} </body> </html>`;t.appendChild(n);n.contentDocument.open();n.contentDocument.write(e);n.contentDocument.close();if(r.component.autoResize!==false)n.onload=()=>{let t=()=>{try{let e=n.contentDocument.body;let t=n.contentDocument.documentElement;let r=Math.max(e.scrollHeight,e.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight);n.style.height=r+"px"}catch(e){v("Cannot auto-resize cross-origin iframe")}};t();try{if(d.ResizeObserver){let e=new ResizeObserver(t);e.observe(n.contentDocument.body);n._resizeObserver=e}}catch(e){v("Cannot observe iframe content changes")}};else if(r.component.height)n.style.height=typeof r.component.height==="number"?r.component.height+"px":r.component.height;t._iframe=n;i(null)};if(!o&&e)c.render(e,r,(e,t)=>{if(e){i(e);return}o=t;s()});else s()}catch(e){console.error("Error rendering iframe component",e);i(e)}})(e,t,r):n?(async(t,r)=>{try{const{_staticPath:n,_componentName:o,_componentVersion:s}=t.component.props;window.oc._esm=window.oc._esm||{};window.oc._esm[`${o}@${s}`]=e=>{return n+"public/"+e};const{mount:a}=await import(t.component.src);let e={};if(t.component.development)e.development=t.component.development;a(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)},q=(t,r)=>{var e=e=>{e.source===t.contentWindow&&c.events.fire("oc:iframe-message",{componentId:r.ocId,componentName:r.name,message:e.data})};d.addEventListener("message",e),t._messageHandler=e,r.element.postMessage=e=>{t.contentWindow.postMessage(e,"*")}};return c.render=(n,o,s)=>{c.ready(()=>{if(o&&1==o.__oc_emptyResponse)return s(null,"");let t=n.type;"jade"!=t&&"handlebars"!=t||(t="oc-template-"+t);let r=H[t];r?c.require(["oc","components",n.key],n.src,e=>{e?$(r.externals,()=>{try{s(null,("oc-template-handlebars"==t?d.Handlebars.template(e,[]):e)(o))}catch(e){s(""+e)}}):s(k("Error getting compiled view: %",n.src))}):s(k('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?h(()=>{c.renderNestedComponent(n,o)},_):(g("Unrendered component found. Trying to retrieve it..."),r(y,!0),s||(n.innerHTML='<div class="oc-loading">'+N+"</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()):D(n,t,o)}))})},c.renderByHref=(e,t,o)=>{o=o||t;let s=Math.floor(9999999999*Math.random()),r=e.retryNumber||+t||0,n=e.href||e,a=e.id||s,i=e.element;c.ready(()=>{var e,t;n?fetch((e=n,t={...p.globalParameters,...x?{__oc_Retry:r}:{}},e+(~e.indexOf("?")?"&":"?")+new URLSearchParams(t)),{headers:T()}).then(w).then(r=>{if(r.error)throw r;let n=r.template;r.data.id=s,r.data.element=i,I(n,r,(e,t)=>{e?o(k(S,r.href)+e):(g(k("Component '%' correctly rendered",n.src)),o(null,{id:a,ocId:s,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:a,element:i},o)},e=()=>{o(k(C,n))},null==u[t]&&(u[t]=E),u[t]<=0?e():(h(()=>{r(E-u[t]+1)},j),u[t]--)}):o(S+"Href parameter missing")})},c.renderUnloadedComponents=()=>{c.ready(()=>{let r=l.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||m,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._iframe&&(this._iframe._messageHandler&&d.removeEventListener("message",this._iframe._messageHandler),this._iframe._resizeObserver&&this._iframe._resizeObserver.disconnect(),this._iframe.remove(),delete this._iframe),this.#manageLifecycle&&this.unmount&&"true"==this.getAttribute("data-rendered")&&(this.unmount(),this.removeAttribute("data-rendered")))}}),c}(e)})(); //# sourceMappingURL=oc-client.min.map