@pepperi-addons/ngx-composite-lib 0.4.2-beta.69 → 0.4.2-beta.70

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-composite-lib-layout-builder.mjs","sources":["../../../projects/ngx-composite-lib/layout-builder/hide-in/hide-in.component.ts","../../../projects/ngx-composite-lib/layout-builder/hide-in/hide-in.component.html","../../../projects/ngx-composite-lib/layout-builder/hide-in/hide-in.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.service.ts","../../../projects/ngx-composite-lib/layout-builder/section-block/section-block.component.ts","../../../projects/ngx-composite-lib/layout-builder/section-block/section-block.component.html","../../../projects/ngx-composite-lib/layout-builder/section/section.component.ts","../../../projects/ngx-composite-lib/layout-builder/section/section.component.html","../../../projects/ngx-composite-lib/layout-builder/section-block/section-block.module.ts","../../../projects/ngx-composite-lib/layout-builder/section/section.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout/layout.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout/layout.component.html","../../../projects/ngx-composite-lib/layout-builder/layout/layout.module.ts","../../../projects/ngx-composite-lib/layout-builder/section-editor/section-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/section-editor/section-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/section-editor/section-editor.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-editor/layout-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout-editor/layout-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/layout-editor/layout-editor.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.component.html","../../../projects/ngx-composite-lib/layout-builder/layout-builder.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.model.ts","../../../projects/ngx-composite-lib/layout-builder/public-api.ts","../../../projects/ngx-composite-lib/layout-builder/pepperi-addons-ngx-composite-lib-layout-builder.ts"],"sourcesContent":["import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\n\ninterface hideInItem {\n key: DataViewScreenSize,\n text: string,\n selected: boolean\n}\n\n@Component({\n selector: 'hide-in',\n templateUrl: './hide-in.component.html',\n styleUrls: ['./hide-in.component.scss', './hide-in.component.theme.scss'],\n})\nexport class PepHideInComponent implements OnInit {\n @Input() hideIn: DataViewScreenSize[] = [];\n\n @Output() hideInChange: EventEmitter<DataViewScreenSize[]> = new EventEmitter();\n @Output() menuOpened: EventEmitter<void> = new EventEmitter();\n @Output() menuClosed: EventEmitter<void> = new EventEmitter();\n\n menuItems!: Array<hideInItem>;\n\n constructor(\n private translate: TranslateService,\n ) { }\n\n async ngOnInit() {\n // Get the first translation for load all translations.\n const desktopTitle = await this.translate.get('LAYOUT_BUILDER.DESKTOP').toPromise();\n\n this.menuItems = [\n { key: 'Landscape', text: desktopTitle, selected: this.hideIn?.some(hideIn => hideIn === 'Landscape') },\n { key: 'Tablet', text: this.translate.instant('LAYOUT_BUILDER.TABLET'), selected: this.hideIn?.some(hideIn => hideIn === 'Tablet') },\n { key: 'Phablet', text: this.translate.instant('LAYOUT_BUILDER.MOBILE'), selected: this.hideIn?.some(hideIn => hideIn === 'Phablet') }\n ];\n }\n\n onItemClick(event: any, menuItem: hideInItem) {\n menuItem.selected = !menuItem.selected;\n\n const hideIn = this.menuItems.filter(item => item.selected).map(item => item.key);\n this.hideInChange.emit(hideIn);\n\n event.stopPropagation();\n \n return false;\n }\n\n onMenuOpened() {\n this.menuOpened.emit();\n }\n\n onMenuClosed() {\n this.menuClosed.emit();\n }\n}\n","\n<pep-button sizeType=\"xs\" iconName=\"system_view\" [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (menuOpened)=\"onMenuOpened()\"\n class=\"badge-button\" [ngClass]=\"{ 'none': !hideIn || hideIn.length === 0}\"\n matBadge=\"{{ hideIn?.length }}\" matBadgePosition=\"after\" matBadgeSize=\"small\" \n></pep-button>\n\n<mat-menu #menu=\"matMenu\" class=\"hide-in-menu\">\n <div mat-menu-item class=\"title\" disabled>\n <span>{{('HIDE_IN.HIDE_IN_TITLE' | translate)}}</span>\n </div>\n <div mat-menu-item class=\"splitter\"></div>\n <ng-container *ngFor=\"let menuItem of menuItems\">\n <button mat-menu-item (click)=\"onItemClick($event, menuItem)\" title=\"{{ menuItem.text }}\">\n <mat-checkbox type=\"checkbox\" title=\"{{ menuItem.text }}\" class=\"md\"\n (change)=\"onItemClick($event, menuItem)\" [checked]=\"menuItem.selected\">\n <span class=\"pull-left flip title ellipsis\">{{ menuItem.text }}</span>\n </mat-checkbox>\n </button>\n </ng-container>\n</mat-menu>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PepHideInComponent } from './hide-in.component'\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { TranslateLoader, TranslateModule, TranslateStore } from '@ngx-translate/core';\n// import { PepAddonService, PepFileService, PepHttpService } from '@pepperi-addons/ngx-lib';\n\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemView,\n} from '@pepperi-addons/ngx-lib/icon';\n\n@NgModule({\n declarations: [PepHideInComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatCheckboxModule,\n PepButtonModule,\n PepCheckboxModule,\n PepIconModule,\n TranslateModule.forChild()\n // ({\n // loader: {\n // provide: TranslateLoader,\n // useFactory: (addonService: PepAddonService) => \n // PepAddonService.createMultiTranslateLoader(addonService, ['ngx-lib', 'ngx-composite-lib']),\n // deps: [PepAddonService]\n // }, isolate: false\n // }),\n ],\n exports: [PepHideInComponent]\n})\nexport class PepHideInModule { \n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemView,\n ]);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { coerceNumberProperty } from \"@angular/cdk/coercion\";\nimport { CdkDragDrop, CdkDragEnd, CdkDragStart, copyArrayItem, moveItemInArray, transferArrayItem } from \"@angular/cdk/drag-drop\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { PepAddonService, PepGuid, PepHttpService, PepScreenSizeType, PepSessionService, PepUtilitiesService } from \"@pepperi-addons/ngx-lib\";\nimport { IPepDraggableItem } from \"@pepperi-addons/ngx-lib/draggable-items\";\nimport { DataViewScreenSize, ScreenSizeDataConfiguration } from \"@pepperi-addons/papi-sdk\";\nimport { PepSnackBarData, PepSnackBarService } from \"@pepperi-addons/ngx-lib/snack-bar\";\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { LayoutEditorType, IEditor, IPepLayoutBlockAddedEvent, ILayoutEditor, IPepLayoutSection, IPepLayoutSectionColumn, IPepLayoutView, ILayoutSectionEditor, PepLayoutSizeType, IPepLayoutBlockContainer } from \"./layout-builder.model\";\nimport { PepDialogData, PepDialogService } from \"@pepperi-addons/ngx-lib/dialog\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PepLayoutBuilderService {\n static readonly AVAILABLE_BLOCKS_CONTAINER_ID = 'availableBlocks';\n static readonly MAIN_EDITOR_ID = 'main';\n\n private _defaultSectionTitle = '';\n \n private _blocksLimitNumber = 0;\n setBlocksLimitNumber(value: number) {\n this._blocksLimitNumber = value;\n }\n \n private _editorsBreadCrumb = Array<IEditor>();\n\n private _editMode: boolean = false;\n get editMode(): boolean {\n return this._editMode;\n }\n setEditMode(value: boolean) {\n this._editMode = value;\n this.setEditableState();\n }\n\n private _editableState: boolean = false;\n get editableState(): boolean {\n return this._editableState;\n }\n\n // This subject is for the screen size change events.\n protected _screenSizeSubject: BehaviorSubject<PepScreenSizeType> = new BehaviorSubject<PepScreenSizeType>(PepScreenSizeType.XL);\n get screenSizeChange$(): Observable<PepScreenSizeType> {\n return this._screenSizeSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for demostrate the container size (Usage only in edit mode).\n private _screenWidthSubject: BehaviorSubject<string> = new BehaviorSubject<string>('100%');\n get screenWidthChange$(): Observable<string> {\n return this._screenWidthSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for load the current editor (Usage only in edit mode).\n private _editorSubject: BehaviorSubject<IEditor | null> = new BehaviorSubject<IEditor | null>(null);\n get editorChange$(): Observable<IEditor | null> {\n return this._editorSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This is the sections columns drop list subject.\n private _sectionsColumnsDropListSubject: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\n get sectionsColumnsDropListChange$(): Observable<any[]> {\n return this._sectionsColumnsDropListSubject.asObservable();\n }\n\n // This is the sections subject (a pare from the layout view object)\n private _sectionsViewSubject: BehaviorSubject<IPepLayoutSection[]> = new BehaviorSubject<IPepLayoutSection[]>([]);\n get sectionsChange$(): Observable<IPepLayoutSection[]> {\n return this._sectionsViewSubject.asObservable();\n // (prevSections, nextSections) => JSON.stringify(prevSections) === JSON.stringify(nextSections)));\n }\n\n // This subject is for layout view change.\n protected _layoutViewSubject: BehaviorSubject<IPepLayoutView | null> = new BehaviorSubject<IPepLayoutView | null>(null);\n get layoutViewChange$(): Observable<IPepLayoutView | null> {\n return this._layoutViewSubject.asObservable().pipe(filter(layout => !!layout));\n }\n\n // This subject is for edit mode when block is dragging now or not.\n private _draggingBlockKey: BehaviorSubject<string> = new BehaviorSubject('');\n get draggingBlockKey(): Observable<string> {\n return this._draggingBlockKey.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for edit mode when section is dragging now or not.\n private _draggingSectionKey: BehaviorSubject<string> = new BehaviorSubject('');\n get draggingSectionKey(): Observable<string> {\n return this._draggingSectionKey.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for lock or unlock the screen (Usage only in edit mode).\n private _lockScreenSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n get lockScreenChange$(): Observable<boolean> {\n return this._lockScreenSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This is for control the preview mode (for load the blocks with the CPI events) \n private _previewModeSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n get previewModeChange$(): Observable<boolean> {\n return this._previewModeSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This is for editor mode for block added.\n private _blockAddedEventSubject = new BehaviorSubject<IPepLayoutBlockAddedEvent | null>(null);\n get blockAddedEventSubject$(): Observable<IPepLayoutBlockAddedEvent | null> {\n return this._blockAddedEventSubject.asObservable();\n }\n // This is for editor mode for blocks removed.\n private _blocksRemovedEventSubject = new BehaviorSubject<string[]>([]);\n get blocksRemovedEventSubject$(): Observable<string[]> {\n return this._blocksRemovedEventSubject.asObservable();\n }\n\n // This subject is for skeleton.\n private _showSkeletonSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n get showSkeletonChange$(): Observable<boolean> {\n return this._showSkeletonSubject.asObservable().pipe(distinctUntilChanged());\n }\n \n // This subjects is for load the available blocks to drag into map for better performance.\n private _availableBlocksForDragMap = new Map<string, IPepDraggableItem>();\n get availableBlocksForDragMap(): ReadonlyMap<string, IPepDraggableItem> {\n return this._availableBlocksForDragMap;\n }\n private _availableBlocksForDragMapSubject = new BehaviorSubject<ReadonlyMap<string, IPepDraggableItem>>(this.availableBlocksForDragMap);\n get availableBlocksForDragMapChange$(): Observable<ReadonlyMap<string, IPepDraggableItem>> {\n return this._availableBlocksForDragMapSubject.asObservable();\n }\n\n constructor(\n protected translate: TranslateService,\n protected dialogService: PepDialogService,\n ) {\n //\n this._defaultSectionTitle = this.translate.instant('LAYOUT_BUILDER.SECTION');\n }\n \n private setEditableState() {\n this._editableState = this.editMode && !this._previewModeSubject.getValue();\n }\n\n private notifyLayoutViewChange(layoutViewToUpdate: IPepLayoutView | null) {\n if (layoutViewToUpdate) {\n if (this.editMode) {\n this.updateLayoutEditorProperties(layoutViewToUpdate);\n }\n\n // Update the layout for the view.\n this._layoutViewSubject.next(layoutViewToUpdate);\n \n // Update the sections for the view.\n this._sectionsViewSubject.next(layoutViewToUpdate?.Layout.Sections || []);\n }\n }\n\n private notifyBlockAdded(blockAddedEventData: IPepLayoutBlockAddedEvent) {\n // Notify that the block is added (to raise the event for the client).\n this._blockAddedEventSubject.next(blockAddedEventData);\n }\n\n private notifyBlocksRemoved(keys: string[] | undefined) {\n if (keys) {\n // Notify that the blocks are removed (to raise the event for the client).\n this._blocksRemovedEventSubject.next(keys);\n }\n }\n\n private notifyEditorChange(editor: IEditor | null) {\n this._editorSubject.next(editor);\n }\n\n private notifyAvailableBlocksForDragMapChange() {\n this._availableBlocksForDragMapSubject.next(this.availableBlocksForDragMap);\n }\n\n private notifyPreviewModeChange(value: boolean) {\n this._previewModeSubject.next(value);\n this.setEditableState();\n }\n\n private notifyLockScreen(value: boolean) {\n this._lockScreenSubject.next(value);\n }\n\n private notifySectionsColumnsDropListChange(sectionsColumnsDropList: any[]) {\n this._sectionsColumnsDropListSubject.next(sectionsColumnsDropList);\n }\n\n private updateLayoutEditorProperties(layoutView: IPepLayoutView) {\n if (this._editorsBreadCrumb[0]) {\n const layoutEditor: ILayoutEditor = {\n maxWidth: layoutView?.Layout.MaxWidth || 0,\n verticalSpacing: layoutView?.Layout.VerticalSpacing,\n horizontalSpacing: layoutView?.Layout.HorizontalSpacing,\n sectionsGap: layoutView?.Layout.SectionsGap,\n columnsGap: layoutView?.Layout.ColumnsGap,\n // roundedCorners: layoutView?.layout.\n };\n \n this._editorsBreadCrumb[0].hostObject = layoutEditor;\n }\n }\n\n private loadDefaultEditor(layoutView: IPepLayoutView) {\n this._editorsBreadCrumb = new Array<IEditor>();\n\n if (layoutView) {\n this._editorsBreadCrumb.push({\n id: PepLayoutBuilderService.MAIN_EDITOR_ID,\n type : 'layout-builder',\n title: layoutView.Title || this.translate.instant('LAYOUT_BUILDER.DEFAULT_TITLE'),\n // hostObject: {} // Updates in updateLayoutEditorProperties function above.\n });\n\n this.updateLayoutEditorProperties(layoutView);\n this.notifyEditorChange(this._editorsBreadCrumb[0]);\n } else {\n this.notifyEditorChange(null);\n }\n }\n\n private changeCurrentEditor() {\n if (this._editorsBreadCrumb.length > 0) {\n this.notifyEditorChange(this._editorsBreadCrumb[this._editorsBreadCrumb.length - 1]);\n }\n }\n\n private getEditorByType(editorType: LayoutEditorType, id: string): IEditor | null {\n // Build editor object.\n let editor: IEditor | null = null;\n\n if (editorType === 'section') {\n editor = this.getInternalSectionEditor(id);\n } else if (editorType === 'block') {\n editor = this.getInternalBlockEditor(id);\n }\n\n return editor;\n }\n\n private getInternalBlockEditor(blockKey: string): IEditor {\n const blockContainer = this.getBlockContainerByBlockKey(blockKey);\n const defaultTitle = this.translate.instant('LAYOUT_BUILDER.NO_TITLE')\n let blockTitle = defaultTitle;\n\n if (blockContainer) {\n blockTitle = this.availableBlocksForDragMap?.get(blockContainer?.DraggableItemKey)?.title || defaultTitle;\n }\n \n return {\n id: blockKey,\n type: 'block',\n title: blockTitle,\n // remoteModuleOptions: remoteLoaderOptions,\n hostObject: {} // JSON.parse(JSON.stringify(hostObject))\n }\n }\n\n private getSectionEditorTitle(section: IPepLayoutSection, sectionIndex: number): string {\n return section.Name || `${this._defaultSectionTitle} ${sectionIndex + 1}`;\n }\n\n private getInternalSectionEditor(sectionId: string): IEditor | null {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const sectionIndex = sections.findIndex(section => section.Key === sectionId);\n\n if (sectionIndex >= 0) {\n let section = sections[sectionIndex];\n const sectionEditor: ILayoutSectionEditor = {\n id: section.Key,\n sectionName: section.Name || '',\n split: section.Split || undefined,\n height: section.Height || 0,\n collapseOnTablet: section.CollapseOnTablet ?? false,\n fillHeight: section.FillHeight ?? false\n }\n\n return {\n id: sectionId,\n type: 'section',\n title: this.getSectionEditorTitle(section, sectionIndex),\n hostObject: sectionEditor\n }\n } else {\n return null;\n }\n }\n\n private getSectionColumnByIdForEditor(sectionColumnId: string): IPepLayoutSectionColumn | null {\n let currentColumn = null;\n\n // Get the section and column array by the pattern of the section column key.\n const sectionColumnPatternSeparator = this.getSectionColumnKey();\n const sectionColumnArr = sectionColumnId.split(sectionColumnPatternSeparator);\n\n if (sectionColumnArr.length === 2) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n // Get the section id to get the section index.\n const sectionId = sectionColumnArr[0];\n const sectionIndex = sections.findIndex(section => section.Key === sectionId);\n // Get the column index.\n const columnIndex = coerceNumberProperty(sectionColumnArr[1], -1);\n if (sectionIndex >= 0 && columnIndex >= 0) {\n currentColumn = sections[sectionIndex].Columns[columnIndex];\n }\n }\n\n return currentColumn;\n }\n\n // private setSectionsColumnsGap(layoutView: IPepLayoutView) {\n // if (layoutView?.Layout?.Sections) {\n // for (let index = 0; index < layoutView.Layout.Sections.length; index++) {\n // const section = layoutView.Layout.Sections[index];\n // section.ColumnsGap = layoutView.Layout.ColumnsGap;\n // }\n // }\n // }\n\n private getCssScreenWidh(screenType: DataViewScreenSize): string {\n let widthToSet = '100%';\n\n if (screenType === 'Tablet') {\n widthToSet = '720';\n } else if (screenType === 'Phablet') {\n widthToSet = '360';\n }\n\n return widthToSet;\n }\n \n private getBlockContainerByBlockKey(blockKey: string): IPepLayoutBlockContainer | undefined {\n let blockContainerToFind: IPepLayoutBlockContainer | undefined = undefined;\n\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n for (let sectionIndex = 0; sectionIndex < sections.length; sectionIndex++) {\n const section = sections[sectionIndex];\n\n // Get the block container.\n const columnIndex = section.Columns.findIndex(column => column.BlockContainer?.BlockKey === blockKey);\n if (columnIndex > -1) {\n blockContainerToFind = section.Columns[columnIndex].BlockContainer\n break;\n }\n }\n\n return blockContainerToFind;\n }\n \n private changeCursorOnDragStart() {\n document.body.classList.add('inheritCursors');\n document.body.style.cursor = 'grabbing';\n }\n\n private changeCursorOnDragEnd() {\n document.body.classList.remove('inheritCursors');\n document.body.style.cursor = 'unset';\n }\n\n \n /***********************************************************************************************/\n /* Public functions\n /***********************************************************************************************/\n\n setSectionsColumnsDropListChange(sectionsColumnsDropList: any[]) {\n this.notifySectionsColumnsDropListChange(sectionsColumnsDropList);\n }\n\n setLockScreen(value: boolean) {\n this.notifyLockScreen(value);\n }\n\n changePreviewMode(value: boolean) {\n this.notifyPreviewModeChange(value);\n }\n\n setAvailableBlocksToDrag(availableBlocksForDrag: Array<IPepDraggableItem>) {\n this._availableBlocksForDragMap.clear();\n availableBlocksForDrag.forEach(block => {\n this._availableBlocksForDragMap.set(block.data.key, block);\n });\n\n this.notifyAvailableBlocksForDragMapChange();\n }\n\n getScreenType(size: PepScreenSizeType): DataViewScreenSize {\n const screenType: DataViewScreenSize =\n size < PepScreenSizeType.MD ? 'Landscape' :\n (size === PepScreenSizeType.MD || size === PepScreenSizeType.SM ? 'Tablet' : 'Phablet');\n\n return screenType;\n }\n\n getSectionColumnKey(sectionKey: string = '', index: string = '') {\n return `${sectionKey}_column_${index}`;\n }\n\n getIsHidden(hideIn: DataViewScreenSize[] | undefined, currentScreenType: DataViewScreenSize) {\n return (hideIn && hideIn?.length > 0) ? hideIn.some(hi => hi === currentScreenType) : false;\n }\n\n navigateToEditor(editorType: LayoutEditorType, id: string): boolean {\n let success = false;\n\n // Cannot navigate into 'layout-builder' because this is first and const in the editorsBreadCrumbs.\n if (editorType !== 'layout-builder' && id?.length > 0) {\n // Check which editor we have now\n const currentEditor = this._editorsBreadCrumb[this._editorsBreadCrumb.length - 1];\n\n // Only if it's another editor.\n if(currentEditor.id !== id) {\n if (currentEditor.type !== 'layout-builder') {\n // Always pop the last and insert the current.\n this._editorsBreadCrumb.pop();\n }\n\n let editor = this.getEditorByType(editorType, id);\n\n if (editor) {\n this._editorsBreadCrumb.push(editor);\n this.changeCurrentEditor();\n success = true;\n } else {\n success = false;\n }\n }\n }\n\n return success;\n }\n\n navigateBackFromEditor() {\n // Keep the layout builder editor.\n if (this._editorsBreadCrumb.length > 1) {\n // Maybe we want to compare the last editor for validation ?\n const lastEditor = this._editorsBreadCrumb.pop();\n this.changeCurrentEditor();\n }\n }\n\n updateLayoutFromEditor(editorData: ILayoutEditor) {\n const layoutView = this._layoutViewSubject.getValue();\n\n if (layoutView) {\n layoutView.Layout.MaxWidth = editorData.maxWidth;\n layoutView.Layout.HorizontalSpacing = editorData.horizontalSpacing;\n layoutView.Layout.VerticalSpacing = editorData.verticalSpacing;\n layoutView.Layout.SectionsGap = editorData.sectionsGap;\n layoutView.Layout.ColumnsGap = editorData.columnsGap;\n // layoutView.layout.RoundedCorners = editorData.roundedCorners;\n\n // this.setSectionsColumnsGap(layoutView);\n \n this.notifyLayoutViewChange(layoutView);\n }\n }\n \n updateSectionFromEditor(sectionData: ILayoutSectionEditor) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const sectionIndex = sections.findIndex(section => section.Key === sectionData.id);\n\n // Update section details.\n if (sectionIndex >= 0) {\n const blocksIdsToRemove = [];\n\n const currentSection = sections[sectionIndex];\n currentSection.Name = sectionData.sectionName;\n currentSection.Split = sectionData.split;\n currentSection.Height = sectionData.height;\n currentSection.CollapseOnTablet = sectionData.collapseOnTablet;\n currentSection.FillHeight = sectionData.fillHeight;\n\n // Get the new columns number from currentSection.Split, if its undefined put a default 1.\n const newColumnsLength = currentSection.Split?.split(' ').length || 1;\n if (newColumnsLength > currentSection.Columns.length) {\n while (newColumnsLength > currentSection.Columns.length) {\n currentSection.Columns.push({});\n }\n } else if (newColumnsLength < currentSection.Columns.length) {\n while (newColumnsLength < currentSection.Columns.length) {\n const colunm = currentSection.Columns.pop();\n // If there is block in this column delete it.\n if (colunm && colunm.BlockContainer) {\n blocksIdsToRemove.push(colunm.BlockContainer.BlockKey);\n }\n }\n }\n\n // Update editor title\n const currentEditor = this._editorSubject.getValue();\n if (currentEditor && currentEditor.type === 'section' && currentEditor.id === currentSection.Key) {\n const title = this.getSectionEditorTitle(currentSection, sectionIndex);\n currentEditor.title = title;\n this.notifyEditorChange(currentEditor);\n }\n\n // Update sections change.\n this.notifyLayoutViewChange(layoutView);\n\n // If there are blocks to remove, notify the blocks removed.\n if (blocksIdsToRemove.length > 0) {\n this.notifyBlocksRemoved(blocksIdsToRemove);\n }\n }\n }\n\n addSection(section: IPepLayoutSection | null = null) {\n // Create new section\n if (!section) {\n section = {\n Key: PepGuid.newGuid(),\n Columns: [{}], // Add empty section column\n Hide: []\n }\n }\n\n // Add the new section to layout view.\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n sections.push(section);\n this.notifyLayoutViewChange(layoutView);\n }\n\n removeSection(sectionId: string) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const index = sections.findIndex(section => section.Key === sectionId);\n if (index > -1) {\n // Get the blocks id's to remove.\n const blocksIdsToRemove: any = sections[index].Columns.map(column => column?.BlockContainer?.BlockKey);\n\n // Remove section.\n sections.splice(index, 1);\n this.notifyLayoutViewChange(layoutView);\n\n // If there are blocks to remove, notify the blocks removed.\n if (blocksIdsToRemove.length > 0) {\n this.notifyBlocksRemoved(blocksIdsToRemove)\n }\n }\n }\n\n hideSection(sectionId: string, hideIn: DataViewScreenSize[]) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const index = sections.findIndex(section => section.Key === sectionId);\n if (index > -1) {\n sections[index].Hide = hideIn;\n this.notifyLayoutViewChange(layoutView);\n }\n }\n\n onSectionDropped(event: CdkDragDrop<any[]>) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n moveItemInArray(sections, event.previousIndex, event.currentIndex);\n this.notifyLayoutViewChange(layoutView);\n }\n\n onSectionDragStart(event: CdkDragStart) {\n this.changeCursorOnDragStart();\n this._draggingSectionKey.next(event.source.data);\n }\n\n onSectionDragEnd(event: CdkDragEnd) {\n this.changeCursorOnDragEnd();\n this._draggingSectionKey.next('');\n }\n\n removeBlockFromSection(blockId: string) {\n let blockRemoved = false;\n\n // Remove the block from section column.\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n for (let sectionIndex = 0; sectionIndex < sections.length; sectionIndex++) {\n const section = sections[sectionIndex];\n\n // Remove the block container.\n const columnIndex = section.Columns.findIndex(column => column.BlockContainer?.BlockKey === blockId);\n if (columnIndex > -1) {\n delete section.Columns[columnIndex].BlockContainer;\n this.notifyLayoutViewChange(layoutView);\n blockRemoved = true;\n\n break;\n }\n }\n\n // If the block was removed, notify the block removed.\n if (blockRemoved) {\n this.notifyBlocksRemoved([blockId]);\n }\n }\n\n hideBlock(sectionId: string, blockId: string, hideIn: DataViewScreenSize[]) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n const index = sections.findIndex(section => section.Key === sectionId);\n if (index > -1) {\n const columnIndex = sections[index].Columns.findIndex(column => column.BlockContainer?.BlockKey === blockId);\n if (columnIndex > -1) {\n const blockContainer = sections[index].Columns[columnIndex].BlockContainer;\n if (blockContainer) {\n blockContainer.Hide = hideIn;\n this.notifyLayoutViewChange(layoutView);\n }\n }\n }\n }\n\n private getBlocksNumber(): number {\n let blocksNumber = 0;\n const sections = this._layoutViewSubject.getValue()?.Layout.Sections || [];\n\n for (let index = 0; index < sections.length; index++) {\n const section = sections[index];\n \n for (let columnIndex = 0; columnIndex < section.Columns.length; columnIndex++) {\n const column = section.Columns[columnIndex];\n if (column.BlockContainer && column.BlockContainer.BlockKey?.length > 0) {\n blocksNumber++;\n }\n }\n }\n\n return blocksNumber;\n }\n\n onBlockDropped(event: CdkDragDrop<IPepLayoutSectionColumn, any, any>, sectionId: string) {\n const layoutView = this._layoutViewSubject.getValue();\n\n if (event.previousContainer.id === PepLayoutBuilderService.AVAILABLE_BLOCKS_CONTAINER_ID) {\n // Validate if blocks number allow.\n if (this._blocksLimitNumber > 0 && this.getBlocksNumber() >= this._blocksLimitNumber) {\n const data = new PepDialogData({\n title: this.translate.instant('MESSAGES.DIALOG_NOTICE_TITLE'),\n content: this.translate.instant('LAYOUT_BUILDER.BLOCKS_COUNT_LIMIT_MESSAGE'),\n });\n\n this.dialogService.openDefaultDialog(data);\n } else {\n // Get the block relation (previousContainer.data is IPepDraggableItem and inside we have AvailableBlock object).\n const draggableItem: IPepDraggableItem = event.previousContainer.data[event.previousIndex] as IPepDraggableItem;\n\n if (draggableItem) {\n // lock the screen untill the editor will be loaded.\n // this._lockScreenSubject.next(true);\n\n // Get the column.\n const currentColumn = this.getSectionColumnByIdForEditor(event.container.id);\n\n // Set the block key in the section block only if there is a blank column.\n if (currentColumn && !currentColumn.BlockContainer) {\n // Generate the block uuid.\n const blockKey = PepGuid.newGuid();\n\n currentColumn.BlockContainer = {\n BlockKey: blockKey,\n DraggableItemKey: draggableItem.data.key,\n };\n\n // Here we update the layout view cause the layout is updated.\n this.notifyLayoutViewChange(layoutView);\n\n // Raise block added event.\n const blockAddedEventData: IPepLayoutBlockAddedEvent = {\n BlockKey: blockKey,\n DraggableItem: draggableItem,\n }\n this.notifyBlockAdded(blockAddedEventData);\n }\n } else {\n console.log(\"draggableItem is not a IPepDraggableItem type\");\n }\n }\n } else {\n // If the block moved between columns in the same section or between different sections but not in the same column.\n if (event.container.id !== event.previousContainer.id) {\n // Get the column.\n const currentColumn = this.getSectionColumnByIdForEditor(event.container.id);\n // Get the previous column.\n const previuosColumn = this.getSectionColumnByIdForEditor(event.previousContainer.id);\n\n if (currentColumn && previuosColumn) {\n currentColumn.BlockContainer = previuosColumn.BlockContainer;\n delete previuosColumn.BlockContainer;\n this.notifyLayoutViewChange(layoutView);\n }\n }\n }\n }\n\n onBlockDragStart(event: CdkDragStart) {\n this.changeCursorOnDragStart();\n // Take the block key if exist, else take the available block key (relation key).\n const blockKey = event.source.data?.BlockKey || event.source.data?.Key;\n this._draggingBlockKey.next(blockKey);\n }\n\n onBlockDragEnd(event: CdkDragEnd) {\n this.changeCursorOnDragEnd();\n this._draggingBlockKey.next('');\n }\n \n doesColumnContainBlock(sectionId: string, columnIndex: number): boolean {\n let res = false;\n const layoutView = this._layoutViewSubject.getValue();\n const section = layoutView?.Layout.Sections.find(section => section.Key === sectionId);\n\n if (section && columnIndex >= 0 && section.Columns.length > columnIndex) {\n res = !!section.Columns[columnIndex].BlockContainer;\n }\n\n return res;\n }\n\n setScreenWidth(screenType: DataViewScreenSize) {\n const value = this.getCssScreenWidh(screenType)\n\n let width = coerceNumberProperty(value, 0);\n if (width === 0) {\n this._screenWidthSubject.next('100%');\n this._screenSizeSubject.next(PepScreenSizeType.XL);\n } else {\n this._screenWidthSubject.next(`${width}px`);\n\n // Change the size according the width.\n if (width >= 1920) {\n this._screenSizeSubject.next(PepScreenSizeType.XL);\n } else if (width >= 1280 && width < 1920) {\n this._screenSizeSubject.next(PepScreenSizeType.LG);\n } else if (width >= 960 && width < 1280) {\n this._screenSizeSubject.next(PepScreenSizeType.MD);\n } else if (width >= 600 && width < 960) {\n this._screenSizeSubject.next(PepScreenSizeType.SM);\n } else if (width < 600) {\n this._screenSizeSubject.next(PepScreenSizeType.XS);\n }\n }\n }\n\n showSkeleton(show: boolean) {\n this._showSkeletonSubject.next(show);\n }\n \n loadLayoutBuilder(layoutView: IPepLayoutView): void {\n if (this.editMode) {\n // Load the layout editor.\n this.loadDefaultEditor(layoutView);\n\n // Set the columns gap of the sections.\n // this.setSectionsColumnsGap(layoutView);\n }\n\n // Load only the layout view.\n this.notifyLayoutViewChange(layoutView);\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef } from '@angular/core';\nimport { CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragStart } from '@angular/cdk/drag-drop';\n\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\nimport { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepRemoteLoaderOptions } from '@pepperi-addons/ngx-lib/remote-loader';\nimport { PepLayoutBuilderService } from '../layout-builder.service';\nimport { IPepLayoutBlockContainer } from '../layout-builder.model';\n\n@Component({\n selector: 'section-block',\n templateUrl: './section-block.component.html',\n styleUrls: ['./section-block.component.scss', './section-block.component.theme.scss']\n})\nexport class SectionBlockComponent extends BaseDestroyerDirective implements OnInit {\n \n @Input() blockTemplate: TemplateRef<any> | undefined;\n @Input() sectionKey: string = '';\n @Input() sectionHeight: string = '';\n @Input() isMainEditorState = false;\n @Input() editable = false;\n @Input() active = false;\n \n private _blockContainer: IPepLayoutBlockContainer | undefined;\n @Input()\n set blockContainer(value: IPepLayoutBlockContainer | undefined) {\n this._blockContainer = value;\n if (this._blockContainer) {\n this.availableBlock = this.layoutBuilderService.availableBlocksForDragMap?.get(this._blockContainer?.DraggableItemKey);\n }\n \n this.setIfHideForCurrentScreenType();\n }\n get blockContainer(): IPepLayoutBlockContainer | undefined {\n return this._blockContainer;\n }\n\n private _screenType!: DataViewScreenSize;\n @Input()\n set screenType(value: DataViewScreenSize) {\n this._screenType = value;\n this.setIfHideForCurrentScreenType();\n }\n get screenType(): DataViewScreenSize {\n return this._screenType;\n }\n \n @Output() dragExited: EventEmitter<CdkDragExit> = new EventEmitter();\n @Output() dragEntered: EventEmitter<CdkDragEnter> = new EventEmitter();\n\n protected hideForCurrentScreenType = false;\n // protected remoteLoaderOptions: PepRemoteLoaderOptions;\n protected availableBlock: IPepDraggableItem | undefined;\n \n constructor(\n private layoutBuilderService: PepLayoutBuilderService,\n ) {\n super();\n }\n \n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.blockContainer ? \n this.layoutBuilderService.getIsHidden(this.blockContainer.Hide, this.screenType) : false;\n }\n \n ngOnInit(): void {\n // \n this.layoutBuilderService.availableBlocksForDragMapChange$.pipe(this.getDestroyer()).subscribe((availableBlocksForDragMap) => {\n if (availableBlocksForDragMap && this.blockContainer) {\n this.availableBlock = (availableBlocksForDragMap as ReadonlyMap<string, IPepDraggableItem>).get(this.blockContainer.DraggableItemKey);\n }\n });\n }\n\n onEditBlockClick() {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderService.navigateToEditor('block', this.blockContainer.BlockKey);\n }\n }\n\n onRemoveBlockClick() {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderService.removeBlockFromSection(this.blockContainer.BlockKey);\n }\n }\n\n onHideBlockChange(hideIn: DataViewScreenSize[]) {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderService.hideBlock(this.sectionKey, this.blockContainer.BlockKey, hideIn);\n this.setIfHideForCurrentScreenType();\n }\n }\n\n // onBlockLoad(event: any) {\n // this.layoutBuilderService.updateBlockLoaded(this.blockContainer.BlockKey);\n // }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onBlockDragEnd(event);\n }\n\n onDragExited(event: CdkDragExit) {\n this.dragExited.emit(event);\n }\n\n onDragEntered(event: CdkDragEnter) {\n this.dragEntered.emit(event);\n }\n}\n","<div *ngIf=\"blockContainer?.BlockKey && (editable || !hideForCurrentScreenType)\" \n class=\"section-block-container\"\n [ngClass]=\"{ 'editable-state': editable, 'block-hidden-state': hideForCurrentScreenType, 'active-block': active }\"\n cdkDrag [cdkDragData]=\"blockContainer\" [cdkDragDisabled]=\"!editable || !isMainEditorState\" \n (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\"\n (cdkDragExited)=\"onDragExited($event)\" (cdkDragEntered)=\"onDragEntered($event)\">\n \n <pep-draggable-item *ngIf=\"editable && isMainEditorState\" cdkDragHandle style=\"cursor: grab;\"\n class=\"block-toolbar\" [title]=\"availableBlock?.title || blockContainer?.BlockKey || ''\" >\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveBlockClick();\"></pep-button>\n <!-- <hide-in [hideIn]=\"blockContainer.Hide\" (hideInChange)=\"onHideBlockChange($event)\"></hide-in> -->\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditBlockClick();\"></pep-button>\n </ng-container>f\n </pep-draggable-item>\n <div class=\"block-template-wrapper\" [ngStyle]=\"{ 'overflow': (sectionHeight === 'unset' ? 'unset' : 'auto') }\">\n <div *ngIf=\"blockTemplate\" class=\"block-template\">\n <ng-container *ngTemplateOutlet=\"blockTemplate; context: { blockKey: blockContainer?.BlockKey, draggableItemKey: blockContainer?.DraggableItemKey }\">\n </ng-container>\n </div>\n <!-- <pep-remote-loader-element *ngIf=\"remoteLoaderOptions\" class=\"remote-loader\"\n [options]=\"remoteLoaderOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onBlockHostEventsCallback }\"\n (load)=\"onBlockLoad($event)\">\n </pep-remote-loader-element> -->\n </div>\n</div>\n","import { Component, ElementRef, HostBinding, HostListener, Input, OnChanges, OnInit, QueryList, Renderer2, SimpleChanges, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';\nimport { DataViewScreenSize, SplitType } from '@pepperi-addons/papi-sdk';\nimport { BaseDestroyerDirective, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { PepLayoutBuilderService } from '../layout-builder.service';\nimport { IEditor, IPepLayoutSectionColumn, PepLayoutSizeType } from '../layout-builder.model';\n\n@Component({\n selector: 'section',\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss', './section.component.theme.scss']\n})\nexport class SectionComponent extends BaseDestroyerDirective implements OnInit {\n @ViewChild('sectionContainer') sectionContainerRef!: ElementRef;\n @ViewChildren('columnsWrapper') columnsElementRef!: QueryList<ElementRef>;\n\n @Input() blockTemplate: TemplateRef<any> | undefined;\n\n @Input() key: string = '';\n @Input() name: string = '';\n\n private _split: SplitType | undefined = undefined;\n @Input()\n set split(value: SplitType | undefined ) {\n this._split = value;\n this.refreshSplit();\n }\n get split(): SplitType | undefined {\n return this._split;\n }\n\n private _height: number | undefined = undefined;\n @Input()\n set height(value: number | undefined) {\n this._height = value;\n this.setStyleHeight();\n }\n get height(): number | undefined {\n return this._height;\n }\n\n private _collapseOnTablet: boolean = false;\n @Input()\n set collapseOnTablet(value: boolean) {\n this._collapseOnTablet = value;\n this.pepScreenSizeToFlipToVertical = value ? PepScreenSizeType.MD : PepScreenSizeType.SM;\n this.refreshSplit();\n }\n get collapseOnTablet(): boolean {\n return this._collapseOnTablet;\n }\n\n private _columns: Array<IPepLayoutSectionColumn> = [];\n @Input()\n set columns(value: Array<IPepLayoutSectionColumn>) {\n this._columns = value || [];\n }\n get columns(): Array<IPepLayoutSectionColumn> {\n return this._columns;\n }\n \n private _hideIn: DataViewScreenSize[] = [];\n @Input()\n set hideIn(value: DataViewScreenSize[]) {\n this._hideIn = value;\n this.setIfHideForCurrentScreenType();\n }\n get hideIn(): DataViewScreenSize[] {\n return this._hideIn;\n }\n\n @Input() columnsGap!: PepLayoutSizeType;\n \n @HostBinding('style.max-height')\n styleMaxHeight = 'unset';\n \n @HostBinding('style.height')\n styleHeight = 'unset';\n \n protected sectionsColumnsDropList: string[] = [];\n\n // private _editable = false;\n // protected set editable(value: boolean) {\n // this._editable = value;\n // this.refreshSplit();\n // }\n protected get editable(): boolean {\n return this.layoutBuilderService.editableState;;\n }\n\n private _screenSize!: PepScreenSizeType;\n protected set screenSize(value: PepScreenSizeType) {\n this._screenSize = value;\n this.refreshSplit();\n this.setScreenType();\n }\n protected get screenSize(): PepScreenSizeType {\n return this._screenSize;\n }\n\n // PepScreenSizeType = PepScreenSizeType;\n protected sectionColumnKeyPrefix = '';\n \n protected isMainEditorState = false;\n protected isEditing = false;\n protected selectedSectionKey = '';\n protected selectedBlockKey = '';\n \n protected containsBlocks = false;\n protected shouldSetDefaultHeight = false;\n protected pepScreenSizeToFlipToVertical = PepScreenSizeType.SM;\n protected screenType!: DataViewScreenSize;\n protected hideForCurrentScreenType = false;\n protected draggingBlockKey: string = '';\n protected draggingSectionKey: string = '';\n protected hoverState = false;\n\n constructor(\n private renderer: Renderer2,\n private layoutBuilderService: PepLayoutBuilderService,\n private layoutService: PepLayoutService,\n ) { \n super();\n }\n\n private calculateIfSectionContainsBlocks() {\n this.containsBlocks = this.columns.some(column => column.BlockContainer);\n\n if (this.editable) {\n this.shouldSetDefaultHeight = !this.containsBlocks;\n }\n }\n\n private setScreenType() {\n this.screenType = this.layoutBuilderService.getScreenType(this.screenSize);\n this.setIfHideForCurrentScreenType();\n this.setStyleHeight();\n }\n\n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.layoutBuilderService.getIsHidden(this.hideIn, this.screenType);\n }\n \n private getCssSplitString() {\n switch (this.split) {\n case '1/2 1/2':\n return '1fr 1fr';\n case '1/2 1/4 1/4':\n return '2fr 1fr 1fr';\n case '1/3 1/3 1/3':\n return '1fr 1fr 1fr';\n case '1/3 2/3':\n return '1fr 2fr';\n case '1/4 1/2 1/4':\n return '1fr 2fr 1fr';\n case '1/4 1/4 1/2':\n return '1fr 1fr 2fr';\n case '1/4 1/4 1/4 1/4':\n return '1fr 1fr 1fr 1fr';\n case '1/4 3/4':\n return '1fr 3fr';\n case '2/3 1/3':\n return '2fr 1fr';\n case '3/4 1/4':\n return '3fr 1fr';\n default: // For one column.\n return '1fr';\n }\n }\n\n private refreshSplit() {\n setTimeout(() => {\n if (this.sectionContainerRef) {\n let cssSplitString = this.getCssSplitString();\n \n // Go for all the columns in the columnsWrapper\n this.columnsElementRef.toArray().map((section, sectionIndex) => {\n // Horizontal (true) for large screens, false for small screens.\n const isHorizontalView = this.screenSize <= this.pepScreenSizeToFlipToVertical;\n\n if (isHorizontalView) {\n this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'column');\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');\n this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);\n } else {\n this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'row');\n this.renderer.setStyle(section.nativeElement, 'grid-template-columns', 'unset');\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitString);\n \n // In runtime (or preview mode).\n if (!this.editable) {\n const cssSplitArray = cssSplitString.split(' ');\n \n // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).\n this.columns.forEach((column, index) => {\n if (!column.BlockContainer) {\n cssSplitArray[index] = '0';\n }\n });\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');\n //this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitArray.join(' '));\n }\n }\n });\n }\n }, 0);\n }\n\n private setStyleHeight() {\n if (this.height && this.height > 0 && this.screenType !== 'Phablet') {\n this.styleHeight = this.styleMaxHeight = `${this.height}px`;\n } else {\n this.styleHeight = this.styleMaxHeight = 'unset';\n }\n }\n\n getIsDragging(): boolean {\n return this.draggingBlockKey.length > 0 && this.draggingSectionKey.length > 0;\n }\n\n getIsHidden(hideIn: DataViewScreenSize[] | undefined, currentScreenType: DataViewScreenSize) {\n return this.layoutBuilderService.getIsHidden(hideIn, currentScreenType);\n }\n\n ngOnInit(): void {\n this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe(previewMode => {\n this.refreshSplit();\n });\n\n // Just to calculate if sections contains blocks\n this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe(res => {\n this.calculateIfSectionContainsBlocks();\n });\n\n this.layoutService.onResize$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.screenSize = size;\n });\n\n this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.screenSize = size;\n });\n\n if (this.editable) {\n this.layoutBuilderService.sectionsColumnsDropListChange$.pipe(this.getDestroyer()).subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n\n this.layoutBuilderService.editorChange$.pipe(this.getDestroyer()).subscribe((editor: any) => {\n this.isMainEditorState = editor && editor.type === 'layout-builder';\n this.isEditing = editor && editor.type === 'section' && editor.id === this.key;\n this.selectedSectionKey = editor && editor.type === 'section' ? editor.id : '';\n this.selectedBlockKey = editor && editor.type === 'block' ? editor.id : '';\n });\n \n this.layoutBuilderService.draggingBlockKey.pipe(this.getDestroyer()).subscribe((draggingBlockKey: any) => {\n this.draggingBlockKey = draggingBlockKey;\n\n if (draggingBlockKey === '') {\n this.calculateIfSectionContainsBlocks();\n } else {\n // If there is only one block in the section and now it's this block that the user is dragging.\n const blocksLength = this.columns.filter(column => column.BlockContainer).length;\n if (blocksLength === 1 && this.columns.find(c => c.BlockContainer?.BlockKey === this.draggingBlockKey)) {\n this.shouldSetDefaultHeight = true;\n }\n }\n\n });\n\n this.layoutBuilderService.draggingSectionKey.pipe(this.getDestroyer()).subscribe((draggingSectionKey: any) => {\n this.draggingSectionKey = draggingSectionKey;\n });\n }\n\n this.sectionColumnKeyPrefix = this.layoutBuilderService.getSectionColumnKey(this.key);\n }\n\n onEditSectionClick() {\n this.layoutBuilderService.navigateToEditor('section', this.key);\n }\n\n onRemoveSectionClick() {\n this.layoutBuilderService.removeSection(this.key);\n }\n\n onHideSectionChange(hideIn: DataViewScreenSize[]) {\n this.layoutBuilderService.hideSection(this.key, hideIn);\n }\n\n onHideInMenuOpened() {\n this.hoverState = true;\n }\n\n onHideInMenuClosed() {\n this.hoverState = false;\n }\n\n onBlockDropped(event: CdkDragDrop<IPepLayoutSectionColumn, any, any>) {\n this.layoutBuilderService.onBlockDropped(event, this.key);\n }\n\n canDropPredicate(columnIndex: number) {\n return (drag: CdkDrag, drop: CdkDropList) => {\n const res = !this.layoutBuilderService.doesColumnContainBlock(this.key, columnIndex);\n return res;\n };\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onSectionDragEnd(event);\n }\n\n onSectionBlockDragExited(event: CdkDragExit) {\n // TODO: Remove this.\n // // If the block is exit from his container and it's the only block in this section.\n // if (this.containsBlocks) {\n // const blocksLength = this.columns.filter(column => column.BlockContainer).length;\n\n // if (blocksLength === 1) {\n // this.containsBlocks = false;\n // this.shouldSetDefaultHeight = true;\n // }\n // }\n }\n\n onSectionBlockDragEntered(event: CdkDragEnter) {\n // TODO: Remove this.\n // // Only in case that the block entered back to his container and it's the only block in this section.\n // if (event.container.id === event.item.dropContainer.id) {\n // if (!this.containsBlocks) {\n // this.containsBlocks = true;\n // }\n // }\n }\n}\n","<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionBlockComponent } from './section-block.component'\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\n// import { TranslateModule, TranslateLoader } from '@ngx-translate/core';\n// import { PepHideInModule } from '../hide-in/hide-in.module';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepSkeletonLoaderModule } from '@pepperi-addons/ngx-lib/skeleton-loader';\n\n@NgModule({\n declarations: [\n SectionBlockComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n PepSkeletonLoaderModule,\n PepRemoteLoaderModule,\n // PepHideInModule,\n PepDraggableItemsModule,\n // TranslateModule.forChild()\n ],\n exports: [SectionBlockComponent]\n})\nexport class SectionBlockModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionComponent } from './section.component';\nimport { SectionBlockModule } from '../section-block/section-block.module';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\n\nimport { PepHideInModule } from '../hide-in/hide-in.module';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\n\n@NgModule({\n declarations: [SectionComponent],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n PepRemoteLoaderModule,\n SectionBlockModule,\n PepHideInModule,\n PepDraggableItemsModule,\n // TranslateModule.forChild()\n ],\n exports: [SectionComponent]\n})\nexport class SectionModule { }\n","import { AfterContentInit, AfterViewChecked, ChangeDetectorRef, ContentChild, ElementRef, Renderer2, ViewChild, ContentChildren,\n OnInit, AfterViewInit, Component, EventEmitter, Input, Output, HostBinding, QueryList, TemplateRef } from '@angular/core';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragStart, CdkDropList, DragDrop } from '@angular/cdk/drag-drop';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { BaseDestroyerDirective, PepCustomizationService, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { PepLayoutBuilderService } from '../layout-builder.service';\nimport { IPepLayoutBlockAddedEvent, IPepLayoutSection, IPepLayoutView, PepLayoutSizeType } from '../layout-builder.model';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\n\n@Component({\n selector: 'pep-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss'],\n})\nexport class PepLayoutComponent extends BaseDestroyerDirective implements OnInit {\n @ViewChild('skeletonCont', { static: true }) skeletonContainer!: ElementRef;\n @ViewChild('sectionsCont', { static: true }) sectionsContainer!: ElementRef;\n\n private _layoutView!: IPepLayoutView;\n @Input()\n set layoutView(value: IPepLayoutView) {\n this._layoutView = value;\n this.layoutBuilderService.loadLayoutBuilder(value);\n }\n get layoutView(): IPepLayoutView {\n return this._layoutView;\n }\n\n @Input() blockTemplate: TemplateRef<any> | undefined = undefined;\n\n private _showSkeleton = false;\n @Input()\n set showSkeleton(value: boolean) {\n this._showSkeleton = value;\n this.layoutBuilderService.showSkeleton(value);\n }\n get showSkeleton(): boolean {\n return this._showSkeleton;\n }\n \n @Output() layoutViewChange: EventEmitter<IPepLayoutView> = new EventEmitter();\n @Output() screenTypeChange: EventEmitter<DataViewScreenSize> = new EventEmitter();\n\n private _horizontalSpacing: PepLayoutSizeType | undefined = 'md';\n set horizontalSpacing(value: PepLayoutSizeType | undefined) {\n this._horizontalSpacing = value;\n this.paddingInline = this.convertLayoutSizeType(value || 'md');\n }\n get horizontalSpacing(): PepLayoutSizeType | undefined {\n return this._horizontalSpacing;\n }\n\n private _verticalSpacing: PepLayoutSizeType | undefined = 'md';\n set verticalSpacing(value: PepLayoutSizeType | undefined) {\n this._verticalSpacing = value;\n }\n get verticalSpacing(): PepLayoutSizeType | undefined {\n return this._verticalSpacing;\n }\n\n @HostBinding('style.padding-inline')\n protected paddingInline = '1rem';\n \n protected sectionsGap!: PepLayoutSizeType;\n protected columnsGap!: PepLayoutSizeType;\n protected previewMode = false;\n\n private _sectionsSubject: BehaviorSubject<IPepLayoutSection[]> = new BehaviorSubject<IPepLayoutSection[]>([]);\n protected get sections$(): Observable<IPepLayoutSection[]> {\n return this._sectionsSubject.asObservable();\n }\n\n protected selectedScreenType!: DataViewScreenSize;\n\n constructor(\n public customizationService: PepCustomizationService,\n public layoutService: PepLayoutService,\n public layoutBuilderService: PepLayoutBuilderService,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n // private dragDropService: DragDrop\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout');\n }\n\n private convertLayoutSizeType(size: PepLayoutSizeType | 'none') {\n let res;\n\n if (size === 'lg') {\n res = '2rem';\n } else if (size === 'md') {\n res = '1rem';\n } else if (size === 'sm') {\n res = '0.5rem';\n } else {\n res = '0';\n }\n\n return res;\n }\n\n private animateSkeleton() {\n if (this._showSkeleton) {\n // this.sectionsContainer?.nativeElement?.classList.add('out');\n this.sectionsContainer?.nativeElement?.classList.remove('in');\n this.skeletonContainer?.nativeElement?.classList.add('in');\n // this.skeletonContainer?.nativeElement?.classList.remove('out');\n } else {\n this.sectionsContainer?.nativeElement?.classList.add('in');\n // this.sectionsContainer?.nativeElement?.classList.remove('out');\n // this.skeletonContainer?.nativeElement?.classList.add('out');\n this.skeletonContainer?.nativeElement?.classList.remove('in');\n }\n }\n\n private setLayoutDataProperties() {\n const layoutView = this._layoutView;\n\n if (layoutView) {\n if (this.sectionsContainer?.nativeElement) {\n let maxWidth = coerceNumberProperty(layoutView.Layout.MaxWidth, 0);\n const maxWidthToSet = maxWidth === 0 ? 'unset' : `${maxWidth}px`;\n this.renderer.setStyle(this.sectionsContainer.nativeElement, 'max-width', maxWidthToSet);\n }\n \n this.sectionsGap = layoutView.Layout.SectionsGap || 'md';\n this.columnsGap = layoutView.Layout.ColumnsGap || 'md';\n\n this.horizontalSpacing = layoutView.Layout.HorizontalSpacing;\n this.verticalSpacing = layoutView.Layout.VerticalSpacing;\n }\n }\n\n private setScreentType(screenSize: PepScreenSizeType) {\n const screenType = this.layoutBuilderService.getScreenType(screenSize);\n this.selectedScreenType = screenType;\n this.screenTypeChange.emit(screenType);\n }\n\n ngOnInit() {\n /***********************************************************************************************/\n /* Internal Events - for code usage\n /***********************************************************************************************/\n\n if (this.layoutBuilderService.editMode) {\n this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n }\n\n this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections: any) => {\n this._sectionsSubject.next(sections);\n });\n\n this.layoutBuilderService.showSkeletonChange$.pipe(this.getDestroyer()).subscribe((showSkeleton: any) => {\n if (showSkeleton !== undefined) {\n this._showSkeleton = showSkeleton;\n this.animateSkeleton();\n }\n });\n\n this.layoutService.onResize$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.setScreentType(size);\n });\n\n this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.setScreentType(size);\n });\n\n /***********************************************************************************************/\n /* External Events - for raise to the client\n /***********************************************************************************************/\n\n this.layoutBuilderService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView: any) => {\n this._layoutView = layoutView;\n this.setLayoutDataProperties();\n this.layoutViewChange.emit(this._layoutView);\n });\n }\n\n getSectionsTemplateRows() {\n let gridAutoRows = '';\n // let fillHeightCount = 0;\n this.sections$.pipe(this.getDestroyer()).subscribe((sections: any) => { \n if (sections?.length) {\n sections.forEach((sec: IPepLayoutSection) => {\n if(sec.FillHeight === true){\n // fillHeightCount++;\n gridAutoRows += ' auto';\n }\n else {\n gridAutoRows += ' min-content';\n }\n });\n \n //if all are fill height should return 1fr for all\n //if not should return auto for fill height and min content for none\n return gridAutoRows;\n } else {\n return '';\n }\n });\n\n return gridAutoRows;\n }\n\n onSectionDropped(event: CdkDragDrop<any[]>) {\n this.layoutBuilderService.onSectionDropped(event);\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onSectionDragEnd(event);\n }\n}\n","<!-- For the top spacing -->\n<div class=\"top-spacing spacing-{{verticalSpacing}}\" ></div>\n<div #sectionsCont cdkDropListGroup class=\"sections-container gap-{{ sectionsGap }}\" [ngClass]=\"{'preview-state': previewMode }\" \n cdkDropList (cdkDropListDropped)=\"onSectionDropped($event)\" [ngStyle]=\"{'grid-auto-rows': getSectionsTemplateRows()}\"\n >\n <section *ngFor=\"let section of sections$ | async; let i=index;\" \n class=\"draggable-section \" [ngClass]=\"selectedScreenType === 'Phablet' ? 'margin-'+sectionsGap : ''\" [blockTemplate]=\"blockTemplate\"\n [key]=\"section.Key\" [name]=\"section.Name || ('LAYOUT_BUILDER.SECTION' | translate) + ' ' + (i+1)\" [split]=\"section.Split\" [height]=\"section.Height\"\n [columns]=\"section.Columns\" [collapseOnTablet]=\"section.CollapseOnTablet || false\" [hideIn]=\"section.Hide || []\" [columnsGap]=\"columnsGap\"\n >\n </section>\n</div>\n<div #skeletonCont class=\"skeleton-container \">\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"xl\" ></pep-skeleton-loader>\n <div class=\"split-skeleton-container\">\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"max\" ></pep-skeleton-loader>\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"max\" ></pep-skeleton-loader>\n </div>\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"xl\" ></pep-skeleton-loader>\n\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"max\" ></pep-skeleton-loader>\n</div>\n<!-- For the bottom spacing -->\n<div class=\"bottom-spacing spacing-{{verticalSpacing}}\"></div>\n<pep-size-detector></pep-size-detector>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { PepNgxLibModule, PepAddonService } from '@pepperi-addons/ngx-lib';\n\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PepSizeDetectorModule } from '@pepperi-addons/ngx-lib/size-detector';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { PepSkeletonLoaderModule } from '@pepperi-addons/ngx-lib/skeleton-loader';\n\nimport { SectionModule } from '../section/section.module'\n\nimport { PepLayoutComponent } from './layout.component';\n\n\n@NgModule({\n declarations: [\n PepLayoutComponent,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n PepNgxLibModule,\n PepSkeletonLoaderModule,\n PepRemoteLoaderModule,\n PepSizeDetectorModule,\n PepDialogModule,\n DragDropModule,\n SectionModule,\n TranslateModule.forChild()\n ],\n exports:[PepLayoutComponent],\n})\nexport class PepLayoutModule {\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { SplitType } from '@pepperi-addons/papi-sdk';\nimport { PepDialogActionButton, PepDialogData, PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\nimport { ILayoutSectionEditor } from '../layout-builder.model';\n\nexport interface ISplitOption {\n key: SplitType; \n value: string;\n}\nexport interface IAllSplitOption {\n key: string;\n value: Array<ISplitOption>;\n}\n\n@Component({\n selector: 'section-editor',\n templateUrl: './section-editor.component.html',\n styleUrls: ['./section-editor.component.scss']\n})\nexport class SectionEditorComponent implements OnInit {\n readonly MIN_HEIGHT = 40;\n \n private _hostObject!: ILayoutSectionEditor;\n @Input()\n set hostObject(value: ILayoutSectionEditor) {\n this._hostObject = value;\n\n this.sectionName = value.sectionName;\n this.split = value.split;\n this.isAutoHeight = !value.height || value.height === 0;\n this.height = this.isAutoHeight ? this.MIN_HEIGHT : value.height;\n this.collapseOnTablet = value.collapseOnTablet ?? false;\n this.fillHeight = value.fillHeight ?? false;\n }\n get hostObject(): ILayoutSectionEditor {\n return this._hostObject;\n }\n\n sectionName: string = '';\n \n private _split: SplitType | undefined;\n set split(value: SplitType | undefined) {\n this._split = value;\n \n this.subSections = (this._split && this._split.length > 0) ? true : false;\n\n // Check how many parts we have.\n const arr = value?.split(' ');\n if (arr && arr.length > 1 && arr.length <= 4) {\n this.partsNumber = arr.length.toString();\n } else {\n this.partsNumber = \"2\";\n }\n \n this.loadSplitOptions();\n }\n get split(): SplitType | undefined {\n return this._split;\n }\n \n isAutoHeight: boolean = true;\n height: number = this.MIN_HEIGHT;\n\n @Output() hostObjectChange: EventEmitter<ILayoutSectionEditor> = new EventEmitter<ILayoutSectionEditor>();\n \n collapseOnTablet: boolean = false;\n fillHeight: boolean = false;\n subSections: boolean = false;\n partsNumber: string = \"2\";\n partsNumberOptions = Array<IPepOption>();\n splitOptions = Array<ISplitOption>();\n allSplitOptions = Array<IAllSplitOption>();\n\n constructor(private translate: TranslateService, private dialog: PepDialogService) {\n this.initData();\n }\n\n private initData() {\n this.partsNumberOptions = [\n { 'key': '2', 'value': '2 Parts' }, \n { 'key': '3', 'value': '3 Parts' },\n { 'key': '4', 'value': '4 Parts' }\n ];\n \n this.allSplitOptions = [\n { 'key': '2', 'value': [\n { 'key': '1/4 3/4', 'value': '1/4-3/4' },\n { 'key': '1/3 2/3', 'value': '1/3-2/3' },\n { 'key': '1/2 1/2', 'value': '1/2-1/2' },\n { 'key': '2/3 1/3', 'value': '2/3-1/3' },\n { 'key': '3/4 1/4', 'value': '3/4-1/4' },\n ]}, \n { 'key': '3', 'value': [\n { 'key': '1/3 1/3 1/3', 'value': '1/3-1/3-1/3' },\n { 'key': '1/2 1/4 1/4', 'value': '1/2-1/4-1/4' },\n { 'key': '1/4 1/2 1/4', 'value': '1/4-1/2-1/4' },\n { 'key': '1/4 1/4 1/2', 'value': '1/4-1/4-1/2' },\n ]},\n { 'key': '4', 'value': [\n { 'key': '1/4 1/4 1/4 1/4', 'value': '1/4-1/4-1/4-1/4' },\n ]}\n ];\n }\n\n private loadSplitOptions() {\n const splitOptions = this.allSplitOptions.find((option) => option.key === this.partsNumber);\n if (splitOptions) {\n this.splitOptions = splitOptions.value;\n } else {\n this.splitOptions = this.allSplitOptions[0].value;\n }\n\n if (!this._split) {\n this._split = this.splitOptions[0].key;\n }\n }\n\n private updateHostObject() {\n this._hostObject.sectionName = this.sectionName;\n this._hostObject.split = this.subSections ? this.split : undefined;\n this._hostObject.height = this.isAutoHeight ? 0 : this.height;\n this._hostObject.collapseOnTablet = this.collapseOnTablet;\n this._hostObject.fillHeight = this.fillHeight;\n\n this.hostObjectChange.emit(this.hostObject);\n }\n\n ngOnInit(): void {\n this.loadSplitOptions();\n }\n \n isAutoHeightChange(isChecked: boolean) {\n this.isAutoHeight = isChecked;\n this.updateHostObject();\n }\n\n onHeightChange(height: number) {\n if (height >= this.MIN_HEIGHT) {\n this.height = coerceNumberProperty(height, this.height);\n this.updateHostObject();\n }\n }\n \n onSectionNameChange(value: string) {\n this.sectionName = value;\n this.updateHostObject();\n }\n\n onCollapseOnTabletChange(value: boolean){\n this.collapseOnTablet = value;\n this.updateHostObject();\n }\n\n onFillHeightChange(value: boolean){\n this.fillHeight = value;\n this.updateHostObject();\n }\n\n onSubSectionsChange(value: boolean) {\n const oldValue = this.subSections;\n // Check if cancel the sub sections ( change from any -> 1 section ), if true need to show confirm message\n if (value === false) {\n this.subSections = value;\n this.showDeleteSectionMsg(() => {\n this.updateHostObject();\n }, () => {\n this.subSections = oldValue;\n });\n } else {\n this.subSections = value;\n this.updateHostObject();\n }\n }\n \n onPartsNumberChange(key: string) {\n const oldKey = this.partsNumber;\n // Check if decrease on sub sections number, if true need to show confirm message\n if (key && parseInt(key) < parseInt(this.partsNumber)) {\n this.partsNumber = key;\n this.showDeleteSectionMsg(() => {\n this.loadSplitOptions();\n this._split = this.splitOptions[0].key;\n this.updateHostObject();\n }, () => {\n this.partsNumber = oldKey;\n })\n } else {\n this.partsNumber = key;\n this.loadSplitOptions();\n this._split = this.splitOptions[0].key;\n this.updateHostObject();\n }\n }\n\n showDeleteSectionMsg(continueCB: () => void, cancelCB: () => void){\n const actionButtons = [\n new PepDialogActionButton(\n this.translate.instant('ACTIONS.CANCEL'),\n '',\n () => {\n cancelCB();\n }\n ),\n new PepDialogActionButton(\n this.translate.instant('ACTIONS.CONTINUE'),\n 'strong caution',\n () => {\n continueCB();\n }\n )\n ];\n \n const content = this.translate.instant('LAYOUT_BUILDER.DELETE_SECTION_MSG');\n const title = this.translate.instant('LAYOUT_BUILDER.DELETE_SECTION_TITLE');\n const dataMsg = new PepDialogData({title, actionsType: 'custom', content, actionButtons});\n\n this.dialog.openDefaultDialog(dataMsg);\n }\n\n\n onSplitChange(key: string) {\n this._split = key as SplitType;\n this.updateHostObject();\n }\n}\n","<div class=\"section-editor-container layout-builder-editor-container\">\n <div>\n <pep-textbox [value]=\"sectionName\" [label]=\"'LAYOUT_BUILDER.SECTION_NAME_TITLE' | translate\" (valueChange)=\"onSectionNameChange($event)\"></pep-textbox>\n </div>\n\n <!-- \n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"isAutoHeight\" [label]=\"'LAYOUT_BUILDER.AUTO_HEIGHT_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"isAutoHeightChange($event)\"></pep-checkbox>\n <pep-textbox [label]=\"'LAYOUT_BUILDER.HEIGHT_TITLE' | translate\" type=\"int\" [minValue]=\"MIN_HEIGHT\" [disabled]=\"isAutoHeight\" [value]=\"height\" (valueChange)=\"onHeightChange($event)\"></pep-textbox> \n </div>\n -->\n <div class=\"editor-separator\"></div>\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"subSections\" [label]=\"'LAYOUT_BUILDER.SUB_SECTION_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"onSubSectionsChange($event)\"></pep-checkbox>\n <div class=\"split-area\">\n <pep-select [label]=\"'LAYOUT_BUILDER.SECTIONS_TITLE' | translate\" [value]=\"partsNumber\" [options]=\"partsNumberOptions\" \n (valueChange)=\"onPartsNumberChange($event)\" [emptyOption]=\"false\" [disabled]=\"!subSections\"></pep-select>\n <pep-select [label]=\"'LAYOUT_BUILDER.SPLIT_TITLE' | translate\" [value]=\"split || ''\" [options]=\"splitOptions\"\n (valueChange)=\"onSplitChange($event)\" [emptyOption]=\"false\" [disabled]=\"!subSections\"></pep-select>\n </div>\n </div>\n <div class=\"editor-separator\"></div>\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"collapseOnTablet\" [label]=\"'LAYOUT_BUILDER.COLLAPSE_ON_TABLET_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"onCollapseOnTabletChange($event)\"></pep-checkbox>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.COLLAPSE_ON_TABLET_DESCRIPTION' | translate)}}</span>\n </div>\n <div class=\"editor-separator\"></div>\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"fillHeight\" [label]=\"'LAYOUT_BUILDER.FILL_HEIGHT_SECTION_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"onFillHeightChange($event)\"></pep-checkbox>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.FILL_HEIGHT_SECTION_DESCRIPTION' | translate)}}</span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionEditorComponent } from './section-editor.component'\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [SectionEditorComponent],\n imports: [\n CommonModule,\n PepButtonModule,\n PepTextboxModule,\n PepSelectModule,\n PepCheckboxModule,\n TranslateModule.forChild()\n ],\n exports: [SectionEditorComponent]\n})\nexport class SectionEditorModule { }\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { CdkDragEnd, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, ChangeDetectorRef, ContentChild, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { OnInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BaseDestroyerDirective, PepCustomizationService, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { IEditor, ILayoutEditor, PepLayoutSizeType } from '../layout-builder.model';\nimport { PepLayoutBuilderService } from '../layout-builder.service';\n\n@Component({\n selector: 'pep-layout-editor',\n templateUrl: './layout-editor.component.html',\n styleUrls: ['./layout-editor.component.scss'],\n})\nexport class PepLayoutEditorComponent extends BaseDestroyerDirective implements OnInit, AfterViewInit {\n @ViewChild('topContentRef', { static: true }) _topContentRef!: ElementRef;\n @ViewChild('bottomContentRef', { static: true }) _bottomContentRef!: ElementRef;\n \n @ViewChild('availableBlocksContainer', { read: ElementRef }) availableBlocksContainer!: ElementRef;\n // @ViewChild('parametersDialogTemplate', { static: true, read: TemplateRef }) parametersDialogTemplate!: TemplateRef<any>;\n \n @Input() availableBlocksForDrag: Array<IPepDraggableItem> = [];\n\n private _hostObject!: ILayoutEditor;\n @Input()\n set hostObject(value: ILayoutEditor) {\n this._hostObject = value;\n\n // this.onLoadFlow = value.onLoadFlow;\n // this.onChangeFlow = value.onChangeFlow;\n this.isFullWidth = !value.maxWidth || value.maxWidth === 0;\n this.maxWidth = value.maxWidth;\n this.horizontalSpacing = this._hostObject.horizontalSpacing || 'md';\n this.verticalSpacing = this._hostObject.verticalSpacing || 'md';\n this.sectionsGap = this._hostObject.sectionsGap || 'md';\n this.columnsGap = this._hostObject.columnsGap || 'md';\n this.roundedCorners = this._hostObject.roundedCorners || 'none';\n\n // this.prepareFlowHostObject('load');\n // this.prepareFlowHostObject('change');\n }\n get hostObject(): ILayoutEditor {\n return this._hostObject;\n }\n\n @Output() hostObjectChange: EventEmitter<ILayoutEditor> = new EventEmitter<ILayoutEditor>();\n \n // private _onLoadFlow: any = {};\n // set onLoadFlow(value: any) {\n // this._onLoadFlow = value;\n // }\n // get onLoadFlow(): any {\n // return this._onLoadFlow;\n // }\n \n // private _onChangeFlow: any = {};\n // set onChangeFlow(value: any) {\n // this._onChangeFlow = value;\n // }\n // get onChangeFlow(): any {\n // return this._onChangeFlow;\n // }\n\n protected isFullWidth!: boolean;\n protected maxWidth!: number;\n protected horizontalSpacing: PepLayoutSizeType = 'md';\n protected verticalSpacing: PepLayoutSizeType = 'md';\n protected sectionsGap: PepLayoutSizeType = 'md';\n protected columnsGap: PepLayoutSizeType = 'md';\n protected roundedCorners: PepLayoutSizeType = 'none';\n\n // protected sizesGroupButtons = Array<ISpacingOption>();\n \n protected availableBlocksContainerId = PepLayoutBuilderService.AVAILABLE_BLOCKS_CONTAINER_ID;\n protected sectionsColumnsDropList = [];\n\n protected showTopContent = false;\n protected showBottomContent = false;\n\n // onLoadFlowHostObject;\n // onChangeFlowHostObject;\n \n constructor(\n public customizationService: PepCustomizationService,\n public layoutBuilderService: PepLayoutBuilderService,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-editor');\n }\n\n // private prepareFlowHostObject(pageFlowType: 'load' | 'change') {\n // const fields = {};\n \n // if (pageFlowType === 'load') {\n // this.onLoadFlowHostObject = {};\n // this.onLoadFlowHostObject['runFlowData'] = this.onLoadFlow;\n // this.onLoadFlowHostObject['fields'] = fields;\n // } else if (pageFlowType === 'change') {\n // this.onChangeFlowHostObject = {};\n // this.onChangeFlowHostObject['runFlowData'] = this.onChangeFlow;\n // this.onChangeFlowHostObject['fields'] = fields;\n // }\n // }\n\n private updateHostObject() {\n // this._hostObject.onLoadFlow = this.onLoadFlow;\n // this._hostObject.onChangeFlow = this.onChangeFlow;\n this._hostObject.maxWidth = this.isFullWidth ? 0 : this.maxWidth;\n this._hostObject.horizontalSpacing = this.horizontalSpacing;\n this._hostObject.verticalSpacing = this.verticalSpacing;\n this._hostObject.sectionsGap = this.sectionsGap;\n this._hostObject.columnsGap = this.columnsGap;\n this._hostObject.roundedCorners = this.roundedCorners === 'none' ? undefined : this.roundedCorners;\n\n // this.prepareFlowHostObject('load');\n // this.prepareFlowHostObject('change');\n\n this.hostObjectChange.emit(this.hostObject);\n }\n\n ngOnInit(): void {\n this.layoutBuilderService.sectionsColumnsDropListChange$.subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n }\n\n ngAfterViewInit(): void {\n if (this._topContentRef.nativeElement.children.length > 0) {\n this.showTopContent = true;\n }\n\n if (this._bottomContentRef.nativeElement.children.length > 0) {\n this.showBottomContent = true;\n }\n }\n\n onAddSectionClick(event: any) {\n this.layoutBuilderService.addSection();\n }\n\n isFullWidthChange(isChecked: boolean) {\n this.isFullWidth = isChecked;\n this.maxWidth = isChecked ? 0 : 960;\n this.updateHostObject();\n }\n\n onMaxWidthChange(maxWidth: string) {\n this.maxWidth = coerceNumberProperty(maxWidth, this.maxWidth);\n this.updateHostObject();\n }\n \n setColumnsHorizntalGap(key: string ){\n this.horizontalSpacing = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n \n setColumnsVerticalGap(key: string) {\n this.verticalSpacing = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n \n setSectionGap(key: string) {\n this.sectionsGap = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n\n setColumnsGap(key: string) {\n this.columnsGap = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n\n setRoundedCorners(key: string) {\n this.roundedCorners = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onBlockDragEnd(event);\n }\n\n // onLoadFlowChange(flowData: any) {\n // this.onLoadFlow = flowData;\n // this.updateHostObject();\n // }\n\n // onChangeFlowChange(flowData: any) {\n // this.onChangeFlow = flowData;\n // this.updateHostObject();\n // }\n}\n","<mat-tab-group #tabGroup class=\"layout-builder-editor-tabs\" animationDuration=\"0ms\">\n <mat-tab label=\"{{'LAYOUT_BUILDER.GENERAL' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div #topContentRef class=\"layout-builder-editor-group\">\n <ng-content select=\"[layout-editor-top-content]\"></ng-content>\n <div *ngIf=\"showTopContent\" class=\"editor-separator\"></div>\n </div>\n <div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.SECTIONS_TITLE' | translate}}</label>\n <pep-button class=\"add-section-button\" value=\"{{'LAYOUT_BUILDER.ADD_SECTION' | translate}}\" styleType=\"regular\" iconName=\"number_plus\" iconPosition=\"end\"\n (buttonClick)=\"onAddSectionClick($event)\"></pep-button>\n </div>\n <div class=\"editor-separator\"></div>\n <pep-draggable-items class=\"available-blocks\" [containerId]=\"availableBlocksContainerId\" [items]=\"availableBlocksForDrag\" [title]=\"'LAYOUT_BUILDER.BLOCKS_TITLE' | translate\"\n titleSizeType=\"xl\" titleType=\"with-bottom-border\" [showSearch]=\"true\" [dropAreaIds]=\"sectionsColumnsDropList\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n <div #bottomContentRef class=\"layout-builder-editor-group\">\n <div *ngIf=\"showBottomContent\" class=\"editor-separator\"></div>\n <ng-content select=\"[layout-editor-bottom-content]\"></ng-content>\n </div>\n </div>\n </mat-tab>\n <mat-tab label=\"{{'LAYOUT_BUILDER.DESIGN' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"isFullWidth\" [label]=\"'LAYOUT_BUILDER.FULL_WIDTH_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"isFullWidthChange($event)\"></pep-checkbox>\n <pep-textbox [label]=\"'LAYOUT_BUILDER.MAX_WIDTH_TITLE' | translate\" type=\"int\" [disabled]=\"isFullWidth\" [value]=\"maxWidth.toString()\" (valueChange)=\"onMaxWidthChange($event)\"></pep-textbox>\n </div>\n <div class=\"editor-separator\"></div>\n <!-- Spacing -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.SPACING_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SPACING_HORIZONTAL_TITLE' | translate\"\n [btnKey]=\"horizontalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsHorizntalGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.SPACING_VERTICAL_TITLE' | translate\"\n [btnKey]=\"verticalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsVerticalGap($event)\">\n </pep-group-buttons-settings>\n <div class=\"editor-separator\"></div>\n <!-- Gaps -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.GAPS_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SECTIONS_GAP_TITLE' | translate\"\n [btnKey]=\"sectionsGap?.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setSectionGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.COLUMNS_GAP_TITLE' | translate\"\n [btnKey]=\"columnsGap.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsGap($event)\">\n </pep-group-buttons-settings>\n <!-- Rounded Corners -->\n <!--\n <div class=\"editor-separator\"></div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.ROUNDED_CORNERS_TITLE' | translate}}</label><br>\n <label class=\"body-xs ellipsis\">{{'LAYOUT_BUILDER.BORDER_RADIUS_TITLE' | translate}}</label>\n <pep-group-buttons [buttons]=\"sizesGroupButtons\" [selectedButtonKey]=\"roundedCorners\" buttonsClass=\"ms regular\" viewType=\"toggle\"\n (buttonClick)=\"setRoundedCorners($event)\"></pep-group-buttons> -->\n </div>\n </mat-tab>\n</mat-tab-group>\n\n\n\n","import { MatTabsModule } from '@angular/material/tabs';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\nimport { HttpClientModule } from '@angular/common/http';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\nimport { OverlayModule} from '@angular/cdk/overlay';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepTextareaModule, } from '@pepperi-addons/ngx-lib/textarea';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { SectionEditorModule } from '../section-editor/section-editor.module';\nimport { PepColorModule } from '@pepperi-addons/ngx-lib/color';\nimport { PepImageModule } from '@pepperi-addons/ngx-lib/image';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { MatSliderModule } from '@angular/material/slider'\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepGroupButtonsSettingsModule } from '@pepperi-addons/ngx-composite-lib/group-buttons-settings';\n\n// import { PepManageParametersModule } from '@pepperi-addons/ngx-composite-lib/manage-parameters';\n// import { PepFlowPickerButtonModule } from '@pepperi-addons/ngx-composite-lib/flow-picker-button';\n\nimport { PepLayoutEditorComponent } from './layout-editor.component';\n\n@NgModule({\n declarations: [\n PepLayoutEditorComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n PepNgxLibModule,\n PepRemoteLoaderModule,\n PepSelectModule,\n PepTextboxModule,\n DragDropModule,\n OverlayModule,\n MatTabsModule,\n PepButtonModule,\n PepCheckboxModule,\n PepGroupButtonsModule,\n PepColorModule,\n PepImageModule,\n PepGroupButtonsSettingsModule,\n PepDraggableItemsModule,\n PepDialogModule,\n MatSliderModule,\n PepTextareaModule,\n // PepManageParametersModule,\n // PepFlowPickerButtonModule,\n SectionEditorModule,\n ],\n exports:[PepLayoutEditorComponent]\n})\nexport class PepLayoutEditorModule {\n constructor(\n // private pepIconRegistry: PepIconRegistry\n ) {\n // this.pepIconRegistry.registerIcons(pepIcons);\n }\n}\n","import { ElementRef, Renderer2, ViewChild, OnInit, Component, EventEmitter, Input, Output, HostListener } from '@angular/core';\nimport { BaseDestroyerDirective, PepAddonService, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepButton } from '@pepperi-addons/ngx-lib/button';\nimport { pepIconDeviceDesktop, pepIconDeviceMobile, pepIconDeviceTablet } from '@pepperi-addons/ngx-lib/icon';\nimport { IPepSideBarStateChangeEvent, PepSideBarComponent } from '@pepperi-addons/ngx-lib/side-bar';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\n\nimport { IEditor, ILayoutEditor, IPepLayoutSection, IPepLayoutView, ILayoutSectionEditor, IPepLayoutBlockAddedEvent } from './layout-builder.model';\nimport { PepLayoutBuilderService } from './layout-builder.service';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'pep-layout-builder',\n templateUrl: './layout-builder.component.html',\n styleUrls: ['./layout-builder.component.scss', './layout-builder.component.theme.scss'],\n})\nexport class PepLayoutBuilderComponent extends BaseDestroyerDirective implements OnInit {\n @ViewChild('layoutBuilderWrapper', { static: true }) layoutBuilderWrapper!: ElementRef;\n @ViewChild(PepSideBarComponent, { read: ElementRef }) private sideBarComponent!: ElementRef;\n \n private _availableBlocksForDrag: Array<IPepDraggableItem> = [];\n @Input() \n set availableBlocksForDrag(value: Array<IPepDraggableItem>) {\n this._availableBlocksForDrag = value;\n this.layoutBuilderService.setAvailableBlocksToDrag(value);\n }\n get availableBlocksForDrag(): Array<IPepDraggableItem> {\n return this._availableBlocksForDrag;\n }\n\n private _blocksLimitNumber = 0;\n @Input()\n set blocksLimitNumber(value: number) {\n this._blocksLimitNumber = coerceNumberProperty(value, 0);\n this.layoutBuilderService.setBlocksLimitNumber(this._blocksLimitNumber);\n }\n \n private _layoutEditorTitle = '';\n @Input()\n set layoutEditorTitle(value: string) {\n this._layoutEditorTitle = value;\n this.setLayoutEditorTitle() \n }\n get layoutEditorTitle(): string {\n return this._layoutEditorTitle;\n }\n \n @Output() backClick: EventEmitter<void> = new EventEmitter();\n @Output() editorChange: EventEmitter<IEditor> = new EventEmitter(); // blockKey\n @Output() blockAdded: EventEmitter<IPepLayoutBlockAddedEvent> = new EventEmitter();\n @Output() blocksRemoved: EventEmitter<string[]> = new EventEmitter();\n\n protected lockScreen = false;\n protected previewMode = false;\n protected currentEditor: IEditor | null = null;\n protected viewportWidth: number = 0;\n protected screenTypes!: Array<PepButton>;\n\n protected selectedScreenType!: DataViewScreenSize;\n \n constructor(\n private renderer: Renderer2,\n private hostElement: ElementRef,\n private translate: TranslateService,\n private layoutBuilderService: PepLayoutBuilderService,\n private pepAddonService: PepAddonService,\n ) {\n super();\n\n this.pepAddonService.setShellRouterData({ showSidebar: false, addPadding: false});\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-builder');\n this.layoutBuilderService.setEditMode(true);\n }\n\n private setScreenWidth(screenType: DataViewScreenSize) {\n this.layoutBuilderService.setScreenWidth(screenType);\n }\n\n private updateViewportWidth() {\n if (this.layoutBuilderWrapper?.nativeElement) {\n setTimeout(() => {\n this.viewportWidth = this.layoutBuilderWrapper.nativeElement.clientWidth;\n });\n }\n }\n \n private setLayoutEditorTitle() {\n if (this.currentEditor?.type === 'layout-builder' && this.layoutEditorTitle !== '') {\n this.currentEditor.title = this.layoutEditorTitle;\n }\n }\n\n private subscribeEvents() {\n /***********************************************************************************************/\n /* Internal Events - for code usage\n /***********************************************************************************************/\n\n this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n\n this.layoutBuilderService.lockScreenChange$.pipe(this.getDestroyer()).subscribe((lockScreen: any) => {\n this.lockScreen = lockScreen;\n });\n\n this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n const screenType = this.layoutBuilderService.getScreenType(size);\n this.selectedScreenType = screenType;\n });\n\n // For update the layout data\n this.layoutBuilderService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView: any) => {\n if (layoutView) {\n if (this.layoutBuilderWrapper?.nativeElement) {\n let maxWidth = coerceNumberProperty(layoutView.Layout.MaxWidth, 0);\n const maxWidthToSet = maxWidth === 0 ? '100%' : `${maxWidth}px`;\n this.renderer.setStyle(this.layoutBuilderWrapper.nativeElement, 'max-width', maxWidthToSet);\n this.updateViewportWidth();\n }\n }\n });\n\n this.layoutBuilderService.screenWidthChange$.pipe(this.getDestroyer()).subscribe((width: any) => {\n if (this.layoutBuilderWrapper?.nativeElement) {\n this.renderer.setStyle(this.layoutBuilderWrapper.nativeElement, 'width', width);\n this.updateViewportWidth();\n }\n });\n\n // Get the sections id's into sectionsColumnsDropList for the drag & drop.\n this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections: any) => {\n // Concat all results into one array.\n const sectionsColumnsDropList = [].concat(...sections.map((section: IPepLayoutSection) => {\n return section.Columns.map((column, index) => \n this.layoutBuilderService.getSectionColumnKey(section.Key, index.toString())\n )\n }));\n\n this.layoutBuilderService.setSectionsColumnsDropListChange(sectionsColumnsDropList);\n });\n\n\n /***********************************************************************************************/\n /* External Events - for raise to the client\n /***********************************************************************************************/\n\n // For update editor.\n this.layoutBuilderService.editorChange$.pipe(this.getDestroyer()).subscribe((editor: any) => {\n if (editor) {\n // Init the side bar scroll top to 0.\n if (this.sideBarComponent) {\n const sideLayout = this.sideBarComponent.nativeElement.querySelector('.side-layout');\n sideLayout?.scrollTo(0, 0);\n }\n \n this.currentEditor = editor;\n this.setLayoutEditorTitle();\n \n // Raise event to let the user set the block editor in the UI.\n this.editorChange.emit(editor);\n }\n });\n\n this.layoutBuilderService.blockAddedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event) {\n this.blockAdded.emit(event);\n }\n });\n\n this.layoutBuilderService.blocksRemovedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event?.length > 0) {\n this.blocksRemoved.emit(event);\n }\n });\n }\n\n ngOnInit() {\n // Get the first translation for load all translations.\n this.translate.get('LAYOUT_BUILDER.DESKTOP').subscribe((res) => {\n \n this.screenTypes = [\n { key: 'Landscape', value: this.translate.instant('LAYOUT_BUILDER.DESKTOP'), callback: () => this.setScreenWidth('Landscape'), iconName: pepIconDeviceDesktop.name, iconPosition: 'end' },\n { key: 'Tablet', value: this.translate.instant('LAYOUT_BUILDER.TABLET'), callback: () => this.setScreenWidth('Tablet'), iconName: pepIconDeviceTablet.name, iconPosition: 'end' },\n { key: 'Phablet', value: this.translate.instant('LAYOUT_BUILDER.MOBILE'), callback: () => this.setScreenWidth('Phablet'), iconName: pepIconDeviceMobile.name, iconPosition: 'end' }\n ];\n });\n \n this.subscribeEvents();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any): void {\n this.updateViewportWidth();\n }\n\n togglePreviewMode() {\n this.layoutBuilderService.changePreviewMode(!this.previewMode);\n this.updateViewportWidth();\n }\n\n onSidebarStateChange(event: IPepSideBarStateChangeEvent) {\n this.updateViewportWidth();\n }\n\n onLayoutEditorObjectChange(pageEditor: ILayoutEditor) {\n this.layoutBuilderService.updateLayoutFromEditor(pageEditor);\n }\n\n onSectionEditorObjectChange(sectionEditor: ILayoutSectionEditor) {\n this.layoutBuilderService.updateSectionFromEditor(sectionEditor);\n }\n\n onNavigateBackFromEditor() {\n if (!this.currentEditor || this.currentEditor?.type === 'layout-builder') {\n this.backClick.emit();\n } else {\n this.layoutBuilderService.navigateBackFromEditor();\n }\n }\n}\n","<div *ngIf=\"lockScreen\" class=\"cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing\"></div>\n\n<pep-page-layout [showShadow]=\"!previewMode && currentEditor !== null\" >\n <div pep-side-area *ngIf=\"!previewMode && currentEditor\" style=\"height: inherit;\">\n <pep-side-bar #sideBar [ignoreResize]=\"true\" (stateChange)=\"onSidebarStateChange($event)\">\n <div header-content class=\"side-bar-title\">\n <pep-button class=\"back-button\" sizeType=\"sm\" iconName=\"arrow_left_alt\" (buttonClick)=\"onNavigateBackFromEditor();\"></pep-button>\n <div class=\"title title-lg ellipsis\" [title]=\"currentEditor.title\">\n <span>{{ currentEditor.title }}</span>\n </div>\n </div>\n <div class=\"layout-builder-editor-wrapper\">\n <pep-layout-editor *ngIf=\"currentEditor.type === 'layout-builder'\" [availableBlocksForDrag]=\"availableBlocksForDrag\"\n [hostObject]=\"currentEditor.hostObject\" (hostObjectChange)=\"onLayoutEditorObjectChange($event)\"\n >\n <ng-container layout-editor-top-content>\n <ng-content select=\"[layout-editor-top-content]\"></ng-content>\n </ng-container>\n <ng-container layout-editor-bottom-content>\n <ng-content select=\"[layout-editor-bottom-content]\"></ng-content>\n </ng-container>\n </pep-layout-editor>\n \n <section-editor *ngIf=\"currentEditor.type === 'section'\" \n [hostObject]=\"currentEditor.hostObject\" (hostObjectChange)=\"onSectionEditorObjectChange($event)\"></section-editor>\n \n <div *ngIf=\"currentEditor.type === 'block'\" class=\"layout-builder-editor-container\">\n <ng-content select=\"[block-editor-content]\"></ng-content>\n </div>\n </div>\n </pep-side-bar>\n </div>\n <ng-container pep-main-area>\n <div class=\"main-area-container\" [ngClass]=\"{'preview-mode': previewMode }\">\n <div class=\"header-container\" >\n <ng-container *ngIf=\"!previewMode; then editorTitleTemplate; else previewTitleTemplate\"></ng-container>\n <ng-template #editorTitleTemplate>\n <div>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.VIEWPORT_WIDTH' | translate)}}:&nbsp;</span>\n <span class=\"body-xs\"><b>{{viewportWidth}}</b></span>\n </div>\n </ng-template>\n <ng-template #previewTitleTemplate>\n <div class=\"preview-title body-sm\">\n <span>{{('LAYOUT_BUILDER.PREVIEW_TITLE' | translate)}}</span>\n </div>\n </ng-template>\n\n <div class=\"header-group-btn\">\n <pep-group-buttons [buttons]=\"screenTypes\" [selectedButtonKey]=\"selectedScreenType\" sizeType=\"sm\" viewType=\"toggle\" >\n </pep-group-buttons>\n </div>\n\n <ng-container *ngIf=\"!previewMode; then editorButtonsTemplate; else previewButtonsTemplate\"></ng-container>\n <ng-template #editorButtonsTemplate>\n <div class=\"header-end\">\n <pep-button key='Preview' [value]=\"'ACTIONS.PREVIEW' | translate\" sizeType=\"sm\" classNames=\"pep-spacing-element\" (buttonClick)=\"togglePreviewMode()\"></pep-button>\n <ng-content select=\"[header-end-content]\"></ng-content>\n </div>\n </ng-template>\n <ng-template #previewButtonsTemplate>\n <a class=\"color-link body-sm\" (click)=\"togglePreviewMode()\" href=\"javascript:void(0)\">{{('LAYOUT_BUILDER.PREVIEW_CLICK_HERE' | translate)}}</a> \n </ng-template>\n </div>\n <div #layoutBuilderWrapper class=\"layout-builder-wrapper\" [ngClass]=\"{'limit-min-width': selectedScreenType === 'Landscape' }\">\n <ng-content select=\"[layout-content]\"></ng-content>\n <div *ngIf=\"!previewMode\" class=\"backdrop\" [ngClass]=\"{'show-backdrop': currentEditor?.type === 'section' || currentEditor?.type === 'block'}\"></div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepSizeDetectorModule } from '@pepperi-addons/ngx-lib/size-detector';\nimport { PepSkeletonLoaderModule } from '@pepperi-addons/ngx-lib/skeleton-loader';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepSideBarModule } from '@pepperi-addons/ngx-lib/side-bar';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\nimport { PepGroupButtonsSettingsModule } from '@pepperi-addons/ngx-composite-lib/group-buttons-settings';\n\nimport { PepHideInModule } from './hide-in/hide-in.module';\nimport { PepLayoutModule } from './layout/layout.module';\nimport { PepLayoutEditorModule } from './layout-editor/layout-editor.module';\nimport { SectionEditorModule } from './section-editor/section-editor.module';\n\nimport { PepLayoutBuilderService } from './layout-builder.service';\nimport { PepLayoutBuilderComponent } from './layout-builder.component';\n\n// import { SectionBlockModule } from './layout/section-block/section-block.module';\n\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconDeviceDesktop,\n pepIconDeviceTablet,\n pepIconDeviceMobile,\n} from '@pepperi-addons/ngx-lib/icon';\n\n@NgModule({\n declarations: [\n PepLayoutBuilderComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n // Material modules,\n MatCommonModule,\n MatTabsModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepDialogModule,\n PepIconModule,\n PepPageLayoutModule,\n PepSideBarModule,\n PepButtonModule,\n PepCheckboxModule,\n PepTextboxModule,\n PepSelectModule,\n PepSizeDetectorModule,\n PepGroupButtonsModule,\n PepSkeletonLoaderModule,\n PepDraggableItemsModule,\n PepGroupButtonsSettingsModule,\n PepHideInModule,\n PepLayoutModule,\n PepLayoutEditorModule,\n SectionEditorModule,\n // SectionBlockModule\n ],\n exports: [\n PepLayoutBuilderComponent,\n PepLayoutModule,\n ],\n providers: [PepLayoutBuilderService]\n})\nexport class PepLayoutBuilderModule { \n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconDeviceDesktop,\n pepIconDeviceTablet,\n pepIconDeviceMobile,\n ]);\n }\n}\n","import { PageBlockContainer, PageLayout, PageSection, PageSectionColumn, PageSizeType, SplitType } from \"@pepperi-addons/papi-sdk\";\nimport { IPepDraggableItem } from \"@pepperi-addons/ngx-lib/draggable-items\";\n\nexport type PepLayoutSizeType = PageSizeType;\n\nexport interface IPepLayout extends PageLayout {\n Sections: IPepLayoutSection[];\n VerticalSpacing?: PepLayoutSizeType;\n HorizontalSpacing?: PepLayoutSizeType;\n SectionsGap?: PepLayoutSizeType;\n ColumnsGap?: PepLayoutSizeType;\n}\nexport interface IPepLayoutSection extends PageSection { \n Columns: IPepLayoutSectionColumn[];\n ColumnsGap?: PepLayoutSizeType;\n}\nexport interface IPepLayoutSectionColumn extends PageSectionColumn {\n BlockContainer?: IPepLayoutBlockContainer;\n}\nexport interface IPepLayoutBlockContainer extends PageBlockContainer { \n DraggableItemKey: string,\n}\n\nexport interface IPepLayoutBlockAddedEvent {\n BlockKey: string,\n DraggableItem: IPepDraggableItem,\n}\n \nexport interface IPepLayoutView {\n // Id: string,\n Title: string,\n Layout: IPepLayout,\n}\n\nexport type LayoutEditorType = 'layout-builder' | 'section' | 'block';\n\nexport interface IEditor {\n id: string,\n title: string,\n type: LayoutEditorType,\n // remoteModuleOptions?: PepRemoteLoaderOptions,\n hostObject?: any\n}\n\nexport interface ILayoutEditor {\n // id: string,\n // pageName: string,\n // pageDescription: string,\n // parameters: IParamemeter[],\n // onLoadFlow: any,\n // onChangeFlow: any,\n maxWidth: number,\n horizontalSpacing?: PepLayoutSizeType,\n verticalSpacing?: PepLayoutSizeType,\n sectionsGap?: PepLayoutSizeType,\n columnsGap?: PepLayoutSizeType,\n roundedCorners?: PepLayoutSizeType,\n}\n\nexport interface ILayoutSectionEditor {\n id: string,\n sectionName: string,\n split: SplitType | undefined,\n height: number,\n collapseOnTablet: boolean,\n fillHeight: boolean\n}\n\n// export interface IBlockEditor {\n// id: string,\n// [key: string]: any\n// }","/*\n * Public API Surface of ngx-composite-lib/layout-builder\n */\nexport * from './layout-builder.module';\nexport * from './layout-builder.model';\nexport * from './layout-builder.service';\nexport * from './layout-builder.component';\nexport * from './layout/layout.module';\nexport * from './layout/layout.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i1.PepLayoutBuilderService","i4","i5","i6.SectionBlockComponent","i7.PepHideInComponent","i8","i2.PepLayoutBuilderService","i6","i7.SectionComponent","i7","i9","i10","i9.PepLayoutEditorComponent","i10.SectionEditorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-composite-lib-layout-builder.mjs","sources":["../../../projects/ngx-composite-lib/layout-builder/hide-in/hide-in.component.ts","../../../projects/ngx-composite-lib/layout-builder/hide-in/hide-in.component.html","../../../projects/ngx-composite-lib/layout-builder/hide-in/hide-in.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder-internal.service.ts","../../../projects/ngx-composite-lib/layout-builder/section-block/section-block.component.ts","../../../projects/ngx-composite-lib/layout-builder/section-block/section-block.component.html","../../../projects/ngx-composite-lib/layout-builder/section/section.component.ts","../../../projects/ngx-composite-lib/layout-builder/section/section.component.html","../../../projects/ngx-composite-lib/layout-builder/section-block/section-block.module.ts","../../../projects/ngx-composite-lib/layout-builder/section/section.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout/layout.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout/layout.component.html","../../../projects/ngx-composite-lib/layout-builder/layout/layout.module.ts","../../../projects/ngx-composite-lib/layout-builder/section-editor/section-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/section-editor/section-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/section-editor/section-editor.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-editor/layout-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout-editor/layout-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/layout-editor/layout-editor.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.component.html","../../../projects/ngx-composite-lib/layout-builder/layout-builder.service.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.module.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder.model.ts","../../../projects/ngx-composite-lib/layout-builder/public-api.ts","../../../projects/ngx-composite-lib/layout-builder/pepperi-addons-ngx-composite-lib-layout-builder.ts"],"sourcesContent":["import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\n\ninterface hideInItem {\n key: DataViewScreenSize,\n text: string,\n selected: boolean\n}\n\n@Component({\n selector: 'hide-in',\n templateUrl: './hide-in.component.html',\n styleUrls: ['./hide-in.component.scss', './hide-in.component.theme.scss'],\n})\nexport class PepHideInComponent implements OnInit {\n @Input() hideIn: DataViewScreenSize[] = [];\n\n @Output() hideInChange: EventEmitter<DataViewScreenSize[]> = new EventEmitter();\n @Output() menuOpened: EventEmitter<void> = new EventEmitter();\n @Output() menuClosed: EventEmitter<void> = new EventEmitter();\n\n menuItems!: Array<hideInItem>;\n\n constructor(\n private translate: TranslateService,\n ) { }\n\n async ngOnInit() {\n // Get the first translation for load all translations.\n const desktopTitle = await this.translate.get('LAYOUT_BUILDER.DESKTOP').toPromise();\n\n this.menuItems = [\n { key: 'Landscape', text: desktopTitle, selected: this.hideIn?.some(hideIn => hideIn === 'Landscape') },\n { key: 'Tablet', text: this.translate.instant('LAYOUT_BUILDER.TABLET'), selected: this.hideIn?.some(hideIn => hideIn === 'Tablet') },\n { key: 'Phablet', text: this.translate.instant('LAYOUT_BUILDER.MOBILE'), selected: this.hideIn?.some(hideIn => hideIn === 'Phablet') }\n ];\n }\n\n onItemClick(event: any, menuItem: hideInItem) {\n menuItem.selected = !menuItem.selected;\n\n const hideIn = this.menuItems.filter(item => item.selected).map(item => item.key);\n this.hideInChange.emit(hideIn);\n\n event.stopPropagation();\n \n return false;\n }\n\n onMenuOpened() {\n this.menuOpened.emit();\n }\n\n onMenuClosed() {\n this.menuClosed.emit();\n }\n}\n","\n<pep-button sizeType=\"xs\" iconName=\"system_view\" [matMenuTriggerFor]=\"menu\" (menuClosed)=\"onMenuClosed()\" (menuOpened)=\"onMenuOpened()\"\n class=\"badge-button\" [ngClass]=\"{ 'none': !hideIn || hideIn.length === 0}\"\n matBadge=\"{{ hideIn?.length }}\" matBadgePosition=\"after\" matBadgeSize=\"small\" \n></pep-button>\n\n<mat-menu #menu=\"matMenu\" class=\"hide-in-menu\">\n <div mat-menu-item class=\"title\" disabled>\n <span>{{('HIDE_IN.HIDE_IN_TITLE' | translate)}}</span>\n </div>\n <div mat-menu-item class=\"splitter\"></div>\n <ng-container *ngFor=\"let menuItem of menuItems\">\n <button mat-menu-item (click)=\"onItemClick($event, menuItem)\" title=\"{{ menuItem.text }}\">\n <mat-checkbox type=\"checkbox\" title=\"{{ menuItem.text }}\" class=\"md\"\n (change)=\"onItemClick($event, menuItem)\" [checked]=\"menuItem.selected\">\n <span class=\"pull-left flip title ellipsis\">{{ menuItem.text }}</span>\n </mat-checkbox>\n </button>\n </ng-container>\n</mat-menu>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PepHideInComponent } from './hide-in.component'\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { TranslateLoader, TranslateModule, TranslateStore } from '@ngx-translate/core';\n// import { PepAddonService, PepFileService, PepHttpService } from '@pepperi-addons/ngx-lib';\n\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconSystemView,\n} from '@pepperi-addons/ngx-lib/icon';\n\n@NgModule({\n declarations: [PepHideInComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n MatBadgeModule,\n MatCheckboxModule,\n PepButtonModule,\n PepCheckboxModule,\n PepIconModule,\n TranslateModule.forChild()\n // ({\n // loader: {\n // provide: TranslateLoader,\n // useFactory: (addonService: PepAddonService) => \n // PepAddonService.createMultiTranslateLoader(addonService, ['ngx-lib', 'ngx-composite-lib']),\n // deps: [PepAddonService]\n // }, isolate: false\n // }),\n ],\n exports: [PepHideInComponent]\n})\nexport class PepHideInModule { \n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconSystemView,\n ]);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { coerceNumberProperty } from \"@angular/cdk/coercion\";\nimport { CdkDragDrop, CdkDragEnd, CdkDragStart, copyArrayItem, moveItemInArray, transferArrayItem } from \"@angular/cdk/drag-drop\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { PepAddonService, PepGuid, PepHttpService, PepScreenSizeType, PepSessionService, PepUtilitiesService } from \"@pepperi-addons/ngx-lib\";\nimport { IPepDraggableItem } from \"@pepperi-addons/ngx-lib/draggable-items\";\nimport { DataViewScreenSize, ScreenSizeDataConfiguration } from \"@pepperi-addons/papi-sdk\";\nimport { PepSnackBarData, PepSnackBarService } from \"@pepperi-addons/ngx-lib/snack-bar\";\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { LayoutEditorType, IEditor, IPepLayoutBlockAddedEvent, ILayoutEditor, IPepLayoutSection, IPepLayoutSectionColumn, IPepLayoutView, ILayoutSectionEditor, PepLayoutSizeType, IPepLayoutBlockContainer } from \"./layout-builder.model\";\nimport { PepDialogData, PepDialogService } from \"@pepperi-addons/ngx-lib/dialog\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LayoutBuilderInternalService {\n static readonly AVAILABLE_BLOCKS_CONTAINER_ID = 'availableBlocks';\n static readonly MAIN_EDITOR_ID = 'main';\n\n private _defaultSectionTitle = '';\n \n private _blocksLimitNumber = 0;\n setBlocksLimitNumber(value: number) {\n this._blocksLimitNumber = value;\n }\n \n private _editorsBreadCrumb = Array<IEditor>();\n\n private _editMode: boolean = false;\n get editMode(): boolean {\n return this._editMode;\n }\n setEditMode(value: boolean) {\n this._editMode = value;\n this.setEditableState();\n }\n\n private _editableState: boolean = false;\n get editableState(): boolean {\n return this._editableState;\n }\n\n // This subject is for the screen size change events.\n private _screenSizeSubject: BehaviorSubject<PepScreenSizeType> = new BehaviorSubject<PepScreenSizeType>(PepScreenSizeType.XL);\n get screenSizeChange$(): Observable<PepScreenSizeType> {\n return this._screenSizeSubject.asObservable().pipe(distinctUntilChanged());\n }\n \n // This subject is for demostrate the container size (Usage only in edit mode).\n private _screenWidthSubject: BehaviorSubject<string> = new BehaviorSubject<string>('100%');\n get screenWidthChange$(): Observable<string> {\n return this._screenWidthSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for load the current editor (Usage only in edit mode).\n private _editorSubject: BehaviorSubject<IEditor | null> = new BehaviorSubject<IEditor | null>(null);\n get editorChange$(): Observable<IEditor | null> {\n return this._editorSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This is the sections columns drop list subject.\n private _sectionsColumnsDropListSubject: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\n get sectionsColumnsDropListChange$(): Observable<any[]> {\n return this._sectionsColumnsDropListSubject.asObservable();\n }\n\n // This is the sections subject (a pare from the layout view object)\n private _sectionsViewSubject: BehaviorSubject<IPepLayoutSection[]> = new BehaviorSubject<IPepLayoutSection[]>([]);\n get sectionsChange$(): Observable<IPepLayoutSection[]> {\n return this._sectionsViewSubject.asObservable();\n // (prevSections, nextSections) => JSON.stringify(prevSections) === JSON.stringify(nextSections)));\n }\n\n // This subject is for layout view change.\n private _layoutViewSubject: BehaviorSubject<IPepLayoutView | null> = new BehaviorSubject<IPepLayoutView | null>(null);\n get layoutViewChange$(): Observable<IPepLayoutView | null> {\n return this._layoutViewSubject.asObservable().pipe(filter(layout => !!layout));\n }\n\n // This subject is for edit mode when block is dragging now or not.\n private _draggingBlockKey: BehaviorSubject<string> = new BehaviorSubject('');\n get draggingBlockKey(): Observable<string> {\n return this._draggingBlockKey.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for edit mode when section is dragging now or not.\n private _draggingSectionKey: BehaviorSubject<string> = new BehaviorSubject('');\n get draggingSectionKey(): Observable<string> {\n return this._draggingSectionKey.asObservable().pipe(distinctUntilChanged());\n }\n\n // This subject is for lock or unlock the screen (Usage only in edit mode).\n private _lockScreenSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n get lockScreenChange$(): Observable<boolean> {\n return this._lockScreenSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This is for control the preview mode (for load the blocks with the CPI events) \n private _previewModeSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n get previewModeChange$(): Observable<boolean> {\n return this._previewModeSubject.asObservable().pipe(distinctUntilChanged());\n }\n\n // This is for editor mode for block added.\n private _blockAddedEventSubject = new BehaviorSubject<IPepLayoutBlockAddedEvent | null>(null);\n get blockAddedEventSubject$(): Observable<IPepLayoutBlockAddedEvent | null> {\n return this._blockAddedEventSubject.asObservable();\n }\n // This is for editor mode for blocks removed.\n private _blocksRemovedEventSubject = new BehaviorSubject<string[]>([]);\n get blocksRemovedEventSubject$(): Observable<string[]> {\n return this._blocksRemovedEventSubject.asObservable();\n }\n\n // This subject is for skeleton.\n private _showSkeletonSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n get showSkeletonChange$(): Observable<boolean> {\n return this._showSkeletonSubject.asObservable().pipe(distinctUntilChanged());\n }\n \n // This subjects is for load the available blocks to drag into map for better performance.\n private _availableBlocksForDragMap = new Map<string, IPepDraggableItem>();\n get availableBlocksForDragMap(): ReadonlyMap<string, IPepDraggableItem> {\n return this._availableBlocksForDragMap;\n }\n private _availableBlocksForDragMapSubject = new BehaviorSubject<ReadonlyMap<string, IPepDraggableItem>>(this.availableBlocksForDragMap);\n get availableBlocksForDragMapChange$(): Observable<ReadonlyMap<string, IPepDraggableItem>> {\n return this._availableBlocksForDragMapSubject.asObservable();\n }\n\n constructor(\n protected translate: TranslateService,\n protected dialogService: PepDialogService,\n ) {\n //\n this._defaultSectionTitle = this.translate.instant('LAYOUT_BUILDER.SECTION');\n }\n \n private setEditableState() {\n this._editableState = this.editMode && !this._previewModeSubject.getValue();\n }\n\n private notifyLayoutViewChange(layoutViewToUpdate: IPepLayoutView | null) {\n if (layoutViewToUpdate) {\n if (this.editMode) {\n this.updateLayoutEditorProperties(layoutViewToUpdate);\n }\n\n // Update the layout for the view.\n this._layoutViewSubject.next(layoutViewToUpdate);\n \n // Update the sections for the view.\n this._sectionsViewSubject.next(layoutViewToUpdate?.Layout.Sections || []);\n }\n }\n\n private notifyBlockAdded(blockAddedEventData: IPepLayoutBlockAddedEvent) {\n // Notify that the block is added (to raise the event for the client).\n this._blockAddedEventSubject.next(blockAddedEventData);\n }\n\n private notifyBlocksRemoved(keys: string[] | undefined) {\n if (keys) {\n // Notify that the blocks are removed (to raise the event for the client).\n this._blocksRemovedEventSubject.next(keys);\n }\n }\n\n private notifyEditorChange(editor: IEditor | null) {\n this._editorSubject.next(editor);\n }\n\n private notifyAvailableBlocksForDragMapChange() {\n this._availableBlocksForDragMapSubject.next(this.availableBlocksForDragMap);\n }\n\n private notifyPreviewModeChange(value: boolean) {\n this._previewModeSubject.next(value);\n this.setEditableState();\n }\n\n private notifyLockScreen(value: boolean) {\n this._lockScreenSubject.next(value);\n }\n\n private notifySectionsColumnsDropListChange(sectionsColumnsDropList: any[]) {\n this._sectionsColumnsDropListSubject.next(sectionsColumnsDropList);\n }\n\n private updateLayoutEditorProperties(layoutView: IPepLayoutView) {\n if (this._editorsBreadCrumb[0]) {\n const layoutEditor: ILayoutEditor = {\n maxWidth: layoutView?.Layout.MaxWidth || 0,\n verticalSpacing: layoutView?.Layout.VerticalSpacing,\n horizontalSpacing: layoutView?.Layout.HorizontalSpacing,\n sectionsGap: layoutView?.Layout.SectionsGap,\n columnsGap: layoutView?.Layout.ColumnsGap,\n // roundedCorners: layoutView?.layout.\n };\n \n this._editorsBreadCrumb[0].hostObject = layoutEditor;\n }\n }\n\n private loadDefaultEditor(layoutView: IPepLayoutView) {\n this._editorsBreadCrumb = new Array<IEditor>();\n\n if (layoutView) {\n this._editorsBreadCrumb.push({\n id: LayoutBuilderInternalService.MAIN_EDITOR_ID,\n type : 'layout-builder',\n title: layoutView.Title || this.translate.instant('LAYOUT_BUILDER.DEFAULT_TITLE'),\n // hostObject: {} // Updates in updateLayoutEditorProperties function above.\n });\n\n this.updateLayoutEditorProperties(layoutView);\n this.notifyEditorChange(this._editorsBreadCrumb[0]);\n } else {\n this.notifyEditorChange(null);\n }\n }\n\n private changeCurrentEditor() {\n if (this._editorsBreadCrumb.length > 0) {\n this.notifyEditorChange(this._editorsBreadCrumb[this._editorsBreadCrumb.length - 1]);\n }\n }\n\n private getEditorByType(editorType: LayoutEditorType, id: string): IEditor | null {\n // Build editor object.\n let editor: IEditor | null = null;\n\n if (editorType === 'section') {\n editor = this.getSectionEditor(id);\n } else if (editorType === 'block') {\n editor = this.getBlockEditor(id);\n }\n\n return editor;\n }\n\n private getBlockEditor(blockKey: string): IEditor {\n const blockContainer = this.getBlockContainerByBlockKey(blockKey);\n const defaultTitle = this.translate.instant('LAYOUT_BUILDER.NO_TITLE')\n let blockTitle = defaultTitle;\n\n if (blockContainer) {\n blockTitle = this.availableBlocksForDragMap?.get(blockContainer?.DraggableItemKey)?.title || defaultTitle;\n }\n \n return {\n id: blockKey,\n type: 'block',\n title: blockTitle,\n // remoteModuleOptions: remoteLoaderOptions,\n hostObject: {} // JSON.parse(JSON.stringify(hostObject))\n }\n }\n\n private getSectionEditorTitle(section: IPepLayoutSection, sectionIndex: number): string {\n return section.Name || `${this._defaultSectionTitle} ${sectionIndex + 1}`;\n }\n\n private getSectionEditor(sectionId: string): IEditor | null {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const sectionIndex = sections.findIndex(section => section.Key === sectionId);\n\n if (sectionIndex >= 0) {\n let section = sections[sectionIndex];\n const sectionEditor: ILayoutSectionEditor = {\n id: section.Key,\n sectionName: section.Name || '',\n split: section.Split || undefined,\n height: section.Height || 0,\n collapseOnTablet: section.CollapseOnTablet ?? false,\n fillHeight: section.FillHeight ?? false\n }\n\n return {\n id: sectionId,\n type: 'section',\n title: this.getSectionEditorTitle(section, sectionIndex),\n hostObject: sectionEditor\n }\n } else {\n return null;\n }\n }\n\n private getSectionColumnByIdForEditor(sectionColumnId: string): IPepLayoutSectionColumn | null {\n let currentColumn = null;\n\n // Get the section and column array by the pattern of the section column key.\n const sectionColumnPatternSeparator = this.getSectionColumnKey();\n const sectionColumnArr = sectionColumnId.split(sectionColumnPatternSeparator);\n\n if (sectionColumnArr.length === 2) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n // Get the section id to get the section index.\n const sectionId = sectionColumnArr[0];\n const sectionIndex = sections.findIndex(section => section.Key === sectionId);\n // Get the column index.\n const columnIndex = coerceNumberProperty(sectionColumnArr[1], -1);\n if (sectionIndex >= 0 && columnIndex >= 0) {\n currentColumn = sections[sectionIndex].Columns[columnIndex];\n }\n }\n\n return currentColumn;\n }\n\n // private setSectionsColumnsGap(layoutView: IPepLayoutView) {\n // if (layoutView?.Layout?.Sections) {\n // for (let index = 0; index < layoutView.Layout.Sections.length; index++) {\n // const section = layoutView.Layout.Sections[index];\n // section.ColumnsGap = layoutView.Layout.ColumnsGap;\n // }\n // }\n // }\n\n private getCssScreenWidh(screenType: DataViewScreenSize): string {\n let widthToSet = '100%';\n\n if (screenType === 'Tablet') {\n widthToSet = '720';\n } else if (screenType === 'Phablet') {\n widthToSet = '360';\n }\n\n return widthToSet;\n }\n \n private getBlockContainerByBlockKey(blockKey: string): IPepLayoutBlockContainer | undefined {\n let blockContainerToFind: IPepLayoutBlockContainer | undefined = undefined;\n\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n for (let sectionIndex = 0; sectionIndex < sections.length; sectionIndex++) {\n const section = sections[sectionIndex];\n\n // Get the block container.\n const columnIndex = section.Columns.findIndex(column => column.BlockContainer?.BlockKey === blockKey);\n if (columnIndex > -1) {\n blockContainerToFind = section.Columns[columnIndex].BlockContainer\n break;\n }\n }\n\n return blockContainerToFind;\n }\n \n private getBlocksNumber(): number {\n let blocksNumber = 0;\n const sections = this._layoutViewSubject.getValue()?.Layout.Sections || [];\n\n for (let index = 0; index < sections.length; index++) {\n const section = sections[index];\n \n for (let columnIndex = 0; columnIndex < section.Columns.length; columnIndex++) {\n const column = section.Columns[columnIndex];\n if (column.BlockContainer && column.BlockContainer.BlockKey?.length > 0) {\n blocksNumber++;\n }\n }\n }\n\n return blocksNumber;\n }\n\n private changeCursorOnDragStart() {\n document.body.classList.add('inheritCursors');\n document.body.style.cursor = 'grabbing';\n }\n\n private changeCursorOnDragEnd() {\n document.body.classList.remove('inheritCursors');\n document.body.style.cursor = 'unset';\n }\n\n \n /***********************************************************************************************/\n /* Public functions\n /***********************************************************************************************/\n\n setSectionsColumnsDropListChange(sectionsColumnsDropList: any[]) {\n this.notifySectionsColumnsDropListChange(sectionsColumnsDropList);\n }\n\n setLockScreen(value: boolean) {\n this.notifyLockScreen(value);\n }\n\n changePreviewMode(value: boolean) {\n this.notifyPreviewModeChange(value);\n }\n\n setAvailableBlocksToDrag(availableBlocksForDrag: Array<IPepDraggableItem>) {\n this._availableBlocksForDragMap.clear();\n availableBlocksForDrag.forEach(block => {\n this._availableBlocksForDragMap.set(block.data.key, block);\n });\n\n this.notifyAvailableBlocksForDragMapChange();\n }\n\n getCurrentScreenType(): DataViewScreenSize {\n return this.getScreenType(this._screenSizeSubject.getValue());\n }\n\n getScreenType(size: PepScreenSizeType): DataViewScreenSize {\n const screenType: DataViewScreenSize =\n size < PepScreenSizeType.MD ? 'Landscape' :\n (size === PepScreenSizeType.MD || size === PepScreenSizeType.SM ? 'Tablet' : 'Phablet');\n\n return screenType;\n }\n\n getSectionColumnKey(sectionKey: string = '', index: string = '') {\n return `${sectionKey}_column_${index}`;\n }\n\n getIsHidden(hideIn: DataViewScreenSize[] | undefined, currentScreenType: DataViewScreenSize) {\n return (hideIn && hideIn?.length > 0) ? hideIn.some(hi => hi === currentScreenType) : false;\n }\n\n navigateToEditor(editorType: LayoutEditorType, id: string): boolean {\n let success = false;\n\n // Cannot navigate into 'layout-builder' because this is first and const in the editorsBreadCrumbs.\n if (editorType !== 'layout-builder' && id?.length > 0) {\n // Check which editor we have now\n const currentEditor = this._editorsBreadCrumb[this._editorsBreadCrumb.length - 1];\n\n // Only if it's another editor.\n if(currentEditor.id !== id) {\n if (currentEditor.type !== 'layout-builder') {\n // Always pop the last and insert the current.\n this._editorsBreadCrumb.pop();\n }\n\n let editor = this.getEditorByType(editorType, id);\n\n if (editor) {\n this._editorsBreadCrumb.push(editor);\n this.changeCurrentEditor();\n success = true;\n } else {\n success = false;\n }\n }\n }\n\n return success;\n }\n\n navigateBackFromEditor() {\n // Keep the layout builder editor.\n if (this._editorsBreadCrumb.length > 1) {\n // Maybe we want to compare the last editor for validation ?\n const lastEditor = this._editorsBreadCrumb.pop();\n this.changeCurrentEditor();\n }\n }\n\n updateLayoutFromEditor(editorData: ILayoutEditor) {\n const layoutView = this._layoutViewSubject.getValue();\n\n if (layoutView) {\n layoutView.Layout.MaxWidth = editorData.maxWidth;\n layoutView.Layout.HorizontalSpacing = editorData.horizontalSpacing;\n layoutView.Layout.VerticalSpacing = editorData.verticalSpacing;\n layoutView.Layout.SectionsGap = editorData.sectionsGap;\n layoutView.Layout.ColumnsGap = editorData.columnsGap;\n // layoutView.layout.RoundedCorners = editorData.roundedCorners;\n\n // this.setSectionsColumnsGap(layoutView);\n \n this.notifyLayoutViewChange(layoutView);\n }\n }\n \n updateSectionFromEditor(sectionData: ILayoutSectionEditor) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const sectionIndex = sections.findIndex(section => section.Key === sectionData.id);\n\n // Update section details.\n if (sectionIndex >= 0) {\n const blocksIdsToRemove = [];\n\n const currentSection = sections[sectionIndex];\n currentSection.Name = sectionData.sectionName;\n currentSection.Split = sectionData.split;\n currentSection.Height = sectionData.height;\n currentSection.CollapseOnTablet = sectionData.collapseOnTablet;\n currentSection.FillHeight = sectionData.fillHeight;\n\n // Get the new columns number from currentSection.Split, if its undefined put a default 1.\n const newColumnsLength = currentSection.Split?.split(' ').length || 1;\n if (newColumnsLength > currentSection.Columns.length) {\n while (newColumnsLength > currentSection.Columns.length) {\n currentSection.Columns.push({});\n }\n } else if (newColumnsLength < currentSection.Columns.length) {\n while (newColumnsLength < currentSection.Columns.length) {\n const colunm = currentSection.Columns.pop();\n // If there is block in this column delete it.\n if (colunm && colunm.BlockContainer) {\n blocksIdsToRemove.push(colunm.BlockContainer.BlockKey);\n }\n }\n }\n\n // Update editor title\n const currentEditor = this._editorSubject.getValue();\n if (currentEditor && currentEditor.type === 'section' && currentEditor.id === currentSection.Key) {\n const title = this.getSectionEditorTitle(currentSection, sectionIndex);\n currentEditor.title = title;\n this.notifyEditorChange(currentEditor);\n }\n\n // Update sections change.\n this.notifyLayoutViewChange(layoutView);\n\n // If there are blocks to remove, notify the blocks removed.\n if (blocksIdsToRemove.length > 0) {\n this.notifyBlocksRemoved(blocksIdsToRemove);\n }\n }\n }\n\n addSection(section: IPepLayoutSection | null = null) {\n // Create new section\n if (!section) {\n section = {\n Key: PepGuid.newGuid(),\n Columns: [{}], // Add empty section column\n Hide: []\n }\n }\n\n // Add the new section to layout view.\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n sections.push(section);\n this.notifyLayoutViewChange(layoutView);\n }\n\n removeSection(sectionId: string) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const index = sections.findIndex(section => section.Key === sectionId);\n if (index > -1) {\n // Get the blocks id's to remove.\n const blocksIdsToRemove: any = sections[index].Columns.map(column => column?.BlockContainer?.BlockKey);\n\n // Remove section.\n sections.splice(index, 1);\n this.notifyLayoutViewChange(layoutView);\n\n // If there are blocks to remove, notify the blocks removed.\n if (blocksIdsToRemove.length > 0) {\n this.notifyBlocksRemoved(blocksIdsToRemove)\n }\n }\n }\n\n hideSection(sectionId: string, hideIn: DataViewScreenSize[]) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n const index = sections.findIndex(section => section.Key === sectionId);\n if (index > -1) {\n sections[index].Hide = hideIn;\n this.notifyLayoutViewChange(layoutView);\n }\n }\n\n onSectionDropped(event: CdkDragDrop<any[]>) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n moveItemInArray(sections, event.previousIndex, event.currentIndex);\n this.notifyLayoutViewChange(layoutView);\n }\n\n onSectionDragStart(event: CdkDragStart) {\n this.changeCursorOnDragStart();\n this._draggingSectionKey.next(event.source.data);\n }\n\n onSectionDragEnd(event: CdkDragEnd) {\n this.changeCursorOnDragEnd();\n this._draggingSectionKey.next('');\n }\n\n removeBlockFromSection(blockId: string) {\n let blockRemoved = false;\n\n // Remove the block from section column.\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n for (let sectionIndex = 0; sectionIndex < sections.length; sectionIndex++) {\n const section = sections[sectionIndex];\n\n // Remove the block container.\n const columnIndex = section.Columns.findIndex(column => column.BlockContainer?.BlockKey === blockId);\n if (columnIndex > -1) {\n delete section.Columns[columnIndex].BlockContainer;\n this.notifyLayoutViewChange(layoutView);\n blockRemoved = true;\n\n break;\n }\n }\n\n // If the block was removed, notify the block removed.\n if (blockRemoved) {\n this.notifyBlocksRemoved([blockId]);\n }\n }\n\n hideBlock(sectionId: string, blockId: string, hideIn: DataViewScreenSize[]) {\n const layoutView = this._layoutViewSubject.getValue();\n const sections = layoutView?.Layout.Sections || [];\n \n const index = sections.findIndex(section => section.Key === sectionId);\n if (index > -1) {\n const columnIndex = sections[index].Columns.findIndex(column => column.BlockContainer?.BlockKey === blockId);\n if (columnIndex > -1) {\n const blockContainer = sections[index].Columns[columnIndex].BlockContainer;\n if (blockContainer) {\n blockContainer.Hide = hideIn;\n this.notifyLayoutViewChange(layoutView);\n }\n }\n }\n }\n\n onBlockDropped(event: CdkDragDrop<IPepLayoutSectionColumn, any, any>, sectionId: string) {\n const layoutView = this._layoutViewSubject.getValue();\n\n if (event.previousContainer.id === LayoutBuilderInternalService.AVAILABLE_BLOCKS_CONTAINER_ID) {\n // Validate if blocks number allow.\n if (this._blocksLimitNumber > 0 && this.getBlocksNumber() >= this._blocksLimitNumber) {\n const data = new PepDialogData({\n title: this.translate.instant('MESSAGES.DIALOG_NOTICE_TITLE'),\n content: this.translate.instant('LAYOUT_BUILDER.BLOCKS_COUNT_LIMIT_MESSAGE'),\n });\n\n this.dialogService.openDefaultDialog(data);\n } else {\n // Get the block relation (previousContainer.data is IPepDraggableItem and inside we have AvailableBlock object).\n const draggableItem: IPepDraggableItem = event.previousContainer.data[event.previousIndex] as IPepDraggableItem;\n\n if (draggableItem) {\n // lock the screen untill the editor will be loaded.\n // this._lockScreenSubject.next(true);\n\n // Get the column.\n const currentColumn = this.getSectionColumnByIdForEditor(event.container.id);\n\n // Set the block key in the section block only if there is a blank column.\n if (currentColumn && !currentColumn.BlockContainer) {\n // Generate the block uuid.\n const blockKey = PepGuid.newGuid();\n\n currentColumn.BlockContainer = {\n BlockKey: blockKey,\n DraggableItemKey: draggableItem.data.key,\n };\n\n // Here we update the layout view cause the layout is updated.\n this.notifyLayoutViewChange(layoutView);\n\n // Raise block added event.\n const blockAddedEventData: IPepLayoutBlockAddedEvent = {\n BlockKey: blockKey,\n DraggableItem: draggableItem,\n }\n this.notifyBlockAdded(blockAddedEventData);\n\n // Navigate to the block editor.\n this.navigateToEditor('block', blockKey);\n }\n } else {\n console.log(\"draggableItem is not a IPepDraggableItem type\");\n }\n }\n } else {\n // If the block moved between columns in the same section or between different sections but not in the same column.\n if (event.container.id !== event.previousContainer.id) {\n // Get the column.\n const currentColumn = this.getSectionColumnByIdForEditor(event.container.id);\n // Get the previous column.\n const previuosColumn = this.getSectionColumnByIdForEditor(event.previousContainer.id);\n\n if (currentColumn && previuosColumn) {\n currentColumn.BlockContainer = previuosColumn.BlockContainer;\n delete previuosColumn.BlockContainer;\n this.notifyLayoutViewChange(layoutView);\n }\n }\n }\n }\n\n onBlockDragStart(event: CdkDragStart) {\n this.changeCursorOnDragStart();\n // Take the block key if exist, else take the available block key (relation key).\n const blockKey = event.source.data?.BlockKey || event.source.data?.Key;\n this._draggingBlockKey.next(blockKey);\n }\n\n onBlockDragEnd(event: CdkDragEnd) {\n this.changeCursorOnDragEnd();\n this._draggingBlockKey.next('');\n }\n \n doesColumnContainBlock(sectionId: string, columnIndex: number): boolean {\n let res = false;\n const layoutView = this._layoutViewSubject.getValue();\n const section = layoutView?.Layout.Sections.find(section => section.Key === sectionId);\n\n if (section && columnIndex >= 0 && section.Columns.length > columnIndex) {\n res = !!section.Columns[columnIndex].BlockContainer;\n }\n\n return res;\n }\n\n setScreenWidth(screenType: DataViewScreenSize) {\n const value = this.getCssScreenWidh(screenType)\n\n let width = coerceNumberProperty(value, 0);\n if (width === 0) {\n this._screenWidthSubject.next('100%');\n this._screenSizeSubject.next(PepScreenSizeType.XL);\n } else {\n this._screenWidthSubject.next(`${width}px`);\n\n // Change the size according the width.\n if (width >= 1920) {\n this._screenSizeSubject.next(PepScreenSizeType.XL);\n } else if (width >= 1280 && width < 1920) {\n this._screenSizeSubject.next(PepScreenSizeType.LG);\n } else if (width >= 960 && width < 1280) {\n this._screenSizeSubject.next(PepScreenSizeType.MD);\n } else if (width >= 600 && width < 960) {\n this._screenSizeSubject.next(PepScreenSizeType.SM);\n } else if (width < 600) {\n this._screenSizeSubject.next(PepScreenSizeType.XS);\n }\n }\n }\n\n showSkeleton(show: boolean) {\n this._showSkeletonSubject.next(show);\n }\n \n loadLayoutBuilder(layoutView: IPepLayoutView): void {\n if (this.editMode) {\n // Load the layout editor.\n this.loadDefaultEditor(layoutView);\n\n // Set the columns gap of the sections.\n // this.setSectionsColumnsGap(layoutView);\n }\n\n // Load only the layout view.\n this.notifyLayoutViewChange(layoutView);\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef } from '@angular/core';\nimport { CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragStart } from '@angular/cdk/drag-drop';\n\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\nimport { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepRemoteLoaderOptions } from '@pepperi-addons/ngx-lib/remote-loader';\nimport { LayoutBuilderInternalService } from '../layout-builder-internal.service';\nimport { IPepLayoutBlockContainer } from '../layout-builder.model';\n\n@Component({\n selector: 'section-block',\n templateUrl: './section-block.component.html',\n styleUrls: ['./section-block.component.scss', './section-block.component.theme.scss']\n})\nexport class SectionBlockComponent extends BaseDestroyerDirective implements OnInit {\n \n @Input() blockTemplate: TemplateRef<any> | undefined;\n @Input() sectionKey: string = '';\n @Input() sectionHeight: string = '';\n @Input() isMainEditorState = false;\n @Input() editable = false;\n @Input() active = false;\n \n private _blockContainer: IPepLayoutBlockContainer | undefined;\n @Input()\n set blockContainer(value: IPepLayoutBlockContainer | undefined) {\n this._blockContainer = value;\n if (this._blockContainer) {\n this.availableBlock = this.layoutBuilderService.availableBlocksForDragMap?.get(this._blockContainer?.DraggableItemKey);\n }\n \n this.setIfHideForCurrentScreenType();\n }\n get blockContainer(): IPepLayoutBlockContainer | undefined {\n return this._blockContainer;\n }\n\n private _screenType!: DataViewScreenSize;\n @Input()\n set screenType(value: DataViewScreenSize) {\n this._screenType = value;\n this.setIfHideForCurrentScreenType();\n }\n get screenType(): DataViewScreenSize {\n return this._screenType;\n }\n \n @Output() dragExited: EventEmitter<CdkDragExit> = new EventEmitter();\n @Output() dragEntered: EventEmitter<CdkDragEnter> = new EventEmitter();\n\n protected hideForCurrentScreenType = false;\n // protected remoteLoaderOptions: PepRemoteLoaderOptions;\n protected availableBlock: IPepDraggableItem | undefined;\n \n constructor(\n private layoutBuilderService: LayoutBuilderInternalService,\n ) {\n super();\n }\n \n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.blockContainer ? \n this.layoutBuilderService.getIsHidden(this.blockContainer.Hide, this.screenType) : false;\n }\n \n ngOnInit(): void {\n // \n this.layoutBuilderService.availableBlocksForDragMapChange$.pipe(this.getDestroyer()).subscribe((availableBlocksForDragMap) => {\n if (availableBlocksForDragMap && this.blockContainer) {\n this.availableBlock = (availableBlocksForDragMap as ReadonlyMap<string, IPepDraggableItem>).get(this.blockContainer.DraggableItemKey);\n }\n });\n }\n\n onEditBlockClick() {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderService.navigateToEditor('block', this.blockContainer.BlockKey);\n }\n }\n\n onRemoveBlockClick() {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderService.removeBlockFromSection(this.blockContainer.BlockKey);\n }\n }\n\n onHideBlockChange(hideIn: DataViewScreenSize[]) {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderService.hideBlock(this.sectionKey, this.blockContainer.BlockKey, hideIn);\n this.setIfHideForCurrentScreenType();\n }\n }\n\n // onBlockLoad(event: any) {\n // this.layoutBuilderService.updateBlockLoaded(this.blockContainer.BlockKey);\n // }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onBlockDragEnd(event);\n }\n\n onDragExited(event: CdkDragExit) {\n this.dragExited.emit(event);\n }\n\n onDragEntered(event: CdkDragEnter) {\n this.dragEntered.emit(event);\n }\n}\n","<div *ngIf=\"blockContainer?.BlockKey && (editable || !hideForCurrentScreenType)\" \n class=\"section-block-container\"\n [ngClass]=\"{ 'editable-state': editable, 'block-hidden-state': hideForCurrentScreenType, 'active-block': active }\"\n cdkDrag [cdkDragData]=\"blockContainer\" [cdkDragDisabled]=\"!editable || !isMainEditorState\" \n (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\"\n (cdkDragExited)=\"onDragExited($event)\" (cdkDragEntered)=\"onDragEntered($event)\">\n \n <pep-draggable-item *ngIf=\"editable && isMainEditorState\" cdkDragHandle style=\"cursor: grab;\"\n class=\"block-toolbar\" [title]=\"availableBlock?.title || blockContainer?.BlockKey || ''\" >\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveBlockClick();\"></pep-button>\n <!-- <hide-in [hideIn]=\"blockContainer.Hide\" (hideInChange)=\"onHideBlockChange($event)\"></hide-in> -->\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditBlockClick();\"></pep-button>\n </ng-container>f\n </pep-draggable-item>\n <div class=\"block-template-wrapper\" [ngStyle]=\"{ 'overflow': (sectionHeight === 'unset' ? 'unset' : 'auto') }\">\n <div *ngIf=\"blockTemplate\" class=\"block-template\">\n <ng-container *ngTemplateOutlet=\"blockTemplate; context: { blockKey: blockContainer?.BlockKey, draggableItemKey: blockContainer?.DraggableItemKey }\">\n </ng-container>\n </div>\n <!-- <pep-remote-loader-element *ngIf=\"remoteLoaderOptions\" class=\"remote-loader\"\n [options]=\"remoteLoaderOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onBlockHostEventsCallback }\"\n (load)=\"onBlockLoad($event)\">\n </pep-remote-loader-element> -->\n </div>\n</div>\n","import { Component, ElementRef, HostBinding, HostListener, Input, OnChanges, OnInit, QueryList, Renderer2, SimpleChanges, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';\nimport { DataViewScreenSize, SplitType } from '@pepperi-addons/papi-sdk';\nimport { BaseDestroyerDirective, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { LayoutBuilderInternalService } from '../layout-builder-internal.service';\nimport { IEditor, IPepLayoutSectionColumn, PepLayoutSizeType } from '../layout-builder.model';\n\n@Component({\n selector: 'section',\n templateUrl: './section.component.html',\n styleUrls: ['./section.component.scss', './section.component.theme.scss']\n})\nexport class SectionComponent extends BaseDestroyerDirective implements OnInit {\n @ViewChild('sectionContainer') sectionContainerRef!: ElementRef;\n @ViewChildren('columnsWrapper') columnsElementRef!: QueryList<ElementRef>;\n\n @Input() blockTemplate: TemplateRef<any> | undefined;\n\n @Input() key: string = '';\n @Input() name: string = '';\n\n private _split: SplitType | undefined = undefined;\n @Input()\n set split(value: SplitType | undefined ) {\n this._split = value;\n this.refreshSplit();\n }\n get split(): SplitType | undefined {\n return this._split;\n }\n\n private _height: number | undefined = undefined;\n @Input()\n set height(value: number | undefined) {\n this._height = value;\n this.setStyleHeight();\n }\n get height(): number | undefined {\n return this._height;\n }\n\n private _collapseOnTablet: boolean = false;\n @Input()\n set collapseOnTablet(value: boolean) {\n this._collapseOnTablet = value;\n this.pepScreenSizeToFlipToVertical = value ? PepScreenSizeType.MD : PepScreenSizeType.SM;\n this.refreshSplit();\n }\n get collapseOnTablet(): boolean {\n return this._collapseOnTablet;\n }\n\n private _columns: Array<IPepLayoutSectionColumn> = [];\n @Input()\n set columns(value: Array<IPepLayoutSectionColumn>) {\n this._columns = value || [];\n }\n get columns(): Array<IPepLayoutSectionColumn> {\n return this._columns;\n }\n \n private _hideIn: DataViewScreenSize[] = [];\n @Input()\n set hideIn(value: DataViewScreenSize[]) {\n this._hideIn = value;\n this.setIfHideForCurrentScreenType();\n }\n get hideIn(): DataViewScreenSize[] {\n return this._hideIn;\n }\n\n @Input() columnsGap!: PepLayoutSizeType;\n \n @HostBinding('style.max-height')\n styleMaxHeight = 'unset';\n \n @HostBinding('style.height')\n styleHeight = 'unset';\n \n protected sectionsColumnsDropList: string[] = [];\n\n // private _editable = false;\n // protected set editable(value: boolean) {\n // this._editable = value;\n // this.refreshSplit();\n // }\n protected get editable(): boolean {\n return this.layoutBuilderService.editableState;;\n }\n\n private _screenSize!: PepScreenSizeType;\n protected set screenSize(value: PepScreenSizeType) {\n this._screenSize = value;\n this.refreshSplit();\n this.setScreenType();\n }\n protected get screenSize(): PepScreenSizeType {\n return this._screenSize;\n }\n\n // PepScreenSizeType = PepScreenSizeType;\n protected sectionColumnKeyPrefix = '';\n \n protected isMainEditorState = false;\n protected isEditing = false;\n protected selectedSectionKey = '';\n protected selectedBlockKey = '';\n \n protected containsBlocks = false;\n protected shouldSetDefaultHeight = false;\n protected pepScreenSizeToFlipToVertical = PepScreenSizeType.SM;\n protected screenType!: DataViewScreenSize;\n protected hideForCurrentScreenType = false;\n protected draggingBlockKey: string = '';\n protected draggingSectionKey: string = '';\n protected hoverState = false;\n\n constructor(\n private renderer: Renderer2,\n private layoutBuilderService: LayoutBuilderInternalService,\n private layoutService: PepLayoutService,\n ) { \n super();\n }\n\n private calculateIfSectionContainsBlocks() {\n this.containsBlocks = this.columns.some(column => column.BlockContainer);\n\n if (this.editable) {\n this.shouldSetDefaultHeight = !this.containsBlocks;\n }\n }\n\n private setScreenType() {\n this.screenType = this.layoutBuilderService.getScreenType(this.screenSize);\n this.setIfHideForCurrentScreenType();\n this.setStyleHeight();\n }\n\n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.layoutBuilderService.getIsHidden(this.hideIn, this.screenType);\n }\n \n private getCssSplitString() {\n switch (this.split) {\n case '1/2 1/2':\n return '1fr 1fr';\n case '1/2 1/4 1/4':\n return '2fr 1fr 1fr';\n case '1/3 1/3 1/3':\n return '1fr 1fr 1fr';\n case '1/3 2/3':\n return '1fr 2fr';\n case '1/4 1/2 1/4':\n return '1fr 2fr 1fr';\n case '1/4 1/4 1/2':\n return '1fr 1fr 2fr';\n case '1/4 1/4 1/4 1/4':\n return '1fr 1fr 1fr 1fr';\n case '1/4 3/4':\n return '1fr 3fr';\n case '2/3 1/3':\n return '2fr 1fr';\n case '3/4 1/4':\n return '3fr 1fr';\n default: // For one column.\n return '1fr';\n }\n }\n\n private refreshSplit() {\n setTimeout(() => {\n if (this.sectionContainerRef) {\n let cssSplitString = this.getCssSplitString();\n \n // Go for all the columns in the columnsWrapper\n this.columnsElementRef.toArray().map((section, sectionIndex) => {\n // Horizontal (true) for large screens, false for small screens.\n const isHorizontalView = this.screenSize <= this.pepScreenSizeToFlipToVertical;\n\n if (isHorizontalView) {\n this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'column');\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'unset');\n this.renderer.setStyle(section.nativeElement, 'grid-template-columns', cssSplitString);\n } else {\n this.renderer.setStyle(section.nativeElement, 'grid-auto-flow', 'row');\n this.renderer.setStyle(section.nativeElement, 'grid-template-columns', 'unset');\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitString);\n \n // In runtime (or preview mode).\n if (!this.editable) {\n const cssSplitArray = cssSplitString.split(' ');\n \n // If there are some hidden columns change the column width to 0 (for cut the spacing in the grid-template-rows).\n this.columns.forEach((column, index) => {\n if (!column.BlockContainer) {\n cssSplitArray[index] = '0';\n }\n });\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');\n //this.renderer.setStyle(section.nativeElement, 'grid-template-rows', cssSplitArray.join(' '));\n }\n }\n });\n }\n }, 0);\n }\n\n private setStyleHeight() {\n if (this.height && this.height > 0 && this.screenType !== 'Phablet') {\n this.styleHeight = this.styleMaxHeight = `${this.height}px`;\n } else {\n this.styleHeight = this.styleMaxHeight = 'unset';\n }\n }\n\n getIsDragging(): boolean {\n return this.draggingBlockKey.length > 0 && this.draggingSectionKey.length > 0;\n }\n\n getIsHidden(hideIn: DataViewScreenSize[] | undefined, currentScreenType: DataViewScreenSize) {\n return this.layoutBuilderService.getIsHidden(hideIn, currentScreenType);\n }\n\n ngOnInit(): void {\n this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe(previewMode => {\n this.refreshSplit();\n });\n\n // Just to calculate if sections contains blocks\n this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe(res => {\n this.calculateIfSectionContainsBlocks();\n });\n\n this.layoutService.onResize$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.screenSize = size;\n });\n\n this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.screenSize = size;\n });\n\n if (this.editable) {\n this.layoutBuilderService.sectionsColumnsDropListChange$.pipe(this.getDestroyer()).subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n\n this.layoutBuilderService.editorChange$.pipe(this.getDestroyer()).subscribe((editor: any) => {\n this.isMainEditorState = editor && editor.type === 'layout-builder';\n this.isEditing = editor && editor.type === 'section' && editor.id === this.key;\n this.selectedSectionKey = editor && editor.type === 'section' ? editor.id : '';\n this.selectedBlockKey = editor && editor.type === 'block' ? editor.id : '';\n });\n \n this.layoutBuilderService.draggingBlockKey.pipe(this.getDestroyer()).subscribe((draggingBlockKey: any) => {\n this.draggingBlockKey = draggingBlockKey;\n\n if (draggingBlockKey === '') {\n this.calculateIfSectionContainsBlocks();\n } else {\n // If there is only one block in the section and now it's this block that the user is dragging.\n const blocksLength = this.columns.filter(column => column.BlockContainer).length;\n if (blocksLength === 1 && this.columns.find(c => c.BlockContainer?.BlockKey === this.draggingBlockKey)) {\n this.shouldSetDefaultHeight = true;\n }\n }\n\n });\n\n this.layoutBuilderService.draggingSectionKey.pipe(this.getDestroyer()).subscribe((draggingSectionKey: any) => {\n this.draggingSectionKey = draggingSectionKey;\n });\n }\n\n this.sectionColumnKeyPrefix = this.layoutBuilderService.getSectionColumnKey(this.key);\n }\n\n onEditSectionClick() {\n this.layoutBuilderService.navigateToEditor('section', this.key);\n }\n\n onRemoveSectionClick() {\n this.layoutBuilderService.removeSection(this.key);\n }\n\n onHideSectionChange(hideIn: DataViewScreenSize[]) {\n this.layoutBuilderService.hideSection(this.key, hideIn);\n }\n\n onHideInMenuOpened() {\n this.hoverState = true;\n }\n\n onHideInMenuClosed() {\n this.hoverState = false;\n }\n\n onBlockDropped(event: CdkDragDrop<IPepLayoutSectionColumn, any, any>) {\n this.layoutBuilderService.onBlockDropped(event, this.key);\n }\n\n canDropPredicate(columnIndex: number) {\n return (drag: CdkDrag, drop: CdkDropList) => {\n const res = !this.layoutBuilderService.doesColumnContainBlock(this.key, columnIndex);\n return res;\n };\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onSectionDragEnd(event);\n }\n\n onSectionBlockDragExited(event: CdkDragExit) {\n //\n }\n\n onSectionBlockDragEntered(event: CdkDragEnter) {\n //\n }\n}\n","<div #sectionContainer *ngIf=\"editable || (containsBlocks && !hideForCurrentScreenType)\" class=\"section-container \"\n [ngClass]=\"{ \n 'mobile': screenType === 'Phablet',\n 'editable-state': editable, 'main-editor-state': isMainEditorState, 'default-height': shouldSetDefaultHeight, 'active-section': isEditing,\n 'section-hidden-state': hideForCurrentScreenType, 'section-is-dragging': draggingSectionKey !== '', 'show-hover-state': hoverState }\" \n cdkDragBoundary=\".layout-builder-wrapper\" cdkDrag [cdkDragData]=\"key\" [cdkDragDisabled]=\"!editable || selectedSectionKey.length > 0 || selectedBlockKey.length > 0\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\" \n >\n <pep-draggable-item *ngIf=\"editable && isMainEditorState && draggingSectionKey === ''\" cdkDragHandle style=\"cursor: grab;\"\n class=\"section-toolbar\" [ngClass]=\"{ 'hide-toolbar': !hoverState }\" [title]=\"name\">\n <ng-container pep-actions>\n <pep-button classNames=\"caution\" sizeType=\"xs\" iconName=\"system_bin\" (buttonClick)=\"onRemoveSectionClick();\"></pep-button>\n <hide-in [hideIn]=\"hideIn\" (hideInChange)=\"onHideSectionChange($event)\" (menuClosed)=\"onHideInMenuClosed()\" (menuOpened)=\"onHideInMenuOpened()\"></hide-in>\n <pep-button sizeType=\"xs\" iconName=\"system_edit\" (buttonClick)=\"onEditSectionClick();\"></pep-button>\n </ng-container>\n </pep-draggable-item>\n\n <div *ngIf=\"editable\" class=\"section-background\">\n <div class=\"back-template\" *ngFor=\"let number of [0,1,2,3,4,5,6,7,8,9,10,11]\"></div>\n </div>\n <div #columnsWrapper class=\"columns-wrapper gap-{{ columnsGap }}\" \n [ngClass]=\"{ 'mobile': screenType === 'Phablet', 'is-dragging': editable && getIsDragging }\">\n <div [id]=\"sectionColumnKeyPrefix + i\" \n *ngFor=\"let column of columns; let i=index;\"\n class=\"section-column {{screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'}}\"\n [ngClass]=\"{ 'active-column': selectedBlockKey === column.BlockContainer?.BlockKey, \n 'is-hidden': getIsHidden(column?.BlockContainer?.Hide, screenType),\n 'already-contains-block': editable && column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && \n draggingBlockKey && draggingBlockKey.length > 0 && column.BlockContainer.BlockKey !== draggingBlockKey }\"\n cdkDropList\n [cdkDropListData]=\"column\"\n [cdkDropListOrientation]=\"screenSize <= pepScreenSizeToFlipToVertical ? 'horizontal' : 'vertical'\" \n [cdkDropListConnectedTo]=\"sectionsColumnsDropList\"\n (cdkDropListDropped)=\"onBlockDropped($event)\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(i)\"\n >\n <section-block *ngIf=\"column.BlockContainer?.BlockKey\" class=\"section-block\" [sectionKey]=\"key\" [blockTemplate]=\"blockTemplate\"\n [blockContainer]=\"column.BlockContainer\" [editable]=\"editable\" [isMainEditorState]=\"isMainEditorState\" [sectionHeight]=\"styleHeight\"\n [active]=\"selectedBlockKey === column.BlockContainer?.BlockKey\" [screenType]=\"screenType\"\n (dragExited)=\"onSectionBlockDragExited($event)\" (dragEntered)=\"onSectionBlockDragEntered($event)\"></section-block>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionBlockComponent } from './section-block.component'\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\n// import { TranslateModule, TranslateLoader } from '@ngx-translate/core';\n// import { PepHideInModule } from '../hide-in/hide-in.module';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepSkeletonLoaderModule } from '@pepperi-addons/ngx-lib/skeleton-loader';\n\n@NgModule({\n declarations: [\n SectionBlockComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n PepSkeletonLoaderModule,\n PepRemoteLoaderModule,\n // PepHideInModule,\n PepDraggableItemsModule,\n // TranslateModule.forChild()\n ],\n exports: [SectionBlockComponent]\n})\nexport class SectionBlockModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionComponent } from './section.component';\nimport { SectionBlockModule } from '../section-block/section-block.module';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\n\nimport { PepHideInModule } from '../hide-in/hide-in.module';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\n\n@NgModule({\n declarations: [SectionComponent],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n PepRemoteLoaderModule,\n SectionBlockModule,\n PepHideInModule,\n PepDraggableItemsModule,\n // TranslateModule.forChild()\n ],\n exports: [SectionComponent]\n})\nexport class SectionModule { }\n","import { AfterContentInit, AfterViewChecked, ChangeDetectorRef, ContentChild, ElementRef, Renderer2, ViewChild, ContentChildren,\n OnInit, AfterViewInit, Component, EventEmitter, Input, Output, HostBinding, QueryList, TemplateRef } from '@angular/core';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragEnter, CdkDragExit, CdkDragStart, CdkDropList, DragDrop } from '@angular/cdk/drag-drop';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { BaseDestroyerDirective, PepCustomizationService, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { LayoutBuilderInternalService } from '../layout-builder-internal.service';\nimport { IPepLayoutBlockAddedEvent, IPepLayoutSection, IPepLayoutView, PepLayoutSizeType } from '../layout-builder.model';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\n\n@Component({\n selector: 'pep-layout',\n templateUrl: './layout.component.html',\n styleUrls: ['./layout.component.scss'],\n})\nexport class PepLayoutComponent extends BaseDestroyerDirective implements OnInit {\n @ViewChild('skeletonCont', { static: true }) skeletonContainer!: ElementRef;\n @ViewChild('sectionsCont', { static: true }) sectionsContainer!: ElementRef;\n\n private _layoutView!: IPepLayoutView;\n @Input()\n set layoutView(value: IPepLayoutView) {\n this._layoutView = value;\n this.layoutBuilderService.loadLayoutBuilder(value);\n }\n get layoutView(): IPepLayoutView {\n return this._layoutView;\n }\n\n @Input() blockTemplate: TemplateRef<any> | undefined = undefined;\n\n private _showSkeleton = false;\n @Input()\n set showSkeleton(value: boolean) {\n this._showSkeleton = value;\n this.layoutBuilderService.showSkeleton(value);\n }\n get showSkeleton(): boolean {\n return this._showSkeleton;\n }\n \n @Output() layoutViewChange: EventEmitter<IPepLayoutView> = new EventEmitter();\n @Output() screenTypeChange: EventEmitter<DataViewScreenSize> = new EventEmitter();\n\n private _horizontalSpacing: PepLayoutSizeType | undefined = 'md';\n set horizontalSpacing(value: PepLayoutSizeType | undefined) {\n this._horizontalSpacing = value;\n this.paddingInline = this.convertLayoutSizeType(value || 'md');\n }\n get horizontalSpacing(): PepLayoutSizeType | undefined {\n return this._horizontalSpacing;\n }\n\n private _verticalSpacing: PepLayoutSizeType | undefined = 'md';\n set verticalSpacing(value: PepLayoutSizeType | undefined) {\n this._verticalSpacing = value;\n }\n get verticalSpacing(): PepLayoutSizeType | undefined {\n return this._verticalSpacing;\n }\n\n @HostBinding('style.padding-inline')\n protected paddingInline = '1rem';\n \n protected sectionsGap!: PepLayoutSizeType;\n protected columnsGap!: PepLayoutSizeType;\n protected previewMode = false;\n\n private _sectionsSubject: BehaviorSubject<IPepLayoutSection[]> = new BehaviorSubject<IPepLayoutSection[]>([]);\n protected get sections$(): Observable<IPepLayoutSection[]> {\n return this._sectionsSubject.asObservable();\n }\n\n protected selectedScreenType!: DataViewScreenSize;\n\n constructor(\n public customizationService: PepCustomizationService,\n public layoutService: PepLayoutService,\n public layoutBuilderService: LayoutBuilderInternalService,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n // private dragDropService: DragDrop\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout');\n }\n\n private convertLayoutSizeType(size: PepLayoutSizeType | 'none') {\n let res;\n\n if (size === 'lg') {\n res = '2rem';\n } else if (size === 'md') {\n res = '1rem';\n } else if (size === 'sm') {\n res = '0.5rem';\n } else {\n res = '0';\n }\n\n return res;\n }\n\n private animateSkeleton() {\n if (this._showSkeleton) {\n // this.sectionsContainer?.nativeElement?.classList.add('out');\n this.sectionsContainer?.nativeElement?.classList.remove('in');\n this.skeletonContainer?.nativeElement?.classList.add('in');\n // this.skeletonContainer?.nativeElement?.classList.remove('out');\n } else {\n this.sectionsContainer?.nativeElement?.classList.add('in');\n // this.sectionsContainer?.nativeElement?.classList.remove('out');\n // this.skeletonContainer?.nativeElement?.classList.add('out');\n this.skeletonContainer?.nativeElement?.classList.remove('in');\n }\n }\n\n private setLayoutDataProperties() {\n const layoutView = this._layoutView;\n\n if (layoutView) {\n if (this.sectionsContainer?.nativeElement) {\n let maxWidth = coerceNumberProperty(layoutView.Layout.MaxWidth, 0);\n const maxWidthToSet = maxWidth === 0 ? 'unset' : `${maxWidth}px`;\n this.renderer.setStyle(this.sectionsContainer.nativeElement, 'max-width', maxWidthToSet);\n }\n \n this.sectionsGap = layoutView.Layout.SectionsGap || 'md';\n this.columnsGap = layoutView.Layout.ColumnsGap || 'md';\n\n this.horizontalSpacing = layoutView.Layout.HorizontalSpacing;\n this.verticalSpacing = layoutView.Layout.VerticalSpacing;\n }\n }\n\n private setScreentType(screenSize: PepScreenSizeType) {\n const screenType = this.layoutBuilderService.getScreenType(screenSize);\n this.selectedScreenType = screenType;\n this.screenTypeChange.emit(screenType);\n }\n\n ngOnInit() {\n /***********************************************************************************************/\n /* Internal Events - for code usage\n /***********************************************************************************************/\n\n if (this.layoutBuilderService.editMode) {\n this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n }\n\n this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections: any) => {\n this._sectionsSubject.next(sections);\n });\n\n this.layoutBuilderService.showSkeletonChange$.pipe(this.getDestroyer()).subscribe((showSkeleton: any) => {\n if (showSkeleton !== undefined) {\n this._showSkeleton = showSkeleton;\n this.animateSkeleton();\n }\n });\n\n this.layoutService.onResize$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.setScreentType(size);\n });\n\n this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.setScreentType(size);\n });\n\n /***********************************************************************************************/\n /* External Events - for raise to the client\n /***********************************************************************************************/\n\n this.layoutBuilderService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView: any) => {\n this._layoutView = layoutView;\n this.setLayoutDataProperties();\n this.layoutViewChange.emit(this._layoutView);\n });\n }\n\n getSectionsTemplateRows() {\n let gridAutoRows = '';\n // let fillHeightCount = 0;\n this.sections$.pipe(this.getDestroyer()).subscribe((sections: any) => { \n if (sections?.length) {\n sections.forEach((sec: IPepLayoutSection) => {\n if(sec.FillHeight === true){\n // fillHeightCount++;\n gridAutoRows += ' auto';\n }\n else {\n gridAutoRows += ' min-content';\n }\n });\n \n //if all are fill height should return 1fr for all\n //if not should return auto for fill height and min content for none\n return gridAutoRows;\n } else {\n return '';\n }\n });\n\n return gridAutoRows;\n }\n\n onSectionDropped(event: CdkDragDrop<any[]>) {\n this.layoutBuilderService.onSectionDropped(event);\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onSectionDragEnd(event);\n }\n}\n","<!-- For the top spacing -->\n<div class=\"top-spacing spacing-{{verticalSpacing}}\" ></div>\n<div #sectionsCont cdkDropListGroup class=\"sections-container gap-{{ sectionsGap }}\" [ngClass]=\"{'preview-state': previewMode }\" \n cdkDropList (cdkDropListDropped)=\"onSectionDropped($event)\" [ngStyle]=\"{'grid-auto-rows': getSectionsTemplateRows()}\"\n >\n <section *ngFor=\"let section of sections$ | async; let i=index;\" \n class=\"draggable-section \" [ngClass]=\"selectedScreenType === 'Phablet' ? 'margin-'+sectionsGap : ''\" [blockTemplate]=\"blockTemplate\"\n [key]=\"section.Key\" [name]=\"section.Name || ('LAYOUT_BUILDER.SECTION' | translate) + ' ' + (i+1)\" [split]=\"section.Split\" [height]=\"section.Height\"\n [columns]=\"section.Columns\" [collapseOnTablet]=\"section.CollapseOnTablet || false\" [hideIn]=\"section.Hide || []\" [columnsGap]=\"columnsGap\"\n >\n </section>\n</div>\n<div #skeletonCont class=\"skeleton-container \">\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"xl\" ></pep-skeleton-loader>\n <div class=\"split-skeleton-container\">\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"max\" ></pep-skeleton-loader>\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"max\" ></pep-skeleton-loader>\n </div>\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"xl\" ></pep-skeleton-loader>\n\n <pep-skeleton-loader [rowsNumber]=\"1\" [lastRowOffset]=\"false\" rowHeightType=\"max\" ></pep-skeleton-loader>\n</div>\n<!-- For the bottom spacing -->\n<div class=\"bottom-spacing spacing-{{verticalSpacing}}\"></div>\n<pep-size-detector></pep-size-detector>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { PepNgxLibModule, PepAddonService } from '@pepperi-addons/ngx-lib';\n\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PepSizeDetectorModule } from '@pepperi-addons/ngx-lib/size-detector';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { PepSkeletonLoaderModule } from '@pepperi-addons/ngx-lib/skeleton-loader';\n\nimport { SectionModule } from '../section/section.module'\n\nimport { PepLayoutComponent } from './layout.component';\n\n\n@NgModule({\n declarations: [\n PepLayoutComponent,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n PepNgxLibModule,\n PepSkeletonLoaderModule,\n PepRemoteLoaderModule,\n PepSizeDetectorModule,\n PepDialogModule,\n DragDropModule,\n SectionModule,\n TranslateModule.forChild()\n ],\n exports:[PepLayoutComponent],\n})\nexport class PepLayoutModule {\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IPepOption } from '@pepperi-addons/ngx-lib';\nimport { SplitType } from '@pepperi-addons/papi-sdk';\nimport { PepDialogActionButton, PepDialogData, PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\nimport { ILayoutSectionEditor } from '../layout-builder.model';\n\nexport interface ISplitOption {\n key: SplitType; \n value: string;\n}\nexport interface IAllSplitOption {\n key: string;\n value: Array<ISplitOption>;\n}\n\n@Component({\n selector: 'section-editor',\n templateUrl: './section-editor.component.html',\n styleUrls: ['./section-editor.component.scss']\n})\nexport class SectionEditorComponent implements OnInit {\n readonly MIN_HEIGHT = 40;\n \n private _hostObject!: ILayoutSectionEditor;\n @Input()\n set hostObject(value: ILayoutSectionEditor) {\n this._hostObject = value;\n\n this.sectionName = value.sectionName;\n this.split = value.split;\n this.isAutoHeight = !value.height || value.height === 0;\n this.height = this.isAutoHeight ? this.MIN_HEIGHT : value.height;\n this.collapseOnTablet = value.collapseOnTablet ?? false;\n this.fillHeight = value.fillHeight ?? false;\n }\n get hostObject(): ILayoutSectionEditor {\n return this._hostObject;\n }\n\n sectionName: string = '';\n \n private _split: SplitType | undefined;\n set split(value: SplitType | undefined) {\n this._split = value;\n \n this.subSections = (this._split && this._split.length > 0) ? true : false;\n\n // Check how many parts we have.\n const arr = value?.split(' ');\n if (arr && arr.length > 1 && arr.length <= 4) {\n this.partsNumber = arr.length.toString();\n } else {\n this.partsNumber = \"2\";\n }\n \n this.loadSplitOptions();\n }\n get split(): SplitType | undefined {\n return this._split;\n }\n \n isAutoHeight: boolean = true;\n height: number = this.MIN_HEIGHT;\n\n @Output() hostObjectChange: EventEmitter<ILayoutSectionEditor> = new EventEmitter<ILayoutSectionEditor>();\n \n collapseOnTablet: boolean = false;\n fillHeight: boolean = false;\n subSections: boolean = false;\n partsNumber: string = \"2\";\n partsNumberOptions = Array<IPepOption>();\n splitOptions = Array<ISplitOption>();\n allSplitOptions = Array<IAllSplitOption>();\n\n constructor(private translate: TranslateService, private dialog: PepDialogService) {\n this.initData();\n }\n\n private initData() {\n this.partsNumberOptions = [\n { 'key': '2', 'value': '2 Parts' }, \n { 'key': '3', 'value': '3 Parts' },\n { 'key': '4', 'value': '4 Parts' }\n ];\n \n this.allSplitOptions = [\n { 'key': '2', 'value': [\n { 'key': '1/4 3/4', 'value': '1/4-3/4' },\n { 'key': '1/3 2/3', 'value': '1/3-2/3' },\n { 'key': '1/2 1/2', 'value': '1/2-1/2' },\n { 'key': '2/3 1/3', 'value': '2/3-1/3' },\n { 'key': '3/4 1/4', 'value': '3/4-1/4' },\n ]}, \n { 'key': '3', 'value': [\n { 'key': '1/3 1/3 1/3', 'value': '1/3-1/3-1/3' },\n { 'key': '1/2 1/4 1/4', 'value': '1/2-1/4-1/4' },\n { 'key': '1/4 1/2 1/4', 'value': '1/4-1/2-1/4' },\n { 'key': '1/4 1/4 1/2', 'value': '1/4-1/4-1/2' },\n ]},\n { 'key': '4', 'value': [\n { 'key': '1/4 1/4 1/4 1/4', 'value': '1/4-1/4-1/4-1/4' },\n ]}\n ];\n }\n\n private loadSplitOptions() {\n const splitOptions = this.allSplitOptions.find((option) => option.key === this.partsNumber);\n if (splitOptions) {\n this.splitOptions = splitOptions.value;\n } else {\n this.splitOptions = this.allSplitOptions[0].value;\n }\n\n if (!this._split) {\n this._split = this.splitOptions[0].key;\n }\n }\n\n private updateHostObject() {\n this._hostObject.sectionName = this.sectionName;\n this._hostObject.split = this.subSections ? this.split : undefined;\n this._hostObject.height = this.isAutoHeight ? 0 : this.height;\n this._hostObject.collapseOnTablet = this.collapseOnTablet;\n this._hostObject.fillHeight = this.fillHeight;\n\n this.hostObjectChange.emit(this.hostObject);\n }\n\n ngOnInit(): void {\n this.loadSplitOptions();\n }\n \n isAutoHeightChange(isChecked: boolean) {\n this.isAutoHeight = isChecked;\n this.updateHostObject();\n }\n\n onHeightChange(height: number) {\n if (height >= this.MIN_HEIGHT) {\n this.height = coerceNumberProperty(height, this.height);\n this.updateHostObject();\n }\n }\n \n onSectionNameChange(value: string) {\n this.sectionName = value;\n this.updateHostObject();\n }\n\n onCollapseOnTabletChange(value: boolean){\n this.collapseOnTablet = value;\n this.updateHostObject();\n }\n\n onFillHeightChange(value: boolean){\n this.fillHeight = value;\n this.updateHostObject();\n }\n\n onSubSectionsChange(value: boolean) {\n const oldValue = this.subSections;\n // Check if cancel the sub sections ( change from any -> 1 section ), if true need to show confirm message\n if (value === false) {\n this.subSections = value;\n this.showDeleteSectionMsg(() => {\n this.updateHostObject();\n }, () => {\n this.subSections = oldValue;\n });\n } else {\n this.subSections = value;\n this.updateHostObject();\n }\n }\n \n onPartsNumberChange(key: string) {\n const oldKey = this.partsNumber;\n // Check if decrease on sub sections number, if true need to show confirm message\n if (key && parseInt(key) < parseInt(this.partsNumber)) {\n this.partsNumber = key;\n this.showDeleteSectionMsg(() => {\n this.loadSplitOptions();\n this._split = this.splitOptions[0].key;\n this.updateHostObject();\n }, () => {\n this.partsNumber = oldKey;\n })\n } else {\n this.partsNumber = key;\n this.loadSplitOptions();\n this._split = this.splitOptions[0].key;\n this.updateHostObject();\n }\n }\n\n showDeleteSectionMsg(continueCB: () => void, cancelCB: () => void){\n const actionButtons = [\n new PepDialogActionButton(\n this.translate.instant('ACTIONS.CANCEL'),\n '',\n () => {\n cancelCB();\n }\n ),\n new PepDialogActionButton(\n this.translate.instant('ACTIONS.CONTINUE'),\n 'strong caution',\n () => {\n continueCB();\n }\n )\n ];\n \n const content = this.translate.instant('LAYOUT_BUILDER.DELETE_SECTION_MSG');\n const title = this.translate.instant('LAYOUT_BUILDER.DELETE_SECTION_TITLE');\n const dataMsg = new PepDialogData({title, actionsType: 'custom', content, actionButtons});\n\n this.dialog.openDefaultDialog(dataMsg);\n }\n\n\n onSplitChange(key: string) {\n this._split = key as SplitType;\n this.updateHostObject();\n }\n}\n","<div class=\"section-editor-container layout-builder-editor-container\">\n <div>\n <pep-textbox [value]=\"sectionName\" [label]=\"'LAYOUT_BUILDER.SECTION_NAME_TITLE' | translate\" (valueChange)=\"onSectionNameChange($event)\"></pep-textbox>\n </div>\n\n <!-- \n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"isAutoHeight\" [label]=\"'LAYOUT_BUILDER.AUTO_HEIGHT_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"isAutoHeightChange($event)\"></pep-checkbox>\n <pep-textbox [label]=\"'LAYOUT_BUILDER.HEIGHT_TITLE' | translate\" type=\"int\" [minValue]=\"MIN_HEIGHT\" [disabled]=\"isAutoHeight\" [value]=\"height\" (valueChange)=\"onHeightChange($event)\"></pep-textbox> \n </div>\n -->\n <div class=\"editor-separator\"></div>\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"subSections\" [label]=\"'LAYOUT_BUILDER.SUB_SECTION_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"onSubSectionsChange($event)\"></pep-checkbox>\n <div class=\"split-area\">\n <pep-select [label]=\"'LAYOUT_BUILDER.SECTIONS_TITLE' | translate\" [value]=\"partsNumber\" [options]=\"partsNumberOptions\" \n (valueChange)=\"onPartsNumberChange($event)\" [emptyOption]=\"false\" [disabled]=\"!subSections\"></pep-select>\n <pep-select [label]=\"'LAYOUT_BUILDER.SPLIT_TITLE' | translate\" [value]=\"split || ''\" [options]=\"splitOptions\"\n (valueChange)=\"onSplitChange($event)\" [emptyOption]=\"false\" [disabled]=\"!subSections\"></pep-select>\n </div>\n </div>\n <div class=\"editor-separator\"></div>\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"collapseOnTablet\" [label]=\"'LAYOUT_BUILDER.COLLAPSE_ON_TABLET_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"onCollapseOnTabletChange($event)\"></pep-checkbox>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.COLLAPSE_ON_TABLET_DESCRIPTION' | translate)}}</span>\n </div>\n <div class=\"editor-separator\"></div>\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"fillHeight\" [label]=\"'LAYOUT_BUILDER.FILL_HEIGHT_SECTION_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"onFillHeightChange($event)\"></pep-checkbox>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.FILL_HEIGHT_SECTION_DESCRIPTION' | translate)}}</span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SectionEditorComponent } from './section-editor.component'\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [SectionEditorComponent],\n imports: [\n CommonModule,\n PepButtonModule,\n PepTextboxModule,\n PepSelectModule,\n PepCheckboxModule,\n TranslateModule.forChild()\n ],\n exports: [SectionEditorComponent]\n})\nexport class SectionEditorModule { }\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { CdkDragEnd, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, ChangeDetectorRef, ContentChild, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { OnInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BaseDestroyerDirective, PepCustomizationService, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { IEditor, ILayoutEditor, PepLayoutSizeType } from '../layout-builder.model';\nimport { LayoutBuilderInternalService } from '../layout-builder-internal.service';\n\n@Component({\n selector: 'pep-layout-editor',\n templateUrl: './layout-editor.component.html',\n styleUrls: ['./layout-editor.component.scss'],\n})\nexport class PepLayoutEditorComponent extends BaseDestroyerDirective implements OnInit, AfterViewInit {\n @ViewChild('topContentRef', { static: true }) _topContentRef!: ElementRef;\n @ViewChild('bottomContentRef', { static: true }) _bottomContentRef!: ElementRef;\n \n @ViewChild('availableBlocksContainer', { read: ElementRef }) availableBlocksContainer!: ElementRef;\n // @ViewChild('parametersDialogTemplate', { static: true, read: TemplateRef }) parametersDialogTemplate!: TemplateRef<any>;\n \n @Input() availableBlocksForDrag: Array<IPepDraggableItem> = [];\n\n private _hostObject!: ILayoutEditor;\n @Input()\n set hostObject(value: ILayoutEditor) {\n this._hostObject = value;\n\n // this.onLoadFlow = value.onLoadFlow;\n // this.onChangeFlow = value.onChangeFlow;\n this.isFullWidth = !value.maxWidth || value.maxWidth === 0;\n this.maxWidth = value.maxWidth;\n this.horizontalSpacing = this._hostObject.horizontalSpacing || 'md';\n this.verticalSpacing = this._hostObject.verticalSpacing || 'md';\n this.sectionsGap = this._hostObject.sectionsGap || 'md';\n this.columnsGap = this._hostObject.columnsGap || 'md';\n this.roundedCorners = this._hostObject.roundedCorners || 'none';\n\n // this.prepareFlowHostObject('load');\n // this.prepareFlowHostObject('change');\n }\n get hostObject(): ILayoutEditor {\n return this._hostObject;\n }\n\n @Output() hostObjectChange: EventEmitter<ILayoutEditor> = new EventEmitter<ILayoutEditor>();\n \n // private _onLoadFlow: any = {};\n // set onLoadFlow(value: any) {\n // this._onLoadFlow = value;\n // }\n // get onLoadFlow(): any {\n // return this._onLoadFlow;\n // }\n \n // private _onChangeFlow: any = {};\n // set onChangeFlow(value: any) {\n // this._onChangeFlow = value;\n // }\n // get onChangeFlow(): any {\n // return this._onChangeFlow;\n // }\n\n protected isFullWidth!: boolean;\n protected maxWidth!: number;\n protected horizontalSpacing: PepLayoutSizeType = 'md';\n protected verticalSpacing: PepLayoutSizeType = 'md';\n protected sectionsGap: PepLayoutSizeType = 'md';\n protected columnsGap: PepLayoutSizeType = 'md';\n protected roundedCorners: PepLayoutSizeType = 'none';\n\n // protected sizesGroupButtons = Array<ISpacingOption>();\n \n protected availableBlocksContainerId = LayoutBuilderInternalService.AVAILABLE_BLOCKS_CONTAINER_ID;\n protected sectionsColumnsDropList = [];\n\n protected showTopContent = false;\n protected showBottomContent = false;\n\n // onLoadFlowHostObject;\n // onChangeFlowHostObject;\n \n constructor(\n public customizationService: PepCustomizationService,\n public layoutBuilderService: LayoutBuilderInternalService,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-editor');\n }\n\n // private prepareFlowHostObject(pageFlowType: 'load' | 'change') {\n // const fields = {};\n \n // if (pageFlowType === 'load') {\n // this.onLoadFlowHostObject = {};\n // this.onLoadFlowHostObject['runFlowData'] = this.onLoadFlow;\n // this.onLoadFlowHostObject['fields'] = fields;\n // } else if (pageFlowType === 'change') {\n // this.onChangeFlowHostObject = {};\n // this.onChangeFlowHostObject['runFlowData'] = this.onChangeFlow;\n // this.onChangeFlowHostObject['fields'] = fields;\n // }\n // }\n\n private updateHostObject() {\n // this._hostObject.onLoadFlow = this.onLoadFlow;\n // this._hostObject.onChangeFlow = this.onChangeFlow;\n this._hostObject.maxWidth = this.isFullWidth ? 0 : this.maxWidth;\n this._hostObject.horizontalSpacing = this.horizontalSpacing;\n this._hostObject.verticalSpacing = this.verticalSpacing;\n this._hostObject.sectionsGap = this.sectionsGap;\n this._hostObject.columnsGap = this.columnsGap;\n this._hostObject.roundedCorners = this.roundedCorners === 'none' ? undefined : this.roundedCorners;\n\n // this.prepareFlowHostObject('load');\n // this.prepareFlowHostObject('change');\n\n this.hostObjectChange.emit(this.hostObject);\n }\n\n ngOnInit(): void {\n this.layoutBuilderService.sectionsColumnsDropListChange$.subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n }\n\n ngAfterViewInit(): void {\n if (this._topContentRef.nativeElement.children.length > 0) {\n this.showTopContent = true;\n }\n\n if (this._bottomContentRef.nativeElement.children.length > 0) {\n this.showBottomContent = true;\n }\n }\n\n onAddSectionClick(event: any) {\n this.layoutBuilderService.addSection();\n }\n\n isFullWidthChange(isChecked: boolean) {\n this.isFullWidth = isChecked;\n this.maxWidth = isChecked ? 0 : 960;\n this.updateHostObject();\n }\n\n onMaxWidthChange(maxWidth: string) {\n this.maxWidth = coerceNumberProperty(maxWidth, this.maxWidth);\n this.updateHostObject();\n }\n \n setColumnsHorizntalGap(key: string ){\n this.horizontalSpacing = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n \n setColumnsVerticalGap(key: string) {\n this.verticalSpacing = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n \n setSectionGap(key: string) {\n this.sectionsGap = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n\n setColumnsGap(key: string) {\n this.columnsGap = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n\n setRoundedCorners(key: string) {\n this.roundedCorners = key as PepLayoutSizeType; \n this.updateHostObject();\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderService.onBlockDragEnd(event);\n }\n\n // onLoadFlowChange(flowData: any) {\n // this.onLoadFlow = flowData;\n // this.updateHostObject();\n // }\n\n // onChangeFlowChange(flowData: any) {\n // this.onChangeFlow = flowData;\n // this.updateHostObject();\n // }\n}\n","<mat-tab-group #tabGroup class=\"layout-builder-editor-tabs\" animationDuration=\"0ms\">\n <mat-tab label=\"{{'LAYOUT_BUILDER.GENERAL' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div #topContentRef class=\"layout-builder-editor-group\">\n <ng-content select=\"[layout-editor-top-content]\"></ng-content>\n <div *ngIf=\"showTopContent\" class=\"editor-separator\"></div>\n </div>\n <div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.SECTIONS_TITLE' | translate}}</label>\n <pep-button class=\"add-section-button\" value=\"{{'LAYOUT_BUILDER.ADD_SECTION' | translate}}\" styleType=\"regular\" iconName=\"number_plus\" iconPosition=\"end\"\n (buttonClick)=\"onAddSectionClick($event)\"></pep-button>\n </div>\n <div class=\"editor-separator\"></div>\n <pep-draggable-items class=\"available-blocks\" [containerId]=\"availableBlocksContainerId\" [items]=\"availableBlocksForDrag\" [title]=\"'LAYOUT_BUILDER.BLOCKS_TITLE' | translate\"\n titleSizeType=\"xl\" titleType=\"with-bottom-border\" [showSearch]=\"true\" [dropAreaIds]=\"sectionsColumnsDropList\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n <div #bottomContentRef class=\"layout-builder-editor-group\">\n <div *ngIf=\"showBottomContent\" class=\"editor-separator\"></div>\n <ng-content select=\"[layout-editor-bottom-content]\"></ng-content>\n </div>\n </div>\n </mat-tab>\n <mat-tab label=\"{{'LAYOUT_BUILDER.DESIGN' | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <div>\n <pep-checkbox class=\"checkbox-as-title\" [value]=\"isFullWidth\" [label]=\"'LAYOUT_BUILDER.FULL_WIDTH_TITLE' | translate\" [renderTitle]=\"false\" (valueChange)=\"isFullWidthChange($event)\"></pep-checkbox>\n <pep-textbox [label]=\"'LAYOUT_BUILDER.MAX_WIDTH_TITLE' | translate\" type=\"int\" [disabled]=\"isFullWidth\" [value]=\"maxWidth.toString()\" (valueChange)=\"onMaxWidthChange($event)\"></pep-textbox>\n </div>\n <div class=\"editor-separator\"></div>\n <!-- Spacing -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.SPACING_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SPACING_HORIZONTAL_TITLE' | translate\"\n [btnKey]=\"horizontalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsHorizntalGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.SPACING_VERTICAL_TITLE' | translate\"\n [btnKey]=\"verticalSpacing.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsVerticalGap($event)\">\n </pep-group-buttons-settings>\n <div class=\"editor-separator\"></div>\n <!-- Gaps -->\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [header]=\"'LAYOUT_BUILDER.GAPS_TITLE' | translate\" [subHeader]=\"'LAYOUT_BUILDER.SECTIONS_GAP_TITLE' | translate\"\n [btnKey]=\"sectionsGap?.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setSectionGap($event)\">\n </pep-group-buttons-settings>\n <pep-group-buttons-settings [groupType]=\"'sizes'\" \n [subHeader]=\"'LAYOUT_BUILDER.COLUMNS_GAP_TITLE' | translate\"\n [btnKey]=\"columnsGap.toLowerCase()\" [excludeKeys]=\"['xs','xl','2xl']\" [useNone]=\"true\"\n (btnkeyChange)=\"setColumnsGap($event)\">\n </pep-group-buttons-settings>\n <!-- Rounded Corners -->\n <!--\n <div class=\"editor-separator\"></div>\n <label class=\"editor-title\">{{'LAYOUT_BUILDER.ROUNDED_CORNERS_TITLE' | translate}}</label><br>\n <label class=\"body-xs ellipsis\">{{'LAYOUT_BUILDER.BORDER_RADIUS_TITLE' | translate}}</label>\n <pep-group-buttons [buttons]=\"sizesGroupButtons\" [selectedButtonKey]=\"roundedCorners\" buttonsClass=\"ms regular\" viewType=\"toggle\"\n (buttonClick)=\"setRoundedCorners($event)\"></pep-group-buttons> -->\n </div>\n </mat-tab>\n</mat-tab-group>\n\n\n\n","import { MatTabsModule } from '@angular/material/tabs';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\nimport { HttpClientModule } from '@angular/common/http';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepRemoteLoaderModule } from '@pepperi-addons/ngx-lib/remote-loader';\nimport { OverlayModule} from '@angular/cdk/overlay';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { PepTextareaModule, } from '@pepperi-addons/ngx-lib/textarea';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { SectionEditorModule } from '../section-editor/section-editor.module';\nimport { PepColorModule } from '@pepperi-addons/ngx-lib/color';\nimport { PepImageModule } from '@pepperi-addons/ngx-lib/image';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { MatSliderModule } from '@angular/material/slider'\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepGroupButtonsSettingsModule } from '@pepperi-addons/ngx-composite-lib/group-buttons-settings';\n\n// import { PepManageParametersModule } from '@pepperi-addons/ngx-composite-lib/manage-parameters';\n// import { PepFlowPickerButtonModule } from '@pepperi-addons/ngx-composite-lib/flow-picker-button';\n\nimport { PepLayoutEditorComponent } from './layout-editor.component';\n\n@NgModule({\n declarations: [\n PepLayoutEditorComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n PepNgxLibModule,\n PepRemoteLoaderModule,\n PepSelectModule,\n PepTextboxModule,\n DragDropModule,\n OverlayModule,\n MatTabsModule,\n PepButtonModule,\n PepCheckboxModule,\n PepGroupButtonsModule,\n PepColorModule,\n PepImageModule,\n PepGroupButtonsSettingsModule,\n PepDraggableItemsModule,\n PepDialogModule,\n MatSliderModule,\n PepTextareaModule,\n // PepManageParametersModule,\n // PepFlowPickerButtonModule,\n SectionEditorModule,\n ],\n exports:[PepLayoutEditorComponent]\n})\nexport class PepLayoutEditorModule {\n constructor(\n // private pepIconRegistry: PepIconRegistry\n ) {\n // this.pepIconRegistry.registerIcons(pepIcons);\n }\n}\n","import { ElementRef, Renderer2, ViewChild, OnInit, Component, EventEmitter, Input, Output, HostListener } from '@angular/core';\nimport { BaseDestroyerDirective, PepAddonService, PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport { DataViewScreenSize } from '@pepperi-addons/papi-sdk';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PepButton } from '@pepperi-addons/ngx-lib/button';\nimport { pepIconDeviceDesktop, pepIconDeviceMobile, pepIconDeviceTablet } from '@pepperi-addons/ngx-lib/icon';\nimport { IPepSideBarStateChangeEvent, PepSideBarComponent } from '@pepperi-addons/ngx-lib/side-bar';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\n\nimport { IEditor, ILayoutEditor, IPepLayoutSection, IPepLayoutView, ILayoutSectionEditor, IPepLayoutBlockAddedEvent } from './layout-builder.model';\nimport { LayoutBuilderInternalService } from './layout-builder-internal.service';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\n@Component({\n selector: 'pep-layout-builder',\n templateUrl: './layout-builder.component.html',\n styleUrls: ['./layout-builder.component.scss', './layout-builder.component.theme.scss'],\n})\nexport class PepLayoutBuilderComponent extends BaseDestroyerDirective implements OnInit {\n @ViewChild('layoutBuilderWrapper', { static: true }) layoutBuilderWrapper!: ElementRef;\n @ViewChild(PepSideBarComponent, { read: ElementRef }) private sideBarComponent!: ElementRef;\n \n private _availableBlocksForDrag: Array<IPepDraggableItem> = [];\n @Input() \n set availableBlocksForDrag(value: Array<IPepDraggableItem>) {\n this._availableBlocksForDrag = value;\n this.layoutBuilderService.setAvailableBlocksToDrag(value);\n }\n get availableBlocksForDrag(): Array<IPepDraggableItem> {\n return this._availableBlocksForDrag;\n }\n\n private _blocksLimitNumber = 0;\n @Input()\n set blocksLimitNumber(value: number) {\n this._blocksLimitNumber = coerceNumberProperty(value, 0);\n this.layoutBuilderService.setBlocksLimitNumber(this._blocksLimitNumber);\n }\n \n private _layoutEditorTitle = '';\n @Input()\n set layoutEditorTitle(value: string) {\n this._layoutEditorTitle = value;\n this.setLayoutEditorTitle() \n }\n get layoutEditorTitle(): string {\n return this._layoutEditorTitle;\n }\n \n @Output() backClick: EventEmitter<void> = new EventEmitter();\n @Output() editorChange: EventEmitter<IEditor> = new EventEmitter(); // blockKey\n @Output() blockAdded: EventEmitter<IPepLayoutBlockAddedEvent> = new EventEmitter();\n @Output() blocksRemoved: EventEmitter<string[]> = new EventEmitter();\n\n protected lockScreen = false;\n protected previewMode = false;\n protected currentEditor: IEditor | null = null;\n protected viewportWidth: number = 0;\n protected screenTypes!: Array<PepButton>;\n\n protected selectedScreenType!: DataViewScreenSize;\n \n constructor(\n private renderer: Renderer2,\n private hostElement: ElementRef,\n private translate: TranslateService,\n private layoutBuilderService: LayoutBuilderInternalService,\n private pepAddonService: PepAddonService,\n ) {\n super();\n\n this.pepAddonService.setShellRouterData({ showSidebar: false, addPadding: false});\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-builder');\n this.layoutBuilderService.setEditMode(true);\n }\n\n private setScreenWidth(screenType: DataViewScreenSize) {\n this.layoutBuilderService.setScreenWidth(screenType);\n }\n\n private updateViewportWidth() {\n if (this.layoutBuilderWrapper?.nativeElement) {\n setTimeout(() => {\n this.viewportWidth = this.layoutBuilderWrapper.nativeElement.clientWidth;\n });\n }\n }\n \n private setLayoutEditorTitle() {\n if (this.currentEditor?.type === 'layout-builder' && this.layoutEditorTitle !== '') {\n this.currentEditor.title = this.layoutEditorTitle;\n }\n }\n\n private subscribeEvents() {\n /***********************************************************************************************/\n /* Internal Events - for code usage\n /***********************************************************************************************/\n\n this.layoutBuilderService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n\n this.layoutBuilderService.lockScreenChange$.pipe(this.getDestroyer()).subscribe((lockScreen: any) => {\n this.lockScreen = lockScreen;\n });\n\n this.layoutBuilderService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n const screenType = this.layoutBuilderService.getScreenType(size);\n this.selectedScreenType = screenType;\n });\n\n // For update the layout data\n this.layoutBuilderService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView: any) => {\n if (layoutView) {\n if (this.layoutBuilderWrapper?.nativeElement) {\n let maxWidth = coerceNumberProperty(layoutView.Layout.MaxWidth, 0);\n const maxWidthToSet = maxWidth === 0 ? '100%' : `${maxWidth}px`;\n this.renderer.setStyle(this.layoutBuilderWrapper.nativeElement, 'max-width', maxWidthToSet);\n this.updateViewportWidth();\n }\n }\n });\n\n this.layoutBuilderService.screenWidthChange$.pipe(this.getDestroyer()).subscribe((width: any) => {\n if (this.layoutBuilderWrapper?.nativeElement) {\n this.renderer.setStyle(this.layoutBuilderWrapper.nativeElement, 'width', width);\n this.updateViewportWidth();\n }\n });\n\n // Get the sections id's into sectionsColumnsDropList for the drag & drop.\n this.layoutBuilderService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections: any) => {\n // Concat all results into one array.\n const sectionsColumnsDropList = [].concat(...sections.map((section: IPepLayoutSection) => {\n return section.Columns.map((column, index) => \n this.layoutBuilderService.getSectionColumnKey(section.Key, index.toString())\n )\n }));\n\n this.layoutBuilderService.setSectionsColumnsDropListChange(sectionsColumnsDropList);\n });\n\n\n /***********************************************************************************************/\n /* External Events - for raise to the client\n /***********************************************************************************************/\n\n // For update editor.\n this.layoutBuilderService.editorChange$.pipe(this.getDestroyer()).subscribe((editor: any) => {\n if (editor) {\n // Init the side bar scroll top to 0.\n if (this.sideBarComponent) {\n const sideLayout = this.sideBarComponent.nativeElement.querySelector('.side-layout');\n sideLayout?.scrollTo(0, 0);\n }\n \n this.currentEditor = editor;\n this.setLayoutEditorTitle();\n \n // Raise event to let the user set the block editor in the UI.\n this.editorChange.emit(editor);\n }\n });\n\n this.layoutBuilderService.blockAddedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event) {\n this.blockAdded.emit(event);\n }\n });\n\n this.layoutBuilderService.blocksRemovedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event?.length > 0) {\n this.blocksRemoved.emit(event);\n }\n });\n }\n\n ngOnInit() {\n // Get the first translation for load all translations.\n this.translate.get('LAYOUT_BUILDER.DESKTOP').subscribe((res) => {\n \n this.screenTypes = [\n { key: 'Landscape', value: this.translate.instant('LAYOUT_BUILDER.DESKTOP'), callback: () => this.setScreenWidth('Landscape'), iconName: pepIconDeviceDesktop.name, iconPosition: 'end' },\n { key: 'Tablet', value: this.translate.instant('LAYOUT_BUILDER.TABLET'), callback: () => this.setScreenWidth('Tablet'), iconName: pepIconDeviceTablet.name, iconPosition: 'end' },\n { key: 'Phablet', value: this.translate.instant('LAYOUT_BUILDER.MOBILE'), callback: () => this.setScreenWidth('Phablet'), iconName: pepIconDeviceMobile.name, iconPosition: 'end' }\n ];\n });\n \n this.subscribeEvents();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any): void {\n this.updateViewportWidth();\n }\n\n togglePreviewMode() {\n this.layoutBuilderService.changePreviewMode(!this.previewMode);\n this.updateViewportWidth();\n }\n\n onSidebarStateChange(event: IPepSideBarStateChangeEvent) {\n this.updateViewportWidth();\n }\n\n onLayoutEditorObjectChange(pageEditor: ILayoutEditor) {\n this.layoutBuilderService.updateLayoutFromEditor(pageEditor);\n }\n\n onSectionEditorObjectChange(sectionEditor: ILayoutSectionEditor) {\n this.layoutBuilderService.updateSectionFromEditor(sectionEditor);\n }\n\n onNavigateBackFromEditor() {\n if (!this.currentEditor || this.currentEditor?.type === 'layout-builder') {\n this.backClick.emit();\n } else {\n this.layoutBuilderService.navigateBackFromEditor();\n }\n }\n}\n","<div *ngIf=\"lockScreen\" class=\"cdk-overlay-backdrop cdk-overlay-dark-backdrop cdk-overlay-backdrop-showing\"></div>\n\n<pep-page-layout [showShadow]=\"!previewMode && currentEditor !== null\" >\n <div pep-side-area *ngIf=\"!previewMode && currentEditor\" style=\"height: inherit;\">\n <pep-side-bar #sideBar [ignoreResize]=\"true\" (stateChange)=\"onSidebarStateChange($event)\">\n <div header-content class=\"side-bar-title\">\n <pep-button class=\"back-button\" sizeType=\"sm\" iconName=\"arrow_left_alt\" (buttonClick)=\"onNavigateBackFromEditor();\"></pep-button>\n <div class=\"title title-lg ellipsis\" [title]=\"currentEditor.title\">\n <span>{{ currentEditor.title }}</span>\n </div>\n </div>\n <div class=\"layout-builder-editor-wrapper\">\n <pep-layout-editor *ngIf=\"currentEditor.type === 'layout-builder'\" [availableBlocksForDrag]=\"availableBlocksForDrag\"\n [hostObject]=\"currentEditor.hostObject\" (hostObjectChange)=\"onLayoutEditorObjectChange($event)\"\n >\n <ng-container layout-editor-top-content>\n <ng-content select=\"[layout-editor-top-content]\"></ng-content>\n </ng-container>\n <ng-container layout-editor-bottom-content>\n <ng-content select=\"[layout-editor-bottom-content]\"></ng-content>\n </ng-container>\n </pep-layout-editor>\n \n <section-editor *ngIf=\"currentEditor.type === 'section'\" \n [hostObject]=\"currentEditor.hostObject\" (hostObjectChange)=\"onSectionEditorObjectChange($event)\"></section-editor>\n \n <div *ngIf=\"currentEditor.type === 'block'\" class=\"layout-builder-editor-container\">\n <ng-content select=\"[block-editor-content]\"></ng-content>\n </div>\n </div>\n </pep-side-bar>\n </div>\n <ng-container pep-main-area>\n <div class=\"main-area-container\" [ngClass]=\"{'preview-mode': previewMode }\">\n <div class=\"header-container\" >\n <ng-container *ngIf=\"!previewMode; then editorTitleTemplate; else previewTitleTemplate\"></ng-container>\n <ng-template #editorTitleTemplate>\n <div>\n <span class=\"header-title body-xs\">{{('LAYOUT_BUILDER.VIEWPORT_WIDTH' | translate)}}:&nbsp;</span>\n <span class=\"body-xs\"><b>{{viewportWidth}}</b></span>\n </div>\n </ng-template>\n <ng-template #previewTitleTemplate>\n <div class=\"preview-title body-sm\">\n <span>{{('LAYOUT_BUILDER.PREVIEW_TITLE' | translate)}}</span>\n </div>\n </ng-template>\n\n <div class=\"header-group-btn\">\n <pep-group-buttons [buttons]=\"screenTypes\" [selectedButtonKey]=\"selectedScreenType\" sizeType=\"sm\" viewType=\"toggle\" >\n </pep-group-buttons>\n </div>\n\n <ng-container *ngIf=\"!previewMode; then editorButtonsTemplate; else previewButtonsTemplate\"></ng-container>\n <ng-template #editorButtonsTemplate>\n <div class=\"header-end\">\n <pep-button key='Preview' [value]=\"'ACTIONS.PREVIEW' | translate\" sizeType=\"sm\" classNames=\"pep-spacing-element\" (buttonClick)=\"togglePreviewMode()\"></pep-button>\n <ng-content select=\"[header-end-content]\"></ng-content>\n </div>\n </ng-template>\n <ng-template #previewButtonsTemplate>\n <a class=\"color-link body-sm\" (click)=\"togglePreviewMode()\" href=\"javascript:void(0)\">{{('LAYOUT_BUILDER.PREVIEW_CLICK_HERE' | translate)}}</a> \n </ng-template>\n </div>\n <div #layoutBuilderWrapper class=\"layout-builder-wrapper\" [ngClass]=\"{'limit-min-width': selectedScreenType === 'Landscape' }\">\n <ng-content select=\"[layout-content]\"></ng-content>\n <div *ngIf=\"!previewMode\" class=\"backdrop\" [ngClass]=\"{'show-backdrop': currentEditor?.type === 'section' || currentEditor?.type === 'block'}\"></div>\n </div>\n </div>\n </ng-container>\n</pep-page-layout>","import { Injectable } from \"@angular/core\";\nimport { DataViewScreenSize } from \"@pepperi-addons/papi-sdk\";\nimport { LayoutBuilderInternalService } from \"./layout-builder-internal.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PepLayoutBuilderService {\n \n get editMode(): boolean {\n return this.layoutBuilderInternalService.editMode;\n }\n get editableState(): boolean {\n return this.layoutBuilderInternalService.editableState;\n }\n\n constructor(\n private layoutBuilderInternalService: LayoutBuilderInternalService\n ) {\n //\n }\n \n getCurrentScreenType(): DataViewScreenSize {\n return this.layoutBuilderInternalService.getCurrentScreenType();\n }\n\n getIsHidden(hideIn: DataViewScreenSize[] | undefined, currentScreenType: DataViewScreenSize) {\n return (hideIn && hideIn?.length > 0) ? hideIn.some(hi => hi === currentScreenType) : false;\n }\n \n showSkeleton(show: boolean) {\n return this.layoutBuilderInternalService.showSkeleton(show);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepSizeDetectorModule } from '@pepperi-addons/ngx-lib/size-detector';\nimport { PepSkeletonLoaderModule } from '@pepperi-addons/ngx-lib/skeleton-loader';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { PepGroupButtonsModule } from '@pepperi-addons/ngx-lib/group-buttons';\nimport { PepPageLayoutModule } from '@pepperi-addons/ngx-lib/page-layout';\nimport { PepSideBarModule } from '@pepperi-addons/ngx-lib/side-bar';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\nimport { PepGroupButtonsSettingsModule } from '@pepperi-addons/ngx-composite-lib/group-buttons-settings';\n\nimport { PepHideInModule } from './hide-in/hide-in.module';\nimport { PepLayoutModule } from './layout/layout.module';\nimport { PepLayoutEditorModule } from './layout-editor/layout-editor.module';\nimport { SectionEditorModule } from './section-editor/section-editor.module';\n\nimport { LayoutBuilderInternalService } from './layout-builder-internal.service';\nimport { PepLayoutBuilderComponent } from './layout-builder.component';\n\n// import { SectionBlockModule } from './layout/section-block/section-block.module';\n\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconDeviceDesktop,\n pepIconDeviceTablet,\n pepIconDeviceMobile,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepLayoutBuilderService } from './layout-builder.service';\n\n@NgModule({\n declarations: [\n PepLayoutBuilderComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n // Material modules,\n MatCommonModule,\n MatTabsModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepDialogModule,\n PepIconModule,\n PepPageLayoutModule,\n PepSideBarModule,\n PepButtonModule,\n PepCheckboxModule,\n PepTextboxModule,\n PepSelectModule,\n PepSizeDetectorModule,\n PepGroupButtonsModule,\n PepSkeletonLoaderModule,\n PepDraggableItemsModule,\n PepGroupButtonsSettingsModule,\n PepHideInModule,\n PepLayoutModule,\n PepLayoutEditorModule,\n SectionEditorModule,\n // SectionBlockModule\n ],\n exports: [\n PepLayoutBuilderComponent,\n PepLayoutModule,\n ],\n providers: [\n LayoutBuilderInternalService,\n PepLayoutBuilderService\n ]\n})\nexport class PepLayoutBuilderModule { \n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconDeviceDesktop,\n pepIconDeviceTablet,\n pepIconDeviceMobile,\n ]);\n }\n}\n","import { PageBlockContainer, PageLayout, PageSection, PageSectionColumn, PageSizeType, SplitType } from \"@pepperi-addons/papi-sdk\";\nimport { IPepDraggableItem } from \"@pepperi-addons/ngx-lib/draggable-items\";\n\nexport type PepLayoutSizeType = PageSizeType;\n\nexport interface IPepLayout extends PageLayout {\n Sections: IPepLayoutSection[];\n VerticalSpacing?: PepLayoutSizeType;\n HorizontalSpacing?: PepLayoutSizeType;\n SectionsGap?: PepLayoutSizeType;\n ColumnsGap?: PepLayoutSizeType;\n}\nexport interface IPepLayoutSection extends PageSection { \n Columns: IPepLayoutSectionColumn[];\n ColumnsGap?: PepLayoutSizeType;\n}\nexport interface IPepLayoutSectionColumn extends PageSectionColumn {\n BlockContainer?: IPepLayoutBlockContainer;\n}\nexport interface IPepLayoutBlockContainer extends PageBlockContainer { \n DraggableItemKey: string,\n}\n\nexport interface IPepLayoutBlockAddedEvent {\n BlockKey: string,\n DraggableItem: IPepDraggableItem,\n}\n \nexport interface IPepLayoutView {\n // Id: string,\n Title: string,\n Layout: IPepLayout,\n}\n\nexport type LayoutEditorType = 'layout-builder' | 'section' | 'block';\n\nexport interface IEditor {\n id: string,\n title: string,\n type: LayoutEditorType,\n // remoteModuleOptions?: PepRemoteLoaderOptions,\n hostObject?: any\n}\n\nexport interface ILayoutEditor {\n // id: string,\n // pageName: string,\n // pageDescription: string,\n // parameters: IParamemeter[],\n // onLoadFlow: any,\n // onChangeFlow: any,\n maxWidth: number,\n horizontalSpacing?: PepLayoutSizeType,\n verticalSpacing?: PepLayoutSizeType,\n sectionsGap?: PepLayoutSizeType,\n columnsGap?: PepLayoutSizeType,\n roundedCorners?: PepLayoutSizeType,\n}\n\nexport interface ILayoutSectionEditor {\n id: string,\n sectionName: string,\n split: SplitType | undefined,\n height: number,\n collapseOnTablet: boolean,\n fillHeight: boolean\n}\n\n// export interface IBlockEditor {\n// id: string,\n// [key: string]: any\n// }","/*\n * Public API Surface of ngx-composite-lib/layout-builder\n */\nexport * from './layout-builder.module';\nexport * from './layout-builder.model';\nexport * from './layout-builder.service';\nexport * from './layout-builder.component';\nexport * from './layout/layout.module';\nexport * from './layout/layout.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i1.LayoutBuilderInternalService","i4","i5","i6.SectionBlockComponent","i7.PepHideInComponent","i8","i2.LayoutBuilderInternalService","i6","i7.SectionComponent","i7","i9","i10","i9.PepLayoutEditorComponent","i10.SectionEditorComponent"],"mappings":"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"}