@actuate-media/cms-core 0.7.0 → 0.9.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.
Files changed (82) hide show
  1. package/dist/api/handlers.d.ts.map +1 -1
  2. package/dist/api/handlers.js +530 -0
  3. package/dist/api/handlers.js.map +1 -1
  4. package/dist/config/types.d.ts +3 -0
  5. package/dist/config/types.d.ts.map +1 -1
  6. package/dist/config/types.js +0 -1
  7. package/dist/config/types.js.map +1 -1
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/page-builder/__tests__/a11y-fix.test.d.ts +2 -0
  13. package/dist/page-builder/__tests__/a11y-fix.test.d.ts.map +1 -0
  14. package/dist/page-builder/__tests__/a11y-fix.test.js +246 -0
  15. package/dist/page-builder/__tests__/a11y-fix.test.js.map +1 -0
  16. package/dist/page-builder/__tests__/blocks.test.d.ts +2 -0
  17. package/dist/page-builder/__tests__/blocks.test.d.ts.map +1 -0
  18. package/dist/page-builder/__tests__/blocks.test.js +87 -0
  19. package/dist/page-builder/__tests__/blocks.test.js.map +1 -0
  20. package/dist/page-builder/__tests__/design-scorer.test.d.ts +2 -0
  21. package/dist/page-builder/__tests__/design-scorer.test.d.ts.map +1 -0
  22. package/dist/page-builder/__tests__/design-scorer.test.js +268 -0
  23. package/dist/page-builder/__tests__/design-scorer.test.js.map +1 -0
  24. package/dist/page-builder/__tests__/schema.test.d.ts +2 -0
  25. package/dist/page-builder/__tests__/schema.test.d.ts.map +1 -0
  26. package/dist/page-builder/__tests__/schema.test.js +191 -0
  27. package/dist/page-builder/__tests__/schema.test.js.map +1 -0
  28. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts +2 -0
  29. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts.map +1 -0
  30. package/dist/page-builder/__tests__/seo-analyzer.test.js +332 -0
  31. package/dist/page-builder/__tests__/seo-analyzer.test.js.map +1 -0
  32. package/dist/page-builder/__tests__/tree.test.d.ts +2 -0
  33. package/dist/page-builder/__tests__/tree.test.d.ts.map +1 -0
  34. package/dist/page-builder/__tests__/tree.test.js +257 -0
  35. package/dist/page-builder/__tests__/tree.test.js.map +1 -0
  36. package/dist/page-builder/a11y-fix.d.ts +20 -0
  37. package/dist/page-builder/a11y-fix.d.ts.map +1 -0
  38. package/dist/page-builder/a11y-fix.js +182 -0
  39. package/dist/page-builder/a11y-fix.js.map +1 -0
  40. package/dist/page-builder/ai-pipeline.d.ts +43 -0
  41. package/dist/page-builder/ai-pipeline.d.ts.map +1 -0
  42. package/dist/page-builder/ai-pipeline.js +167 -0
  43. package/dist/page-builder/ai-pipeline.js.map +1 -0
  44. package/dist/page-builder/blocks.d.ts +10 -0
  45. package/dist/page-builder/blocks.d.ts.map +1 -0
  46. package/dist/page-builder/blocks.js +252 -0
  47. package/dist/page-builder/blocks.js.map +1 -0
  48. package/dist/page-builder/design-scorer.d.ts +27 -0
  49. package/dist/page-builder/design-scorer.d.ts.map +1 -0
  50. package/dist/page-builder/design-scorer.js +404 -0
  51. package/dist/page-builder/design-scorer.js.map +1 -0
  52. package/dist/page-builder/index.d.ts +18 -0
  53. package/dist/page-builder/index.d.ts.map +1 -0
  54. package/dist/page-builder/index.js +20 -0
  55. package/dist/page-builder/index.js.map +1 -0
  56. package/dist/page-builder/schema.d.ts +107 -0
  57. package/dist/page-builder/schema.d.ts.map +1 -0
  58. package/dist/page-builder/schema.js +90 -0
  59. package/dist/page-builder/schema.js.map +1 -0
  60. package/dist/page-builder/seo-analyzer.d.ts +61 -0
  61. package/dist/page-builder/seo-analyzer.d.ts.map +1 -0
  62. package/dist/page-builder/seo-analyzer.js +582 -0
  63. package/dist/page-builder/seo-analyzer.js.map +1 -0
  64. package/dist/page-builder/templates.d.ts +9 -0
  65. package/dist/page-builder/templates.d.ts.map +1 -0
  66. package/dist/page-builder/templates.js +401 -0
  67. package/dist/page-builder/templates.js.map +1 -0
  68. package/dist/page-builder/tree.d.ts +17 -0
  69. package/dist/page-builder/tree.d.ts.map +1 -0
  70. package/dist/page-builder/tree.js +160 -0
  71. package/dist/page-builder/tree.js.map +1 -0
  72. package/dist/page-builder/types.d.ts +112 -0
  73. package/dist/page-builder/types.d.ts.map +1 -0
  74. package/dist/page-builder/types.js +4 -0
  75. package/dist/page-builder/types.js.map +1 -0
  76. package/dist/page-builder/validate.d.ts +6 -0
  77. package/dist/page-builder/validate.d.ts.map +1 -0
  78. package/dist/page-builder/validate.js +87 -0
  79. package/dist/page-builder/validate.js.map +1 -0
  80. package/package.json +6 -1
  81. package/prisma/migrations/0006_page_builder/migration.sql +38 -0
  82. package/prisma/schema.prisma +31 -0
