@constela/server 6.0.0 → 7.0.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/index.js +11 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -225,6 +225,9 @@ function evaluate(expr, ctx) {
|
|
|
225
225
|
return val == null ? "" : String(val);
|
|
226
226
|
}).join("");
|
|
227
227
|
}
|
|
228
|
+
case "validity": {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
228
231
|
default: {
|
|
229
232
|
const _exhaustiveCheck = expr;
|
|
230
233
|
throw new Error(`Unknown expression type: ${JSON.stringify(_exhaustiveCheck)}`);
|
|
@@ -371,6 +374,8 @@ async function renderNode(node, ctx) {
|
|
|
371
374
|
return await renderCode(node, ctx);
|
|
372
375
|
case "slot":
|
|
373
376
|
return "";
|
|
377
|
+
case "portal":
|
|
378
|
+
return await renderPortal(node, ctx);
|
|
374
379
|
case "localState":
|
|
375
380
|
return await renderLocalState(node, ctx);
|
|
376
381
|
default: {
|
|
@@ -463,6 +468,12 @@ async function renderCode(node, ctx) {
|
|
|
463
468
|
const copyButton = `<button class="constela-copy-btn absolute right-3 top-3 z-10 flex h-8 w-8 items-center justify-center rounded-md border border-border bg-background/80 opacity-0 transition-opacity hover:bg-muted group-hover:opacity-100" data-copy-target="code" aria-label="Copy code"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg></button>`;
|
|
464
469
|
return `<div class="constela-code" data-code-content="${escapeHtml(content)}"><div class="group relative">${languageBadge}${copyButton}${highlightedCode}</div></div>`;
|
|
465
470
|
}
|
|
471
|
+
async function renderPortal(node, ctx) {
|
|
472
|
+
const childrenHtml = await Promise.all(
|
|
473
|
+
node.children.map((child) => renderNode(child, ctx))
|
|
474
|
+
);
|
|
475
|
+
return `<!--portal:${node.target}-->${childrenHtml.join("")}<!--/portal-->`;
|
|
476
|
+
}
|
|
466
477
|
async function renderLocalState(node, ctx) {
|
|
467
478
|
const localStateValues = {};
|
|
468
479
|
for (const [name, field] of Object.entries(node.state)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@constela/server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Server-side rendering for Constela UI framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"@constela/compiler": "^0.
|
|
18
|
+
"@constela/compiler": "^0.11.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"isomorphic-dompurify": "^2.35.0",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"tsup": "^8.0.0",
|
|
29
29
|
"typescript": "^5.3.0",
|
|
30
30
|
"vitest": "^2.0.0",
|
|
31
|
-
"@constela/compiler": "0.
|
|
31
|
+
"@constela/compiler": "0.11.0"
|
|
32
32
|
},
|
|
33
33
|
"engines": {
|
|
34
34
|
"node": ">=20.0.0"
|