{"version":3,"file":"ngx-y-ycms.mjs","sources":["../../../projects/ycms/src/decorators/cms-component.decorator.ts","../../../projects/ycms/src/decorators/cms-template.decorator.ts","../../../projects/ycms/src/models/index.ts","../../../projects/ycms/src/components/cms-banner/cms-banner.component.ts","../../../projects/ycms/src/directives/cms-data.directive.ts","../../../projects/ycms/src/directives/cms-wrapper.directive.ts","../../../projects/ycms/src/services/dynamic-component-creator.service.ts","../../../projects/ycms/src/services/cms-page.service.ts","../../../projects/ycms/src/components/cms-component/cms-component.component.ts","../../../projects/ycms/src/components/cms-image/cms-image.component.ts","../../../projects/ycms/src/components/cms-include/cms-include.component.ts","../../../projects/ycms/src/components/cms-link/cms-link.component.ts","../../../projects/ycms/src/components/cms-node/cms-node.component.ts","../../../projects/ycms/src/filters/nav-node.pipe.ts","../../../projects/ycms/src/components/cms-navigation/cms-navigation.component.ts","../../../projects/ycms/src/components/cms-template/cms-template.component.ts","../../../projects/ycms/src/components/cms-page/cms-page.component.ts","../../../projects/ycms/src/components/cms-paragraph/cms-paragraph.component.ts","../../../projects/ycms/src/components/cms-product-carousel/cms-product-carousel.component.ts","../../../projects/ycms/src/components/cms-slot/cms-slot.component.ts","../../../projects/ycms/src/components/cms-tab-container/cms-tab-container.component.ts","../../../projects/ycms/src/components/cms-flex/cms-flex.component.ts","../../../projects/ycms/src/filters/nav-entries.pipe.ts","../../../projects/ycms/src/y-cms.module.ts","../../../projects/ycms/src/public_api.ts","../../../projects/ycms/src/ngx-y-ycms.ts"],"sourcesContent":["import {Type} from '@angular/core';\r\nimport {AbstractCmsComponent, CmsComponentItem} from '../models';\r\n\r\nexport const cmsComponents: CmsComponentItem[] = [];\r\n\r\nconst addComponent = (pos: number, componentItem: CmsComponentItem) => {\r\n  pos > -1 ? cmsComponents.splice(pos, 1, componentItem) : cmsComponents.push(componentItem);\r\n};\r\n\r\n/**\r\n * Component decorator. Will assign a typeCode to a angular component and register that tuple.\r\n * @param {string} typeCode CmsComponent typeCode\r\n * @param {string} uid CmsComponent uid when multiple implementations for the same typeCode exist\r\n */\r\nexport function CmsComponent(typeCode: string, uid?: string) {\r\n\r\n  return (component: Type<AbstractCmsComponent>) => {\r\n    if (uid) {\r\n      const pos = cmsComponents.findIndex(c => c.typeCode === typeCode && c.uid === uid);\r\n      addComponent(pos, {typeCode, component, uid});\r\n    } else {\r\n      const pos = cmsComponents.findIndex(c => c.typeCode === typeCode && !c.uid);\r\n      addComponent(pos, {typeCode, component});\r\n    }\r\n  };\r\n}\r\n","import {Type} from '@angular/core';\r\nimport {AbstractCmsTemplate, CmsTemplateItem} from '../models';\r\n\r\nexport const cmsTemplates: CmsTemplateItem[] = [];\r\n\r\nconst addTemplate = (pos: number, templateItem: CmsTemplateItem) => {\r\n  pos > -1 ? cmsTemplates.splice(pos, 1, templateItem) : cmsTemplates.push(templateItem);\r\n};\r\n\r\n/**\r\n * Template decorator. Will assign a template code to a angular component and register that tuple.\r\n * @param {string} template\r\n * @param {uid} uid\r\n */\r\nexport function CmsTemplate(template: string, uid?: string) {\r\n  return (component: Type<AbstractCmsTemplate>) => {\r\n    if (uid) {\r\n      const pos = cmsTemplates.findIndex(t => t.template === template && t.uid === uid);\r\n      addTemplate(pos, {template, uid, component});\r\n    } else {\r\n      const pos = cmsTemplates.findIndex(t => t.template === template && !t.uid);\r\n      addTemplate(pos, {template, component});\r\n    }\r\n  };\r\n}\r\n","import {CMSPageWsDTO, ComponentWsDTO, MediaContainerWsDTO, MediaWsDTO, NavNodeWsDTO, PageType} from '@ngx-y/yapi';\nimport {Directive, Input, Type} from '@angular/core';\n\n/**\n * CMS query object for page request\n */\nexport interface CmsPageQuery {\n  id?: string;\n  pageType: PageType;\n  cmsTicketId?: string;\n}\n\n/**\n * CMS template object structure\n */\nexport interface CmsTemplateItem {\n  component: Type<AbstractCmsTemplate>;\n  template: string;\n  uid?: string;\n}\n\n/**\n * Binds together a backend typeCode to a angular component\n */\nexport interface CmsComponentItem {\n  typeCode: string;\n  component: Type<AbstractCmsComponent>;\n  uid?: string;\n}\n\n/**\n * The base class for a cms angular component.\n */\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class AbstractCmsComponent<T = ComponentWsDTO, D = any> {\n\n  #classes = '';\n  #cms: T | undefined;\n  #ctx: D | undefined;\n\n  /**\n   * CSS classes to be passed to children\n   */\n  @Input()\n  set classes(classes: string) {\n    this.#classes = classes;\n  }\n\n  get classes() {\n    return this.#classes;\n  }\n\n  /**\n   * CMS content information\n   */\n  @Input()\n  set cms(cms: T | undefined) {\n    this.#cms = cms;\n  }\n\n  get cms() {\n    return this.#cms;\n  }\n\n  /**\n   * Component scope\n   */\n  @Input()\n  set ctx(ctx: D | undefined) {\n    this.#ctx = ctx;\n  }\n\n  get ctx() {\n    return this.#ctx;\n  }\n}\n\n/**\n * Base class for a cms template angular component\n */\n@Directive()\n// tslint:disable-next-line:directive-class-suffix\nexport abstract class AbstractCmsTemplate<D = any> {\n\n  #cms: CMSPageWsDTO | undefined;\n  #ctx: D | undefined;\n\n  /**\n   * CMS Page information\n   */\n  @Input()\n  set cms(cms: CMSPageWsDTO | undefined) {\n    this.#cms = cms;\n  }\n\n  get cms() {\n    return this.#cms;\n  }\n\n  /**\n   * Component scope\n   */\n  @Input()\n  set ctx(ctx: D | undefined) {\n    this.#ctx = ctx;\n  }\n\n  get ctx() {\n    return this.#ctx;\n  }\n}\n\nexport interface LinkComponentWsDTO extends ComponentWsDTO {\n  contentPage?: string;\n  contentPageLabelOrId?: string;\n  external?: string | boolean;\n  linkName?: string;\n  target?: string | boolean;\n  url?: string;\n}\n\nexport interface BannerComponentWsDTO extends ComponentWsDTO {\n  media?: MediaContainerWsDTO;\n  urlLink?: string;\n}\n\nexport interface ImageComponentWsDTO extends ComponentWsDTO {\n  media?: MediaWsDTO;\n  external?: string | boolean;\n  urlLink?: string;\n  altText?: string;\n}\n\nexport interface ParagraphComponentWsDTO extends ComponentWsDTO {\n  content?: string;\n  title?: string;\n}\n\nexport interface JspIncludeComponentWsDTO extends ComponentWsDTO {\n  page?: string;\n  title?: string;\n}\n\nexport interface NavigationComponentWsDTO extends ComponentWsDTO {\n  container?: boolean;\n  wrapAfter?: number;\n  styleClass?: string;\n  navigationNode?: NavNodeWsDTO;\n}\n\nexport interface ProductCarouselComponentWsDTO extends ComponentWsDTO {\n  popup: boolean;\n  productCodes: string;\n  scroll: string;\n  title: string;\n}\n\nexport interface TabContainerComponentWsDTO extends ComponentWsDTO {\n  components: string;\n}\n\nexport interface FlexComponentWsDTO extends ComponentWsDTO {\n  flexType: string;\n}\n\nexport interface CategoryNavigationComponentWsDTO extends ComponentWsDTO {\n  navigationNode?: NavNodeWsDTO;\n}\n","import {Component} from '@angular/core';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, BannerComponentWsDTO} from '../../models';\r\nimport {ConfigService} from '@ngx-y/yapi';\r\nimport {HostPipe} from '@ngx-y/ycore';\r\n\r\n/**\r\n * Default responsive image\r\n */\r\n@CmsComponent('SimpleResponsiveBannerComponent')\r\n@Component({\r\n  selector: 'cms-banner',\r\n  template: `\r\n    <ng-container *ngIf=\"cms?.media\">\r\n      <img class=\"w-100\"\r\n           [srcset]=\"srcSet\"\r\n           [className]=\"classes\"\r\n           *ngIf=\"!cms?.urlLink\">\r\n      <a [routerLink]=\"cms?.urlLink | routerPath\"\r\n         [className]=\"classes\"\r\n         *ngIf=\"cms?.urlLink\">\r\n        <img class=\"w-100\"\r\n             [alt]=\"cms?.name\"\r\n             [srcset]=\"srcSet\">\r\n      </a>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class CmsBannerComponent extends AbstractCmsComponent<BannerComponentWsDTO> {\r\n\r\n  protected hostPipe = new HostPipe(this.config);\r\n  protected breakpoints = this.config.get().breakpoints || {};\r\n\r\n  constructor(protected config: ConfigService) {\r\n    super();\r\n  }\r\n\r\n  get srcSet() {\r\n    const {media} = this.cms as any;\r\n    return media && Object.keys(media)\r\n      .map(format => `${this.hostPipe.transform(media[format].url)} ${this.breakpoints[format]}`)\r\n      .reduce((prev, curr) => `${prev}, ${curr}`);\r\n  }\r\n}\r\n","import {Directive, ElementRef, Input, OnInit, Renderer2} from '@angular/core';\r\n\r\nconst camelCaseToDash = (myStr: string): string => {\r\n  const regExp = /([a-z])([A-Z])/g;\r\n  return myStr.replace(regExp, '$1-$2').toLowerCase();\r\n};\r\n\r\n/**\r\n * Directive to append data properties to element. Designed for smart edit compatibility\r\n */\r\n@Directive({\r\n  selector: '[cmsData]'\r\n})\r\nexport class CmsDataDirective implements OnInit {\r\n\r\n  private _data: {\r\n    properties?: any,\r\n    selector?: string\r\n  } = {};\r\n\r\n  constructor(private readonly el: ElementRef,\r\n              private readonly renderer: Renderer2) {\r\n  }\r\n\r\n  @Input('cmsData')\r\n  set cmsData(data: {\r\n    properties: any,\r\n    selector?: string\r\n  } | null) {\r\n    if (data) {\r\n      this._data = data;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const {properties, selector} = this._data;\r\n    if (properties) {\r\n      Object.keys(properties).forEach((key: string) => {\r\n        Object.keys(properties[key]).forEach((propertyKey: string) => {\r\n          if (propertyKey === 'classes') {\r\n            properties[key][propertyKey].split(' ').forEach((className: string) => {\r\n              this.renderer.addClass(\r\n                selector ? document.querySelector(selector) : this.el.nativeElement.parentNode,\r\n                className\r\n              );\r\n            });\r\n          } else {\r\n            this.renderer.setAttribute(\r\n              selector ? selector : this.el.nativeElement.parentNode,\r\n              `data-${camelCaseToDash(key)}-${camelCaseToDash(propertyKey)}`,\r\n              properties[key][propertyKey]\r\n            );\r\n          }\r\n        });\r\n      });\r\n    }\r\n  }\r\n}\r\n","import {Directive, ViewContainerRef} from '@angular/core';\r\n\r\n/**\r\n * Internal. Inside a cms component will we rendered\r\n */\r\n@Directive({\r\n  selector: '[cmsWrapper]'\r\n})\r\nexport class CmsWrapperDirective {\r\n\r\n  constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import {ComponentFactoryResolver, ComponentRef, Injectable, Type, ViewContainerRef} from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DynamicComponentCreatorService {\r\n\r\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) {\r\n  }\r\n\r\n  /**\r\n   * Create cms angular component and inject it in DOM\r\n   * @param {ViewContainerRef} parent\r\n   * @param {Type} component\r\n   */\r\n  create<C>(parent: ViewContainerRef,\r\n            component: Type<any>): ComponentRef<C> {\r\n    const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\r\n    parent.clear();\r\n    return parent.createComponent(componentFactory);\r\n  }\r\n\r\n  /**\r\n   * Destroy component\r\n   * @param {ComponentRef} componentRef\r\n   */\r\n  destroy<C>(componentRef: ComponentRef<C>) {\r\n    if (componentRef) {\r\n      componentRef.destroy();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Assign data to component instance\r\n   * @param {ComponentRef} componentRef\r\n   * @param {any} data\r\n   */\r\n  assign<C>(componentRef: ComponentRef<C>,\r\n            data: any) {\r\n    if (componentRef && data) {\r\n      const instance = componentRef.instance as any;\r\n      Object.keys(data).forEach((key: string) => {\r\n        instance[key] = data[key];\r\n      });\r\n    }\r\n  }\r\n}\r\n","import {Injectable} from '@angular/core';\nimport {CMSPageWsDTO, FieldLevelMapping, PageService, PageType} from '@ngx-y/yapi';\nimport {OAuthService, OAuthStatus} from 'ngx-oauth';\nimport {LocaleService, SmartEditService} from '@ngx-y/ycore';\nimport {CmsPageQuery} from '../models';\nimport {merge, ReplaySubject, Subject} from 'rxjs';\nimport {debounceTime, distinctUntilChanged, filter, switchMap} from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CmsPageService {\n\n  static DEBOUNCE_TIME = 200;\n  private _query: CmsPageQuery | undefined;\n  private query$: Subject<CmsPageQuery> = new Subject();\n  page$: Subject<CMSPageWsDTO> = new ReplaySubject(1);\n\n  /**\n   * Set page query to be requested\n   * @param {CmsPageQuery} query\n   */\n  set query(query: CmsPageQuery | undefined) {\n    if (query && JSON.stringify(query) !== JSON.stringify(this._query)) {\n      this._query = query;\n      this.query$.next(query);\n    }\n  }\n\n  /**\n   * Get current page query\n   * @returns {CmsPageQuery}\n   */\n  get query() {\n    return this._query;\n  }\n\n  constructor(private pageService: PageService,\n              private oauthService: OAuthService,\n              private localeService: LocaleService,\n              private smartEditService: SmartEditService) {\n    merge(\n      this.query$,\n      this.localeService.locale$,\n      this.oauthService.status$.pipe(\n        distinctUntilChanged(),\n        filter((status) => status === OAuthStatus.AUTHORIZED)\n      ),\n      this.smartEditService.renderComponent$\n    ).pipe(\n      filter(() => !!this._query),\n      debounceTime(CmsPageService.DEBOUNCE_TIME),\n      switchMap(() =>\n        this.pageService.getPages({\n          fields: FieldLevelMapping.FULL,\n          pageType: this._query?.pageType,\n          pageLabelOrId: this._query?.pageType === PageType.CONTENT ? this._query.id : undefined,\n          code: this._query?.pageType !== PageType.CONTENT ? this._query?.id : undefined,\n          cmsTicketId: this._query?.cmsTicketId ? this._query.cmsTicketId : undefined\n        })\n      ),\n    ).subscribe(p => this.page$.next(p));\n  }\n}\n","import {\r\n  Component,\r\n  ComponentRef, ElementRef, Input,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {cmsComponents} from '../../decorators';\r\nimport {CmsWrapperDirective} from '../../directives';\r\nimport {DynamicComponentCreatorService} from '../../services';\r\nimport {ComponentWsDTO} from '@ngx-y/yapi';\r\nimport {AbstractCmsComponent} from '../../models';\r\n\r\nconst getComponentByName = (typeCode?: string) => cmsComponents.find(c => c.typeCode === typeCode && !c.uid)?.component;\r\nconst getComponentById = (typeCode?: string, uid?: string) => cmsComponents.find(c => c.typeCode === typeCode && c.uid === uid)?.component;\r\n\r\n/**\r\n * Takes a cms component from received typeCode then renders the angular component\r\n */\r\n@Component({\r\n  selector: 'cms-component',\r\n  template: `\r\n    <ng-template cmsWrapper [cmsData]=\"{properties: properties}\"></ng-template>`\r\n})\r\nexport class CmsComponentComponent extends AbstractCmsComponent {\r\n\r\n  properties: any;\r\n  @ViewChild(CmsWrapperDirective, {static: true})\r\n  private wrapper: CmsWrapperDirective | undefined;\r\n  private componentRef: ComponentRef<any> | undefined;\r\n\r\n  @Input()\r\n  set cms(cms: ComponentWsDTO | undefined) {\r\n    if (cms) {\r\n      const {uid, typeCode, properties} = cms;\r\n      this.properties = properties;\r\n      const cmsComponent = uid && getComponentById(typeCode, uid) || getComponentByName(typeCode);\r\n      if (this.wrapper && cmsComponent) {\r\n        this.componentRef && this.dynamicComponentCreator.destroy(this.componentRef);\r\n        this.componentRef = this.dynamicComponentCreator.create(this.wrapper.viewContainerRef, cmsComponent);\r\n        this.dynamicComponentCreator.assign(this.componentRef, {cms});\r\n        super.ctx && this.dynamicComponentCreator.assign(this.componentRef, {ctx: super.ctx});\r\n        super.classes && this.dynamicComponentCreator.assign(this.componentRef, {classes: super.classes});\r\n        const classes = ['d-block', typeCode];\r\n        uid && classes.push(uid);\r\n        classes.forEach(c => c && this.renderer.addClass(this.el.nativeElement, c));\r\n      } else {\r\n        console.warn(`CMS components identified by ID: ${uid} and/or TypeCode: ${typeCode} was not found in module,\r\n         the component might not exists or is not part of the current module`);\r\n      }\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set ctx(ctx: any) {\r\n    if (ctx) {\r\n      if (this.componentRef) {\r\n        this.dynamicComponentCreator.assign(this.componentRef, {ctx});\r\n      } else {\r\n        super.ctx = ctx;\r\n      }\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set classes(classes: string) {\r\n    if (classes) {\r\n      if (this.componentRef) {\r\n        this.dynamicComponentCreator.assign(this.componentRef, {classes});\r\n      } else {\r\n        super.classes = classes;\r\n      }\r\n    }\r\n  }\r\n\r\n  constructor(private dynamicComponentCreator: DynamicComponentCreatorService,\r\n              private el: ElementRef,\r\n              private renderer: Renderer2) {\r\n    super();\r\n  }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, ImageComponentWsDTO} from '../../models';\r\n\r\n/**\r\n * Default simple image\r\n */\r\n@CmsComponent('SimpleBannerComponent')\r\n@Component({\r\n  selector: 'cms-image',\r\n  template: `\r\n    <ng-container *ngIf=\"cms?.media\">\r\n      <img class=\"w-100\"\r\n           [className]=\"classes\"\r\n           [src]=\"cms?.media?.url | host\"\r\n           [alt]=\"cms?.altText\"\r\n           *ngIf=\"!cms?.urlLink ; else hasLink\">\r\n      <ng-template #hasLink>\r\n        <a [href]=\"cms?.urlLink\"\r\n           [className]=\"classes\"\r\n           target=\"_blank\"\r\n           rel=\"noreferrer\"\r\n           *ngIf=\"isExternal ; else isInternal\">\r\n          <img class=\"w-100\"\r\n               [src]=\"cms?.media?.url | host\"\r\n               [alt]=\"cms?.altText\">\r\n        </a>\r\n        <ng-template #isInternal>\r\n          <a [routerLink]=\"cms?.urlLink | routerPath\"\r\n             [className]=\"classes\"\r\n             *ngIf=\"cms?.external === 'false'\">\r\n            <img class=\"w-100\"\r\n                 [src]=\"cms?.media?.url | host\"\r\n                 [alt]=\"cms?.altText\">\r\n          </a>\r\n        </ng-template>\r\n      </ng-template>\r\n    </ng-container>\r\n  `\r\n})\r\nexport class CmsImageComponent extends AbstractCmsComponent<ImageComponentWsDTO> {\r\n\r\n  get isExternal() {\r\n    return this.cms?.external === 'true' || (this.cms?.urlLink && this.cms.urlLink.startsWith('http'));\r\n  }\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, JspIncludeComponentWsDTO} from '../../models';\r\nimport {ComponentWsDTO} from '@ngx-y/yapi';\r\n\r\n/**\r\n * Default container for other components\r\n */\r\n@CmsComponent('JspIncludeComponent')\r\n@Component({\r\n  selector: 'cms-include',\r\n  template: `\r\n    <cms-component [cms]=\"component\"\r\n                   [ctx]=\"ctx\"\r\n                   [classes]=\"classes\"\r\n                   *ngIf=\"component\"></cms-component>\r\n  `\r\n})\r\nexport class CmsIncludeComponent extends AbstractCmsComponent<JspIncludeComponentWsDTO> implements OnInit {\r\n\r\n  component: ComponentWsDTO | undefined;\r\n\r\n  ngOnInit(): void {\r\n    const {page} = this.cms as JspIncludeComponentWsDTO;\r\n    if (page) {\r\n      this.component = {\r\n        typeCode: page\r\n      };\r\n    }\r\n  }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, LinkComponentWsDTO} from '../../models';\r\n\r\n/**\r\n * Default link\r\n */\r\n@CmsComponent('CMSLinkComponent')\r\n@Component({\r\n  selector: 'cms-link',\r\n  template: `\r\n    <a [className]=\"classes\"\r\n       [href]=\"cms?.url\"\r\n       target=\"{{cms?.target === 'true' ? '_blank' : '_self'}}\"\r\n       rel=\"noreferrer\"\r\n       *ngIf=\"isExternal; else isInternal\">{{cms?.linkName}}</a>\r\n    <ng-template #isInternal>\r\n      <a [className]=\"classes\"\r\n         [routerLink]=\"cms?.url | routerPath\"\r\n         [queryParams]=\"cms?.url | routerQuery\"\r\n         [fragment]=\"cms?.url | routerFragment\"\r\n         [routerLinkActive]=\"'active'\"\r\n         target=\"{{cms?.target === 'true' ? '_blank' : '_self'}}\">{{cms?.linkName}}</a>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class CmsLinkComponent extends AbstractCmsComponent<LinkComponentWsDTO> {\r\n\r\n  get isExternal() {\r\n    return this.cms?.external === 'true' || (this.cms?.url && this.cms.url?.startsWith('http'));\r\n  }\r\n}\r\n","import {Component} from '@angular/core';\nimport {AbstractCmsComponent} from '../../models';\nimport {NavNodeWsDTO} from '@ngx-y/yapi';\n\n@Component({\n  selector: 'cms-node',\n  template: `\n    <nav [className]=\"classes\" *ngIf=\"cms\">\n      <div *ngIf=\"cms.title\">{{cms.title}}</div>\n      <cms-component [cms]=\"entry.component\"\n                     [ctx]=\"ctx\"\n                     *ngFor=\"let entry of cms.entries\"></cms-component>\n      <ng-container *ngFor=\"let child of cms.children\">\n        <cms-node [cms]=\"child\" [ctx]=\"ctx\"></cms-node>\n      </ng-container>\n    </nav>\n  `\n})\nexport class CmsNodeComponent extends AbstractCmsComponent<NavNodeWsDTO> {\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ComponentService, ComponentWsDTO, NavNodeWsDTO} from '@ngx-y/yapi';\nimport {EMPTY, Observable} from 'rxjs';\nimport {map, tap} from 'rxjs/operators';\n\nconst fetchIds = (value: NavNodeWsDTO, ids: string[]) => {\n  value.entries?.forEach(v => v.itemId && ids.push(v.itemId));\n  value.children?.map(v => fetchIds(v, ids));\n};\n\nconst changeEntry = (parent: NavNodeWsDTO, cms: ComponentWsDTO) => {\n  const found = parent.entries?.find(v => v.itemId === cms.uid);\n  if (found) {\n    found.component = cms;\n  } else {\n    parent.children?.forEach(child => changeEntry(child, cms));\n  }\n};\n\n@Pipe({\n  name: 'navNode'\n})\nexport class NavNodePipe implements PipeTransform {\n\n  constructor(private componentService: ComponentService) {\n  }\n\n  transform(value: NavNodeWsDTO | undefined, ...args: any[]): Observable<NavNodeWsDTO> {\n    if (value) {\n      const ret = JSON.parse(JSON.stringify(value)); // deep copy so we don't alter the initial structure and avoid side effects\n      const ids: string[] = [];\n      fetchIds(ret, ids);\n      return this.componentService.search({componentIds: ids, pageSize: 100}).pipe(\n        tap(r => r.component?.forEach(cms => {\n          changeEntry(ret, cms);\n        })),\n        map(() => ret)\n      );\n    }\n    return EMPTY;\n  }\n}\n","import {Component} from '@angular/core';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, NavigationComponentWsDTO} from '../../models';\r\n\r\n@CmsComponent('NavigationComponent')\r\n@Component({\r\n  selector: 'cms-navigation',\r\n  template: `\r\n    <cms-node [classes]=\"cms?.styleClass + ' ' + classes\"\r\n              [cms]=\"node\"\r\n              [ctx]=\"ctx\"\r\n              *ngIf=\"cms?.navigationNode | navNode | async as node\"></cms-node>\r\n  `\r\n})\r\nexport class CmsNavigationComponent extends AbstractCmsComponent<NavigationComponentWsDTO> {}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ComponentRef, Input,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {CmsWrapperDirective} from '../../directives';\r\nimport {DynamicComponentCreatorService} from '../../services';\r\nimport {CMSPageWsDTO} from '@ngx-y/yapi';\r\nimport {cmsTemplates} from '../../decorators';\r\nimport {AbstractCmsTemplate} from '../../models';\r\n\r\nconst getTemplateByName = (template?: string) => cmsTemplates.find(t => t.template === template && !t.uid)?.component;\r\nconst getTemplateById = (template?: string, uid?: string) => cmsTemplates.find(t => t.template === template && t.uid === uid)?.component;\r\n\r\n/**\r\n * A cms template describes the page template used by the cms-page component. <br/>\r\n * Cms template components should be decorated with @CMSTemplate and should match a backend template\r\n */\r\n@Component({\r\n  selector: 'cms-template',\r\n  template: `\r\n    <ng-template cmsWrapper></ng-template>\r\n  `,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CmsTemplateComponent extends AbstractCmsTemplate {\r\n\r\n  @ViewChild(CmsWrapperDirective, {static: true})\r\n  private wrapper: CmsWrapperDirective | undefined;\r\n  private componentRef: ComponentRef<any> | undefined;\r\n\r\n  @Input()\r\n  set cms(cms: CMSPageWsDTO) {\r\n    if (cms) {\r\n      const {uid, template} = cms;\r\n      const templateComponent = uid && getTemplateById(template, uid) || getTemplateByName(template);\r\n      if (this.wrapper && templateComponent) {\r\n        this.componentRef && this.dynamicComponentCreator.destroy(this.componentRef);\r\n        this.componentRef = this.dynamicComponentCreator.create(this.wrapper.viewContainerRef, templateComponent);\r\n        this.dynamicComponentCreator.assign(this.componentRef, {cms});\r\n        if (super.ctx) {\r\n          this.dynamicComponentCreator.assign(this.componentRef, {ctx: super.ctx});\r\n        }\r\n      } else {\r\n        console.warn(`CMS template identified by ID: ${uid} and/or Template: ${template} was not found in module,\r\n          the template might not exists or is not part of the current module`);\r\n      }\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set ctx(ctx: any) {\r\n    if (ctx) {\r\n      if (this.componentRef) {\r\n        this.dynamicComponentCreator.assign(this.componentRef, {ctx});\r\n      } else {\r\n        super.ctx = ctx;\r\n      }\r\n    }\r\n  }\r\n\r\n  constructor(private dynamicComponentCreator: DynamicComponentCreatorService) {\r\n    super();\r\n  }\r\n}\r\n","import {Component, ElementRef, EventEmitter, Input, Output, Renderer2} from '@angular/core';\r\nimport {filter, tap} from 'rxjs/operators';\r\nimport {CmsPageQuery} from '../../models';\r\nimport {CMSPageWsDTO, PageType} from '@ngx-y/yapi';\r\nimport {CmsPageService} from '../../services';\r\n\r\nconst checkPage = (page: CMSPageWsDTO, query?: CmsPageQuery): boolean =>\r\n  query && (query.pageType === PageType.CONTENT && (query.id === page.uid || query.id === page.label) || query.pageType === page.typeCode) || false;\r\n\r\n/**\r\n * A cms page is at the top of the cms structure. A page contains a template which contains content slots which contain components.\r\n */\r\n@Component({\r\n  selector: 'cms-page',\r\n  template: `\r\n    <cms-template *ngIf=\"cms$ | async as cms\"\r\n                  [cmsData]=\"{properties: cms.properties, selector: 'body'}\"\r\n                  [ctx]=\"ctx\"\r\n                  [cms]=\"cms\">\r\n    </cms-template>\r\n  `\r\n})\r\nexport class CmsPageComponent {\r\n\r\n  @Input()\r\n  ctx: any;\r\n  @Output()\r\n  pageChange: EventEmitter<CMSPageWsDTO> = new EventEmitter<CMSPageWsDTO>();\r\n  cms$ = this.cmsPageService.page$.pipe(\r\n    filter(page => checkPage(page, this.cmsPageService.query)),\r\n    tap(page => [page.template].forEach(className => className && this.renderer.addClass(this.el.nativeElement, className))\r\n    ),\r\n    tap(page => this.pageChange.emit(page))\r\n  );\r\n\r\n  @Input()\r\n  set query(query: CmsPageQuery) {\r\n    this.cmsPageService.query = query;\r\n  }\r\n\r\n  constructor(private cmsPageService: CmsPageService,\r\n              private el: ElementRef,\r\n              private renderer: Renderer2) {\r\n  }\r\n}\r\n","import {Component} from '@angular/core';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, ParagraphComponentWsDTO} from '../../models';\r\n\r\n/**\r\n * Represents a paragraph from cms\r\n */\r\n@CmsComponent('CMSParagraphComponent')\r\n@CmsComponent('CMSTabParagraphComponent')\r\n@Component({\r\n  selector: 'cms-paragraph',\r\n  template: `\r\n    <div *ngIf=\"cms && cms.content\"\r\n         [innerHTML]=\"cms.content\"\r\n         [className]=\"classes\"></div>\r\n  `\r\n})\r\nexport class CmsParagraphComponent extends AbstractCmsComponent<ParagraphComponentWsDTO> {\r\n}\r\n","import {Component, Input, OnInit, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {CmsComponent} from '../../decorators';\nimport {AbstractCmsComponent, ProductCarouselComponentWsDTO} from '../../models';\nimport {combineLatestAll, from, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {ProductService, ProductWsDTO} from '@ngx-y/yapi';\nimport {DragScrollComponent} from '@ngx-y/ycore';\n\n@CmsComponent('ProductCarouselComponent')\n@Component({\n  selector: 'cms-product-carousel',\n  template: `\n    <div class=\"cms-product-carousel p-3 position-relative\" *ngIf=\"products$ | async as products\">\n      <h4 class=\"text-center\" *ngIf=\"cms?.title\">\n        <strong>{{cms?.title}}</strong>\n      </h4>\n      <div class=\"card-group\">\n        <drag-scroll #ds>\n          <div drag-scroll-item class=\"card border-0 px-5 py-3\" *ngFor=\"let product of products\">\n            <a class=\"no-decoration\" [routerLink]=\"getUrl(product) | routerPath\">\n              <img class=\"card-img-top\" [alt]=\"product.name\" [src]=\"product | image | host\">\n              <div class=\"card-body\">\n                <p class=\"card-text\">{{product.name}}</p>\n                <p class=\"card-title font-weight-bold text-dark\" *ngIf=\"product.price\">\n                  {{product.price.formattedValue}}\n                </p>\n              </div>\n            </a>\n          </div>\n        </drag-scroll>\n      </div>\n      <div class=\"controls\">\n        <button class=\"btn btn-link position-absolute border-0 p-3 btn-left\"\n                aria-label=\"Previous Image\"\n                (click)=\"left()\">\n          <i class=\"fa fa-2x fa-angle-left\"></i>\n        </button>\n        <button class=\"btn btn-link position-absolute border-0 p-3 btn-right\"\n                aria-label=\"Next Image\"\n                (click)=\"right()\">\n          <i class=\"fa fa-2x fa-angle-right\"></i>\n        </button>\n      </div>\n    </div>\n  `,\n  styleUrls: ['cms-product-carousel.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class CmsProductCarouselComponent extends AbstractCmsComponent<ProductCarouselComponentWsDTO> implements OnInit {\n\n  @Input()\n  showNames = true;\n  @Input()\n  showPrices = true;\n  @Input()\n  max: number | undefined;\n\n  products$: Observable<ProductWsDTO[]> | undefined;\n  @ViewChild('ds', {static: false, read: DragScrollComponent})\n  ds: DragScrollComponent | undefined;\n\n  constructor(private productService: ProductService) {\n    super();\n  }\n\n  ngOnInit(): void {\n    const {productCodes} = this.cms as ProductCarouselComponentWsDTO;\n    if (productCodes) {\n      const fields = `images(FULL), ${\n        this.showPrices ? 'price(FULL),' : ''\n      } ${\n        this.showNames ? 'name,' : ''\n      } code, url`;\n      const codes = productCodes.split(' ');\n      if (this.max) {\n        codes.splice(this.max);\n      }\n      this.products$ = from(codes).pipe(\n        map((code: string) => this.productService.getProduct(code, {fields})),\n        combineLatestAll()\n      );\n    }\n  }\n\n  getUrl(product: ProductWsDTO): string | undefined {\n    return product.url;\n  }\n\n  left(): void {\n    this.ds?.moveLeft();\n  }\n\n  right(): void {\n    this.ds?.moveRight();\n  }\n}\n","import {Component, ContentChild, Input, TemplateRef} from '@angular/core';\r\nimport {CMSPageWsDTO, ContentSlotWsDTO} from '@ngx-y/yapi';\r\nimport {AbstractCmsComponent} from '../../models';\r\n\r\n/**\r\n * Simulates a content slot. A content slot is a placeholder with one or more components.\r\n */\r\n@Component({\r\n  selector: 'cms-slot',\r\n  template: `\r\n    <ng-container *ngIf=\"contentFirst\">\r\n      <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n    </ng-container>\r\n    <ng-container *ngFor=\"let slot of slots\"\r\n                  [cmsData]=\"smartEdit && {properties: slot.properties} || null\">\r\n      <ng-container *ngIf=\"slot.components?.component as components\">\r\n        <ng-container *ngFor=\"let component of components\">\r\n          <cms-component [classes]=\"classes\"\r\n                         [cms]=\"component\"\r\n                         [ctx]=\"ctx\"\r\n                         *ngIf=\"!componentTemplate\"></cms-component>\r\n          <ng-container *ngIf=\"componentTemplate\"\r\n                        [ngTemplateOutlet]=\"componentTemplate\"\r\n                        [ngTemplateOutletContext]=\"{cms: component, ctx: ctx, classes: classes}\"></ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!contentFirst\">\r\n      <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n    </ng-container>\r\n    <ng-template #content>\r\n      <ng-content></ng-content>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class CmsSlotComponent {\r\n\r\n  @Input()\r\n  position: string | undefined;\r\n  @Input()\r\n  ctx: any;\r\n  @Input()\r\n  classes = '';\r\n  @Input()\r\n  smartEdit = true;\r\n  @Input()\r\n  contentFirst = false;\r\n  @ContentChild('componentTemplate', {static: false})\r\n  componentTemplate: TemplateRef<AbstractCmsComponent> | undefined;\r\n  slots: ContentSlotWsDTO[] | undefined;\r\n\r\n  @Input()\r\n  set cms(cms: CMSPageWsDTO | undefined) {\r\n    if (cms && this.position) {\r\n      // we might get duplicated slots\r\n      this.slots = cms.contentSlots?.contentSlot?.filter(v => v.position === this.position);\r\n    } else {\r\n      console.warn(`CMS slot identified by position: ${this.position} does not exist in page`);\r\n    }\r\n  }\r\n}\r\n","import {Component, OnInit} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {map, tap} from 'rxjs/operators';\r\nimport {CmsComponent} from '../../decorators';\r\nimport {AbstractCmsComponent, ParagraphComponentWsDTO, TabContainerComponentWsDTO} from '../../models';\r\nimport {ComponentService, ComponentWsDTO} from '@ngx-y/yapi';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n/**\r\n * Default tab panel component\r\n */\r\n@CmsComponent('CMSTabParagraphContainer')\r\n@Component({\r\n  selector: 'cms-tab-container',\r\n  template: `\r\n    <ul ngbNav #nav=\"ngbNav\"\r\n        [(activeId)]=\"activeId\"\r\n        class=\"nav-tabs\"\r\n        [keyboard]=\"true\">\r\n      <li [ngbNavItem]=\"component.uid\" *ngFor=\"let component of components$ | async\">\r\n        <a ngbNavLink>{{getTitle(component)}}</a>\r\n        <ng-template ngbNavContent>\r\n          <cms-component [cms]=\"component\" [ctx]=\"ctx\" [classes]=\"classes\"></cms-component>\r\n        </ng-template>\r\n      </li>\r\n    </ul>\r\n    <div [ngbNavOutlet]=\"nav\" class=\"mt-2\"></div>\r\n  `\r\n})\r\nexport class CmsTabContainerComponent extends AbstractCmsComponent<TabContainerComponentWsDTO> implements OnInit {\r\n\r\n  activeId: string | undefined;\r\n  components$: Observable<ComponentWsDTO[]> | undefined;\r\n\r\n  constructor(private componentService: ComponentService,\r\n              private translateService: TranslateService) {\r\n    super();\r\n  }\r\n\r\n  getTitle(component: ParagraphComponentWsDTO) {\r\n    const key = `${component.uid}.title`;\r\n    let title = this.translateService.instant(key);\r\n    if (title === key) {\r\n      title = null;\r\n    }\r\n    return title || component.title || component.name;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const {components, uid} = this.cms as TabContainerComponentWsDTO;\r\n    if (components && components !== uid) {\r\n      // avoid recursive hell since DefaultCMSTabParagraphContainerStategy excludes jsp include components and returns component name\r\n      const names = components.split(' ');\r\n      this.components$ = this.componentService.search({componentIds: names, pageSize: 100}).pipe(\r\n        map(v => v.component),\r\n        tap(v => v.length > 0 ? this.activeId = v[0].uid : null)\r\n      );\r\n    }\r\n  }\r\n}\r\n","import {Component, OnInit} from '@angular/core';\nimport {CmsComponent} from '../../decorators';\nimport {AbstractCmsComponent, FlexComponentWsDTO} from '../../models';\nimport {ComponentWsDTO} from '@ngx-y/yapi';\n\n/**\n * Import CMSFlexComponent to be compatible spartacus\n */\n@CmsComponent('CMSFlexComponent')\n@Component({\n  selector: 'cms-flex',\n  template: `\n    <cms-component [cms]=\"component\"\n                   [ctx]=\"ctx\"\n                   [classes]=\"classes\"\n                   *ngIf=\"component\"></cms-component>\n  `\n})\nexport class CmsFlexComponent extends AbstractCmsComponent<FlexComponentWsDTO> implements OnInit {\n\n  component: ComponentWsDTO | undefined;\n\n  ngOnInit(): void {\n    const {flexType} = this.cms as FlexComponentWsDTO;\n    if (flexType) {\n      this.component = {\n        typeCode: flexType\n      };\n    }\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {ComponentService, NavNodeEntryWsDTO, ComponentWsDTO} from '@ngx-y/yapi';\nimport {map} from 'rxjs/operators';\nimport {EMPTY, Observable} from 'rxjs';\n\n@Pipe({\n  name: 'navEntries'\n})\nexport class NavEntriesPipe implements PipeTransform {\n\n  constructor(private componentService: ComponentService) {\n  }\n\n  transform(value?: NavNodeEntryWsDTO[], ...args: any[]): Observable<ComponentWsDTO[] | undefined> {\n    return value?.length ? this.componentService.search({\n      componentIds: value.map(v => v.itemId || ''),\n      pageSize: 100\n    }).pipe(\n      map(v => v.component)\n    ) : EMPTY;\n  }\n}\n","import {NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, ModuleWithProviders} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {TranslateModule} from '@ngx-translate/core';\r\nimport {RouterModule} from '@angular/router';\r\nimport {NgbNavModule} from '@ng-bootstrap/ng-bootstrap';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {\r\n  CmsBannerComponent,\r\n  CmsComponentComponent,\r\n  CmsFlexComponent,\r\n  CmsImageComponent,\r\n  CmsIncludeComponent,\r\n  CmsLinkComponent,\r\n  CmsNavigationComponent,\r\n  CmsPageComponent,\r\n  CmsParagraphComponent,\r\n  CmsProductCarouselComponent,\r\n  CmsSlotComponent,\r\n  CmsTabContainerComponent,\r\n  CmsTemplateComponent,\r\n  CmsNodeComponent\r\n} from './components';\r\nimport {CmsDataDirective, CmsWrapperDirective} from './directives';\r\nimport {YCoreModule} from '@ngx-y/ycore';\r\nimport {NavNodePipe} from './filters/nav-node.pipe';\r\nimport {NavEntriesPipe} from './filters/nav-entries.pipe';\r\n\r\nconst cmsComponents = [\r\n  CmsParagraphComponent,\r\n  CmsNavigationComponent,\r\n  CmsIncludeComponent,\r\n  CmsLinkComponent,\r\n  CmsTabContainerComponent,\r\n  CmsImageComponent,\r\n  CmsBannerComponent,\r\n  CmsProductCarouselComponent,\r\n  CmsFlexComponent\r\n];\r\n\r\nconst components = [\r\n  CmsWrapperDirective,\r\n  CmsNodeComponent,\r\n  CmsPageComponent,\r\n  CmsSlotComponent,\r\n  CmsComponentComponent,\r\n  CmsDataDirective,\r\n  CmsTemplateComponent,\r\n  NavNodePipe,\r\n  NavEntriesPipe,\r\n  ...cmsComponents\r\n];\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        TranslateModule,\r\n        RouterModule,\r\n        NgbNavModule,\r\n        FormsModule,\r\n        YCoreModule\r\n    ],\r\n  entryComponents: cmsComponents,\r\n  declarations: components,\r\n  exports: components,\r\n})\r\nexport class YCmsModule {\r\n\r\n  static withCmsComponents(cs: any[]): ModuleWithProviders<YCmsModule> {\r\n    return {\r\n      ngModule: YCmsModule,\r\n      providers: [\r\n        {\r\n          provide: ANALYZE_FOR_ENTRY_COMPONENTS,\r\n          useValue: [\r\n            ...cmsComponents,\r\n            ...cs\r\n          ],\r\n          multi: true\r\n        }\r\n      ]\r\n    };\r\n  }\r\n}\r\n","/*\n * Public API Surface of ycms\n */\nexport * from './y-cms.module';\nexport * from './components';\nexport * from './decorators';\nexport * from './directives';\nexport * from './filters';\nexport * from './models';\nexport * from './services';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["cmsComponents"],"mappings":"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"}