@@ -0,0 +1,401 @@
1
+ function section(id, children) {
2
+ return { id, type: 'section', settings: {}, children };
3
+ }
4
+ function container(id, children) {
5
+ return { id, type: 'container', settings: { maxWidth: '1200px' }, children };
6
+ }
7
+ function row(id, children) {
8
+ return { id, type: 'row', settings: { gap: '24px' }, children };
9
+ }
10
+ function col(id, width, children) {
11
+ return { id, type: 'column', settings: { width }, children };
12
+ }
13
+ function block(id, blockType, variant, data) {
14
+ return {
15
+ id,
16
+ type: 'block',
17
+ settings: { blockType, ...(variant ? { variant } : {}) },
18
+ data: data ?? {},
19
+ };
20
+ }
21
+ // ─── Blank ───────────────────────────────────────────────────────────────────
22
+ const blankTree = {
23
+ id: 'blank-page',
24
+ type: 'page',
25
+ children: [
26
+ section('blank-section-1', [
27
+ container('blank-container-1', [
28
+ row('blank-row-1', [
29
+ col('blank-col-1', 12, []),
30
+ ]),
31
+ ]),
32
+ ]),
33
+ ],
34
+ };
35
+ // ─── Landing ─────────────────────────────────────────────────────────────────
36
+ const landingTree = {
37
+ id: 'landing-page',
38
+ type: 'page',
39
+ children: [
40
+ section('landing-hero-section', [
41
+ container('landing-hero-container', [
42
+ row('landing-hero-row', [
43
+ col('landing-hero-col', 12, [
44
+ block('landing-hero-heading', 'heading', 'h1', { text: '' }),
45
+ block('landing-hero-text', 'text', 'lead', { text: '' }),
46
+ block('landing-hero-button', 'button', 'primary', { text: '', url: '' }),
47
+ ]),
48
+ ]),
49
+ ]),
50
+ ]),
51
+ section('landing-features-section', [
52
+ container('landing-features-container', [
53
+ row('landing-features-row', [
54
+ col('landing-feature-col-1', 4, [
55
+ block('landing-feature-1-icon', 'icon', undefined, { icon: '' }),
56
+ block('landing-feature-1-heading', 'heading', 'h3', { text: '' }),
57
+ block('landing-feature-1-text', 'text', undefined, { text: '' }),
58
+ ]),
59
+ col('landing-feature-col-2', 4, [
60
+ block('landing-feature-2-icon', 'icon', undefined, { icon: '' }),
61
+ block('landing-feature-2-heading', 'heading', 'h3', { text: '' }),
62
+ block('landing-feature-2-text', 'text', undefined, { text: '' }),
63
+ ]),
64
+ col('landing-feature-col-3', 4, [
65
+ block('landing-feature-3-icon', 'icon', undefined, { icon: '' }),
66
+ block('landing-feature-3-heading', 'heading', 'h3', { text: '' }),
67
+ block('landing-feature-3-text', 'text', undefined, { text: '' }),
68
+ ]),
69
+ ]),
70
+ ]),
71
+ ]),
72
+ section('landing-cta-section', [
73
+ container('landing-cta-container', [
74
+ row('landing-cta-row', [
75
+ col('landing-cta-col', 12, [
76
+ block('landing-cta-heading', 'heading', 'h2', { text: '' }),
77
+ block('landing-cta-text', 'text', undefined, { text: '' }),
78
+ block('landing-cta-button', 'button', 'primary', { text: '', url: '' }),
79
+ ]),
80
+ ]),
81
+ ]),
82
+ ]),
83
+ section('landing-testimonials-section', [
84
+ container('landing-testimonials-container', [
85
+ row('landing-testimonials-row', [
86
+ col('landing-testimonial-col-1', 4, [
87
+ block('landing-testimonial-1', 'testimonial', undefined, { quote: '', author: '', role: '' }),
88
+ ]),
89
+ col('landing-testimonial-col-2', 4, [
90
+ block('landing-testimonial-2', 'testimonial', undefined, { quote: '', author: '', role: '' }),
91
+ ]),
92
+ col('landing-testimonial-col-3', 4, [
93
+ block('landing-testimonial-3', 'testimonial', undefined, { quote: '', author: '', role: '' }),
94
+ ]),
95
+ ]),
96
+ ]),
97
+ ]),
98
+ section('landing-final-cta-section', [
99
+ container('landing-final-cta-container', [
100
+ row('landing-final-cta-row', [
101
+ col('landing-final-cta-col', 12, [
102
+ block('landing-final-cta-heading', 'heading', 'h2', { text: '' }),
103
+ block('landing-final-cta-button', 'button', 'primary', { text: '', url: '' }),
104
+ ]),
105
+ ]),
106
+ ]),
107
+ ]),
108
+ ],
109
+ };
110
+ // ─── About ───────────────────────────────────────────────────────────────────
111
+ const aboutTree = {
112
+ id: 'about-page',
113
+ type: 'page',
114
+ children: [
115
+ section('about-hero-section', [
116
+ container('about-hero-container', [
117
+ row('about-hero-row', [
118
+ col('about-hero-col', 12, [
119
+ block('about-hero-heading', 'heading', 'h1', { text: '' }),
120
+ block('about-hero-text', 'text', 'lead', { text: '' }),
121
+ ]),
122
+ ]),
123
+ ]),
124
+ ]),
125
+ section('about-mission-section', [
126
+ container('about-mission-container', [
127
+ row('about-mission-row', [
128
+ col('about-mission-col', 12, [
129
+ block('about-mission-heading', 'heading', 'h2', { text: '' }),
130
+ block('about-mission-text', 'text', undefined, { text: '' }),
131
+ ]),
132
+ ]),
133
+ ]),
134
+ ]),
135
+ section('about-team-section', [
136
+ container('about-team-container', [
137
+ row('about-team-row', [
138
+ col('about-team-col-1', 3, [
139
+ block('about-team-1-image', 'image', undefined, { src: '', alt: '' }),
140
+ block('about-team-1-name', 'heading', 'h4', { text: '' }),
141
+ block('about-team-1-role', 'text', 'caption', { text: '' }),
142
+ ]),
143
+ col('about-team-col-2', 3, [
144
+ block('about-team-2-image', 'image', undefined, { src: '', alt: '' }),
145
+ block('about-team-2-name', 'heading', 'h4', { text: '' }),
146
+ block('about-team-2-role', 'text', 'caption', { text: '' }),
147
+ ]),
148
+ col('about-team-col-3', 3, [
149
+ block('about-team-3-image', 'image', undefined, { src: '', alt: '' }),
150
+ block('about-team-3-name', 'heading', 'h4', { text: '' }),
151
+ block('about-team-3-role', 'text', 'caption', { text: '' }),
152
+ ]),
153
+ col('about-team-col-4', 3, [
154
+ block('about-team-4-image', 'image', undefined, { src: '', alt: '' }),
155
+ block('about-team-4-name', 'heading', 'h4', { text: '' }),
156
+ block('about-team-4-role', 'text', 'caption', { text: '' }),
157
+ ]),
158
+ ]),
159
+ ]),
160
+ ]),
161
+ section('about-stats-section', [
162
+ container('about-stats-container', [
163
+ row('about-stats-row', [
164
+ col('about-stats-col-1', 3, [
165
+ block('about-stat-1', 'stat', undefined, { value: '', label: '' }),
166
+ ]),
167
+ col('about-stats-col-2', 3, [
168
+ block('about-stat-2', 'stat', undefined, { value: '', label: '' }),
169
+ ]),
170
+ col('about-stats-col-3', 3, [
171
+ block('about-stat-3', 'stat', undefined, { value: '', label: '' }),
172
+ ]),
173
+ col('about-stats-col-4', 3, [
174
+ block('about-stat-4', 'stat', undefined, { value: '', label: '' }),
175
+ ]),
176
+ ]),
177
+ ]),
178
+ ]),
179
+ section('about-cta-section', [
180
+ container('about-cta-container', [
181
+ row('about-cta-row', [
182
+ col('about-cta-col', 12, [
183
+ block('about-cta-heading', 'heading', 'h2', { text: '' }),
184
+ block('about-cta-text', 'text', undefined, { text: '' }),
185
+ block('about-cta-button', 'button', 'primary', { text: '', url: '' }),
186
+ ]),
187
+ ]),
188
+ ]),
189
+ ]),
190
+ ],
191
+ };
192
+ // ─── Contact ─────────────────────────────────────────────────────────────────
193
+ const contactTree = {
194
+ id: 'contact-page',
195
+ type: 'page',
196
+ children: [
197
+ section('contact-hero-section', [
198
+ container('contact-hero-container', [
199
+ row('contact-hero-row', [
200
+ col('contact-hero-col', 12, [
201
+ block('contact-hero-heading', 'heading', 'h1', { text: '' }),
202
+ block('contact-hero-text', 'text', undefined, { text: '' }),
203
+ ]),
204
+ ]),
205
+ ]),
206
+ ]),
207
+ section('contact-form-section', [
208
+ container('contact-form-container', [
209
+ row('contact-form-row', [
210
+ col('contact-form-col', 8, [
211
+ block('contact-form', 'form', 'contact', { fields: [] }),
212
+ ]),
213
+ col('contact-info-col', 4, [
214
+ block('contact-info-heading', 'heading', 'h3', { text: '' }),
215
+ block('contact-info-address', 'text', undefined, { text: '' }),
216
+ block('contact-info-phone', 'text', undefined, { text: '' }),
217
+ block('contact-info-email', 'text', undefined, { text: '' }),
218
+ ]),
219
+ ]),
220
+ ]),
221
+ ]),
222
+ section('contact-map-section', [
223
+ container('contact-map-container', [
224
+ row('contact-map-row', [
225
+ col('contact-map-col', 12, [
226
+ block('contact-map', 'map', undefined, { lat: 0, lng: 0, zoom: 14 }),
227
+ ]),
228
+ ]),
229
+ ]),
230
+ ]),
231
+ ],
232
+ };
233
+ // ─── Location ────────────────────────────────────────────────────────────────
234
+ const locationTree = {
235
+ id: 'location-page',
236
+ type: 'page',
237
+ children: [
238
+ section('location-hero-section', [
239
+ container('location-hero-container', [
240
+ row('location-hero-row', [
241
+ col('location-hero-col', 12, [
242
+ block('location-hero-heading', 'heading', 'h1', { text: '' }),
243
+ block('location-hero-text', 'text', 'lead', { text: '' }),
244
+ ]),
245
+ ]),
246
+ ]),
247
+ ]),
248
+ section('location-services-section', [
249
+ container('location-services-container', [
250
+ row('location-services-row', [
251
+ col('location-service-col-1', 4, [
252
+ block('location-service-1-icon', 'icon', undefined, { icon: '' }),
253
+ block('location-service-1-heading', 'heading', 'h3', { text: '' }),
254
+ block('location-service-1-text', 'text', undefined, { text: '' }),
255
+ ]),
256
+ col('location-service-col-2', 4, [
257
+ block('location-service-2-icon', 'icon', undefined, { icon: '' }),
258
+ block('location-service-2-heading', 'heading', 'h3', { text: '' }),
259
+ block('location-service-2-text', 'text', undefined, { text: '' }),
260
+ ]),
261
+ col('location-service-col-3', 4, [
262
+ block('location-service-3-icon', 'icon', undefined, { icon: '' }),
263
+ block('location-service-3-heading', 'heading', 'h3', { text: '' }),
264
+ block('location-service-3-text', 'text', undefined, { text: '' }),
265
+ ]),
266
+ ]),
267
+ ]),
268
+ ]),
269
+ section('location-testimonials-section', [
270
+ container('location-testimonials-container', [
271
+ row('location-testimonials-row', [
272
+ col('location-testimonial-col-1', 6, [
273
+ block('location-testimonial-1', 'testimonial', undefined, { quote: '', author: '', role: '' }),
274
+ ]),
275
+ col('location-testimonial-col-2', 6, [
276
+ block('location-testimonial-2', 'testimonial', undefined, { quote: '', author: '', role: '' }),
277
+ ]),
278
+ ]),
279
+ ]),
280
+ ]),
281
+ section('location-faq-section', [
282
+ container('location-faq-container', [
283
+ row('location-faq-row', [
284
+ col('location-faq-col', 12, [
285
+ block('location-faq-heading', 'heading', 'h2', { text: '' }),
286
+ block('location-faq', 'accordion', undefined, { items: [] }),
287
+ ]),
288
+ ]),
289
+ ]),
290
+ ]),
291
+ section('location-contact-section', [
292
+ container('location-contact-container', [
293
+ row('location-contact-row', [
294
+ col('location-contact-info-col', 6, [
295
+ block('location-contact-heading', 'heading', 'h3', { text: '' }),
296
+ block('location-contact-address', 'text', undefined, { text: '' }),
297
+ block('location-contact-phone', 'text', undefined, { text: '' }),
298
+ block('location-contact-hours', 'text', undefined, { text: '' }),
299
+ ]),
300
+ col('location-contact-map-col', 6, [
301
+ block('location-contact-map', 'map', undefined, { lat: 0, lng: 0, zoom: 14 }),
302
+ ]),
303
+ ]),
304
+ ]),
305
+ ]),
306
+ ],
307
+ };
308
+ // ─── Blog Post ───────────────────────────────────────────────────────────────
309
+ const blogPostTree = {
310
+ id: 'blog-post-page',
311
+ type: 'page',
312
+ children: [
313
+ section('blog-post-hero-section', [
314
+ container('blog-post-hero-container', [
315
+ row('blog-post-hero-row', [
316
+ col('blog-post-hero-col', 12, [
317
+ block('blog-post-hero-heading', 'heading', 'h1', { text: '' }),
318
+ block('blog-post-hero-meta', 'text', 'caption', { text: '' }),
319
+ ]),
320
+ ]),
321
+ ]),
322
+ ]),
323
+ section('blog-post-content-section', [
324
+ container('blog-post-content-container', [
325
+ row('blog-post-content-row', [
326
+ col('blog-post-content-col', 12, [
327
+ block('blog-post-content', 'richText', undefined, { content: '' }),
328
+ ]),
329
+ ]),
330
+ ]),
331
+ ]),
332
+ section('blog-post-author-section', [
333
+ container('blog-post-author-container', [
334
+ row('blog-post-author-row', [
335
+ col('blog-post-author-avatar-col', 2, [
336
+ block('blog-post-author-avatar', 'image', 'avatar', { src: '', alt: '' }),
337
+ ]),
338
+ col('blog-post-author-bio-col', 10, [
339
+ block('blog-post-author-name', 'heading', 'h4', { text: '' }),
340
+ block('blog-post-author-bio', 'text', undefined, { text: '' }),
341
+ ]),
342
+ ]),
343
+ ]),
344
+ ]),
345
+ section('blog-post-related-section', [
346
+ container('blog-post-related-container', [
347
+ row('blog-post-related-row', [
348
+ col('blog-post-related-col-1', 4, [
349
+ block('blog-post-related-1', 'card', undefined, { title: '', excerpt: '', image: '', url: '' }),
350
+ ]),
351
+ col('blog-post-related-col-2', 4, [
352
+ block('blog-post-related-2', 'card', undefined, { title: '', excerpt: '', image: '', url: '' }),
353
+ ]),
354
+ col('blog-post-related-col-3', 4, [
355
+ block('blog-post-related-3', 'card', undefined, { title: '', excerpt: '', image: '', url: '' }),
356
+ ]),
357
+ ]),
358
+ ]),
359
+ ]),
360
+ ],
361
+ };
362
+ // ─── Export ──────────────────────────────────────────────────────────────────
363
+ export const BUILT_IN_TEMPLATES = {
364
+ blank: {
365
+ name: 'Blank Page',
366
+ description: 'Empty page with a single section ready for content',
367
+ category: 'utility',
368
+ tree: blankTree,
369
+ },
370
+ landing: {
371
+ name: 'Landing Page',
372
+ description: 'Hero, features cards, CTA, testimonials, and final CTA',
373
+ category: 'landing',
374
+ tree: landingTree,
375
+ },
376
+ about: {
377
+ name: 'About Page',
378
+ description: 'Hero, mission text, team cards, stats, and CTA',
379
+ category: 'content',
380
+ tree: aboutTree,
381
+ },
382
+ contact: {
383
+ name: 'Contact Page',
384
+ description: 'Hero, two-column form with contact info, and map embed',
385
+ category: 'utility',
386
+ tree: contactTree,
387
+ },
388
+ location: {
389
+ name: 'Location Page',
390
+ description: 'Hero, services cards, testimonials, FAQ, and contact info with map',
391
+ category: 'landing',
392
+ tree: locationTree,
393
+ },
394
+ 'blog-post': {
395
+ name: 'Blog Post',
396
+ description: 'Hero with meta, long-form content, author bio, and related posts',
397
+ category: 'content',
398
+ tree: blogPostTree,
399
+ },
400
+ };
401
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/page-builder/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { BuilderNode, ParentNode, PageNode, SectionNode, ContainerNode, RowNode, ColumnNode, BlockNode, SavedSectionRefNode, SectionSettings, ContainerSettings, RowSettings } from './types.js';
2
+ export declare function createId(): string;
3
+ export declare function findNode(root: BuilderNode, id: string): BuilderNode | undefined;
4
+ export declare function findParent(root: BuilderNode, id: string): ParentNode | undefined;
5
+ export declare function addNode(root: PageNode, parentId: string, node: BuilderNode, index?: number): PageNode;
6
+ export declare function removeNode(root: PageNode, nodeId: string): PageNode;
7
+ export declare function moveNode(root: PageNode, nodeId: string, newParentId: string, index?: number): PageNode;
8
+ export declare function updateNodeSettings(root: PageNode, nodeId: string, settings: Record<string, unknown>): PageNode;
9
+ export declare function updateBlockData(root: PageNode, blockId: string, data: Record<string, unknown>): PageNode;
10
+ export declare function createEmptyPage(): PageNode;
11
+ export declare function createSection(settings?: Partial<SectionSettings>): SectionNode;
12
+ export declare function createContainer(settings?: Partial<ContainerSettings>): ContainerNode;
13
+ export declare function createRow(columns?: ColumnNode[], settings?: Partial<RowSettings>): RowNode;
14
+ export declare function createColumn(width: number, children?: (BlockNode | ContainerNode)[]): ColumnNode;
15
+ export declare function createBlock(blockType: string, variant?: string, data?: Record<string, unknown>): BlockNode;
16
+ export declare function createSavedSectionRef(refId: string): SavedSectionRefNode;
17
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/page-builder/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EACb,OAAO,EACP,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACZ,MAAM,YAAY,CAAA;AAOnB,wBAAgB,QAAQ,IAAI,MAAM,CAKjC;AAWD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAO/E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAQhF;AAQD,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAYrG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAUnE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAuBtG;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,QAAQ,CAMV;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,QAAQ,CAMV;AAID,wBAAgB,eAAe,IAAI,QAAQ,CAE1C;AAED,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,CAO9E;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAOpF;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAO1F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,GAAG,UAAU,CAOhG;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,SAAS,CAOX;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAMxE"}
@@ -0,0 +1,160 @@
1
+ import { hasChildren } from './types.js';
2
+ // ─── ID Generation ──────────────────────────────────────────────────
3
+ let counter = 0;
4
+ export function createId() {
5
+ const timestamp = Date.now().toString(36);
6
+ const count = (counter++).toString(36);
7
+ const random = Math.random().toString(36).slice(2, 8);
8
+ return `node_${timestamp}_${count}_${random}`;
9
+ }
10
+ // ─── Tree Traversal ─────────────────────────────────────────────────
11
+ function getChildren(node) {
12
+ if (hasChildren(node)) {
13
+ return node.children;
14
+ }
15
+ return [];
16
+ }
17
+ export function findNode(root, id) {
18
+ if (root.id === id)
19
+ return root;
20
+ for (const child of getChildren(root)) {
21
+ const found = findNode(child, id);
22
+ if (found)
23
+ return found;
24
+ }
25
+ return undefined;
26
+ }
27
+ export function findParent(root, id) {
28
+ if (!hasChildren(root))
29
+ return undefined;
30
+ for (const child of getChildren(root)) {
31
+ if (child.id === id)
32
+ return root;
33
+ const found = findParent(child, id);
34
+ if (found)
35
+ return found;
36
+ }
37
+ return undefined;
38
+ }
39
+ // ─── Tree Mutation (Immutable) ──────────────────────────────────────
40
+ function deepClone(obj) {
41
+ return JSON.parse(JSON.stringify(obj));
42
+ }
43
+ export function addNode(root, parentId, node, index) {
44
+ const newRoot = deepClone(root);
45
+ const parent = findNode(newRoot, parentId);
46
+ if (!parent || !hasChildren(parent))
47
+ return newRoot;
48
+ const clonedNode = deepClone(node);
49
+ const children = parent.children;
50
+ if (index !== undefined) {
51
+ children.splice(index, 0, clonedNode);
52
+ }
53
+ else {
54
+ children.push(clonedNode);
55
+ }
56
+ return newRoot;
57
+ }
58
+ export function removeNode(root, nodeId) {
59
+ const newRoot = deepClone(root);
60
+ const parent = findParent(newRoot, nodeId);
61
+ if (!parent)
62
+ return newRoot;
63
+ const children = parent.children;
64
+ const idx = children.findIndex((c) => c.id === nodeId);
65
+ if (idx !== -1) {
66
+ children.splice(idx, 1);
67
+ }
68
+ return newRoot;
69
+ }
70
+ export function moveNode(root, nodeId, newParentId, index) {
71
+ const newRoot = deepClone(root);
72
+ const oldParent = findParent(newRoot, nodeId);
73
+ if (!oldParent)
74
+ return newRoot;
75
+ const oldChildren = oldParent.children;
76
+ const idx = oldChildren.findIndex((c) => c.id === nodeId);
77
+ if (idx === -1)
78
+ return newRoot;
79
+ const removed = oldChildren.splice(idx, 1);
80
+ const node = removed[0];
81
+ const newParent = findNode(newRoot, newParentId);
82
+ if (!newParent || !hasChildren(newParent))
83
+ return newRoot;
84
+ const newChildren = newParent.children;
85
+ if (index !== undefined) {
86
+ newChildren.splice(index, 0, node);
87
+ }
88
+ else {
89
+ newChildren.push(node);
90
+ }
91
+ return newRoot;
92
+ }
93
+ export function updateNodeSettings(root, nodeId, settings) {
94
+ const newRoot = deepClone(root);
95
+ const node = findNode(newRoot, nodeId);
96
+ if (!node || !('settings' in node))
97
+ return newRoot;
98
+ node.settings = { ...node.settings, ...settings };
99
+ return newRoot;
100
+ }
101
+ export function updateBlockData(root, blockId, data) {
102
+ const newRoot = deepClone(root);
103
+ const node = findNode(newRoot, blockId);
104
+ if (!node || node.type !== 'block')
105
+ return newRoot;
106
+ node.data = { ...node.data, ...data };
107
+ return newRoot;
108
+ }
109
+ // ─── Factory Functions ──────────────────────────────────────────────
110
+ export function createEmptyPage() {
111
+ return { id: createId(), type: 'page', children: [] };
112
+ }
113
+ export function createSection(settings) {
114
+ return {
115
+ id: createId(),
116
+ type: 'section',
117
+ settings: { ...settings },
118
+ children: [],
119
+ };
120
+ }
121
+ export function createContainer(settings) {
122
+ return {
123
+ id: createId(),
124
+ type: 'container',
125
+ settings: { maxWidth: '1200px', ...settings },
126
+ children: [],
127
+ };
128
+ }
129
+ export function createRow(columns, settings) {
130
+ return {
131
+ id: createId(),
132
+ type: 'row',
133
+ settings: { gap: '24px', ...settings },
134
+ children: columns ?? [],
135
+ };
136
+ }
137
+ export function createColumn(width, children) {
138
+ return {
139
+ id: createId(),
140
+ type: 'column',
141
+ settings: { width },
142
+ children: children ?? [],
143
+ };
144
+ }
145
+ export function createBlock(blockType, variant, data) {
146
+ return {
147
+ id: createId(),
148
+ type: 'block',
149
+ settings: { blockType, ...(variant ? { variant } : {}) },
150
+ data: data ?? {},
151
+ };
152
+ }
153
+ export function createSavedSectionRef(refId) {
154
+ return {
155
+ id: createId(),
156
+ type: 'savedSectionRef',
157
+ settings: { refId },
158
+ };
159
+ }
160
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/page-builder/tree.ts"],"names":[],"mappings":"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"}