@pepperi-addons/ngx-composite-lib 0.4.2-beta.86 → 0.4.2-beta.87

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-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/layout-builder-editor/layout-builder-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder-editor/layout-builder-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/main-editor/main-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/main-editor/main-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/layout-builder-editor/layout-builder-editor.module.ts","../../../projects/ngx-composite-lib/layout-builder/main-editor/main-editor.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-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/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 HideInComponent 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>{{('LAYOUT_BUILDER.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 { HideInComponent } 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: [HideInComponent],\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: [HideInComponent]\n})\nexport class HideInModule { \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, PepLayoutService, PepScreenSizeType, PepSessionService, PepUtilitiesService } from \"@pepperi-addons/ngx-lib\";\nimport { IPepDraggableItem } from \"@pepperi-addons/ngx-lib/draggable-items\";\nimport { DataViewScreenSize, SplitType } from \"@pepperi-addons/papi-sdk\";\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { PepLayoutEditorType, IPepLayoutBlockAddedEvent, IPepLayoutSection, IPepLayoutSectionColumn, IPepLayoutView, IPepLayoutBlockConfig, PepLayoutSizeType, IEditor } from \"./layout-builder.model\";\nimport { PepDialogData, PepDialogService } from \"@pepperi-addons/ngx-lib/dialog\";\n\n\nexport interface ILayoutEditor {\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@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 // This configuration is for blocks behavior.\n private _blocksLimitNumber = 0;\n private _navigateToEditorAfterBlockAdded = false;\n private _getBlockTitle: (blockKey: string) => string = (blockKey) => { return blockKey };\n setBlocksConfig(value: IPepLayoutBlockConfig) {\n this._blocksLimitNumber = value.blocksLimitNumber || 0;\n this._navigateToEditorAfterBlockAdded = value.navigateToEditorAfterBlockAdded ?? false;\n this._getBlockTitle = value.getBlockTitle ? value.getBlockTitle : (blockKey) => { return blockKey };\n }\n\n private _editorsBreadCrumb = Array<IEditor>();\n\n private _editMode = 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 = 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 | undefined> = new BehaviorSubject<PepScreenSizeType | undefined>(undefined);\n get screenSizeChange$(): Observable<PepScreenSizeType | undefined> {\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 constructor(\n protected translate: TranslateService,\n protected dialogService: PepDialogService,\n private layoutService: PepLayoutService,\n ) {\n //\n this.translate.get('LAYOUT_BUILDER.SECTION').subscribe((res: string) => {\n // Set the default section name.\n this._defaultSectionTitle = res;\n });\n\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.notifyScreenSizeChange(size);\n });\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 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 notifyScreenSizeChange(size: PepScreenSizeType) {\n this._screenSizeSubject.next(size);\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.RoundedCorners\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.translate.get('LAYOUT_BUILDER.DEFAULT_TITLE').subscribe((title: string) => {\n this._editorsBreadCrumb.push({\n id: LayoutBuilderInternalService.MAIN_EDITOR_ID,\n type : 'layout-builder',\n title: title,\n // hostObject: {} // Updates in updateLayoutEditorProperties function above.\n });\n\n this.updateLayoutEditorProperties(layoutView);\n this.notifyEditorChange(this._editorsBreadCrumb[0]);\n });\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: PepLayoutEditorType, id: string, title = ''): IEditor | null {\n // Build editor object.\n let editor: IEditor | null = null;\n\n if (editorType === 'section') {\n editor = this.getSectionEditor(id, title);\n } else if (editorType === 'block') {\n editor = this.getBlockEditor(id, title);\n }\n\n return editor;\n }\n\n private getBlockEditor(blockKey: string, title: string): IEditor {\n // Get block editor title.\n const blockTitle = title || this.getBlockTitle(blockKey); \n\n return {\n id: blockKey,\n type: 'block',\n title: blockTitle\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, title: 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 const 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: 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 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 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 /* Public functions\n /***********************************************************************************************/\n\n getBlockTitle(blockKey: string): string {\n return this._getBlockTitle(blockKey) || blockKey;\n }\n\n setSectionsColumnsDropListChange(sectionsColumnsDropList: any[]) {\n this.notifySectionsColumnsDropListChange(sectionsColumnsDropList);\n }\n\n changePreviewMode(value: boolean) {\n this.notifyPreviewModeChange(value);\n }\n\n getCurrentScreenType(): DataViewScreenSize {\n return this.getScreenType(this._screenSizeSubject?.getValue() || PepScreenSizeType.LG);\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 = '', index = '') {\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: PepLayoutEditorType, id: string, title = ''): 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 const editor = this.getEditorByType(editorType, id, title);\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.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 };\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\n this.notifyBlockAdded(blockAddedEventData); \n \n if (this._navigateToEditorAfterBlockAdded) {\n // Navigate to the block editor.\n this.navigateToEditor('block', blockKey);\n }\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 const width = coerceNumberProperty(value, 0);\n if (width === 0) {\n this._screenWidthSubject.next('100%');\n this.notifyScreenSizeChange(PepScreenSizeType.XL);\n } else {\n this._screenWidthSubject.next(`${width}px`);\n\n // Change the size according the width.\n if (width >= 1920) {\n this.notifyScreenSizeChange(PepScreenSizeType.XL);\n } else if (width >= 1280 && width < 1920) {\n this.notifyScreenSizeChange(PepScreenSizeType.LG);\n } else if (width >= 960 && width < 1280) {\n this.notifyScreenSizeChange(PepScreenSizeType.MD);\n } else if (width >= 600 && width < 960) {\n this.notifyScreenSizeChange(PepScreenSizeType.SM);\n } else if (width < 600) {\n this.notifyScreenSizeChange(PepScreenSizeType.XS);\n }\n }\n }\n\n showSkeleton(show: boolean) {\n this._showSkeletonSubject.next(show);\n }\n \n lockScreen(value: boolean) {\n this.notifyLockScreen(value);\n }\n\n loadLayoutBuilder(layoutView: IPepLayoutView): void {\n if (this.editMode) {\n if (this._editorsBreadCrumb.length === 0) {\n // Load the layout editor.\n this.loadDefaultEditor(layoutView);\n }\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 = '';\n @Input() sectionHeight = '';\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.layoutBuilderInternalService.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 protected blockTitle = '';\n\n constructor(\n private layoutBuilderInternalService: LayoutBuilderInternalService,\n ) {\n super();\n }\n \n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.blockContainer ? \n this.layoutBuilderInternalService.getIsHidden(this.blockContainer.Hide, this.screenType) : false;\n }\n \n ngOnInit(): void {\n this.blockTitle = this.layoutBuilderInternalService.getBlockTitle(this.blockContainer?.BlockKey || '');\n // \n // this.layoutBuilderInternalService.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.layoutBuilderInternalService.navigateToEditor('block', this.blockContainer.BlockKey, this.blockTitle);\n }\n }\n\n onRemoveBlockClick() {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderInternalService.removeBlockFromSection(this.blockContainer.BlockKey);\n }\n }\n\n onHideBlockChange(hideIn: DataViewScreenSize[]) {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.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]=\"blockTitle\" >\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>\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 }\">\n </ng-container>\n </div>\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 { 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 = '';\n @Input() name = '';\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 = false;\n @Input()\n set collapseOnTablet(value: boolean) {\n this._collapseOnTablet = value;\n this.pepScreenSizeToFlipToVertical = value ? PepScreenSizeType.MD : PepScreenSizeType.XS;\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.layoutBuilderInternalService.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 = '';\n protected draggingSectionKey = '';\n protected hoverState = false;\n\n constructor(\n private renderer: Renderer2,\n private layoutBuilderInternalService: 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.layoutBuilderInternalService.getScreenType(this.screenSize);\n this.setIfHideForCurrentScreenType();\n this.setStyleHeight();\n }\n\n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.layoutBuilderInternalService.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 const 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', 'unset');\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.layoutBuilderInternalService.getIsHidden(hideIn, currentScreenType);\n }\n\n ngOnInit(): void {\n this.layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe(previewMode => {\n this.refreshSplit();\n });\n\n // Just to calculate if sections contains blocks\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.screenSize = size;\n });\n\n if (this.editable) {\n this.layoutBuilderInternalService.sectionsColumnsDropListChange$.pipe(this.getDestroyer()).subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.draggingSectionKey.pipe(this.getDestroyer()).subscribe((draggingSectionKey: any) => {\n this.draggingSectionKey = draggingSectionKey;\n });\n }\n\n this.sectionColumnKeyPrefix = this.layoutBuilderInternalService.getSectionColumnKey(this.key);\n }\n\n onEditSectionClick() {\n this.layoutBuilderInternalService.navigateToEditor('section', this.key);\n }\n\n onRemoveSectionClick() {\n this.layoutBuilderInternalService.removeSection(this.key);\n }\n\n onHideSectionChange(hideIn: DataViewScreenSize[]) {\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.onBlockDropped(event, this.key);\n }\n\n canDropPredicate(columnIndex: number) {\n return (drag: CdkDrag, drop: CdkDropList) => {\n const res = !this.layoutBuilderInternalService.doesColumnContainBlock(this.key, columnIndex);\n return res;\n };\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderInternalService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.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 <ng-container *ngFor=\"let column of columns; let i=index;\">\n <div *ngIf=\"editable || (column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && !getIsHidden(column?.BlockContainer?.Hide, screenType))\" \n [id]=\"sectionColumnKeyPrefix + i\" \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 </ng-container>\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 { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\n\n@NgModule({\n declarations: [\n SectionBlockComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n PepDraggableItemsModule,\n ],\n exports: [SectionBlockComponent]\n})\nexport class SectionBlockModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\n\nimport { SectionComponent } from './section.component';\nimport { SectionBlockModule } from '../section-block/section-block.module';\nimport { HideInModule } from '../hide-in/hide-in.module';\n\n\n@NgModule({\n declarations: [SectionComponent],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n SectionBlockModule,\n HideInModule,\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 { 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.layoutBuilderInternalService.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.layoutBuilderInternalService.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 layoutBuilderInternalService: 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 const 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.layoutBuilderInternalService.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.layoutBuilderInternalService.editMode) {\n this.layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n }\n\n this.layoutBuilderInternalService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections: any) => {\n this._sectionsSubject.next(sections);\n });\n\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.onSectionDropped(event);\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderInternalService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.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 { 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@NgModule({\n declarations: [\n PepLayoutComponent,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n PepNgxLibModule,\n PepSkeletonLoaderModule,\n PepSizeDetectorModule,\n PepDialogModule,\n DragDropModule,\n SectionModule,\n TranslateModule.forChild()\n ],\n exports:[PepLayoutComponent],\n})\nexport class PepLayoutModule {\n}\n","import { AfterContentInit, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { OnInit, Component } from '@angular/core';\nimport { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';\nimport { IPepEditorTab } from '../layout-builder.model';\n\n@Component({\n selector: 'pep-layout-builder-editor',\n templateUrl: './layout-builder-editor.component.html',\n styleUrls: ['./layout-builder-editor.component.scss'],\n})\nexport class PepLayoutBuilderEditorComponent extends BaseDestroyerDirective {\n \n @Input() editorTabs: IPepEditorTab[] = [];\n\n constructor(\n private hostElement: ElementRef,\n private renderer: Renderer2,\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-builder-editor');\n }\n}\n","<ng-container *ngIf=\"editorTabs && editorTabs.length > 0 then tabsTemplate else regularTemplate\">\n</ng-container>\n<ng-template #tabsTemplate>\n <mat-tab-group #tabGroup class=\"layout-builder-editor-tabs\" animationDuration=\"0ms\">\n <mat-tab *ngFor=\"let tab of editorTabs\" label=\"{{tab.title | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <ng-container *ngIf=\"tab.templateRef\">\n <ng-container *ngTemplateOutlet=\"tab.templateRef; context: { tabKey: tab.key }\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!tab.templateRef\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n</ng-template>\n<ng-template #regularTemplate>\n <div class=\"layout-builder-editor-container\">\n <ng-content></ng-content>\n </div>\n</ng-template>","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { CdkDragEnd, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { AfterContentInit, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { OnInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepLayoutSizeType } from '../layout-builder.model';\nimport { ILayoutEditor, LayoutBuilderInternalService } from '../layout-builder-internal.service';\n\n\n@Component({\n selector: 'main-editor',\n templateUrl: './main-editor.component.html',\n styleUrls: ['./main-editor.component.scss'],\n})\nexport class MainEditorComponent extends BaseDestroyerDirective implements OnInit, AfterContentInit {\n @ViewChild('topContentRef', { static: true }) _topContentRef!: ElementRef;\n // @ViewChild('bottomContentRef', { static: true }) _bottomContentRef!: ElementRef;\n \n @ViewChild('availableBlocksContainer', { read: ElementRef }) availableBlocksContainer!: ElementRef;\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.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 get hostObject(): ILayoutEditor {\n return this._hostObject;\n }\n\n @Output() hostObjectChange: EventEmitter<ILayoutEditor> = new EventEmitter<ILayoutEditor>();\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 private layoutBuilderInternalService: LayoutBuilderInternalService,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-main-editor');\n }\n\n private updateHostObject() {\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.hostObjectChange.emit(this.hostObject);\n }\n\n ngOnInit(): void {\n this.layoutBuilderInternalService.sectionsColumnsDropListChange$.subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n }\n\n ngAfterContentInit(): 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.layoutBuilderInternalService.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.layoutBuilderInternalService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.onBlockDragEnd(event);\n }\n}\n","<pep-layout-builder-editor [editorTabs]=\"[\n {key: '1', title: 'LAYOUT_BUILDER.GENERAL', templateRef: firstTabTemplate}, \n {key: '2', title: 'LAYOUT_BUILDER.DESIGN', templateRef: secondTabTemplate}]\">\n</pep-layout-builder-editor>\n\n<ng-template #firstTabTemplate let-tabKey=\"tabKey\">\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</ng-template>\n\n<ng-template #secondTabTemplate let-tabKey=\"tabKey\">\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</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { OverlayModule} from '@angular/cdk/overlay';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\n\nimport { PepLayoutBuilderEditorComponent } from './layout-builder-editor.component';\n\n@NgModule({\n declarations: [\n PepLayoutBuilderEditorComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n OverlayModule,\n MatTabsModule,\n PepNgxLibModule,\n TranslateModule.forChild()\n ],\n exports:[PepLayoutBuilderEditorComponent]\n})\nexport class PepLayoutBuilderEditorModule {\n constructor() {\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 { OverlayModule} from '@angular/cdk/overlay';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\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 { MainEditorComponent } from './main-editor.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PepLayoutBuilderEditorModule } from '../layout-builder-editor/layout-builder-editor.module';\n\n@NgModule({\n declarations: [\n MainEditorComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n DragDropModule,\n OverlayModule,\n MatTabsModule,\n MatSliderModule,\n PepNgxLibModule,\n PepSelectModule,\n PepTextboxModule,\n PepButtonModule,\n PepCheckboxModule,\n PepGroupButtonsModule,\n PepColorModule,\n PepImageModule,\n PepGroupButtonsSettingsModule,\n PepDraggableItemsModule,\n PepDialogModule,\n PepLayoutBuilderEditorModule,\n TranslateModule.forChild()\n ],\n exports:[MainEditorComponent]\n})\nexport class MainEditorModule {\n constructor(\n // private pepIconRegistry: PepIconRegistry\n ) {\n // this.pepIconRegistry.registerIcons(pepIcons);\n }\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-internal.service';\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 = '';\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 = true;\n height: number = this.MIN_HEIGHT;\n\n @Output() hostObjectChange: EventEmitter<ILayoutSectionEditor> = new EventEmitter<ILayoutSectionEditor>();\n \n collapseOnTablet = false;\n fillHeight = false;\n subSections = false;\n partsNumber = \"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","<pep-layout-builder-editor class=\"section-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 <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</pep-layout-builder-editor>\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 <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';\nimport { PepLayoutBuilderEditorModule } from '../layout-builder-editor/layout-builder-editor.module';\n\n@NgModule({\n declarations: [SectionEditorComponent],\n imports: [\n CommonModule,\n PepButtonModule,\n PepTextboxModule,\n PepSelectModule,\n PepCheckboxModule,\n PepLayoutBuilderEditorModule,\n TranslateModule.forChild()\n ],\n exports: [SectionEditorComponent]\n})\nexport class SectionEditorModule { }\n","import { ElementRef, Renderer2, ViewChild, OnInit, Component, EventEmitter, Input, Output, HostListener, OnDestroy } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { BaseDestroyerDirective, PepAddonService } 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 { IPepLayoutSection, IPepLayoutBlockAddedEvent, IPepLayoutBlockConfig, IEditor } from './layout-builder.model';\nimport { ILayoutEditor, ILayoutSectionEditor, LayoutBuilderInternalService } from './layout-builder-internal.service';\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, OnDestroy {\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 }\n get availableBlocksForDrag(): Array<IPepDraggableItem> {\n return this._availableBlocksForDrag;\n }\n\n private _blocksLayoutConfig: IPepLayoutBlockConfig = {};\n @Input()\n set blocksLayoutConfig(value: IPepLayoutBlockConfig) {\n this._blocksLayoutConfig = value;\n this.layoutBuilderInternalService.setBlocksConfig(this._blocksLayoutConfig);\n }\n \n private _layoutEditorTitle = '';\n @Input()\n set layoutEditorTitle(value: string) {\n this._layoutEditorTitle = value;\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();\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 = 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 layoutBuilderInternalService: 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 }\n\n private setScreenWidth(screenType: DataViewScreenSize) {\n this.layoutBuilderInternalService.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 subscribeEvents() {\n /***********************************************************************************************/\n /* Internal Events - for code usage\n /***********************************************************************************************/\n\n this.layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n\n this.layoutBuilderInternalService.lockScreenChange$.pipe(this.getDestroyer()).subscribe((lockScreen: any) => {\n this.lockScreen = lockScreen;\n });\n\n this.layoutBuilderInternalService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n const screenType = this.layoutBuilderInternalService.getScreenType(size);\n this.selectedScreenType = screenType;\n });\n\n // For update the layout data\n this.layoutBuilderInternalService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView: any) => {\n if (layoutView) {\n if (this.layoutBuilderWrapper?.nativeElement) {\n const 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.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.getSectionColumnKey(section.Key, index.toString())\n )\n }));\n\n this.layoutBuilderInternalService.setSectionsColumnsDropListChange(sectionsColumnsDropList);\n });\n\n\n /***********************************************************************************************/\n /* External Events - for raise to the client\n /***********************************************************************************************/\n\n // For update editor.\n this.layoutBuilderInternalService.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 \n // Raise event to let the user set the block editor in the UI.\n this.editorChange.emit(editor);\n }\n });\n\n this.layoutBuilderInternalService.blockAddedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event) {\n this.blockAdded.emit(event);\n }\n });\n\n this.layoutBuilderInternalService.blocksRemovedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event?.length > 0) {\n this.blocksRemoved.emit(event);\n }\n });\n }\n\n ngOnInit() {\n this.layoutBuilderInternalService.setEditMode(true);\n\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 ngOnDestroy() {\n super.ngOnDestroy();\n this.layoutBuilderInternalService.setEditMode(false);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any): void {\n this.updateViewportWidth();\n }\n\n togglePreviewMode() {\n this.layoutBuilderInternalService.changePreviewMode(!this.previewMode);\n this.updateViewportWidth();\n }\n\n onSidebarStateChange(event: IPepSideBarStateChangeEvent) {\n this.updateViewportWidth();\n }\n\n onLayoutEditorObjectChange(pageEditor: ILayoutEditor) {\n this.layoutBuilderInternalService.updateLayoutFromEditor(pageEditor);\n }\n\n onSectionEditorObjectChange(sectionEditor: ILayoutSectionEditor) {\n this.layoutBuilderInternalService.updateSectionFromEditor(sectionEditor);\n }\n\n onNavigateBackFromEditor() {\n if (!this.currentEditor || this.currentEditor?.type === 'layout-builder') {\n this.backClick.emit();\n } else {\n this.layoutBuilderInternalService.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 #editorTitle class=\"title title-lg ellipsis\" \n [title]=\"currentEditor.type === 'layout-builder' ? (layoutEditorTitle || currentEditor.title) : currentEditor.title\">\n <span>{{ editorTitle.title }}</span>\n </div>\n </div>\n <div class=\"layout-builder-editor-wrapper\">\n <main-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 </main-editor>\n \n <section-editor *ngIf=\"currentEditor.type === 'section'\" \n [hostObject]=\"currentEditor.hostObject\" (hostObjectChange)=\"onSectionEditorObjectChange($event)\"></section-editor>\n \n <ng-container *ngIf=\"currentEditor.type === 'block'\" >\n <ng-content select=\"[block-editor-content]\"></ng-content>\n </ng-container>\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\" (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 lockScreen(lock: boolean) {\n return this.layoutBuilderInternalService.lockScreen(lock);\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 { 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 { HideInModule } from './hide-in/hide-in.module';\nimport { PepLayoutModule } from './layout/layout.module';\nimport { MainEditorModule } from './main-editor/main-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';\nimport { PepLayoutBuilderEditorModule } from './layout-builder-editor/layout-builder-editor.module';\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 PepDraggableItemsModule,\n PepGroupButtonsSettingsModule,\n HideInModule,\n PepLayoutModule,\n MainEditorModule,\n SectionEditorModule,\n PepLayoutBuilderEditorModule\n // SectionBlockModule\n ],\n exports: [\n PepLayoutBuilderComponent,\n PepLayoutModule,\n PepLayoutBuilderEditorModule\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","/*\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-builder-editor/layout-builder-editor.module';\nexport * from './layout-builder-editor/layout-builder-editor.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":["i6","i1","i2","i3","i1.LayoutBuilderInternalService","i4","i5","i5.SectionBlockComponent","i6.HideInComponent","i6.SectionComponent","i7","i8.PepLayoutBuilderEditorComponent","i9","i6.PepLayoutBuilderEditorComponent","i2.LayoutBuilderInternalService","i9.MainEditorComponent","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/layout-builder-editor/layout-builder-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/layout-builder-editor/layout-builder-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/main-editor/main-editor.component.ts","../../../projects/ngx-composite-lib/layout-builder/main-editor/main-editor.component.html","../../../projects/ngx-composite-lib/layout-builder/layout-builder-editor/layout-builder-editor.module.ts","../../../projects/ngx-composite-lib/layout-builder/main-editor/main-editor.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-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/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 HideInComponent 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>{{('LAYOUT_BUILDER.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 { HideInComponent } 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: [HideInComponent],\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: [HideInComponent]\n})\nexport class HideInModule { \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, PepLayoutService, PepScreenSizeType, PepSessionService, PepUtilitiesService } from \"@pepperi-addons/ngx-lib\";\nimport { IPepDraggableItem } from \"@pepperi-addons/ngx-lib/draggable-items\";\nimport { DataViewScreenSize, SplitType } from \"@pepperi-addons/papi-sdk\";\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { PepLayoutEditorType, IPepLayoutBlockAddedEvent, IPepLayoutSection, IPepLayoutSectionColumn, IPepLayoutView, IPepLayoutBlockConfig, PepLayoutSizeType, IEditor } from \"./layout-builder.model\";\nimport { PepDialogData, PepDialogService } from \"@pepperi-addons/ngx-lib/dialog\";\n\n\nexport interface ILayoutEditor {\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@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 // This configuration is for blocks behavior.\n private _blocksLimitNumber = 0;\n private _navigateToEditorAfterBlockAdded = false;\n private _getBlockTitle: (blockKey: string) => string = (blockKey) => { return blockKey };\n setBlocksConfig(value: IPepLayoutBlockConfig) {\n this._blocksLimitNumber = value.blocksLimitNumber || 0;\n this._navigateToEditorAfterBlockAdded = value.navigateToEditorAfterBlockAdded ?? false;\n this._getBlockTitle = value.getBlockTitle ? value.getBlockTitle : (blockKey) => { return blockKey };\n }\n\n private _editorsBreadCrumb = Array<IEditor>();\n\n private _editMode = 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 = 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 | undefined> = new BehaviorSubject<PepScreenSizeType | undefined>(undefined);\n get screenSizeChange$(): Observable<PepScreenSizeType | undefined> {\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 constructor(\n protected translate: TranslateService,\n protected dialogService: PepDialogService,\n private layoutService: PepLayoutService,\n ) {\n //\n this.translate.get('LAYOUT_BUILDER.SECTION').subscribe((res: string) => {\n // Set the default section name.\n this._defaultSectionTitle = res;\n });\n\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.notifyScreenSizeChange(size);\n });\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 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 notifyScreenSizeChange(size: PepScreenSizeType) {\n this._screenSizeSubject.next(size);\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.RoundedCorners\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.translate.get('LAYOUT_BUILDER.DEFAULT_TITLE').subscribe((title: string) => {\n this._editorsBreadCrumb.push({\n id: LayoutBuilderInternalService.MAIN_EDITOR_ID,\n type : 'layout-builder',\n title: title,\n // hostObject: {} // Updates in updateLayoutEditorProperties function above.\n });\n\n this.updateLayoutEditorProperties(layoutView);\n this.notifyEditorChange(this._editorsBreadCrumb[0]);\n });\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: PepLayoutEditorType, id: string, title = ''): IEditor | null {\n // Build editor object.\n let editor: IEditor | null = null;\n\n if (editorType === 'section') {\n editor = this.getSectionEditor(id, title);\n } else if (editorType === 'block') {\n editor = this.getBlockEditor(id, title);\n }\n\n return editor;\n }\n\n private getBlockEditor(blockKey: string, title: string): IEditor {\n // Get block editor title.\n const blockTitle = title || this.getBlockTitle(blockKey); \n\n return {\n id: blockKey,\n type: 'block',\n title: blockTitle\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, title: 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 const 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: 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 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 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 /* Public functions\n /***********************************************************************************************/\n\n getBlockTitle(blockKey: string): string {\n return this._getBlockTitle(blockKey) || blockKey;\n }\n\n setSectionsColumnsDropListChange(sectionsColumnsDropList: any[]) {\n this.notifySectionsColumnsDropListChange(sectionsColumnsDropList);\n }\n\n changePreviewMode(value: boolean) {\n this.notifyPreviewModeChange(value);\n }\n\n getCurrentScreenType(): DataViewScreenSize {\n return this.getScreenType(this._screenSizeSubject?.getValue() || PepScreenSizeType.LG);\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 = '', index = '') {\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: PepLayoutEditorType, id: string, title = ''): 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 const editor = this.getEditorByType(editorType, id, title);\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.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 };\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\n this.notifyBlockAdded(blockAddedEventData); \n \n if (this._navigateToEditorAfterBlockAdded) {\n // Navigate to the block editor.\n this.navigateToEditor('block', blockKey);\n }\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 const width = coerceNumberProperty(value, 0);\n if (width === 0) {\n this._screenWidthSubject.next('100%');\n this.notifyScreenSizeChange(PepScreenSizeType.XL);\n } else {\n this._screenWidthSubject.next(`${width}px`);\n\n // Change the size according the width.\n if (width >= 1920) {\n this.notifyScreenSizeChange(PepScreenSizeType.XL);\n } else if (width >= 1280 && width < 1920) {\n this.notifyScreenSizeChange(PepScreenSizeType.LG);\n } else if (width >= 960 && width < 1280) {\n this.notifyScreenSizeChange(PepScreenSizeType.MD);\n } else if (width >= 600 && width < 960) {\n this.notifyScreenSizeChange(PepScreenSizeType.SM);\n } else if (width < 600) {\n this.notifyScreenSizeChange(PepScreenSizeType.XS);\n }\n }\n }\n\n showSkeleton(show: boolean) {\n this._showSkeletonSubject.next(show);\n }\n \n lockScreen(value: boolean) {\n this.notifyLockScreen(value);\n }\n\n loadLayoutBuilder(layoutView: IPepLayoutView): void {\n if (this.editMode) {\n if (this._editorsBreadCrumb.length === 0) {\n // Load the layout editor.\n this.loadDefaultEditor(layoutView);\n }\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 = '';\n @Input() sectionHeight = '';\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.layoutBuilderInternalService.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 protected blockTitle = '';\n\n constructor(\n private layoutBuilderInternalService: LayoutBuilderInternalService,\n ) {\n super();\n }\n \n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.blockContainer ? \n this.layoutBuilderInternalService.getIsHidden(this.blockContainer.Hide, this.screenType) : false;\n }\n \n ngOnInit(): void {\n this.blockTitle = this.layoutBuilderInternalService.getBlockTitle(this.blockContainer?.BlockKey || '');\n // \n // this.layoutBuilderInternalService.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.layoutBuilderInternalService.navigateToEditor('block', this.blockContainer.BlockKey, this.blockTitle);\n }\n }\n\n onRemoveBlockClick() {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderInternalService.removeBlockFromSection(this.blockContainer.BlockKey);\n }\n }\n\n onHideBlockChange(hideIn: DataViewScreenSize[]) {\n if (this.blockContainer?.BlockKey) {\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.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]=\"blockTitle\" >\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>\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 }\">\n </ng-container>\n </div>\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 { 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 = '';\n @Input() name = '';\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 = false;\n @Input()\n set collapseOnTablet(value: boolean) {\n this._collapseOnTablet = value;\n this.pepScreenSizeToFlipToVertical = value ? PepScreenSizeType.MD : PepScreenSizeType.XS;\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.layoutBuilderInternalService.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 = '';\n protected draggingSectionKey = '';\n protected hoverState = false;\n\n constructor(\n private renderer: Renderer2,\n private layoutBuilderInternalService: 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.layoutBuilderInternalService.getScreenType(this.screenSize);\n this.setIfHideForCurrentScreenType();\n this.setStyleHeight();\n }\n\n private setIfHideForCurrentScreenType(): void {\n this.hideForCurrentScreenType = this.layoutBuilderInternalService.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 getCssGridColumn(columnIndex: number) {\n let res = '1/13';\n let gridColumnValueArr = ['1/13'];\n\n switch (this.split) {\n case '1/2 1/2':\n gridColumnValueArr = ['1/7', '7/13'];\n break;\n case '1/2 1/4 1/4':\n gridColumnValueArr = ['1/7', '7/10', '10/13'];\n break;\n case '1/3 1/3 1/3':\n gridColumnValueArr = ['1/5', '5/9', '9/13'];\n break;\n case '1/3 2/3':\n gridColumnValueArr = ['1/5', '5/13'];\n break;\n case '1/4 1/2 1/4':\n gridColumnValueArr = ['1/4', '4/10', '10/13'];\n break;\n case '1/4 1/4 1/2':\n gridColumnValueArr = ['1/4', '4/7', '7/13'];\n break;\n case '1/4 1/4 1/4 1/4':\n gridColumnValueArr = ['1/4', '4/7', '7/10', '10/13'];\n break;\n case '1/4 3/4':\n gridColumnValueArr = ['1/4', '4/13'];\n break;\n case '2/3 1/3':\n gridColumnValueArr = ['1/9', '9/13'];\n break;\n case '3/4 1/4':\n gridColumnValueArr = ['1/10', '10/13'];\n break;\n }\n\n if (gridColumnValueArr.length > columnIndex) {\n res = gridColumnValueArr[columnIndex];\n }\n\n return res;\n }\n\n private setSectionColumnStyle(sectionColumn: ElementRef, columnIndex: number, isHorizontalView: boolean) {\n\n if (isHorizontalView) {\n const gridColumnValue = this.getCssGridColumn(columnIndex);\n this.renderer.setStyle(sectionColumn.nativeElement, 'grid-column', gridColumnValue);\n } else {\n this.renderer.setStyle(sectionColumn.nativeElement, 'grid-column', 'unset');\n }\n }\n\n private refreshSplit() {\n setTimeout(() => {\n if (this.sectionContainerRef) {\n // const 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', 'unset');\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', cssSplitArray.join(' '));\n this.renderer.setStyle(section.nativeElement, 'grid-template-rows', 'auto');\n }\n }\n\n // Go for all the columns in the section and set there style.\n const sectionColumns = section.nativeElement.querySelectorAll('.section-column');\n \n for (var columnIndex = 0; columnIndex < sectionColumns.length; columnIndex++) { \n this.setSectionColumnStyle(sectionColumns[columnIndex], columnIndex, isHorizontalView);\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.layoutBuilderInternalService.getIsHidden(hideIn, currentScreenType);\n }\n\n ngOnInit(): void {\n this.layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe(previewMode => {\n this.refreshSplit();\n });\n\n // Just to calculate if sections contains blocks\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n this.screenSize = size;\n });\n\n if (this.editable) {\n this.layoutBuilderInternalService.sectionsColumnsDropListChange$.pipe(this.getDestroyer()).subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.draggingSectionKey.pipe(this.getDestroyer()).subscribe((draggingSectionKey: any) => {\n this.draggingSectionKey = draggingSectionKey;\n });\n }\n\n this.sectionColumnKeyPrefix = this.layoutBuilderInternalService.getSectionColumnKey(this.key);\n }\n\n onEditSectionClick() {\n this.layoutBuilderInternalService.navigateToEditor('section', this.key);\n }\n\n onRemoveSectionClick() {\n this.layoutBuilderInternalService.removeSection(this.key);\n }\n\n onHideSectionChange(hideIn: DataViewScreenSize[]) {\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.onBlockDropped(event, this.key);\n }\n\n canDropPredicate(columnIndex: number) {\n return (drag: CdkDrag, drop: CdkDropList) => {\n const res = !this.layoutBuilderInternalService.doesColumnContainBlock(this.key, columnIndex);\n return res;\n };\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderInternalService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.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 <ng-container *ngFor=\"let column of columns; let i=index;\">\n <div *ngIf=\"editable || (column.BlockContainer && column.BlockContainer.BlockKey && column.BlockContainer.BlockKey.length > 0 && !getIsHidden(column?.BlockContainer?.Hide, screenType))\" \n [id]=\"sectionColumnKeyPrefix + i\" \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 </ng-container>\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 { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\n\n@NgModule({\n declarations: [\n SectionBlockComponent,\n ],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n PepDraggableItemsModule,\n ],\n exports: [SectionBlockComponent]\n})\nexport class SectionBlockModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepDraggableItemsModule } from '@pepperi-addons/ngx-lib/draggable-items';\n\nimport { SectionComponent } from './section.component';\nimport { SectionBlockModule } from '../section-block/section-block.module';\nimport { HideInModule } from '../hide-in/hide-in.module';\n\n\n@NgModule({\n declarations: [SectionComponent],\n imports: [\n CommonModule,\n DragDropModule,\n PepButtonModule,\n SectionBlockModule,\n HideInModule,\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 { 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.layoutBuilderInternalService.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.layoutBuilderInternalService.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 layoutBuilderInternalService: 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 const 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.layoutBuilderInternalService.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.layoutBuilderInternalService.editMode) {\n this.layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n }\n\n this.layoutBuilderInternalService.sectionsChange$.pipe(this.getDestroyer()).subscribe((sections: any) => {\n this._sectionsSubject.next(sections);\n });\n\n this.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.onSectionDropped(event);\n }\n\n onDragStart(event: CdkDragStart) {\n this.layoutBuilderInternalService.onSectionDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.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 { 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@NgModule({\n declarations: [\n PepLayoutComponent,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n PepNgxLibModule,\n PepSkeletonLoaderModule,\n PepSizeDetectorModule,\n PepDialogModule,\n DragDropModule,\n SectionModule,\n TranslateModule.forChild()\n ],\n exports:[PepLayoutComponent],\n})\nexport class PepLayoutModule {\n}\n","import { AfterContentInit, ElementRef, Input, Renderer2 } from '@angular/core';\nimport { OnInit, Component } from '@angular/core';\nimport { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';\nimport { IPepEditorTab } from '../layout-builder.model';\n\n@Component({\n selector: 'pep-layout-builder-editor',\n templateUrl: './layout-builder-editor.component.html',\n styleUrls: ['./layout-builder-editor.component.scss'],\n})\nexport class PepLayoutBuilderEditorComponent extends BaseDestroyerDirective {\n \n @Input() editorTabs: IPepEditorTab[] = [];\n\n constructor(\n private hostElement: ElementRef,\n private renderer: Renderer2,\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-builder-editor');\n }\n}\n","<ng-container *ngIf=\"editorTabs && editorTabs.length > 0 then tabsTemplate else regularTemplate\">\n</ng-container>\n<ng-template #tabsTemplate>\n <mat-tab-group #tabGroup class=\"layout-builder-editor-tabs\" animationDuration=\"0ms\">\n <mat-tab *ngFor=\"let tab of editorTabs\" label=\"{{tab.title | translate}}\">\n <div class=\"layout-builder-editor-tab\">\n <ng-container *ngIf=\"tab.templateRef\">\n <ng-container *ngTemplateOutlet=\"tab.templateRef; context: { tabKey: tab.key }\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!tab.templateRef\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n</ng-template>\n<ng-template #regularTemplate>\n <div class=\"layout-builder-editor-container\">\n <ng-content></ng-content>\n </div>\n</ng-template>","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { CdkDragEnd, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { AfterContentInit, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { OnInit, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BaseDestroyerDirective } from '@pepperi-addons/ngx-lib';\nimport { IPepDraggableItem } from '@pepperi-addons/ngx-lib/draggable-items';\nimport { PepLayoutSizeType } from '../layout-builder.model';\nimport { ILayoutEditor, LayoutBuilderInternalService } from '../layout-builder-internal.service';\n\n\n@Component({\n selector: 'main-editor',\n templateUrl: './main-editor.component.html',\n styleUrls: ['./main-editor.component.scss'],\n})\nexport class MainEditorComponent extends BaseDestroyerDirective implements OnInit, AfterContentInit {\n @ViewChild('topContentRef', { static: true }) _topContentRef!: ElementRef;\n // @ViewChild('bottomContentRef', { static: true }) _bottomContentRef!: ElementRef;\n \n @ViewChild('availableBlocksContainer', { read: ElementRef }) availableBlocksContainer!: ElementRef;\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.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 get hostObject(): ILayoutEditor {\n return this._hostObject;\n }\n\n @Output() hostObjectChange: EventEmitter<ILayoutEditor> = new EventEmitter<ILayoutEditor>();\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 private layoutBuilderInternalService: LayoutBuilderInternalService,\n private hostElement: ElementRef,\n private renderer: Renderer2,\n ) {\n super();\n this.renderer.addClass(this.hostElement.nativeElement, 'pep-layout-main-editor');\n }\n\n private updateHostObject() {\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.hostObjectChange.emit(this.hostObject);\n }\n\n ngOnInit(): void {\n this.layoutBuilderInternalService.sectionsColumnsDropListChange$.subscribe((sectionsColumnsDropList: any) => {\n this.sectionsColumnsDropList = sectionsColumnsDropList;\n });\n }\n\n ngAfterContentInit(): 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.layoutBuilderInternalService.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.layoutBuilderInternalService.onBlockDragStart(event);\n }\n\n onDragEnd(event: CdkDragEnd) {\n this.layoutBuilderInternalService.onBlockDragEnd(event);\n }\n}\n","<pep-layout-builder-editor [editorTabs]=\"[\n {key: '1', title: 'LAYOUT_BUILDER.GENERAL', templateRef: firstTabTemplate}, \n {key: '2', title: 'LAYOUT_BUILDER.DESIGN', templateRef: secondTabTemplate}]\">\n</pep-layout-builder-editor>\n\n<ng-template #firstTabTemplate let-tabKey=\"tabKey\">\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</ng-template>\n\n<ng-template #secondTabTemplate let-tabKey=\"tabKey\">\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</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { OverlayModule} from '@angular/cdk/overlay';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\n\nimport { PepLayoutBuilderEditorComponent } from './layout-builder-editor.component';\n\n@NgModule({\n declarations: [\n PepLayoutBuilderEditorComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n OverlayModule,\n MatTabsModule,\n PepNgxLibModule,\n TranslateModule.forChild()\n ],\n exports:[PepLayoutBuilderEditorComponent]\n})\nexport class PepLayoutBuilderEditorModule {\n constructor() {\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 { OverlayModule} from '@angular/cdk/overlay';\nimport { PepSelectModule } from '@pepperi-addons/ngx-lib/select';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PepCheckboxModule } from '@pepperi-addons/ngx-lib/checkbox';\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 { MainEditorComponent } from './main-editor.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PepLayoutBuilderEditorModule } from '../layout-builder-editor/layout-builder-editor.module';\n\n@NgModule({\n declarations: [\n MainEditorComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n DragDropModule,\n OverlayModule,\n MatTabsModule,\n MatSliderModule,\n PepNgxLibModule,\n PepSelectModule,\n PepTextboxModule,\n PepButtonModule,\n PepCheckboxModule,\n PepGroupButtonsModule,\n PepColorModule,\n PepImageModule,\n PepGroupButtonsSettingsModule,\n PepDraggableItemsModule,\n PepDialogModule,\n PepLayoutBuilderEditorModule,\n TranslateModule.forChild()\n ],\n exports:[MainEditorComponent]\n})\nexport class MainEditorModule {\n constructor(\n // private pepIconRegistry: PepIconRegistry\n ) {\n // this.pepIconRegistry.registerIcons(pepIcons);\n }\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-internal.service';\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 = '';\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 = true;\n height: number = this.MIN_HEIGHT;\n\n @Output() hostObjectChange: EventEmitter<ILayoutSectionEditor> = new EventEmitter<ILayoutSectionEditor>();\n \n collapseOnTablet = false;\n fillHeight = false;\n subSections = false;\n partsNumber = \"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","<pep-layout-builder-editor class=\"section-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 <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</pep-layout-builder-editor>\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 <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';\nimport { PepLayoutBuilderEditorModule } from '../layout-builder-editor/layout-builder-editor.module';\n\n@NgModule({\n declarations: [SectionEditorComponent],\n imports: [\n CommonModule,\n PepButtonModule,\n PepTextboxModule,\n PepSelectModule,\n PepCheckboxModule,\n PepLayoutBuilderEditorModule,\n TranslateModule.forChild()\n ],\n exports: [SectionEditorComponent]\n})\nexport class SectionEditorModule { }\n","import { ElementRef, Renderer2, ViewChild, OnInit, Component, EventEmitter, Input, Output, HostListener, OnDestroy } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { BaseDestroyerDirective, PepAddonService } 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 { IPepLayoutSection, IPepLayoutBlockAddedEvent, IPepLayoutBlockConfig, IEditor } from './layout-builder.model';\nimport { ILayoutEditor, ILayoutSectionEditor, LayoutBuilderInternalService } from './layout-builder-internal.service';\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, OnDestroy {\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 }\n get availableBlocksForDrag(): Array<IPepDraggableItem> {\n return this._availableBlocksForDrag;\n }\n\n private _blocksLayoutConfig: IPepLayoutBlockConfig = {};\n @Input()\n set blocksLayoutConfig(value: IPepLayoutBlockConfig) {\n this._blocksLayoutConfig = value;\n this.layoutBuilderInternalService.setBlocksConfig(this._blocksLayoutConfig);\n }\n \n private _layoutEditorTitle = '';\n @Input()\n set layoutEditorTitle(value: string) {\n this._layoutEditorTitle = value;\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();\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 = 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 layoutBuilderInternalService: 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 }\n\n private setScreenWidth(screenType: DataViewScreenSize) {\n this.layoutBuilderInternalService.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 subscribeEvents() {\n /***********************************************************************************************/\n /* Internal Events - for code usage\n /***********************************************************************************************/\n\n this.layoutBuilderInternalService.previewModeChange$.pipe(this.getDestroyer()).subscribe((previewMode: any) => {\n this.previewMode = previewMode;\n });\n\n this.layoutBuilderInternalService.lockScreenChange$.pipe(this.getDestroyer()).subscribe((lockScreen: any) => {\n this.lockScreen = lockScreen;\n });\n\n this.layoutBuilderInternalService.screenSizeChange$.pipe(this.getDestroyer()).subscribe((size: any) => {\n const screenType = this.layoutBuilderInternalService.getScreenType(size);\n this.selectedScreenType = screenType;\n });\n\n // For update the layout data\n this.layoutBuilderInternalService.layoutViewChange$.pipe(this.getDestroyer()).subscribe((layoutView: any) => {\n if (layoutView) {\n if (this.layoutBuilderWrapper?.nativeElement) {\n const 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.layoutBuilderInternalService.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.layoutBuilderInternalService.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.layoutBuilderInternalService.getSectionColumnKey(section.Key, index.toString())\n )\n }));\n\n this.layoutBuilderInternalService.setSectionsColumnsDropListChange(sectionsColumnsDropList);\n });\n\n\n /***********************************************************************************************/\n /* External Events - for raise to the client\n /***********************************************************************************************/\n\n // For update editor.\n this.layoutBuilderInternalService.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 \n // Raise event to let the user set the block editor in the UI.\n this.editorChange.emit(editor);\n }\n });\n\n this.layoutBuilderInternalService.blockAddedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event) {\n this.blockAdded.emit(event);\n }\n });\n\n this.layoutBuilderInternalService.blocksRemovedEventSubject$.pipe(this.getDestroyer()).subscribe((event: any) => {\n if (event?.length > 0) {\n this.blocksRemoved.emit(event);\n }\n });\n }\n\n ngOnInit() {\n this.layoutBuilderInternalService.setEditMode(true);\n\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 ngOnDestroy() {\n super.ngOnDestroy();\n this.layoutBuilderInternalService.setEditMode(false);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: any): void {\n this.updateViewportWidth();\n }\n\n togglePreviewMode() {\n this.layoutBuilderInternalService.changePreviewMode(!this.previewMode);\n this.updateViewportWidth();\n }\n\n onSidebarStateChange(event: IPepSideBarStateChangeEvent) {\n this.updateViewportWidth();\n }\n\n onLayoutEditorObjectChange(pageEditor: ILayoutEditor) {\n this.layoutBuilderInternalService.updateLayoutFromEditor(pageEditor);\n }\n\n onSectionEditorObjectChange(sectionEditor: ILayoutSectionEditor) {\n this.layoutBuilderInternalService.updateSectionFromEditor(sectionEditor);\n }\n\n onNavigateBackFromEditor() {\n if (!this.currentEditor || this.currentEditor?.type === 'layout-builder') {\n this.backClick.emit();\n } else {\n this.layoutBuilderInternalService.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 #editorTitle class=\"title title-lg ellipsis\" \n [title]=\"currentEditor.type === 'layout-builder' ? (layoutEditorTitle || currentEditor.title) : currentEditor.title\">\n <span>{{ editorTitle.title }}</span>\n </div>\n </div>\n <div class=\"layout-builder-editor-wrapper\">\n <main-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 </main-editor>\n \n <section-editor *ngIf=\"currentEditor.type === 'section'\" \n [hostObject]=\"currentEditor.hostObject\" (hostObjectChange)=\"onSectionEditorObjectChange($event)\"></section-editor>\n \n <ng-container *ngIf=\"currentEditor.type === 'block'\" >\n <ng-content select=\"[block-editor-content]\"></ng-content>\n </ng-container>\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\" (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 lockScreen(lock: boolean) {\n return this.layoutBuilderInternalService.lockScreen(lock);\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 { 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 { HideInModule } from './hide-in/hide-in.module';\nimport { PepLayoutModule } from './layout/layout.module';\nimport { MainEditorModule } from './main-editor/main-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';\nimport { PepLayoutBuilderEditorModule } from './layout-builder-editor/layout-builder-editor.module';\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 PepDraggableItemsModule,\n PepGroupButtonsSettingsModule,\n HideInModule,\n PepLayoutModule,\n MainEditorModule,\n SectionEditorModule,\n PepLayoutBuilderEditorModule\n // SectionBlockModule\n ],\n exports: [\n PepLayoutBuilderComponent,\n PepLayoutModule,\n PepLayoutBuilderEditorModule\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","/*\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-builder-editor/layout-builder-editor.module';\nexport * from './layout-builder-editor/layout-builder-editor.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":["i6","i1","i2","i3","i1.LayoutBuilderInternalService","i4","i5","i5.SectionBlockComponent","i6.HideInComponent","i6.SectionComponent","i7","i8.PepLayoutBuilderEditorComponent","i9","i6.PepLayoutBuilderEditorComponent","i2.LayoutBuilderInternalService","i9.MainEditorComponent","i10.SectionEditorComponent"],"mappings":"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"}