@sitecore-jss/sitecore-jss-angular 20.2.3 → 20.3.0-canary.2

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.
Files changed (59) hide show
  1. package/LICENSE.txt +202 -202
  2. package/README.md +8 -8
  3. package/dist/README.md +8 -8
  4. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js +1448 -1444
  5. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.js.map +1 -1
  6. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js +2 -2
  7. package/dist/bundles/sitecore-jss-sitecore-jss-angular.umd.min.js.map +1 -1
  8. package/dist/components/date.directive.d.ts +17 -17
  9. package/dist/components/file.directive.d.ts +14 -14
  10. package/dist/components/generic-link.directive.d.ts +18 -18
  11. package/dist/components/hidden-rendering.component.d.ts +4 -4
  12. package/dist/components/image.directive.d.ts +32 -32
  13. package/dist/components/link.directive.d.ts +22 -22
  14. package/dist/components/missing-component.component.d.ts +4 -4
  15. package/dist/components/placeholder-loading.directive.d.ts +5 -5
  16. package/dist/components/placeholder.component.d.ts +46 -46
  17. package/dist/components/placeholder.token.d.ts +31 -31
  18. package/dist/components/raw.component.d.ts +9 -9
  19. package/dist/components/render-component.component.d.ts +31 -31
  20. package/dist/components/render-each.directive.d.ts +5 -5
  21. package/dist/components/render-empty.directive.d.ts +5 -5
  22. package/dist/components/rendering-field.d.ts +40 -40
  23. package/dist/components/rendering.d.ts +5 -5
  24. package/dist/components/rich-text.directive.d.ts +12 -12
  25. package/dist/components/router-link.directive.d.ts +16 -16
  26. package/dist/components/text.directive.d.ts +13 -13
  27. package/dist/esm2015/components/date.directive.js +52 -52
  28. package/dist/esm2015/components/file.directive.js +44 -44
  29. package/dist/esm2015/components/generic-link.directive.js +57 -57
  30. package/dist/esm2015/components/hidden-rendering.component.js +16 -16
  31. package/dist/esm2015/components/image.directive.js +122 -122
  32. package/dist/esm2015/components/link.directive.js +101 -101
  33. package/dist/esm2015/components/missing-component.component.js +12 -12
  34. package/dist/esm2015/components/placeholder-loading.directive.js +14 -14
  35. package/dist/esm2015/components/placeholder.component.js +197 -197
  36. package/dist/esm2015/components/placeholder.token.js +21 -21
  37. package/dist/esm2015/components/raw.component.js +36 -36
  38. package/dist/esm2015/components/render-component.component.js +88 -88
  39. package/dist/esm2015/components/render-each.directive.js +14 -14
  40. package/dist/esm2015/components/render-empty.directive.js +14 -14
  41. package/dist/esm2015/components/rendering-field.js +1 -1
  42. package/dist/esm2015/components/rendering.js +7 -7
  43. package/dist/esm2015/components/rich-text.directive.js +40 -40
  44. package/dist/esm2015/components/router-link.directive.js +43 -43
  45. package/dist/esm2015/components/text.directive.js +53 -53
  46. package/dist/esm2015/jss-component-factory.service.js +87 -87
  47. package/dist/esm2015/lib.module.js +114 -114
  48. package/dist/esm2015/public_api.js +19 -18
  49. package/dist/esm2015/sitecore-jss-sitecore-jss-angular.js +13 -13
  50. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js +1051 -1050
  51. package/dist/fesm2015/sitecore-jss-sitecore-jss-angular.js.map +1 -1
  52. package/dist/jss-component-factory.service.d.ts +21 -21
  53. package/dist/lib.module.d.ts +24 -24
  54. package/dist/package.json +2 -2
  55. package/dist/public_api.d.ts +19 -18
  56. package/dist/sitecore-jss-sitecore-jss-angular.d.ts +13 -13
  57. package/dist/sitecore-jss-sitecore-jss-angular.metadata.json +1 -1
  58. package/package.json +3 -3
  59. package/typings/README.md +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"sitecore-jss-sitecore-jss-angular.js","sources":["../../src/components/file.directive.ts","../../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/hidden-rendering.component.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/components/date.directive.ts","../../src/components/missing-component.component.ts","../../src/components/render-component.component.ts","../../src/lib.module.ts","../../src/sitecore-jss-sitecore-jss-angular.ts"],"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<unknown>;\r\n\r\n @Input('scFile') field: FileField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<unknown>) {}\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 if (!file) return;\r\n\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","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/media';\r\nimport { ImageField, ImageFieldValue } 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: { [param: string]: string | number } = {};\r\n\r\n @Input('scImageAttrs') attrs: { [param: string]: unknown } = {};\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>,\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: { [attr: string]: string } | null = {};\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, string]) =>\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(\r\n fieldAttrs: ImageFieldValue,\r\n parsedAttrs: { [attr: string]: unknown },\r\n imageParams: { [param: string]: string | number }\r\n ): { [attr: string]: string } | null {\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: { [attr: string]: string } = {\r\n ...(otherAttrs as { [key: string]: string }),\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: { [prop: string]: string }) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(imageProps).forEach(([key, imgPropVal]: [string, string]) =>\r\n this.renderer.setAttribute(node, key, imgPropVal)\r\n );\r\n });\r\n }\r\n\r\n private getElementAttrs(): { [key: string]: string } {\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]: string } = {};\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: { [attr: string]: string } = {};\r\n\r\n @Input('scLink') field: LinkField;\r\n\r\n constructor(\r\n protected viewContainer: ViewContainerRef,\r\n protected templateRef: TemplateRef<unknown>,\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: { [prop: string]: unknown }, 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]) => {\r\n if (typeof propValue !== 'string') return;\r\n\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 as string);\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]) =>\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() {\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]: string } = {};\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: { [attr: string]: string } = {};\r\n\r\n @Input('scRouterLink') field: LinkField;\r\n\r\n constructor(\r\n viewContainer: ViewContainerRef,\r\n templateRef: TemplateRef<unknown>,\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: { [prop: string]: string }, 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]) => {\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.navigateByUrl(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: { [key: string]: string } = {};\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<unknown>,\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: { [key: string]: string }, 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, string]) => {\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?: unknown) {\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<unknown>;\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<Type<unknown>>;\r\n}\r\n\r\n/**\r\n * @param {unknown} object\r\n */\r\nexport function instanceOfComponentNameAndType(object: unknown): object is ComponentNameAndType {\r\n return typeof object === 'object' && object !== null && 'type' in object;\r\n}\r\n\r\n/**\r\n * @param {unknown} object\r\n */\r\nexport function instanceOfComponentNameAndModule(\r\n object: unknown\r\n): object is ComponentNameAndModule {\r\n return typeof object === 'object' && object !== null && '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<unknown>>(\r\n 'Sc.placeholder.missingComponentComponent'\r\n);\r\nexport const PLACEHOLDER_HIDDEN_RENDERING_COMPONENT = new InjectionToken<Type<unknown>>(\r\n 'Sc.placeholder.hiddenRenderingComponent'\r\n);\r\nexport const DYNAMIC_COMPONENT = new InjectionToken<Type<unknown> | { [s: string]: unknown }>(\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/layout';\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.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/layout';\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/layout';\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n componentImplementation?: Type<any>;\r\n componentDefinition: ComponentRendering | HtmlElementRendering;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n componentFactory?: ComponentFactory<any>;\r\n}\r\n\r\n@Injectable()\r\nexport class JssComponentFactoryService {\r\n private componentMap: Map<string, Type<unknown>>;\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(\r\n lazyComponent: ComponentNameAndModule\r\n ): Promise<NgModuleFactory<unknown>> {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 { Component, HostBinding } from '@angular/core';\r\n@Component({\r\n selector: 'sc-hidden-rendering',\r\n template: '',\r\n})\r\nexport class HiddenRenderingComponent {\r\n @HostBinding('style') get style() {\r\n return 'display: block; height: 100px; background-image: linear-gradient(45deg, #ffffff 25%, #dcdcdc 25%, #dcdcdc 50%, #ffffff 50%, #ffffff 75%, #dcdcdc 75%, #dcdcdc 100%); background-size: 3px 3px;';\r\n }\r\n}\r\n\r\nexport const HIDDEN_RENDERING_NAME = 'Hidden Rendering';\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<unknown>) {}\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<unknown>) {}\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<unknown>) {}\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/layout';\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 { HIDDEN_RENDERING_NAME } from './hidden-rendering.component';\r\nimport { PlaceholderLoadingDirective } from './placeholder-loading.directive';\r\nimport {\r\n PLACEHOLDER_HIDDEN_RENDERING_COMPONENT,\r\n PLACEHOLDER_MISSING_COMPONENT_COMPONENT,\r\n} 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]: unknown };\r\n private _differ: KeyValueDiffer<string, unknown>;\r\n private _componentInstances: { [prop: string]: unknown }[] = [];\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: unknown) => 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]: unknown }) {\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)\r\n private missingComponentComponent: Type<unknown>,\r\n @Inject(PLACEHOLDER_HIDDEN_RENDERING_COMPONENT)\r\n private hiddenRenderingComponent: Type<unknown>\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]: unknown } = {};\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(\r\n componentInstance: { [key: string]: unknown },\r\n inputs: { [key: string]: unknown }\r\n ) {\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: { [key: string]: unknown },\r\n outputs: { [k: string]: (eventType: unknown) => 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<unknown>)\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 (\r\n (rendering.componentDefinition as ComponentRendering).componentName === HIDDEN_RENDERING_NAME\r\n ) {\r\n rendering.componentImplementation = this.hiddenRenderingComponent;\r\n }\r\n\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<unknown>;\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<unknown>) {}\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<unknown>;\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<unknown>) {}\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 === undefined || 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 { 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 { DateField } 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<unknown>;\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: DateField;\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>,\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\nimport { ComponentRendering } from '@sitecore-jss/sitecore-jss/layout';\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: ComponentRendering;\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/layout';\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]: unknown };\r\n private _differ: KeyValueDiffer<string, unknown>;\r\n private destroyed = false;\r\n\r\n @Input() rendering: ComponentRendering | HtmlElementRendering;\r\n @Input() outputs: { [k: string]: (eventType: unknown) => void };\r\n @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef;\r\n\r\n @Input()\r\n set inputs(value: { [key: string]: unknown }) {\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)\r\n private missingComponentComponent: Type<{ [key: string]: unknown }>\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(\r\n componentInstance: { [key: string]: unknown },\r\n inputs: { [key: string]: unknown }\r\n ) {\r\n Object.entries(inputs).forEach(\r\n ([input, inputValue]) =>\r\n ((componentInstance as { [prop: string]: unknown })[input] = inputValue)\r\n );\r\n }\r\n\r\n private _subscribeComponentOutputs(\r\n componentInstance: { [key: string]: unknown },\r\n outputs: { [k: string]: (eventType: unknown) => 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<unknown>)\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 {\r\n ANALYZE_FOR_ENTRY_COMPONENTS,\r\n ModuleWithProviders,\r\n NgModule,\r\n Provider,\r\n Type,\r\n} 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 { HiddenRenderingComponent } from './components/hidden-rendering.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 PLACEHOLDER_HIDDEN_RENDERING_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\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 HiddenRenderingComponent,\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 HiddenRenderingComponent,\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: [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<unknown>} component\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static forChild(component: Type<unknown>): 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 { provide: PLACEHOLDER_HIDDEN_RENDERING_COMPONENT, useValue: HiddenRenderingComponent },\r\n ...(JssModule.forRoot().providers as Provider[]),\r\n ],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {DateDirective as ɵi} from './components/date.directive';\nexport {HiddenRenderingComponent as ɵm} from './components/hidden-rendering.component';\nexport {MissingComponentComponent as ɵl} from './components/missing-component.component';\nexport {ComponentNameAndModule as ɵa,PLACEHOLDER_COMPONENTS as ɵb,PLACEHOLDER_HIDDEN_RENDERING_COMPONENT as ɵe,PLACEHOLDER_LAZY_COMPONENTS as ɵc,PLACEHOLDER_MISSING_COMPONENT_COMPONENT as ɵd} from './components/placeholder.token';\nexport {RawComponent as ɵk} from './components/raw.component';\nexport {RenderComponentComponent as ɵj} from './components/render-component.component';\nexport {RenderEachDirective as ɵf} from './components/render-each.directive';\nexport {RenderEmptyDirective as ɵg} from './components/render-empty.directive';\nexport {JssComponentFactoryService as ɵh} from './jss-component-factory.service';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sitecore-jss-sitecore-jss-angular.js","sources":["../../src/components/file.directive.ts","../../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/hidden-rendering.component.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/components/date.directive.ts","../../src/components/missing-component.component.ts","../../src/components/render-component.component.ts","../../src/lib.module.ts","../../src/sitecore-jss-sitecore-jss-angular.ts"],"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<unknown>;\r\n\r\n @Input('scFile') field: FileField;\r\n\r\n constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<unknown>) {}\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 if (!file) return;\r\n\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","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/media';\r\nimport { ImageField, ImageFieldValue } 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: { [param: string]: string | number } = {};\r\n\r\n @Input('scImageAttrs') attrs: { [param: string]: unknown } = {};\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>,\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: { [attr: string]: string } | null = {};\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, string]) =>\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(\r\n fieldAttrs: ImageFieldValue,\r\n parsedAttrs: { [attr: string]: unknown },\r\n imageParams: { [param: string]: string | number }\r\n ): { [attr: string]: string } | null {\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: { [attr: string]: string } = {\r\n ...(otherAttrs as { [key: string]: string }),\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: { [prop: string]: string }) {\r\n const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);\r\n viewRef.rootNodes.forEach((node) => {\r\n Object.entries(imageProps).forEach(([key, imgPropVal]: [string, string]) =>\r\n this.renderer.setAttribute(node, key, imgPropVal)\r\n );\r\n });\r\n }\r\n\r\n private getElementAttrs(): { [key: string]: string } {\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]: string } = {};\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: { [attr: string]: string } = {};\r\n\r\n @Input('scLink') field: LinkField;\r\n\r\n constructor(\r\n protected viewContainer: ViewContainerRef,\r\n protected templateRef: TemplateRef<unknown>,\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: { [prop: string]: unknown }, 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]) => {\r\n if (typeof propValue !== 'string') return;\r\n\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 as string);\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]) =>\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() {\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]: string } = {};\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: { [attr: string]: string } = {};\r\n\r\n @Input('scRouterLink') field: LinkField;\r\n\r\n constructor(\r\n viewContainer: ViewContainerRef,\r\n templateRef: TemplateRef<unknown>,\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: { [prop: string]: string }, 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]) => {\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.navigateByUrl(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: { [key: string]: string } = {};\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<unknown>,\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: { [key: string]: string }, 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, string]) => {\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?: unknown) {\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<unknown>;\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<Type<unknown>>;\r\n}\r\n\r\n/**\r\n * @param {unknown} object\r\n */\r\nexport function instanceOfComponentNameAndType(object: unknown): object is ComponentNameAndType {\r\n return typeof object === 'object' && object !== null && 'type' in object;\r\n}\r\n\r\n/**\r\n * @param {unknown} object\r\n */\r\nexport function instanceOfComponentNameAndModule(\r\n object: unknown\r\n): object is ComponentNameAndModule {\r\n return typeof object === 'object' && object !== null && '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<unknown>>(\r\n 'Sc.placeholder.missingComponentComponent'\r\n);\r\nexport const PLACEHOLDER_HIDDEN_RENDERING_COMPONENT = new InjectionToken<Type<unknown>>(\r\n 'Sc.placeholder.hiddenRenderingComponent'\r\n);\r\nexport const DYNAMIC_COMPONENT = new InjectionToken<Type<unknown> | { [s: string]: unknown }>(\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/layout';\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.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/layout';\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/layout';\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n componentImplementation?: Type<any>;\r\n componentDefinition: ComponentRendering | HtmlElementRendering;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n componentFactory?: ComponentFactory<any>;\r\n}\r\n\r\n@Injectable()\r\nexport class JssComponentFactoryService {\r\n private componentMap: Map<string, Type<unknown>>;\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(\r\n lazyComponent: ComponentNameAndModule\r\n ): Promise<NgModuleFactory<unknown>> {\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 { Component, HostBinding } from '@angular/core';\r\n@Component({\r\n selector: 'sc-hidden-rendering',\r\n template: '',\r\n})\r\nexport class HiddenRenderingComponent {\r\n @HostBinding('style') get style() {\r\n return 'display: block; height: 100px; background-image: linear-gradient(45deg, #ffffff 25%, #dcdcdc 25%, #dcdcdc 50%, #ffffff 50%, #ffffff 75%, #dcdcdc 75%, #dcdcdc 100%); background-size: 3px 3px;';\r\n }\r\n}\r\n\r\nexport const HIDDEN_RENDERING_NAME = 'Hidden Rendering';\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<unknown>) {}\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<unknown>) {}\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<unknown>) {}\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/layout';\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 { HIDDEN_RENDERING_NAME } from './hidden-rendering.component';\r\nimport { PlaceholderLoadingDirective } from './placeholder-loading.directive';\r\nimport {\r\n PLACEHOLDER_HIDDEN_RENDERING_COMPONENT,\r\n PLACEHOLDER_MISSING_COMPONENT_COMPONENT,\r\n} 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]: unknown };\r\n private _differ: KeyValueDiffer<string, unknown>;\r\n private _componentInstances: { [prop: string]: unknown }[] = [];\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: unknown) => 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]: unknown }) {\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)\r\n private missingComponentComponent: Type<unknown>,\r\n @Inject(PLACEHOLDER_HIDDEN_RENDERING_COMPONENT)\r\n private hiddenRenderingComponent: Type<unknown>\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]: unknown } = {};\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(\r\n componentInstance: { [key: string]: unknown },\r\n inputs: { [key: string]: unknown }\r\n ) {\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: { [key: string]: unknown },\r\n outputs: { [k: string]: (eventType: unknown) => 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<unknown>)\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 (\r\n (rendering.componentDefinition as ComponentRendering).componentName === HIDDEN_RENDERING_NAME\r\n ) {\r\n rendering.componentImplementation = this.hiddenRenderingComponent;\r\n }\r\n\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<unknown>;\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<unknown>) {}\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<unknown>;\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<unknown>) {}\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 === undefined || 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 { 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 { DateField } 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<unknown>;\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: DateField;\r\n\r\n constructor(\r\n private viewContainer: ViewContainerRef,\r\n private templateRef: TemplateRef<unknown>,\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\nimport { ComponentRendering } from '@sitecore-jss/sitecore-jss/layout';\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: ComponentRendering;\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/layout';\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]: unknown };\r\n private _differ: KeyValueDiffer<string, unknown>;\r\n private destroyed = false;\r\n\r\n @Input() rendering: ComponentRendering | HtmlElementRendering;\r\n @Input() outputs: { [k: string]: (eventType: unknown) => void };\r\n @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef;\r\n\r\n @Input()\r\n set inputs(value: { [key: string]: unknown }) {\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)\r\n private missingComponentComponent: Type<{ [key: string]: unknown }>\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(\r\n componentInstance: { [key: string]: unknown },\r\n inputs: { [key: string]: unknown }\r\n ) {\r\n Object.entries(inputs).forEach(\r\n ([input, inputValue]) =>\r\n ((componentInstance as { [prop: string]: unknown })[input] = inputValue)\r\n );\r\n }\r\n\r\n private _subscribeComponentOutputs(\r\n componentInstance: { [key: string]: unknown },\r\n outputs: { [k: string]: (eventType: unknown) => 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<unknown>)\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 {\r\n ANALYZE_FOR_ENTRY_COMPONENTS,\r\n ModuleWithProviders,\r\n NgModule,\r\n Provider,\r\n Type,\r\n} 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 { HiddenRenderingComponent } from './components/hidden-rendering.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 PLACEHOLDER_HIDDEN_RENDERING_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\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 HiddenRenderingComponent,\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 HiddenRenderingComponent,\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: [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<unknown>} component\r\n * @returns {ModuleWithProviders<JssModule>} module\r\n */\r\n static forChild(component: Type<unknown>): 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 { provide: PLACEHOLDER_HIDDEN_RENDERING_COMPONENT, useValue: HiddenRenderingComponent },\r\n ...(JssModule.forRoot().providers as Provider[]),\r\n ],\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {DateDirective as ɵi} from './components/date.directive';\nexport {HiddenRenderingComponent as ɵm} from './components/hidden-rendering.component';\nexport {MissingComponentComponent as ɵl} from './components/missing-component.component';\nexport {ComponentNameAndModule as ɵa,PLACEHOLDER_COMPONENTS as ɵb,PLACEHOLDER_HIDDEN_RENDERING_COMPONENT as ɵe,PLACEHOLDER_LAZY_COMPONENTS as ɵc,PLACEHOLDER_MISSING_COMPONENT_COMPONENT as ɵd} from './components/placeholder.token';\nexport {RawComponent as ɵk} from './components/raw.component';\nexport {RenderComponentComponent as ɵj} from './components/render-component.component';\nexport {RenderEachDirective as ɵf} from './components/render-each.directive';\nexport {RenderEmptyDirective as ɵg} from './components/render-empty.directive';\nexport {JssComponentFactoryService as ɵh} from './jss-component-factory.service';"],"names":[],"mappings":"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"}
