@duongthiu/onex-core 0.1.0 → 0.1.1
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/README.md +44 -65
- package/THEME_API.md +36 -33
- package/dist/api.js +14 -0
- package/dist/api.js.map +1 -0
- package/dist/api.mjs +5 -0
- package/dist/api.mjs.map +1 -0
- package/dist/auth.js +23 -0
- package/dist/auth.js.map +1 -0
- package/dist/auth.mjs +6 -0
- package/dist/auth.mjs.map +1 -0
- package/dist/blog.js +22 -0
- package/dist/blog.js.map +1 -0
- package/dist/blog.mjs +5 -0
- package/dist/blog.mjs.map +1 -0
- package/dist/cart.js +27 -0
- package/dist/cart.js.map +1 -0
- package/dist/cart.mjs +6 -0
- package/dist/cart.mjs.map +1 -0
- package/dist/chunk-2CSWHI3L.js +210 -0
- package/dist/chunk-2CSWHI3L.js.map +1 -0
- package/dist/chunk-2FGHIDUV.js +99 -0
- package/dist/chunk-2FGHIDUV.js.map +1 -0
- package/dist/chunk-2NMEKWO5.js +40 -0
- package/dist/chunk-2NMEKWO5.js.map +1 -0
- package/dist/chunk-43BVHGDT.mjs +131 -0
- package/dist/chunk-43BVHGDT.mjs.map +1 -0
- package/dist/chunk-4JVQJI3I.mjs +290 -0
- package/dist/chunk-4JVQJI3I.mjs.map +1 -0
- package/dist/chunk-5N2EKK5O.js +9550 -0
- package/dist/chunk-5N2EKK5O.js.map +1 -0
- package/dist/chunk-5T6NDVSN.js +76 -0
- package/dist/chunk-5T6NDVSN.js.map +1 -0
- package/dist/chunk-73AINNCI.mjs +201 -0
- package/dist/chunk-73AINNCI.mjs.map +1 -0
- package/dist/chunk-AIXBDAVP.mjs +61 -0
- package/dist/chunk-AIXBDAVP.mjs.map +1 -0
- package/dist/chunk-ALYN5HAC.js +210 -0
- package/dist/chunk-ALYN5HAC.js.map +1 -0
- package/dist/chunk-AREMJR3Q.js +36 -0
- package/dist/chunk-AREMJR3Q.js.map +1 -0
- package/dist/chunk-DXAI6XOI.mjs +33 -0
- package/dist/chunk-DXAI6XOI.mjs.map +1 -0
- package/dist/chunk-F5TFNWFJ.mjs +257 -0
- package/dist/chunk-F5TFNWFJ.mjs.map +1 -0
- package/dist/chunk-FQ7FWUZN.js +265 -0
- package/dist/chunk-FQ7FWUZN.js.map +1 -0
- package/dist/{chunk-3SZX6LHT.js → chunk-J27VGXJH.js} +2 -24
- package/dist/chunk-J27VGXJH.js.map +1 -0
- package/dist/chunk-JZ46LLTZ.js +121 -0
- package/dist/chunk-JZ46LLTZ.js.map +1 -0
- package/dist/chunk-K24UHN6G.mjs +76 -0
- package/dist/chunk-K24UHN6G.mjs.map +1 -0
- package/dist/chunk-KCQGGU5R.mjs +344 -0
- package/dist/chunk-KCQGGU5R.mjs.map +1 -0
- package/dist/chunk-MT22NYKT.mjs +117 -0
- package/dist/chunk-MT22NYKT.mjs.map +1 -0
- package/dist/chunk-NDD472IZ.js +85 -0
- package/dist/chunk-NDD472IZ.js.map +1 -0
- package/dist/chunk-NHOIGGYU.mjs +833 -0
- package/dist/chunk-NHOIGGYU.mjs.map +1 -0
- package/dist/chunk-O3XR7TW3.mjs +12 -0
- package/dist/chunk-O3XR7TW3.mjs.map +1 -0
- package/dist/chunk-OAPYSC2X.mjs +206 -0
- package/dist/chunk-OAPYSC2X.mjs.map +1 -0
- package/dist/{chunk-XE4EOKS4.mjs → chunk-ONJREDYY.mjs} +3 -23
- package/dist/chunk-ONJREDYY.mjs.map +1 -0
- package/dist/chunk-OVT2LUAM.js +197 -0
- package/dist/chunk-OVT2LUAM.js.map +1 -0
- package/dist/chunk-OWNGNGKL.js +331 -0
- package/dist/chunk-OWNGNGKL.js.map +1 -0
- package/dist/chunk-P7SXNZSV.js +298 -0
- package/dist/chunk-P7SXNZSV.js.map +1 -0
- package/dist/chunk-PFJOL3HI.mjs +71 -0
- package/dist/chunk-PFJOL3HI.mjs.map +1 -0
- package/dist/chunk-PPULMWJ6.js +295 -0
- package/dist/chunk-PPULMWJ6.js.map +1 -0
- package/dist/chunk-RGIVKACG.js +359 -0
- package/dist/chunk-RGIVKACG.js.map +1 -0
- package/dist/chunk-RPP5K2LP.js +870 -0
- package/dist/chunk-RPP5K2LP.js.map +1 -0
- package/dist/{chunk-7EON6Q4L.mjs → chunk-RUCHWUD7.mjs} +7651 -6370
- package/dist/chunk-RUCHWUD7.mjs.map +1 -0
- package/dist/chunk-SEVUIX4H.js +137 -0
- package/dist/chunk-SEVUIX4H.js.map +1 -0
- package/dist/chunk-SK2FSHFM.mjs +208 -0
- package/dist/chunk-SK2FSHFM.mjs.map +1 -0
- package/dist/chunk-T6EJ2GAV.mjs +294 -0
- package/dist/chunk-T6EJ2GAV.mjs.map +1 -0
- package/dist/chunk-ULBDOFZI.mjs +302 -0
- package/dist/chunk-ULBDOFZI.mjs.map +1 -0
- package/dist/chunk-V3JIELNV.js +241 -0
- package/dist/chunk-V3JIELNV.js.map +1 -0
- package/dist/chunk-V5E2KWMA.mjs +238 -0
- package/dist/chunk-V5E2KWMA.mjs.map +1 -0
- package/dist/chunk-VJA3ER6A.js +14 -0
- package/dist/chunk-VJA3ER6A.js.map +1 -0
- package/dist/chunk-VLI7ULX5.js +66 -0
- package/dist/chunk-VLI7ULX5.js.map +1 -0
- package/dist/chunk-WFGS5OFH.mjs +189 -0
- package/dist/chunk-WFGS5OFH.mjs.map +1 -0
- package/dist/chunk-WVC5GP24.mjs +96 -0
- package/dist/chunk-WVC5GP24.mjs.map +1 -0
- package/dist/chunk-YOSPWY5K.mjs +36 -0
- package/dist/chunk-YOSPWY5K.mjs.map +1 -0
- package/dist/chunk-ZFFXXLX7.js +205 -0
- package/dist/chunk-ZFFXXLX7.js.map +1 -0
- package/dist/client.js +512 -249
- package/dist/client.mjs +21 -2
- package/dist/components.js +393 -0
- package/dist/components.js.map +1 -0
- package/dist/components.mjs +8 -0
- package/dist/components.mjs.map +1 -0
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -0
- package/dist/config.mjs +4 -0
- package/dist/config.mjs.map +1 -0
- package/dist/contact.js +22 -0
- package/dist/contact.js.map +1 -0
- package/dist/contact.mjs +5 -0
- package/dist/contact.mjs.map +1 -0
- package/dist/contexts.js +51 -0
- package/dist/contexts.js.map +1 -0
- package/dist/contexts.mjs +6 -0
- package/dist/contexts.mjs.map +1 -0
- package/dist/finance.js +26 -0
- package/dist/finance.js.map +1 -0
- package/dist/finance.mjs +5 -0
- package/dist/finance.mjs.map +1 -0
- package/dist/icons.js +15 -0
- package/dist/icons.js.map +1 -0
- package/dist/icons.mjs +4 -0
- package/dist/icons.mjs.map +1 -0
- package/dist/index.js +512 -249
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -2
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js +1437 -0
- package/dist/internal.js.map +1 -0
- package/dist/internal.mjs +1404 -0
- package/dist/internal.mjs.map +1 -0
- package/dist/motion.js +51 -0
- package/dist/motion.js.map +1 -0
- package/dist/motion.mjs +38 -0
- package/dist/motion.mjs.map +1 -0
- package/dist/orders.js +22 -0
- package/dist/orders.js.map +1 -0
- package/dist/orders.mjs +5 -0
- package/dist/orders.mjs.map +1 -0
- package/dist/products.js +27 -0
- package/dist/products.js.map +1 -0
- package/dist/products.mjs +6 -0
- package/dist/products.mjs.map +1 -0
- package/dist/registry.js +44 -0
- package/dist/registry.js.map +1 -0
- package/dist/registry.mjs +7 -0
- package/dist/registry.mjs.map +1 -0
- package/dist/renderers.js +51 -0
- package/dist/renderers.js.map +1 -0
- package/dist/renderers.mjs +6 -0
- package/dist/renderers.mjs.map +1 -0
- package/dist/server.js +11 -189
- package/dist/server.js.map +1 -1
- package/dist/server.mjs +3 -186
- package/dist/server.mjs.map +1 -1
- package/dist/types.js +37 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +4 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils.js +160 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +7 -0
- package/dist/utils.mjs.map +1 -0
- package/dist/wrappers.js +104 -0
- package/dist/wrappers.js.map +1 -0
- package/dist/wrappers.mjs +96 -0
- package/dist/wrappers.mjs.map +1 -0
- package/package.json +112 -9
- package/dist/api-vuL1Eg5L.d.mts +0 -2961
- package/dist/api-vuL1Eg5L.d.ts +0 -2961
- package/dist/chunk-3SZX6LHT.js.map +0 -1
- package/dist/chunk-7EON6Q4L.mjs.map +0 -1
- package/dist/chunk-WDY773GJ.js +0 -8308
- package/dist/chunk-WDY773GJ.js.map +0 -1
- package/dist/chunk-XE4EOKS4.mjs.map +0 -1
- package/dist/client.d.mts +0 -1461
- package/dist/client.d.ts +0 -1461
- package/dist/index.d.mts +0 -125
- package/dist/index.d.ts +0 -125
- package/dist/server.d.mts +0 -70
- package/dist/server.d.ts +0 -70
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var events = require('events');
|
|
5
|
+
|
|
6
|
+
// src/registry/block-registry.ts
|
|
7
|
+
function createBlockRegistry(config = {}) {
|
|
8
|
+
const { debug = false, allowOverride = false, maxBlocks = 200 } = config;
|
|
9
|
+
const blocks = /* @__PURE__ */ new Map();
|
|
10
|
+
const categories = /* @__PURE__ */ new Map();
|
|
11
|
+
const tags = /* @__PURE__ */ new Map();
|
|
12
|
+
const eventListeners = /* @__PURE__ */ new Map();
|
|
13
|
+
function emit(type, payload) {
|
|
14
|
+
const event = {
|
|
15
|
+
type,
|
|
16
|
+
payload,
|
|
17
|
+
timestamp: /* @__PURE__ */ new Date()
|
|
18
|
+
};
|
|
19
|
+
const listeners = eventListeners.get(type);
|
|
20
|
+
if (listeners) {
|
|
21
|
+
listeners.forEach(
|
|
22
|
+
(handler) => handler(event)
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function register(blockType, definition, component, options) {
|
|
27
|
+
if (!blockType) {
|
|
28
|
+
throw new Error("Block type is required");
|
|
29
|
+
}
|
|
30
|
+
if (blocks.has(blockType) && !allowOverride) {
|
|
31
|
+
throw new Error(`Block "${blockType}" is already registered`);
|
|
32
|
+
}
|
|
33
|
+
if (blocks.size >= maxBlocks) {
|
|
34
|
+
throw new Error(`Maximum number of blocks (${maxBlocks}) reached`);
|
|
35
|
+
}
|
|
36
|
+
const registration = {
|
|
37
|
+
definition,
|
|
38
|
+
component,
|
|
39
|
+
registeredAt: /* @__PURE__ */ new Date(),
|
|
40
|
+
tags: (options == null ? void 0 : options.tags) || []
|
|
41
|
+
};
|
|
42
|
+
blocks.set(blockType, registration);
|
|
43
|
+
const category = (options == null ? void 0 : options.category) || definition.category || "general";
|
|
44
|
+
if (!categories.has(category)) {
|
|
45
|
+
categories.set(category, /* @__PURE__ */ new Set());
|
|
46
|
+
}
|
|
47
|
+
categories.get(category).add(blockType);
|
|
48
|
+
if (options == null ? void 0 : options.tags) {
|
|
49
|
+
options.tags.forEach((tag) => {
|
|
50
|
+
if (!tags.has(tag)) {
|
|
51
|
+
tags.set(tag, /* @__PURE__ */ new Set());
|
|
52
|
+
}
|
|
53
|
+
tags.get(tag).add(blockType);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
emit("block:registered", {
|
|
57
|
+
type: blockType,
|
|
58
|
+
definition
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function get(blockType) {
|
|
62
|
+
return blocks.get(blockType);
|
|
63
|
+
}
|
|
64
|
+
function has(blockType) {
|
|
65
|
+
return blocks.has(blockType);
|
|
66
|
+
}
|
|
67
|
+
function unregister(blockType) {
|
|
68
|
+
const registration = blocks.get(blockType);
|
|
69
|
+
if (!registration) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
blocks.delete(blockType);
|
|
73
|
+
categories.forEach((types) => {
|
|
74
|
+
types.delete(blockType);
|
|
75
|
+
});
|
|
76
|
+
tags.forEach((types) => {
|
|
77
|
+
types.delete(blockType);
|
|
78
|
+
});
|
|
79
|
+
emit("block:unregistered", {
|
|
80
|
+
type: blockType
|
|
81
|
+
});
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
function getAll() {
|
|
85
|
+
return new Map(blocks);
|
|
86
|
+
}
|
|
87
|
+
function on(eventType, handler) {
|
|
88
|
+
if (!eventListeners.has(eventType)) {
|
|
89
|
+
eventListeners.set(eventType, /* @__PURE__ */ new Set());
|
|
90
|
+
}
|
|
91
|
+
eventListeners.get(eventType).add(handler);
|
|
92
|
+
}
|
|
93
|
+
function off(eventType, handler) {
|
|
94
|
+
var _a;
|
|
95
|
+
(_a = eventListeners.get(eventType)) == null ? void 0 : _a.delete(handler);
|
|
96
|
+
}
|
|
97
|
+
function clear() {
|
|
98
|
+
blocks.clear();
|
|
99
|
+
categories.clear();
|
|
100
|
+
tags.clear();
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
register,
|
|
104
|
+
get,
|
|
105
|
+
has,
|
|
106
|
+
unregister,
|
|
107
|
+
getAll,
|
|
108
|
+
on,
|
|
109
|
+
off,
|
|
110
|
+
clear
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
var blockRegistry = createBlockRegistry({
|
|
114
|
+
debug: process.env.NODE_ENV === "development",
|
|
115
|
+
// Allow override in all environments to support theme block overrides
|
|
116
|
+
allowOverride: true
|
|
117
|
+
});
|
|
118
|
+
var ComponentRegistry = class {
|
|
119
|
+
constructor() {
|
|
120
|
+
// Core storage
|
|
121
|
+
this.components = /* @__PURE__ */ new Map();
|
|
122
|
+
this.categories = /* @__PURE__ */ new Map();
|
|
123
|
+
this.tags = /* @__PURE__ */ new Map();
|
|
124
|
+
// Event emitter for registry changes
|
|
125
|
+
this.events = new events.EventEmitter();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Register a component type
|
|
129
|
+
*/
|
|
130
|
+
register(type, definition, component, options) {
|
|
131
|
+
const registration = {
|
|
132
|
+
definition,
|
|
133
|
+
component,
|
|
134
|
+
registeredAt: /* @__PURE__ */ new Date(),
|
|
135
|
+
category: (options == null ? void 0 : options.category) || definition.category,
|
|
136
|
+
tags: (options == null ? void 0 : options.tags) || definition.tags || []
|
|
137
|
+
};
|
|
138
|
+
this.components.set(type, registration);
|
|
139
|
+
const categorySet = this.categories.get(registration.category) || /* @__PURE__ */ new Set();
|
|
140
|
+
categorySet.add(type);
|
|
141
|
+
this.categories.set(registration.category, categorySet);
|
|
142
|
+
registration.tags.forEach((tag) => {
|
|
143
|
+
const tagSet = this.tags.get(tag) || /* @__PURE__ */ new Set();
|
|
144
|
+
tagSet.add(type);
|
|
145
|
+
this.tags.set(tag, tagSet);
|
|
146
|
+
});
|
|
147
|
+
this.events.emit("component:registered", { type, registration });
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Unregister a component type
|
|
151
|
+
*/
|
|
152
|
+
unregister(type) {
|
|
153
|
+
const registration = this.components.get(type);
|
|
154
|
+
if (!registration) return false;
|
|
155
|
+
this.components.delete(type);
|
|
156
|
+
const categorySet = this.categories.get(registration.category);
|
|
157
|
+
if (categorySet) {
|
|
158
|
+
categorySet.delete(type);
|
|
159
|
+
if (categorySet.size === 0) {
|
|
160
|
+
this.categories.delete(registration.category);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
registration.tags.forEach((tag) => {
|
|
164
|
+
const tagSet = this.tags.get(tag);
|
|
165
|
+
if (tagSet) {
|
|
166
|
+
tagSet.delete(type);
|
|
167
|
+
if (tagSet.size === 0) {
|
|
168
|
+
this.tags.delete(tag);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
this.events.emit("component:unregistered", { type });
|
|
173
|
+
return true;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get component by type
|
|
177
|
+
*/
|
|
178
|
+
get(type) {
|
|
179
|
+
return this.components.get(type);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get component definition by type
|
|
183
|
+
*/
|
|
184
|
+
getDefinition(type) {
|
|
185
|
+
var _a;
|
|
186
|
+
return (_a = this.components.get(type)) == null ? void 0 : _a.definition;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get component React component by type
|
|
190
|
+
*/
|
|
191
|
+
getComponent(type) {
|
|
192
|
+
var _a;
|
|
193
|
+
return (_a = this.components.get(type)) == null ? void 0 : _a.component;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get all components
|
|
197
|
+
*/
|
|
198
|
+
getAll() {
|
|
199
|
+
return new Map(this.components);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get all component types
|
|
203
|
+
*/
|
|
204
|
+
getAllTypes() {
|
|
205
|
+
return Array.from(this.components.keys());
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get components by category
|
|
209
|
+
*/
|
|
210
|
+
getByCategory(category) {
|
|
211
|
+
const types = this.categories.get(category);
|
|
212
|
+
if (!types) return [];
|
|
213
|
+
return Array.from(types).map((type) => this.components.get(type)).filter((reg) => reg !== void 0);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get components by tag
|
|
217
|
+
*/
|
|
218
|
+
getByTag(tag) {
|
|
219
|
+
const types = this.tags.get(tag);
|
|
220
|
+
if (!types) return [];
|
|
221
|
+
return Array.from(types).map((type) => this.components.get(type)).filter((reg) => reg !== void 0);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Search components
|
|
225
|
+
*/
|
|
226
|
+
search(query) {
|
|
227
|
+
const lowerQuery = query.toLowerCase();
|
|
228
|
+
return Array.from(this.components.values()).filter(
|
|
229
|
+
(reg) => {
|
|
230
|
+
var _a;
|
|
231
|
+
return reg.definition.name.toLowerCase().includes(lowerQuery) || ((_a = reg.definition.description) == null ? void 0 : _a.toLowerCase().includes(lowerQuery)) || reg.tags.some((tag) => tag.toLowerCase().includes(lowerQuery));
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get all categories
|
|
237
|
+
*/
|
|
238
|
+
getCategories() {
|
|
239
|
+
return Array.from(this.categories.keys());
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get all tags
|
|
243
|
+
*/
|
|
244
|
+
getTags() {
|
|
245
|
+
return Array.from(this.tags.keys());
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Check if component type exists
|
|
249
|
+
*/
|
|
250
|
+
has(type) {
|
|
251
|
+
return this.components.has(type);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get component count
|
|
255
|
+
*/
|
|
256
|
+
count() {
|
|
257
|
+
return this.components.size;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get component count by category
|
|
261
|
+
*/
|
|
262
|
+
countByCategory(category) {
|
|
263
|
+
var _a;
|
|
264
|
+
return ((_a = this.categories.get(category)) == null ? void 0 : _a.size) || 0;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Subscribe to registry events
|
|
268
|
+
*/
|
|
269
|
+
on(event, handler) {
|
|
270
|
+
this.events.on(event, handler);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Unsubscribe from registry events
|
|
274
|
+
*/
|
|
275
|
+
off(event, handler) {
|
|
276
|
+
this.events.off(event, handler);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Clear all components (for testing)
|
|
280
|
+
*/
|
|
281
|
+
clear() {
|
|
282
|
+
this.components.clear();
|
|
283
|
+
this.categories.clear();
|
|
284
|
+
this.tags.clear();
|
|
285
|
+
this.events.emit("registry:cleared");
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
var componentRegistry = new ComponentRegistry();
|
|
289
|
+
|
|
290
|
+
exports.ComponentRegistry = ComponentRegistry;
|
|
291
|
+
exports.blockRegistry = blockRegistry;
|
|
292
|
+
exports.componentRegistry = componentRegistry;
|
|
293
|
+
exports.createBlockRegistry = createBlockRegistry;
|
|
294
|
+
//# sourceMappingURL=chunk-PPULMWJ6.js.map
|
|
295
|
+
//# sourceMappingURL=chunk-PPULMWJ6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry/block-registry.ts","../src/registry/component-registry.ts"],"names":["EventEmitter"],"mappings":"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","file":"chunk-PPULMWJ6.js","sourcesContent":["/**\n * Block Registry Implementation\n * Registry for repeatable block components\n */\n\nimport type {\n BlockRegistry,\n RegistryConfig,\n RegistryEvent,\n RegistryEventType,\n RegistryEventHandler,\n BlockRegisteredPayload,\n BlockUnregisteredPayload,\n} from \"../types/registry\";\nimport type {\n BlockDefinition,\n BlockRegistration,\n BlockComponentProps,\n} from \"../types/block\";\nimport React from \"react\";\n\n/**\n * Create a new block registry instance\n */\nexport function createBlockRegistry(\n config: RegistryConfig = {}\n): BlockRegistry {\n const { debug = false, allowOverride = false, maxBlocks = 200 } = config;\n\n // Main registry\n const blocks = new Map<string, BlockRegistration>();\n const categories = new Map<string, Set<string>>();\n const tags = new Map<string, Set<string>>();\n\n // Event listeners\n const eventListeners = new Map<\n RegistryEventType,\n Set<RegistryEventHandler>\n >();\n\n /**\n * Emit an event\n */\n function emit<TPayload>(type: RegistryEventType, payload: TPayload): void {\n const event: RegistryEvent<TPayload> = {\n type,\n payload,\n timestamp: new Date(),\n };\n\n const listeners = eventListeners.get(type);\n if (listeners) {\n // Cast handler to accept any payload type\n listeners.forEach((handler) =>\n (handler as (event: RegistryEvent<TPayload>) => void)(event)\n );\n }\n\n if (debug) {\n }\n }\n\n /**\n * Register a block type\n */\n function register<T>(\n blockType: string,\n definition: BlockDefinition,\n component: React.ComponentType<T>,\n options?: {\n category?: string;\n tags?: string[];\n }\n ): void {\n // Validate\n if (!blockType) {\n throw new Error(\"Block type is required\");\n }\n\n if (blocks.has(blockType) && !allowOverride) {\n throw new Error(`Block \"${blockType}\" is already registered`);\n }\n\n if (blocks.size >= maxBlocks) {\n throw new Error(`Maximum number of blocks (${maxBlocks}) reached`);\n }\n\n // Create registration\n const registration: BlockRegistration = {\n definition,\n component: component as React.ComponentType<BlockComponentProps>,\n registeredAt: new Date(),\n tags: options?.tags || [],\n };\n\n // Store registration\n blocks.set(blockType, registration);\n\n // Index by category\n const category = options?.category || definition.category || \"general\";\n if (!categories.has(category)) {\n categories.set(category, new Set());\n }\n categories.get(category)!.add(blockType);\n\n // Index by tags\n if (options?.tags) {\n options.tags.forEach((tag) => {\n if (!tags.has(tag)) {\n tags.set(tag, new Set());\n }\n tags.get(tag)!.add(blockType);\n });\n }\n\n // Emit event\n emit<BlockRegisteredPayload>(\"block:registered\", {\n type: blockType,\n definition,\n });\n\n if (debug) {\n }\n }\n\n /**\n * Get a block registration\n */\n function get(blockType: string): BlockRegistration | undefined {\n return blocks.get(blockType);\n }\n\n /**\n * Check if a block is registered\n */\n function has(blockType: string): boolean {\n return blocks.has(blockType);\n }\n\n /**\n * Unregister a block\n */\n function unregister(blockType: string): boolean {\n const registration = blocks.get(blockType);\n\n if (!registration) {\n return false;\n }\n\n // Remove from maps\n blocks.delete(blockType);\n\n // Remove from category index\n categories.forEach((types) => {\n types.delete(blockType);\n });\n\n // Remove from tags index\n tags.forEach((types) => {\n types.delete(blockType);\n });\n\n // Emit event\n emit<BlockUnregisteredPayload>(\"block:unregistered\", {\n type: blockType,\n });\n\n if (debug) {\n }\n\n return true;\n }\n\n /**\n * Get all registrations\n */\n function getAll(): Map<string, BlockRegistration> {\n return new Map(blocks);\n }\n\n /**\n * Add event listener\n */\n function on<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n if (!eventListeners.has(eventType)) {\n eventListeners.set(eventType, new Set());\n }\n eventListeners.get(eventType)!.add(handler as RegistryEventHandler);\n }\n\n /**\n * Remove event listener\n */\n function off<TPayload>(\n eventType: RegistryEventType,\n handler: RegistryEventHandler<TPayload>\n ): void {\n eventListeners.get(eventType)?.delete(handler as RegistryEventHandler);\n }\n\n /**\n * Clear all registrations\n */\n function clear(): void {\n blocks.clear();\n categories.clear();\n tags.clear();\n\n if (debug) {\n }\n }\n\n return {\n register,\n get,\n has,\n unregister,\n getAll,\n on,\n off,\n clear,\n };\n}\n\n/**\n * Global block registry instance\n */\nexport const blockRegistry = createBlockRegistry({\n debug: process.env.NODE_ENV === \"development\",\n // Allow override in all environments to support theme block overrides\n allowOverride: true,\n});\n","/**\n * Component Registry\n * Central registry for all component types\n */\n\nimport type {\n ComponentDefinition,\n ComponentRegistration,\n ComponentCategory,\n ComponentProps,\n} from \"../types/component\";\nimport { EventEmitter } from \"events\";\n\n/**\n * Component Registry Class\n */\nclass ComponentRegistry {\n // Core storage\n private components = new Map<string, ComponentRegistration>();\n private categories = new Map<ComponentCategory, Set<string>>();\n private tags = new Map<string, Set<string>>();\n\n // Event emitter for registry changes\n private events = new EventEmitter();\n\n /**\n * Register a component type\n */\n register(\n type: string,\n definition: ComponentDefinition,\n component: React.ComponentType<ComponentProps>,\n options?: {\n category?: ComponentCategory;\n tags?: string[];\n }\n ): void {\n const registration: ComponentRegistration = {\n definition,\n component,\n registeredAt: new Date(),\n category: options?.category || definition.category,\n tags: options?.tags || definition.tags || [],\n };\n\n this.components.set(type, registration);\n\n // Index by category\n const categorySet = this.categories.get(registration.category) || new Set();\n categorySet.add(type);\n this.categories.set(registration.category, categorySet);\n\n // Index by tags\n registration.tags.forEach((tag) => {\n const tagSet = this.tags.get(tag) || new Set();\n tagSet.add(type);\n this.tags.set(tag, tagSet);\n });\n\n // Emit event\n this.events.emit(\"component:registered\", { type, registration });\n }\n\n /**\n * Unregister a component type\n */\n unregister(type: string): boolean {\n const registration = this.components.get(type);\n if (!registration) return false;\n\n // Remove from components\n this.components.delete(type);\n\n // Remove from category index\n const categorySet = this.categories.get(registration.category);\n if (categorySet) {\n categorySet.delete(type);\n if (categorySet.size === 0) {\n this.categories.delete(registration.category);\n }\n }\n\n // Remove from tag indexes\n registration.tags.forEach((tag) => {\n const tagSet = this.tags.get(tag);\n if (tagSet) {\n tagSet.delete(type);\n if (tagSet.size === 0) {\n this.tags.delete(tag);\n }\n }\n });\n\n // Emit event\n this.events.emit(\"component:unregistered\", { type });\n\n return true;\n }\n\n /**\n * Get component by type\n */\n get(type: string): ComponentRegistration | undefined {\n return this.components.get(type);\n }\n\n /**\n * Get component definition by type\n */\n getDefinition(type: string): ComponentDefinition | undefined {\n return this.components.get(type)?.definition;\n }\n\n /**\n * Get component React component by type\n */\n getComponent(type: string): React.ComponentType<ComponentProps> | undefined {\n return this.components.get(type)?.component;\n }\n\n /**\n * Get all components\n */\n getAll(): Map<string, ComponentRegistration> {\n return new Map(this.components);\n }\n\n /**\n * Get all component types\n */\n getAllTypes(): string[] {\n return Array.from(this.components.keys());\n }\n\n /**\n * Get components by category\n */\n getByCategory(category: ComponentCategory): ComponentRegistration[] {\n const types = this.categories.get(category);\n if (!types) return [];\n\n return Array.from(types)\n .map((type) => this.components.get(type))\n .filter((reg): reg is ComponentRegistration => reg !== undefined);\n }\n\n /**\n * Get components by tag\n */\n getByTag(tag: string): ComponentRegistration[] {\n const types = this.tags.get(tag);\n if (!types) return [];\n\n return Array.from(types)\n .map((type) => this.components.get(type))\n .filter((reg): reg is ComponentRegistration => reg !== undefined);\n }\n\n /**\n * Search components\n */\n search(query: string): ComponentRegistration[] {\n const lowerQuery = query.toLowerCase();\n return Array.from(this.components.values()).filter(\n (reg) =>\n reg.definition.name.toLowerCase().includes(lowerQuery) ||\n reg.definition.description?.toLowerCase().includes(lowerQuery) ||\n reg.tags.some((tag) => tag.toLowerCase().includes(lowerQuery))\n );\n }\n\n /**\n * Get all categories\n */\n getCategories(): ComponentCategory[] {\n return Array.from(this.categories.keys());\n }\n\n /**\n * Get all tags\n */\n getTags(): string[] {\n return Array.from(this.tags.keys());\n }\n\n /**\n * Check if component type exists\n */\n has(type: string): boolean {\n return this.components.has(type);\n }\n\n /**\n * Get component count\n */\n count(): number {\n return this.components.size;\n }\n\n /**\n * Get component count by category\n */\n countByCategory(category: ComponentCategory): number {\n return this.categories.get(category)?.size || 0;\n }\n\n /**\n * Subscribe to registry events\n */\n on(event: string, handler: (...args: unknown[]) => void): void {\n this.events.on(event, handler);\n }\n\n /**\n * Unsubscribe from registry events\n */\n off(event: string, handler: (...args: unknown[]) => void): void {\n this.events.off(event, handler);\n }\n\n /**\n * Clear all components (for testing)\n */\n clear(): void {\n this.components.clear();\n this.categories.clear();\n this.tags.clear();\n this.events.emit(\"registry:cleared\");\n }\n}\n\n// Export singleton instance\nexport const componentRegistry = new ComponentRegistry();\n\n// Export class for testing\nexport { ComponentRegistry };\n"]}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkPPULMWJ6_js = require('./chunk-PPULMWJ6.js');
|
|
5
|
+
var chunk2NMEKWO5_js = require('./chunk-2NMEKWO5.js');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
12
|
+
|
|
13
|
+
function ComponentRenderer({
|
|
14
|
+
instance,
|
|
15
|
+
sectionId,
|
|
16
|
+
isEditing = false,
|
|
17
|
+
className,
|
|
18
|
+
fallback
|
|
19
|
+
}) {
|
|
20
|
+
const registration = chunkPPULMWJ6_js.componentRegistry.get(instance.type);
|
|
21
|
+
if (!registration) {
|
|
22
|
+
console.warn(`Component type "${instance.type}" not found in registry`);
|
|
23
|
+
if (fallback) {
|
|
24
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: fallback });
|
|
25
|
+
}
|
|
26
|
+
if (isEditing) {
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
className: "border-2 border-dashed border-red-500 bg-red-50 p-4 rounded",
|
|
31
|
+
"data-component-id": instance.id,
|
|
32
|
+
"data-component-type": instance.type,
|
|
33
|
+
"data-section-id": sectionId,
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-red-600 font-medium", children: [
|
|
36
|
+
'Component "',
|
|
37
|
+
instance.type,
|
|
38
|
+
'" not found'
|
|
39
|
+
] }),
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-red-500 mt-1", children: [
|
|
41
|
+
"ID: ",
|
|
42
|
+
instance.id
|
|
43
|
+
] })
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const { component: Component, definition } = registration;
|
|
51
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
"div",
|
|
53
|
+
{
|
|
54
|
+
className,
|
|
55
|
+
"data-inspector-target": "component",
|
|
56
|
+
"data-component-id": instance.id,
|
|
57
|
+
"data-component-type": instance.type,
|
|
58
|
+
"data-section-id": sectionId,
|
|
59
|
+
"data-order": instance.order,
|
|
60
|
+
style: {
|
|
61
|
+
position: "relative",
|
|
62
|
+
pointerEvents: "auto"
|
|
63
|
+
},
|
|
64
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
65
|
+
Component,
|
|
66
|
+
{
|
|
67
|
+
component: instance,
|
|
68
|
+
definition,
|
|
69
|
+
sectionId,
|
|
70
|
+
isEditing,
|
|
71
|
+
className
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
function ComponentListRenderer({
|
|
78
|
+
instances,
|
|
79
|
+
sectionId,
|
|
80
|
+
isEditing = false,
|
|
81
|
+
containerClassName,
|
|
82
|
+
itemClassName
|
|
83
|
+
}) {
|
|
84
|
+
const sortedInstances = [...instances].sort((a, b) => a.order - b.order);
|
|
85
|
+
const visibleInstances = sortedInstances.filter(
|
|
86
|
+
(instance) => instance.enabled !== false
|
|
87
|
+
);
|
|
88
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerClassName, "data-component-list": "true", children: visibleInstances.map((instance) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
89
|
+
ComponentRenderer,
|
|
90
|
+
{
|
|
91
|
+
instance,
|
|
92
|
+
sectionId,
|
|
93
|
+
isEditing,
|
|
94
|
+
className: itemClassName
|
|
95
|
+
},
|
|
96
|
+
instance.id
|
|
97
|
+
)) });
|
|
98
|
+
}
|
|
99
|
+
function useComponentRegistration(componentType) {
|
|
100
|
+
return React__default.default.useMemo(
|
|
101
|
+
() => chunkPPULMWJ6_js.componentRegistry.get(componentType),
|
|
102
|
+
[componentType]
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
function useComponentInstance(instance) {
|
|
106
|
+
const registration = useComponentRegistration((instance == null ? void 0 : instance.type) || "");
|
|
107
|
+
return React__default.default.useMemo(() => {
|
|
108
|
+
if (!instance || !registration) return null;
|
|
109
|
+
const { component: Component, definition } = registration;
|
|
110
|
+
return { Component, definition, instance };
|
|
111
|
+
}, [instance, registration]);
|
|
112
|
+
}
|
|
113
|
+
function BlockRenderer({
|
|
114
|
+
block,
|
|
115
|
+
sectionId,
|
|
116
|
+
isEditing = false,
|
|
117
|
+
data,
|
|
118
|
+
className,
|
|
119
|
+
fallback
|
|
120
|
+
}) {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
if (block.enabled === false) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const registration = chunkPPULMWJ6_js.blockRegistry.get(block.type);
|
|
126
|
+
if (typeof window !== "undefined" && !registration) {
|
|
127
|
+
const allBlocks = Array.from(chunkPPULMWJ6_js.blockRegistry.getAll().keys());
|
|
128
|
+
console.warn(
|
|
129
|
+
`[BlockRenderer] \u26A0\uFE0F Block "${block.type}" not found in registry!`,
|
|
130
|
+
{
|
|
131
|
+
blockId: block.id,
|
|
132
|
+
blockType: block.type,
|
|
133
|
+
sectionId,
|
|
134
|
+
isEditing,
|
|
135
|
+
blockEnabled: block.enabled === void 0 || block.enabled === true,
|
|
136
|
+
hasNestedBlocks: ((_a = block.blocks) == null ? void 0 : _a.length) || 0,
|
|
137
|
+
hasComponents: ((_b = block.components) == null ? void 0 : _b.length) || 0,
|
|
138
|
+
availableBlocks: allBlocks,
|
|
139
|
+
registrySize: allBlocks.length,
|
|
140
|
+
suggestion: allBlocks.find(
|
|
141
|
+
(type) => type.includes(block.type.split("-")[0])
|
|
142
|
+
) ? `Did you mean "${allBlocks.find((type) => type.includes(block.type.split("-")[0]))}"?` : "No similar blocks found"
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
if (registration) {
|
|
147
|
+
const Component = registration.component;
|
|
148
|
+
if (sectionId) {
|
|
149
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
150
|
+
"div",
|
|
151
|
+
{
|
|
152
|
+
"data-section-id": sectionId,
|
|
153
|
+
"data-block-id": block.id,
|
|
154
|
+
"data-block-type": block.type,
|
|
155
|
+
style: {
|
|
156
|
+
position: "relative",
|
|
157
|
+
display: "block",
|
|
158
|
+
width: "100%",
|
|
159
|
+
minHeight: "1px",
|
|
160
|
+
backgroundColor: "transparent",
|
|
161
|
+
pointerEvents: "auto"
|
|
162
|
+
},
|
|
163
|
+
className: "block-wrapper",
|
|
164
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
165
|
+
Component,
|
|
166
|
+
{
|
|
167
|
+
block,
|
|
168
|
+
definition: registration.definition,
|
|
169
|
+
isEditing,
|
|
170
|
+
data,
|
|
171
|
+
className,
|
|
172
|
+
sectionId
|
|
173
|
+
}
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
179
|
+
Component,
|
|
180
|
+
{
|
|
181
|
+
block,
|
|
182
|
+
definition: registration.definition,
|
|
183
|
+
isEditing,
|
|
184
|
+
data,
|
|
185
|
+
className,
|
|
186
|
+
sectionId
|
|
187
|
+
}
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
191
|
+
"div",
|
|
192
|
+
{
|
|
193
|
+
"data-section-id": sectionId,
|
|
194
|
+
"data-block-id": block.id,
|
|
195
|
+
"data-block-type": block.type,
|
|
196
|
+
className,
|
|
197
|
+
style: block.style,
|
|
198
|
+
children: [
|
|
199
|
+
block.components && block.components.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
+
ComponentListRenderer,
|
|
201
|
+
{
|
|
202
|
+
instances: block.components,
|
|
203
|
+
sectionId,
|
|
204
|
+
isEditing
|
|
205
|
+
}
|
|
206
|
+
),
|
|
207
|
+
block.blocks && block.blocks.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
208
|
+
BlockListRenderer,
|
|
209
|
+
{
|
|
210
|
+
blocks: block.blocks,
|
|
211
|
+
sectionId,
|
|
212
|
+
isEditing,
|
|
213
|
+
data
|
|
214
|
+
}
|
|
215
|
+
),
|
|
216
|
+
(!block.components || block.components.length === 0) && (!block.blocks || block.blocks.length === 0) && fallback && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: fallback }),
|
|
217
|
+
(!block.components || block.components.length === 0) && (!block.blocks || block.blocks.length === 0) && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-2 border-dashed border-yellow-500 bg-yellow-50 p-4 rounded text-sm", children: [
|
|
218
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "font-semibold text-yellow-800", children: [
|
|
219
|
+
"Block: ",
|
|
220
|
+
block.type
|
|
221
|
+
] }),
|
|
222
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-yellow-600 text-xs", children: "No registered component found. Add components or nested blocks to this block." })
|
|
223
|
+
] }) : (
|
|
224
|
+
// View mode: Show subtle indicator in dev, silent in production
|
|
225
|
+
process.env.NODE_ENV === "development" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-[20px] border border-dashed border-gray-300 bg-gray-50 p-2 text-xs text-gray-500", children: [
|
|
226
|
+
'\u26A0\uFE0F Block "',
|
|
227
|
+
block.type,
|
|
228
|
+
'" not registered (check console)'
|
|
229
|
+
] }) : null
|
|
230
|
+
) })
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
}
|
|
235
|
+
function BlockListRenderer({
|
|
236
|
+
blocks,
|
|
237
|
+
sectionId,
|
|
238
|
+
isEditing = false,
|
|
239
|
+
data,
|
|
240
|
+
containerClassName,
|
|
241
|
+
blockClassName
|
|
242
|
+
}) {
|
|
243
|
+
if (!blocks || blocks.length === 0) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
const sortedBlocks = blocks.filter((block) => block.enabled !== false).sort((a, b) => (a.order || 0) - (b.order || 0));
|
|
247
|
+
if (sortedBlocks.length === 0) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerClassName, children: sortedBlocks.map((block) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
251
|
+
BlockRenderer,
|
|
252
|
+
{
|
|
253
|
+
block,
|
|
254
|
+
sectionId,
|
|
255
|
+
isEditing,
|
|
256
|
+
data,
|
|
257
|
+
className: blockClassName
|
|
258
|
+
},
|
|
259
|
+
block.id
|
|
260
|
+
)) });
|
|
261
|
+
}
|
|
262
|
+
function renderBlock(block, isEditing = false, className, sectionId) {
|
|
263
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
264
|
+
BlockRenderer,
|
|
265
|
+
{
|
|
266
|
+
block,
|
|
267
|
+
isEditing,
|
|
268
|
+
className,
|
|
269
|
+
sectionId
|
|
270
|
+
}
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
function SectionRenderer({
|
|
274
|
+
section,
|
|
275
|
+
Component,
|
|
276
|
+
schema,
|
|
277
|
+
template,
|
|
278
|
+
isEditing = false,
|
|
279
|
+
data,
|
|
280
|
+
fallback,
|
|
281
|
+
className = ""
|
|
282
|
+
}) {
|
|
283
|
+
if (!section.enabled && !isEditing) {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
if (!Component) {
|
|
287
|
+
if (fallback) {
|
|
288
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: fallback });
|
|
289
|
+
}
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
293
|
+
"div",
|
|
294
|
+
{
|
|
295
|
+
id: `section-${section.id}`,
|
|
296
|
+
"data-section-id": section.id,
|
|
297
|
+
"data-section-type": section.type,
|
|
298
|
+
"data-section-template": section.template || "default",
|
|
299
|
+
"data-section-enabled": section.enabled,
|
|
300
|
+
className: `section section-${section.type} ${className}`.trim(),
|
|
301
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
302
|
+
Component,
|
|
303
|
+
{
|
|
304
|
+
section,
|
|
305
|
+
schema,
|
|
306
|
+
template,
|
|
307
|
+
isEditing,
|
|
308
|
+
data
|
|
309
|
+
}
|
|
310
|
+
)
|
|
311
|
+
}
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
function SectionListRenderer({
|
|
315
|
+
sections,
|
|
316
|
+
getComponent,
|
|
317
|
+
isEditing = false,
|
|
318
|
+
data,
|
|
319
|
+
fallback,
|
|
320
|
+
className
|
|
321
|
+
}) {
|
|
322
|
+
const visibleSections = sections.filter((section) => isEditing || section.enabled).sort((a, b) => a.order - b.order);
|
|
323
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: visibleSections.map((section) => {
|
|
324
|
+
const template = section.template || "default";
|
|
325
|
+
const registration = getComponent(section.type, template);
|
|
326
|
+
if (!registration) {
|
|
327
|
+
return fallback ? /* @__PURE__ */ jsxRuntime.jsx(React__default.default.Fragment, { children: fallback(section) }, section.id) : null;
|
|
328
|
+
}
|
|
329
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
330
|
+
SectionRenderer,
|
|
331
|
+
{
|
|
332
|
+
section,
|
|
333
|
+
Component: registration.Component,
|
|
334
|
+
schema: registration.schema,
|
|
335
|
+
template: registration.template,
|
|
336
|
+
isEditing,
|
|
337
|
+
data,
|
|
338
|
+
className
|
|
339
|
+
},
|
|
340
|
+
section.id
|
|
341
|
+
);
|
|
342
|
+
}) });
|
|
343
|
+
}
|
|
344
|
+
function renderSection(props) {
|
|
345
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SectionRenderer, chunk2NMEKWO5_js.__spreadValues({}, props));
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
exports.BlockListRenderer = BlockListRenderer;
|
|
349
|
+
exports.BlockRenderer = BlockRenderer;
|
|
350
|
+
exports.ComponentListRenderer = ComponentListRenderer;
|
|
351
|
+
exports.ComponentRenderer = ComponentRenderer;
|
|
352
|
+
exports.SectionListRenderer = SectionListRenderer;
|
|
353
|
+
exports.SectionRenderer = SectionRenderer;
|
|
354
|
+
exports.renderBlock = renderBlock;
|
|
355
|
+
exports.renderSection = renderSection;
|
|
356
|
+
exports.useComponentInstance = useComponentInstance;
|
|
357
|
+
exports.useComponentRegistration = useComponentRegistration;
|
|
358
|
+
//# sourceMappingURL=chunk-RGIVKACG.js.map
|
|
359
|
+
//# sourceMappingURL=chunk-RGIVKACG.js.map
|