{"mappings":"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","sources":["src/index.ts","src/builder.ts","src/filesystem.ts","src/config.ts","src/schema.ts","src/templates.ts","src/utils.ts","src/logger.ts"],"sourcesContent":["import { buildElement } from './builder'\nimport { CONFIG, loadConfig } from './config'\nimport { cleanupTempFolders, createBuildFolders, createWordpressPluginFile, createWordpressWidgetFile } from './filesystem'\nimport './logger'\n\nexport const main = async () => {\n  await loadConfig()\n\n  await createBuildFolders()\n\n  await createWordpressPluginFile()\n\n  for (const element of CONFIG.elements) {\n    await createWordpressWidgetFile(element)\n    await buildElement(element)\n  }\n\n  await cleanupTempFolders()\n}\n","import * as fsExtra from 'fs-extra'\nimport * as vite from 'vite'\nimport * as pkg from 'pkg'\nimport type { VueElementorElement } from './schema'\nimport { createClientScript, createSSRScript } from './filesystem'\nimport { CONFIG } from './config'\n\nexport async function buildElement(element: VueElementorElement) {\n  await fsExtra.ensureDir(`elementor-dist/${element.name}`)\n\n  await createClientScript(element)\n  await createSSRScript(element)\n\n  await buildClientScript(element)\n  await buildSSRBinary(element)\n}\n\nasync function buildClientScript(element: VueElementorElement) {\n  await runViteBuild(`elementor-dist/${element.name}/element.js`, `${element.name}.el.js`)\n  await fsExtra.copy(\n    `dist/${element.name}.el.js`,\n    `${CONFIG.pluginNameSlug}/assets/${element.name}.el.js`,\n  )\n}\nasync function buildSSRBinary(element: VueElementorElement) {\n  await runViteBuild(`elementor-dist/${element.name}/ssr.js`, `${element.name}.ssr.js`)\n\n  const arch = `node${CONFIG.ssrBinaryTarget.node}-${CONFIG.ssrBinaryTarget.platform}-${CONFIG.ssrBinaryTarget.arch}`\n  await pkg.exec([\n    `dist/${element.name}.ssr.js`,\n    '-C',\n    'GZip',\n    '--target',\n    arch,\n    '--output',\n    `${CONFIG.pluginNameSlug}/assets/${element.name}.ssr`,\n  ])\n}\n\nasync function runViteBuild(entry: string, fileName: string) {\n  return vite.build({\n    configFile: 'vite.config.ts',\n    build: {\n      lib: {\n        entry,\n        formats: ['es'],\n        fileName: () => fileName,\n      },\n    },\n  })\n}\n","import * as fs from 'node:fs/promises'\nimport * as fsExtra from 'fs-extra'\nimport { CONFIG } from './config'\nimport type { VueElementorElement } from './schema'\nimport { templates } from './templates'\n\nexport const cleanupTempFolders = async () => {\n  await fs.rm('dist', { recursive: true, force: true })\n  await fs.rm('elementor-dist', { recursive: true, force: true })\n}\n\nexport const createBuildFolders = async () => {\n  await fs.rm('elementor-dist', { recursive: true, force: true })\n  await fs.rm(CONFIG.pluginNameSlug, { recursive: true, force: true })\n\n  await fsExtra.ensureDir('elementor-dist')\n  await fsExtra.ensureDir(`${CONFIG.pluginNameSlug}/assets`)\n}\n\nexport const createWordpressPluginFile = async () => {\n  await fs.writeFile(`${CONFIG.pluginNameSlug}/${CONFIG.pluginNameSlug}.php`, await templates.wordpressPlugin())\n}\n\nexport const createWordpressWidgetFile = async (element: VueElementorElement) => {\n  await fs.writeFile(\n    `${CONFIG.pluginNameSlug}/${element.name}.widget.php`,\n    templates.wordpressWidget(element),\n  )\n}\n\nexport const createClientScript = async (element: VueElementorElement) => {\n  await fs.writeFile(`elementor-dist/${element.name}/element.js`, await templates.clientScript(element))\n}\n\nexport const createSSRScript = async (element: VueElementorElement) => {\n  await fs.writeFile(`elementor-dist/${element.name}/ssr.js`, await templates.ssrScript(element))\n}\n","import * as path from 'node:path'\nimport * as fs from 'node:fs/promises'\nimport * as c12 from 'c12'\nimport slugify from 'slugify'\nimport type { ZodError } from 'zod'\nimport type { VueElementorConfig } from './schema'\nimport { VueElementorConfigSchema, formatZodErrors } from './schema'\n\n// eslint-disable-next-line import/no-mutable-exports\nexport let CONFIG: VueElementorConfig & { pluginNameSlug: string; version: string }\n\nconst readPackageJson = async () => {\n  const packagesJsonPath = path.join(process.cwd(), 'package.json')\n  const packagesJsonContents = await fs.readFile(packagesJsonPath, 'utf-8').then(data => data.toString())\n  return JSON.parse(packagesJsonContents) as { version: string }\n}\n\nexport const loadConfig = async () => {\n  const configData = await c12.loadConfig({\n    name: 'vue-elementor',\n  })\n\n  const validatedConfig = await VueElementorConfigSchema.parseAsync(configData.config).catch((err: ZodError) => {\n    Log.error(`Config file not found or invalid:\\n${formatZodErrors(err.errors)}`)\n    process.exit(1)\n  })\n\n  CONFIG = {\n    ...validatedConfig,\n    pluginNameSlug: slugify(validatedConfig.wordpressPluginSettings.name, { lower: true, strict: true }),\n    version: await readPackageJson().then(data => data.version),\n  }\n}\n","import type { ZodIssue } from 'zod'\nimport { z } from 'zod'\n\nexport const VueElementorElementSchema = z.object({\n  name: z.string(),\n  component: z.string(),\n})\n\nexport type VueElementorElement = z.infer<typeof VueElementorElementSchema>\n\nexport const VueElementorConfigSchema = z.object({\n  elements: z.array(VueElementorElementSchema),\n  ssrBinaryTarget: z.object({\n    node: z.enum(['latest', '12', '14', '16']),\n    platform: z.enum(['linux', 'macos', 'win', 'alpine']),\n    arch: z.enum(['x64', 'arm64']),\n  }),\n  wordpressPluginSettings: z.object({\n    name: z.string(),\n    templateFile: z.string().optional(),\n    widgetSettings: z.array(z.object({\n      id: z.string(),\n      options: z.any(),\n      controls: z.array(z.object({\n        responsive: z.boolean().optional(),\n        name: z.string(),\n        options: z.any(),\n      })),\n    })).optional(),\n  }),\n})\n\nexport type VueElementorConfig = z.infer<typeof VueElementorConfigSchema>\n\nexport function formatZodErrors(issues: ZodIssue[]) {\n  return issues.map((issue) => {\n    return `Property ${issue.path.join('.')}: ${issue.message}`\n  }).join('\\n')\n}\n","import * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport type { VueElementorElement } from './schema'\nimport { toKebabCase } from './utils'\nimport { CONFIG } from './config'\n\nexport const templates = {\n  ssrScript: (element: VueElementorElement) => {\n    return `\n    import { createSSRApp } from 'vue'\n    import { renderToString } from 'vue/server-renderer'\n    import Component from '@/../${element.component}'\n    \n    const params = JSON.parse(process.argv.slice(2).join('') || '{}')\n    const app = createSSRApp(Component, params)\n\n    renderToString(app).then((html) => {\n      console.log(\\`<${toKebabCase(\n        element.name,\n      )} widget-id=\"\\${params.widgetId}\">\\${html}</${toKebabCase(\n      element.name,\n    )}>\\`)\n    })\n  `\n  },\n  clientScript: (element: VueElementorElement) => {\n    return `\n  import { defineCustomElement } from 'vue'\n  import Component from '@/../${element.component}'\n  \n  const Element = defineCustomElement({\n    setup: () => {\n      return (vue) => {\n        return h(Component, {\n          settings: window.__VUE_ELEMENTOR_DATA__[vue?.$attrs?.widgetId ?? ''],\n          ...(vue?.$attrs ?? {}),\n        })\n      }\n    },\n    styles: Component.styles\n  })\n  \n  customElements.define('${toKebabCase(element.name)}', Element)\n`\n  },\n  wordpressWidget: (element: VueElementorElement) => {\n    return `<?php\n\n  if (!defined('ABSPATH')) {\n      exit;\n  }\n  \n  class Elementor_${element.name}_Widget extends \\\\Elementor\\\\Widget_Base\n  {\n      public function get_name()\n      {\n          return '${element.name}';\n      }\n  \n      public function get_title()\n      {\n          return '${element.name}';\n      }\n  \n      public function get_icon()\n      {\n          return 'eicon-code';\n      }\n  \n      public function get_script_depends()\n      {\n          return ['elementor-${element.name}-widget'];\n      }\n  \n      public function get_style_depends()\n      {\n          return ['elementor-${element.name}-widget'];\n      }\n  \n      public function get_categories()\n      {\n          return ['general'];\n      }\n  \n      public function get_keywords()\n      {\n          return [];\n      }\n  \n      protected function register_controls()\n      {\n        ${!CONFIG.wordpressPluginSettings.widgetSettings ? '' : CONFIG.wordpressPluginSettings.widgetSettings.map((section) => {\n          return `\n          $this->start_controls_section(\n            '${section.id}',\n            [\n              ${Object.entries(section.options ?? {}).map(([key, value]) => {\n                return key === 'tab' || typeof value !== 'string' ? `'${key}' => ${value}` : `'${key}' => '${value}'`\n              }).join(',\\n')}\n            ]\n          );\n\n          ${section.controls.map((control) => {\n            return `\n            $this->${control.responsive ? 'add_responsive_control' : 'add_control'}(\n              '${control.name}',\n              [\n                ${Object.entries(control.options ?? {}).map(([key, value]) => {\n                  return key === 'type' || typeof value !== 'string' ? `'${key}' => ${value}` : `'${key}' => '${value}'`\n                }).join(',\\n')}\n              ]\n            );\n            `\n          }).join('\\n')}\n\n          $this->end_controls_section();\n          `\n        }).join('\\n')}\n      }\n  \n      protected function render()\n      {\n          $html = [];\n  \n          $args = [\n            \"settings\" => $this->get_settings_for_display(),\n            \"widgetId\" => $this->get_id()\n          ];\n\n          $script = '<script> if(!window.__VUE_ELEMENTOR_DATA__) { window.__VUE_ELEMENTOR_DATA__ = {} } window.__VUE_ELEMENTOR_DATA__[\"' . $args['widgetId'] . '\"] = ' . json_encode($args['settings']) . ' </script>';\n          \n          echo $script;\n          exec(__DIR__ . '/assets/${element.name}.ssr ' . json_encode(json_encode($args)), $html);\n          for ($i = 0; $i < count($html); $i++) {\n              echo $html[$i];\n          }\n      }\n  }\n  \n`\n  },\n  wordpressPlugin: async () => {\n    const pluginOutletString = `\n    function register_widgets($widgets_manager)\n    {\n        ${CONFIG.elements\n          .map((element) => {\n            return `require_once(__DIR__ . '/${element.name}.widget.php');\n          $widgets_manager->register(new \\\\Elementor_${element.name}_Widget());`\n          })\n          .join('\\n')}\n    }\n    add_action('elementor/widgets/register', 'register_widgets');\n    \n    function register_dependencies()\n    {\n        ${CONFIG.elements.map((element) => {\n          return `\n          wp_register_script('elementor-${element.name}-widget', plugin_dir_url(__FILE__) . 'assets/${element.name}.el.js', [], '${CONFIG.version}', false);\n          //wp_register_style('elementor-${element.name}-widget', plugin_dir_url(__FILE__) . 'assets/${element.name}.el.css', [], '${CONFIG.version}', 'all');`\n        })}\n    }\n    add_action('wp_enqueue_scripts', 'register_dependencies');\n    \n    function add_type_attribute($tag, $handle, $src)\n    {\n        $pattern = \"/${CONFIG.elements.map(el => el.name).join('|')}/i\";\n        if (!preg_match($pattern, $handle)) {\n            return $tag;\n        }\n        \n        $tag = '<script type=\"module\" src=\"' . esc_url($src) . '\"></script>';\n        return $tag;\n    }\n    add_filter('script_loader_tag', 'add_type_attribute', 10, 3);\n    \n    function make_script_executable()\n    {\n        ${CONFIG.elements\n          .map((element) => {\n            return `exec('chmod +x ' . __DIR__ . '/assets/${element.name}.ssr');`\n          })\n          .join('\\n')}\n    }\n  \n    register_activation_hook(\n        __FILE__,\n        'make_script_executable'\n    );\n    \n    `\n    if (CONFIG.wordpressPluginSettings.templateFile) {\n      const templateFilePath = path.join(process.cwd(), CONFIG.wordpressPluginSettings.templateFile)\n      const templateFileContents = await fs.readFile(templateFilePath, 'utf-8').then(data => data.toString())\n\n      const placeholderRegex = /\\/\\/\\s*VUE-ELEMENTOR-OUTLET/gi\n      const hasPlaceholders = placeholderRegex.test(templateFileContents)\n\n      if (!hasPlaceholders)\n        throw new Error('The template file does not contain the required placeholder (// VUE-ELEMENTOR-OUTLET)')\n\n      return templateFileContents.replace(placeholderRegex, pluginOutletString).trim()\n    }\n\n    return `<?php\n  \n    /**\n     * Plugin Name: ${CONFIG.wordpressPluginSettings.name}\n     * Description: ${CONFIG.wordpressPluginSettings.name}\n     * Plugin URI:  https://elementor.com/\n     * Version:     ${CONFIG.version}\n     * Author:      Elementor Developer\n     * Author URI:  https://developers.elementor.com/\n     *\n     * Elementor tested up to: 3.7.0\n     * Elementor Pro tested up to: 3.7.0\n     */\n    \n    if (!defined('ABSPATH')) {\n        exit;\n    }\n    \n    ${pluginOutletString}\n    `.trim()\n  },\n}\n","export function toKebabCase(str: string) {\n  return str\n    .replace(/^[a-z]/i, letter => letter.toLowerCase())\n    .replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)\n}\n","import type { Consola } from 'consola'\nimport consola from 'consola'\n\ndeclare global {\n  // eslint-disable-next-line vars-on-top, no-var\n  var Log: Consola\n}\n\n(globalThis as any).Log = consola.create({\n  level: Infinity,\n})\n"],"names":[],"version":3,"file":"index.mjs.map"}