@@ -1,21 +1,21 @@
1
- import { ComponentFactory, Injector, Type, Compiler } from '@angular/core';
2
- import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss/layout';
3
- import { ComponentNameAndModule, ComponentNameAndType } from './components/placeholder.token';
4
- export interface ComponentFactoryResult {
5
- componentImplementation?: Type<any>;
6
- componentDefinition: ComponentRendering | HtmlElementRendering;
7
- componentFactory?: ComponentFactory<any>;
8
- }
9
- export declare class JssComponentFactoryService {
10
- private injector;
11
- private compiler;
12
- private components;
13
- private lazyComponents;
14
- private componentMap;
15
- private lazyComponentMap;
16
- constructor(injector: Injector, compiler: Compiler, components: ComponentNameAndType[], lazyComponents: ComponentNameAndModule[]);
17
- private loadModuleFactory;
18
- getComponent(component: ComponentRendering): Promise<ComponentFactoryResult>;
19
- getComponents(components: Array<ComponentRendering | HtmlElementRendering>): Promise<ComponentFactoryResult[]>;
20
- private getRawComponent;
21
- }
1
+ import { ComponentFactory, Injector, Type, Compiler } from '@angular/core';
2
+ import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss/layout';
3
+ import { ComponentNameAndModule, ComponentNameAndType } from './components/placeholder.token';
4
+ export interface ComponentFactoryResult {
5
+ componentImplementation?: Type<any>;
6
+ componentDefinition: ComponentRendering | HtmlElementRendering;
7
+ componentFactory?: ComponentFactory<any>;
8
+ }
9
+ export declare class JssComponentFactoryService {
10
+ private injector;
11
+ private compiler;
12
+ private components;
13
+ private lazyComponents;
14
+ private componentMap;
15
+ private lazyComponentMap;
16
+ constructor(injector: Injector, compiler: Compiler, components: ComponentNameAndType[], lazyComponents: ComponentNameAndModule[]);
17
+ private loadModuleFactory;
18
+ getComponent(component: ComponentRendering): Promise<ComponentFactoryResult>;
19
+ getComponents(components: Array<ComponentRendering | HtmlElementRendering>): Promise<ComponentFactoryResult[]>;
20
+ private getRawComponent;
21
+ }
@@ -1,24 +1,24 @@
1
- import { ModuleWithProviders, Type } from '@angular/core';
2
- import { ComponentNameAndModule, ComponentNameAndType } from './components/placeholder.token';
3
- export declare class JssModule {
4
- /**
5
- * Instantiates the JSS module with no component factory.
6
- * Useful for using it from libraries. Most of the time you'd want withComponents()
7
- * @returns {ModuleWithProviders<JssModule>} module
8
- */
9
- static forRoot(): ModuleWithProviders<JssModule>;
10
- /**
11
- * Instantiates a module for a lazy-loaded JSS component
12
- * @param {Type<unknown>} component
13
- * @returns {ModuleWithProviders<JssModule>} module
14
- */
15
- static forChild(component: Type<unknown>): ModuleWithProviders<JssModule>;
16
- /**
17
- * Instantiates the JSS module and specifies the mapping from component name to component implementation.
18
- * Appropriate when defining the set of JSS components that your app is aware of.
19
- * @param {ComponentNameAndType[]} components
20
- * @param {ComponentNameAndModule[]} [lazyComponents]
21
- * @returns {ModuleWithProviders<JssModule>} module
22
- */
23
- static withComponents(components: ComponentNameAndType[], lazyComponents?: ComponentNameAndModule[]): ModuleWithProviders<JssModule>;
24
- }
1
+ import { ModuleWithProviders, Type } from '@angular/core';
2
+ import { ComponentNameAndModule, ComponentNameAndType } from './components/placeholder.token';
3
+ export declare class JssModule {
4
+ /**
5
+ * Instantiates the JSS module with no component factory.
6
+ * Useful for using it from libraries. Most of the time you'd want withComponents()
7
+ * @returns {ModuleWithProviders<JssModule>} module
8
+ */
9
+ static forRoot(): ModuleWithProviders<JssModule>;
10
+ /**
11
+ * Instantiates a module for a lazy-loaded JSS component
12
+ * @param {Type<unknown>} component
13
+ * @returns {ModuleWithProviders<JssModule>} module
14
+ */
15
+ static forChild(component: Type<unknown>): ModuleWithProviders<JssModule>;
16
+ /**
17
+ * Instantiates the JSS module and specifies the mapping from component name to component implementation.
18
+ * Appropriate when defining the set of JSS components that your app is aware of.
19
+ * @param {ComponentNameAndType[]} components
20
+ * @param {ComponentNameAndModule[]} [lazyComponents]
21
+ * @returns {ModuleWithProviders<JssModule>} module
22
+ */
23
+ static withComponents(components: ComponentNameAndType[], lazyComponents?: ComponentNameAndModule[]): ModuleWithProviders<JssModule>;
24
+ }
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-jss/sitecore-jss-angular",
3
- "version": "20.2.3-canary.2",
3
+ "version": "20.3.0-canary.1",
4
4
  "description": "",
