UNPKG

@mindfiredigital/page-builder-web-component

Version:
1 lines 7.74 kB
{"version":3,"sources":["../src/index.ts","../src/components/PageBuilder.ts"],"sourcesContent":["export * from './components/PageBuilder';\n","import { PageBuilder } from '@mindfiredigital/page-builder/dist/PageBuilder.js';\n\nexport interface PageBuilderDesign {\n pages?: Array<{\n id: string;\n components: Array<{\n type: string;\n id: string;\n props: Record<string, any>;\n }>;\n }>;\n [key: string]: any;\n}\nexport class PageBuilderComponent extends HTMLElement {\n private pageBuilder!: PageBuilder;\n private initialized = false;\n private _initialDesign: PageBuilderDesign | null = null;\n private _editable: boolean | null = null;\n private _brandTitle?: string;\n private _showAttributeTab?: boolean;\n private _layoutMode?: 'absolute' | 'grid';\n private config = { Basic: [], Extra: [], Custom: [] };\n private template = `<div id=\"app\">\n <div id=\"sidebar\"></div>\n <div id=\"canvas\" class=\"canvas\"></div>\n <div id=\"customization\">\n <h4 id=\"component-name\">Component: None</h4>\n <div id=\"controls\"></div>\n <div id=\"layers-view\" class=\"hidden\"></div>\n </div>\n <div id=\"notification\" class=\"notification hidden\"></div>\n <div id=\"dialog\" class=\"dialog hidden\">\n <div class=\"dialog-content\">\n <p id=\"dialog-message\"></p>\n <button id=\"dialog-yes\" class=\"dialog-btn\">Yes</button>\n <button id=\"dialog-no\" class=\"dialog-btn\">No</button>\n </div>\n </div>\n </div>`;\n\n constructor() {\n super();\n // Set inner HTML only if no child elements exist\n }\n\n set editable(value: boolean | null) {\n if (this._editable !== value) {\n this._editable = value;\n if (this.initialized) {\n this.initialized = false;\n this.initializePageBuilder();\n }\n }\n }\n\n // Corrected getter for 'editable'\n get editable(): boolean | null {\n return this._editable;\n }\n\n set brandTitle(value: string | undefined) {\n if (this._brandTitle !== value) {\n this._brandTitle = value;\n if (this.initialized) {\n this.initialized = false;\n this.initializePageBuilder();\n }\n }\n }\n\n get brandTitle(): string | undefined {\n return this._brandTitle;\n }\n\n set showAttributeTab(value: boolean | undefined) {\n if (this._showAttributeTab !== value) {\n this._showAttributeTab = value;\n if (this.initialized) {\n this.initialized = false;\n this.initializePageBuilder();\n }\n }\n }\n\n get showAttributeTab(): boolean | undefined {\n return this._showAttributeTab;\n }\n set layoutMode(value: 'absolute' | 'grid' | undefined) {\n if (this._layoutMode !== value) {\n this._layoutMode = value;\n if (this.initialized) {\n this.initialized = false;\n this.initializePageBuilder();\n }\n }\n }\n\n get layoutMode(): 'absolute' | 'grid' | undefined {\n return this._layoutMode;\n }\n\n set initialDesign(value: PageBuilderDesign | null) {\n if (this._initialDesign !== value) {\n this._initialDesign = value;\n if (this.initialized) {\n this.initialized = false;\n if (value !== null || this.initialized) {\n this.initialized = false;\n this.initializePageBuilder();\n }\n }\n }\n }\n\n get initialDesign(): PageBuilderDesign | null {\n return this._initialDesign;\n }\n\n // Lifecycle method: Called when the element is added to the DOM\n connectedCallback() {\n if (this.initialized) {\n return;\n }\n\n setTimeout(() => {\n if (!this.firstElementChild) {\n this.innerHTML = this.template;\n }\n\n // if (this.hasValidConfig()) {\n this.initializePageBuilder();\n // }\n }, 0);\n }\n\n private hasValidConfig(): boolean {\n return (\n this.config &&\n (this.config.Basic?.length > 0 ||\n this.config.Extra?.length > 0 ||\n (this.config.Custom && Object.keys(this.config.Custom).length > 0))\n );\n }\n\n set configData(value: any) {\n this.config = value;\n this.initialized = false;\n this.initializePageBuilder();\n }\n\n get configData() {\n return this.config;\n }\n // Initializes the PageBuilder instance\n private initializePageBuilder() {\n if (this.initialized) {\n return;\n }\n\n try {\n const app = this.querySelector('#app');\n if (app === null) {\n console.error('Error: #app element not found.');\n return;\n }\n if (app && this.pageBuilder) {\n app.innerHTML = '';\n this.innerHTML = this.template;\n }\n this.pageBuilder = new PageBuilder(\n this.config,\n this._initialDesign,\n this._editable,\n this._brandTitle,\n this.showAttributeTab,\n this._layoutMode\n );\n this.initialized = true;\n } catch (error) {\n console.error('Failed to initialize PageBuilder:', error);\n this.initialized = false;\n }\n }\n}\n\n// Define the custom element if it hasn't been registered already\nif (!customElements.get('page-builder')) {\n customElements.define('page-builder', PageBuilderComponent);\n}\n"],"mappings":"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","names":[]}