@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,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section Type Detection
|
|
3
|
+
* Heuristics for detecting Flare component types from Elementor sections
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Flatten all widgets from a section into a flat array
|
|
7
|
+
*/
|
|
8
|
+
export function flattenWidgets(section) {
|
|
9
|
+
const widgets = [];
|
|
10
|
+
function traverse(element) {
|
|
11
|
+
if (element.widgetType) {
|
|
12
|
+
widgets.push(element);
|
|
13
|
+
}
|
|
14
|
+
if (element.elements) {
|
|
15
|
+
for (const child of element.elements) {
|
|
16
|
+
traverse(child);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (section.elements) {
|
|
21
|
+
for (const element of section.elements) {
|
|
22
|
+
traverse(element);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return widgets;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Count inner containers/columns in a section
|
|
29
|
+
*/
|
|
30
|
+
function countInnerContainers(section) {
|
|
31
|
+
let count = 0;
|
|
32
|
+
function traverse(element) {
|
|
33
|
+
if (element.elType === 'column' || element.elType === 'container') {
|
|
34
|
+
count++;
|
|
35
|
+
}
|
|
36
|
+
if (element.elements) {
|
|
37
|
+
for (const child of element.elements) {
|
|
38
|
+
traverse(child);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (section.elements) {
|
|
43
|
+
for (const element of section.elements) {
|
|
44
|
+
traverse(element);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return count;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if section has a background image
|
|
51
|
+
*/
|
|
52
|
+
function hasBackgroundImage(section) {
|
|
53
|
+
const settings = section.settings || {};
|
|
54
|
+
const bgImage = settings.background_image;
|
|
55
|
+
return !!(bgImage?.url ||
|
|
56
|
+
settings.background_background === 'classic' && bgImage);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Detect the Flare component type for a section
|
|
60
|
+
*/
|
|
61
|
+
export function detectComponentType(section, index) {
|
|
62
|
+
const widgets = flattenWidgets(section);
|
|
63
|
+
const widgetTypes = widgets.map((w) => w.widgetType);
|
|
64
|
+
// Widget type checks
|
|
65
|
+
const hasH1 = widgets.some((w) => w.widgetType === 'heading' && w.settings?.header_size === 'h1');
|
|
66
|
+
const hasButton = widgetTypes.includes('button');
|
|
67
|
+
const hasForm = widgetTypes.includes('form') || widgetTypes.includes('wpforms');
|
|
68
|
+
const hasQuote = widgetTypes.includes('blockquote') || widgetTypes.includes('testimonial');
|
|
69
|
+
const hasIcons = widgetTypes.includes('icon') || widgetTypes.includes('icon-box');
|
|
70
|
+
const hasGallery = widgetTypes.includes('gallery') || widgetTypes.includes('image-gallery');
|
|
71
|
+
const hasCallToAction = widgetTypes.includes('call-to-action');
|
|
72
|
+
// Count images in section
|
|
73
|
+
const imageCount = widgets.filter((w) => w.widgetType === 'image' || w.widgetType === 'image-box').length;
|
|
74
|
+
// Container structure
|
|
75
|
+
const innerContainers = countInnerContainers(section);
|
|
76
|
+
const hasBgImage = hasBackgroundImage(section);
|
|
77
|
+
// Detection logic (order matters - more specific first)
|
|
78
|
+
// Hero: First section with H1 and button, call-to-action widget, or background image
|
|
79
|
+
if (index === 0 && hasCallToAction) {
|
|
80
|
+
return 'hero';
|
|
81
|
+
}
|
|
82
|
+
if (index === 0 && hasH1 && hasButton) {
|
|
83
|
+
return 'hero';
|
|
84
|
+
}
|
|
85
|
+
if (index === 0 && hasBgImage && hasH1) {
|
|
86
|
+
return 'hero';
|
|
87
|
+
}
|
|
88
|
+
// Contact: Has a form widget
|
|
89
|
+
if (hasForm) {
|
|
90
|
+
return 'contact';
|
|
91
|
+
}
|
|
92
|
+
// Testimonials: Has quote or testimonial widget
|
|
93
|
+
if (hasQuote) {
|
|
94
|
+
return 'testimonials';
|
|
95
|
+
}
|
|
96
|
+
// Gallery: 4+ images in a grid pattern
|
|
97
|
+
if (hasGallery || (imageCount >= 4 && innerContainers >= 2)) {
|
|
98
|
+
return 'gallery';
|
|
99
|
+
}
|
|
100
|
+
// Services: 3+ containers with icons (common service card pattern)
|
|
101
|
+
if (innerContainers >= 3 && hasIcons) {
|
|
102
|
+
return 'services';
|
|
103
|
+
}
|
|
104
|
+
// CTA: Call-to-action widget (not first section) or button with heading
|
|
105
|
+
if (hasCallToAction && index > 0) {
|
|
106
|
+
return 'cta';
|
|
107
|
+
}
|
|
108
|
+
if (hasButton && hasH1 && index > 0) {
|
|
109
|
+
return 'cta';
|
|
110
|
+
}
|
|
111
|
+
// Default: Content section
|
|
112
|
+
return 'content';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Extract section heading text for debugging/labeling
|
|
116
|
+
*/
|
|
117
|
+
export function extractSectionHeading(section) {
|
|
118
|
+
const widgets = flattenWidgets(section);
|
|
119
|
+
for (const widget of widgets) {
|
|
120
|
+
if (widget.widgetType === 'heading') {
|
|
121
|
+
const title = widget.settings?.title;
|
|
122
|
+
if (typeof title === 'string') {
|
|
123
|
+
// Strip HTML tags
|
|
124
|
+
return title.replace(/<[^>]*>/g, '').trim();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/flare/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML to Content Parser
|
|
3
|
+
* Converts HTML strings to Flare Content nodes
|
|
4
|
+
*/
|
|
5
|
+
import type { ContentNode } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Convert HTML string to Flare Content nodes
|
|
8
|
+
*/
|
|
9
|
+
export declare function htmlToContent(html: unknown): ContentNode[];
|
|
10
|
+
/**
|
|
11
|
+
* Extract plain text from HTML
|
|
12
|
+
*/
|
|
13
|
+
export declare function htmlToText(html: unknown): string;
|
|
14
|
+
/**
|
|
15
|
+
* Extract all image URLs from HTML
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractImagesFromHtml(html: unknown): Array<{
|
|
18
|
+
url: string;
|
|
19
|
+
alt?: string;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=html-to-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-to-content.d.ts","sourceRoot":"","sources":["../../src/flare/html-to-content.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AA8L1D;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,EAAE,CA2B1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBzF"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML to Content Parser
|
|
3
|
+
* Converts HTML strings to Flare Content nodes
|
|
4
|
+
*/
|
|
5
|
+
import { parseHTML } from 'linkedom';
|
|
6
|
+
/**
|
|
7
|
+
* Parse inline elements to InlineNode array
|
|
8
|
+
*/
|
|
9
|
+
function parseInline(element) {
|
|
10
|
+
const nodes = [];
|
|
11
|
+
for (let i = 0; i < element.childNodes.length; i++) {
|
|
12
|
+
const child = element.childNodes[i];
|
|
13
|
+
if (child.nodeType === 3) {
|
|
14
|
+
// Text node
|
|
15
|
+
const text = child.textContent?.trim();
|
|
16
|
+
if (text) {
|
|
17
|
+
nodes.push({ text });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else if (child.nodeType === 1) {
|
|
21
|
+
// Element node
|
|
22
|
+
const el = child;
|
|
23
|
+
const tagName = el.tagName.toLowerCase();
|
|
24
|
+
const innerText = el.textContent?.trim() || '';
|
|
25
|
+
switch (tagName) {
|
|
26
|
+
case 'strong':
|
|
27
|
+
case 'b':
|
|
28
|
+
nodes.push({ text: innerText, bold: true });
|
|
29
|
+
break;
|
|
30
|
+
case 'em':
|
|
31
|
+
case 'i':
|
|
32
|
+
nodes.push({ text: innerText, italic: true });
|
|
33
|
+
break;
|
|
34
|
+
case 'u':
|
|
35
|
+
nodes.push({ text: innerText, underline: true });
|
|
36
|
+
break;
|
|
37
|
+
case 'code':
|
|
38
|
+
nodes.push({ text: innerText, code: true });
|
|
39
|
+
break;
|
|
40
|
+
case 'a':
|
|
41
|
+
nodes.push({
|
|
42
|
+
text: innerText,
|
|
43
|
+
href: el.getAttribute('href') || '',
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
case 'br':
|
|
47
|
+
nodes.push({ text: '\n' });
|
|
48
|
+
break;
|
|
49
|
+
case 'span':
|
|
50
|
+
// Recursively parse span contents
|
|
51
|
+
nodes.push(...parseInline(el));
|
|
52
|
+
break;
|
|
53
|
+
default:
|
|
54
|
+
// Fallback: just get text
|
|
55
|
+
if (innerText) {
|
|
56
|
+
nodes.push({ text: innerText });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return nodes;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse list items
|
|
65
|
+
*/
|
|
66
|
+
function parseListItems(listElement) {
|
|
67
|
+
const items = [];
|
|
68
|
+
for (let i = 0; i < listElement.children.length; i++) {
|
|
69
|
+
const child = listElement.children[i];
|
|
70
|
+
if (child.tagName.toLowerCase() === 'li') {
|
|
71
|
+
items.push(parseInline(child));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return items;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Convert a single HTML element to a ContentNode
|
|
78
|
+
*/
|
|
79
|
+
function elementToContent(element) {
|
|
80
|
+
const tagName = element.tagName.toLowerCase();
|
|
81
|
+
switch (tagName) {
|
|
82
|
+
case 'p': {
|
|
83
|
+
const pChildren = parseInline(element);
|
|
84
|
+
if (pChildren.length === 0)
|
|
85
|
+
return null;
|
|
86
|
+
return { type: 'paragraph', children: pChildren };
|
|
87
|
+
}
|
|
88
|
+
case 'h1':
|
|
89
|
+
case 'h2':
|
|
90
|
+
case 'h3':
|
|
91
|
+
case 'h4':
|
|
92
|
+
case 'h5':
|
|
93
|
+
case 'h6': {
|
|
94
|
+
const level = parseInt(tagName[1]);
|
|
95
|
+
const hChildren = parseInline(element);
|
|
96
|
+
if (hChildren.length === 0)
|
|
97
|
+
return null;
|
|
98
|
+
return { type: 'heading', level, children: hChildren };
|
|
99
|
+
}
|
|
100
|
+
case 'ul': {
|
|
101
|
+
const ulItems = parseListItems(element);
|
|
102
|
+
if (ulItems.length === 0)
|
|
103
|
+
return null;
|
|
104
|
+
return { type: 'list', style: 'bullet', items: ulItems };
|
|
105
|
+
}
|
|
106
|
+
case 'ol': {
|
|
107
|
+
const olItems = parseListItems(element);
|
|
108
|
+
if (olItems.length === 0)
|
|
109
|
+
return null;
|
|
110
|
+
return { type: 'list', style: 'number', items: olItems };
|
|
111
|
+
}
|
|
112
|
+
case 'img': {
|
|
113
|
+
const src = element.getAttribute('src');
|
|
114
|
+
if (!src)
|
|
115
|
+
return null;
|
|
116
|
+
const widthAttr = element.getAttribute('width');
|
|
117
|
+
const heightAttr = element.getAttribute('height');
|
|
118
|
+
return {
|
|
119
|
+
type: 'image',
|
|
120
|
+
src,
|
|
121
|
+
alt: element.getAttribute('alt') || undefined,
|
|
122
|
+
width: widthAttr ? parseInt(widthAttr) : undefined,
|
|
123
|
+
height: heightAttr ? parseInt(heightAttr) : undefined,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
case 'figure': {
|
|
127
|
+
// Look for img inside figure
|
|
128
|
+
const figImg = element.querySelector('img');
|
|
129
|
+
if (figImg) {
|
|
130
|
+
const figSrc = figImg.getAttribute('src');
|
|
131
|
+
if (!figSrc)
|
|
132
|
+
return null;
|
|
133
|
+
const figCaption = element.querySelector('figcaption');
|
|
134
|
+
return {
|
|
135
|
+
type: 'image',
|
|
136
|
+
src: figSrc,
|
|
137
|
+
alt: figCaption?.textContent?.trim() || figImg.getAttribute('alt') || undefined,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
case 'div':
|
|
143
|
+
case 'section':
|
|
144
|
+
case 'article': {
|
|
145
|
+
// Container elements: recursively parse children
|
|
146
|
+
const containerNodes = [];
|
|
147
|
+
for (let i = 0; i < element.children.length; i++) {
|
|
148
|
+
const node = elementToContent(element.children[i]);
|
|
149
|
+
if (node)
|
|
150
|
+
containerNodes.push(node);
|
|
151
|
+
}
|
|
152
|
+
// If only one child, return it directly
|
|
153
|
+
if (containerNodes.length === 1)
|
|
154
|
+
return containerNodes[0];
|
|
155
|
+
// Otherwise return null (will be handled at top level)
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
case 'blockquote': {
|
|
159
|
+
// Convert blockquote to paragraph with styling hint
|
|
160
|
+
const bqChildren = parseInline(element);
|
|
161
|
+
if (bqChildren.length === 0)
|
|
162
|
+
return null;
|
|
163
|
+
return { type: 'paragraph', children: bqChildren };
|
|
164
|
+
}
|
|
165
|
+
default: {
|
|
166
|
+
// Unknown element: try to extract text as paragraph
|
|
167
|
+
const text = element.textContent?.trim();
|
|
168
|
+
if (text) {
|
|
169
|
+
return { type: 'paragraph', children: [{ text }] };
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Convert HTML string to Flare Content nodes
|
|
177
|
+
*/
|
|
178
|
+
export function htmlToContent(html) {
|
|
179
|
+
if (!html || typeof html !== 'string' || html.trim() === '') {
|
|
180
|
+
return [];
|
|
181
|
+
}
|
|
182
|
+
// Parse HTML using linkedom
|
|
183
|
+
const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);
|
|
184
|
+
const body = document.body;
|
|
185
|
+
const nodes = [];
|
|
186
|
+
for (let i = 0; i < body.children.length; i++) {
|
|
187
|
+
const node = elementToContent(body.children[i]);
|
|
188
|
+
if (node) {
|
|
189
|
+
nodes.push(node);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// If no structured content was found, try treating as plain text
|
|
193
|
+
if (nodes.length === 0) {
|
|
194
|
+
const text = body.textContent?.trim();
|
|
195
|
+
if (text) {
|
|
196
|
+
nodes.push({ type: 'paragraph', children: [{ text }] });
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return nodes;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Extract plain text from HTML
|
|
203
|
+
*/
|
|
204
|
+
export function htmlToText(html) {
|
|
205
|
+
if (!html || typeof html !== 'string' || html.trim() === '') {
|
|
206
|
+
return '';
|
|
207
|
+
}
|
|
208
|
+
const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);
|
|
209
|
+
return document.body.textContent?.trim() || '';
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Extract all image URLs from HTML
|
|
213
|
+
*/
|
|
214
|
+
export function extractImagesFromHtml(html) {
|
|
215
|
+
if (!html || typeof html !== 'string' || html.trim() === '') {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);
|
|
219
|
+
const images = [];
|
|
220
|
+
const imgElements = document.querySelectorAll('img');
|
|
221
|
+
for (let i = 0; i < imgElements.length; i++) {
|
|
222
|
+
const img = imgElements[i];
|
|
223
|
+
const src = img.getAttribute('src');
|
|
224
|
+
if (src) {
|
|
225
|
+
images.push({
|
|
226
|
+
url: src,
|
|
227
|
+
alt: img.getAttribute('alt') || undefined,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return images;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=html-to-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-to-content.js","sourceRoot":"","sources":["../../src/flare/html-to-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flare Transformation
|
|
3
|
+
* Main entry point for converting WordPress/Elementor exports to Flare format
|
|
4
|
+
*/
|
|
5
|
+
import type { FlareExport, WPExportData, WPSiteConfig } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Transform WordPress export data to Flare format
|
|
8
|
+
*/
|
|
9
|
+
export declare function transformToFlare(exportData: WPExportData, config?: WPSiteConfig | null): FlareExport;
|
|
10
|
+
interface WidgetInstance {
|
|
11
|
+
page: string;
|
|
12
|
+
pageSlug: string;
|
|
13
|
+
sectionIndex: number;
|
|
14
|
+
settings: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
interface WidgetBreakdown {
|
|
17
|
+
site: {
|
|
18
|
+
name: string;
|
|
19
|
+
url?: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
};
|
|
22
|
+
summary: {
|
|
23
|
+
totalPages: number;
|
|
24
|
+
totalWidgets: number;
|
|
25
|
+
widgetTypes: Record<string, number>;
|
|
26
|
+
};
|
|
27
|
+
pages: Array<{
|
|
28
|
+
title: string;
|
|
29
|
+
slug: string;
|
|
30
|
+
sections: Array<{
|
|
31
|
+
index: number;
|
|
32
|
+
widgets: Array<{
|
|
33
|
+
type: string;
|
|
34
|
+
settings: Record<string, unknown>;
|
|
35
|
+
}>;
|
|
36
|
+
}>;
|
|
37
|
+
}>;
|
|
38
|
+
widgetsByType: Record<string, WidgetInstance[]>;
|
|
39
|
+
elementorGlobals?: {
|
|
40
|
+
colors?: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
color: string;
|
|
43
|
+
title?: string;
|
|
44
|
+
}>;
|
|
45
|
+
typography?: Array<{
|
|
46
|
+
id: string;
|
|
47
|
+
fontFamily?: string;
|
|
48
|
+
title?: string;
|
|
49
|
+
}>;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Generate comprehensive widget breakdown for AI-assisted site rebuilding
|
|
54
|
+
* This format captures ALL widget data organized for easy AI consumption
|
|
55
|
+
*/
|
|
56
|
+
export declare function transformToWidgetBreakdown(exportData: WPExportData, config?: WPSiteConfig | null): WidgetBreakdown;
|
|
57
|
+
/**
|
|
58
|
+
* Transform to Markdown format
|
|
59
|
+
*/
|
|
60
|
+
export declare function transformToMarkdown(exportData: WPExportData): string;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flare/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EAIX,YAAY,EACZ,YAAY,EAKb,MAAM,YAAY,CAAC;AAwVpB;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,YAAY,EACxB,MAAM,GAAE,YAAY,GAAG,IAAW,GACjC,WAAW,CAuGb;AAMD,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,eAAe;IACvB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,KAAK,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,KAAK,CAAC;gBACb,IAAI,EAAE,MAAM,CAAC;gBACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACnC,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAChD,gBAAgB,CAAC,EAAE;QACjB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9D,UAAU,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzE,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,YAAY,EACxB,MAAM,GAAE,YAAY,GAAG,IAAW,GACjC,eAAe,CA8GjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,YAAY,GAAG,MAAM,CAwDpE"}
|