@sitecore-jss/sitecore-jss-angular 16.0.2 → 16.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js +4 -0
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js.map +1 -1
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js +1 -1
- package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js.map +1 -1
- package/dist/esm2015/components/date.directive.js +1 -1
- package/dist/esm2015/components/file.directive.js +1 -1
- package/dist/esm2015/components/generic-link.directive.js +1 -1
- package/dist/esm2015/components/image.directive.js +3 -1
- package/dist/esm2015/components/link.directive.js +3 -1
- package/dist/esm2015/components/missing-component.component.js +1 -1
- package/dist/esm2015/components/placeholder-loading.directive.js +1 -1
- package/dist/esm2015/components/placeholder.component.js +1 -1
- package/dist/esm2015/components/placeholder.token.js +1 -1
- package/dist/esm2015/components/raw.component.js +1 -1
- package/dist/esm2015/components/render-component.component.js +1 -1
- package/dist/esm2015/components/render-each.directive.js +1 -1
- package/dist/esm2015/components/render-empty.directive.js +1 -1
- package/dist/esm2015/components/rendering-field.js +1 -1
- package/dist/esm2015/components/rendering.js +1 -1
- package/dist/esm2015/components/rich-text.directive.js +1 -1
- package/dist/esm2015/components/router-link.directive.js +1 -1
- package/dist/esm2015/components/text.directive.js +1 -1
- package/dist/esm2015/jss-component-factory.service.js +1 -1
- package/dist/esm2015/layout-service-error.js +1 -1
- package/dist/esm2015/layout.service.js +1 -1
- package/dist/esm2015/lib.module.js +1 -1
- package/dist/esm2015/public_api.js +1 -1
- package/dist/esm2015/sitecore-jss-sitecore-jss-angular.js +1 -1
- package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js +4 -0
- package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js.map +1 -1
- package/dist/package.json +2 -2
- package/package.json +3 -3
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
See the Apache Version 2.0 License for specific language governing permissions
|
|
14
14
|
and limitations under the License.
|
|
15
15
|
***************************************************************************** */
|
|
16
|
-
var p=function(e,t){return(p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function c(e,t){function n(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function l(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function u(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(l(arguments[t]));return e}var d=function(){function e(e,t,n,r){this.viewContainer=e,this.templateRef=t,this.renderer=n,this.elementRef=r,this.inlineRef=null,this.editable=!0,this.urlParams={},this.attrs={}}return e.prototype.ngOnChanges=function(e){(e.field||e.editable||e.urlParams||e.attrs)&&(this.viewContainer.clear(),this.inlineRef&&(this.inlineRef.remove(),this.inlineRef=null),this.updateView())},e.prototype.updateView=function(){var e=Object.assign(Object.assign({},this.getElementAttrs()),this.attrs),t=this.field;if(t&&(t.editable||t.value||t.src)){var r={};if(this.editable&&t.editable){var i=n.mediaApi.findEditorImageTag(t.editable);if(!i)return this.renderInlineWrapper(t.editable);if(!(r=this.getImageAttrs(i.attrs,e,this.urlParams)))return this.renderInlineWrapper(t.editable);var o=this.renderer.createElement("img");Object.entries(r).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];return o.setAttribute(n,r)}));var a=t.editable.replace(i.imgTag,o.outerHTML);return this.renderInlineWrapper(a)}var s=t.src?t:t.value;if(!s)return null;(r=this.getImageAttrs(s,e,this.urlParams))&&this.renderTemplate(r)}},e.prototype.getImageAttrs=function(e,t,r){var i=Object.assign(Object.assign({},e),t),o=i.src,a=i.srcSet,s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}(i,["src","srcSet"]);if(!o)return null;var p=Object.assign({},s);return o=n.mediaApi.updateImageUrl(o,r,this.mediaUrlPrefix),a?p.srcSet=n.mediaApi.getSrcSet(o,a,r,this.mediaUrlPrefix):p.src=o,p},e.prototype.renderTemplate=function(e){var t=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(n){Object.entries(e).forEach((function(e){var r=l(e,2),i=r[0],o=r[1];return t.renderer.setAttribute(n,i,o)}))}))},e.prototype.getElementAttrs=function(){var e=this.templateRef.createEmbeddedView(null).rootNodes[0];if(!e)return{};for(var t={},n=0;n<e.attributes.length;n++){var r=e.attributes.item(n);r&&(t[r.name]=r.value)}return t},e.prototype.renderInlineWrapper=function(e){var t=this.renderer.createElement("span");t.className="sc-image-wrapper",t.innerHTML=e;var n=this.renderer.parentNode(this.elementRef.nativeElement);this.renderer.insertBefore(n,t,this.elementRef.nativeElement),n.removeChild(this.elementRef.nativeElement),this.inlineRef=t},e}();d.decorators=[{type:t.Directive,args:[{selector:"[scImage]"}]}],d.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef}]},d.propDecorators={field:[{type:t.Input,args:["scImage"]}],editable:[{type:t.Input,args:["scImageEditable"]}],mediaUrlPrefix:[{type:t.Input,args:["scImageMediaUrlPrefix"]}],urlParams:[{type:t.Input,args:["scImageUrlParams"]}],attrs:[{type:t.Input,args:["scImageAttrs"]}]};var f=function(){function e(e,t,n,r){this.viewContainer=e,this.templateRef=t,this.renderer=n,this.elementRef=r,this.inlineRef=null,this.editable=!0,this.attrs={}}return e.prototype.ngOnChanges=function(e){(e.field||e.editable||e.attrs)&&(this.viewContainer.clear(),this.inlineRef&&(this.inlineRef.remove(),this.inlineRef=null),this.updateView())},e.prototype.updateView=function(){var e=this.field;if(this.editable&&e&&e.editableFirstPart&&e.editableLastPart)this.renderInlineWrapper(e.editableFirstPart,e.editableLastPart);else if(e&&(e.href||e.value)){var t=e.href?e:e.value,n=e.text||e.value.text||e.href||e.value.href,r=Object.assign(Object.assign({},t),this.attrs);this.renderTemplate(r,n)}},e.prototype.renderTemplate=function(e,t){var n=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(r){Object.entries(e).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];if("href"===i&&(!o||/^https?:\/\/$/.test(o))){if(!r.href)return;o=r.href}"class"===i&&r.className&&(o+=" "+r.className),n.renderer.setAttribute(r,i,o)})),r.childNodes&&0===r.childNodes.length&&t&&(r.textContent=t)}))},e.prototype.renderInlineWrapper=function(e,t){var n=this,r=this.renderer.createElement("span");r.className="sc-link-wrapper",r.innerHTML=e+t;var i=Object.assign(Object.assign({},this.getElementAttrs()),this.attrs);Object.entries(i).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];return n.renderer.setAttribute(r,i,o)})),this.viewContainer.createEmbeddedView(this.templateRef);var o=this.renderer.parentNode(this.elementRef.nativeElement);this.renderer.insertBefore(o,r,this.elementRef.nativeElement),this.inlineRef=r},e.prototype.getElementAttrs=function(){var e=this.templateRef.createEmbeddedView(null).rootNodes[0];if(!e)return{};for(var t={},n=0;n<e.attributes.length;n++){var r=e.attributes.item(n);r&&(t[r.name]=r.value)}return t},e}();f.decorators=[{type:t.Directive,args:[{selector:"[scLink]"}]}],f.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef}]},f.propDecorators={editable:[{type:t.Input,args:["scLinkEditable"]}],attrs:[{type:t.Input,args:["scLinkAttrs"]}],field:[{type:t.Input,args:["scLink"]}]};var m=function(e){function t(t,n,r,i,o){var a=e.call(this,t,n,r,i)||this;return a.router=o,a.editable=!0,a.attrs={},a}return c(t,e),t.prototype.renderTemplate=function(e,t){var n=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(r){Object.entries(e).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];n.renderer.setAttribute(r,i,o),"href"===i&&n.renderer.listen(r,"click",(function(e){n.router.navigate([o]),e.preventDefault()}))})),r.childNodes&&0===r.childNodes.length&&t&&(r.textContent=t)}))},t}(f);m.decorators=[{type:t.Directive,args:[{selector:"[scRouterLink]"}]}],m.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef},{type:r.Router}]},m.propDecorators={editable:[{type:t.Input,args:["scRouterLinkEditable"]}],attrs:[{type:t.Input,args:["scRouterLinkAttrs"]}],field:[{type:t.Input,args:["scRouterLink"]}]};var h=function(e){function t(t,n,r,i,o){var a=e.call(this,t,n,r,i)||this;return a.router=o,a.editable=!0,a.attrs={},a}return c(t,e),t.prototype.renderTemplate=function(e,t){var n=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(r){Object.entries(e).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];if("href"!==i||n.isAbsoluteUrl(o))n.renderer.setAttribute(r,i,o);else{var a=n.router.createUrlTree([o],n.extras);n.renderer.setAttribute(r,i,n.router.serializeUrl(a)),n.renderer.listen(r,"click",(function(e){n.router.navigate([o],n.extras),e.preventDefault()}))}})),r.childNodes&&0===r.childNodes.length&&t&&(r.textContent=t)}))},t.prototype.isAbsoluteUrl=function(e){if(null===e)return!1;if("string"!=typeof e)throw new TypeError("Expected a string");return/^[a-z][a-z0-9+.-]*:/.test(e)},t}(f);h.decorators=[{type:t.Directive,args:[{selector:"[scGenericLink]"}]}],h.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef},{type:r.Router}]},h.propDecorators={editable:[{type:t.Input,args:["scGenericLinkEditable"]}],attrs:[{type:t.Input,args:["scGenericLinkAttrs"]}],field:[{type:t.Input,args:["scGenericLink"]}],extras:[{type:t.Input,args:["scGenericLinkExtras"]}]};var y=function(){};var v=new t.InjectionToken("Sc.placeholder.components"),g=new t.InjectionToken("Sc.placeholder.lazyComponents"),b=new t.InjectionToken("Sc.placeholder.missingComponentComponent"),C=new t.InjectionToken("Sc.placeholder.dynamicComponent"),R=function(){function e(e,t){this.renderer=e,this.elementRef=t}return e.prototype.ngOnInit=function(){var e=this.renderer.createElement(this.rendering.name),t=this.renderer.createText(this.rendering.contents||""),n=this.rendering.attributes;for(var r in n)if(n.hasOwnProperty(r)){var i=n[r];this.renderer.setAttribute(e,r,i||"")}this.renderer.appendChild(e,t);var o=this.renderer.parentNode(this.elementRef.nativeElement);this.renderer.insertBefore(o,e,this.elementRef.nativeElement),o.removeChild(this.elementRef.nativeElement)},e}();function w(e){return!e.componentName&&void 0!==e.name}R.decorators=[{type:t.Component,args:[{selector:"sc-raw",template:""}]}],R.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},R.propDecorators={rendering:[{type:t.Input}]};var E=function(){function e(e,t,n,r){var i=this;this.injector=e,this.compiler=t,this.components=n,this.lazyComponents=r,this.componentMap=new Map,this.lazyComponentMap=new Map,this.components.forEach((function(e){return i.componentMap.set(e.name,e.type)})),this.lazyComponents&&this.lazyComponents.forEach((function(e){return i.lazyComponentMap.set(e.path,e)}))}return e.prototype.loadModuleFactory=function(e){var n=this;return e.loadChildren().then((function(e){return e instanceof t.NgModuleFactory?e:n.compiler.compileModuleAsync(e)}))},e.prototype.getComponent=function(e){var t=this;if(this.componentMap.get(e.componentName))return Promise.resolve({componentDefinition:e,componentImplementation:this.componentMap.get(e.componentName)});var n=this.lazyComponentMap.get(e.componentName);return n?this.loadModuleFactory(n).then((function(r){var i=null,o=r.create(t.injector),a=o.injector.get(C);if(!a)throw new Error('JssComponentFactoryService: Lazy load module for component "'+n.path+'" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?');if(e.componentName in a)i=a[e.componentName];else{if("function"!=typeof a)throw new Error('JssComponentFactoryService: Lazy load module for component "'+n.path+'" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?');i=a}return{componentDefinition:e,componentImplementation:i,componentFactory:o.componentFactoryResolver.resolveComponentFactory(i)}})):Promise.resolve({componentDefinition:e})},e.prototype.getComponents=function(e){var t=this;return Promise.all(e.map((function(e){return w(e)?t.getRawComponent(e):t.getComponent(e)})))},e.prototype.getRawComponent=function(e){return Promise.resolve({componentImplementation:R,componentDefinition:e})},e}();E.decorators=[{type:t.Injectable}],E.ctorParameters=function(){return[{type:t.Injector},{type:t.Compiler},{type:Array,decorators:[{type:t.Inject,args:[v]}]},{type:Array,decorators:[{type:t.Inject,args:[g]}]}]};var I=function(e){this.templateRef=e};I.decorators=[{type:t.Directive,args:[{selector:"[scPlaceholderLoading]"}]}],I.ctorParameters=function(){return[{type:t.TemplateRef}]};var O=function(e){this.templateRef=e};O.decorators=[{type:t.Directive,args:[{selector:"[renderEach]"}]}],O.ctorParameters=function(){return[{type:t.TemplateRef}]};var j=function(e){this.templateRef=e};j.decorators=[{type:t.Directive,args:[{selector:"[renderEmpty]"}]}],j.ctorParameters=function(){return[{type:t.TemplateRef}]};var P=function(){function e(e,n,r,i,o,a,s){this.componentFactoryResolver=e,this.differs=n,this.componentFactory=r,this.changeDetectorRef=i,this.elementRef=o,this.renderer=a,this.missingComponentComponent=s,this._componentInstances=[],this.destroyed=!1,this.parentStyleAttribute="",this.isLoading=!0,this.loaded=new t.EventEmitter}return Object.defineProperty(e.prototype,"inputs",{set:function(e){this._inputs=e,!this._differ&&e&&(this._differ=this.differs.find(e).create())},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e=this.elementRef.nativeElement;if(e)for(var t=e.attributes,n=0;n<t.length;n++){var r=t.item(n);r&&-1!==r.name.indexOf("_ngcontent")&&(this.parentStyleAttribute=r.name)}},e.prototype.ngOnDestroy=function(){this.destroyed=!0,this._componentInstances=[]},e.prototype.ngOnChanges=function(e){(e.rendering||e.renderings)&&this._render()},e.prototype.ngDoCheck=function(){var e=this;if(this._differ&&this._inputs&&0!==this._componentInstances.length){var t=this._differ.diff(this._inputs);if(t){var n={};t.forEachRemovedItem((function(e){return n[e.key]=null})),t.forEachAddedItem((function(e){return n[e.key]=e.currentValue})),t.forEachChangedItem((function(e){return n[e.key]=e.currentValue})),this._componentInstances.forEach((function(t){return e._setComponentInputs(t,n)}))}}},e.prototype._setComponentInputs=function(e,t){Object.entries(t).forEach((function(t){var n=l(t,2),r=n[0],i=n[1];return e[r]=i}))},e.prototype._subscribeComponentOutputs=function(e,t){var n=this;Object.keys(t).filter((function(t){return e[t]&&e[t]instanceof i.Observable})).forEach((function(r){return e[r].pipe(o.takeWhile((function(){return!n.destroyed}))).subscribe(t[r])}))},e.prototype._render=function(){var e=this;if(this._componentInstances=[],this.view.clear(),this.rendering||this.renderings){if(!this.name&&!this.renderings)return console.warn("Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings."),void(this.isLoading=!1);var t,n,r=this.renderings||(t=this.rendering,n=this.name||"",t&&t.placeholders&&Object.keys(t.placeholders).length>0?t.placeholders[n]:null);if(!r)return console.warn("Placeholder '"+this.name+"' was not found in the current rendering data",JSON.stringify(this.rendering,null,2)),void(this.isLoading=!1);var i=r.every((function(e){return w(e)}));this.renderEmptyTemplate&&i?(this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef,{renderings:r}),this.isLoading=!1):this.componentFactory.getComponents(r).then((function(t){return t.forEach((function(t,n){e.renderEachTemplate&&!w(t.componentDefinition)?e._renderTemplatedComponent(t.componentDefinition,n):e._renderEmbeddedComponent(t,n),e.isLoading=!1}))})).then((function(){e.changeDetectorRef.markForCheck(),e.loaded.emit(e.name)}))}},e.prototype._renderTemplatedComponent=function(e,t){this.view.createEmbeddedView(this.renderEachTemplate.templateRef,{rendering:e,index:t})},e.prototype._renderEmbeddedComponent=function(e,t){if(!e.componentImplementation){var n=e.componentDefinition.componentName;console.error("Placeholder "+this.name+" contains unknown component "+n+".","Ensure component is mapped, like:\n JssModule.withComponents([\n { name: '"+n+"', type: "+n+"Component }\n ])"),e.componentImplementation=this.missingComponentComponent}var r=e.componentFactory||this.componentFactoryResolver.resolveComponentFactory(e.componentImplementation),i=this.view.createComponent(r,t);this.parentStyleAttribute&&this.renderer.setAttribute(i.location.nativeElement,this.parentStyleAttribute,"");var o=i.instance;o.rendering=e.componentDefinition,this._inputs&&this._setComponentInputs(o,this._inputs),this.outputs&&this._subscribeComponentOutputs(o,this.outputs),this._componentInstances.push(o)},e}();P.decorators=[{type:t.Component,args:[{selector:"sc-placeholder,[sc-placeholder]",template:'\n <ng-template\n *ngIf="isLoading"\n [ngTemplateOutlet]="placeholderLoading?.templateRef"\n ></ng-template>\n <ng-template #view></ng-template>\n '}]}],P.ctorParameters=function(){return[{type:t.ComponentFactoryResolver},{type:t.KeyValueDiffers},{type:E},{type:t.ChangeDetectorRef},{type:t.ElementRef},{type:t.Renderer2},{type:t.Type,decorators:[{type:t.Inject,args:[b]}]}]},P.propDecorators={name:[{type:t.Input}],rendering:[{type:t.Input}],renderings:[{type:t.Input}],outputs:[{type:t.Input}],loaded:[{type:t.Output}],view:[{type:t.ViewChild,args:["view",{read:t.ViewContainerRef,static:!0}]}],renderEachTemplate:[{type:t.ContentChild,args:[O,{static:!0}]}],renderEmptyTemplate:[{type:t.ContentChild,args:[j,{static:!0}]}],placeholderLoading:[{type:t.ContentChild,args:[I,{static:!0}]}],inputs:[{type:t.Input}]};var T=function(){function e(e,t){this.viewContainer=e,this.templateRef=t,this.editable=!0}return e.prototype.ngOnChanges=function(e){(e.field||e.editable)&&(this.viewRef||(this.viewContainer.clear(),this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef)),this.updateView())},e.prototype.updateView=function(){var e=this.field;if(e&&(e.editable||e.value)){var t=e.editable&&this.editable?e.editable:e.value;this.viewRef.rootNodes.forEach((function(e){e.innerHTML=t}))}},e}();T.decorators=[{type:t.Directive,args:[{selector:"[scRichText]"}]}],T.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef}]},T.propDecorators={editable:[{type:t.Input,args:["scRichTextEditable"]}],field:[{type:t.Input,args:["scRichText"]}]};var D=function(){function e(e,t){this.viewContainer=e,this.templateRef=t,this.editable=!0,this.encode=!0}return e.prototype.ngOnChanges=function(e){(e.field||e.editable||e.encode)&&(this.viewRef||(this.viewContainer.clear(),this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef)),this.updateView())},e.prototype.updateView=function(){var e=this.field,t=this.editable;if(e&&(e.editable||e.value)){this.encode||(t=!1);var n=e.editable&&t?e.editable:e.value,r=e.editable&&t||!this.encode;this.viewRef.rootNodes.forEach((function(e){r?e.innerHTML=n:e.textContent=n}))}},e}();D.decorators=[{type:t.Directive,args:[{selector:"[scText]"}]}],D.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef}]},D.propDecorators={editable:[{type:t.Input,args:["scTextEditable"]}],encode:[{type:t.Input,args:["scTextEncode"]}],field:[{type:t.Input,args:["scText"]}]};var _=function(){},N=n.dataApi.fetchRouteData,x=n.dataApi.fetchPlaceholderData,A=function(){function e(){}return e.getLayoutServiceError=function(e){var t=new _,n=e.response;return n&&(t.status=n.status,t.statusText=n.statusText,t.data=n.data),i.throwError(t)},e.prototype.getRouteData=function(t,n){return i.from(N(t,n)).pipe(o.catchError(e.getLayoutServiceError))},e.prototype.getPlaceholderData=function(t,n,r){return i.from(x(n,t,r)).pipe(o.catchError(e.getLayoutServiceError))},e}();A.decorators=[{type:t.Injectable}];var V=function(){function e(e,t,n){this.viewContainer=e,this.templateRef=t,this.datePipe=n,this.editable=!0}return e.prototype.ngOnChanges=function(e){(e.field||e.format)&&(this.viewRef||(this.viewContainer.clear(),this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef)),this.updateView())},e.prototype.updateView=function(){var e=this,t=this.field;if(t&&(t.editable||t.value)){var n=t.editable&&this.editable?t.editable:t.value,r=t.editable&&this.editable;this.viewRef.rootNodes.forEach((function(t){r?t.innerHTML=n:t.textContent=e.datePipe.transform(n,e.format,e.timezone,e.locale)}))}},e}();V.decorators=[{type:t.Directive,args:[{selector:"[scDate]"}]}],V.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:a.DatePipe}]},V.propDecorators={format:[{type:t.Input,args:["scDateFormat"]}],timezone:[{type:t.Input,args:["scDateTimezone"]}],locale:[{type:t.Input,args:["scDateLocale"]}],editable:[{type:t.Input,args:["scDateEditable"]}],field:[{type:t.Input,args:["scDate"]}]};var L=function(){};L.decorators=[{type:t.Component,args:[{selector:"sc-missing-component",template:'\n <div\n style="background: darkorange; outline: 5px solid orange; padding: 10px; color: white; max-width: 500px;"\n >\n <h2>{{ rendering.componentName }}</h2>\n <p>JSS component is missing Angular component implementation.</p>\n </div>\n '}]}],L.propDecorators={rendering:[{type:t.Input}]};var M=function(){function e(e,t,n,r){this.componentFactoryResolver=e,this.differs=t,this.componentFactory=n,this.missingComponentComponent=r,this.destroyed=!1}return Object.defineProperty(e.prototype,"inputs",{set:function(e){this._inputs=e,!this._differ&&e&&(this._differ=this.differs.find(e).create())},enumerable:!1,configurable:!0}),e.prototype.ngOnChanges=function(e){e.rendering&&this._render()},e.prototype._setComponentInputs=function(e,t){Object.entries(t).forEach((function(t){var n=l(t,2),r=n[0],i=n[1];return e[r]=i}))},e.prototype._subscribeComponentOutputs=function(e,t){var n=this;Object.keys(t).filter((function(t){return e[t]&&e[t]instanceof i.Observable})).forEach((function(r){return e[r].pipe(o.takeWhile((function(){return!n.destroyed}))).subscribe(t[r])}))},e.prototype._render=function(){var e=this;(this.view.clear(),this.rendering)&&(w(this.rendering)?Promise.resolve({componentImplementation:R,componentDefinition:this.rendering}):this.componentFactory.getComponent(this.rendering)).then((function(t){if(!t.componentImplementation){var n=t.componentDefinition.componentName;console.error("Attempted to render unknown component "+n+".","Ensure component is mapped, like:\n JssModule.withComponents([\n { name: '"+n+"', type: "+n+"Component }\n ])"),t.componentImplementation=e.missingComponentComponent}var r=t.componentFactory||e.componentFactoryResolver.resolveComponentFactory(t.componentImplementation),i=e.view.createComponent(r,0).instance;i.rendering=t.componentDefinition,e._inputs&&e._setComponentInputs(i,e._inputs),e.outputs&&e._subscribeComponentOutputs(i,e.outputs)}))},e}();M.decorators=[{type:t.Component,args:[{selector:"sc-render-component",template:"\n <ng-template #view></ng-template>\n "}]}],M.ctorParameters=function(){return[{type:t.ComponentFactoryResolver},{type:t.KeyValueDiffers},{type:E},{type:t.Type,decorators:[{type:t.Inject,args:[b]}]}]},M.propDecorators={rendering:[{type:t.Input}],outputs:[{type:t.Input}],view:[{type:t.ViewChild,args:["view",{read:t.ViewContainerRef,static:!0}]}],inputs:[{type:t.Input}]};var k=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[A,a.DatePipe,E]}},e.forChild=function(n){return{ngModule:e,providers:[{provide:t.ANALYZE_FOR_ENTRY_COMPONENTS,useValue:n,multi:!0},{provide:r.ROUTES,useValue:[],multi:!0},{provide:C,useValue:n}]}},e.withComponents=function(n,i){return{ngModule:e,providers:u([{provide:t.ANALYZE_FOR_ENTRY_COMPONENTS,useValue:n,multi:!0},{provide:v,useValue:n},{provide:g,useValue:i||[]},{provide:r.ROUTES,useValue:i||[],multi:!0},{provide:b,useValue:L}],e.forRoot().providers)}},e}();k.decorators=[{type:t.NgModule,args:[{imports:[a.CommonModule],declarations:[s,d,f,m,h,V,O,j,I,M,P,R,T,D,L],exports:[s,d,V,f,m,h,O,j,M,P,I,T,D],entryComponents:[R,L]}]}],Object.defineProperty(e,"dataApi",{enumerable:!0,get:function(){return n.dataApi}}),Object.defineProperty(e,"getChildPlaceholder",{enumerable:!0,get:function(){return n.getChildPlaceholder}}),Object.defineProperty(e,"getFieldValue",{enumerable:!0,get:function(){return n.getFieldValue}}),Object.defineProperty(e,"isExperienceEditorActive",{enumerable:!0,get:function(){return n.isExperienceEditorActive}}),Object.defineProperty(e,"isServer",{enumerable:!0,get:function(){return n.isServer}}),Object.defineProperty(e,"mediaApi",{enumerable:!0,get:function(){return n.mediaApi}}),Object.defineProperty(e,"resetExperienceEditorChromes",{enumerable:!0,get:function(){return n.resetExperienceEditorChromes}}),e.ComponentNameAndType=y,e.DYNAMIC_COMPONENT=C,e.FileDirective=s,e.GenericLinkDirective=h,e.ImageDirective=d,e.JssModule=k,e.LayoutService=A,e.LayoutServiceError=_,e.LinkDirective=f,e.PlaceholderComponent=P,e.PlaceholderLoadingDirective=I,e.RichTextDirective=T,e.RouterLinkDirective=m,e.TextDirective=D,e.isRawRendering=w,e.ɵb=v,e.ɵc=g,e.ɵd=b,e.ɵe=O,e.ɵf=j,e.ɵg=E,e.ɵh=V,e.ɵi=M,e.ɵj=R,e.ɵk=L,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
16
|
+
var p=function(e,t){return(p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function c(e,t){function n(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function l(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function u(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(l(arguments[t]));return e}var d=function(){function e(e,t,n,r){this.viewContainer=e,this.templateRef=t,this.renderer=n,this.elementRef=r,this.inlineRef=null,this.editable=!0,this.urlParams={},this.attrs={}}return e.prototype.ngOnChanges=function(e){(e.field||e.editable||e.urlParams||e.attrs)&&(this.viewContainer.clear(),this.inlineRef&&(this.inlineRef.remove(),this.inlineRef=null),this.updateView())},e.prototype.updateView=function(){var e=Object.assign(Object.assign({},this.getElementAttrs()),this.attrs),t=this.field;if(t&&(t.editable||t.value||t.src)){var r={};if(this.editable&&t.editable){var i=n.mediaApi.findEditorImageTag(t.editable);if(!i)return this.renderInlineWrapper(t.editable);if(!(r=this.getImageAttrs(i.attrs,e,this.urlParams)))return this.renderInlineWrapper(t.editable);var o=this.renderer.createElement("img");Object.entries(r).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];return o.setAttribute(n,r)}));var a=t.editable.replace(i.imgTag,o.outerHTML);return this.renderInlineWrapper(a)}var s=t.src?t:t.value;if(!s)return null;(r=this.getImageAttrs(s,e,this.urlParams))&&this.renderTemplate(r)}},e.prototype.getImageAttrs=function(e,t,r){var i=Object.assign(Object.assign({},e),t),o=i.src,a=i.srcSet,s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}(i,["src","srcSet"]);if(!o)return null;var p=Object.assign({},s);return o=n.mediaApi.updateImageUrl(o,r,this.mediaUrlPrefix),a?p.srcSet=n.mediaApi.getSrcSet(o,a,r,this.mediaUrlPrefix):p.src=o,p},e.prototype.renderTemplate=function(e){var t=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(n){Object.entries(e).forEach((function(e){var r=l(e,2),i=r[0],o=r[1];return t.renderer.setAttribute(n,i,o)}))}))},e.prototype.getElementAttrs=function(){var e=this.templateRef.createEmbeddedView(null),t=e.rootNodes[0];if(!t)return e.destroy(),{};for(var n={},r=0;r<t.attributes.length;r++){var i=t.attributes.item(r);i&&(n[i.name]=i.value)}return e.destroy(),n},e.prototype.renderInlineWrapper=function(e){var t=this.renderer.createElement("span");t.className="sc-image-wrapper",t.innerHTML=e;var n=this.renderer.parentNode(this.elementRef.nativeElement);this.renderer.insertBefore(n,t,this.elementRef.nativeElement),n.removeChild(this.elementRef.nativeElement),this.inlineRef=t},e}();d.decorators=[{type:t.Directive,args:[{selector:"[scImage]"}]}],d.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef}]},d.propDecorators={field:[{type:t.Input,args:["scImage"]}],editable:[{type:t.Input,args:["scImageEditable"]}],mediaUrlPrefix:[{type:t.Input,args:["scImageMediaUrlPrefix"]}],urlParams:[{type:t.Input,args:["scImageUrlParams"]}],attrs:[{type:t.Input,args:["scImageAttrs"]}]};var f=function(){function e(e,t,n,r){this.viewContainer=e,this.templateRef=t,this.renderer=n,this.elementRef=r,this.inlineRef=null,this.editable=!0,this.attrs={}}return e.prototype.ngOnChanges=function(e){(e.field||e.editable||e.attrs)&&(this.viewContainer.clear(),this.inlineRef&&(this.inlineRef.remove(),this.inlineRef=null),this.updateView())},e.prototype.updateView=function(){var e=this.field;if(this.editable&&e&&e.editableFirstPart&&e.editableLastPart)this.renderInlineWrapper(e.editableFirstPart,e.editableLastPart);else if(e&&(e.href||e.value)){var t=e.href?e:e.value,n=e.text||e.value.text||e.href||e.value.href,r=Object.assign(Object.assign({},t),this.attrs);this.renderTemplate(r,n)}},e.prototype.renderTemplate=function(e,t){var n=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(r){Object.entries(e).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];if("href"===i&&(!o||/^https?:\/\/$/.test(o))){if(!r.href)return;o=r.href}"class"===i&&r.className&&(o+=" "+r.className),n.renderer.setAttribute(r,i,o)})),r.childNodes&&0===r.childNodes.length&&t&&(r.textContent=t)}))},e.prototype.renderInlineWrapper=function(e,t){var n=this,r=this.renderer.createElement("span");r.className="sc-link-wrapper",r.innerHTML=e+t;var i=Object.assign(Object.assign({},this.getElementAttrs()),this.attrs);Object.entries(i).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];return n.renderer.setAttribute(r,i,o)})),this.viewContainer.createEmbeddedView(this.templateRef);var o=this.renderer.parentNode(this.elementRef.nativeElement);this.renderer.insertBefore(o,r,this.elementRef.nativeElement),this.inlineRef=r},e.prototype.getElementAttrs=function(){var e=this.templateRef.createEmbeddedView(null),t=e.rootNodes[0];if(!t)return e.destroy(),{};for(var n={},r=0;r<t.attributes.length;r++){var i=t.attributes.item(r);i&&(n[i.name]=i.value)}return e.destroy(),n},e}();f.decorators=[{type:t.Directive,args:[{selector:"[scLink]"}]}],f.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef}]},f.propDecorators={editable:[{type:t.Input,args:["scLinkEditable"]}],attrs:[{type:t.Input,args:["scLinkAttrs"]}],field:[{type:t.Input,args:["scLink"]}]};var m=function(e){function t(t,n,r,i,o){var a=e.call(this,t,n,r,i)||this;return a.router=o,a.editable=!0,a.attrs={},a}return c(t,e),t.prototype.renderTemplate=function(e,t){var n=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(r){Object.entries(e).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];n.renderer.setAttribute(r,i,o),"href"===i&&n.renderer.listen(r,"click",(function(e){n.router.navigate([o]),e.preventDefault()}))})),r.childNodes&&0===r.childNodes.length&&t&&(r.textContent=t)}))},t}(f);m.decorators=[{type:t.Directive,args:[{selector:"[scRouterLink]"}]}],m.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef},{type:r.Router}]},m.propDecorators={editable:[{type:t.Input,args:["scRouterLinkEditable"]}],attrs:[{type:t.Input,args:["scRouterLinkAttrs"]}],field:[{type:t.Input,args:["scRouterLink"]}]};var h=function(e){function t(t,n,r,i,o){var a=e.call(this,t,n,r,i)||this;return a.router=o,a.editable=!0,a.attrs={},a}return c(t,e),t.prototype.renderTemplate=function(e,t){var n=this;this.viewContainer.createEmbeddedView(this.templateRef).rootNodes.forEach((function(r){Object.entries(e).forEach((function(e){var t=l(e,2),i=t[0],o=t[1];if("href"!==i||n.isAbsoluteUrl(o))n.renderer.setAttribute(r,i,o);else{var a=n.router.createUrlTree([o],n.extras);n.renderer.setAttribute(r,i,n.router.serializeUrl(a)),n.renderer.listen(r,"click",(function(e){n.router.navigate([o],n.extras),e.preventDefault()}))}})),r.childNodes&&0===r.childNodes.length&&t&&(r.textContent=t)}))},t.prototype.isAbsoluteUrl=function(e){if(null===e)return!1;if("string"!=typeof e)throw new TypeError("Expected a string");return/^[a-z][a-z0-9+.-]*:/.test(e)},t}(f);h.decorators=[{type:t.Directive,args:[{selector:"[scGenericLink]"}]}],h.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:t.Renderer2},{type:t.ElementRef},{type:r.Router}]},h.propDecorators={editable:[{type:t.Input,args:["scGenericLinkEditable"]}],attrs:[{type:t.Input,args:["scGenericLinkAttrs"]}],field:[{type:t.Input,args:["scGenericLink"]}],extras:[{type:t.Input,args:["scGenericLinkExtras"]}]};var y=function(){};var v=new t.InjectionToken("Sc.placeholder.components"),g=new t.InjectionToken("Sc.placeholder.lazyComponents"),b=new t.InjectionToken("Sc.placeholder.missingComponentComponent"),C=new t.InjectionToken("Sc.placeholder.dynamicComponent"),R=function(){function e(e,t){this.renderer=e,this.elementRef=t}return e.prototype.ngOnInit=function(){var e=this.renderer.createElement(this.rendering.name),t=this.renderer.createText(this.rendering.contents||""),n=this.rendering.attributes;for(var r in n)if(n.hasOwnProperty(r)){var i=n[r];this.renderer.setAttribute(e,r,i||"")}this.renderer.appendChild(e,t);var o=this.renderer.parentNode(this.elementRef.nativeElement);this.renderer.insertBefore(o,e,this.elementRef.nativeElement),o.removeChild(this.elementRef.nativeElement)},e}();function w(e){return!e.componentName&&void 0!==e.name}R.decorators=[{type:t.Component,args:[{selector:"sc-raw",template:""}]}],R.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},R.propDecorators={rendering:[{type:t.Input}]};var E=function(){function e(e,t,n,r){var i=this;this.injector=e,this.compiler=t,this.components=n,this.lazyComponents=r,this.componentMap=new Map,this.lazyComponentMap=new Map,this.components.forEach((function(e){return i.componentMap.set(e.name,e.type)})),this.lazyComponents&&this.lazyComponents.forEach((function(e){return i.lazyComponentMap.set(e.path,e)}))}return e.prototype.loadModuleFactory=function(e){var n=this;return e.loadChildren().then((function(e){return e instanceof t.NgModuleFactory?e:n.compiler.compileModuleAsync(e)}))},e.prototype.getComponent=function(e){var t=this;if(this.componentMap.get(e.componentName))return Promise.resolve({componentDefinition:e,componentImplementation:this.componentMap.get(e.componentName)});var n=this.lazyComponentMap.get(e.componentName);return n?this.loadModuleFactory(n).then((function(r){var i=null,o=r.create(t.injector),a=o.injector.get(C);if(!a)throw new Error('JssComponentFactoryService: Lazy load module for component "'+n.path+'" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?');if(e.componentName in a)i=a[e.componentName];else{if("function"!=typeof a)throw new Error('JssComponentFactoryService: Lazy load module for component "'+n.path+'" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?');i=a}return{componentDefinition:e,componentImplementation:i,componentFactory:o.componentFactoryResolver.resolveComponentFactory(i)}})):Promise.resolve({componentDefinition:e})},e.prototype.getComponents=function(e){var t=this;return Promise.all(e.map((function(e){return w(e)?t.getRawComponent(e):t.getComponent(e)})))},e.prototype.getRawComponent=function(e){return Promise.resolve({componentImplementation:R,componentDefinition:e})},e}();E.decorators=[{type:t.Injectable}],E.ctorParameters=function(){return[{type:t.Injector},{type:t.Compiler},{type:Array,decorators:[{type:t.Inject,args:[v]}]},{type:Array,decorators:[{type:t.Inject,args:[g]}]}]};var I=function(e){this.templateRef=e};I.decorators=[{type:t.Directive,args:[{selector:"[scPlaceholderLoading]"}]}],I.ctorParameters=function(){return[{type:t.TemplateRef}]};var O=function(e){this.templateRef=e};O.decorators=[{type:t.Directive,args:[{selector:"[renderEach]"}]}],O.ctorParameters=function(){return[{type:t.TemplateRef}]};var j=function(e){this.templateRef=e};j.decorators=[{type:t.Directive,args:[{selector:"[renderEmpty]"}]}],j.ctorParameters=function(){return[{type:t.TemplateRef}]};var P=function(){function e(e,n,r,i,o,a,s){this.componentFactoryResolver=e,this.differs=n,this.componentFactory=r,this.changeDetectorRef=i,this.elementRef=o,this.renderer=a,this.missingComponentComponent=s,this._componentInstances=[],this.destroyed=!1,this.parentStyleAttribute="",this.isLoading=!0,this.loaded=new t.EventEmitter}return Object.defineProperty(e.prototype,"inputs",{set:function(e){this._inputs=e,!this._differ&&e&&(this._differ=this.differs.find(e).create())},enumerable:!1,configurable:!0}),e.prototype.ngOnInit=function(){var e=this.elementRef.nativeElement;if(e)for(var t=e.attributes,n=0;n<t.length;n++){var r=t.item(n);r&&-1!==r.name.indexOf("_ngcontent")&&(this.parentStyleAttribute=r.name)}},e.prototype.ngOnDestroy=function(){this.destroyed=!0,this._componentInstances=[]},e.prototype.ngOnChanges=function(e){(e.rendering||e.renderings)&&this._render()},e.prototype.ngDoCheck=function(){var e=this;if(this._differ&&this._inputs&&0!==this._componentInstances.length){var t=this._differ.diff(this._inputs);if(t){var n={};t.forEachRemovedItem((function(e){return n[e.key]=null})),t.forEachAddedItem((function(e){return n[e.key]=e.currentValue})),t.forEachChangedItem((function(e){return n[e.key]=e.currentValue})),this._componentInstances.forEach((function(t){return e._setComponentInputs(t,n)}))}}},e.prototype._setComponentInputs=function(e,t){Object.entries(t).forEach((function(t){var n=l(t,2),r=n[0],i=n[1];return e[r]=i}))},e.prototype._subscribeComponentOutputs=function(e,t){var n=this;Object.keys(t).filter((function(t){return e[t]&&e[t]instanceof i.Observable})).forEach((function(r){return e[r].pipe(o.takeWhile((function(){return!n.destroyed}))).subscribe(t[r])}))},e.prototype._render=function(){var e=this;if(this._componentInstances=[],this.view.clear(),this.rendering||this.renderings){if(!this.name&&!this.renderings)return console.warn("Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings."),void(this.isLoading=!1);var t,n,r=this.renderings||(t=this.rendering,n=this.name||"",t&&t.placeholders&&Object.keys(t.placeholders).length>0?t.placeholders[n]:null);if(!r)return console.warn("Placeholder '"+this.name+"' was not found in the current rendering data",JSON.stringify(this.rendering,null,2)),void(this.isLoading=!1);var i=r.every((function(e){return w(e)}));this.renderEmptyTemplate&&i?(this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef,{renderings:r}),this.isLoading=!1):this.componentFactory.getComponents(r).then((function(t){return t.forEach((function(t,n){e.renderEachTemplate&&!w(t.componentDefinition)?e._renderTemplatedComponent(t.componentDefinition,n):e._renderEmbeddedComponent(t,n),e.isLoading=!1}))})).then((function(){e.changeDetectorRef.markForCheck(),e.loaded.emit(e.name)}))}},e.prototype._renderTemplatedComponent=function(e,t){this.view.createEmbeddedView(this.renderEachTemplate.templateRef,{rendering:e,index:t})},e.prototype._renderEmbeddedComponent=function(e,t){if(!e.componentImplementation){var n=e.componentDefinition.componentName;console.error("Placeholder "+this.name+" contains unknown component "+n+".","Ensure component is mapped, like:\n JssModule.withComponents([\n { name: '"+n+"', type: "+n+"Component }\n ])"),e.componentImplementation=this.missingComponentComponent}var r=e.componentFactory||this.componentFactoryResolver.resolveComponentFactory(e.componentImplementation),i=this.view.createComponent(r,t);this.parentStyleAttribute&&this.renderer.setAttribute(i.location.nativeElement,this.parentStyleAttribute,"");var o=i.instance;o.rendering=e.componentDefinition,this._inputs&&this._setComponentInputs(o,this._inputs),this.outputs&&this._subscribeComponentOutputs(o,this.outputs),this._componentInstances.push(o)},e}();P.decorators=[{type:t.Component,args:[{selector:"sc-placeholder,[sc-placeholder]",template:'\n <ng-template\n *ngIf="isLoading"\n [ngTemplateOutlet]="placeholderLoading?.templateRef"\n ></ng-template>\n <ng-template #view></ng-template>\n '}]}],P.ctorParameters=function(){return[{type:t.ComponentFactoryResolver},{type:t.KeyValueDiffers},{type:E},{type:t.ChangeDetectorRef},{type:t.ElementRef},{type:t.Renderer2},{type:t.Type,decorators:[{type:t.Inject,args:[b]}]}]},P.propDecorators={name:[{type:t.Input}],rendering:[{type:t.Input}],renderings:[{type:t.Input}],outputs:[{type:t.Input}],loaded:[{type:t.Output}],view:[{type:t.ViewChild,args:["view",{read:t.ViewContainerRef,static:!0}]}],renderEachTemplate:[{type:t.ContentChild,args:[O,{static:!0}]}],renderEmptyTemplate:[{type:t.ContentChild,args:[j,{static:!0}]}],placeholderLoading:[{type:t.ContentChild,args:[I,{static:!0}]}],inputs:[{type:t.Input}]};var T=function(){function e(e,t){this.viewContainer=e,this.templateRef=t,this.editable=!0}return e.prototype.ngOnChanges=function(e){(e.field||e.editable)&&(this.viewRef||(this.viewContainer.clear(),this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef)),this.updateView())},e.prototype.updateView=function(){var e=this.field;if(e&&(e.editable||e.value)){var t=e.editable&&this.editable?e.editable:e.value;this.viewRef.rootNodes.forEach((function(e){e.innerHTML=t}))}},e}();T.decorators=[{type:t.Directive,args:[{selector:"[scRichText]"}]}],T.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef}]},T.propDecorators={editable:[{type:t.Input,args:["scRichTextEditable"]}],field:[{type:t.Input,args:["scRichText"]}]};var D=function(){function e(e,t){this.viewContainer=e,this.templateRef=t,this.editable=!0,this.encode=!0}return e.prototype.ngOnChanges=function(e){(e.field||e.editable||e.encode)&&(this.viewRef||(this.viewContainer.clear(),this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef)),this.updateView())},e.prototype.updateView=function(){var e=this.field,t=this.editable;if(e&&(e.editable||e.value)){this.encode||(t=!1);var n=e.editable&&t?e.editable:e.value,r=e.editable&&t||!this.encode;this.viewRef.rootNodes.forEach((function(e){r?e.innerHTML=n:e.textContent=n}))}},e}();D.decorators=[{type:t.Directive,args:[{selector:"[scText]"}]}],D.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef}]},D.propDecorators={editable:[{type:t.Input,args:["scTextEditable"]}],encode:[{type:t.Input,args:["scTextEncode"]}],field:[{type:t.Input,args:["scText"]}]};var _=function(){},N=n.dataApi.fetchRouteData,x=n.dataApi.fetchPlaceholderData,A=function(){function e(){}return e.getLayoutServiceError=function(e){var t=new _,n=e.response;return n&&(t.status=n.status,t.statusText=n.statusText,t.data=n.data),i.throwError(t)},e.prototype.getRouteData=function(t,n){return i.from(N(t,n)).pipe(o.catchError(e.getLayoutServiceError))},e.prototype.getPlaceholderData=function(t,n,r){return i.from(x(n,t,r)).pipe(o.catchError(e.getLayoutServiceError))},e}();A.decorators=[{type:t.Injectable}];var V=function(){function e(e,t,n){this.viewContainer=e,this.templateRef=t,this.datePipe=n,this.editable=!0}return e.prototype.ngOnChanges=function(e){(e.field||e.format)&&(this.viewRef||(this.viewContainer.clear(),this.viewRef=this.viewContainer.createEmbeddedView(this.templateRef)),this.updateView())},e.prototype.updateView=function(){var e=this,t=this.field;if(t&&(t.editable||t.value)){var n=t.editable&&this.editable?t.editable:t.value,r=t.editable&&this.editable;this.viewRef.rootNodes.forEach((function(t){r?t.innerHTML=n:t.textContent=e.datePipe.transform(n,e.format,e.timezone,e.locale)}))}},e}();V.decorators=[{type:t.Directive,args:[{selector:"[scDate]"}]}],V.ctorParameters=function(){return[{type:t.ViewContainerRef},{type:t.TemplateRef},{type:a.DatePipe}]},V.propDecorators={format:[{type:t.Input,args:["scDateFormat"]}],timezone:[{type:t.Input,args:["scDateTimezone"]}],locale:[{type:t.Input,args:["scDateLocale"]}],editable:[{type:t.Input,args:["scDateEditable"]}],field:[{type:t.Input,args:["scDate"]}]};var L=function(){};L.decorators=[{type:t.Component,args:[{selector:"sc-missing-component",template:'\n <div\n style="background: darkorange; outline: 5px solid orange; padding: 10px; color: white; max-width: 500px;"\n >\n <h2>{{ rendering.componentName }}</h2>\n <p>JSS component is missing Angular component implementation.</p>\n </div>\n '}]}],L.propDecorators={rendering:[{type:t.Input}]};var M=function(){function e(e,t,n,r){this.componentFactoryResolver=e,this.differs=t,this.componentFactory=n,this.missingComponentComponent=r,this.destroyed=!1}return Object.defineProperty(e.prototype,"inputs",{set:function(e){this._inputs=e,!this._differ&&e&&(this._differ=this.differs.find(e).create())},enumerable:!1,configurable:!0}),e.prototype.ngOnChanges=function(e){e.rendering&&this._render()},e.prototype._setComponentInputs=function(e,t){Object.entries(t).forEach((function(t){var n=l(t,2),r=n[0],i=n[1];return e[r]=i}))},e.prototype._subscribeComponentOutputs=function(e,t){var n=this;Object.keys(t).filter((function(t){return e[t]&&e[t]instanceof i.Observable})).forEach((function(r){return e[r].pipe(o.takeWhile((function(){return!n.destroyed}))).subscribe(t[r])}))},e.prototype._render=function(){var e=this;(this.view.clear(),this.rendering)&&(w(this.rendering)?Promise.resolve({componentImplementation:R,componentDefinition:this.rendering}):this.componentFactory.getComponent(this.rendering)).then((function(t){if(!t.componentImplementation){var n=t.componentDefinition.componentName;console.error("Attempted to render unknown component "+n+".","Ensure component is mapped, like:\n JssModule.withComponents([\n { name: '"+n+"', type: "+n+"Component }\n ])"),t.componentImplementation=e.missingComponentComponent}var r=t.componentFactory||e.componentFactoryResolver.resolveComponentFactory(t.componentImplementation),i=e.view.createComponent(r,0).instance;i.rendering=t.componentDefinition,e._inputs&&e._setComponentInputs(i,e._inputs),e.outputs&&e._subscribeComponentOutputs(i,e.outputs)}))},e}();M.decorators=[{type:t.Component,args:[{selector:"sc-render-component",template:"\n <ng-template #view></ng-template>\n "}]}],M.ctorParameters=function(){return[{type:t.ComponentFactoryResolver},{type:t.KeyValueDiffers},{type:E},{type:t.Type,decorators:[{type:t.Inject,args:[b]}]}]},M.propDecorators={rendering:[{type:t.Input}],outputs:[{type:t.Input}],view:[{type:t.ViewChild,args:["view",{read:t.ViewContainerRef,static:!0}]}],inputs:[{type:t.Input}]};var k=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[A,a.DatePipe,E]}},e.forChild=function(n){return{ngModule:e,providers:[{provide:t.ANALYZE_FOR_ENTRY_COMPONENTS,useValue:n,multi:!0},{provide:r.ROUTES,useValue:[],multi:!0},{provide:C,useValue:n}]}},e.withComponents=function(n,i){return{ngModule:e,providers:u([{provide:t.ANALYZE_FOR_ENTRY_COMPONENTS,useValue:n,multi:!0},{provide:v,useValue:n},{provide:g,useValue:i||[]},{provide:r.ROUTES,useValue:i||[],multi:!0},{provide:b,useValue:L}],e.forRoot().providers)}},e}();k.decorators=[{type:t.NgModule,args:[{imports:[a.CommonModule],declarations:[s,d,f,m,h,V,O,j,I,M,P,R,T,D,L],exports:[s,d,V,f,m,h,O,j,M,P,I,T,D],entryComponents:[R,L]}]}],Object.defineProperty(e,"dataApi",{enumerable:!0,get:function(){return n.dataApi}}),Object.defineProperty(e,"getChildPlaceholder",{enumerable:!0,get:function(){return n.getChildPlaceholder}}),Object.defineProperty(e,"getFieldValue",{enumerable:!0,get:function(){return n.getFieldValue}}),Object.defineProperty(e,"isExperienceEditorActive",{enumerable:!0,get:function(){return n.isExperienceEditorActive}}),Object.defineProperty(e,"isServer",{enumerable:!0,get:function(){return n.isServer}}),Object.defineProperty(e,"mediaApi",{enumerable:!0,get:function(){return n.mediaApi}}),Object.defineProperty(e,"resetExperienceEditorChromes",{enumerable:!0,get:function(){return n.resetExperienceEditorChromes}}),e.ComponentNameAndType=y,e.DYNAMIC_COMPONENT=C,e.FileDirective=s,e.GenericLinkDirective=h,e.ImageDirective=d,e.JssModule=k,e.LayoutService=A,e.LayoutServiceError=_,e.LinkDirective=f,e.PlaceholderComponent=P,e.PlaceholderLoadingDirective=I,e.RichTextDirective=T,e.RouterLinkDirective=m,e.TextDirective=D,e.isRawRendering=w,e.ɵb=v,e.ɵc=g,e.ɵd=b,e.ɵe=O,e.ɵf=j,e.ɵg=E,e.ɵh=V,e.ɵi=M,e.ɵj=R,e.ɵk=L,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
17
17
|
//# sourceMappingURL=sitecore-jss-sitecore-jss-angular.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/file.directive.ts","../../node_modules/tslib/tslib.es6.js","../../src/components/image.directive.ts","../../src/components/link.directive.ts","../../src/components/router-link.directive.ts","../../src/components/generic-link.directive.ts","../../src/components/placeholder.token.ts","../../src/components/raw.component.ts","../../src/components/rendering.ts","../../src/jss-component-factory.service.ts","../../src/components/placeholder-loading.directive.ts","../../src/components/render-each.directive.ts","../../src/components/render-empty.directive.ts","../../src/components/placeholder.component.ts","../../src/components/rich-text.directive.ts","../../src/components/text.directive.ts","../../src/layout-service-error.ts","../../src/layout.service.ts","../../src/components/date.directive.ts","../../src/components/missing-component.component.ts","../../src/components/render-component.component.ts","../../src/lib.module.ts"],"names":["FileDirective","viewContainer","templateRef","this","prototype","ngOnChanges","changes","field","viewRef","clear","createEmbeddedView","updateView","value","src","file","rootNodes","forEach","node","href","innerHTML","title","displayName","Directive","args","selector","ViewContainerRef","TemplateRef","Input","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","error","__spread","arguments","length","concat","ImageDirective","renderer","elementRef","inlineRef","editable","urlParams","attrs","remove","overrideAttrs","assign","getElementAttrs","media","foundImg","mediaApi","findEditorImageTag","renderInlineWrapper","getImageAttrs","tempImg_1","createElement","entries","_a","_b","key","attrValue","setAttribute","editableMarkup","replace","imgTag","outerHTML","img","renderTemplate","fieldAttrs","parsedAttrs","imageParams","combinedAttrs","srcSet","otherAttrs","s","t","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","newAttrs","updateImageUrl","mediaUrlPrefix","getSrcSet","imageProps","_this","imgPropVal","element","attributes","attr","item","name","span","className","parentNode","nativeElement","insertBefore","removeChild","Renderer2","ElementRef","LinkDirective","editableFirstPart","editableLastPart","props","linkText","text","mergedAttrs","propValue","test","childNodes","textContent","RouterLinkDirective","router","_super","listen","event","navigate","preventDefault","Router","GenericLinkDirective","isAbsoluteUrl","urlTree","createUrlTree","extras","serializeUrl","url","TypeError","PLACEHOLDER_COMPONENTS","InjectionToken","PLACEHOLDER_LAZY_COMPONENTS","PLACEHOLDER_MISSING_COMPONENT_COMPONENT","DYNAMIC_COMPONENT","RawComponent","ngOnInit","el","rendering","contents","createText","appendChild","isRawRendering","componentName","undefined","Component","template","JssComponentFactoryService","injector","compiler","components","lazyComponents","componentMap","Map","lazyComponentMap","c","set","type","path","loadModuleFactory","lazyComponent","loadChildren","then","loaded","NgModuleFactory","compileModuleAsync","getComponent","component","get","Promise","resolve","componentDefinition","componentImplementation","ngModuleFactory","componentType","moduleRef","dynamicComponentType","Error","componentFactory","componentFactoryResolver","resolveComponentFactory","getComponents","all","map","getRawComponent","Injectable","Injector","Compiler","Inject","PlaceholderComponent","differs","changeDetectorRef","missingComponentComponent","_componentInstances","destroyed","parentStyleAttribute","isLoading","EventEmitter","defineProperty","_inputs","_differ","find","elem","ngOnDestroy","renderings","_render","ngDoCheck","diff","updates","forEachRemovedItem","change","forEachAddedItem","currentValue","forEachChangedItem","componentInstance","_setComponentInputs","inputs","input","inputValue","_subscribeComponentOutputs","outputs","keys","filter","output","Observable","pipe","takeWhile","subscribe","view","console","warn","placeholder","placeholders","JSON","stringify","placeholderIsEmpty","every","renderEmptyTemplate","index","renderEachTemplate","_renderTemplatedComponent","_renderEmbeddedComponent","markForCheck","emit","createdComponentRef","createComponent","location","instance","ComponentFactoryResolver","KeyValueDiffers","ChangeDetectorRef","Type","decorators","Output","ViewChild","read","static","ContentChild","RenderEachDirective","RenderEmptyDirective","PlaceholderLoadingDirective","RichTextDirective","html","TextDirective","encode","setDangerously","fetchRouteData","dataApi","fetchPlaceholderData","LayoutService","getLayoutServiceError","layoutServiceError","LayoutServiceError","response","status","statusText","data","observableThrow","getRouteData","route","options","fromPromise","catchError","getPlaceholderData","placeholderName","DateDirective","datePipe","format","transform","timezone","locale","DatePipe","RenderComponentComponent","JssModule","forRoot","ngModule","providers","forChild","provide","ANALYZE_FOR_ENTRY_COMPONENTS","useValue","multi","ROUTES","withComponents","MissingComponentComponent","NgModule","imports","CommonModule","declarations","exports","entryComponents"],"mappings":"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","sourcesContent":["import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FileField } from './rendering-field';\r\n\r\n/**\r\n * File fields cannot be managed via the EE. We never output \"editable.\"\r\n */\r\n@Directive({ selector: '[scFile]' })\r\nexport class FileDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scFile') field: FileField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.field) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n\r\n if (!field || (!field.value && !field.src)) {\r\n return;\r\n }\r\n\r\n const file = field.src ? field : field.value;\r\n this.viewRef.rootNodes.forEach((node) => {\r\n node.href = file.src;\r\n if (node.innerHTML === '') {\r\n node.innerHTML = file.title || file.displayName;\r\n }\r\n });\r\n }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n Renderer2,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { mediaApi } from '@sitecore-jss/sitecore-jss';\r\nimport { ImageField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scImage]' })\r\nexport class ImageDirective implements OnChanges {\r\n private inlineRef: HTMLSpanElement | null = null;\r\n\r\n @Input('scImage') field: ImageField | '';\r\n\r\n @Input('scImageEditable') editable = true;\r\n\r\n /**\r\n * Custom regexp that finds media URL prefix that will be replaced by `/-/jssmedia` or `/~/jssmedia`.\r\n * @example\r\n * /\\/([-~]{1})assets\\//i\r\n * /-assets/website -> /-/jssmedia/website\r\n * /~assets/website -> /~/jssmedia/website\r\n */\r\n @Input('scImageMediaUrlPrefix') mediaUrlPrefix?: RegExp;\r\n\r\n @Input('scImageUrlParams') urlParams = {};\r\n\r\n @Input('scImageAttrs') attrs = {};\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<any>,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable || changes.urlParams || changes.attrs) {\r\n this.viewContainer.clear();\r\n if (this.inlineRef) {\r\n this.inlineRef.remove();\r\n this.inlineRef = null;\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const overrideAttrs = {\r\n ...this.getElementAttrs(),\r\n ...this.attrs,\r\n };\r\n const media = this.field;\r\n\r\n if (!media || (!media.editable && !media.value && !media.src)) {\r\n return;\r\n }\r\n\r\n let attrs: any = {};\r\n\r\n // we likely have an experience editor value, should be a string\r\n if (this.editable && media.editable) {\r\n const foundImg = mediaApi.findEditorImageTag(media.editable);\r\n if (!foundImg) {\r\n return this.renderInlineWrapper(media.editable);\r\n }\r\n attrs = this.getImageAttrs(foundImg.attrs, overrideAttrs, this.urlParams);\r\n if (!attrs) {\r\n return this.renderInlineWrapper(media.editable);\r\n }\r\n const tempImg: HTMLImageElement = this.renderer.createElement('img');\r\n Object.entries(attrs).forEach(([key, attrValue]: [string, any]) =>\r\n tempImg.setAttribute(key, attrValue)\r\n );\r\n const editableMarkup = media.editable.replace(foundImg.imgTag, tempImg.outerHTML);\r\n return this.renderInlineWrapper(editableMarkup);\r\n }\r\n\r\n // some wise-guy/gal is passing in a 'raw' image object value\r\n const img = media.src ? media : media.value;\r\n if (!img) {\r\n return null;\r\n }\r\n\r\n attrs = this.getImageAttrs(img, overrideAttrs, this.urlParams);\r\n if (attrs) {\r\n this.renderTemplate(attrs);\r\n }\r\n }\r\n\r\n private getImageAttrs(fieldAttrs: any, parsedAttrs: any, imageParams: any): any {\r\n const combinedAttrs = {\r\n ...fieldAttrs,\r\n ...parsedAttrs,\r\n };\r\n // eslint-disable-next-line prefer-const\r\n let { src, srcSet, ...otherAttrs } = combinedAttrs;\r\n if (!src) {\r\n return null;\r\n }\r\n const newAttrs = {\r\n ...otherAttrs,\r\n };\r\n // update image URL for jss handler and image rendering params\r\n src = mediaApi.updateImageUrl(src, imageParams, this.mediaUrlPrefix);\r\n if (srcSet) {\r\n // replace with HTML-formatted srcset, including updated image URLs\r\n newAttrs.srcSet = mediaApi.getSrcSet(src, srcSet, imageParams, this.mediaUrlPrefix);\r\n } else {\r\n newAttrs.src = src;\r\n }\r\n return newAttrs;\r\n }\r\n\r\n private renderTemplate(imageProps: any) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(imageProps).forEach(([key, imgPropVal]: [string, any]) =>\r\n this.renderer.setAttribute(node, key, imgPropVal)\r\n );\r\n });\r\n }\r\n\r\n private getElementAttrs(): { [key: string]: any } {\r\n const view = this.templateRef.createEmbeddedView(null);\r\n const element: Element = view.rootNodes[0];\r\n if (!element) {\r\n return {};\r\n }\r\n const attrs: { [key: string]: any } = {};\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n const attr = element.attributes.item(i);\r\n if (attr) {\r\n attrs[attr.name] = attr.value;\r\n }\r\n }\r\n return attrs;\r\n }\r\n\r\n private renderInlineWrapper(editable: string) {\r\n const span: HTMLSpanElement = this.renderer.createElement('span');\r\n span.className = 'sc-image-wrapper';\r\n span.innerHTML = editable;\r\n\r\n const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\r\n this.renderer.insertBefore(parentNode, span, this.elementRef.nativeElement);\r\n parentNode.removeChild(this.elementRef.nativeElement);\r\n\r\n this.inlineRef = span;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n Renderer2,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { LinkField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scLink]' })\r\nexport class LinkDirective implements OnChanges {\r\n private inlineRef: HTMLSpanElement | null = null;\r\n\r\n @Input('scLinkEditable') editable = true;\r\n\r\n @Input('scLinkAttrs') attrs: any = {};\r\n\r\n @Input('scLink') field: LinkField;\r\n\r\n constructor(\r\n protected viewContainer: ViewContainerRef,\r\n protected templateRef: TemplateRef<any>,\r\n protected renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable || changes.attrs) {\r\n this.viewContainer.clear();\r\n if (this.inlineRef) {\r\n this.inlineRef.remove();\r\n this.inlineRef = null;\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n if (this.editable && field && field.editableFirstPart && field.editableLastPart) {\r\n this.renderInlineWrapper(field.editableFirstPart, field.editableLastPart);\r\n } else if (field && (field.href || field.value)) {\r\n const props = field.href ? field : field.value;\r\n const linkText = field.text || field.value.text || field.href || field.value.href;\r\n const mergedAttrs = { ...props, ...this.attrs };\r\n this.renderTemplate(mergedAttrs, linkText);\r\n }\r\n }\r\n\r\n protected renderTemplate(props: any, linkText: string) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(props).forEach(([key, propValue]: [string, any]) => {\r\n if (key === 'href') {\r\n const isInvalidLink = !propValue || /^https?:\\/\\/$/.test(propValue);\r\n\r\n if (isInvalidLink) {\r\n if (!node.href) {\r\n return;\r\n }\r\n\r\n propValue = node.href;\r\n }\r\n }\r\n\r\n if (key === 'class' && node.className) {\r\n propValue += ` ${node.className}`;\r\n }\r\n\r\n this.renderer.setAttribute(node, key, propValue);\r\n });\r\n\r\n if (node.childNodes && node.childNodes.length === 0 && linkText) {\r\n node.textContent = linkText;\r\n }\r\n });\r\n }\r\n\r\n private renderInlineWrapper(editableFirstPart: string, editableLastPart: string) {\r\n const span: HTMLSpanElement = this.renderer.createElement('span');\r\n span.className = 'sc-link-wrapper';\r\n span.innerHTML = editableFirstPart + editableLastPart;\r\n\r\n // assign attributes from template to inline wrapper\r\n const attrs = {\r\n ...this.getElementAttrs(),\r\n ...this.attrs,\r\n };\r\n Object.entries(attrs).forEach(([key, attrValue]: [string, any]) =>\r\n this.renderer.setAttribute(span, key, attrValue)\r\n );\r\n\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\r\n this.renderer.insertBefore(parentNode, span, this.elementRef.nativeElement);\r\n\r\n this.inlineRef = span;\r\n }\r\n\r\n private getElementAttrs(): { [key: string]: any } {\r\n const view = this.templateRef.createEmbeddedView(null);\r\n const element: Element = view.rootNodes[0];\r\n if (!element) {\r\n return {};\r\n }\r\n const attrs: { [key: string]: any } = {};\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n const attr = element.attributes.item(i);\r\n if (attr) {\r\n attrs[attr.name] = attr.value;\r\n }\r\n }\r\n return attrs;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n Renderer2,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { LinkDirective } from './link.directive';\r\nimport { LinkField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scRouterLink]' })\r\nexport class RouterLinkDirective extends LinkDirective {\r\n @Input('scRouterLinkEditable') editable = true;\r\n\r\n @Input('scRouterLinkAttrs') attrs: any = {};\r\n\r\n @Input('scRouterLink') field: LinkField;\r\n\r\n constructor(\r\n viewContainer: ViewContainerRef,\r\n templateRef: TemplateRef<any>,\r\n renderer: Renderer2,\r\n elementRef: ElementRef,\r\n private router: Router\r\n ) {\r\n super(viewContainer, templateRef, renderer, elementRef);\r\n }\r\n\r\n protected renderTemplate(props: any, linkText: string) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(props).forEach(([key, propValue]: [string, any]) => {\r\n this.renderer.setAttribute(node, key, propValue);\r\n\r\n if (key === 'href') {\r\n this.renderer.listen(node, 'click', (event) => {\r\n this.router.navigate([propValue]);\r\n event.preventDefault();\r\n });\r\n }\r\n });\r\n\r\n if (node.childNodes && node.childNodes.length === 0 && linkText) {\r\n node.textContent = linkText;\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n Renderer2,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Router, NavigationExtras } from '@angular/router';\r\nimport { LinkDirective } from './link.directive';\r\nimport { LinkField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scGenericLink]' })\r\nexport class GenericLinkDirective extends LinkDirective {\r\n @Input('scGenericLinkEditable') editable = true;\r\n\r\n @Input('scGenericLinkAttrs') attrs: any = {};\r\n\r\n @Input('scGenericLink') field: LinkField;\r\n\r\n @Input('scGenericLinkExtras') extras?: NavigationExtras;\r\n\r\n constructor(\r\n viewContainer: ViewContainerRef,\r\n templateRef: TemplateRef<any>,\r\n renderer: Renderer2,\r\n elementRef: ElementRef,\r\n private router: Router\r\n ) {\r\n super(viewContainer, templateRef, renderer, elementRef);\r\n }\r\n\r\n protected renderTemplate(props: any, linkText: string) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(props).forEach(([key, propValue]: [string, any]) => {\r\n if (key === 'href' && !this.isAbsoluteUrl(propValue)) {\r\n const urlTree = this.router.createUrlTree([propValue], this.extras);\r\n this.renderer.setAttribute(node, key, this.router.serializeUrl(urlTree));\r\n this.renderer.listen(node, 'click', (event) => {\r\n this.router.navigate([propValue], this.extras);\r\n event.preventDefault();\r\n });\r\n } else {\r\n this.renderer.setAttribute(node, key, propValue);\r\n }\r\n });\r\n\r\n if (node.childNodes && node.childNodes.length === 0 && linkText) {\r\n node.textContent = linkText;\r\n }\r\n });\r\n }\r\n\r\n private isAbsoluteUrl(url?: string) {\r\n if (url === null) {\r\n return false;\r\n }\r\n if (typeof url !== 'string') {\r\n throw new TypeError('Expected a string');\r\n }\r\n\r\n return /^[a-z][a-z0-9+.-]*:/.test(url);\r\n }\r\n}\r\n","import { InjectionToken, Type } from '@angular/core';\r\n\r\n/** Registers a statically loaded component */\r\nexport class ComponentNameAndType {\r\n name: string;\r\n type: Type<any>;\r\n}\r\n\r\n/** Registers a lazily loaded component by name and module to lazy load when it's needed */\r\nexport interface ComponentNameAndModule {\r\n /** Name of the component */\r\n path: string;\r\n /**\r\n * Dynamic import of the component,\r\n * e.g. () => import('./path/to/lazyloadedcomponent.module').then(m => m.LazyLoadedComponentModuleExportName)\r\n */\r\n loadChildren: () => Promise<any>;\r\n}\r\n\r\n/**\r\n * @param {any} object\r\n */\r\nexport function instanceOfComponentNameAndType(object: any): object is ComponentNameAndType {\r\n return 'type' in object;\r\n}\r\n\r\n/**\r\n * @param {any} object\r\n */\r\nexport function instanceOfComponentNameAndModule(object: any): object is ComponentNameAndModule {\r\n return 'module' in object;\r\n}\r\n\r\nexport const PLACEHOLDER_COMPONENTS = new InjectionToken<ComponentNameAndType[]>(\r\n 'Sc.placeholder.components'\r\n);\r\nexport const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken<ComponentNameAndType[]>(\r\n 'Sc.placeholder.lazyComponents'\r\n);\r\nexport const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken<Type<any>>(\r\n 'Sc.placeholder.missingComponentComponent'\r\n);\r\nexport const DYNAMIC_COMPONENT = new InjectionToken<Type<any> | { [s: string]: any }>(\r\n 'Sc.placeholder.dynamicComponent'\r\n);\r\n","import { Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\n\r\n@Component({\r\n selector: 'sc-raw',\r\n template: '',\r\n})\r\nexport class RawComponent implements OnInit {\r\n @Input() rendering: HtmlElementRendering;\r\n\r\n constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\r\n\r\n ngOnInit() {\r\n const el = this.renderer.createElement(this.rendering.name);\r\n const contents = this.renderer.createText(this.rendering.contents || '');\r\n const attributes = this.rendering.attributes;\r\n for (const attr in attributes) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if ((attributes as any).hasOwnProperty(attr)) {\r\n const value = attributes[attr];\r\n this.renderer.setAttribute(el, attr, value || '');\r\n }\r\n }\r\n\r\n this.renderer.appendChild(el, contents);\r\n const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\r\n this.renderer.insertBefore(parentNode, el, this.elementRef.nativeElement);\r\n parentNode.removeChild(this.elementRef.nativeElement);\r\n }\r\n}\r\n","import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\n\r\n/**\r\n * @param {HtmlElementRendering | ComponentRendering} rendering\r\n */\r\nexport function isRawRendering(\r\n rendering: HtmlElementRendering | ComponentRendering\r\n): rendering is HtmlElementRendering {\r\n return (\r\n !(rendering as ComponentRendering).componentName &&\r\n (rendering as HtmlElementRendering).name !== undefined\r\n );\r\n}\r\n","import {\r\n ComponentFactory,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n Type,\r\n Compiler,\r\n NgModuleFactory,\r\n} from '@angular/core';\r\nimport { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\nimport {\r\n ComponentNameAndModule,\r\n ComponentNameAndType,\r\n DYNAMIC_COMPONENT,\r\n PLACEHOLDER_COMPONENTS,\r\n PLACEHOLDER_LAZY_COMPONENTS,\r\n} from './components/placeholder.token';\r\nimport { RawComponent } from './components/raw.component';\r\nimport { isRawRendering } from './components/rendering';\r\n\r\nexport interface ComponentFactoryResult {\r\n componentImplementation?: Type<any>;\r\n componentDefinition: ComponentRendering | HtmlElementRendering;\r\n componentFactory?: ComponentFactory<any>;\r\n}\r\n\r\n@Injectable()\r\nexport class JssComponentFactoryService {\r\n private componentMap: Map<string, Type<any>>;\r\n private lazyComponentMap: Map<string, ComponentNameAndModule>;\r\n\r\n constructor(\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n @Inject(PLACEHOLDER_COMPONENTS) private components: ComponentNameAndType[],\r\n @Inject(PLACEHOLDER_LAZY_COMPONENTS) private lazyComponents: ComponentNameAndModule[]\r\n ) {\r\n this.componentMap = new Map();\r\n this.lazyComponentMap = new Map();\r\n\r\n this.components.forEach((c) => this.componentMap.set(c.name, c.type));\r\n\r\n if (this.lazyComponents) {\r\n this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c));\r\n }\r\n }\r\n\r\n private loadModuleFactory(lazyComponent: ComponentNameAndModule): Promise<NgModuleFactory<any>> {\r\n return lazyComponent.loadChildren().then((loaded) => {\r\n if (loaded instanceof NgModuleFactory) {\r\n return loaded;\r\n } else {\r\n return this.compiler.compileModuleAsync(loaded);\r\n }\r\n });\r\n }\r\n\r\n getComponent(component: ComponentRendering): Promise<ComponentFactoryResult> {\r\n const loadedComponent = this.componentMap.get(component.componentName);\r\n\r\n if (loadedComponent) {\r\n return Promise.resolve({\r\n componentDefinition: component,\r\n componentImplementation: this.componentMap.get(component.componentName),\r\n });\r\n }\r\n\r\n const lazyComponent = this.lazyComponentMap.get(component.componentName);\r\n\r\n if (lazyComponent) {\r\n return this.loadModuleFactory(lazyComponent).then((ngModuleFactory) => {\r\n let componentType = null;\r\n const moduleRef = ngModuleFactory.create(this.injector);\r\n const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT);\r\n if (!dynamicComponentType) {\r\n throw new Error(\r\n `JssComponentFactoryService: Lazy load module for component \"${lazyComponent.path}\" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`\r\n );\r\n }\r\n\r\n if (component.componentName in dynamicComponentType) {\r\n componentType = (dynamicComponentType as { [s: string]: any })[component.componentName];\r\n } else {\r\n if (typeof dynamicComponentType === 'function') {\r\n componentType = dynamicComponentType;\r\n } else {\r\n throw new Error(\r\n `JssComponentFactoryService: Lazy load module for component \"${lazyComponent.path}\" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`\r\n );\r\n }\r\n }\r\n\r\n return {\r\n componentDefinition: component,\r\n componentImplementation: componentType,\r\n componentFactory: moduleRef.componentFactoryResolver.resolveComponentFactory(\r\n componentType\r\n ),\r\n };\r\n });\r\n }\r\n\r\n return Promise.resolve({\r\n componentDefinition: component,\r\n });\r\n }\r\n\r\n getComponents(\r\n components: Array<ComponentRendering | HtmlElementRendering>\r\n ): Promise<ComponentFactoryResult[]> {\r\n // acquire all components and keep them in order while handling their potential async-ness\r\n return Promise.all(\r\n components.map((component) =>\r\n isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component)\r\n )\r\n );\r\n }\r\n\r\n private getRawComponent(component: HtmlElementRendering): Promise<ComponentFactoryResult> {\r\n return Promise.resolve({\r\n componentImplementation: RawComponent,\r\n componentDefinition: component,\r\n });\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[scPlaceholderLoading]',\r\n})\r\nexport class PlaceholderLoadingDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[renderEach]',\r\n})\r\nexport class RenderEachDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[renderEmpty]',\r\n})\r\nexport class RenderEmptyDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentFactoryResolver,\r\n ContentChild,\r\n DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\nimport { Observable } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport {\r\n ComponentFactoryResult,\r\n JssComponentFactoryService,\r\n} from '../jss-component-factory.service';\r\nimport { PlaceholderLoadingDirective } from './placeholder-loading.directive';\r\nimport { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';\r\nimport { RenderEachDirective } from './render-each.directive';\r\nimport { RenderEmptyDirective } from './render-empty.directive';\r\nimport { isRawRendering } from './rendering';\r\n\r\n/**\r\n * @param {ComponentRendering} rendering\r\n * @param {string} name\r\n */\r\nfunction getPlaceholder(rendering: ComponentRendering, name: string) {\r\n if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {\r\n return rendering.placeholders[name];\r\n }\r\n return null;\r\n}\r\n\r\n@Component({\r\n selector: 'sc-placeholder,[sc-placeholder]',\r\n template: `\r\n <ng-template\r\n *ngIf=\"isLoading\"\r\n [ngTemplateOutlet]=\"placeholderLoading?.templateRef\"\r\n ></ng-template>\r\n <ng-template #view></ng-template>\r\n `,\r\n})\r\nexport class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestroy {\r\n private _inputs: { [key: string]: any };\r\n private _differ: KeyValueDiffer<string, any>;\r\n private _componentInstances: any[] = [];\r\n private destroyed = false;\r\n private parentStyleAttribute = '';\r\n public isLoading = true;\r\n\r\n @Input() name?: string;\r\n @Input() rendering: ComponentRendering;\r\n @Input() renderings?: Array<ComponentRendering | HtmlElementRendering>;\r\n @Input() outputs: { [k: string]: (eventType: any) => void };\r\n\r\n @Output()\r\n loaded = new EventEmitter<string | undefined>();\r\n\r\n @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef;\r\n @ContentChild(RenderEachDirective, { static: true }) renderEachTemplate: RenderEachDirective;\r\n @ContentChild(RenderEmptyDirective, { static: true }) renderEmptyTemplate: RenderEmptyDirective;\r\n @ContentChild(PlaceholderLoadingDirective, { static: true })\r\n placeholderLoading?: PlaceholderLoadingDirective;\r\n\r\n @Input()\r\n set inputs(value: { [key: string]: any }) {\r\n this._inputs = value;\r\n if (!this._differ && value) {\r\n this._differ = this.differs.find(value).create();\r\n }\r\n }\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private differs: KeyValueDiffers,\r\n private componentFactory: JssComponentFactoryService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n @Inject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT) private missingComponentComponent: Type<any>\r\n ) {}\r\n\r\n ngOnInit() {\r\n // just to ensure the element exists\r\n const elem = this.elementRef.nativeElement;\r\n\r\n if (elem) {\r\n const attributes: NamedNodeMap = elem.attributes;\r\n for (let i = 0; i < attributes.length; i++) {\r\n const attr: Attr | null = attributes.item(i);\r\n if (attr && attr.name.indexOf('_ngcontent') !== -1) {\r\n this.parentStyleAttribute = attr.name;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed = true;\r\n this._componentInstances = [];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rendering || changes.renderings) {\r\n this._render();\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n if (!this._differ || !this._inputs || this._componentInstances.length === 0) {\r\n return;\r\n }\r\n\r\n const changes = this._differ.diff(this._inputs);\r\n if (!changes) {\r\n return;\r\n }\r\n const updates: { [key: string]: any } = {};\r\n changes.forEachRemovedItem((change) => (updates[change.key] = null));\r\n changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));\r\n changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));\r\n this._componentInstances.forEach((componentInstance) =>\r\n this._setComponentInputs(componentInstance, updates)\r\n );\r\n }\r\n\r\n private _setComponentInputs(componentInstance: any, inputs: { [key: string]: any }) {\r\n Object.entries(inputs).forEach(\r\n ([input, inputValue]) => (componentInstance[input] = inputValue)\r\n );\r\n }\r\n\r\n private _subscribeComponentOutputs(\r\n componentInstance: any,\r\n outputs: { [k: string]: (eventType: any) => void }\r\n ) {\r\n Object.keys(outputs)\r\n .filter(\r\n (output) => componentInstance[output] && componentInstance[output] instanceof Observable\r\n )\r\n .forEach((output) =>\r\n (componentInstance[output] as Observable<any>)\r\n .pipe(takeWhile(() => !this.destroyed))\r\n .subscribe(outputs[output])\r\n );\r\n }\r\n\r\n private _render() {\r\n this._componentInstances = [];\r\n this.view.clear();\r\n\r\n if (!this.rendering && !this.renderings) {\r\n return;\r\n }\r\n\r\n if (!this.name && !this.renderings) {\r\n console.warn(\r\n 'Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.'\r\n );\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');\r\n\r\n if (!placeholder) {\r\n console.warn(\r\n `Placeholder '${this.name}' was not found in the current rendering data`,\r\n JSON.stringify(this.rendering, null, 2)\r\n );\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n // if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined\r\n const placeholderIsEmpty = placeholder.every(\r\n (rendering: ComponentRendering | HtmlElementRendering) => isRawRendering(rendering)\r\n );\r\n\r\n if (this.renderEmptyTemplate && placeholderIsEmpty) {\r\n this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {\r\n renderings: placeholder,\r\n });\r\n this.isLoading = false;\r\n } else {\r\n this.componentFactory\r\n .getComponents(placeholder)\r\n .then((components) =>\r\n components.forEach((rendering, index) => {\r\n if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {\r\n this._renderTemplatedComponent(rendering.componentDefinition, index);\r\n } else {\r\n this._renderEmbeddedComponent(rendering, index);\r\n }\r\n this.isLoading = false;\r\n })\r\n )\r\n .then(() => {\r\n this.changeDetectorRef.markForCheck();\r\n this.loaded.emit(this.name);\r\n });\r\n }\r\n }\r\n\r\n private _renderTemplatedComponent(\r\n rendering: ComponentRendering | HtmlElementRendering,\r\n index: number\r\n ) {\r\n // the render-each template takes care of all component mapping etc\r\n // generally using <sc-render-component> which is about like _renderEmbeddedComponent()\r\n // as a separate component\r\n this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {\r\n rendering,\r\n index,\r\n });\r\n }\r\n\r\n private _renderEmbeddedComponent(rendering: ComponentFactoryResult, index: number) {\r\n if (!rendering.componentImplementation) {\r\n const componentName = (rendering.componentDefinition as ComponentRendering).componentName;\r\n console.error(\r\n `Placeholder ${this.name} contains unknown component ${componentName}.`,\r\n `Ensure component is mapped, like:\r\n JssModule.withComponents([\r\n { name: '${componentName}', type: ${componentName}Component }\r\n ])`\r\n );\r\n\r\n rendering.componentImplementation = this.missingComponentComponent;\r\n }\r\n\r\n const componentFactory =\r\n rendering.componentFactory ||\r\n this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);\r\n\r\n // apply the parent style attribute _ngcontent\r\n // work-around for https://github.com/angular/angular/issues/12215\r\n const createdComponentRef = this.view.createComponent(componentFactory, index);\r\n if (this.parentStyleAttribute) {\r\n this.renderer.setAttribute(\r\n createdComponentRef.location.nativeElement,\r\n this.parentStyleAttribute,\r\n ''\r\n );\r\n }\r\n\r\n const componentInstance = createdComponentRef.instance;\r\n componentInstance.rendering = rendering.componentDefinition;\r\n if (this._inputs) {\r\n this._setComponentInputs(componentInstance, this._inputs);\r\n }\r\n if (this.outputs) {\r\n this._subscribeComponentOutputs(componentInstance, this.outputs);\r\n }\r\n this._componentInstances.push(componentInstance);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { RichTextField } from './rendering-field';\r\n\r\n@Directive({\r\n selector: '[scRichText]',\r\n})\r\nexport class RichTextDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scRichTextEditable') editable = true;\r\n\r\n @Input('scRichText') field: RichTextField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n if (!field || (!field.editable && !field.value)) {\r\n return;\r\n }\r\n\r\n const html = field.editable && this.editable ? field.editable : field.value;\r\n this.viewRef.rootNodes.forEach((node) => {\r\n node.innerHTML = html;\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TextField } from './rendering-field';\r\n\r\n@Directive({\r\n selector: '[scText]',\r\n})\r\nexport class TextDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scTextEditable') editable = true;\r\n\r\n @Input('scTextEncode') encode = true;\r\n\r\n @Input('scText') field: TextField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable || changes.encode) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n let editable = this.editable;\r\n\r\n if (!field || (!field.editable && !field.value)) {\r\n return;\r\n }\r\n\r\n // can't use editable value if we want to output unencoded\r\n if (!this.encode) {\r\n editable = false;\r\n }\r\n\r\n const html = field.editable && editable ? field.editable : field.value;\r\n const setDangerously = (field.editable && editable) || !this.encode;\r\n\r\n this.viewRef.rootNodes.forEach((node) => {\r\n if (setDangerously) {\r\n node.innerHTML = html;\r\n } else {\r\n node.textContent = html;\r\n }\r\n });\r\n }\r\n}\r\n","import { LayoutServiceContextData } from '@sitecore-jss/sitecore-jss';\r\n\r\nexport class LayoutServiceError {\r\n status: number;\r\n statusText: string;\r\n data?: { sitecore?: LayoutServiceContextData };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n dataApi,\r\n LayoutServiceData,\r\n LayoutServiceRequestOptions,\r\n PlaceholderData,\r\n} from '@sitecore-jss/sitecore-jss';\r\nimport { from as fromPromise, Observable, throwError as observableThrow } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { LayoutServiceError } from './layout-service-error';\r\n\r\nconst { fetchRouteData, fetchPlaceholderData } = dataApi;\r\n\r\n@Injectable()\r\nexport class LayoutService {\r\n private static getLayoutServiceError(error: any): Observable<LayoutServiceError> {\r\n const layoutServiceError = new LayoutServiceError();\r\n const response = error.response;\r\n if (response) {\r\n layoutServiceError.status = response.status;\r\n layoutServiceError.statusText = response.statusText;\r\n layoutServiceError.data = response.data;\r\n }\r\n\r\n return observableThrow(layoutServiceError);\r\n }\r\n\r\n getRouteData(\r\n route: string,\r\n options: LayoutServiceRequestOptions<LayoutServiceData>\r\n ): Observable<LayoutServiceData | LayoutServiceError> {\r\n return fromPromise(fetchRouteData(route, options)).pipe(\r\n catchError(LayoutService.getLayoutServiceError)\r\n );\r\n }\r\n\r\n getPlaceholderData(\r\n route: string,\r\n placeholderName: string,\r\n options: LayoutServiceRequestOptions<PlaceholderData>\r\n ): Observable<PlaceholderData | LayoutServiceError> {\r\n return fromPromise(fetchPlaceholderData(placeholderName, route, options)).pipe(\r\n catchError(LayoutService.getLayoutServiceError)\r\n );\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TextField } from './rendering-field';\r\n\r\n@Directive({\r\n selector: '[scDate]',\r\n})\r\nexport class DateDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scDateFormat') format?: string;\r\n\r\n @Input('scDateTimezone') timezone?: string;\r\n\r\n @Input('scDateLocale') locale?: string;\r\n\r\n @Input('scDateEditable') editable = true;\r\n\r\n @Input('scDate') field: TextField;\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<any>,\r\n private datePipe: DatePipe\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.format) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n\r\n if (!field || (!field.editable && !field.value)) {\r\n return;\r\n }\r\n\r\n const html = field.editable && this.editable ? field.editable : field.value;\r\n const setDangerously = field.editable && this.editable;\r\n\r\n this.viewRef.rootNodes.forEach((node) => {\r\n if (setDangerously) {\r\n node.innerHTML = html;\r\n } else {\r\n node.textContent = this.datePipe.transform(html, this.format, this.timezone, this.locale);\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sc-missing-component',\r\n template: `\r\n <div\r\n style=\"background: darkorange; outline: 5px solid orange; padding: 10px; color: white; max-width: 500px;\"\r\n >\r\n <h2>{{ rendering.componentName }}</h2>\r\n <p>JSS component is missing Angular component implementation.</p>\r\n </div>\r\n `,\r\n})\r\nexport class MissingComponentComponent {\r\n @Input() rendering: any;\r\n}\r\n","import {\r\n Component,\r\n ComponentFactoryResolver,\r\n Inject,\r\n Input,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnChanges,\r\n SimpleChanges,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\nimport { Observable } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport {\r\n ComponentFactoryResult,\r\n JssComponentFactoryService,\r\n} from '../jss-component-factory.service';\r\nimport { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';\r\nimport { RawComponent } from './raw.component';\r\nimport { isRawRendering } from './rendering';\r\n\r\n/**\r\n * Renders a single JSS component given a rendering definition.\r\n * Useful inside templated placeholders.\r\n */\r\n@Component({\r\n selector: 'sc-render-component',\r\n template: `\r\n <ng-template #view></ng-template>\r\n `,\r\n})\r\nexport class RenderComponentComponent implements OnChanges {\r\n private _inputs: { [key: string]: any };\r\n private _differ: KeyValueDiffer<string, any>;\r\n private destroyed = false;\r\n\r\n @Input() rendering: ComponentRendering | HtmlElementRendering;\r\n @Input() outputs: { [k: string]: (eventType: any) => void };\r\n @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef;\r\n\r\n @Input()\r\n set inputs(value: { [key: string]: any }) {\r\n this._inputs = value;\r\n if (!this._differ && value) {\r\n this._differ = this.differs.find(value).create();\r\n }\r\n }\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private differs: KeyValueDiffers,\r\n private componentFactory: JssComponentFactoryService,\r\n @Inject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT) private missingComponentComponent: Type<any>\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rendering) {\r\n this._render();\r\n }\r\n }\r\n\r\n private _setComponentInputs(componentInstance: any, inputs: { [key: string]: any }) {\r\n Object.entries(inputs).forEach(\r\n ([input, inputValue]) => (componentInstance[input] = inputValue)\r\n );\r\n }\r\n\r\n private _subscribeComponentOutputs(\r\n componentInstance: any,\r\n outputs: { [k: string]: (eventType: any) => void }\r\n ) {\r\n Object.keys(outputs)\r\n .filter(\r\n (output) => componentInstance[output] && componentInstance[output] instanceof Observable\r\n )\r\n .forEach((output) =>\r\n (componentInstance[output] as Observable<any>)\r\n .pipe(takeWhile(() => !this.destroyed))\r\n .subscribe(outputs[output])\r\n );\r\n }\r\n\r\n private _render() {\r\n this.view.clear();\r\n\r\n if (!this.rendering) {\r\n return;\r\n }\r\n\r\n const resolveComponent: Promise<ComponentFactoryResult> = isRawRendering(this.rendering)\r\n ? Promise.resolve({\r\n componentImplementation: RawComponent,\r\n componentDefinition: this.rendering,\r\n })\r\n : this.componentFactory.getComponent(this.rendering);\r\n\r\n resolveComponent.then((rendering) => {\r\n if (!rendering.componentImplementation) {\r\n const componentName = (rendering.componentDefinition as ComponentRendering).componentName;\r\n console.error(\r\n `Attempted to render unknown component ${componentName}.`,\r\n `Ensure component is mapped, like:\r\n JssModule.withComponents([\r\n { name: '${componentName}', type: ${componentName}Component }\r\n ])`\r\n );\r\n\r\n rendering.componentImplementation = this.missingComponentComponent;\r\n }\r\n\r\n const componentFactory =\r\n rendering.componentFactory ||\r\n this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);\r\n\r\n const componentInstance = this.view.createComponent(componentFactory, 0).instance;\r\n componentInstance.rendering = rendering.componentDefinition;\r\n if (this._inputs) {\r\n this._setComponentInputs(componentInstance, this._inputs);\r\n }\r\n if (this.outputs) {\r\n this._subscribeComponentOutputs(componentInstance, this.outputs);\r\n }\r\n });\r\n }\r\n}\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, ModuleWithProviders, NgModule, Type } from '@angular/core';\r\nimport { ROUTES } from '@angular/router';\r\nimport { DateDirective } from './components/date.directive';\r\nimport { FileDirective } from './components/file.directive';\r\nimport { GenericLinkDirective } from './components/generic-link.directive';\r\nimport { ImageDirective } from './components/image.directive';\r\nimport { LinkDirective } from './components/link.directive';\r\nimport { MissingComponentComponent } from './components/missing-component.component';\r\nimport { PlaceholderLoadingDirective } from './components/placeholder-loading.directive';\r\nimport { PlaceholderComponent } from './components/placeholder.component';\r\nimport {\r\n ComponentNameAndModule,\r\n ComponentNameAndType,\r\n DYNAMIC_COMPONENT,\r\n PLACEHOLDER_COMPONENTS,\r\n PLACEHOLDER_LAZY_COMPONENTS,\r\n PLACEHOLDER_MISSING_COMPONENT_COMPONENT,\r\n} from './components/placeholder.token';\r\nimport { RawComponent } from './components/raw.component';\r\nimport { RenderComponentComponent } from './components/render-component.component';\r\nimport { RenderEachDirective } from './components/render-each.directive';\r\nimport { RenderEmptyDirective } from './components/render-empty.directive';\r\nimport { RichTextDirective } from './components/rich-text.directive';\r\nimport { RouterLinkDirective } from './components/router-link.directive';\r\nimport { TextDirective } from './components/text.directive';\r\nimport { JssComponentFactoryService } from './jss-component-factory.service';\r\nimport { LayoutService } from './layout.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [\r\n FileDirective,\r\n ImageDirective,\r\n LinkDirective,\r\n RouterLinkDirective,\r\n GenericLinkDirective,\r\n DateDirective,\r\n RenderEachDirective,\r\n RenderEmptyDirective,\r\n PlaceholderLoadingDirective,\r\n RenderComponentComponent,\r\n PlaceholderComponent,\r\n RawComponent,\r\n RichTextDirective,\r\n TextDirective,\r\n MissingComponentComponent,\r\n ],\r\n exports: [\r\n FileDirective,\r\n ImageDirective,\r\n DateDirective,\r\n LinkDirective,\r\n RouterLinkDirective,\r\n GenericLinkDirective,\r\n RenderEachDirective,\r\n RenderEmptyDirective,\r\n RenderComponentComponent,\r\n PlaceholderComponent,\r\n PlaceholderLoadingDirective,\r\n RichTextDirective,\r\n TextDirective,\r\n ],\r\n entryComponents: [RawComponent, MissingComponentComponent],\r\n})\r\nexport class JssModule {\r\n /**\r\n * Instantiates the JSS module with no component factory.\r\n * Useful for using it from libraries. Most of the time you'd want withComponents()\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static forRoot(): ModuleWithProviders<JssModule> {\r\n return {\r\n ngModule: JssModule,\r\n providers: [LayoutService, DatePipe, JssComponentFactoryService],\r\n };\r\n }\r\n\r\n /**\r\n * Instantiates a module for a lazy-loaded JSS component\r\n * @param {Type<any>} component\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static forChild(component: Type<any>): ModuleWithProviders<JssModule> {\r\n return {\r\n ngModule: JssModule,\r\n providers: [\r\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: component, multi: true },\r\n { provide: ROUTES, useValue: [], multi: true },\r\n { provide: DYNAMIC_COMPONENT, useValue: component },\r\n ],\r\n };\r\n }\r\n\r\n /**\r\n * Instantiates the JSS module and specifies the mapping from component name to component implementation.\r\n * Appropriate when defining the set of JSS components that your app is aware of.\r\n * @param {ComponentNameAndType[]} components\r\n * @param {ComponentNameAndModule[]} [lazyComponents]\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static withComponents(\r\n components: ComponentNameAndType[],\r\n lazyComponents?: ComponentNameAndModule[]\r\n ): ModuleWithProviders<JssModule> {\r\n return {\r\n ngModule: JssModule,\r\n providers: [\r\n {\r\n provide: ANALYZE_FOR_ENTRY_COMPONENTS,\r\n useValue: components,\r\n multi: true,\r\n },\r\n { provide: PLACEHOLDER_COMPONENTS, useValue: components },\r\n { provide: PLACEHOLDER_LAZY_COMPONENTS, useValue: lazyComponents || [] },\r\n { provide: ROUTES, useValue: lazyComponents || [], multi: true },\r\n { provide: PLACEHOLDER_MISSING_COMPONENT_COMPONENT, useValue: MissingComponentComponent },\r\n ...(JssModule.forRoot().providers as any[]),\r\n ],\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/file.directive.ts","../../node_modules/tslib/tslib.es6.js","../../src/components/image.directive.ts","../../src/components/link.directive.ts","../../src/components/router-link.directive.ts","../../src/components/generic-link.directive.ts","../../src/components/placeholder.token.ts","../../src/components/raw.component.ts","../../src/components/rendering.ts","../../src/jss-component-factory.service.ts","../../src/components/placeholder-loading.directive.ts","../../src/components/render-each.directive.ts","../../src/components/render-empty.directive.ts","../../src/components/placeholder.component.ts","../../src/components/rich-text.directive.ts","../../src/components/text.directive.ts","../../src/layout-service-error.ts","../../src/layout.service.ts","../../src/components/date.directive.ts","../../src/components/missing-component.component.ts","../../src/components/render-component.component.ts","../../src/lib.module.ts"],"names":["FileDirective","viewContainer","templateRef","this","prototype","ngOnChanges","changes","field","viewRef","clear","createEmbeddedView","updateView","value","src","file","rootNodes","forEach","node","href","innerHTML","title","displayName","Directive","args","selector","ViewContainerRef","TemplateRef","Input","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","error","__spread","arguments","length","concat","ImageDirective","renderer","elementRef","inlineRef","editable","urlParams","attrs","remove","overrideAttrs","assign","getElementAttrs","media","foundImg","mediaApi","findEditorImageTag","renderInlineWrapper","getImageAttrs","tempImg_1","createElement","entries","_a","_b","key","attrValue","setAttribute","editableMarkup","replace","imgTag","outerHTML","img","renderTemplate","fieldAttrs","parsedAttrs","imageParams","combinedAttrs","srcSet","otherAttrs","s","t","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","newAttrs","updateImageUrl","mediaUrlPrefix","getSrcSet","imageProps","_this","imgPropVal","view","element","destroy","attributes","attr","item","name","span","className","parentNode","nativeElement","insertBefore","removeChild","Renderer2","ElementRef","LinkDirective","editableFirstPart","editableLastPart","props","linkText","text","mergedAttrs","propValue","test","childNodes","textContent","RouterLinkDirective","router","_super","listen","event","navigate","preventDefault","Router","GenericLinkDirective","isAbsoluteUrl","urlTree","createUrlTree","extras","serializeUrl","url","TypeError","PLACEHOLDER_COMPONENTS","InjectionToken","PLACEHOLDER_LAZY_COMPONENTS","PLACEHOLDER_MISSING_COMPONENT_COMPONENT","DYNAMIC_COMPONENT","RawComponent","ngOnInit","el","rendering","contents","createText","appendChild","isRawRendering","componentName","undefined","Component","template","JssComponentFactoryService","injector","compiler","components","lazyComponents","componentMap","Map","lazyComponentMap","c","set","type","path","loadModuleFactory","lazyComponent","loadChildren","then","loaded","NgModuleFactory","compileModuleAsync","getComponent","component","get","Promise","resolve","componentDefinition","componentImplementation","ngModuleFactory","componentType","moduleRef","dynamicComponentType","Error","componentFactory","componentFactoryResolver","resolveComponentFactory","getComponents","all","map","getRawComponent","Injectable","Injector","Compiler","Inject","PlaceholderComponent","differs","changeDetectorRef","missingComponentComponent","_componentInstances","destroyed","parentStyleAttribute","isLoading","EventEmitter","defineProperty","_inputs","_differ","find","elem","ngOnDestroy","renderings","_render","ngDoCheck","diff","updates","forEachRemovedItem","change","forEachAddedItem","currentValue","forEachChangedItem","componentInstance","_setComponentInputs","inputs","input","inputValue","_subscribeComponentOutputs","outputs","keys","filter","output","Observable","pipe","takeWhile","subscribe","console","warn","placeholder","placeholders","JSON","stringify","placeholderIsEmpty","every","renderEmptyTemplate","index","renderEachTemplate","_renderTemplatedComponent","_renderEmbeddedComponent","markForCheck","emit","createdComponentRef","createComponent","location","instance","ComponentFactoryResolver","KeyValueDiffers","ChangeDetectorRef","Type","decorators","Output","ViewChild","read","static","ContentChild","RenderEachDirective","RenderEmptyDirective","PlaceholderLoadingDirective","RichTextDirective","html","TextDirective","encode","setDangerously","fetchRouteData","dataApi","fetchPlaceholderData","LayoutService","getLayoutServiceError","layoutServiceError","LayoutServiceError","response","status","statusText","data","observableThrow","getRouteData","route","options","fromPromise","catchError","getPlaceholderData","placeholderName","DateDirective","datePipe","format","transform","timezone","locale","DatePipe","RenderComponentComponent","JssModule","forRoot","ngModule","providers","forChild","provide","ANALYZE_FOR_ENTRY_COMPONENTS","useValue","multi","ROUTES","withComponents","MissingComponentComponent","NgModule","imports","CommonModule","declarations","exports","entryComponents"],"mappings":"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","sourcesContent":["import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FileField } from './rendering-field';\r\n\r\n/**\r\n * File fields cannot be managed via the EE. We never output \"editable.\"\r\n */\r\n@Directive({ selector: '[scFile]' })\r\nexport class FileDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scFile') field: FileField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.field) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n\r\n if (!field || (!field.value && !field.src)) {\r\n return;\r\n }\r\n\r\n const file = field.src ? field : field.value;\r\n this.viewRef.rootNodes.forEach((node) => {\r\n node.href = file.src;\r\n if (node.innerHTML === '') {\r\n node.innerHTML = file.title || file.displayName;\r\n }\r\n });\r\n }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n Renderer2,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { mediaApi } from '@sitecore-jss/sitecore-jss';\r\nimport { ImageField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scImage]' })\r\nexport class ImageDirective implements OnChanges {\r\n private inlineRef: HTMLSpanElement | null = null;\r\n\r\n @Input('scImage') field: ImageField | '';\r\n\r\n @Input('scImageEditable') editable = true;\r\n\r\n /**\r\n * Custom regexp that finds media URL prefix that will be replaced by `/-/jssmedia` or `/~/jssmedia`.\r\n * @example\r\n * /\\/([-~]{1})assets\\//i\r\n * /-assets/website -> /-/jssmedia/website\r\n * /~assets/website -> /~/jssmedia/website\r\n */\r\n @Input('scImageMediaUrlPrefix') mediaUrlPrefix?: RegExp;\r\n\r\n @Input('scImageUrlParams') urlParams = {};\r\n\r\n @Input('scImageAttrs') attrs = {};\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<any>,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable || changes.urlParams || changes.attrs) {\r\n this.viewContainer.clear();\r\n if (this.inlineRef) {\r\n this.inlineRef.remove();\r\n this.inlineRef = null;\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const overrideAttrs = {\r\n ...this.getElementAttrs(),\r\n ...this.attrs,\r\n };\r\n const media = this.field;\r\n\r\n if (!media || (!media.editable && !media.value && !media.src)) {\r\n return;\r\n }\r\n\r\n let attrs: any = {};\r\n\r\n // we likely have an experience editor value, should be a string\r\n if (this.editable && media.editable) {\r\n const foundImg = mediaApi.findEditorImageTag(media.editable);\r\n if (!foundImg) {\r\n return this.renderInlineWrapper(media.editable);\r\n }\r\n attrs = this.getImageAttrs(foundImg.attrs, overrideAttrs, this.urlParams);\r\n if (!attrs) {\r\n return this.renderInlineWrapper(media.editable);\r\n }\r\n const tempImg: HTMLImageElement = this.renderer.createElement('img');\r\n Object.entries(attrs).forEach(([key, attrValue]: [string, any]) =>\r\n tempImg.setAttribute(key, attrValue)\r\n );\r\n const editableMarkup = media.editable.replace(foundImg.imgTag, tempImg.outerHTML);\r\n return this.renderInlineWrapper(editableMarkup);\r\n }\r\n\r\n // some wise-guy/gal is passing in a 'raw' image object value\r\n const img = media.src ? media : media.value;\r\n if (!img) {\r\n return null;\r\n }\r\n\r\n attrs = this.getImageAttrs(img, overrideAttrs, this.urlParams);\r\n if (attrs) {\r\n this.renderTemplate(attrs);\r\n }\r\n }\r\n\r\n private getImageAttrs(fieldAttrs: any, parsedAttrs: any, imageParams: any): any {\r\n const combinedAttrs = {\r\n ...fieldAttrs,\r\n ...parsedAttrs,\r\n };\r\n // eslint-disable-next-line prefer-const\r\n let { src, srcSet, ...otherAttrs } = combinedAttrs;\r\n if (!src) {\r\n return null;\r\n }\r\n const newAttrs = {\r\n ...otherAttrs,\r\n };\r\n // update image URL for jss handler and image rendering params\r\n src = mediaApi.updateImageUrl(src, imageParams, this.mediaUrlPrefix);\r\n if (srcSet) {\r\n // replace with HTML-formatted srcset, including updated image URLs\r\n newAttrs.srcSet = mediaApi.getSrcSet(src, srcSet, imageParams, this.mediaUrlPrefix);\r\n } else {\r\n newAttrs.src = src;\r\n }\r\n return newAttrs;\r\n }\r\n\r\n private renderTemplate(imageProps: any) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(imageProps).forEach(([key, imgPropVal]: [string, any]) =>\r\n this.renderer.setAttribute(node, key, imgPropVal)\r\n );\r\n });\r\n }\r\n\r\n private getElementAttrs(): { [key: string]: any } {\r\n const view = this.templateRef.createEmbeddedView(null);\r\n const element: Element = view.rootNodes[0];\r\n if (!element) {\r\n view.destroy();\r\n return {};\r\n }\r\n const attrs: { [key: string]: any } = {};\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n const attr = element.attributes.item(i);\r\n if (attr) {\r\n attrs[attr.name] = attr.value;\r\n }\r\n }\r\n view.destroy();\r\n return attrs;\r\n }\r\n\r\n private renderInlineWrapper(editable: string) {\r\n const span: HTMLSpanElement = this.renderer.createElement('span');\r\n span.className = 'sc-image-wrapper';\r\n span.innerHTML = editable;\r\n\r\n const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\r\n this.renderer.insertBefore(parentNode, span, this.elementRef.nativeElement);\r\n parentNode.removeChild(this.elementRef.nativeElement);\r\n\r\n this.inlineRef = span;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n Renderer2,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { LinkField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scLink]' })\r\nexport class LinkDirective implements OnChanges {\r\n private inlineRef: HTMLSpanElement | null = null;\r\n\r\n @Input('scLinkEditable') editable = true;\r\n\r\n @Input('scLinkAttrs') attrs: any = {};\r\n\r\n @Input('scLink') field: LinkField;\r\n\r\n constructor(\r\n protected viewContainer: ViewContainerRef,\r\n protected templateRef: TemplateRef<any>,\r\n protected renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable || changes.attrs) {\r\n this.viewContainer.clear();\r\n if (this.inlineRef) {\r\n this.inlineRef.remove();\r\n this.inlineRef = null;\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n if (this.editable && field && field.editableFirstPart && field.editableLastPart) {\r\n this.renderInlineWrapper(field.editableFirstPart, field.editableLastPart);\r\n } else if (field && (field.href || field.value)) {\r\n const props = field.href ? field : field.value;\r\n const linkText = field.text || field.value.text || field.href || field.value.href;\r\n const mergedAttrs = { ...props, ...this.attrs };\r\n this.renderTemplate(mergedAttrs, linkText);\r\n }\r\n }\r\n\r\n protected renderTemplate(props: any, linkText: string) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(props).forEach(([key, propValue]: [string, any]) => {\r\n if (key === 'href') {\r\n const isInvalidLink = !propValue || /^https?:\\/\\/$/.test(propValue);\r\n\r\n if (isInvalidLink) {\r\n if (!node.href) {\r\n return;\r\n }\r\n\r\n propValue = node.href;\r\n }\r\n }\r\n\r\n if (key === 'class' && node.className) {\r\n propValue += ` ${node.className}`;\r\n }\r\n\r\n this.renderer.setAttribute(node, key, propValue);\r\n });\r\n\r\n if (node.childNodes && node.childNodes.length === 0 && linkText) {\r\n node.textContent = linkText;\r\n }\r\n });\r\n }\r\n\r\n private renderInlineWrapper(editableFirstPart: string, editableLastPart: string) {\r\n const span: HTMLSpanElement = this.renderer.createElement('span');\r\n span.className = 'sc-link-wrapper';\r\n span.innerHTML = editableFirstPart + editableLastPart;\r\n\r\n // assign attributes from template to inline wrapper\r\n const attrs = {\r\n ...this.getElementAttrs(),\r\n ...this.attrs,\r\n };\r\n Object.entries(attrs).forEach(([key, attrValue]: [string, any]) =>\r\n this.renderer.setAttribute(span, key, attrValue)\r\n );\r\n\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\r\n this.renderer.insertBefore(parentNode, span, this.elementRef.nativeElement);\r\n\r\n this.inlineRef = span;\r\n }\r\n\r\n private getElementAttrs(): { [key: string]: any } {\r\n const view = this.templateRef.createEmbeddedView(null);\r\n const element: Element = view.rootNodes[0];\r\n if (!element) {\r\n view.destroy();\r\n return {};\r\n }\r\n const attrs: { [key: string]: any } = {};\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n const attr = element.attributes.item(i);\r\n if (attr) {\r\n attrs[attr.name] = attr.value;\r\n }\r\n }\r\n view.destroy();\r\n return attrs;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n Renderer2,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { LinkDirective } from './link.directive';\r\nimport { LinkField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scRouterLink]' })\r\nexport class RouterLinkDirective extends LinkDirective {\r\n @Input('scRouterLinkEditable') editable = true;\r\n\r\n @Input('scRouterLinkAttrs') attrs: any = {};\r\n\r\n @Input('scRouterLink') field: LinkField;\r\n\r\n constructor(\r\n viewContainer: ViewContainerRef,\r\n templateRef: TemplateRef<any>,\r\n renderer: Renderer2,\r\n elementRef: ElementRef,\r\n private router: Router\r\n ) {\r\n super(viewContainer, templateRef, renderer, elementRef);\r\n }\r\n\r\n protected renderTemplate(props: any, linkText: string) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(props).forEach(([key, propValue]: [string, any]) => {\r\n this.renderer.setAttribute(node, key, propValue);\r\n\r\n if (key === 'href') {\r\n this.renderer.listen(node, 'click', (event) => {\r\n this.router.navigate([propValue]);\r\n event.preventDefault();\r\n });\r\n }\r\n });\r\n\r\n if (node.childNodes && node.childNodes.length === 0 && linkText) {\r\n node.textContent = linkText;\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n Renderer2,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Router, NavigationExtras } from '@angular/router';\r\nimport { LinkDirective } from './link.directive';\r\nimport { LinkField } from './rendering-field';\r\n\r\n@Directive({ selector: '[scGenericLink]' })\r\nexport class GenericLinkDirective extends LinkDirective {\r\n @Input('scGenericLinkEditable') editable = true;\r\n\r\n @Input('scGenericLinkAttrs') attrs: any = {};\r\n\r\n @Input('scGenericLink') field: LinkField;\r\n\r\n @Input('scGenericLinkExtras') extras?: NavigationExtras;\r\n\r\n constructor(\r\n viewContainer: ViewContainerRef,\r\n templateRef: TemplateRef<any>,\r\n renderer: Renderer2,\r\n elementRef: ElementRef,\r\n private router: Router\r\n ) {\r\n super(viewContainer, templateRef, renderer, elementRef);\r\n }\r\n\r\n protected renderTemplate(props: any, linkText: string) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(props).forEach(([key, propValue]: [string, any]) => {\r\n if (key === 'href' && !this.isAbsoluteUrl(propValue)) {\r\n const urlTree = this.router.createUrlTree([propValue], this.extras);\r\n this.renderer.setAttribute(node, key, this.router.serializeUrl(urlTree));\r\n this.renderer.listen(node, 'click', (event) => {\r\n this.router.navigate([propValue], this.extras);\r\n event.preventDefault();\r\n });\r\n } else {\r\n this.renderer.setAttribute(node, key, propValue);\r\n }\r\n });\r\n\r\n if (node.childNodes && node.childNodes.length === 0 && linkText) {\r\n node.textContent = linkText;\r\n }\r\n });\r\n }\r\n\r\n private isAbsoluteUrl(url?: string) {\r\n if (url === null) {\r\n return false;\r\n }\r\n if (typeof url !== 'string') {\r\n throw new TypeError('Expected a string');\r\n }\r\n\r\n return /^[a-z][a-z0-9+.-]*:/.test(url);\r\n }\r\n}\r\n","import { InjectionToken, Type } from '@angular/core';\r\n\r\n/** Registers a statically loaded component */\r\nexport class ComponentNameAndType {\r\n name: string;\r\n type: Type<any>;\r\n}\r\n\r\n/** Registers a lazily loaded component by name and module to lazy load when it's needed */\r\nexport interface ComponentNameAndModule {\r\n /** Name of the component */\r\n path: string;\r\n /**\r\n * Dynamic import of the component,\r\n * e.g. () => import('./path/to/lazyloadedcomponent.module').then(m => m.LazyLoadedComponentModuleExportName)\r\n */\r\n loadChildren: () => Promise<any>;\r\n}\r\n\r\n/**\r\n * @param {any} object\r\n */\r\nexport function instanceOfComponentNameAndType(object: any): object is ComponentNameAndType {\r\n return 'type' in object;\r\n}\r\n\r\n/**\r\n * @param {any} object\r\n */\r\nexport function instanceOfComponentNameAndModule(object: any): object is ComponentNameAndModule {\r\n return 'module' in object;\r\n}\r\n\r\nexport const PLACEHOLDER_COMPONENTS = new InjectionToken<ComponentNameAndType[]>(\r\n 'Sc.placeholder.components'\r\n);\r\nexport const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken<ComponentNameAndType[]>(\r\n 'Sc.placeholder.lazyComponents'\r\n);\r\nexport const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken<Type<any>>(\r\n 'Sc.placeholder.missingComponentComponent'\r\n);\r\nexport const DYNAMIC_COMPONENT = new InjectionToken<Type<any> | { [s: string]: any }>(\r\n 'Sc.placeholder.dynamicComponent'\r\n);\r\n","import { Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\r\nimport { HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\n\r\n@Component({\r\n selector: 'sc-raw',\r\n template: '',\r\n})\r\nexport class RawComponent implements OnInit {\r\n @Input() rendering: HtmlElementRendering;\r\n\r\n constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\r\n\r\n ngOnInit() {\r\n const el = this.renderer.createElement(this.rendering.name);\r\n const contents = this.renderer.createText(this.rendering.contents || '');\r\n const attributes = this.rendering.attributes;\r\n for (const attr in attributes) {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if ((attributes as any).hasOwnProperty(attr)) {\r\n const value = attributes[attr];\r\n this.renderer.setAttribute(el, attr, value || '');\r\n }\r\n }\r\n\r\n this.renderer.appendChild(el, contents);\r\n const parentNode = this.renderer.parentNode(this.elementRef.nativeElement);\r\n this.renderer.insertBefore(parentNode, el, this.elementRef.nativeElement);\r\n parentNode.removeChild(this.elementRef.nativeElement);\r\n }\r\n}\r\n","import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\n\r\n/**\r\n * @param {HtmlElementRendering | ComponentRendering} rendering\r\n */\r\nexport function isRawRendering(\r\n rendering: HtmlElementRendering | ComponentRendering\r\n): rendering is HtmlElementRendering {\r\n return (\r\n !(rendering as ComponentRendering).componentName &&\r\n (rendering as HtmlElementRendering).name !== undefined\r\n );\r\n}\r\n","import {\r\n ComponentFactory,\r\n Inject,\r\n Injectable,\r\n Injector,\r\n Type,\r\n Compiler,\r\n NgModuleFactory,\r\n} from '@angular/core';\r\nimport { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\nimport {\r\n ComponentNameAndModule,\r\n ComponentNameAndType,\r\n DYNAMIC_COMPONENT,\r\n PLACEHOLDER_COMPONENTS,\r\n PLACEHOLDER_LAZY_COMPONENTS,\r\n} from './components/placeholder.token';\r\nimport { RawComponent } from './components/raw.component';\r\nimport { isRawRendering } from './components/rendering';\r\n\r\nexport interface ComponentFactoryResult {\r\n componentImplementation?: Type<any>;\r\n componentDefinition: ComponentRendering | HtmlElementRendering;\r\n componentFactory?: ComponentFactory<any>;\r\n}\r\n\r\n@Injectable()\r\nexport class JssComponentFactoryService {\r\n private componentMap: Map<string, Type<any>>;\r\n private lazyComponentMap: Map<string, ComponentNameAndModule>;\r\n\r\n constructor(\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n @Inject(PLACEHOLDER_COMPONENTS) private components: ComponentNameAndType[],\r\n @Inject(PLACEHOLDER_LAZY_COMPONENTS) private lazyComponents: ComponentNameAndModule[]\r\n ) {\r\n this.componentMap = new Map();\r\n this.lazyComponentMap = new Map();\r\n\r\n this.components.forEach((c) => this.componentMap.set(c.name, c.type));\r\n\r\n if (this.lazyComponents) {\r\n this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c));\r\n }\r\n }\r\n\r\n private loadModuleFactory(lazyComponent: ComponentNameAndModule): Promise<NgModuleFactory<any>> {\r\n return lazyComponent.loadChildren().then((loaded) => {\r\n if (loaded instanceof NgModuleFactory) {\r\n return loaded;\r\n } else {\r\n return this.compiler.compileModuleAsync(loaded);\r\n }\r\n });\r\n }\r\n\r\n getComponent(component: ComponentRendering): Promise<ComponentFactoryResult> {\r\n const loadedComponent = this.componentMap.get(component.componentName);\r\n\r\n if (loadedComponent) {\r\n return Promise.resolve({\r\n componentDefinition: component,\r\n componentImplementation: this.componentMap.get(component.componentName),\r\n });\r\n }\r\n\r\n const lazyComponent = this.lazyComponentMap.get(component.componentName);\r\n\r\n if (lazyComponent) {\r\n return this.loadModuleFactory(lazyComponent).then((ngModuleFactory) => {\r\n let componentType = null;\r\n const moduleRef = ngModuleFactory.create(this.injector);\r\n const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT);\r\n if (!dynamicComponentType) {\r\n throw new Error(\r\n `JssComponentFactoryService: Lazy load module for component \"${lazyComponent.path}\" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`\r\n );\r\n }\r\n\r\n if (component.componentName in dynamicComponentType) {\r\n componentType = (dynamicComponentType as { [s: string]: any })[component.componentName];\r\n } else {\r\n if (typeof dynamicComponentType === 'function') {\r\n componentType = dynamicComponentType;\r\n } else {\r\n throw new Error(\r\n `JssComponentFactoryService: Lazy load module for component \"${lazyComponent.path}\" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?`\r\n );\r\n }\r\n }\r\n\r\n return {\r\n componentDefinition: component,\r\n componentImplementation: componentType,\r\n componentFactory: moduleRef.componentFactoryResolver.resolveComponentFactory(\r\n componentType\r\n ),\r\n };\r\n });\r\n }\r\n\r\n return Promise.resolve({\r\n componentDefinition: component,\r\n });\r\n }\r\n\r\n getComponents(\r\n components: Array<ComponentRendering | HtmlElementRendering>\r\n ): Promise<ComponentFactoryResult[]> {\r\n // acquire all components and keep them in order while handling their potential async-ness\r\n return Promise.all(\r\n components.map((component) =>\r\n isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component)\r\n )\r\n );\r\n }\r\n\r\n private getRawComponent(component: HtmlElementRendering): Promise<ComponentFactoryResult> {\r\n return Promise.resolve({\r\n componentImplementation: RawComponent,\r\n componentDefinition: component,\r\n });\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[scPlaceholderLoading]',\r\n})\r\nexport class PlaceholderLoadingDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[renderEach]',\r\n})\r\nexport class RenderEachDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[renderEmpty]',\r\n})\r\nexport class RenderEmptyDirective {\r\n constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentFactoryResolver,\r\n ContentChild,\r\n DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SimpleChanges,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\nimport { Observable } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport {\r\n ComponentFactoryResult,\r\n JssComponentFactoryService,\r\n} from '../jss-component-factory.service';\r\nimport { PlaceholderLoadingDirective } from './placeholder-loading.directive';\r\nimport { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';\r\nimport { RenderEachDirective } from './render-each.directive';\r\nimport { RenderEmptyDirective } from './render-empty.directive';\r\nimport { isRawRendering } from './rendering';\r\n\r\n/**\r\n * @param {ComponentRendering} rendering\r\n * @param {string} name\r\n */\r\nfunction getPlaceholder(rendering: ComponentRendering, name: string) {\r\n if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) {\r\n return rendering.placeholders[name];\r\n }\r\n return null;\r\n}\r\n\r\n@Component({\r\n selector: 'sc-placeholder,[sc-placeholder]',\r\n template: `\r\n <ng-template\r\n *ngIf=\"isLoading\"\r\n [ngTemplateOutlet]=\"placeholderLoading?.templateRef\"\r\n ></ng-template>\r\n <ng-template #view></ng-template>\r\n `,\r\n})\r\nexport class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestroy {\r\n private _inputs: { [key: string]: any };\r\n private _differ: KeyValueDiffer<string, any>;\r\n private _componentInstances: any[] = [];\r\n private destroyed = false;\r\n private parentStyleAttribute = '';\r\n public isLoading = true;\r\n\r\n @Input() name?: string;\r\n @Input() rendering: ComponentRendering;\r\n @Input() renderings?: Array<ComponentRendering | HtmlElementRendering>;\r\n @Input() outputs: { [k: string]: (eventType: any) => void };\r\n\r\n @Output()\r\n loaded = new EventEmitter<string | undefined>();\r\n\r\n @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef;\r\n @ContentChild(RenderEachDirective, { static: true }) renderEachTemplate: RenderEachDirective;\r\n @ContentChild(RenderEmptyDirective, { static: true }) renderEmptyTemplate: RenderEmptyDirective;\r\n @ContentChild(PlaceholderLoadingDirective, { static: true })\r\n placeholderLoading?: PlaceholderLoadingDirective;\r\n\r\n @Input()\r\n set inputs(value: { [key: string]: any }) {\r\n this._inputs = value;\r\n if (!this._differ && value) {\r\n this._differ = this.differs.find(value).create();\r\n }\r\n }\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private differs: KeyValueDiffers,\r\n private componentFactory: JssComponentFactoryService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n @Inject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT) private missingComponentComponent: Type<any>\r\n ) {}\r\n\r\n ngOnInit() {\r\n // just to ensure the element exists\r\n const elem = this.elementRef.nativeElement;\r\n\r\n if (elem) {\r\n const attributes: NamedNodeMap = elem.attributes;\r\n for (let i = 0; i < attributes.length; i++) {\r\n const attr: Attr | null = attributes.item(i);\r\n if (attr && attr.name.indexOf('_ngcontent') !== -1) {\r\n this.parentStyleAttribute = attr.name;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed = true;\r\n this._componentInstances = [];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rendering || changes.renderings) {\r\n this._render();\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n if (!this._differ || !this._inputs || this._componentInstances.length === 0) {\r\n return;\r\n }\r\n\r\n const changes = this._differ.diff(this._inputs);\r\n if (!changes) {\r\n return;\r\n }\r\n const updates: { [key: string]: any } = {};\r\n changes.forEachRemovedItem((change) => (updates[change.key] = null));\r\n changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue));\r\n changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue));\r\n this._componentInstances.forEach((componentInstance) =>\r\n this._setComponentInputs(componentInstance, updates)\r\n );\r\n }\r\n\r\n private _setComponentInputs(componentInstance: any, inputs: { [key: string]: any }) {\r\n Object.entries(inputs).forEach(\r\n ([input, inputValue]) => (componentInstance[input] = inputValue)\r\n );\r\n }\r\n\r\n private _subscribeComponentOutputs(\r\n componentInstance: any,\r\n outputs: { [k: string]: (eventType: any) => void }\r\n ) {\r\n Object.keys(outputs)\r\n .filter(\r\n (output) => componentInstance[output] && componentInstance[output] instanceof Observable\r\n )\r\n .forEach((output) =>\r\n (componentInstance[output] as Observable<any>)\r\n .pipe(takeWhile(() => !this.destroyed))\r\n .subscribe(outputs[output])\r\n );\r\n }\r\n\r\n private _render() {\r\n this._componentInstances = [];\r\n this.view.clear();\r\n\r\n if (!this.rendering && !this.renderings) {\r\n return;\r\n }\r\n\r\n if (!this.name && !this.renderings) {\r\n console.warn(\r\n 'Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.'\r\n );\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || '');\r\n\r\n if (!placeholder) {\r\n console.warn(\r\n `Placeholder '${this.name}' was not found in the current rendering data`,\r\n JSON.stringify(this.rendering, null, 2)\r\n );\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n // if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined\r\n const placeholderIsEmpty = placeholder.every(\r\n (rendering: ComponentRendering | HtmlElementRendering) => isRawRendering(rendering)\r\n );\r\n\r\n if (this.renderEmptyTemplate && placeholderIsEmpty) {\r\n this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, {\r\n renderings: placeholder,\r\n });\r\n this.isLoading = false;\r\n } else {\r\n this.componentFactory\r\n .getComponents(placeholder)\r\n .then((components) =>\r\n components.forEach((rendering, index) => {\r\n if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) {\r\n this._renderTemplatedComponent(rendering.componentDefinition, index);\r\n } else {\r\n this._renderEmbeddedComponent(rendering, index);\r\n }\r\n this.isLoading = false;\r\n })\r\n )\r\n .then(() => {\r\n this.changeDetectorRef.markForCheck();\r\n this.loaded.emit(this.name);\r\n });\r\n }\r\n }\r\n\r\n private _renderTemplatedComponent(\r\n rendering: ComponentRendering | HtmlElementRendering,\r\n index: number\r\n ) {\r\n // the render-each template takes care of all component mapping etc\r\n // generally using <sc-render-component> which is about like _renderEmbeddedComponent()\r\n // as a separate component\r\n this.view.createEmbeddedView(this.renderEachTemplate.templateRef, {\r\n rendering,\r\n index,\r\n });\r\n }\r\n\r\n private _renderEmbeddedComponent(rendering: ComponentFactoryResult, index: number) {\r\n if (!rendering.componentImplementation) {\r\n const componentName = (rendering.componentDefinition as ComponentRendering).componentName;\r\n console.error(\r\n `Placeholder ${this.name} contains unknown component ${componentName}.`,\r\n `Ensure component is mapped, like:\r\n JssModule.withComponents([\r\n { name: '${componentName}', type: ${componentName}Component }\r\n ])`\r\n );\r\n\r\n rendering.componentImplementation = this.missingComponentComponent;\r\n }\r\n\r\n const componentFactory =\r\n rendering.componentFactory ||\r\n this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);\r\n\r\n // apply the parent style attribute _ngcontent\r\n // work-around for https://github.com/angular/angular/issues/12215\r\n const createdComponentRef = this.view.createComponent(componentFactory, index);\r\n if (this.parentStyleAttribute) {\r\n this.renderer.setAttribute(\r\n createdComponentRef.location.nativeElement,\r\n this.parentStyleAttribute,\r\n ''\r\n );\r\n }\r\n\r\n const componentInstance = createdComponentRef.instance;\r\n componentInstance.rendering = rendering.componentDefinition;\r\n if (this._inputs) {\r\n this._setComponentInputs(componentInstance, this._inputs);\r\n }\r\n if (this.outputs) {\r\n this._subscribeComponentOutputs(componentInstance, this.outputs);\r\n }\r\n this._componentInstances.push(componentInstance);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { RichTextField } from './rendering-field';\r\n\r\n@Directive({\r\n selector: '[scRichText]',\r\n})\r\nexport class RichTextDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scRichTextEditable') editable = true;\r\n\r\n @Input('scRichText') field: RichTextField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n if (!field || (!field.editable && !field.value)) {\r\n return;\r\n }\r\n\r\n const html = field.editable && this.editable ? field.editable : field.value;\r\n this.viewRef.rootNodes.forEach((node) => {\r\n node.innerHTML = html;\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TextField } from './rendering-field';\r\n\r\n@Directive({\r\n selector: '[scText]',\r\n})\r\nexport class TextDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scTextEditable') editable = true;\r\n\r\n @Input('scTextEncode') encode = true;\r\n\r\n @Input('scText') field: TextField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.editable || changes.encode) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n let editable = this.editable;\r\n\r\n if (!field || (!field.editable && !field.value)) {\r\n return;\r\n }\r\n\r\n // can't use editable value if we want to output unencoded\r\n if (!this.encode) {\r\n editable = false;\r\n }\r\n\r\n const html = field.editable && editable ? field.editable : field.value;\r\n const setDangerously = (field.editable && editable) || !this.encode;\r\n\r\n this.viewRef.rootNodes.forEach((node) => {\r\n if (setDangerously) {\r\n node.innerHTML = html;\r\n } else {\r\n node.textContent = html;\r\n }\r\n });\r\n }\r\n}\r\n","import { LayoutServiceContextData } from '@sitecore-jss/sitecore-jss';\r\n\r\nexport class LayoutServiceError {\r\n status: number;\r\n statusText: string;\r\n data?: { sitecore?: LayoutServiceContextData };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n dataApi,\r\n LayoutServiceData,\r\n LayoutServiceRequestOptions,\r\n PlaceholderData,\r\n} from '@sitecore-jss/sitecore-jss';\r\nimport { from as fromPromise, Observable, throwError as observableThrow } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { LayoutServiceError } from './layout-service-error';\r\n\r\nconst { fetchRouteData, fetchPlaceholderData } = dataApi;\r\n\r\n@Injectable()\r\nexport class LayoutService {\r\n private static getLayoutServiceError(error: any): Observable<LayoutServiceError> {\r\n const layoutServiceError = new LayoutServiceError();\r\n const response = error.response;\r\n if (response) {\r\n layoutServiceError.status = response.status;\r\n layoutServiceError.statusText = response.statusText;\r\n layoutServiceError.data = response.data;\r\n }\r\n\r\n return observableThrow(layoutServiceError);\r\n }\r\n\r\n getRouteData(\r\n route: string,\r\n options: LayoutServiceRequestOptions<LayoutServiceData>\r\n ): Observable<LayoutServiceData | LayoutServiceError> {\r\n return fromPromise(fetchRouteData(route, options)).pipe(\r\n catchError(LayoutService.getLayoutServiceError)\r\n );\r\n }\r\n\r\n getPlaceholderData(\r\n route: string,\r\n placeholderName: string,\r\n options: LayoutServiceRequestOptions<PlaceholderData>\r\n ): Observable<PlaceholderData | LayoutServiceError> {\r\n return fromPromise(fetchPlaceholderData(placeholderName, route, options)).pipe(\r\n catchError(LayoutService.getLayoutServiceError)\r\n );\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport {\r\n Directive,\r\n EmbeddedViewRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { TextField } from './rendering-field';\r\n\r\n@Directive({\r\n selector: '[scDate]',\r\n})\r\nexport class DateDirective implements OnChanges {\r\n private viewRef: EmbeddedViewRef<any>;\r\n\r\n @Input('scDateFormat') format?: string;\r\n\r\n @Input('scDateTimezone') timezone?: string;\r\n\r\n @Input('scDateLocale') locale?: string;\r\n\r\n @Input('scDateEditable') editable = true;\r\n\r\n @Input('scDate') field: TextField;\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<any>,\r\n private datePipe: DatePipe\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.field || changes.format) {\r\n if (!this.viewRef) {\r\n this.viewContainer.clear();\r\n this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n\r\n this.updateView();\r\n }\r\n }\r\n\r\n private updateView() {\r\n const field = this.field;\r\n\r\n if (!field || (!field.editable && !field.value)) {\r\n return;\r\n }\r\n\r\n const html = field.editable && this.editable ? field.editable : field.value;\r\n const setDangerously = field.editable && this.editable;\r\n\r\n this.viewRef.rootNodes.forEach((node) => {\r\n if (setDangerously) {\r\n node.innerHTML = html;\r\n } else {\r\n node.textContent = this.datePipe.transform(html, this.format, this.timezone, this.locale);\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sc-missing-component',\r\n template: `\r\n <div\r\n style=\"background: darkorange; outline: 5px solid orange; padding: 10px; color: white; max-width: 500px;\"\r\n >\r\n <h2>{{ rendering.componentName }}</h2>\r\n <p>JSS component is missing Angular component implementation.</p>\r\n </div>\r\n `,\r\n})\r\nexport class MissingComponentComponent {\r\n @Input() rendering: any;\r\n}\r\n","import {\r\n Component,\r\n ComponentFactoryResolver,\r\n Inject,\r\n Input,\r\n KeyValueDiffer,\r\n KeyValueDiffers,\r\n OnChanges,\r\n SimpleChanges,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss';\r\nimport { Observable } from 'rxjs';\r\nimport { takeWhile } from 'rxjs/operators';\r\nimport {\r\n ComponentFactoryResult,\r\n JssComponentFactoryService,\r\n} from '../jss-component-factory.service';\r\nimport { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token';\r\nimport { RawComponent } from './raw.component';\r\nimport { isRawRendering } from './rendering';\r\n\r\n/**\r\n * Renders a single JSS component given a rendering definition.\r\n * Useful inside templated placeholders.\r\n */\r\n@Component({\r\n selector: 'sc-render-component',\r\n template: `\r\n <ng-template #view></ng-template>\r\n `,\r\n})\r\nexport class RenderComponentComponent implements OnChanges {\r\n private _inputs: { [key: string]: any };\r\n private _differ: KeyValueDiffer<string, any>;\r\n private destroyed = false;\r\n\r\n @Input() rendering: ComponentRendering | HtmlElementRendering;\r\n @Input() outputs: { [k: string]: (eventType: any) => void };\r\n @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef;\r\n\r\n @Input()\r\n set inputs(value: { [key: string]: any }) {\r\n this._inputs = value;\r\n if (!this._differ && value) {\r\n this._differ = this.differs.find(value).create();\r\n }\r\n }\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private differs: KeyValueDiffers,\r\n private componentFactory: JssComponentFactoryService,\r\n @Inject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT) private missingComponentComponent: Type<any>\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.rendering) {\r\n this._render();\r\n }\r\n }\r\n\r\n private _setComponentInputs(componentInstance: any, inputs: { [key: string]: any }) {\r\n Object.entries(inputs).forEach(\r\n ([input, inputValue]) => (componentInstance[input] = inputValue)\r\n );\r\n }\r\n\r\n private _subscribeComponentOutputs(\r\n componentInstance: any,\r\n outputs: { [k: string]: (eventType: any) => void }\r\n ) {\r\n Object.keys(outputs)\r\n .filter(\r\n (output) => componentInstance[output] && componentInstance[output] instanceof Observable\r\n )\r\n .forEach((output) =>\r\n (componentInstance[output] as Observable<any>)\r\n .pipe(takeWhile(() => !this.destroyed))\r\n .subscribe(outputs[output])\r\n );\r\n }\r\n\r\n private _render() {\r\n this.view.clear();\r\n\r\n if (!this.rendering) {\r\n return;\r\n }\r\n\r\n const resolveComponent: Promise<ComponentFactoryResult> = isRawRendering(this.rendering)\r\n ? Promise.resolve({\r\n componentImplementation: RawComponent,\r\n componentDefinition: this.rendering,\r\n })\r\n : this.componentFactory.getComponent(this.rendering);\r\n\r\n resolveComponent.then((rendering) => {\r\n if (!rendering.componentImplementation) {\r\n const componentName = (rendering.componentDefinition as ComponentRendering).componentName;\r\n console.error(\r\n `Attempted to render unknown component ${componentName}.`,\r\n `Ensure component is mapped, like:\r\n JssModule.withComponents([\r\n { name: '${componentName}', type: ${componentName}Component }\r\n ])`\r\n );\r\n\r\n rendering.componentImplementation = this.missingComponentComponent;\r\n }\r\n\r\n const componentFactory =\r\n rendering.componentFactory ||\r\n this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation);\r\n\r\n const componentInstance = this.view.createComponent(componentFactory, 0).instance;\r\n componentInstance.rendering = rendering.componentDefinition;\r\n if (this._inputs) {\r\n this._setComponentInputs(componentInstance, this._inputs);\r\n }\r\n if (this.outputs) {\r\n this._subscribeComponentOutputs(componentInstance, this.outputs);\r\n }\r\n });\r\n }\r\n}\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, ModuleWithProviders, NgModule, Type } from '@angular/core';\r\nimport { ROUTES } from '@angular/router';\r\nimport { DateDirective } from './components/date.directive';\r\nimport { FileDirective } from './components/file.directive';\r\nimport { GenericLinkDirective } from './components/generic-link.directive';\r\nimport { ImageDirective } from './components/image.directive';\r\nimport { LinkDirective } from './components/link.directive';\r\nimport { MissingComponentComponent } from './components/missing-component.component';\r\nimport { PlaceholderLoadingDirective } from './components/placeholder-loading.directive';\r\nimport { PlaceholderComponent } from './components/placeholder.component';\r\nimport {\r\n ComponentNameAndModule,\r\n ComponentNameAndType,\r\n DYNAMIC_COMPONENT,\r\n PLACEHOLDER_COMPONENTS,\r\n PLACEHOLDER_LAZY_COMPONENTS,\r\n PLACEHOLDER_MISSING_COMPONENT_COMPONENT,\r\n} from './components/placeholder.token';\r\nimport { RawComponent } from './components/raw.component';\r\nimport { RenderComponentComponent } from './components/render-component.component';\r\nimport { RenderEachDirective } from './components/render-each.directive';\r\nimport { RenderEmptyDirective } from './components/render-empty.directive';\r\nimport { RichTextDirective } from './components/rich-text.directive';\r\nimport { RouterLinkDirective } from './components/router-link.directive';\r\nimport { TextDirective } from './components/text.directive';\r\nimport { JssComponentFactoryService } from './jss-component-factory.service';\r\nimport { LayoutService } from './layout.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [\r\n FileDirective,\r\n ImageDirective,\r\n LinkDirective,\r\n RouterLinkDirective,\r\n GenericLinkDirective,\r\n DateDirective,\r\n RenderEachDirective,\r\n RenderEmptyDirective,\r\n PlaceholderLoadingDirective,\r\n RenderComponentComponent,\r\n PlaceholderComponent,\r\n RawComponent,\r\n RichTextDirective,\r\n TextDirective,\r\n MissingComponentComponent,\r\n ],\r\n exports: [\r\n FileDirective,\r\n ImageDirective,\r\n DateDirective,\r\n LinkDirective,\r\n RouterLinkDirective,\r\n GenericLinkDirective,\r\n RenderEachDirective,\r\n RenderEmptyDirective,\r\n RenderComponentComponent,\r\n PlaceholderComponent,\r\n PlaceholderLoadingDirective,\r\n RichTextDirective,\r\n TextDirective,\r\n ],\r\n entryComponents: [RawComponent, MissingComponentComponent],\r\n})\r\nexport class JssModule {\r\n /**\r\n * Instantiates the JSS module with no component factory.\r\n * Useful for using it from libraries. Most of the time you'd want withComponents()\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static forRoot(): ModuleWithProviders<JssModule> {\r\n return {\r\n ngModule: JssModule,\r\n providers: [LayoutService, DatePipe, JssComponentFactoryService],\r\n };\r\n }\r\n\r\n /**\r\n * Instantiates a module for a lazy-loaded JSS component\r\n * @param {Type<any>} component\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static forChild(component: Type<any>): ModuleWithProviders<JssModule> {\r\n return {\r\n ngModule: JssModule,\r\n providers: [\r\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: component, multi: true },\r\n { provide: ROUTES, useValue: [], multi: true },\r\n { provide: DYNAMIC_COMPONENT, useValue: component },\r\n ],\r\n };\r\n }\r\n\r\n /**\r\n * Instantiates the JSS module and specifies the mapping from component name to component implementation.\r\n * Appropriate when defining the set of JSS components that your app is aware of.\r\n * @param {ComponentNameAndType[]} components\r\n * @param {ComponentNameAndModule[]} [lazyComponents]\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static withComponents(\r\n components: ComponentNameAndType[],\r\n lazyComponents?: ComponentNameAndModule[]\r\n ): ModuleWithProviders<JssModule> {\r\n return {\r\n ngModule: JssModule,\r\n providers: [\r\n {\r\n provide: ANALYZE_FOR_ENTRY_COMPONENTS,\r\n useValue: components,\r\n multi: true,\r\n },\r\n { provide: PLACEHOLDER_COMPONENTS, useValue: components },\r\n { provide: PLACEHOLDER_LAZY_COMPONENTS, useValue: lazyComponents || [] },\r\n { provide: ROUTES, useValue: lazyComponents || [], multi: true },\r\n { provide: PLACEHOLDER_MISSING_COMPONENT_COMPONENT, useValue: MissingComponentComponent },\r\n ...(JssModule.forRoot().providers as any[]),\r\n ],\r\n };\r\n }\r\n}\r\n"]}
|
|
@@ -50,4 +50,4 @@ DateDirective.propDecorators = {
|
|
|
50
50
|
editable: [{ type: Input, args: ['scDateEditable',] }],
|
|
51
51
|
field: [{ type: Input, args: ['scDate',] }]
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiQzovV29yay9TaXRlY29yZS5KU1Mvc2NyaXB0cy9wdWJsaXNoL2pzcy1naXRodWIvcGFja2FnZXMvc2l0ZWNvcmUtanNzLWFuZ3VsYXIvc3JjLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9kYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBR0wsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQU12QixNQUFNLE9BQU8sYUFBYTtJQWF4QixZQUNVLGFBQStCLEVBQy9CLFdBQTZCLEVBQzdCLFFBQWtCO1FBRmxCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVBILGFBQVEsR0FBRyxJQUFJLENBQUM7SUFRdEMsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN4RTtZQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUUsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXZELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RDLElBQUksY0FBYyxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFsREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2FBQ3JCOzs7WUFOQyxnQkFBZ0I7WUFEaEIsV0FBVztZQVBKLFFBQVE7OztxQkFrQmQsS0FBSyxTQUFDLGNBQWM7dUJBRXBCLEtBQUssU0FBQyxnQkFBZ0I7cUJBRXRCLEtBQUssU0FBQyxjQUFjO3VCQUVwQixLQUFLLFNBQUMsZ0JBQWdCO29CQUV0QixLQUFLLFNBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRW1iZWRkZWRWaWV3UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gJy4vcmVuZGVyaW5nLWZpZWxkJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NjRGF0ZV0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSB2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCdzY0RhdGVGb3JtYXQnKSBmb3JtYXQ/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnc2NEYXRlVGltZXpvbmUnKSB0aW1lem9uZT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdzY0RhdGVMb2NhbGUnKSBsb2NhbGU/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnc2NEYXRlRWRpdGFibGUnKSBlZGl0YWJsZSA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgnc2NEYXRlJykgZmllbGQ6IFRleHRGaWVsZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGVcclxuICApIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmZpZWxkIHx8IGNoYW5nZXMuZm9ybWF0KSB7XHJcbiAgICAgIGlmICghdGhpcy52aWV3UmVmKSB7XHJcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy52aWV3UmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy51cGRhdGVWaWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZpZXcoKSB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGQ7XHJcblxyXG4gICAgaWYgKCFmaWVsZCB8fCAoIWZpZWxkLmVkaXRhYmxlICYmICFmaWVsZC52YWx1ZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGh0bWwgPSBmaWVsZC5lZGl0YWJsZSAmJiB0aGlzLmVkaXRhYmxlID8gZmllbGQuZWRpdGFibGUgOiBmaWVsZC52YWx1ZTtcclxuICAgIGNvbnN0IHNldERhbmdlcm91c2x5ID0gZmllbGQuZWRpdGFibGUgJiYgdGhpcy5lZGl0YWJsZTtcclxuXHJcbiAgICB0aGlzLnZpZXdSZWYucm9vdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgaWYgKHNldERhbmdlcm91c2x5KSB7XHJcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShodG1sLCB0aGlzLmZvcm1hdCwgdGhpcy50aW1lem9uZSwgdGhpcy5sb2NhbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|