@sitecore-feaas/clientside 0.1.38 → 0.1.39

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.
@@ -64,4 +64,4 @@ var Yt=Object.create;var G=Object.defineProperty;var Zt=Object.getOwnPropertyDes
64
64
  ></circle>
65
65
  </svg>
66
66
  </div>`,this.getRoot().appendChild(this.stylesheet),this.getRoot().appendChild(this.loader)}update(){this.loader.style.opacity=String(this.props.opacity)}};z.observedAttributes=["hidden","opacity"];z.register("feaas-loader");function Nt(t=this){var e,r,i,o;let n=t.getAttribute("src");if(n)var{cdn:s,library:a,revision:l}=X(n);return{library:t==null?void 0:t.getContextAttribute("library"),revision:(r=(e=t==null?void 0:t.getAttribute("revision"))!==null&&e!==void 0?e:l)!==null&&r!==void 0?r:"published",cdn:(o=(i=t==null?void 0:t.getContextAttribute("cdn"))!==null&&i!==void 0?i:t==null?void 0:t.getContextAttribute("hostname"))!==null&&o!==void 0?o:R}}var rt=class extends g{constructor(){super(...arguments),this.onLoad=e=>{this.payload=e,this.advance()}}getProps(){return Nt(this)}isReadyToLoad(){return this.props.library!=null&&this.props.revision!=null&&this.props.cdn!=null}load(){return et(this.props,this.onLoad)}};rt.register("feaas-stylesheet");var ft;typeof window!="undefined"&&(window.FEAASElement=T,(ft=window.FEAASLoading)!==null&&ft!==void 0||(window.FEAASLoading=Promise.resolve()));function Ft(t){let e=[];if(t){let r=t.ownerDocument.defaultView,i,o;for(;r!==window.top;){i=r.parent;for(let n=0;n<i.frames.length;n++)if(i.frames[n]===r){for(let s of i.document.getElementsByTagName("iframe"))if(s.contentWindow===r){o=s.getBoundingClientRect();let a=s.contentWindow.getComputedStyle(s);e.push({left:o.left+parseInt(a.borderLeftWidth),top:o.top+parseInt(a.borderTopWidth)})}r=i;break}}}return e.reduce((r,i)=>({left:r.left+i.left,top:r.top+i.top}),{left:0,top:0})}function Ut(t=this){var e;return{context:HTMLElement,frontend:t==null?void 0:t.getContextAttribute("frontend"),src:(e=t==null?void 0:t.getAttribute("src"))!==null&&e!==void 0?e:"/editor.js",library:t==null?void 0:t.getAttribute("library"),component:t==null?void 0:t.getAttribute("component"),version:t==null?void 0:t.getAttribute("version"),instance:t==null?void 0:t.getAttribute("instance"),forked:t==null?void 0:t.getAttribute("forked"),revision:(t==null?void 0:t.getAttribute("revision"))||"saved",hidden:(t==null?void 0:t.getAttribute("hidden"))!=null,for:t==null?void 0:t.getAttribute("for"),state:(t==null?void 0:t.getAttribute("state"))||"idle",changed:(t==null?void 0:t.getAttribute("changed"))!=null}}var V=class extends g{constructor(){super(...arguments),this.framePoint={top:0,left:0},this.wrapperRect={top:0,left:0,width:0,height:0},this.bodyRect={top:0,left:0,width:0,height:0},this.defaultProps={hidden:!1},this.setTarget=(e,r={component:e.getAttribute("component"),version:e.getAttribute("version"),revision:e.getAttribute("revision"),instance:e.getAttribute("instance")})=>{if(!this.closing&&(!this.target||e==null))return this.set(r),this.target=e,!0},this.onChromeMeasureElement=(e,r=e.getBoundingClientRect())=>e.ownerDocument==document?{left:r.left-this.bodyRect.left,top:r.top-this.bodyRect.top,width:r.width,height:r.height}:{left:r.left+this.framePoint.left-this.bodyRect.left,top:r.top+this.framePoint.top-this.bodyRect.top,width:r.width,height:r.height},this.onBeforeMeasure=e=>{e.memoized.focusable&&(this.framePoint=Ft(e.memoized.focusable)),this.chrome&&(this.wrapperRect=this.chrome.positionable.getBoundingClientRect(),this.bodyRect=this.chrome.positionable.ownerDocument.body.parentElement.getBoundingClientRect())},this.onMeasure=()=>{},this.onPosition=({focusable:e,root:r})=>{!this.chrome||this.props.hidden||(e?(this.chrome.wrapper.style.width=e.width+16*2+"px",this.chrome.wrapper.style.height=e.height+16*1+64+"px",this.chrome.wrapper.style.left=e.left-16+"px",this.chrome.wrapper.style.top=e.top-64+"px",this.chrome.wrapper.style.opacity="1",this.chrome.absolute=this.querySelector(".ui.overlays"),this.chrome.absolute&&(this.chrome.absolute.style.left=r.left+"px",this.chrome.absolute.style.top=r.top+"px")):(this.chrome.wrapper.style.opacity="0",this.chrome.wrapper.style.left="-1000px",this.chrome.wrapper.style.top="-1000px"))},this.onWindowMessage=e=>{var r;switch((r=e.data)===null||r===void 0?void 0:r.type){case"feaasEdit":let i=this.getPlaceholder();this.setTarget(i.editable,e.data)&&(this.loader=i.loader,document.body.appendChild(i.clipper),this.editedUID=e.data.id,this.setPlaceholder(),this.open());break;case"feaasMeasurements":this.measurements=e.data.measurements,this.props.hidden||this.setPlaceholder();break}},this.onContentChange=()=>{this.setAttribute("changed","changed"),requestAnimationFrame(()=>{this.setIframeComponentContent()})},this.onClose=()=>{var e;this.setAttribute("hidden","hidden"),this.placeholder&&(this.placeholder.positionable.style.opacity="0",this.placeholder.positionable.style.pointerEvents="none"),this.chrome&&(this.chrome.wrapper.style.opacity="0"),!((e=this.target)===null||e===void 0)&&e.parentNode&&(this.target.outerHTML=this.target.outerHTML),this.setTarget(null,{component:null,version:null,instance:null,revision:null}),this.setEditorContext({isFocused:!1})},this.onVersionStateChange=(e,r)=>{this.versionContext=e,this.setVersionContext=r},this.onEditorStateChange=(e,r)=>{this.editorContext=e,this.setEditorContext=r,e.editor&&this.props.state=="loading"&&!this.props.hidden&&(this.setAttribute("state","ready"),this.ownerDocument.fonts.ready.then(()=>setTimeout(()=>{this.setReadyState(),this.setIframeComponentContent()},100)))}}getProps(){return Ut(this)}getReactRootElement(){return this.reactRootElement||(this.reactRootElement=document.createElement("div"),this.getRoot().appendChild(this.reactRootElement)),this.reactRootElement}showLoader(){this.loader||(this.loader=document.createElement("feaas-loader"),this.loader.setAttribute("opacity","0.6"),this.loader.style.zIndex="1000",this.target.appendChild(this.loader),this.target.tagName=="FEAAS-COMPONENT"&&(this.target.style.position="relative"))}hideLoader(){this.loader&&(this.loader.setAttribute("hidden","hidden"),this.target.tagName=="FEAAS-COMPONENT"&&(this.target.style.position="relative",this.target.style.position=""))}load(){return import( /*@vite-ignore*/ /* webpackIgnore: true */ this.formatURL(this.props.src,this.props.frontend))}connectedCallback(){super.connectedCallback(),window.addEventListener("message",this.onWindowMessage)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.onWindowMessage)}setIframe(e){this.iframe=e}setIframeComponentContent(){this.placeholder&&this.iframe&&this.placeholder.editable.innerHTML&&this.iframe.contentWindow.postMessage({type:"feaasUpdate",id:this.editedUID,content:this.placeholder.editable.innerHTML})}setPlaceholder(){if(!this.iframe)return;let e=this.iframe.clientWidth,r=this.iframe.clientHeight,i=this.iframe.getBoundingClientRect(),o=this.getPlaceholder(),n=document.body.getBoundingClientRect(),s=this.measurements[this.editedUID];s&&(Object.assign(o.clipper.style,{position:"absolute",top:i.top+this.iframe.clientTop-n.top+"px",left:i.left+this.iframe.clientLeft-n.left+"px",width:e+"px",height:r+"px",pointerEvents:"none",zIndex:1,overflow:"hidden"}),Object.assign(o.positionable.style,{position:"absolute",top:s.top+"px",left:s.left+"px",width:s.width+"px",zIndex:2,transition:"opacity 0.4s",pointerEvents:this.props.hidden?"none":"all"}),Object.assign(o.loader.style,{position:"absolute",top:s.top+"px",left:s.left+"px",width:s.width+"px",height:s.height+"px",filter:"opacity(0.6)",zIndex:3,pointerEvents:"none"}),document.dispatchEvent(new Event("feaasRefresh",{bubbles:!0})))}getPlaceholder(){return this.placeholder?this.placeholder:(this.placeholder={clipper:document.createElement("div"),positionable:document.createElement("div"),editable:Object.assign(document.createElement("div"),{className:"-feaas"}),loader:document.createElement("feaas-loader")},this.placeholder.clipper.appendChild(this.placeholder.positionable),this.placeholder.positionable.appendChild(this.placeholder.editable),this.placeholder.clipper.appendChild(this.placeholder.loader),this.placeholder)}attributeChangedCallback(e,r,i){r!==i&&(e=="hidden"&&(this.style.setProperty("display","block","important"),this.style.setProperty("transition","opacity 0.3s","important"),i?(this.style.setProperty("opacity","0","important"),this.style.pointerEvents="none"):(this.style.setProperty("opacity","1","important"),this.style.pointerEvents="all")),super.attributeChangedCallback(e,r,i))}open(){clearTimeout(this.closing),this.removeAttribute("hidden"),this.removeAttribute("changed"),this.setLoadingState()}shouldFork(e){return e.forkOriginId==null&&this.props.instance!=null}cleanup(){var e;this.placeholder&&((e=this.placeholder.clipper)===null||e===void 0||e.remove(),this.placeholder=null)}close(){console.log("Editor is not ready")}unfork(){console.log("Editor is not ready")}discard(){console.log("Editor is not ready")}save(){console.log("Editor is not ready")}setVersionContext(e){console.log("Editor is not ready")}setEditorContext(e){console.log("Editor is not ready")}setLoadingState(){this.showLoader(),this.setAttribute("state","loading")}setReadyState(){this.hideLoader(),this.setEditorContext({activeVersionId:this.component.versions[0].id}),this.setAttribute("state","ready")}render({children:e,component:r,version:i,instance:o},{Editor:n,VersionStatusList:s,VersionStatusButton:a,Version:l,VersionMenu:d,EditorUIUndo:h,EditorUIMode:f,React:{useEffect:u,useMemo:c,useState:m,useContext:E},Chakra:{HStack:S,Box:v,Button:mt,MenuItem:yt},Chrome:Ht,ReactDOM:fe,useSDK:zt,useSlots:Vt,useModelObserver:qt,ConfirmationContext:Jt,VersionContext:me}){if(!this.payload)return;let{React:y}=this.payload,{sdk:K}=zt(),[b,gt]=m(),{setConfirm:it}=E(Jt),$=o||i,Kt=K.library;b&&(this.component=b),u(()=>{if(this.props.hidden)return;let w=Kt.components.getItem(r).clone();return w.versions.search({ids:[i,o].filter(Boolean),componentIds:[r]}).then(ot=>{w.versions.setItems(ot);let C=w.findVersion(o,["staged","published"]),F=w.findVersion(i,["staged","published"]);if(C)C.deletedAt?(C.getDraft().changeAndNotify(F.toProperties()).restore(),console.error("FEAAS Editor: Restoring fork")):(console.error("FEAAS Editor: Pre-forked"),this.setAttribute("forked",C.id));else if(this.removeAttribute("forked"),this.shouldFork(F)){console.error("FEAAS Editor: Forking");let nt=F.fork(o).id;this.setAttribute("instance",nt)}else console.error("FEAAS Editor: Regular");gt(w)}),()=>{this.closing=setTimeout(()=>{this.closing=null,this.cleanup(),gt(null)},400)}},[i,this.props.hidden]);let bt=qt(b==null?void 0:b.versions,[]).filter(w=>w.id==$),N=bt[0];N&&!this.props.hidden&&(this.version=N),u(()=>(this.unfork=()=>{it({title:"Reverting component customizations",button:"Discard",body:"Are you sure to reset component to its original state? All changes will be lost.",action:()=>{let w=b.findVersion(i,["staged","published"]);b.findVersion(o).unstage().unpublish().changeAndNotify(w.toProperties()),b.saveVersions(!1),this.setVersionContext({needsWrite:!0}),this.removeAttribute("forked"),requestAnimationFrame(this.onClose)}})},this.discard=()=>{this.props.changed&&(b.findVersion($).revert(),b.saveVersions(!1),this.setVersionContext({needsWrite:!0}))},this.close=()=>{it({title:"Component has unsaved changes",button:"Discard",body:"Are you sure to close editor and discard changes?",bypass:!this.props.changed,action:()=>{this.discard(),requestAnimationFrame(this.onClose)}})},this.save=()=>{it({bypass:!!this.props.forked,title:"Customizing component",button:"Save",body:"Changes to the component will only be visible on that page. Changes to component done in Component Builder will not be reflected here. It will be possible to revert the customization.",action:()=>{b.findVersion($).commitData({view:this.editorContext.editor.getData({rootName:$}),model:""}).stage().publish(),this.removeAttribute("changed"),this.setAttribute("forked",$),b.saveVersions(!1)}})},()=>{delete this.unfork,delete this.discard,delete this.save,delete this.editorContext,delete this.versionContext,delete this.setEditorContext,delete this.setVersionContext}),[b]);let Gt=c(()=>this.target,[b]);return c(()=>b&&Vt(e,({picker:w,children:ot})=>y.createElement(v,{ref:C=>{this.chrome=C?{positionable:C,wrapper:C.querySelector(".editor-chrome"),absolute:this.querySelector(".ui.overlays")}:null}},y.createElement(v,{className:"editor-wrapper",position:"absolute",left:0,top:0},y.createElement(n,{datasources:K.datasources,sdk:K,library:K.library,component:b,versions:bt,context:{isAutosaveEnabled:!1,onChromeMeasure:this.onMeasure,onChromeBeforeMeasure:this.onBeforeMeasure,onChromeMeasureElement:this.onChromeMeasureElement,onChromePosition:this.onPosition,onContentChange:this.onContentChange}},{exports:this.onEditorStateChange,after:ot,chrome:({editor:C})=>C&&y.createElement(Ht,null),children:({isArchivedDisplayed:C,editor:F,status:nt})=>y.createElement(v,{position:"absolute",left:0,top:0,className:"editor-chrome",p:4,boxShadow:"2xl",pointerEvents:"none",opacity:0,transition:"opacity 0.3s"},y.createElement(v,{left:0,width:"4",top:0,bottom:0,backdropFilter:"blur(2px)",background:"rgb(244 244 244 / 80%)",position:"absolute"}),y.createElement(v,{right:0,width:"4",top:0,bottom:0,backdropFilter:"blur(2px)",background:"rgb(244 244 244 / 80%)",position:"absolute"}),y.createElement(v,{top:0,height:"16",left:0,right:0,backdropFilter:"blur(2px)",background:"rgb(244 244 244 / 80%)",position:"absolute"}),y.createElement(v,{bottom:0,height:"4",left:0,right:0,backdropFilter:"blur(2px)",background:"rgb(244 244 244 / 80%)",position:"absolute"}),N&&y.createElement(l,{version:N,node:Gt,ignoreBreakpoints:!0,deps:[this.props.forked,this.props.changed]},{exports:this.onVersionStateChange,left:y.createElement(S,{justifyContent:"space-between"},y.createElement(h,{size:"sm",editor:nt=="ready"?F:null}),y.createElement(f,{size:"sm"})),middle:(ye,ge)=>[!1],right:y.createElement(y.Fragment,null,y.createElement(mt,{variant:"secondary",size:"sm",onClick:this.close},"Close"),y.createElement(mt,{variant:"primary",size:"sm",onClick:this.save,isDisabled:!this.props.changed},this.props.changed?this.props.forked?"Save":"Save customization":"Up to date"),y.createElement(d,{isDisabled:!this.props.forked&&!this.props.changed},y.createElement(yt,{onClick:this.unfork,isDisabled:!this.props.forked},"Unfork"),y.createElement(yt,{onClick:this.discard,isDisabled:!this.props.changed},"Discard")))}))})))),[N,this.props.forked,this.props.changed])}isReadyToLoad(){return this.props.component!=null&&this.props.version!=null&&!this.props.hidden}};V.observedAttributes=["library","component","version","revision","hidden","state","changed","forked"];V.register("feaas-editor");function It(t=this){var e,r;return{part:(t==null?void 0:t.getAttribute("part"))||"picker",slot:(t==null?void 0:t.getAttribute("part"))||"picker",mode:t==null?void 0:t.getAttribute("mode"),placeholder:(t==null?void 0:t.getAttribute("placeholder"))||"No theme",frontend:(e=t==null?void 0:t.getContextAttribute("frontend"))!==null&&e!==void 0?e:"https://components.sitecorecloud.io",src:(r=t==null?void 0:t.getAttribute("src"))!==null&&r!==void 0?r:"/picker.js",hidden:(t==null?void 0:t.getAttribute("hidden"))!=null,variant:t==null?void 0:t.getAttribute("variant"),context:void 0,onClose:void 0,onContextAttributeSet:void 0}}var q=class extends g{constructor(){super(...arguments),this.defaultProps={hidden:!1}}getProps(){return It(this)}load(){return this.import( /*@vite-ignore*/ /* webpackIgnore: true */ this.formatURL(this.props.src,this.props.frontend))}render({placeholder:e,context:r,mode:i,children:o,variant:n},{Picker:s,React:a,ReactDOM:l}){return a.createElement(s,{placeholder:e,mode:i||void 0,onClose:this.props.onClose,onContextAttributeSet:this.props.onContextAttributeSet,context:r,variant:n},o)}};q.observedAttributes=["library","mode","frontend","src","hidden","variant"];q.register("feaas-picker");function Bt(t=this){var e,r,i,o;return{library:t==null?void 0:t.getAttribute("library"),src:(e=t==null?void 0:t.getAttribute("src"))!==null&&e!==void 0?e:"/context.js",frontend:(r=t==null?void 0:t.getAttribute("frontend"))!==null&&r!==void 0?r:"https://components.sitecoreclud.io",backend:(i=t==null?void 0:t.getAttribute("backend"))!==null&&i!==void 0?i:"https://components-api.sitecoreclud.io",cdn:(o=t==null?void 0:t.getAttribute("cdn"))!==null&&o!==void 0?o:"https://feaascompontsapiprod.blob.core.windows.net",auth:null,isolate:(t==null?void 0:t.getAttribute("isolate"))==null||(t==null?void 0:t.getAttribute("isolate"))=="true"}}var J=class extends g{constructor(){super(...arguments),this.defaultProps={isolate:!0},this.onStatusChange=e=>{e=="ready"&&this.dispatchEvent(new Event("feaasReady",{bubbles:!0,composed:!0}))}}getProps(){return Bt(this)}load(){return this.import( /*@vite-ignore*/ /* webpackIgnore: true */ this.formatURL(this.props.src,this.props.frontend))}isReadyToLoad(){return console.log("Is ready?",this.props,super.isReadyToLoad()&&this.props.library!=null),super.isReadyToLoad()&&this.props.library!=null}getTheme(e){return e}getRoot(){return this.getAttribute("isolate")==="false"?this:this.shadowRoot||this.attachShadow({mode:"open"})}getReactRootElement(){return this.reactRootElement||(this.reactRootElement=document.createElement("div"),this.getRoot().appendChild(this.reactRootElement)),this.reactRootElement}connectedCallback(){Array.from(this.children).forEach(e=>{this.getRoot().appendChild(e)}),super.connectedCallback()}render({children:e,library:r},{AppContext:i,Chakra:{Button:o,Tooltip:n},React:s}){let a={containerRef:{current:this.getRoot()}};return n.defaultProps={hasArrow:!0,placement:"top",portalProps:a},s.createElement(i,{backend:this.props.backend,libraryId:this.props.library,container:this.getRoot(),auth:this.props.auth,getTheme:this.getTheme,onStatusChange:this.onStatusChange,modalProps:{portalProps:a},chakraProps:{cssVarsRoot:":host",resetCSS:!0,toastOptions:{portalProps:a}}},e)}};J.observedAttributes=["library","component","version","revision","hostname","template"];J.register("feaas-context");var jt=At(require("react"),1);function Wt({data:t,...e}){if("template"in e)var r=ct(e.template,t||{});return jt.default.createElement("feaas-component",{...e,template:null,data:t?JSON.stringify(t):null,dangerouslySetInnerHTML:{__html:r||""}})}var ue=Wt;0&&(module.exports={Base,Component,ComponentProps,DEFAULT_CDN_URL,FEAASBase,FEAASComponent,FEAASComponentsProps,FEAASContext,FEAASContextProps,FEAASEditor,FEAASEditorProps,FEAASEmbed,FEAASLoader,FEAASLoaderProps,FEAASPicker,FEAASPickerProps,FEAASStylesheet,FEAASStylesheetProps,JSONPath,Loader,MyComponent,Stylesheet,autoloadScripts,cleanCollectionBit,clearFetchCache,createStylesheet,fetchAndRevalidate,fetchAndRevalidateComponent,fetchAndRevalidateStylesheet,fetchBypassingCache,fetchCache,fetchComponent,fetchToValidateCache,fetchWithCacheAwareness,findStylesheet,getComponentSource,getComponentURL,getFetchCache,getFramePosition,getStylesheetSource,getStylesheetURL,loadScript,loadStylesheet,loadStylesheetAllowStale,normalizeCollectionScope,observeDOMElement,parseComponentSource,parseStylesheetSource,queryScopes,renderComponent,renderComponentElement,renderComponentPromise,renderDOMContent,renderDOMElement,renderHTMLContent,renderStylesheet,renderStylesheetPromise,serializeCH1RichText,setDOMAttribute});
67
- //# sourceMappingURL=react.js.map
67
+ //# sourceMappingURL=react.cjs.map
package/headless.cjs ADDED
@@ -0,0 +1,67 @@
1
+ var vt=Object.create;var U=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var gt=Object.getOwnPropertyNames;var At=Object.getPrototypeOf,Et=Object.prototype.hasOwnProperty;var wt=(t,e)=>{for(var r in e)U(t,r,{get:e[r],enumerable:!0})},tt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of gt(e))!Et.call(t,i)&&i!==r&&U(t,i,{get:()=>e[i],enumerable:!(n=bt(e,i))||n.enumerable});return t};var St=(t,e,r)=>(r=t!=null?vt(At(t)):{},tt(e||!t||!t.__esModule?U(r,"default",{value:t,enumerable:!0}):r,t)),_t=t=>tt(U({},"__esModule",{value:!0}),t);var Nt={};wt(Nt,{Base:()=>v,Component:()=>D,ComponentProps:()=>pt,DEFAULT_CDN_URL:()=>g,FEAASBase:()=>v,FEAASComponent:()=>D,FEAASComponentsProps:()=>pt,FEAASLoader:()=>F,FEAASLoaderProps:()=>yt,FEAASStylesheet:()=>J,FEAASStylesheetProps:()=>mt,JSONPath:()=>f,Loader:()=>F,MyComponent:()=>j,Stylesheet:()=>J,autoloadScripts:()=>it,cleanCollectionBit:()=>rt,clearFetchCache:()=>Pt,createStylesheet:()=>ht,fetchAndRevalidate:()=>V,fetchAndRevalidateComponent:()=>$,fetchAndRevalidateStylesheet:()=>W,fetchBypassingCache:()=>H,fetchCache:()=>T,fetchComponent:()=>Ot,fetchToValidateCache:()=>M,fetchWithCacheAwareness:()=>_,findStylesheet:()=>dt,getComponentSource:()=>kt,getComponentURL:()=>Z,getFetchCache:()=>ct,getStylesheetSource:()=>$t,getStylesheetURL:()=>N,loadScript:()=>O,loadStylesheet:()=>z,loadStylesheetAllowStale:()=>Q,normalizeCollectionScope:()=>Y,observeDOMElement:()=>nt,parseComponentSource:()=>L,parseStylesheetSource:()=>I,queryScopes:()=>B,renderComponent:()=>Lt,renderComponentElement:()=>Mt,renderComponentPromise:()=>ft,renderDOMContent:()=>k,renderDOMElement:()=>b,renderHTMLContent:()=>Rt,renderStylesheet:()=>Tt,renderStylesheetPromise:()=>ut,serializeCH1RichText:()=>R,setDOMAttribute:()=>P});module.exports=_t(Nt);function E(t,e=r=>{}){var r;let n=()=>{var i,o;let s=new Promise((l,c)=>{i=d=>{t==null||t(d),l(d)},o=c});var a=Object.assign(s,{resolve:i,reject:o,restart:n,first:r});return r=a,a.catch(e),a};return n()}var Ct=typeof HTMLElement=="undefined"?typeof windowJSDOM!="undefined"?windowJSDOM.HTMLElement:class{}:HTMLElement,v=class extends Ct{getProps(e){return{}}constructor(){super(),this.defaultProps={},this.connected=!1,this.refs={},this.descendants=[],this.whenLoaded=E(e=>{this.payload=e}),this.whenRendered=E(()=>this.initialized=!0,()=>cancelAnimationFrame(this.nextRender)),this.addEventListener("feaasMount",this),this.addEventListener("feaasUnmount",this)}getRoot(){return this}attributeChangedCallback(e,r,n){this.set()}connectedCallback(){this.mount()}disconnectedCallback(){this.unmount()}mount(){try{let e=this.getParent();if(e&&!e.connected||this.connected)return;this.connected=!0,this.log("FEAAS: Mount",this.tagName,this),this.dispatchEvent(new Event("feaasMount",{bubbles:!0,composed:!0})),this.getElements().map(r=>{var n;return(n=r.mount)===null||n===void 0?void 0:n.call(r)}),this.set()}catch(e){this.onError(e)}}log(...e){console.log(...e)}unmount(){this.connected&&(this.log("FEAAS: Unmount",this),this.dispatchEvent(new Event("feaasUnmount",{bubbles:!0,composed:!0})),this.connected=!1)}getParent(e=!0){for(var r=this;r=r.parentElement||(r.parentNode instanceof ShadowRoot?r.parentNode.host:null);)if(!e||r.tagName.startsWith("FEAAS-"))return r}getElements(e=this.getRoot(),r=!0){return Array.from(e.querySelectorAll("*")).map(n=>[!r||n.tagName.startsWith("FEAAS-")?n:null,n.shadowRoot?this.getElements(n.shadowRoot,r):null]).flat().filter(Boolean)}handleEvent(e){let r=e.composedPath()[0];switch(e.type){case"feaasMount":r!=this&&this.nestedCallback(r);break;case"feaasUnmount":r!=this&&this.unnestedCallback(r);break}}unnestedCallback(e){let r=this.descendants.indexOf(e);r!=-1&&(this.log("FEAAS: Unnest",this,e),this.descendants.splice(r,-1),this.refs[e.getComponentName()]=null,e.refs.parent==this&&(e.refs.parent=null),e.refs.top==this&&(e.refs.top=e.refs.parent))}nestedCallback(e){var r,n;if(this.descendants.indexOf(e)==-1&&(this.descendants.push(e),this.log("FEAAS: Nest",this,e),this.refs[e.getComponentName()]=e,e.refs.top=this,(r=e.refs).parent||(r.parent=this),e.render))for(var o=e.refs.parent;o;o=o.refs.parent)o.render&&((n=e.refs).parentReact||(n.parentReact=o),e.refs.topReact=o)}getComponentName(){return this.tagName.replace("FEAAS-","").toLowerCase()}isReadyToLoad(){return this.payload===void 0&&this.getAttribute("hidden")==null}onError(e,r="uncaught",n=!1){let i=new CustomEvent("feaasError",{bubbles:!0,composed:!0,detail:e});if(this.dispatchEvent(i),this.whenLoaded.reject(e),!i.defaultPrevented&&!n){this.whenRendered.reject(e);try{this.unmount()}catch(o){}return!0}return!1}shouldUpdateOnLoad(){return!0}async advance(){try{if(this.payload===void 0){if(!this.isReadyToLoad())return;this.payload=null,this.dispatchEvent(new Event("feaasLoad",{bubbles:!0,composed:!0}));let e=await this.load().catch(r=>{throw this.payload=void 0,r});if(this.whenLoaded.resolve(e),this.onLoad)return}else if(this.payload==null)return;this.flush(),this.whenRendered.resolve(this)}catch(e){this.onError(e)}}flush(){var e,r;let n=(r=(e=this.payload)===null||e===void 0?void 0:e.ReactDOM)===null||r===void 0?void 0:r.flushSync;n?n(()=>this.update()):this.update()}load(){return Promise.resolve(null)}update(){var e,r,n;if(this.payload==null||!this.render)return;let{React:i,ReactDOM:o,ReactDOMClient:s}=this.payload||{};if(!i)throw new Error(`${this.tagName}: React is not present in payload`);if(!o)throw new Error(`${this.tagName}: ReactDOM is not present in payload`);!this.refs.topReact&&!this.forceUpdateReact?s?(this.reactRoot||(this.reactRoot=s.createRoot(this.getReactRootElement())),this.reactRoot.render(this.getReactElement())):o.render(this.getReactElement(),this.getReactRootElement()):this.forceUpdateReact?(e=this.forceUpdateReact)===null||e===void 0||e.call(this):(n=(r=this.refs.topReact).forceUpdateReact)===null||n===void 0||n.call(r)}invokeReactRendering(){let{React:e,ReactDOM:r}=this.payload||{};if(!this.connected)return null;let n=this.descendants.filter(i=>i.refs.parentReact==this&&i.payload).map((i,o)=>this.getReactElement(i));return this.render({...this.props,children:n},this.payload)}getReactErrorBoundary(e=this,r=e.tagName){if(this.reactErrorBoundary)return this.reactErrorBoundary;let{React:n,ReactDOM:i}=e.payload||{};return this.reactErrorBoundary||(this.reactErrorBoundary=class extends n.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromError(s){return{error:s}}componentDidCatch(s,a){console.error(`FEAAS: ${e.tagName} Error:`,s,a),e.onError(s,"react")}render(){if(!this.state.error)return this.props.children}})}getReactElement(e=this,r){let{React:n,ReactDOM:i}=e.payload||{},o=this.getReactErrorBoundary(),s=this.getReactWrapper(e);return n.createElement(o,{key:e.tagName+"-"+e.getUID(),slot:e.getAttribute("slot")},n.createElement(s,null))}getReactWrapper(e=this,r=e.tagName){if(e.reactWrapper)return e.reactWrapper;let{React:n,ReactDOM:i}=e.payload||{};return e.reactWrapper=o=>{if(e.render){let[s,a]=n.useReducer(l=>l+1,0);return e.forceUpdateReact=a,i.createPortal(n.createElement(n.Fragment,null,e.invokeReactRendering()),e.getReactRootElement())}else return e.update()},Object.assign(e.reactWrapper,{key:e.tagName+"-"+e.getUID(),displayName:r}),e.reactWrapper}getUID(){return this.uid||(this.uid=String(Math.random()))}getShadowRoot(){return this.shadowRoot||this.attachShadow({mode:"open"}),this.shadowRoot}getReactRootElement(){return this.useShadowRoot?this.getShadowRoot():this.getRoot()}set(e){try{this.scheduleRender(),this.overrides={...this.overrides,...e},this.props={...this.getProps(),...this.overrides};for(var r in this.props){let n=this.props[r],i=r.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();n==null||n===this.defaultProps[r]?this.removeAttribute(i):(typeof n=="string"||typeof n=="number"||typeof n=="boolean")&&this.getAttribute(i)!=String(n)&&this.setAttribute(i,String(n))}}catch(n){this.whenRendered.reject(n),this.onError(n,"set")}return this}import(e){return import( /*@vite-ignore*/ /* webpackIgnore: true */ e)}scheduleRender(){this.nextRender==null&&(this.whenRendered=this.whenRendered.restart()),cancelAnimationFrame(this.nextRender),this.nextRender=requestAnimationFrame(()=>{this.nextRender=null,this.advance().catch(e=>{})})}formatURL(e,r){return typeof e=="string"&&e.match(/^\/[^\/]/)?r+e:e}getContextAttribute(e,r=this){for(var n=this;n=n.parentElement||(n.parentNode instanceof ShadowRoot?n.parentNode.host:null);)if(n.getAttribute(e)!=null)return n.getAttribute(e);return this.getAttribute(e)}static register(e,r){r==null&&(r=typeof window!="undefined"?window:null),r!=null&&r.customElements.get(e)||r.customElements.define(e,this)}};var x=class extends v{load(){return Promise.all([import( /*@vite-ignore*/ /* webpackIgnore: true */ "https://cdn.skypack.dev/react"),import( /*@vite-ignore*/ /* webpackIgnore: true */ "https://cdn.skypack.dev/react-dom")]).then(([e,r])=>({React:e,ReactDOM:r}))}render({},{React:e}){return e.createElement(e.Fragment,null)}},j=class extends x{constructor(){super(...arguments),this.useShadowRoot=!0}getProps(){return{counter:parseFloat(this.getAttribute("counter"))}}render({counter:e},{React:r}){let[n,i]=r.useState(0);return r.useEffect(()=>{i(o=>o+1)},[e]),r.createElement(r.Fragment,null,r.createElement("p",null,"Rendering attribute: ",e),r.createElement("p",null,"Triggered updates: ",n))}};j.observedAttributes=["counter"];var et=St(require("vm"),1),{hasOwnProperty:m}=Object.prototype;function S(t,e){return t=t.slice(),t.push(e),t}function q(t,e){return e=e.slice(),e.unshift(t),e}var K=class extends Error{constructor(e){super('JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'),this.avoidNew=!0,this.value=e,this.name="NewError"}};function f(t,e,r,n,i){if(!(this instanceof f))try{return new f(t,e,r,n,i)}catch(s){if(!s.avoidNew)throw s;return s.value}typeof t=="string"&&(i=n,n=r,r=e,e=t,t=null);let o=t&&typeof t=="object";if(t=t||{},this.json=t.json||r,this.path=t.path||e,this.resultType=t.resultType||"value",this.flatten=t.flatten||!1,this.wrap=m.call(t,"wrap")?t.wrap:!0,this.sandbox=t.sandbox||{},this.preventEval=t.preventEval||!1,this.parent=t.parent||null,this.parentProperty=t.parentProperty||null,this.callback=t.callback||n||null,this.otherTypeCallback=t.otherTypeCallback||i||function(){throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.")},t.autostart!==!1){let s={path:o?t.path:e};o?"json"in t&&(s.json=t.json):s.json=r;let a=this.evaluate(s);if(!a||typeof a!="object")throw new K(a);return a}}f.prototype.evaluate=function(t,e,r,n){let i=this.parent,o=this.parentProperty,{flatten:s,wrap:a}=this;if(this.currResultType=this.resultType,this.currPreventEval=this.preventEval,this.currSandbox=this.sandbox,r=r||this.callback,this.currOtherTypeCallback=n||this.otherTypeCallback,e=e||this.json,t=t||this.path,t&&typeof t=="object"&&!Array.isArray(t)){if(!t.path&&t.path!=="")throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().');if(!m.call(t,"json"))throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().');({json:e}=t),s=m.call(t,"flatten")?t.flatten:s,this.currResultType=m.call(t,"resultType")?t.resultType:this.currResultType,this.currSandbox=m.call(t,"sandbox")?t.sandbox:this.currSandbox,a=m.call(t,"wrap")?t.wrap:a,this.currPreventEval=m.call(t,"preventEval")?t.preventEval:this.currPreventEval,r=m.call(t,"callback")?t.callback:r,this.currOtherTypeCallback=m.call(t,"otherTypeCallback")?t.otherTypeCallback:this.currOtherTypeCallback,i=m.call(t,"parent")?t.parent:i,o=m.call(t,"parentProperty")?t.parentProperty:o,t=t.path}if(i=i||null,o=o||null,Array.isArray(t)&&(t=f.toPathString(t)),!t&&t!==""||!e)return;let l=f.toPathArray(t);l[0]==="$"&&l.length>1&&l.shift(),this._hasParentSelector=null;let c=this._trace(l,e,["$"],i,o,r).filter(function(d){return d&&!d.isParentSelector});return c.length?!a&&c.length===1&&!c[0].hasArrExpr?this._getPreferredOutput(c[0]):c.reduce((d,p)=>{let h=this._getPreferredOutput(p);return s&&Array.isArray(h)?d=d.concat(h):d.push(h),d},[]):a?[]:void 0};f.prototype._getPreferredOutput=function(t){let e=this.currResultType;switch(e){case"all":{let r=Array.isArray(t.path)?t.path:f.toPathArray(t.path);return t.pointer=f.toPointer(r),t.path=typeof t.path=="string"?t.path:f.toPathString(t.path),t}case"value":case"parent":case"parentProperty":return t[e];case"path":return f.toPathString(t[e]);case"pointer":return f.toPointer(t.path);default:throw new TypeError("Unknown result type")}};f.prototype._handleCallback=function(t,e,r){if(e){let n=this._getPreferredOutput(t);t.path=typeof t.path=="string"?t.path:f.toPathString(t.path),e(n,r,t)}};f.prototype._trace=function(t,e,r,n,i,o,s,a){let l;if(!t.length)return l={path:r,value:e,parent:n,parentProperty:i,hasArrExpr:s},this._handleCallback(l,o,"value"),l;let c=t[0],d=t.slice(1),p=[];function h(u){Array.isArray(u)?u.forEach(y=>{p.push(y)}):p.push(u)}if((typeof c!="string"||a)&&e&&m.call(e,c))h(this._trace(d,e[c],S(r,c),e,c,o,s));else if(c==="*")this._walk(e,u=>{h(this._trace(d,e[u],S(r,u),e,u,o,!0,!0))});else if(c==="..")h(this._trace(d,e,r,n,i,o,s)),this._walk(e,u=>{typeof e[u]=="object"&&h(this._trace(t.slice(),e[u],S(r,u),e,u,o,!0))});else{if(c==="^")return this._hasParentSelector=!0,{path:r.slice(0,-1),expr:d,isParentSelector:!0};if(c==="~")return l={path:S(r,c),value:i,parent:n,parentProperty:null},this._handleCallback(l,o,"property"),l;if(c==="$")h(this._trace(d,e,r,null,null,o,s));else if(/^(-?\d*):(-?\d*):?(\d*)$/u.test(c))h(this._slice(c,d,e,r,n,i,o));else if(c.indexOf("?(")===0){if(this.currPreventEval)throw new Error("Eval [?(expr)] prevented in JSONPath expression.");let u=c.replace(/^\?\((.*?)\)$/u,"$1");this._walk(e,y=>{this._eval(u,e[y],y,r,n,i)&&h(this._trace(d,e[y],S(r,y),e,y,o,!0))})}else if(c[0]==="("){if(this.currPreventEval)throw new Error("Eval [(expr)] prevented in JSONPath expression.");h(this._trace(q(this._eval(c,e,r[r.length-1],r.slice(0,-1),n,i),d),e,r,n,i,o,s))}else if(c[0]==="@"){let u=!1,y=c.slice(1,-2);switch(y){case"scalar":(!e||!["object","function"].includes(typeof e))&&(u=!0);break;case"boolean":case"string":case"undefined":case"function":typeof e===y&&(u=!0);break;case"integer":Number.isFinite(e)&&!(e%1)&&(u=!0);break;case"number":Number.isFinite(e)&&(u=!0);break;case"nonFinite":typeof e=="number"&&!Number.isFinite(e)&&(u=!0);break;case"object":e&&typeof e===y&&(u=!0);break;case"array":Array.isArray(e)&&(u=!0);break;case"other":u=this.currOtherTypeCallback(e,r,n,i);break;case"null":e===null&&(u=!0);break;default:throw new TypeError("Unknown value type "+y)}if(u)return l={path:r,value:e,parent:n,parentProperty:i},this._handleCallback(l,o,"value"),l}else if(c[0]==="`"&&e&&m.call(e,c.slice(1))){let u=c.slice(1);h(this._trace(d,e[u],S(r,u),e,u,o,s,!0))}else if(c.includes(",")){let u=c.split(",");for(let y of u)h(this._trace(q(y,d),e,r,n,i,o,!0))}else!a&&e&&m.call(e,c)&&h(this._trace(d,e[c],S(r,c),e,c,o,s,!0))}if(this._hasParentSelector)for(let u=0;u<p.length;u++){let y=p[u];if(y&&y.isParentSelector){let A=this._trace(y.expr,e,y.path,n,i,o,s);if(Array.isArray(A)){p[u]=A[0];let C=A.length;for(let w=1;w<C;w++)u++,p.splice(u,0,A[w])}else p[u]=A}}return p};f.prototype._walk=function(t,e){if(Array.isArray(t)){let r=t.length;for(let n=0;n<r;n++)e(n)}else t&&typeof t=="object"&&Object.keys(t).forEach(r=>{e(r)})};f.prototype._slice=function(t,e,r,n,i,o,s){if(!Array.isArray(r))return;let a=r.length,l=t.split(":"),c=l[2]&&Number.parseInt(l[2])||1,d=l[0]&&Number.parseInt(l[0])||0,p=l[1]&&Number.parseInt(l[1])||a;d=d<0?Math.max(0,d+a):Math.min(a,d),p=p<0?Math.max(0,p+a):Math.min(a,p);let h=[];for(let u=d;u<p;u+=c)this._trace(q(u,e),r,n,i,o,s,!0).forEach(A=>{h.push(A)});return h};f.prototype._eval=function(t,e,r,n,i,o){this.currSandbox._$_parentProperty=o,this.currSandbox._$_parent=i,this.currSandbox._$_property=r,this.currSandbox._$_root=this.json,this.currSandbox._$_v=e;let s=t.includes("@path");s&&(this.currSandbox._$_path=f.toPathString(n.concat([r])));let a="script:"+t;if(!f.cache[a]){let l=t.replace(/@parentProperty/gu,"_$_parentProperty").replace(/@parent/gu,"_$_parent").replace(/@property/gu,"_$_property").replace(/@root/gu,"_$_root").replace(/@([.\s)[])/gu,"_$_v$1");s&&(l=l.replace(/@path/gu,"_$_path")),f.cache[a]=new this.vm.Script(l)}try{return f.cache[a].runInNewContext(this.currSandbox)}catch(l){throw new Error("jsonPath: "+l.message+": "+t)}};f.cache={};f.toPathString=function(t){let e=t,r=e.length,n="$";for(let i=1;i<r;i++)/^(~|\^|@.*?\(\))$/u.test(e[i])||(n+=/^[0-9*]+$/u.test(e[i])?"["+e[i]+"]":"['"+e[i]+"']");return n};f.toPointer=function(t){let e=t,r=e.length,n="";for(let i=1;i<r;i++)/^(~|\^|@.*?\(\))$/u.test(e[i])||(n+="/"+e[i].toString().replace(/~/gu,"~0").replace(/\//gu,"~1"));return n};f.toPathArray=function(t){let{cache:e}=f;if(e[t])return e[t].concat();let r=[],i=t.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/gu,";$&;").replace(/[['](\??\(.*?\))[\]']/gu,function(o,s){return"[#"+(r.push(s)-1)+"]"}).replace(/\[['"]([^'\]]*)['"]\]/gu,function(o,s){return"['"+s.replace(/\./gu,"%@%").replace(/~/gu,"%%@@%%")+"']"}).replace(/~/gu,";~;").replace(/['"]?\.['"]?(?![^[]*\])|\[['"]?/gu,";").replace(/%@%/gu,".").replace(/%%@@%%/gu,"~").replace(/(?:;)?(\^+)(?:;)?/gu,function(o,s){return";"+s.split("").join(";")+";"}).replace(/;;;|;;/gu,";..;").replace(/;$|'?\]|'$/gu,"").split(";").map(function(o){let s=o.match(/#(\d+)/u);return!s||!s[1]?o:r[s[1]]});return e[t]=i,e[t].concat()};f.prototype.vm=et.default;function rt(t){return t.replace(/(\[[^\]\[]+\]|\.\*)$/g,"")}function Y(t){return rt(t)+".*"}function B(t,e,r=!1,n=t){var i=e;let o=Object.keys(t).sort((a,l)=>l.length-a.length);for(let a of o)if(e.startsWith(a)){if(a==e){if(r)return t[a];continue}i=e.substring(a.length+1),n=t[a];break}var s=f({path:i,json:n});return Array.isArray(s)&&(s==null?void 0:s.length)==0&&(s=[i.replace(/^.*?\./,"_."),i.replace(/^.*?\./,""),i.replace(/^([^.]+).*?\.\$\./,"$1."),i.replace(/^.*?\.\$\./,"_."),i.replace(/^.*?\.\$\./,""),i.replace(/^[^.]+$/,"_")].filter((a,l,c)=>c.indexOf(a)===l).reduce((a,l)=>a.length>0?a:f({path:l,json:n}),[])),r&&Array.isArray(s)?s[0]:s}function G(t,e={},r){return r?`<${r}${Object.entries(e).map(([n,i])=>i!=null&&` ${n}="${i}"`).filter(Boolean).join("")}>${R(t)}</${r}>`.replace(/^<([a-z0-9][^>]*)><\/[^>]+>$/,"<$1 />"):R(t)}function R(t){var e;if(Array.isArray(t))return t.map(R).join(`
2
+ `).trim();if(typeof t=="string")return t;if(t==null)return"";switch(t.type){case"heading":let{level:r,...n}=t.attrs;return G(t.content,n,"h"+r);case"text":return(t.marks||[]).reduce((i,o)=>G(i,o.attrs,{link:"a",bold:"strong",italic:"em",strike:"s",underline:"u"}[o.type]),(e=t.text)===null||e===void 0?void 0:e.replace(/\s+/," "));default:return G(t.content||t.text,t.attrs,{bulletList:"ul",orderedList:"ol",listItem:"li",horizontalRule:"hr",paragraph:"p",codeBlock:"code",blockquote:"blockquote"}[t.type])}}function nt(t){let e=new t.ownerDocument.defaultView.MutationObserver(r=>{r.forEach(n=>{let i=n.target,o=i.getAttribute("data-embed-src");o&&O(i,o),n.addedNodes&&n.addedNodes.forEach(s=>{s.nodeType==1&&it(s,!1)})})});return e.observe(t,{attributes:!0,subtree:!0,childList:!0}),e}function it(t,e=!0){let r=t.querySelectorAll("[data-embed-src]");for(var n=0;n<r.length;n++){let i=r[n];O(i,i.getAttribute("data-embed-src"))}if(e)return nt(t)}function O(t,e){for(var r=t;r;r=r.parentElement)if(!r.parentElement){let i=r.querySelectorAll("script");for(var n=0;n<i.length;n++)if(i[n].getAttribute("src")==e)return!0;r.tagName=="HTML"&&(r=r.querySelector("head")||r);let o=r.ownerDocument.createElement("script");o.type="module",o.src=e,r.appendChild(o);break}}function st(t){let e=t.getAttribute("data-path-scope");for(var r=0,n=t;n=n.previousElementSibling;)n.getAttribute("data-path-scope")==e&&r++;return r}function xt(t,e,r){let n=t.getAttribute("data-path-scope");if(n==null)return;var i=st(t);if(i!=0)return;let o=t.parentElement;if(o!=null){e==0?t.setAttribute("hidden","hidden"):t.getAttribute("hidden")!=null&&t.removeAttribute("hidden");for(var s=i+1,a=t,l=t;l=l.nextElementSibling;)l.getAttribute("data-path-scope")==n&&(s++,a=l);for(var c=s;c<e;c++)o.insertBefore(a.cloneNode(!0),a.nextElementSibling);for(var c=Math.max(1,e);c<s;c++)a=a.previousElementSibling,o.removeChild(a.nextElementSibling)}}function P(t,e,r,n){var i;if(t){var o=t;(r==null?void 0:r.type)=="doc"&&Array.isArray(r.content)&&(r=R(r)),n!=null&&n.processValue&&(r=n==null?void 0:n.processValue(t,e,r));var s=e.replace("data-path-","");if(e=="data-path-src")o=t.tagName=="IMG"?t:t.querySelector("img, video");else if(e=="data-path-href")o=t.querySelector("a")||t.closest("a");else if(e=="data-path-alt")o=t.querySelector("img, picture");else if(e=="data-path-hidden")r=r?null:!0;else if(e=="data-path"||e=="data-embed-html"||e=="html")s="innerHTML";else if(e=="data-embed-src")O(t,r);else if(e=="data-path-attributes"){let p=((i=t.getAttribute("data-attributes-keys"))===null||i===void 0?void 0:i.split(",").filter(Boolean))||[];if(!Array.isArray(r))for(var a in r){var l=r[a];P(t,a,typeof l=="object"&&l?JSON.stringify(l):l,n)}for(var c=0;c<p.length;c++)(r==null||!(p[c]in r))&&P(t,p[c],null,n);P(t,"data-attributes-keys",Object.keys(r||{}).join(","));return}if(typeof r=="boolean"&&(r=r?"":null),!!o){var d=String(t.getAttribute("data-path-placeholder")||o[s]);r!=null?s=="innerHTML"?o.innerHTML!=r&&(o.innerHTML=r):o.getAttribute(s)!=r&&o.setAttribute(s,r):s=="innerHTML"?o.innerHTML=d:o.removeAttribute(s)}}}var ot=["data-attributes-keys","data-path-attributes","data-path-scope"];function b(t,e,r,n){var i,o,s;let a=t;if(n||(e=((i=r==null?void 0:r.processData)===null||i===void 0?void 0:i.call(r,a,e))||e),a.nodeType==1){let d=a.getAttribute("data-path-scope");if(d){let h=st(a),u=B(e,d,!1)||[];h==0&&xt(a,((o=r==null?void 0:r.shouldRepeat)===null||o===void 0?void 0:o.call(r,a,u))===!1?1:u.length,r),e={...e,[Y(d)]:u[h]}}let p=Array.prototype.slice.call(a.attributes).sort((h,u)=>ot.indexOf(h.name)-ot.indexOf(u.name));for(var l=0;l<p.length;l++){let{name:h,value:u}=p[l];h.startsWith("data-path")&&h!="data-path-scope"&&P(a,h,B(e,u,!0),r),h=="data-embed-src"&&P(a,h,a.getAttribute(h),r)}}for(var l=0,c;c=a.childNodes[l++];)at(c)&&b(c,e,r,!0);return n||(s=r==null?void 0:r.onRender)===null||s===void 0||s.call(r,a,e),a}function at(t){return t.nodeType==1}function k(t,e,r,n){var i;let o=((i=n==null?void 0:n.processTemplate)===null||i===void 0?void 0:i.call(n,t,e,r))||e;if(t.innerHTML=o,t.classList.add("-feaas"),(t.closest(".component.feaas")||t).className.includes("-theme--"))for(var a=0,l;l=t.childNodes[a++];)at(l)&&(l.className=l.className.replace(/(\s|^)-theme--[^\s]+\s*/g,"$1"));return b(t,r,n)}function Rt(t,e,r,n=!1){var i;let o=((i=r==null?void 0:r.processTemplate)===null||i===void 0?void 0:i.call(r,null,t,e))||t;if(typeof document=="undefined"||n){let{parseHTML:s}=require("linkedom"),{document:a}=s(o);return b(a,e,r).toString()}else{let s=document.createElement("div");return s.innerHTML=o,b(s,e,r),s.innerHTML}}var lt=["initial","check","updated"],T={};function Pt(){T={}}async function V(t,e,r,n,i=T){return _({url:t,options:e,validator:r,callback:n,cache:i}).then(M).then(o=>o.response)}function ct(t,e=!1){let r=String(t).replace("?head","");var n=T[r];return!n&&!e&&(n=T[r]={phase:null,initial:E(),check:E(),updated:E(),final:E()}),n}async function _({url:t,options:e,validator:r,callback:n,cache:i},o="initial"){let s=new Date;if(i!=null){var a=ct(t);if(lt.indexOf(a.phase)>=lt.indexOf(o))var l=a[o];else a.phase=o}let c=await(l||fetch(t,e));if(!l&&a&&(c.ok?a[o].resolve(c):a[o].reject(new Error("Fetch failed"))),!c.ok)throw new Error("Fetch failed");if((r==null?void 0:r(c))===!1)throw new Error("Response is not valid");let d=new Date(c.headers.get("date"))<s||l&&o=="initial"&&(a.phase=="updated"||a.phase=="check");return await(n==null?void 0:n(c,o,d)),{url:t,options:e,isCached:d,response:c,validator:r,callback:n,cache:i}}async function M(t){let{url:e,isCached:r,options:n,validator:i,response:o,cache:s}=t;if(r){let{response:a}=await _({url:e+"?head",options:{...n,method:"HEAD",cache:"no-cache"},validator:i,cache:s},"check");if(a.headers.get("last-modified")!=o.headers.get("last-modified"))return H(t)}return t}async function H(t){return _({...t,options:{...t.options,cache:"reload"}},"updated")}var g="https://feaas.blob.core.windows.net";function L(t){let e=t.match(/^(?:(.*?)\/components)?\/?([^\/]+)\/([^\/]+)(?:\/([^\/]+)(?:\/(published|staged|saved|\d+)(?:\.html?)?)?)?$/);if(e){var[,r,n,i,o,s]=e;return{cdn:r,library:n,component:i,version:o,revision:s}}}function kt(t){if(!t||!t.library||!t.component)throw new Error("Component requires `library` and `component` properties");return`${t.cdn&&t.cdn!=g?`${t.cdn}/components`:""}/${t.library}/${t.component}/${!t.version||t.version=="responsive"&&(!t.revision||t.revision=="published")?"":t.version}/${!t.revision||t.revision=="published"?"":t.revision}`.replace(/(^\/|\/$|\/\/)(?!.+\/components\/)/g,"")}function $t(t){return`${t.cdn&&t.cdn!=g?`${t.cdn}/styles/`:""}${t.library}/${!t.revision||t.revision=="published"?"":t.revision}`.replace(/\/$|\/\/(?!.+\/styles\/)/g,"")}function I(t){let e=t.match(/^(?:(.*?)\/styles\/)?([^\/]+)(?:\/(published|staged|saved|\d+)(?:.css)?)?$/);if(e){var[,r,n,i]=e;return{cdn:r,library:n,revision:i}}else{let o=L(t);if(o){var{cdn:r,library:n,revision:i}=o;return i!=null&&i.match(/\d/)&&(i=void 0),{cdn:r,library:n,revision:i}}}}function Z(t){return typeof t=="string"&&(t={src:t}),"src"in t&&(t={...L(t.src)}),`${t.cdn||t.hostname||g}/components/${t.library}/${t.component}/${t.version}/${t.revision||"published"}.html`}function N(t){return typeof t=="string"&&(t={src:t}),"src"in t&&(t={...I(t.src)}),`${t.cdn||t.hostname||g}/styles/${t.library}/${t.revision||"published"}.css`}async function $(t,e,r=!1){let n=a=>a.headers.get("x-ms-meta-versionDeletedAt")==null,i=a=>a.clone().text().then(e),o=await Promise.all([t.instance&&_({options:{headers:{Accept:"text/html"},credentials:"omit"},url:Z({...t,version:t.instance}),validator:n}).catch(a=>a),_({url:Z(t),validator:n}).catch(a=>a)]),s=o.find(a=>a&&"isCached"in a&&a);if(!s||s instanceof Error)throw o.find(l=>l&&l instanceof Error)||new Error("Can not fetch component");return o[0]==s&&console.log("Using fork!",o),await i(s.response),r?s:M({...s,callback:i}).catch(a=>{if(o[0]==s&&(H({...s,callback:null,validator:null}),console.log("Fork was deleted"),!(o[1]instanceof Error)))return i(o[1].response),M({...o[1],callback:i});throw a})}async function Ot(t){typeof t=="string"&&(t={src:t});var e;let{response:r}=await $(t,n=>{e=n},!0);return{...t,template:e,lastModified:r.headers.get("last-modified")}}async function W(t,e){return typeof t=="string"&&(t={src:t}),V(N(t),{headers:{Accept:"text/css"},credentials:"omit"},r=>r.headers.get("x-ms-meta-deletedAt")==null,(r,n)=>r.clone().text().then(i=>e(i,n)))}function Tt(t,e){return ut(t,e||(e=document.createElement("style"))),e}function ut(t,e){return e||(e=document.createElement("style")),W(t,(r,n)=>{e.textContent=r}).then(()=>e)}function z(t,e){var r=dt(t);if(!r)var n=ht(t);return W(t,(i,o)=>{n&&(n.textContent=i),e==null||e(i,o)}).then(()=>r||n)}function Q(t){return new Promise((e,r)=>{z(t,e).catch(r)})}function dt(t){return document.head.querySelector(`style[data-href="${N(t)}"]`)}function ht(t){let e=N(t),r=document.createElement("style");return r.setAttribute("data-href",e),document.head.appendChild(r),r}function Mt(t,e){let r=document.createElement("div");r.innerHTML=t;let n=document.createDocumentFragment();for(;r.firstChild;)n.appendChild(r.firstChild);return b(n,e),r}function Lt(t,e){return ft(t,e||(e=document.createElement("div"))),e}async function ft(t,e){return e||(e=document.createElement("div")),e.childNodes.length?b(e,t.data,t):"template"in t?k(e,t.template,t.data,t):$(t,r=>k(e,r,t.data,t)).then(()=>e)}function pt(t=this){var e,r,n,i,o,s,a,l;let c,d=t.getAttribute("src");if(d){let w=L(d);if(!w)throw new Error(`Could not parse FEAAS Component source: ${d}`);var{cdn:p,library:h,component:u,version:y,revision:A}=w}let C=t.getAttribute("data");if(C!=null&&C!="")try{c=typeof C=="string"?JSON.parse(C):{}}catch(w){}return{data:c||{},cdn:(r=(e=t.getContextAttribute("cdn"))!==null&&e!==void 0?e:p)!==null&&r!==void 0?r:g,library:(n=t.getAttribute("library"))!==null&&n!==void 0?n:h,component:(i=t.getAttribute("component"))!==null&&i!==void 0?i:u,version:(s=(o=t.getAttribute("version"))!==null&&o!==void 0?o:y)!==null&&s!==void 0?s:"responsive",revision:(l=(a=t.getAttribute("revision"))!==null&&a!==void 0?a:A)!==null&&l!==void 0?l:"published",hostname:t.getAttribute("hostname"),template:t.getAttribute("template"),instance:t.getAttribute("instance"),editable:t.getAttribute("editable")!=null,suspended:t.getAttribute("suspended")!=null,lastModified:t.getAttribute("last-modified"),withStylesheet:t.getAttribute("with-stylesheet")!="false"}}var D=class extends v{setData(e){this.set({data:e})}getProps(){return pt(this)}attributeChangedCallback(e,r,n){r!==n&&((e=="library"||e=="component"||e=="revision"||e=="version")&&(this.payload=void 0),this.needsRefresh=!0,super.attributeChangedCallback(e,r,n))}getEditor(){var e;return(e=document.querySelector("feaas-context"))===null||e===void 0?void 0:e.refs.editor}constructor(){super(),this.defaultProps={cdn:g,revision:"published",version:"responsive",withStylesheet:!0,editable:!1,suspended:!1},this.onLoad=e=>{this.payload=e,this.advance()},this.addEventListener("click",()=>{this.props.editable&&this.edit()})}edit(){let e=this.getEditor();if(e!=null&&e.setTarget(this))return e.open(),!0}getOriginal(){let e=this.getAttribute("data-path-scope");if(e){for(var r=this;(r=r.previousElementSibling)&&r.getAttribute("data-path-scope")==e;)var n=r;return n}}isReadyToLoad(){return super.isReadyToLoad()&&this.props.library!=null&&this.props.component!=null&&this.props.version!=null}async load(){if(!this.getOriginal()){if(this.props.withStylesheet)var e=Q({...this.props,revision:"published"}).then(()=>{e=null,this.payload&&this.onLoad(this.payload)});return Promise.all([e,$(this.props,r=>{this.payload=r,e||this.onLoad(r)})]).then(()=>this.payload)}}update(){if(Array.from(this.children).filter(e=>e.tagName!="BR").length>0&&!this.needsRefresh)b(this,this.props.data);else{if(this.needsRefresh=!0,this.getOriginal())return;k(this,this.payload,this.props.data)}}};D.observedAttributes=["library","component","version","revision","hostname","cdn","template","data","instance","editable","with-stylesheet"];D.register("feaas-component");function yt(t=this){return{opacity:t!=null&&t.getAttribute("opacity")?parseFloat(t==null?void 0:t.getAttribute("opacity")):1,hidden:(t==null?void 0:t.getAttribute("hidden"))!=null}}var F=class extends v{constructor(){super(...arguments),this.defaultProps={hidden:!1}}getProps(){return yt(this)}attributeChangedCallback(e,r,n){if(r!==n)return e=="hidden"&&(this.style.setProperty("display","block","important"),this.style.setProperty("transition","opacity 0.3s","important"),n?(this.style.setProperty("opacity","0","important"),this.style.pointerEvents="none"):(this.style.setProperty("opacity","1","important"),this.style.pointerEvents="all")),super.attributeChangedCallback(e,r,n)}connectedCallback(){this.payload=null,super.connectedCallback(),this.attributeChangedCallback("hidden",this.getAttribute("hidden"),this.getAttribute("hidden")),this.stylesheet=document.createElement("style"),this.stylesheet.textContent=`
3
+ #loader {
4
+ position: absolute;
5
+ top: 0;
6
+ left: 0;
7
+ right: 0;
8
+ bottom: 0;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ background: #f6f6ff;
13
+ z-index: 1000;
14
+ }
15
+ @keyframes loader-circular-track {
16
+ 0% {
17
+ stroke-dasharray: 1, 400;
18
+ stroke-dashoffset: 0;
19
+ }
20
+ 50% {
21
+ stroke-dasharray: 400, 400;
22
+ stroke-dashoffset: -100;
23
+ }
24
+ 100% {
25
+ stroke-dasharray: 400, 400;
26
+ stroke-dashoffset: -260;
27
+ }
28
+ }
29
+
30
+ @keyframes loader-circular-spinner {
31
+ 0% {
32
+ transform: rotate(0deg);
33
+ }
34
+
35
+ 100% {
36
+ transform: rotate(360deg);
37
+ }
38
+ }
39
+ #loader .spinner {
40
+ width: 48px;
41
+ height: 48px;
42
+ }
43
+ `,this.loader=document.createElement("div"),this.loader.id="loader",this.loader.innerHTML=`
44
+ <div class="spinner">
45
+ <svg
46
+ viewBox="0 0 100 100"
47
+ style="
48
+ animation: 2s linear 0s infinite normal none running loader-circular-spinner;
49
+ display: block;
50
+ width: 48px;
51
+ height: 48px;
52
+ "
53
+ >
54
+ <circle fill="transparent" cx="50" cy="50" r="42" stroke="rgba(0,0,0,0.1)" stroke-width="10px"></circle>
55
+ <circle
56
+ fill="transparent"
57
+ stroke="#5548D9"
58
+ cx="50"
59
+ cy="50"
60
+ r="42"
61
+ stroke-width="10px"
62
+ stroke-linecap="round"
63
+ style="animation: 1.5s linear 0s infinite normal none running loader-circular-track"
64
+ ></circle>
65
+ </svg>
66
+ </div>`,this.getRoot().appendChild(this.stylesheet),this.getRoot().appendChild(this.loader)}update(){this.loader.style.opacity=String(this.props.opacity)}};F.observedAttributes=["hidden","opacity"];F.register("feaas-loader");function mt(t=this){var e,r,n,i;let o=t.getAttribute("src");if(o)var{cdn:s,library:a,revision:l}=I(o);return{library:t==null?void 0:t.getContextAttribute("library"),revision:(r=(e=t==null?void 0:t.getAttribute("revision"))!==null&&e!==void 0?e:l)!==null&&r!==void 0?r:"published",cdn:(i=(n=t==null?void 0:t.getContextAttribute("cdn"))!==null&&n!==void 0?n:t==null?void 0:t.getContextAttribute("hostname"))!==null&&i!==void 0?i:g}}var J=class extends v{constructor(){super(...arguments),this.onLoad=e=>{this.payload=e,this.advance()}}getProps(){return mt(this)}isReadyToLoad(){return this.props.library!=null&&this.props.revision!=null&&this.props.cdn!=null}load(){return z(this.props,this.onLoad)}};J.register("feaas-stylesheet");var X;typeof window!="undefined"&&(window.FEAASElement=x,(X=window.FEAASLoading)!==null&&X!==void 0||(window.FEAASLoading=Promise.resolve()));0&&(module.exports={Base,Component,ComponentProps,DEFAULT_CDN_URL,FEAASBase,FEAASComponent,FEAASComponentsProps,FEAASLoader,FEAASLoaderProps,FEAASStylesheet,FEAASStylesheetProps,JSONPath,Loader,MyComponent,Stylesheet,autoloadScripts,cleanCollectionBit,clearFetchCache,createStylesheet,fetchAndRevalidate,fetchAndRevalidateComponent,fetchAndRevalidateStylesheet,fetchBypassingCache,fetchCache,fetchComponent,fetchToValidateCache,fetchWithCacheAwareness,findStylesheet,getComponentSource,getComponentURL,getFetchCache,getStylesheetSource,getStylesheetURL,loadScript,loadStylesheet,loadStylesheetAllowStale,normalizeCollectionScope,observeDOMElement,parseComponentSource,parseStylesheetSource,queryScopes,renderComponent,renderComponentElement,renderComponentPromise,renderDOMContent,renderDOMElement,renderHTMLContent,renderStylesheet,renderStylesheetPromise,serializeCH1RichText,setDOMAttribute});
67
+ //# sourceMappingURL=headless.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["src/headless.ts", "src/utils/promise.ts", "src/components/FEAASBase.tsx", "src/components/FEAASElement.tsx", "node_modules/jsonpath-plus/dist/index-node-esm.js", "src/dom/data.ts", "src/dom/scripts.ts", "src/dom/rendering.ts", "src/fetch.ts", "src/cdn.ts", "src/dom/stylesheet.ts", "src/dom/component.ts", "src/components/FEAASComponent.tsx", "src/components/FEAASLoader.tsx", "src/components/FEAASStylesheet.tsx"],
4
+ "sourcesContent": ["/**\n * Simplified build of clientside that does not rely on any Frontend UI (like pickers). It refered from Frontend app to\n * avoid circular dependency. Regular clientside build entry point is in ui/index.ts\n */\n\nimport FEAASElement from './components/FEAASElement.js'\n\nexport * from './dom/rendering.js'\nexport * from './dom/data.js'\nexport * from './dom/scripts.js'\nexport * from './dom/stylesheet.js'\nexport * from './dom/component.js'\nexport * from './fetch.js'\nexport * from './cdn.js'\nexport * from './components/FEAASBase.js'\nexport * from './components/FEAASElement.js'\nexport * from './components/FEAASComponent.js'\nexport * from './components/FEAASLoader.js'\nexport * from './components/FEAASStylesheet.js'\n\ndeclare global {\n interface Window {\n FEAASLoading: Promise<any>\n FEAASElement: typeof FEAASElement\n }\n}\n\nif (typeof window != 'undefined') {\n window.FEAASElement = FEAASElement\n window.FEAASLoading ??= Promise.resolve()\n}\n", "export type ControlledPromise<T> = Promise<T> & {\n resolve: (...args: any) => void\n reject: (e: Error) => void\n restart: () => ControlledPromise<T>\n first: ControlledPromise<T>\n}\n\nexport function ControlledPromise<T>(onSuccess?: (result: T) => void, onFailure = (e: Error) => {}) {\n var first: ControlledPromise<T>\n const restart = () => {\n var resolve: (...args: any) => void\n var reject: (e: Error) => void\n const promise = new Promise<T>((success, failure) => {\n resolve = (value: T) => {\n onSuccess?.(value)\n success(value)\n }\n reject = failure\n })\n var controlled: ControlledPromise<T> = Object.assign(promise, {\n resolve,\n reject,\n restart,\n first\n })\n first = controlled\n\n // Avoid unhandled rejection\n controlled.catch(onFailure)\n\n return controlled\n }\n return restart()\n}\n", "import type { JSXElementConstructor, ReactElement, ReactNode } from 'react'\nimport type ReactDOMClient from 'react-dom/client'\nimport type ReactDOM from 'react-dom'\nimport type React from 'react'\nimport { ControlledPromise } from '../utils/promise.js'\n\nexport type OptionalExcept<T, K extends keyof T> = Pick<T, K> & Partial<Omit<T, K>>\n\n// Shim in case it's required in node.js environment\nvar WebComponent =\n typeof HTMLElement == 'undefined'\n ? // @ts-ignore\n typeof windowJSDOM != 'undefined'\n ? // @ts-ignore\n (windowJSDOM.HTMLElement as typeof HTMLElement)\n : (class {} as unknown as typeof HTMLElement)\n : HTMLElement\n\nexport interface ReactPayload {\n React: typeof React\n ReactDOM: typeof ReactDOM\n ReactDOMClient: typeof ReactDOMClient\n}\n/**\n * FEAASBase is a superclass for FEAAS components with optional react support.\n *\n * Initialization lifecycle:\n *\n * - `set(props)`\n * - `load() => payload`\n * - `onLoad?(payload)`\n * - `update()`\n * - `render(payload, props)`\n * - `whenRendered`\n * - - / If needs to reload, e.g. bypass cache /\n * - - `onLoad(newPayload) `\n * - - `whenRendered`\n * - `whenLoaded`\n */\nexport class FEAASBase<Props = any, Payload = any> extends WebComponent {\n static observedAttributes: string[]\n\n defaultProps = {} as Partial<Props>\n\n /** Return attributes as parsed values */\n getProps(context?: HTMLElement): any {\n return {}\n }\n\n /** Properties parsed in current tick */\n props: Props\n overrides: Props\n\n /** Timer until next tick */\n nextRender: number\n\n /** Is/was component in the dom? */\n connected = false\n\n refs: Record<string, FEAASBase> = {}\n descendants: FEAASBase[] = []\n\n /** Result of lazy loading */\n payload: Payload\n whenLoaded = ControlledPromise<Payload>((payload) => {\n this.payload = payload\n })\n\n constructor() {\n super()\n this.addEventListener('feaasMount', this)\n this.addEventListener('feaasUnmount', this)\n }\n\n /** Attaches shadow root if getShadowRootOptions any settings, or uses element itself */\n getRoot(): FEAASBase | HTMLElement | ShadowRoot {\n return this\n }\n\n /** Attribute changes trigger props parsing and schedules re-rendering */\n attributeChangedCallback(name: string, oldValue: string, newValue: string) {\n this.set()\n }\n\n /** Components parses its attributes when connected, and schedules rendeirng */\n connectedCallback() {\n this.mount()\n }\n disconnectedCallback() {\n this.unmount()\n }\n\n /**\n * Web components are initialized depth-first, making child elements render before its parents. This could here\n * attempts to avoid this and inverts the initialization logic, so that children are initialized in the context of its\n * already-initialized parents.\n *\n * FEAAS components dispatch `feaasMount` event that allows components to store references to each other. In addition\n * it allows external scripts to listen for initialization of FEAAS components\n */\n mount() {\n try {\n const parent = this.getParent() as FEAASBase\n // Allow parent component to initialize first\n if (parent && !parent.connected) return\n if (this.connected) return\n this.connected = true\n this.log('FEAAS: Mount', this.tagName, this)\n this.dispatchEvent(new Event('feaasMount', { bubbles: true, composed: true }))\n this.getElements().map((element: FEAASBase) => element.mount?.())\n this.set()\n } catch (e) {\n this.onError(e)\n }\n }\n\n log(...args: any) {\n console.log(...args)\n }\n\n /** Nothing special happens on unmount, except setting a flag */\n unmount() {\n if (!this.connected) return\n this.log('FEAAS: Unmount', this)\n this.dispatchEvent(new Event('feaasUnmount', { bubbles: true, composed: true }))\n this.connected = false\n }\n\n getParent(onlyFeaas = true) {\n for (\n var p: HTMLElement = this;\n (p = p.parentElement || ((p.parentNode instanceof ShadowRoot ? p.parentNode.host : null) as HTMLElement));\n\n ) {\n if (!onlyFeaas || p.tagName.startsWith('FEAAS-')) return p\n }\n }\n\n getElements(root: HTMLElement | ShadowRoot = this.getRoot(), onlyFeaas = true): HTMLElement[] {\n return Array.from(root.querySelectorAll('*'))\n .map(\n (el) =>\n [\n !onlyFeaas || el.tagName.startsWith('FEAAS-') ? el : null,\n el.shadowRoot ? this.getElements(el.shadowRoot, onlyFeaas) : null\n ] as HTMLElement[]\n )\n .flat()\n .filter(Boolean)\n }\n\n /** Catch-all event handler that dispatches events to callback */\n handleEvent(event: Event) {\n const target = event.composedPath()[0] as FEAASBase\n switch (event.type) {\n case 'feaasMount':\n if (target != this) this.nestedCallback(target)\n break\n case 'feaasUnmount':\n if (target != this) this.unnestedCallback(target)\n break\n }\n }\n\n /** Act on children element being removed */\n unnestedCallback(target: FEAASBase) {\n const index = this.descendants.indexOf(target)\n if (index == -1) return\n this.log('FEAAS: Unnest', this, target)\n this.descendants.splice(index, -1)\n this.refs[target.getComponentName()] = null\n if (target.refs.parent == this) target.refs.parent = null\n if (target.refs.top == this) {\n target.refs.top = target.refs.parent\n }\n }\n\n /** Act on children element being added */\n nestedCallback(target: FEAASBase): boolean | void {\n const index = this.descendants.indexOf(target)\n if (index != -1) return\n this.descendants.push(target)\n this.log('FEAAS: Nest', this, target)\n this.refs[target.getComponentName()] = target\n target.refs.top = this\n target.refs.parent ||= this\n if (target.render) {\n for (var p: FEAASBase = target.refs.parent; p; p = p.refs.parent) {\n if (p.render) {\n target.refs.parentReact ||= p\n target.refs.topReact = p\n }\n }\n }\n }\n\n getComponentName() {\n return this.tagName.replace('FEAAS-', '').toLowerCase()\n }\n\n /**\n * Check if lazy component is ready to be loaded. For example a component may stay unloaded unless certain attributes\n * are set\n */\n isReadyToLoad() {\n return this.payload === undefined && this.getAttribute('hidden') == null\n }\n\n /** Generic error handler */\n onError(error: Error, where: string = 'uncaught', handled = false) {\n const event = new CustomEvent('feaasError', { bubbles: true, composed: true, detail: error })\n this.dispatchEvent(event)\n this.whenLoaded.reject(error)\n if (!event.defaultPrevented && !handled) {\n this.whenRendered.reject(error)\n try {\n this.unmount()\n } catch (e) {}\n return true\n }\n return false\n }\n\n shouldUpdateOnLoad() {\n return true\n }\n\n onLoad: (payload: Payload) => void\n\n /** Load lazy component & render */\n async advance() {\n try {\n if (this.payload === undefined) {\n if (!this.isReadyToLoad()) return\n this.payload = null\n this.dispatchEvent(new Event('feaasLoad', { bubbles: true, composed: true }))\n const loaded = await this.load().catch((e) => {\n this.payload = undefined\n throw e\n })\n\n this.whenLoaded.resolve(loaded)\n\n // Allow component to handle the post-loading\n if (this.onLoad) {\n return\n }\n } else if (this.payload == null) {\n return\n }\n this.flush()\n this.whenRendered.resolve(this)\n } catch (e) {\n this.onError(e)\n }\n }\n\n flush() {\n const flushSync = (this.payload as ReactPayload)?.ReactDOM?.flushSync\n if (flushSync) {\n flushSync(() => this.update())\n } else {\n this.update()\n }\n }\n\n /** Invoke preloading logic that needs to finish before component can render */\n load() {\n return Promise.resolve(null)\n }\n\n /**\n * Component-specific logic that updates the DOM. Default render implementation assume react rendering, in that case\n * the component needs to provide React & ReactDOM references in its payload. Web component redefine its render to not\n * use react at all\n */\n update(): any {\n //this.log('FEAAS: React', this.tagName, this.payload)\n if (this.payload == null) return\n if (!this.render) return\n const { React, ReactDOM, ReactDOMClient } = (this.payload as ReactPayload) || {}\n if (!React) throw new Error(`${this.tagName}: React is not present in payload`)\n if (!ReactDOM) throw new Error(`${this.tagName}: ReactDOM is not present in payload`)\n if (!this.refs.topReact && !this.forceUpdateReact) {\n if (ReactDOMClient) {\n this.reactRoot ||= ReactDOMClient.createRoot(this.getReactRootElement())\n this.reactRoot.render(this.getReactElement())\n } else {\n ReactDOM.render(this.getReactElement(), this.getReactRootElement())\n }\n } else if (this.forceUpdateReact) {\n this.forceUpdateReact?.()\n } else {\n this.refs.topReact.forceUpdateReact?.()\n }\n }\n\n invokeReactRendering(): ReactNode {\n const { React, ReactDOM } = (this.payload as ReactPayload) || {}\n if (!this.connected) return null\n const children = this.descendants\n .filter((r) => {\n return r.refs.parentReact == this && r.payload\n })\n .map((child: FEAASBase<any, any>, index) => {\n return this.getReactElement(child)\n })\n return this.render({ ...this.props, children }, this.payload)\n }\n\n reactWrapper: React.FunctionComponent\n reactErrorBoundary: new (...args: any) => React.Component<{ children: any; slot: string }, { error: Error }>\n reactRoot: ReactDOMClient.Root\n\n getReactErrorBoundary(target: FEAASBase = this, displayName = target.tagName) {\n if (this.reactErrorBoundary) return this.reactErrorBoundary\n\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n return (this.reactErrorBoundary ||= class FEAASErrorBoundary extends React.Component<\n { children: any; slot: string },\n { error: Error }\n > {\n state = {\n error: null as Error\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error: error }\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n console.error(`FEAAS: ${target.tagName} Error:`, error, errorInfo)\n target.onError(error, 'react')\n //this.setState({ error: error })\n }\n\n render() {\n if (this.state.error) {\n // target.classList.add('feaas-error')\n return\n //return <h1>There seems to be a problem.</h1>\n }\n //if (target.classList.contains('feaas-error')) target.classList.remove('feaas-error')\n\n return this.props.children\n }\n })\n }\n\n getReactElement(target: FEAASBase = this, props?: any) {\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n const ErrorBoundary = this.getReactErrorBoundary()\n const Wrapper = this.getReactWrapper(target)\n return (\n <ErrorBoundary key={target.tagName + '-' + target.getUID()} slot={target.getAttribute('slot')}>\n <Wrapper />\n </ErrorBoundary>\n )\n }\n\n getReactWrapper(target: FEAASBase = this, displayName = target.tagName) {\n if (target.reactWrapper) return target.reactWrapper\n\n const { React, ReactDOM } = (target.payload as ReactPayload) || {}\n\n target.reactWrapper = (props?: any) => {\n if (target.render) {\n const [value, forceUpdateReact] = React.useReducer((r) => r + 1, 0)\n target.forceUpdateReact = forceUpdateReact\n return ReactDOM.createPortal(<>{target.invokeReactRendering()}</>, target.getReactRootElement())\n } else {\n return target.update()\n }\n }\n\n Object.assign(target.reactWrapper, {\n key: target.tagName + '-' + target.getUID(),\n displayName: displayName\n })\n\n return target.reactWrapper\n }\n\n uid: string\n getUID() {\n return (this.uid ||= String(Math.random()))\n }\n forceUpdateReact: (node?: ReactNode) => void\n\n /**\n * Render method that is pretty much the same as React Functional component, but with extra second argument for\n * payload (usually result of import, it is expected to have React in scope).\n */\n render?(props: React.PropsWithChildren<Props>, payload: Payload): ReactNode | ReactElement\n\n useShadowRoot: boolean\n getShadowRoot() {\n if (!this.shadowRoot) {\n this.attachShadow({ mode: 'open' })\n }\n return this.shadowRoot\n }\n getReactRootElement(): HTMLElement | ShadowRoot {\n return this.useShadowRoot ? this.getShadowRoot() : this.getRoot()\n }\n\n /** Set props and return values on new next tick */\n set(overrides?: Partial<Props>) {\n try {\n this.scheduleRender()\n this.overrides = {\n ...this.overrides,\n ...overrides\n }\n this.props = {\n ...this.getProps(),\n ...this.overrides\n }\n for (var property in this.props) {\n const value = this.props[property]\n const attribute = property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n if (value == null || value === this.defaultProps[property as keyof typeof this.defaultProps]) {\n this.removeAttribute(attribute)\n } else if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') {\n if (this.getAttribute(attribute) != String(value)) this.setAttribute(attribute, String(value))\n }\n }\n } catch (e) {\n this.whenRendered.reject(e)\n this.onError(e, 'set')\n }\n return this\n }\n\n import(path: string): Promise<Payload> {\n return import(/* @vite-ignore */ /* webpackIgnore: true */ path)\n }\n\n /** Schedule rendering on next tick, to batch multiple attribute changes */\n initialized: boolean\n whenRendered = ControlledPromise<this>(\n () => (this.initialized = true),\n () => cancelAnimationFrame(this.nextRender)\n )\n scheduleRender() {\n if (this.nextRender == null) {\n this.whenRendered = this.whenRendered.restart()\n }\n cancelAnimationFrame(this.nextRender)\n this.nextRender = requestAnimationFrame(() => {\n this.nextRender = null\n this.advance().catch((e) => {})\n })\n }\n\n formatURL(src: string, hostname: string) {\n if (typeof src == 'string' && src.match(/^\\/[^\\/]/)) {\n return hostname + src\n } else {\n return src\n }\n }\n\n getContextAttribute(name: string, element = this) {\n for (\n var p: HTMLElement = this;\n (p = p.parentElement || ((p.parentNode instanceof ShadowRoot ? p.parentNode.host : null) as HTMLElement));\n\n ) {\n if (p.getAttribute(name) != null) return p.getAttribute(name)\n }\n return this.getAttribute(name)\n }\n\n static register(tagName: string, win?: Window) {\n if (win == null) win = typeof window != 'undefined' ? window : null\n if (!win?.customElements.get(tagName)) {\n win.customElements.define(tagName, this)\n }\n }\n}\n\nexport { FEAASBase as Base }\n", "import type { ReactNode, ReactElement, JSXElementConstructor, PropsWithChildren } from 'react'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport type ReactModules = {\n React: typeof React\n ReactDOM: typeof ReactDOM\n}\nexport type ReactJSX = ReactNode | ReactElement<any, string | JSXElementConstructor<any>>\nexport type FEAASReactRender<P> = {\n (this: FEAASElement<P>, props: P, payload: ReactModules): ReactJSX\n}\n\nexport default class FEAASElement<P> extends FEAASBase<P, ReactModules> {\n load() {\n return Promise.all([\n // @ts-ignore @webpack-ignore\n import('https://cdn.skypack.dev/react'),\n // @ts-ignore\n import('https://cdn.skypack.dev/react-dom')\n ]).then(([React, ReactDOM]) => {\n return { React, ReactDOM }\n })\n }\n\n render({}: P, { React }: ReactModules): ReactJSX {\n return <></>\n }\n}\n\ninterface MyComponentProps {\n counter: string\n}\n\nexport class MyComponent extends FEAASElement<MyComponentProps> {\n // will re-render component if any of these attributes have changed\n static observedAttributes = ['counter']\n\n useShadowRoot = true\n\n // parse attributes from web component to react-ready form\n getProps() {\n return {\n counter: parseFloat(this.getAttribute('counter'))\n }\n }\n\n // First argument is props, second arguments is React stuff\n // Destructuring React is important for JSX to work\n render({ counter }: MyComponentProps, { React }: ReactModules): ReactJSX {\n const [updates, setUpdates] = React.useState(0)\n React.useEffect(() => {\n setUpdates((u) => u + 1)\n }, [counter])\n return (\n <>\n <p>Rendering attribute: {counter}</p>\n <p>Triggered updates: {updates}</p>\n </>\n )\n }\n}\n", "import vm from 'vm';\n\nconst {\n hasOwnProperty: hasOwnProp\n} = Object.prototype;\n/**\n * @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject\n */\n\n/**\n * @typedef {any} AnyItem\n */\n\n/**\n * @typedef {any} AnyResult\n */\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {AnyItem} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\n\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {AnyItem} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\n\n\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\n\n\nclass NewError extends Error {\n /**\n * @param {AnyResult} value The evaluated scalar value\n */\n constructor(value) {\n super('JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n this.avoidNew = true;\n this.value = value;\n this.name = 'NewError';\n }\n\n}\n/**\n* @typedef {PlainObject} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {PlainObject|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|PlainObject} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {PlainObject|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @typedef {PlainObject} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {PlainObject} [sandbox={}]\n * @property {boolean} [preventEval=false]\n * @property {PlainObject|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\n\n\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n\n return e.value;\n }\n }\n\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n\n const optObj = opts && typeof opts === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.preventEval = opts.preventEval || false;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n\n if (opts.autostart !== false) {\n const args = {\n path: optObj ? opts.path : expr\n };\n\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n\n const ret = this.evaluate(args);\n\n if (!ret || typeof ret !== 'object') {\n throw new NewError(ret);\n }\n\n return ret;\n }\n} // PUBLIC METHODS\n\n\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n let currParent = this.parent,\n currParentProperty = this.parentProperty;\n let {\n flatten,\n wrap\n } = this;\n this.currResultType = this.resultType;\n this.currPreventEval = this.preventEval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n\n if (expr && typeof expr === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n if (!hasOwnProp.call(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n\n ({\n json\n } = expr);\n flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;\n this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;\n callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n\n const exprList = JSONPath.toPathArray(expr);\n\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n\n this._hasParentSelector = null;\n\n const result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n\n return result.reduce((rslt, ea) => {\n const valOrPath = this._getPreferredOutput(ea);\n\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n\n return rslt;\n }, []);\n}; // PRIVATE METHODS\n\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n const resultType = this.currResultType;\n\n switch (resultType) {\n case 'all':\n {\n const path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n\n default:\n throw new TypeError('Unknown result type');\n }\n};\n\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n const preferredOutput = this._getPreferredOutput(fullRetObj);\n\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line n/callback-return\n\n callback(preferredOutput, type, fullRetObj);\n }\n};\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {PlainObject|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\n\n\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n // No expr to follow? return path and value as the result of\n // this trace branch\n let retObj;\n\n if (!expr.length) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName,\n hasArrExpr\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n }\n\n const loc = expr[0],\n x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n\n const ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(t => {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n\n if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(val, m => {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n\n this._walk(val, m => {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (typeof val[m] === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(this._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));\n }\n }); // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent,\n parentProperty: null\n };\n\n this._handleCallback(retObj, callback, 'property');\n\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(-?\\d*):(-?\\d*):?(\\d*)$/u.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currPreventEval) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n\n const safeLoc = loc.replace(/^\\?\\((.*?)\\)$/u, '$1');\n\n this._walk(val, m => {\n if (this._eval(safeLoc, val[m], m, path, parent, parentPropName)) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currPreventEval) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n } // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n\n\n addRet(this._trace(unshift(this._eval(loc, val, path[path.length - 1], path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n let addType = false;\n const valueType = loc.slice(1, -2);\n\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(typeof val)) {\n addType = true;\n }\n\n break;\n\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n // eslint-disable-next-line valid-typeof\n if (typeof val === valueType) {\n addType = true;\n }\n\n break;\n\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n\n break;\n\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n\n break;\n\n case 'object':\n // eslint-disable-next-line valid-typeof\n if (val && typeof val === valueType) {\n addType = true;\n }\n\n break;\n\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n\n break;\n\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n\n case 'null':\n if (val === null) {\n addType = true;\n }\n\n break;\n\n /* c8 ignore next 2 */\n\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n\n if (addType) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName\n };\n\n this._handleCallback(retObj, callback, 'value');\n\n return retObj;\n } // `-escaped property\n\n } else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {\n const locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n const parts = loc.split(',');\n\n for (const part of parts) {\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n } // simple case--directly follow property\n\n } else if (!literalPriority && val && hasOwnProp.call(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n } // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n\n\n if (this._hasParentSelector) {\n for (let t = 0; t < ret.length; t++) {\n const rett = ret[t];\n\n if (rett && rett.isParentSelector) {\n const tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n const tl = tmp.length;\n\n for (let tt = 1; tt < tl; tt++) {\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n\n return ret;\n};\n\nJSONPath.prototype._walk = function (val, f) {\n if (Array.isArray(val)) {\n const n = val.length;\n\n for (let i = 0; i < n; i++) {\n f(i);\n }\n } else if (val && typeof val === 'object') {\n Object.keys(val).forEach(m => {\n f(m);\n });\n }\n};\n\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n\n const len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n let start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n const ret = [];\n\n for (let i = start; i < end; i += step) {\n const tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true); // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n\n\n tmp.forEach(t => {\n ret.push(t);\n });\n }\n\n return ret;\n};\n\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n this.currSandbox._$_parentProperty = parentPropName;\n this.currSandbox._$_parent = parent;\n this.currSandbox._$_property = _vname;\n this.currSandbox._$_root = this.json;\n this.currSandbox._$_v = _v;\n const containsPath = code.includes('@path');\n\n if (containsPath) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n }\n\n const scriptCacheKey = 'script:' + code;\n\n if (!JSONPath.cache[scriptCacheKey]) {\n let script = code.replace(/@parentProperty/gu, '_$_parentProperty').replace(/@parent/gu, '_$_parent').replace(/@property/gu, '_$_property').replace(/@root/gu, '_$_root').replace(/@([.\\s)[])/gu, '_$_v$1');\n\n if (containsPath) {\n script = script.replace(/@path/gu, '_$_path');\n }\n\n JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);\n }\n\n try {\n return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);\n } catch (e) {\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n}; // PUBLIC CLASS PROPERTIES AND METHODS\n// Could store the cache object itself\n\n\nJSONPath.cache = {};\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\n\nJSONPath.toPathString = function (pathArr) {\n const x = pathArr,\n n = x.length;\n let p = '$';\n\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += /^[0-9*]+$/u.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n\n return p;\n};\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\n\n\nJSONPath.toPointer = function (pointer) {\n const x = pointer,\n n = x.length;\n let p = '';\n\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += '/' + x[i].toString().replace(/~/gu, '~0').replace(/\\//gu, '~1');\n }\n }\n\n return p;\n};\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\n\n\nJSONPath.toPathArray = function (expr) {\n const {\n cache\n } = JSONPath;\n\n if (cache[expr]) {\n return cache[expr].concat();\n }\n\n const subx = [];\n const normalized = expr // Properties\n .replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/gu, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replace(/[['](\\??\\(.*?\\))[\\]']/gu, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n }) // Escape periods and tildes within properties\n .replace(/\\[['\"]([^'\\]]*)['\"]\\]/gu, function ($0, prop) {\n return \"['\" + prop.replace(/\\./gu, '%@%').replace(/~/gu, '%%@@%%') + \"']\";\n }) // Properties operator\n .replace(/~/gu, ';~;') // Split by property boundaries\n .replace(/['\"]?\\.['\"]?(?![^[]*\\])|\\[['\"]?/gu, ';') // Reinsert periods within properties\n .replace(/%@%/gu, '.') // Reinsert tildes within properties\n .replace(/%%@@%%/gu, '~') // Parent\n .replace(/(?:;)?(\\^+)(?:;)?/gu, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n }) // Descendents\n .replace(/;;;|;;/gu, ';..;') // Remove trailing\n .replace(/;$|'?\\]|'$/gu, '');\n const exprList = normalized.split(';').map(function (exp) {\n const match = exp.match(/#(\\d+)/u);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\n\nJSONPath.prototype.vm = vm;\n\nexport { JSONPath };\n", "import { JSONPath } from 'jsonpath-plus'\n\nexport type Datascopes = Record<string, any>\n\nexport function cleanCollectionBit(path: string) {\n return path.replace(/(\\[[^\\]\\[]+\\]|\\.\\*)$/g, '')\n}\n\nexport function normalizeCollectionScope(path: string) {\n return cleanCollectionBit(path) + '.*'\n}\n\nexport function queryScopes(scopes: any, datapath: string, singleValue = false, json: any = scopes) {\n var path = datapath\n /* find closest parent scope */\n const keys = Object.keys(scopes).sort((b, a) => a.length - b.length)\n for (const scope of keys) {\n if (datapath.startsWith(scope) && 'ends with it') {\n if (scope == datapath) {\n if (singleValue) {\n return scopes[scope]\n } else {\n continue\n }\n }\n path = datapath.substring(scope.length + 1)\n json = scopes[scope]\n break\n }\n }\n\n var collection = JSONPath({ path, json })\n\n // If regular path didn't match any data, try fallbacks\n // datasourceId.wrapper.$.path\n if (Array.isArray(collection) && collection?.length == 0) {\n collection = [\n // look up in `_` datasource id (catch-all id is used in JSS)\n // _.wrapper.$.path\n path.replace(/^.*?\\./, '_.'),\n // look up directly on data root\n // wrapper.$.path\n path.replace(/^.*?\\./, ''),\n // look up trimmed path in datasource\n // datasourceId.path\n path.replace(/^([^.]+).*?\\.\\$\\./, '$1.'),\n // look up trimmed path in catch all datasource\n // _.path\n path.replace(/^.*?\\.\\$\\./, '_.'),\n // look up trimmed path on root\n // path\n path.replace(/^.*?\\.\\$\\./, ''),\n // for case of top-level object data mapping full path can be replaced to _\n path.replace(/^[^.]+$/, '_')\n ]\n .filter((v, i, a) => a.indexOf(v) === i)\n .reduce((v, path) => {\n return v.length > 0 ? v : JSONPath({ path, json })\n }, [] as any[])\n }\n\n if (singleValue && Array.isArray(collection)) {\n return collection[0]\n } else {\n return collection\n }\n}\n\nexport type CH1Node =\n | {\n type: string\n text?: string\n content?: CH1Node[]\n marks?: CH1Node[]\n attrs?: Record<string, any>\n }\n | CH1Node[]\nfunction serializeCH1Tag(data: any, attrs: Record<string, string> = {}, tag: string): string {\n if (!tag) return serializeCH1RichText(data)\n return `<${tag}${Object.entries(attrs)\n .map(([k, v]) => v != null && ` ${k}=\"${v}\"`)\n .filter(Boolean)\n .join('')}>${serializeCH1RichText(data)}</${tag}>`.replace(/^<([a-z0-9][^>]*)><\\/[^>]+>$/, '<$1 />')\n}\nexport function serializeCH1RichText(data: CH1Node | string | null | undefined): string {\n if (Array.isArray(data)) return data.map(serializeCH1RichText).join('\\n').trim()\n if (typeof data == 'string') return data\n if (data == null) return ''\n switch (data.type) {\n case 'heading':\n const { level, ...attrs } = data.attrs\n return serializeCH1Tag(data.content, attrs, 'h' + level)\n case 'text':\n return ((data.marks || []) as any[]).reduce((text, mark) => {\n return serializeCH1Tag(\n text,\n mark.attrs,\n {\n link: 'a',\n bold: 'strong',\n italic: 'em',\n strike: 's',\n underline: 'u'\n }[mark.type as string]\n )\n }, data.text?.replace(/\\s+/, ' '))\n default:\n return serializeCH1Tag(\n data.content || data.text,\n data.attrs,\n {\n bulletList: 'ul',\n orderedList: 'ol',\n listItem: 'li',\n horizontalRule: 'hr',\n paragraph: 'p',\n codeBlock: 'code',\n blockquote: 'blockquote'\n }[data.type]\n )\n }\n}\n\nexport { JSONPath }\n", "export function observeDOMElement(element: HTMLElement) {\n const observer = new element.ownerDocument.defaultView.MutationObserver((changes) => {\n changes.forEach((change) => {\n const target = change.target as HTMLElement\n const src = target.getAttribute('data-embed-src')\n if (src) {\n loadScript(target, src)\n }\n\n if (change.addedNodes) {\n change.addedNodes.forEach((node) => {\n if (node.nodeType == 1) autoloadScripts(node as HTMLElement, false)\n })\n }\n })\n })\n observer.observe(element, { attributes: true, subtree: true, childList: true })\n return observer\n}\n\nexport function autoloadScripts(element: HTMLElement, observe = true) {\n const embeds = element.querySelectorAll('[data-embed-src]')\n for (var i = 0; i < embeds.length; i++) {\n const embed = embeds[i]\n loadScript(embed as HTMLElement, embed.getAttribute('data-embed-src'))\n }\n if (observe) return observeDOMElement(element)\n}\n\nexport function loadScript(element: HTMLElement, src: string) {\n for (var p = element; p; p = p.parentElement) {\n if (!p.parentElement) {\n const scripts = p.querySelectorAll('script')\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].getAttribute('src') == src) {\n return true\n }\n }\n if (p.tagName == 'HTML') p = p.querySelector('head') || p\n const script = p.ownerDocument.createElement('script')\n script.type = 'module'\n script.src = src\n p.appendChild(script)\n break\n }\n }\n}\n", "import { FEAASCDNComponentProps } from '../cdn.js'\nimport { Datascopes, normalizeCollectionScope, queryScopes, serializeCH1RichText } from './data.js'\nimport { loadScript } from './scripts.js'\n\nexport interface FEAASCustomizations {\n processTemplate?: (element: HTMLElement, template: string, data: any) => string\n processData?: (element: HTMLElement, data: any) => any\n processValue?: (element: HTMLElement, property: string, value: any) => any\n shouldRepeat?: (element: HTMLElement, value: any) => boolean\n onRender?: (element: HTMLElement, data: any) => void\n}\n\nexport interface ExplicitTemplate {\n template: string\n}\n\nexport type FEAASComponentProps = {\n data?: Datascopes\n} & (ExplicitTemplate | FEAASCDNComponentProps) &\n FEAASCustomizations\n\nfunction getDOMCollectionIndex(element: HTMLElement) {\n const datascope = element.getAttribute('data-path-scope')\n var index = 0\n for (var p = element; (p = <HTMLElement>p.previousElementSibling); ) {\n if (p.getAttribute('data-path-scope') == datascope) {\n index++\n }\n }\n return index\n}\n\nfunction updateDOMClones(element: HTMLElement, targetCount: number, config?: FEAASCustomizations) {\n const datascope = element.getAttribute('data-path-scope')\n if (datascope == null) {\n return\n }\n var index = getDOMCollectionIndex(element)\n if (index != 0) {\n return\n }\n\n const parentElement = element.parentElement\n if (parentElement == null) {\n return\n }\n\n /*dont remove first element, just hide it*/\n if (targetCount == 0) {\n element.setAttribute('hidden', 'hidden')\n } else if (element.getAttribute('hidden') != null) {\n element.removeAttribute('hidden')\n }\n\n var count = index + 1\n var last = element\n for (var n = element; (n = <HTMLElement>n.nextElementSibling); ) {\n if (n.getAttribute('data-path-scope') == datascope) {\n count++\n last = n\n }\n }\n /* add missing clones */\n for (var i = count; i < targetCount; i++) {\n parentElement.insertBefore(last.cloneNode(true), last.nextElementSibling)\n }\n /* remove excessive clones fron previous renders */\n for (var i = Math.max(1, targetCount); i < count; i++) {\n last = <HTMLElement>last.previousElementSibling\n parentElement.removeChild(<HTMLElement>last.nextElementSibling)\n }\n}\n\nexport function setDOMAttribute(element: HTMLElement, attribute: string, value: any, config?: FEAASCustomizations) {\n if (!element) return\n var target = element\n if (value?.type == 'doc' && Array.isArray(value.content)) value = serializeCH1RichText(value)\n if (config?.processValue) {\n value = config?.processValue(element, attribute, value)\n }\n var prop = attribute.replace('data-path-', '')\n if (attribute == 'data-path-src') {\n target = element.tagName == 'IMG' ? element : <HTMLElement>element.querySelector('img, video')\n } else if (attribute == 'data-path-href') {\n target = element.querySelector('a') || element.closest('a')\n } else if (attribute == 'data-path-alt') {\n target = element.querySelector('img, picture')\n } else if (attribute == 'data-path-hidden') {\n value = !value ? true : null\n } else if (attribute == 'data-path' || attribute == 'data-embed-html' || attribute == 'html') {\n prop = 'innerHTML'\n } else if (attribute == 'data-embed-src') {\n loadScript(element, value)\n } else if (attribute == 'data-path-attributes') {\n const oldKeys = element.getAttribute('data-attributes-keys')?.split(',').filter(Boolean) || []\n if (!Array.isArray(value))\n for (var property in value) {\n var subvalue = value[property]\n setDOMAttribute(\n element,\n property,\n typeof subvalue == 'object' && subvalue ? JSON.stringify(subvalue) : subvalue,\n config\n )\n }\n for (var i = 0; i < oldKeys.length; i++) {\n if (value == null || !(oldKeys[i] in value)) {\n setDOMAttribute(element, oldKeys[i], null, config)\n }\n }\n setDOMAttribute(element, 'data-attributes-keys', Object.keys(value || {}).join(','))\n return\n }\n if (typeof value == 'boolean') {\n value = value ? '' : null\n }\n if (!target) return\n\n var placeholder = String(element.getAttribute('data-path-placeholder') || target[prop as keyof HTMLElement])\n\n if (value != null) {\n if (prop == 'innerHTML') {\n if (target.innerHTML != value) {\n target.innerHTML = value\n }\n } else {\n if (target.getAttribute(prop) != value) {\n target.setAttribute(prop, value)\n }\n }\n } else {\n if (prop == 'innerHTML') {\n target.innerHTML = placeholder\n } else {\n target.removeAttribute(prop)\n }\n }\n}\n\n// order in which attributes are proccesed. Rightmost are more important\nvar sortOrder = ['data-attributes-keys', 'data-path-attributes', 'data-path-scope']\nexport function renderDOMElement(\n input: HTMLElement | DocumentFragment,\n datascopes?: any,\n config?: FEAASCustomizations,\n isNested?: boolean\n) {\n const element = <HTMLElement>input\n if (!isNested) {\n datascopes = config?.processData?.(element, datascopes) || datascopes\n }\n if (element.nodeType == 1) {\n const datascope = element.getAttribute('data-path-scope')\n if (datascope) {\n const index = getDOMCollectionIndex(element)\n const collection = queryScopes(datascopes, datascope, false) || []\n if (index == 0) {\n updateDOMClones(element, config?.shouldRepeat?.(element, collection) === false ? 1 : collection.length, config)\n }\n\n datascopes = {\n ...datascopes,\n [normalizeCollectionScope(datascope)]: collection[index]\n }\n }\n const attrs = Array.prototype.slice.call(element.attributes).sort((a: Attr, b: Attr) => {\n return sortOrder.indexOf(a.name) - sortOrder.indexOf(b.name)\n })\n for (var i = 0; i < attrs.length; i++) {\n const { name, value: datapath } = attrs[i]\n if (name.startsWith('data-path') && name != 'data-path-scope') {\n setDOMAttribute(element, name, queryScopes(datascopes, datapath, true), config)\n }\n if (name == 'data-embed-src') {\n setDOMAttribute(element, name, element.getAttribute(name), config)\n }\n }\n }\n for (var i = 0, child: Node; (child = element.childNodes[i++]); ) {\n if (isElement(child)) {\n renderDOMElement(child, datascopes, config, true)\n }\n }\n if (!isNested) {\n config?.onRender?.(element, datascopes)\n }\n return element\n}\nfunction isElement(node: Node): node is HTMLElement {\n return node.nodeType == 1\n}\n\nexport function renderDOMContent(root: HTMLElement, template: string, data?: Datascopes, config?: FEAASCustomizations) {\n const newTemplate = config?.processTemplate?.(root, template, data) || template\n root.innerHTML = newTemplate\n root.classList.add('-feaas')\n // fixme, jss needs to assign theme classes to component instead\n const anchor = root.closest('.component.feaas') || root\n if (anchor.className.includes('-theme--')) {\n for (var i = 0, child: Node; (child = root.childNodes[i++]); ) {\n if (isElement(child)) {\n child.className = child.className.replace(/(\\s|^)-theme--[^\\s]+\\s*/g, '$1')\n }\n }\n }\n return renderDOMElement(root, data, config)\n}\n\nexport function renderHTMLContent(template: string, data?: Datascopes, config?: FEAASCustomizations, fakeDOM = false) {\n const newTemplate = config?.processTemplate?.(null, template, data) || template\n if (typeof document === 'undefined' || fakeDOM) {\n const { parseHTML } = require('linkedom')\n const { document } = parseHTML(newTemplate)\n return renderDOMElement(document, data, config).toString()\n } else {\n const root = document.createElement('div')\n root.innerHTML = newTemplate\n renderDOMElement(root, data, config)\n return root.innerHTML\n }\n}\n", "import { ControlledPromise } from './utils/promise.js'\n\n/**\n * Utility to cache-bust static files. It relies on reading Date header to detect cached response, so it requires CORS\n * settings to be set.\n *\n * It accepts validator function that determines if response is usable. If response was pulled from cache and is valid,\n * the optional callback function is fired right away. Then HEAD request is made bypassing the cache, to see if the\n * response has an newer Last-Modified header. In case it does and it passes validation, third request is fired that\n * actually fetches the new content and callback is invoked the second time.\n *\n * It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers. Any network\n * errors will not be caught. Function throws when unable to fetch valid response.\n */\nconst phases = ['initial', 'check', 'updated'] as const\nexport type ValidatableRequestPhase = typeof phases[number]\nexport type FetchCache = Record<string, FetchCacheRequest>\nexport interface ValidatableRequest {\n url: Parameters<typeof fetch>[0]\n options?: Parameters<typeof fetch>[1]\n validator?: (resposne: Response) => boolean\n callback?: (response: Response, status: ValidatableRequestPhase, isCached: boolean) => any\n isCached?: boolean\n response?: Response\n cache?: FetchCache\n}\n\nexport type FetchCacheRequest = {\n phase: ValidatableRequestPhase\n initial: ControlledPromise<Response>\n check: ControlledPromise<Response>\n updated: ControlledPromise<Response>\n final: ControlledPromise<Response>\n}\n\nexport var fetchCache: Record<string, FetchCacheRequest> = {}\nexport function clearFetchCache() {\n fetchCache = {}\n}\n\nexport async function fetchAndRevalidate(\n url: ValidatableRequest['url'],\n options?: ValidatableRequest['options'],\n validator?: ValidatableRequest['validator'],\n callback?: ValidatableRequest['callback'],\n cache: FetchCache = fetchCache\n) {\n // make request as usual, see if there's cached version of an asset\n return fetchWithCacheAwareness({ url, options, validator, callback, cache })\n .then(fetchToValidateCache)\n .then((result) => result.response)\n}\n\nexport function getFetchCache(url: Parameters<typeof fetch>[0], dontCreate = false) {\n const key = String(url).replace('?head', '')\n var cache = fetchCache[key]\n if (!cache && !dontCreate) {\n cache = fetchCache[key] = {\n phase: null,\n initial: ControlledPromise(),\n check: ControlledPromise(),\n updated: ControlledPromise(),\n final: ControlledPromise()\n }\n }\n return cache\n}\n\nexport async function fetchWithCacheAwareness(\n { url, options, validator, callback, cache }: ValidatableRequest,\n phase: ValidatableRequestPhase = 'initial'\n) {\n const date = new Date()\n if (cache != null) {\n var cachedRequest = getFetchCache(url)\n if (phases.indexOf(cachedRequest.phase) >= phases.indexOf(phase)) {\n var promise = cachedRequest[phase]\n } else {\n cachedRequest.phase = phase\n }\n }\n const response = await (promise || fetch(url, options))\n if (!promise && cachedRequest) {\n if (!response.ok) {\n cachedRequest[phase].reject(new Error('Fetch failed'))\n } else {\n cachedRequest[phase].resolve(response)\n }\n }\n if (!response.ok) throw new Error('Fetch failed')\n if (validator?.(response) === false) throw new Error('Response is not valid')\n // see if response was pulled from cache\n const isCached =\n new Date(response.headers.get('date')) < date ||\n (promise && phase == 'initial' && (cachedRequest.phase == 'updated' || cachedRequest.phase == 'check'))\n await callback?.(response, phase, isCached)\n return {\n url,\n options,\n isCached,\n response,\n validator,\n callback,\n cache\n }\n}\n\nexport async function fetchToValidateCache(\n request: ValidatableRequest & Required<Pick<ValidatableRequest, 'response'>>\n) {\n const { url, isCached, options, validator, response, cache } = request\n if (isCached) {\n // check if response was stale by sending quick HEAD request busting cache\n const { response: head } = await fetchWithCacheAwareness(\n {\n url: url + '?head',\n options: {\n ...options,\n method: 'HEAD',\n cache: 'no-cache'\n },\n validator,\n cache\n },\n 'check'\n )\n\n // there's a newer version of the file that we may fetch\n if (head.headers.get('last-modified') != response.headers.get('last-modified')) {\n // otherwise the new resource has to be re-fetched\n return fetchBypassingCache(request)\n }\n }\n return request\n}\n\nexport async function fetchBypassingCache(request: ValidatableRequest) {\n return fetchWithCacheAwareness(\n {\n ...request,\n options: {\n ...request.options,\n cache: 'reload'\n }\n },\n 'updated'\n )\n}\n", "import {\n fetchAndRevalidate,\n fetchWithCacheAwareness,\n fetchBypassingCache,\n fetchToValidateCache,\n ValidatableRequestPhase\n} from './fetch.js'\n\nexport const DEFAULT_CDN_URL = `https://feaas.blob.core.windows.net`\nexport type FEAASCDNComponentParams = {\n cdn?: string\n revision?: 'staging' | 'published' | 'saved' | number\n library: string\n component: string\n version: string\n\n /** @deprecated Use `cdn` instead */\n hostname?: string\n}\nexport type FEAASCDNComponentSource = {\n src: string\n}\nexport type FEAASCDNComponentParamsCustomizations = {\n instance?: string\n}\nexport type FEAASCDNComponentProps = (FEAASCDNComponentParams | FEAASCDNComponentSource) &\n FEAASCDNComponentParamsCustomizations\n\nexport interface FEAASCDNStylesheetParams {\n cdn?: string\n library: string\n revision?: 'staging' | 'published' | 'saved' | number\n\n /** @deprecated Use `cdn` instead */\n hostname?: string\n}\n\nexport type FEAASCDNStylesheetSource = {\n src: string\n}\nexport type FEAASCDNStylesheetProps = FEAASCDNStylesheetParams | FEAASCDNStylesheetSource | string\n\nexport function parseComponentSource(source: string): FEAASCDNComponentParams {\n const match = source.match(\n /^(?:(.*?)\\/components)?\\/?([^\\/]+)\\/([^\\/]+)(?:\\/([^\\/]+)(?:\\/(published|staged|saved|\\d+)(?:\\.html?)?)?)?$/\n )\n if (match) {\n var [, cdn, library, component, version, revision] = match\n return { cdn, library, component, version, revision: revision as any }\n }\n}\nexport function getComponentSource(props: FEAASCDNComponentParams) {\n if (!props || !props.library || !props.component)\n throw new Error('Component requires `library` and `component` properties')\n return `${props.cdn && props.cdn != DEFAULT_CDN_URL ? `${props.cdn}/components` : ''}/${props.library}/${\n props.component\n }/${\n !props.version || (props.version == 'responsive' && (!props.revision || props.revision == 'published'))\n ? ''\n : props.version\n }/${!props.revision || props.revision == 'published' ? '' : props.revision}`.replace(\n /(^\\/|\\/$|\\/\\/)(?!.+\\/components\\/)/g,\n ''\n )\n}\n\nexport function getStylesheetSource(props: FEAASCDNStylesheetParams) {\n return `${props.cdn && props.cdn != DEFAULT_CDN_URL ? `${props.cdn}/styles/` : ''}${props.library}/${\n !props.revision || props.revision == 'published' ? '' : props.revision\n }`.replace(/\\/$|\\/\\/(?!.+\\/styles\\/)/g, '')\n}\n\nexport function parseStylesheetSource(source: string): FEAASCDNStylesheetParams {\n const match = source.match(/^(?:(.*?)\\/styles\\/)?([^\\/]+)(?:\\/(published|staged|saved|\\d+)(?:.css)?)?$/)\n if (match) {\n var [, cdn, library, revision] = match\n return { cdn, library, revision: revision as any }\n // try parsing it as component url\n } else {\n const parsed = parseComponentSource(source) as Record<string, string>\n if (parsed) {\n var { cdn, library, revision } = parsed\n if (revision?.match(/\\d/)) revision = undefined\n return { cdn, library, revision: revision as any }\n }\n }\n}\nexport function getComponentURL(props: FEAASCDNComponentProps | string) {\n if (typeof props == 'string') {\n props = { src: props }\n }\n if ('src' in props) {\n props = {\n ...parseComponentSource(props.src)\n }\n }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/components/${props.library}/${props.component}/${\n props.version\n }/${props.revision || 'published'}.html`\n}\n\nexport function getStylesheetURL(props: FEAASCDNStylesheetProps) {\n if (typeof props == 'string') {\n props = { src: props }\n }\n if ('src' in props) {\n props = {\n ...parseStylesheetSource(props.src)\n }\n }\n return `${props.cdn || props.hostname || DEFAULT_CDN_URL}/styles/${props.library}/${\n props.revision || 'published'\n }.css`\n}\n\nexport async function fetchAndRevalidateComponent(\n props: FEAASCDNComponentProps,\n callback?: (html: string) => void,\n dontRevalidate = false\n) {\n const onlyIfNotDeleted = (response: Response) => {\n return response.headers.get('x-ms-meta-versionDeletedAt') == null\n }\n const parseResponse = (response: Response) => {\n return response.clone().text().then(callback)\n }\n\n // Fetch two requests in parallel: One optimistically checking if component was forked,\n // and another checking original definition of a component\n const results = await Promise.all([\n props.instance &&\n fetchWithCacheAwareness({\n options: {\n headers: {\n Accept: 'text/html'\n },\n credentials: 'omit'\n },\n url: getComponentURL({ ...props, version: props.instance }),\n validator: onlyIfNotDeleted\n }).catch((e) => e as Error),\n fetchWithCacheAwareness({ url: getComponentURL(props), validator: onlyIfNotDeleted }).catch((e) => e as Error)\n ])\n const result = results.find((result) => result && 'isCached' in result && result)\n if (!result || result instanceof Error) {\n const error = results.find((result) => result && result instanceof Error)\n throw error || new Error('Can not fetch component')\n }\n if (results[0] == result) {\n console.log('Using fork!', results)\n }\n await parseResponse(result.response)\n if (dontRevalidate) return result\n return fetchToValidateCache({ ...result, callback: parseResponse }).catch((e) => {\n if (results[0] == result) {\n fetchBypassingCache({ ...result, callback: null, validator: null })\n console.log('Fork was deleted')\n // forked version was cached, but it's now deleted\n if (!(results[1] instanceof Error)) {\n parseResponse(results[1].response)\n return fetchToValidateCache({ ...results[1], callback: parseResponse })\n }\n }\n throw e\n })\n}\n\n/** Fetches HTML of a component. */\nexport async function fetchComponent(props: FEAASCDNComponentProps | string) {\n if (typeof props == 'string') props = { src: props }\n var template: string\n const { response } = await fetchAndRevalidateComponent(\n props,\n (result) => {\n template = result\n },\n true\n )\n return { ...props, template, lastModified: response.headers.get('last-modified') }\n}\n\nexport type ValidatableStylesheetCallback = (css: string, phase: ValidatableRequestPhase) => void\nexport async function fetchAndRevalidateStylesheet(\n props: FEAASCDNStylesheetProps,\n callback: ValidatableStylesheetCallback\n) {\n if (typeof props == 'string') props = { src: props }\n return fetchAndRevalidate(\n getStylesheetURL(props),\n {\n headers: {\n Accept: 'text/css'\n },\n credentials: 'omit'\n },\n (response) => {\n return response.headers.get('x-ms-meta-deletedAt') == null\n },\n (response, phase) => {\n return response\n .clone()\n .text()\n .then((text) => callback(text, phase))\n }\n )\n}\n", "import {\n FEAASCDNStylesheetProps,\n fetchAndRevalidateStylesheet,\n getStylesheetURL,\n ValidatableStylesheetCallback\n} from '../cdn.js'\n\nexport function renderStylesheet(props: FEAASCDNStylesheetProps, style?: HTMLStyleElement) {\n renderStylesheetPromise(props, (style ||= document.createElement('style')))\n return style\n}\n\nexport function renderStylesheetPromise(props: FEAASCDNStylesheetProps, stylesheet?: HTMLStyleElement) {\n stylesheet ||= document.createElement('style')\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n stylesheet.textContent = cssText\n }).then(() => stylesheet)\n}\n\nexport function loadStylesheet(props: FEAASCDNStylesheetProps, callback?: ValidatableStylesheetCallback) {\n var foundStylesheet = findStylesheet(props) as HTMLStyleElement\n if (!foundStylesheet) {\n var createdStylesheet = createStylesheet(props)\n }\n return fetchAndRevalidateStylesheet(props, (cssText, phase) => {\n if (createdStylesheet) {\n createdStylesheet.textContent = cssText\n }\n callback?.(cssText, phase)\n }).then(() => foundStylesheet || createdStylesheet)\n}\n\nexport function loadStylesheetAllowStale(props: FEAASCDNStylesheetProps) {\n return new Promise((resolve, reject) => {\n loadStylesheet(props, resolve).catch(reject)\n })\n}\n\nexport function findStylesheet(props: FEAASCDNStylesheetProps) {\n return document.head.querySelector(`style[data-href=\"${getStylesheetURL(props)}\"]`)\n}\n\nexport function createStylesheet(props: FEAASCDNStylesheetProps) {\n const url = getStylesheetURL(props)\n const stylesheet = document.createElement('style')\n stylesheet.setAttribute('data-href', url)\n document.head.appendChild(stylesheet)\n return stylesheet\n}\n", "import { fetchAndRevalidateComponent } from '../cdn.js'\nimport { Datascopes } from './data.js'\nimport { FEAASComponentProps, renderDOMContent, renderDOMElement } from './rendering.js'\n\nexport function renderComponentElement(content: string, datasources?: Datascopes) {\n const wrapper = document.createElement('div')\n wrapper.innerHTML = content\n const fragment = document.createDocumentFragment()\n while (wrapper.firstChild) {\n fragment.appendChild(wrapper.firstChild)\n }\n renderDOMElement(fragment, datasources)\n return wrapper\n}\n\nexport function renderComponent(props: FEAASComponentProps, root?: HTMLElement) {\n renderComponentPromise(props, (root ||= document.createElement('div')))\n return root\n}\n\nexport async function renderComponentPromise(props: FEAASComponentProps, root?: HTMLElement) {\n root ||= document.createElement('div')\n if (!root.childNodes.length) {\n if ('template' in props) {\n return renderDOMContent(root, props.template, props.data, props)\n } else {\n return fetchAndRevalidateComponent(props, (template) => {\n return renderDOMContent(root, template, props.data, props)\n }).then(() => root)\n }\n /* update element with new data */\n } else {\n return renderDOMElement(root, props.data, props)\n }\n}\n", "import { DEFAULT_CDN_URL, FEAASCDNComponentParams, fetchAndRevalidateComponent, parseComponentSource } from '../cdn.js'\nimport { renderDOMContent, renderDOMElement } from '../dom/rendering.js'\nimport { loadStylesheetAllowStale } from '../headless.js'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASComponentsProps(element: FEAASBase = this) {\n let data: any\n const src = element.getAttribute('src')\n if (src) {\n const parsed = parseComponentSource(src)\n if (!parsed) throw new Error(`Could not parse FEAAS Component source: ${src}`)\n var { cdn, library, component, version, revision } = parsed\n }\n const dataValue = element.getAttribute('data')\n if (dataValue != null && dataValue != '') {\n try {\n data = typeof dataValue == 'string' ? JSON.parse(dataValue) : {}\n } catch (e) {}\n }\n return {\n data: data || {},\n cdn: element.getContextAttribute('cdn') ?? cdn ?? DEFAULT_CDN_URL,\n library: element.getAttribute('library') ?? library,\n component: element.getAttribute('component') ?? component,\n version: element.getAttribute('version') ?? version ?? 'responsive',\n revision: (element.getAttribute('revision') ?? revision ?? 'published') as FEAASCDNComponentParams['revision'],\n hostname: element.getAttribute('hostname'),\n template: element.getAttribute('template'),\n instance: element.getAttribute('instance'),\n editable: element.getAttribute('editable') != null,\n suspended: element.getAttribute('suspended') != null,\n lastModified: element.getAttribute('last-modified'),\n withStylesheet: element.getAttribute('with-stylesheet') != 'false'\n }\n}\nexport type FEAASComponentsProps = ReturnType<typeof FEAASComponentsProps>\nexport class FEAASComponent extends FEAASBase<FEAASComponentsProps, string> {\n static observedAttributes = [\n 'library',\n 'component',\n 'version',\n 'revision',\n 'hostname',\n 'cdn',\n 'template',\n 'data',\n 'instance',\n 'editable',\n 'with-stylesheet'\n ]\n\n defaultProps = {\n cdn: DEFAULT_CDN_URL,\n revision: 'published',\n version: 'responsive',\n withStylesheet: true,\n editable: false,\n suspended: false\n } as Partial<FEAASComponentsProps>\n\n needsRefresh: boolean\n setData(data: any) {\n this.set({ data })\n }\n\n getProps() {\n return FEAASComponentsProps(this)\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) return\n // force component to be refreshed\n if (name == 'library' || name == 'component' || name == 'revision' || name == 'version') {\n this.payload = undefined\n }\n this.needsRefresh = true\n super.attributeChangedCallback(name, oldValue, newValue)\n }\n\n getEditor(): any {\n return (document.querySelector('feaas-context') as FEAASBase)?.refs.editor\n }\n\n constructor() {\n super()\n this.addEventListener('click', () => {\n if (this.props.editable) {\n this.edit()\n }\n })\n }\n\n edit() {\n const editor = this.getEditor()\n if (editor?.setTarget(this)) {\n editor.open()\n return true\n }\n }\n\n /* Check if component is a repeated clone, and return the original */\n getOriginal() {\n const scope = this.getAttribute('data-path-scope')\n if (!scope) return\n for (var current = this as Element; (current = current.previousElementSibling); ) {\n if (current.getAttribute('data-path-scope') == scope) {\n var last = current\n } else {\n break\n }\n }\n return last as FEAASComponent\n }\n\n isReadyToLoad() {\n return (\n super.isReadyToLoad() && this.props.library != null && this.props.component != null && this.props.version != null\n )\n }\n\n onLoad = (html: string) => {\n this.payload = html\n this.advance()\n }\n\n async load() {\n // defer loading to original element\n if (this.getOriginal()) {\n return\n }\n if (this.props.withStylesheet) {\n var stylesheetPromise = loadStylesheetAllowStale({ ...this.props, revision: 'published' }).then(() => {\n stylesheetPromise = null\n if (this.payload) {\n this.onLoad(this.payload)\n }\n })\n }\n return Promise.all([\n stylesheetPromise,\n fetchAndRevalidateComponent(this.props, (html) => {\n this.payload = html\n if (!stylesheetPromise) this.onLoad(html)\n })\n ]).then(() => this.payload)\n }\n\n update() {\n if (Array.from(this.children).filter((c) => c.tagName != 'BR').length > 0 && !this.needsRefresh) {\n renderDOMElement(this, this.props.data)\n } else {\n this.needsRefresh = true\n // defer rendering to original element\n if (this.getOriginal()) {\n return\n }\n renderDOMContent(this, this.payload, this.props.data)\n }\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-component': {\n data?: any\n template?: string\n instance?: string\n editable?: boolean\n children?: any\n dangerouslySetInnerHTML?: { __html: string }\n 'last-modified'?: string\n 'with-stylesheet'?: 'false' | 'true' | ''\n } & (\n | {\n /** @deprecated Use cdn instead */\n hostname?: string\n cdn?: string\n library: string\n component: string\n version?: string\n revision?: FEAASComponentsProps['revision']\n }\n | { src: string }\n )\n }\n }\n}\nFEAASComponent.register('feaas-component')\n\nexport { FEAASComponent as Component, FEAASComponentsProps as ComponentProps }\n", "import { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASLoaderProps(element: HTMLElement = this) {\n return {\n opacity: element?.getAttribute('opacity') ? parseFloat(element?.getAttribute('opacity')) : 1,\n hidden: element?.getAttribute('hidden') != null\n }\n}\ntype FEAASLoaderProps = ReturnType<typeof FEAASLoaderProps>\n\nexport class FEAASLoader extends FEAASBase<FEAASLoaderProps, string> {\n stylesheet: HTMLStyleElement\n loader: HTMLDivElement\n\n getProps() {\n return FEAASLoaderProps(this)\n }\n\n defaultProps = {\n hidden: false\n } as Partial<FEAASLoaderProps>\n\n static observedAttributes = ['hidden', 'opacity']\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (oldValue === newValue) return\n if (name == 'hidden') {\n this.style.setProperty('display', 'block', 'important')\n this.style.setProperty('transition', 'opacity 0.3s', 'important')\n if (newValue) {\n this.style.setProperty('opacity', '0', 'important')\n this.style.pointerEvents = 'none'\n } else {\n this.style.setProperty('opacity', '1', 'important')\n this.style.pointerEvents = 'all'\n }\n }\n return super.attributeChangedCallback(name, oldValue, newValue)\n }\n\n connectedCallback() {\n this.payload = null\n super.connectedCallback()\n this.attributeChangedCallback('hidden', this.getAttribute('hidden'), this.getAttribute('hidden'))\n this.stylesheet = document.createElement('style')\n this.stylesheet.textContent = `\n #loader {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f6f6ff;\n z-index: 1000;\n }\n @keyframes loader-circular-track {\n 0% {\n stroke-dasharray: 1, 400;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 400, 400;\n stroke-dashoffset: -100;\n }\n 100% {\n stroke-dasharray: 400, 400;\n stroke-dashoffset: -260;\n }\n }\n \n @keyframes loader-circular-spinner {\n 0% {\n transform: rotate(0deg);\n }\n \n 100% {\n transform: rotate(360deg);\n }\n }\n #loader .spinner {\n width: 48px;\n height: 48px;\n }\n `\n this.loader = document.createElement('div')\n this.loader.id = 'loader'\n this.loader.innerHTML = `\n <div class=\"spinner\">\n <svg\n viewBox=\"0 0 100 100\"\n style=\"\n animation: 2s linear 0s infinite normal none running loader-circular-spinner;\n display: block;\n width: 48px;\n height: 48px;\n \"\n >\n <circle fill=\"transparent\" cx=\"50\" cy=\"50\" r=\"42\" stroke=\"rgba(0,0,0,0.1)\" stroke-width=\"10px\"></circle>\n <circle\n fill=\"transparent\"\n stroke=\"#5548D9\"\n cx=\"50\"\n cy=\"50\"\n r=\"42\"\n stroke-width=\"10px\"\n stroke-linecap=\"round\"\n style=\"animation: 1.5s linear 0s infinite normal none running loader-circular-track\"\n ></circle>\n </svg>\n </div>`\n this.getRoot().appendChild(this.stylesheet)\n this.getRoot().appendChild(this.loader)\n }\n\n update() {\n this.loader.style.opacity = String(this.props.opacity)\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-loader': any\n }\n }\n}\nFEAASLoader.register('feaas-loader')\n\nexport { FEAASLoader as Loader }\n", "import { DEFAULT_CDN_URL, FEAASCDNStylesheetParams, parseStylesheetSource } from '../cdn.js'\nimport { loadStylesheet } from '../dom/stylesheet.js'\nimport { FEAASBase } from './FEAASBase.js'\n\nexport function FEAASStylesheetProps(element: FEAASBase = this) {\n const src = element.getAttribute('src')\n if (src) {\n var { cdn, library, revision } = parseStylesheetSource(src)\n }\n return {\n library: element?.getContextAttribute('library'),\n revision: element?.getAttribute('revision') ?? revision ?? 'published',\n cdn: element?.getContextAttribute('cdn') ?? element?.getContextAttribute('hostname') ?? DEFAULT_CDN_URL\n } as FEAASCDNStylesheetParams\n}\nexport type FEAASStylesheetProps = ReturnType<typeof FEAASStylesheetProps>\n\nexport class FEAASStylesheet extends FEAASBase<FEAASStylesheetProps, string> {\n getProps() {\n return FEAASStylesheetProps(this)\n }\n\n isReadyToLoad(): boolean {\n return this.props.library != null && this.props.revision != null && this.props.cdn != null\n }\n\n onLoad = (html: string) => {\n this.payload = html\n this.advance()\n }\n\n load() {\n return loadStylesheet(this.props, this.onLoad)\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n 'feaas-stylesheet': Partial<FEAASStylesheetProps> & { children?: any }\n }\n }\n}\nFEAASStylesheet.register('feaas-stylesheet')\nexport { FEAASStylesheet as Stylesheet }\n"],
5
+ "mappings": "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",
6
+ "names": ["headless_exports", "__export", "FEAASBase", "FEAASComponent", "FEAASComponentsProps", "DEFAULT_CDN_URL", "FEAASLoader", "FEAASLoaderProps", "FEAASStylesheet", "FEAASStylesheetProps", "JSONPath", "MyComponent", "autoloadScripts", "cleanCollectionBit", "clearFetchCache", "createStylesheet", "fetchAndRevalidate", "fetchAndRevalidateComponent", "fetchAndRevalidateStylesheet", "fetchBypassingCache", "fetchCache", "fetchComponent", "fetchToValidateCache", "fetchWithCacheAwareness", "findStylesheet", "getComponentSource", "getComponentURL", "getFetchCache", "getStylesheetSource", "getStylesheetURL", "loadScript", "loadStylesheet", "loadStylesheetAllowStale", "normalizeCollectionScope", "observeDOMElement", "parseComponentSource", "parseStylesheetSource", "queryScopes", "renderComponent", "renderComponentElement", "renderComponentPromise", "renderDOMContent", "renderDOMElement", "renderHTMLContent", "renderStylesheet", "renderStylesheetPromise", "serializeCH1RichText", "setDOMAttribute", "__toCommonJS", "ControlledPromise", "onSuccess", "onFailure", "e", "first", "restart", "resolve", "reject", "promise", "success", "failure", "value", "controlled", "WebComponent", "FEAASBase", "context", "ControlledPromise", "payload", "name", "oldValue", "newValue", "parent", "element", "_a", "args", "onlyFeaas", "p", "root", "el", "event", "target", "index", "_b", "error", "where", "handled", "e", "loaded", "flushSync", "React", "ReactDOM", "ReactDOMClient", "_c", "children", "r", "child", "displayName", "errorInfo", "props", "ErrorBoundary", "Wrapper", "value", "forceUpdateReact", "overrides", "property", "attribute", "path", "src", "hostname", "tagName", "win", "FEAASElement", "FEAASBase", "React", "ReactDOM", "MyComponent", "counter", "updates", "setUpdates", "u", "import_vm", "hasOwnProp", "push", "arr", "item", "unshift", "NewError", "value", "JSONPath", "opts", "expr", "obj", "callback", "otherTypeCallback", "e", "optObj", "args", "ret", "json", "currParent", "currParentProperty", "flatten", "wrap", "exprList", "result", "ea", "rslt", "valOrPath", "resultType", "path", "fullRetObj", "type", "preferredOutput", "val", "parent", "parentPropName", "hasArrExpr", "literalPriority", "retObj", "loc", "x", "addRet", "elems", "t", "m", "safeLoc", "addType", "valueType", "locProp", "parts", "part", "rett", "tmp", "tl", "tt", "f", "n", "i", "len", "step", "start", "end", "code", "_v", "_vname", "containsPath", "scriptCacheKey", "script", "pathArr", "p", "pointer", "cache", "subx", "$0", "$1", "prop", "ups", "exp", "match", "vm", "cleanCollectionBit", "path", "normalizeCollectionScope", "queryScopes", "scopes", "datapath", "singleValue", "json", "keys", "b", "a", "scope", "collection", "JSONPath", "v", "i", "serializeCH1Tag", "data", "attrs", "tag", "k", "serializeCH1RichText", "level", "text", "mark", "_a", "observeDOMElement", "element", "observer", "changes", "change", "target", "src", "loadScript", "node", "autoloadScripts", "observe", "embeds", "i", "embed", "p", "scripts", "script", "getDOMCollectionIndex", "element", "datascope", "index", "p", "updateDOMClones", "targetCount", "config", "parentElement", "count", "last", "n", "i", "setDOMAttribute", "attribute", "value", "target", "serializeCH1RichText", "prop", "loadScript", "oldKeys", "_a", "property", "subvalue", "placeholder", "sortOrder", "renderDOMElement", "input", "datascopes", "isNested", "collection", "queryScopes", "_b", "normalizeCollectionScope", "attrs", "a", "b", "name", "datapath", "child", "isElement", "_c", "node", "renderDOMContent", "root", "template", "data", "newTemplate", "renderHTMLContent", "fakeDOM", "parseHTML", "document", "phases", "fetchCache", "clearFetchCache", "fetchAndRevalidate", "url", "options", "validator", "callback", "cache", "fetchWithCacheAwareness", "fetchToValidateCache", "result", "getFetchCache", "dontCreate", "key", "ControlledPromise", "phase", "date", "cachedRequest", "promise", "response", "isCached", "request", "head", "fetchBypassingCache", "DEFAULT_CDN_URL", "parseComponentSource", "source", "match", "cdn", "library", "component", "version", "revision", "getComponentSource", "props", "getStylesheetSource", "parseStylesheetSource", "parsed", "getComponentURL", "getStylesheetURL", "fetchAndRevalidateComponent", "callback", "dontRevalidate", "onlyIfNotDeleted", "response", "parseResponse", "results", "fetchWithCacheAwareness", "e", "result", "fetchToValidateCache", "fetchBypassingCache", "fetchComponent", "template", "fetchAndRevalidateStylesheet", "fetchAndRevalidate", "phase", "text", "renderStylesheet", "props", "style", "renderStylesheetPromise", "stylesheet", "fetchAndRevalidateStylesheet", "cssText", "phase", "loadStylesheet", "callback", "foundStylesheet", "findStylesheet", "createdStylesheet", "createStylesheet", "loadStylesheetAllowStale", "resolve", "reject", "getStylesheetURL", "url", "renderComponentElement", "content", "datasources", "wrapper", "fragment", "renderDOMElement", "renderComponent", "props", "root", "renderComponentPromise", "renderDOMContent", "fetchAndRevalidateComponent", "template", "FEAASComponentsProps", "element", "data", "src", "parsed", "parseComponentSource", "cdn", "library", "component", "version", "revision", "dataValue", "e", "_b", "_a", "DEFAULT_CDN_URL", "_c", "_d", "_f", "_e", "_h", "_g", "FEAASComponent", "FEAASBase", "name", "oldValue", "newValue", "html", "editor", "scope", "current", "last", "stylesheetPromise", "loadStylesheetAllowStale", "fetchAndRevalidateComponent", "c", "renderDOMElement", "renderDOMContent", "FEAASLoaderProps", "element", "FEAASLoader", "FEAASBase", "name", "oldValue", "newValue", "FEAASStylesheetProps", "element", "src", "cdn", "library", "revision", "parseStylesheetSource", "_b", "_a", "_d", "_c", "DEFAULT_CDN_URL", "FEAASStylesheet", "FEAASBase", "html", "loadStylesheet", "FEAASElement", "_a"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-feaas/clientside",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "scripts": {
5
5
  "start": "webpack serve --open",
6
6
  "build": "rm -rf dist;npm run types; npm run build:esbuild; npm run build:sourcemaps",
@@ -17,8 +17,8 @@
17
17
  "peerDependencies": {
18
18
  "react-dom": ">=16.8.0"
19
19
  },
20
- "main": "./dist/node/index.js",
21
- "browser": "./dist/browser/index.js",
20
+ "main": "./dist/node/index.cjs",
21
+ "browser": "./dist/browser/index.cjs",
22
22
  "module": "./dist/node/index.esm.js",
23
23
  "types": "./types/ui/index.d.js",
24
24
  "type": "module",
@@ -29,7 +29,7 @@
29
29
  "typescript": "./build/ui/index.js",
30
30
  "browser": "./dist/browser/index.esm.js",
31
31
  "import": "./dist/node/index.esm.js",
32
- "require": "./dist/node/index.js",
32
+ "require": "./dist/node/index.cjs",
33
33
  "default": "./dist/node/index.esm.js"
34
34
  },
35
35
  "./headless": {
@@ -39,7 +39,7 @@
39
39
  "typescript": "./build/headless.js",
40
40
  "browser": "./dist/browser/headless.esm.js",
41
41
  "import": "./dist/node/headless.esm.js",
42
- "require": "./dist/node/headless.js",
42
+ "require": "./dist/node/headless.cjs",
43
43
  "default": "./dist/node/headless.esm.js"
44
44
  },
45
45
  "./react": {
@@ -49,7 +49,7 @@
49
49
  "typescript": "./build/ui/react.js",
50
50
  "browser": "./dist/browser/react.esm.js",
51
51
  "import": "./dist/node/react.esm.js",
52
- "require": "./dist/node/react.js",
52
+ "require": "./dist/node/react.cjs",
53
53
  "default": "./dist/node/react.esm.js"
54
54
  }
55
55
  },