5
5
  "engines": {
6
6
  "node": ">=12",
@@ -22,7 +22,7 @@
22
22
  "rxjs": "~6.6.6"
23
23
  },
24
24
  "dependencies": {
25
- "@sitecore-jss/sitecore-jss": "^20.2.3-canary.2",
25
+ "@sitecore-jss/sitecore-jss": "^20.3.0-canary.1",
26
26
  "tslib": "^2.0.0"
27
27
  },
28
28
  "main": "bundles/sitecore-jss-sitecore-jss-angular.umd.js",
@@ -1,18 +1,19 @@
1
- export { FileDirective } from './components/file.directive';
2
- export { ImageDirective } from './components/image.directive';
3
- export { LinkDirective } from './components/link.directive';
4
- export { RouterLinkDirective } from './components/router-link.directive';
5
- export { GenericLinkDirective } from './components/generic-link.directive';
6
- export { PlaceholderComponent } from './components/placeholder.component';
7
- export { PlaceholderLoadingDirective } from './components/placeholder-loading.directive';
8
- export { ComponentNameAndType, DYNAMIC_COMPONENT } from './components/placeholder.token';
9
- export { isRawRendering } from './components/rendering';
10
- export { FileField, ImageField, LinkField, RenderingField, RichTextField, TextField, } from './components/rendering-field';
11
- export { RichTextDirective } from './components/rich-text.directive';
12
- export { TextDirective } from './components/text.directive';
13
- export { JssModule } from './lib.module';
14
- export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
15
- export { DictionaryService, GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
16
- export { LayoutService, LayoutServiceData, LayoutServiceContextData, GraphQLLayoutService, RestLayoutService, PlaceholdersData, RouteData, Field, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, } from '@sitecore-jss/sitecore-jss/layout';
17
- export { constants, HttpDataFetcher, HttpResponse } from '@sitecore-jss/sitecore-jss';
18
- export { isServer, isExperienceEditorActive, resetExperienceEditorChromes, isEditorActive, resetEditorChromes, handleEditorAnchors, } from '@sitecore-jss/sitecore-jss/utils';
1
+ export { FileDirective } from './components/file.directive';
2
+ export { ImageDirective } from './components/image.directive';
3
+ export { LinkDirective } from './components/link.directive';
4
+ export { RouterLinkDirective } from './components/router-link.directive';
5
+ export { GenericLinkDirective } from './components/generic-link.directive';
6
+ export { PlaceholderComponent } from './components/placeholder.component';
7
+ export { PlaceholderLoadingDirective } from './components/placeholder-loading.directive';
8
+ export { ComponentNameAndType, DYNAMIC_COMPONENT } from './components/placeholder.token';
9
+ export { isRawRendering } from './components/rendering';
10
+ export { FileField, ImageField, LinkField, RenderingField, RichTextField, TextField, } from './components/rendering-field';
11
+ export { RichTextDirective } from './components/rich-text.directive';
12
+ export { TextDirective } from './components/text.directive';
13
+ export { JssModule } from './lib.module';
14
+ export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
15
+ export { DictionaryService, GraphQLDictionaryService, RestDictionaryService, } from '@sitecore-jss/sitecore-jss/i18n';
16
+ export { LayoutService, LayoutServiceData, LayoutServiceContextData, GraphQLLayoutService, RestLayoutService, PlaceholdersData, RouteData, Field, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, } from '@sitecore-jss/sitecore-jss/layout';
17
+ export { RetryStrategy, DefaultRetryStrategy } from '@sitecore-jss/sitecore-jss/graphql';
18
+ export { constants, HttpDataFetcher, HttpResponse } from '@sitecore-jss/sitecore-jss';
19
+ export { isServer, isExperienceEditorActive, resetExperienceEditorChromes, isEditorActive, resetEditorChromes, handleEditorAnchors, } from '@sitecore-jss/sitecore-jss/utils';
@@ -1,13 +1,13 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- export { DateDirective as ɵi } from './components/date.directive';
6
- export { HiddenRenderingComponent as ɵm } from './components/hidden-rendering.component';
7
- export { MissingComponentComponent as ɵl } from './components/missing-component.component';
8
- export { ComponentNameAndModule as ɵa, PLACEHOLDER_COMPONENTS as ɵb, PLACEHOLDER_HIDDEN_RENDERING_COMPONENT as ɵe, PLACEHOLDER_LAZY_COMPONENTS as ɵc, PLACEHOLDER_MISSING_COMPONENT_COMPONENT as ɵd } from './components/placeholder.token';
9
- export { RawComponent as ɵk } from './components/raw.component';
10
- export { RenderComponentComponent as ɵj } from './components/render-component.component';
11
- export { RenderEachDirective as ɵf } from './components/render-each.directive';
12
- export { RenderEmptyDirective as ɵg } from './components/render-empty.directive';
13
- export { JssComponentFactoryService as ɵh } from './jss-component-factory.service';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ export { DateDirective as ɵi } from './components/date.directive';
6
+ export { HiddenRenderingComponent as ɵm } from './components/hidden-rendering.component';
7
+ export { MissingComponentComponent as ɵl } from './components/missing-component.component';
8
+ export { ComponentNameAndModule as ɵa, PLACEHOLDER_COMPONENTS as ɵb, PLACEHOLDER_HIDDEN_RENDERING_COMPONENT as ɵe, PLACEHOLDER_LAZY_COMPONENTS as ɵc, PLACEHOLDER_MISSING_COMPONENT_COMPONENT as ɵd } from './components/placeholder.token';
9
+ export { RawComponent as ɵk } from './components/raw.component';
10
+ export { RenderComponentComponent as ɵj } from './components/render-component.component';
11
+ export { RenderEachDirective as ɵf } from './components/render-each.directive';
12
+ export { RenderEmptyDirective as ɵg } from './components/render-empty.directive';
13
+ export { JssComponentFactoryService as ɵh } from './jss-component-factory.service';