{"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":[]}