@jezweb/jezpress-cli 1.7.0 → 1.8.0
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.
- package/dist/cli.js +15 -1153
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +29 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +15 -2
- package/dist/client.js.map +1 -1
- package/dist/commands/auth.d.ts +7 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +56 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/docs.d.ts +7 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +41 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/plugins.d.ts +7 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +468 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/sites/bulk.d.ts +7 -0
- package/dist/commands/sites/bulk.d.ts.map +1 -0
- package/dist/commands/sites/bulk.js +80 -0
- package/dist/commands/sites/bulk.js.map +1 -0
- package/dist/commands/sites/export.d.ts +7 -0
- package/dist/commands/sites/export.d.ts.map +1 -0
- package/dist/commands/sites/export.js +85 -0
- package/dist/commands/sites/export.js.map +1 -0
- package/dist/commands/sites/index.d.ts +7 -0
- package/dist/commands/sites/index.d.ts.map +1 -0
- package/dist/commands/sites/index.js +406 -0
- package/dist/commands/sites/index.js.map +1 -0
- package/dist/flare/detect.d.ts +18 -0
- package/dist/flare/detect.d.ts.map +1 -0
- package/dist/flare/detect.js +130 -0
- package/dist/flare/detect.js.map +1 -0
- package/dist/flare/html-to-content.d.ts +21 -0
- package/dist/flare/html-to-content.d.ts.map +1 -0
- package/dist/flare/html-to-content.js +233 -0
- package/dist/flare/html-to-content.js.map +1 -0
- package/dist/flare/index.d.ts +62 -0
- package/dist/flare/index.d.ts.map +1 -0
- package/dist/flare/index.js +566 -0
- package/dist/flare/index.js.map +1 -0
- package/dist/flare/types.d.ts +171 -0
- package/dist/flare/types.d.ts.map +1 -0
- package/dist/flare/types.js +6 -0
- package/dist/flare/types.js.map +1 -0
- package/dist/utils/plugin-headers.d.ts +14 -0
- package/dist/utils/plugin-headers.d.ts.map +1 -0
- package/dist/utils/plugin-headers.js +52 -0
- package/dist/utils/plugin-headers.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flare Transformation
|
|
3
|
+
* Main entry point for converting WordPress/Elementor exports to Flare format
|
|
4
|
+
*/
|
|
5
|
+
import { detectComponentType, flattenWidgets, extractSectionHeading } from './detect.js';
|
|
6
|
+
import { htmlToContent, htmlToText, extractImagesFromHtml } from './html-to-content.js';
|
|
7
|
+
// ============================================================
|
|
8
|
+
// Media Collection
|
|
9
|
+
// ============================================================
|
|
10
|
+
/**
|
|
11
|
+
* Collect all media items from export data
|
|
12
|
+
*/
|
|
13
|
+
function collectMedia(exportData, config) {
|
|
14
|
+
const media = [];
|
|
15
|
+
const seenUrls = new Set();
|
|
16
|
+
function addMedia(url, context, alt) {
|
|
17
|
+
if (!url || seenUrls.has(url))
|
|
18
|
+
return;
|
|
19
|
+
seenUrls.add(url);
|
|
20
|
+
media.push({ url, context, alt });
|
|
21
|
+
}
|
|
22
|
+
// Site logo/favicon from config
|
|
23
|
+
if (config?.options) {
|
|
24
|
+
const opts = config.options;
|
|
25
|
+
if (typeof opts.site_logo === 'string') {
|
|
26
|
+
addMedia(opts.site_logo, 'logo');
|
|
27
|
+
}
|
|
28
|
+
if (typeof opts.site_icon === 'string') {
|
|
29
|
+
addMedia(opts.site_icon, 'favicon');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Media from pages
|
|
33
|
+
if (exportData.pages) {
|
|
34
|
+
for (const page of exportData.pages) {
|
|
35
|
+
// Extract from regular content (handle both string and object formats)
|
|
36
|
+
const pageContent = typeof page.content === 'string'
|
|
37
|
+
? page.content
|
|
38
|
+
: page.content?.rendered || page.content?.raw || '';
|
|
39
|
+
const contentImages = extractImagesFromHtml(pageContent);
|
|
40
|
+
for (const img of contentImages) {
|
|
41
|
+
addMedia(img.url, 'content-image', img.alt);
|
|
42
|
+
}
|
|
43
|
+
// Extract from Elementor data
|
|
44
|
+
if (page.elementor_data) {
|
|
45
|
+
const elementorData = parseElementorData(page.elementor_data);
|
|
46
|
+
if (elementorData) {
|
|
47
|
+
extractElementorMedia(elementorData, (url, context, alt) => {
|
|
48
|
+
addMedia(url, context, alt);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Media library items
|
|
55
|
+
if (exportData.media) {
|
|
56
|
+
for (const item of exportData.media) {
|
|
57
|
+
addMedia(item.url, 'content-image', item.alt);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return media;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Extract media from Elementor data structure
|
|
64
|
+
* Note: ElementorData is a direct array of sections (not { elements: [...] })
|
|
65
|
+
*/
|
|
66
|
+
function extractElementorMedia(sections, addMedia) {
|
|
67
|
+
function traverse(element, isFirstSection) {
|
|
68
|
+
const settings = element.settings || {};
|
|
69
|
+
const bgImage = settings.background_image;
|
|
70
|
+
const image = settings.image;
|
|
71
|
+
const gallery = settings.gallery;
|
|
72
|
+
// Background images
|
|
73
|
+
if (bgImage?.url) {
|
|
74
|
+
const context = isFirstSection ? 'hero-background' : 'content-image';
|
|
75
|
+
addMedia(bgImage.url, context);
|
|
76
|
+
}
|
|
77
|
+
// Image widget
|
|
78
|
+
if (element.widgetType === 'image' && image?.url) {
|
|
79
|
+
addMedia(image.url, 'content-image', image.alt);
|
|
80
|
+
}
|
|
81
|
+
// Gallery widget
|
|
82
|
+
if (element.widgetType === 'gallery' && Array.isArray(gallery)) {
|
|
83
|
+
for (const img of gallery) {
|
|
84
|
+
if (img.url) {
|
|
85
|
+
addMedia(img.url, 'gallery', img.alt);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Call-to-action widget bg_image
|
|
90
|
+
const ctaBgImage = settings.bg_image;
|
|
91
|
+
if (element.widgetType === 'call-to-action' && ctaBgImage?.url) {
|
|
92
|
+
addMedia(ctaBgImage.url, isFirstSection ? 'hero-background' : 'content-image');
|
|
93
|
+
}
|
|
94
|
+
// Recurse into children
|
|
95
|
+
if (element.elements) {
|
|
96
|
+
for (const child of element.elements) {
|
|
97
|
+
traverse(child, false);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// sections IS the array of top-level sections
|
|
102
|
+
for (let i = 0; i < sections.length; i++) {
|
|
103
|
+
traverse(sections[i], i === 0);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ============================================================
|
|
107
|
+
// Elementor Parsing
|
|
108
|
+
// ============================================================
|
|
109
|
+
/**
|
|
110
|
+
* Parse Elementor data from string or array
|
|
111
|
+
* WordPress returns elementor_data as an array of sections directly
|
|
112
|
+
* (not wrapped in { elements: [...] })
|
|
113
|
+
*/
|
|
114
|
+
function parseElementorData(data) {
|
|
115
|
+
if (!data)
|
|
116
|
+
return null;
|
|
117
|
+
if (typeof data === 'string') {
|
|
118
|
+
try {
|
|
119
|
+
const parsed = JSON.parse(data);
|
|
120
|
+
// Handle both array and { elements: [...] } formats
|
|
121
|
+
if (Array.isArray(parsed)) {
|
|
122
|
+
return parsed;
|
|
123
|
+
}
|
|
124
|
+
// Legacy format check
|
|
125
|
+
if (parsed?.elements && Array.isArray(parsed.elements)) {
|
|
126
|
+
return parsed.elements;
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Already an array
|
|
135
|
+
if (Array.isArray(data)) {
|
|
136
|
+
return data;
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Transform an Elementor section to a Flare component
|
|
142
|
+
*/
|
|
143
|
+
function transformSection(section, index) {
|
|
144
|
+
const componentType = detectComponentType(section, index);
|
|
145
|
+
const widgets = flattenWidgets(section);
|
|
146
|
+
const heading = extractSectionHeading(section);
|
|
147
|
+
const props = {};
|
|
148
|
+
// Extract common props based on widget types
|
|
149
|
+
for (const widget of widgets) {
|
|
150
|
+
const settings = widget.settings || {};
|
|
151
|
+
const link = settings.link;
|
|
152
|
+
const image = settings.image;
|
|
153
|
+
switch (widget.widgetType) {
|
|
154
|
+
case 'heading':
|
|
155
|
+
if (!props.heading && settings.title) {
|
|
156
|
+
props.heading = htmlToText(settings.title);
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
case 'text-editor':
|
|
160
|
+
if (!props.content && settings.editor) {
|
|
161
|
+
props.content = htmlToContent(settings.editor);
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
case 'button':
|
|
165
|
+
if (!props.ctaText && settings.text) {
|
|
166
|
+
props.ctaText = settings.text;
|
|
167
|
+
// Button URL can be in multiple places depending on Elementor version
|
|
168
|
+
const buttonLink = settings.button_link;
|
|
169
|
+
props.ctaLink = link?.url || buttonLink?.url || settings.link_url || '';
|
|
170
|
+
}
|
|
171
|
+
break;
|
|
172
|
+
case 'image':
|
|
173
|
+
if (!props.image && image?.url) {
|
|
174
|
+
props.image = {
|
|
175
|
+
url: image.url,
|
|
176
|
+
alt: image.alt || '',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
break;
|
|
180
|
+
case 'form':
|
|
181
|
+
case 'wpforms':
|
|
182
|
+
props.hasForm = true;
|
|
183
|
+
if (settings.form_name)
|
|
184
|
+
props.formName = settings.form_name;
|
|
185
|
+
break;
|
|
186
|
+
case 'icon-box':
|
|
187
|
+
if (!props.features)
|
|
188
|
+
props.features = [];
|
|
189
|
+
props.features.push({
|
|
190
|
+
title: settings.title_text,
|
|
191
|
+
description: htmlToText((settings.description_text || '')),
|
|
192
|
+
});
|
|
193
|
+
break;
|
|
194
|
+
case 'testimonial':
|
|
195
|
+
if (!props.testimonial) {
|
|
196
|
+
props.testimonial = {
|
|
197
|
+
content: htmlToText((settings.testimonial_content || '')),
|
|
198
|
+
name: settings.testimonial_name,
|
|
199
|
+
title: settings.testimonial_job,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
case 'call-to-action':
|
|
204
|
+
// Rich widget with title, description, button, and bg_image
|
|
205
|
+
if (!props.heading && settings.title) {
|
|
206
|
+
props.heading = htmlToText(settings.title);
|
|
207
|
+
}
|
|
208
|
+
if (!props.content && settings.description) {
|
|
209
|
+
props.content = htmlToContent(settings.description);
|
|
210
|
+
}
|
|
211
|
+
if (!props.ctaText && settings.button) {
|
|
212
|
+
props.ctaText = settings.button;
|
|
213
|
+
// Link can be in button_link or link
|
|
214
|
+
const ctaButtonLink = settings.button_link;
|
|
215
|
+
props.ctaLink = link?.url || ctaButtonLink?.url || '';
|
|
216
|
+
}
|
|
217
|
+
// Background image from call-to-action
|
|
218
|
+
const ctaBgImage = settings.bg_image;
|
|
219
|
+
if (!props.backgroundImage && ctaBgImage?.url) {
|
|
220
|
+
props.backgroundImage = ctaBgImage.url;
|
|
221
|
+
}
|
|
222
|
+
// Mark as call-to-action for component type detection
|
|
223
|
+
props._hasCallToAction = true;
|
|
224
|
+
break;
|
|
225
|
+
case 'icon':
|
|
226
|
+
// Standalone icon - track for services detection
|
|
227
|
+
if (!props.icons)
|
|
228
|
+
props.icons = [];
|
|
229
|
+
const iconVal = settings.selected_icon;
|
|
230
|
+
if (iconVal?.value) {
|
|
231
|
+
props.icons.push({
|
|
232
|
+
icon: iconVal.value,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
case 'posts':
|
|
237
|
+
// Dynamic posts widget - mark as having dynamic content
|
|
238
|
+
props._hasPosts = true;
|
|
239
|
+
props.postsPerPage = settings.posts_per_page;
|
|
240
|
+
props.postsColumns = settings.columns;
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Add background image if present
|
|
245
|
+
const sectionSettings = section.settings || {};
|
|
246
|
+
const bgImage = sectionSettings.background_image;
|
|
247
|
+
if (bgImage?.url) {
|
|
248
|
+
props.backgroundImage = bgImage.url;
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
type: componentType,
|
|
252
|
+
design: 'basic', // Default design - Flare requires this field
|
|
253
|
+
props,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Transform a WordPress page to Flare page format
|
|
258
|
+
*/
|
|
259
|
+
function transformPage(page) {
|
|
260
|
+
const components = [];
|
|
261
|
+
// Try Elementor data first
|
|
262
|
+
const elementorSections = parseElementorData(page.elementor_data);
|
|
263
|
+
if (elementorSections && elementorSections.length > 0) {
|
|
264
|
+
// Transform each Elementor section
|
|
265
|
+
for (let i = 0; i < elementorSections.length; i++) {
|
|
266
|
+
const section = elementorSections[i];
|
|
267
|
+
if (section.elType === 'section' || section.elType === 'container') {
|
|
268
|
+
components.push(transformSection(section, i));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
else if (page.content) {
|
|
273
|
+
// Fallback to regular content (handle both string and object formats)
|
|
274
|
+
const contentStr = typeof page.content === 'string'
|
|
275
|
+
? page.content
|
|
276
|
+
: page.content.rendered || page.content.raw || '';
|
|
277
|
+
const content = htmlToContent(contentStr);
|
|
278
|
+
if (content.length > 0) {
|
|
279
|
+
components.push({
|
|
280
|
+
type: 'content',
|
|
281
|
+
props: { content },
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// Extract meta description
|
|
286
|
+
let description;
|
|
287
|
+
if (page.meta) {
|
|
288
|
+
const meta = page.meta;
|
|
289
|
+
description =
|
|
290
|
+
meta._yoast_wpseo_metadesc ||
|
|
291
|
+
meta._genesis_description ||
|
|
292
|
+
meta._aioseop_description;
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
slug: page.slug,
|
|
296
|
+
title: htmlToText(page.title),
|
|
297
|
+
meta: { description },
|
|
298
|
+
components,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
// ============================================================
|
|
302
|
+
// Main Transform Function
|
|
303
|
+
// ============================================================
|
|
304
|
+
/**
|
|
305
|
+
* Transform WordPress export data to Flare format
|
|
306
|
+
*/
|
|
307
|
+
export function transformToFlare(exportData, config = null) {
|
|
308
|
+
// Extract site info
|
|
309
|
+
const siteName = exportData.site?.name || config?.options?.blogname || 'Untitled Site';
|
|
310
|
+
const siteTagline = exportData.site?.description || config?.options?.blogdescription;
|
|
311
|
+
// Extract colors from Elementor globals
|
|
312
|
+
// Elementor uses _id or id for color identifiers (e.g., "primary", "secondary")
|
|
313
|
+
const colors = {};
|
|
314
|
+
if (config?.elementor?.globals?.colors) {
|
|
315
|
+
for (const colorDef of config.elementor.globals.colors) {
|
|
316
|
+
const colorId = (colorDef._id || colorDef.id || colorDef.title || '').toLowerCase();
|
|
317
|
+
if (colorId.includes('primary'))
|
|
318
|
+
colors.primary = colorDef.color;
|
|
319
|
+
else if (colorId.includes('secondary'))
|
|
320
|
+
colors.secondary = colorDef.color;
|
|
321
|
+
else if (colorId.includes('text'))
|
|
322
|
+
colors.text = colorDef.color;
|
|
323
|
+
else if (colorId.includes('accent'))
|
|
324
|
+
colors.accent = colorDef.color;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Extract typography/fonts from Elementor globals
|
|
328
|
+
const fonts = {};
|
|
329
|
+
if (config?.elementor?.globals?.typography) {
|
|
330
|
+
for (const typoDef of config.elementor.globals.typography) {
|
|
331
|
+
const typoId = (typoDef._id || typoDef.id || typoDef.title || '').toLowerCase();
|
|
332
|
+
const fontFamily = typoDef.typography_font_family;
|
|
333
|
+
if (fontFamily) {
|
|
334
|
+
if (typoId.includes('heading') || typoId.includes('h1') || typoId.includes('h2')) {
|
|
335
|
+
fonts.heading = fontFamily;
|
|
336
|
+
}
|
|
337
|
+
else if (typoId.includes('body') || typoId.includes('text') || typoId.includes('paragraph')) {
|
|
338
|
+
fonts.body = fontFamily;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// Extract logo/favicon from site config
|
|
344
|
+
// Logo can be in theme.custom_logo.url or options
|
|
345
|
+
const opts = config?.options || {};
|
|
346
|
+
const theme = config?.theme || {};
|
|
347
|
+
const themeMods = theme.theme_mods || {};
|
|
348
|
+
const customLogo = theme.custom_logo;
|
|
349
|
+
let siteLogoUrl;
|
|
350
|
+
let siteFaviconUrl;
|
|
351
|
+
// Logo priority: theme.custom_logo.url > options.custom_logo_url > options.site_logo
|
|
352
|
+
if (customLogo?.url) {
|
|
353
|
+
siteLogoUrl = customLogo.url;
|
|
354
|
+
}
|
|
355
|
+
else if (typeof opts.custom_logo_url === 'string') {
|
|
356
|
+
siteLogoUrl = opts.custom_logo_url;
|
|
357
|
+
}
|
|
358
|
+
else if (typeof opts.site_logo === 'string' && opts.site_logo.startsWith('http')) {
|
|
359
|
+
siteLogoUrl = opts.site_logo;
|
|
360
|
+
}
|
|
361
|
+
// Favicon/site icon
|
|
362
|
+
if (typeof opts.site_icon_url === 'string') {
|
|
363
|
+
siteFaviconUrl = opts.site_icon_url;
|
|
364
|
+
}
|
|
365
|
+
else if (typeof opts.site_icon === 'string' && opts.site_icon.startsWith('http')) {
|
|
366
|
+
siteFaviconUrl = opts.site_icon;
|
|
367
|
+
}
|
|
368
|
+
// Transform pages
|
|
369
|
+
const pages = [];
|
|
370
|
+
if (exportData.pages) {
|
|
371
|
+
for (const page of exportData.pages) {
|
|
372
|
+
pages.push(transformPage(page));
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Extract main menu
|
|
376
|
+
const mainMenu = [];
|
|
377
|
+
if (exportData.menus) {
|
|
378
|
+
// Find primary/main menu
|
|
379
|
+
const primaryMenu = exportData.menus.find((m) => m.name.toLowerCase().includes('primary') || m.name.toLowerCase().includes('main')) || exportData.menus[0];
|
|
380
|
+
if (primaryMenu) {
|
|
381
|
+
for (const item of primaryMenu.items) {
|
|
382
|
+
mainMenu.push(item.title);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
// Collect media
|
|
387
|
+
const media = collectMedia(exportData, config);
|
|
388
|
+
// Find logo from media (fallback if not in options)
|
|
389
|
+
const logoItem = media.find((m) => m.context === 'logo');
|
|
390
|
+
const faviconItem = media.find((m) => m.context === 'favicon');
|
|
391
|
+
return {
|
|
392
|
+
site: {
|
|
393
|
+
name: siteName,
|
|
394
|
+
tagline: siteTagline,
|
|
395
|
+
logo: siteLogoUrl || logoItem?.url,
|
|
396
|
+
favicon: siteFaviconUrl || faviconItem?.url,
|
|
397
|
+
colors,
|
|
398
|
+
fonts,
|
|
399
|
+
},
|
|
400
|
+
pages,
|
|
401
|
+
menu: { main: mainMenu },
|
|
402
|
+
media,
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Generate comprehensive widget breakdown for AI-assisted site rebuilding
|
|
407
|
+
* This format captures ALL widget data organized for easy AI consumption
|
|
408
|
+
*/
|
|
409
|
+
export function transformToWidgetBreakdown(exportData, config = null) {
|
|
410
|
+
const widgetsByType = {};
|
|
411
|
+
const widgetCounts = {};
|
|
412
|
+
let totalWidgets = 0;
|
|
413
|
+
const pages = [];
|
|
414
|
+
// Process each page
|
|
415
|
+
if (exportData.pages) {
|
|
416
|
+
for (const page of exportData.pages) {
|
|
417
|
+
const pageTitle = htmlToText(page.title);
|
|
418
|
+
const pageSections = [];
|
|
419
|
+
const elementorData = parseElementorData(page.elementor_data);
|
|
420
|
+
if (elementorData) {
|
|
421
|
+
for (let sectionIdx = 0; sectionIdx < elementorData.length; sectionIdx++) {
|
|
422
|
+
const section = elementorData[sectionIdx];
|
|
423
|
+
const widgets = flattenWidgets(section);
|
|
424
|
+
const sectionWidgets = [];
|
|
425
|
+
for (const widget of widgets) {
|
|
426
|
+
if (!widget.widgetType)
|
|
427
|
+
continue;
|
|
428
|
+
const widgetType = widget.widgetType;
|
|
429
|
+
const settings = (widget.settings || {});
|
|
430
|
+
// Clean settings - remove internal Elementor fields
|
|
431
|
+
const cleanSettings = {};
|
|
432
|
+
for (const [key, value] of Object.entries(settings)) {
|
|
433
|
+
// Skip internal fields
|
|
434
|
+
if (key.startsWith('_') || key === '__dynamic__' || key === '__globals__')
|
|
435
|
+
continue;
|
|
436
|
+
// Skip empty values
|
|
437
|
+
if (value === '' || value === null || value === undefined)
|
|
438
|
+
continue;
|
|
439
|
+
// Skip default values
|
|
440
|
+
if (value === 'default' || value === 'none')
|
|
441
|
+
continue;
|
|
442
|
+
cleanSettings[key] = value;
|
|
443
|
+
}
|
|
444
|
+
// Add to section widgets
|
|
445
|
+
sectionWidgets.push({
|
|
446
|
+
type: widgetType,
|
|
447
|
+
settings: cleanSettings,
|
|
448
|
+
});
|
|
449
|
+
// Track by type
|
|
450
|
+
if (!widgetsByType[widgetType]) {
|
|
451
|
+
widgetsByType[widgetType] = [];
|
|
452
|
+
}
|
|
453
|
+
widgetsByType[widgetType].push({
|
|
454
|
+
page: pageTitle,
|
|
455
|
+
pageSlug: page.slug,
|
|
456
|
+
sectionIndex: sectionIdx,
|
|
457
|
+
settings: cleanSettings,
|
|
458
|
+
});
|
|
459
|
+
// Count
|
|
460
|
+
widgetCounts[widgetType] = (widgetCounts[widgetType] || 0) + 1;
|
|
461
|
+
totalWidgets++;
|
|
462
|
+
}
|
|
463
|
+
if (sectionWidgets.length > 0) {
|
|
464
|
+
pageSections.push({
|
|
465
|
+
index: sectionIdx,
|
|
466
|
+
widgets: sectionWidgets,
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
pages.push({
|
|
472
|
+
title: pageTitle,
|
|
473
|
+
slug: page.slug,
|
|
474
|
+
sections: pageSections,
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
// Extract Elementor globals
|
|
479
|
+
let elementorGlobals;
|
|
480
|
+
if (config?.elementor?.globals) {
|
|
481
|
+
const globals = config.elementor.globals;
|
|
482
|
+
elementorGlobals = {
|
|
483
|
+
colors: globals.colors?.map(c => ({
|
|
484
|
+
id: c._id || c.id || '',
|
|
485
|
+
color: c.color,
|
|
486
|
+
title: c.title,
|
|
487
|
+
})),
|
|
488
|
+
typography: globals.typography?.map(t => ({
|
|
489
|
+
id: t._id || t.id || '',
|
|
490
|
+
fontFamily: t.typography_font_family,
|
|
491
|
+
title: t.title,
|
|
492
|
+
})),
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
return {
|
|
496
|
+
site: {
|
|
497
|
+
name: exportData.site?.name || 'Unknown Site',
|
|
498
|
+
url: exportData.site?.url,
|
|
499
|
+
description: exportData.site?.description,
|
|
500
|
+
},
|
|
501
|
+
summary: {
|
|
502
|
+
totalPages: exportData.pages?.length || 0,
|
|
503
|
+
totalWidgets,
|
|
504
|
+
widgetTypes: widgetCounts,
|
|
505
|
+
},
|
|
506
|
+
pages,
|
|
507
|
+
widgetsByType,
|
|
508
|
+
elementorGlobals,
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
/**
|
|
512
|
+
* Transform to Markdown format
|
|
513
|
+
*/
|
|
514
|
+
export function transformToMarkdown(exportData) {
|
|
515
|
+
const lines = [];
|
|
516
|
+
// Site header
|
|
517
|
+
if (exportData.site) {
|
|
518
|
+
const site = exportData.site;
|
|
519
|
+
const siteName = site.name || site.title || 'Untitled Site';
|
|
520
|
+
const siteDesc = site.description || site.tagline;
|
|
521
|
+
lines.push(`# ${siteName}`);
|
|
522
|
+
if (siteDesc) {
|
|
523
|
+
lines.push(`> ${siteDesc}`);
|
|
524
|
+
}
|
|
525
|
+
lines.push('');
|
|
526
|
+
}
|
|
527
|
+
// Pages
|
|
528
|
+
if (exportData.pages) {
|
|
529
|
+
lines.push('## Pages');
|
|
530
|
+
lines.push('');
|
|
531
|
+
for (const page of exportData.pages) {
|
|
532
|
+
lines.push(`### ${htmlToText(page.title)}`);
|
|
533
|
+
lines.push(`*Slug: /${page.slug}*`);
|
|
534
|
+
lines.push('');
|
|
535
|
+
// Handle both string and object formats for content
|
|
536
|
+
const contentStr = typeof page.content === 'string'
|
|
537
|
+
? page.content
|
|
538
|
+
: page.content?.rendered || page.content?.raw || '';
|
|
539
|
+
const content = htmlToText(contentStr);
|
|
540
|
+
if (content) {
|
|
541
|
+
lines.push(content.slice(0, 500) + (content.length > 500 ? '...' : ''));
|
|
542
|
+
lines.push('');
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
// Menus
|
|
547
|
+
if (exportData.menus) {
|
|
548
|
+
lines.push('## Navigation');
|
|
549
|
+
lines.push('');
|
|
550
|
+
for (const menu of exportData.menus) {
|
|
551
|
+
lines.push(`### ${menu.name}`);
|
|
552
|
+
for (const item of menu.items) {
|
|
553
|
+
lines.push(`- [${item.title}](${item.url})`);
|
|
554
|
+
}
|
|
555
|
+
lines.push('');
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
// Media summary
|
|
559
|
+
if (exportData.media) {
|
|
560
|
+
lines.push('## Media Library');
|
|
561
|
+
lines.push(`${exportData.media.length} items`);
|
|
562
|
+
lines.push('');
|
|
563
|
+
}
|
|
564
|
+
return lines.join('\n');
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flare/index.ts"],"names":[],"mappings":"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"}
|