@riverbankcms/sdk 0.4.3 → 0.5.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 +84 -0
- package/dist/cli/index.js +3463 -120
- package/dist/cli/index.js.map +1 -1
- package/dist/client/analytics.js +1 -1
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/analytics.mjs +1 -1
- package/dist/client/analytics.mjs.map +1 -1
- package/dist/client/bookings.js +6 -6
- package/dist/client/bookings.js.map +1 -1
- package/dist/client/bookings.mjs +6 -6
- package/dist/client/bookings.mjs.map +1 -1
- package/dist/client/client.d.mts +2 -2
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +1379 -519
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +1379 -519
- package/dist/client/client.mjs.map +1 -1
- package/dist/client/hooks.d.mts +2 -2
- package/dist/client/hooks.d.ts +2 -2
- package/dist/client/hooks.js +26 -11
- package/dist/client/hooks.js.map +1 -1
- package/dist/client/hooks.mjs +26 -11
- package/dist/client/hooks.mjs.map +1 -1
- package/dist/client/rendering/client.js +20 -14
- package/dist/client/rendering/client.js.map +1 -1
- package/dist/client/rendering/client.mjs +20 -14
- package/dist/client/rendering/client.mjs.map +1 -1
- package/dist/client/usePage-BTPnCuWC.d.mts +6511 -0
- package/dist/client/usePage-BXjk8BhD.d.mts +6704 -0
- package/dist/client/usePage-BafOS9UT.d.mts +6512 -0
- package/dist/client/usePage-BiOReg0_.d.ts +6704 -0
- package/dist/client/usePage-Bnx-kA6x.d.mts +6670 -0
- package/dist/client/usePage-DoPI6b8V.d.ts +6511 -0
- package/dist/client/usePage-QNWArrVO.d.ts +6670 -0
- package/dist/client/usePage-fBgPB6Oq.d.ts +6512 -0
- package/dist/server/{Layout-CXI_VkhN.d.ts → Layout-BClXUTsd.d.mts} +4 -4
- package/dist/server/{Layout-p6f3TLw9.d.mts → Layout-UXGjXv8M.d.ts} +4 -4
- package/dist/server/{chunk-6JBKKV3G.js → chunk-2KCF2DNK.js} +30 -10
- package/dist/server/chunk-2KCF2DNK.js.map +1 -0
- package/dist/server/chunk-5STV4MWD.js +189 -0
- package/dist/server/chunk-5STV4MWD.js.map +1 -0
- package/dist/server/{chunk-VHDDXCK6.js → chunk-7UPVCT3K.js} +1206 -496
- package/dist/server/chunk-7UPVCT3K.js.map +1 -0
- package/dist/server/{chunk-7DS4Q3GA.mjs → chunk-AEFWG657.mjs} +3 -3
- package/dist/server/chunk-AEFWG657.mjs.map +1 -0
- package/dist/server/{chunk-USQF2XTU.mjs → chunk-BYBJA6SP.mjs} +26 -11
- package/dist/server/chunk-BYBJA6SP.mjs.map +1 -0
- package/dist/server/{chunk-ES6QDZUX.mjs → chunk-C6FIJC7T.mjs} +2 -2
- package/dist/server/{chunk-N3PX76AP.mjs → chunk-CMABGYGI.mjs} +269 -135
- package/dist/server/chunk-CMABGYGI.mjs.map +1 -0
- package/dist/server/{chunk-TO7FD6TQ.js → chunk-I2D7KOEA.js} +4 -4
- package/dist/server/{chunk-TO7FD6TQ.js.map → chunk-I2D7KOEA.js.map} +1 -1
- package/dist/server/{chunk-R5B6IOFQ.js → chunk-KA74YRK6.js} +269 -135
- package/dist/server/chunk-KA74YRK6.js.map +1 -0
- package/dist/server/chunk-KFLZGNPO.mjs +189 -0
- package/dist/server/chunk-KFLZGNPO.mjs.map +1 -0
- package/dist/server/chunk-L5EA4FXU.mjs +134 -0
- package/dist/server/chunk-L5EA4FXU.mjs.map +1 -0
- package/dist/server/{chunk-U2NI3TS3.mjs → chunk-LNOUXALA.mjs} +1135 -425
- package/dist/server/chunk-LNOUXALA.mjs.map +1 -0
- package/dist/server/{chunk-24F6FTCI.mjs → chunk-OSF34JTQ.mjs} +4 -4
- package/dist/server/{chunk-G35R7N7B.js → chunk-P3NNN73G.js} +3 -3
- package/dist/server/{chunk-G35R7N7B.js.map → chunk-P3NNN73G.js.map} +1 -1
- package/dist/server/{chunk-I6K5REFT.mjs → chunk-P4K63SBZ.mjs} +24 -4
- package/dist/server/chunk-P4K63SBZ.mjs.map +1 -0
- package/dist/server/{chunk-HOY77YBF.js → chunk-RVDS7VSP.js} +5 -5
- package/dist/server/chunk-RVDS7VSP.js.map +1 -0
- package/dist/server/{chunk-2SSEBAHC.js → chunk-TT5JWA4X.js} +9 -9
- package/dist/server/{chunk-2SSEBAHC.js.map → chunk-TT5JWA4X.js.map} +1 -1
- package/dist/server/chunk-VSFQRHYZ.js +134 -0
- package/dist/server/chunk-VSFQRHYZ.js.map +1 -0
- package/dist/server/{chunk-EGTDJ4PL.js → chunk-YYO3RIFO.js} +26 -11
- package/dist/server/chunk-YYO3RIFO.js.map +1 -0
- package/dist/server/{chunk-OP2GHK27.mjs → chunk-Z5ZA6Q4D.mjs} +2 -2
- package/dist/server/{components-Dhiemsjd.d.ts → components-BmaJxgCV.d.mts} +20 -75
- package/dist/server/{components-C75e4poV.d.mts → components-DppHY5oD.d.ts} +20 -75
- package/dist/server/components.d.mts +11 -8
- package/dist/server/components.d.ts +11 -8
- package/dist/server/components.js +5 -4
- package/dist/server/components.js.map +1 -1
- package/dist/server/components.mjs +4 -3
- package/dist/server/config-validation.d.mts +3 -3
- package/dist/server/config-validation.d.ts +3 -3
- package/dist/server/config-validation.js +9 -5
- package/dist/server/config-validation.js.map +1 -1
- package/dist/server/config-validation.mjs +8 -4
- package/dist/server/config.d.mts +243 -5
- package/dist/server/config.d.ts +243 -5
- package/dist/server/config.js +72 -5
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +72 -5
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/core-DsNWrl3o.d.mts +44 -0
- package/dist/server/core-DsNWrl3o.d.ts +44 -0
- package/dist/server/data.d.mts +4 -3
- package/dist/server/data.d.ts +4 -3
- package/dist/server/data.js +3 -3
- package/dist/server/data.mjs +2 -2
- package/dist/server/{index-CAwBj3-A.d.ts → index-Bucs6UqG.d.mts} +2 -1
- package/dist/server/{index-C6o9LPvq.d.mts → index-Cp7tJuRt.d.ts} +2 -1
- package/dist/server/index.d.mts +84 -6
- package/dist/server/index.d.ts +84 -6
- package/dist/server/index.js +91 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +90 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/link-DjxLyC82.d.mts +23 -0
- package/dist/server/link-DjxLyC82.d.ts +23 -0
- package/dist/server/{loadContent-CdXfuCuE.d.mts → loadContent-BS-3wesN.d.mts} +4 -4
- package/dist/server/{loadContent-CsvQRoxb.d.ts → loadContent-Buvmudee.d.ts} +4 -4
- package/dist/server/{loadPage-p3AWwwrd.d.mts → loadPage-B8mQUUSo.d.mts} +5 -46
- package/dist/server/loadPage-DNQTTRHL.mjs +11 -0
- package/dist/server/{loadPage-BA0HiT-6.d.ts → loadPage-DP3nrHBi.d.ts} +5 -46
- package/dist/server/loadPage-IDGVDFBB.js +11 -0
- package/dist/server/{loadPage-DLC7DJZP.js.map → loadPage-IDGVDFBB.js.map} +1 -1
- package/dist/server/metadata.d.mts +6 -4
- package/dist/server/metadata.d.ts +6 -4
- package/dist/server/navigation.d.mts +199 -29
- package/dist/server/navigation.d.ts +199 -29
- package/dist/server/navigation.js +27 -43
- package/dist/server/navigation.js.map +1 -1
- package/dist/server/navigation.mjs +20 -36
- package/dist/server/navigation.mjs.map +1 -1
- package/dist/server/rendering/server.d.mts +8 -6
- package/dist/server/rendering/server.d.ts +8 -6
- package/dist/server/rendering/server.js +7 -6
- package/dist/server/rendering/server.js.map +1 -1
- package/dist/server/rendering/server.mjs +6 -5
- package/dist/server/rendering.d.mts +14 -10
- package/dist/server/rendering.d.ts +14 -10
- package/dist/server/rendering.js +9 -8
- package/dist/server/rendering.js.map +1 -1
- package/dist/server/rendering.mjs +8 -7
- package/dist/server/richTextSchema-DURiozvD.d.mts +62 -0
- package/dist/server/richTextSchema-DURiozvD.d.ts +62 -0
- package/dist/server/routing.d.mts +178 -11
- package/dist/server/routing.d.ts +178 -11
- package/dist/server/routing.js +95 -2
- package/dist/server/routing.js.map +1 -1
- package/dist/server/routing.mjs +94 -1
- package/dist/server/routing.mjs.map +1 -1
- package/dist/server/{schema-Bpy9N5ZI.d.mts → schema-Z6-afHJG.d.mts} +1 -1
- package/dist/server/{schema-Bpy9N5ZI.d.ts → schema-Z6-afHJG.d.ts} +1 -1
- package/dist/server/server.d.mts +9 -7
- package/dist/server/server.d.ts +9 -7
- package/dist/server/server.js +6 -6
- package/dist/server/server.mjs +5 -5
- package/dist/server/theme-bridge.js +8 -8
- package/dist/server/theme-bridge.mjs +2 -2
- package/dist/server/{types-Dj8B3QRb.d.ts → types-1cLz0vnq.d.mts} +55 -2
- package/dist/server/{types-txWsSxN7.d.mts → types-BjgZt8xJ.d.mts} +63 -2
- package/dist/server/{types-CdhKJrB0.d.mts → types-BvcJU7zk.d.ts} +55 -2
- package/dist/server/{types-BWQ-TohG.d.ts → types-CVykEqXN.d.ts} +289 -83
- package/dist/server/{types-CL916r6x.d.ts → types-DLBhEPSt.d.ts} +63 -2
- package/dist/server/{types-BLf-hE50.d.mts → types-Dsu9wsUh.d.mts} +289 -83
- package/dist/server/{validation-DzvDwwRo.d.mts → validation-BGuRo8P1.d.mts} +18 -5
- package/dist/server/{validation-CoU8uAiu.d.ts → validation-DU2YE7u5.d.ts} +18 -5
- package/package.json +5 -1
- package/dist/server/chunk-6JBKKV3G.js.map +0 -1
- package/dist/server/chunk-7DS4Q3GA.mjs.map +0 -1
- package/dist/server/chunk-EGTDJ4PL.js.map +0 -1
- package/dist/server/chunk-HOY77YBF.js.map +0 -1
- package/dist/server/chunk-I6K5REFT.mjs.map +0 -1
- package/dist/server/chunk-LCYGQDAB.mjs +0 -835
- package/dist/server/chunk-LCYGQDAB.mjs.map +0 -1
- package/dist/server/chunk-N3PX76AP.mjs.map +0 -1
- package/dist/server/chunk-R5B6IOFQ.js.map +0 -1
- package/dist/server/chunk-TNYU5EIO.js +0 -835
- package/dist/server/chunk-TNYU5EIO.js.map +0 -1
- package/dist/server/chunk-U2NI3TS3.mjs.map +0 -1
- package/dist/server/chunk-USQF2XTU.mjs.map +0 -1
- package/dist/server/chunk-VHDDXCK6.js.map +0 -1
- package/dist/server/loadPage-DLC7DJZP.js +0 -11
- package/dist/server/loadPage-GEGN4UAL.mjs +0 -11
- /package/dist/server/{chunk-ES6QDZUX.mjs.map → chunk-C6FIJC7T.mjs.map} +0 -0
- /package/dist/server/{chunk-24F6FTCI.mjs.map → chunk-OSF34JTQ.mjs.map} +0 -0
- /package/dist/server/{chunk-OP2GHK27.mjs.map → chunk-Z5ZA6Q4D.mjs.map} +0 -0
- /package/dist/server/{loadPage-GEGN4UAL.mjs.map → loadPage-DNQTTRHL.mjs.map} +0 -0
|
@@ -1,835 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkVHDDXCK6js = require('./chunk-VHDDXCK6.js');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var _chunkEGTDJ4PLjs = require('./chunk-EGTDJ4PL.js');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var _chunkDGUM43GVjs = require('./chunk-DGUM43GV.js');
|
|
14
|
-
|
|
15
|
-
// src/rendering/components/Page.tsx
|
|
16
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
17
|
-
function Page({
|
|
18
|
-
page,
|
|
19
|
-
theme,
|
|
20
|
-
themeTokens: providedTokens,
|
|
21
|
-
siteId,
|
|
22
|
-
resolvedData,
|
|
23
|
-
routeMap,
|
|
24
|
-
wrapBlock,
|
|
25
|
-
registry,
|
|
26
|
-
usePlaceholders = false,
|
|
27
|
-
blockOverrides,
|
|
28
|
-
sdkConfig,
|
|
29
|
-
supabaseUrl,
|
|
30
|
-
dataContext
|
|
31
|
-
}) {
|
|
32
|
-
const baseTokens = _nullishCoalesce(providedTokens, () => ( _chunkVHDDXCK6js.buildThemeRuntime.call(void 0, theme).tokens));
|
|
33
|
-
const themeTokens = _optionalChain([sdkConfig, 'optionalAccess', _ => _.theme, 'optionalAccess', _2 => _2.palette]) ? { ...baseTokens, palette: { ...baseTokens.palette, ...sdkConfig.theme.palette } } : baseTokens;
|
|
34
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
35
|
-
_chunkVHDDXCK6js.PageRenderer,
|
|
36
|
-
{
|
|
37
|
-
theme,
|
|
38
|
-
page,
|
|
39
|
-
themeTokens,
|
|
40
|
-
usePlaceholders,
|
|
41
|
-
dataContext: {
|
|
42
|
-
siteId,
|
|
43
|
-
resolvedData,
|
|
44
|
-
routes: routeMap,
|
|
45
|
-
occurrenceContext: _nullishCoalesce(_optionalChain([dataContext, 'optionalAccess', _3 => _3.occurrenceContext]), () => ( null)),
|
|
46
|
-
contentEntry: _nullishCoalesce(_optionalChain([dataContext, 'optionalAccess', _4 => _4.contentEntry]), () => ( null)),
|
|
47
|
-
supabaseUrl
|
|
48
|
-
},
|
|
49
|
-
routeMap,
|
|
50
|
-
wrapBlock,
|
|
51
|
-
registry,
|
|
52
|
-
blockOverrides,
|
|
53
|
-
sdkConfig
|
|
54
|
-
}
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// ../block-form/dist/server/index.mjs
|
|
59
|
-
var _zod = require('zod');
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
var __require2 = /* @__PURE__ */ ((x) => typeof _chunkDGUM43GVjs.__require !== "undefined" ? _chunkDGUM43GVjs.__require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
78
|
-
get: (a, b) => (typeof _chunkDGUM43GVjs.__require !== "undefined" ? _chunkDGUM43GVjs.__require : a)[b]
|
|
79
|
-
}) : x)(function(x) {
|
|
80
|
-
if (typeof _chunkDGUM43GVjs.__require !== "undefined") return _chunkDGUM43GVjs.__require.apply(this, arguments);
|
|
81
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
82
|
-
});
|
|
83
|
-
function buildTextFieldSchema(field) {
|
|
84
|
-
const ui = _nullishCoalesce(_optionalChain([field, 'optionalAccess', _5 => _5.ui]), () => ( {}));
|
|
85
|
-
const inputType = _optionalChain([ui, 'optionalAccess', _6 => _6.inputType]);
|
|
86
|
-
if (inputType === "email") {
|
|
87
|
-
let s2 = _zod.z.string().email("Enter a valid email");
|
|
88
|
-
if (typeof field.maxLength === "number") {
|
|
89
|
-
s2 = s2.max(field.maxLength);
|
|
90
|
-
}
|
|
91
|
-
if (field.required) {
|
|
92
|
-
return s2.min(1, "This field is required");
|
|
93
|
-
}
|
|
94
|
-
return s2.optional().nullable().or(_zod.z.literal(""));
|
|
95
|
-
}
|
|
96
|
-
if (inputType === "tel") {
|
|
97
|
-
let s2 = _zod.z.string().regex(/^[+()0-9\s\-]{3,}$/, "Enter a valid phone number");
|
|
98
|
-
if (typeof field.maxLength === "number") {
|
|
99
|
-
s2 = s2.max(field.maxLength);
|
|
100
|
-
}
|
|
101
|
-
if (field.required) {
|
|
102
|
-
return s2.min(1, "This field is required");
|
|
103
|
-
}
|
|
104
|
-
return s2.optional().nullable().or(_zod.z.literal(""));
|
|
105
|
-
}
|
|
106
|
-
let s = _zod.z.string();
|
|
107
|
-
if (typeof field.maxLength === "number") {
|
|
108
|
-
s = s.max(field.maxLength);
|
|
109
|
-
}
|
|
110
|
-
if (_optionalChain([ui, 'optionalAccess', _7 => _7.pattern])) {
|
|
111
|
-
try {
|
|
112
|
-
const re = new RegExp(ui.pattern);
|
|
113
|
-
s = s.regex(re);
|
|
114
|
-
} catch (e) {
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (field.required) {
|
|
118
|
-
return s.min(1, "This field is required");
|
|
119
|
-
}
|
|
120
|
-
return s.optional().nullable().or(_zod.z.literal(""));
|
|
121
|
-
}
|
|
122
|
-
function getTextFieldDefault(field) {
|
|
123
|
-
if (field.defaultValue !== void 0 && field.defaultValue !== null) {
|
|
124
|
-
return String(field.defaultValue);
|
|
125
|
-
}
|
|
126
|
-
if (field.required) {
|
|
127
|
-
return field.label;
|
|
128
|
-
}
|
|
129
|
-
return "";
|
|
130
|
-
}
|
|
131
|
-
function buildNumberFieldSchema(field) {
|
|
132
|
-
const ui = _nullishCoalesce(_optionalChain([field, 'optionalAccess', _8 => _8.ui]), () => ( {}));
|
|
133
|
-
let s = _zod.z.coerce.number();
|
|
134
|
-
if (typeof _optionalChain([ui, 'optionalAccess', _9 => _9.min]) === "number") {
|
|
135
|
-
s = s.min(ui.min);
|
|
136
|
-
}
|
|
137
|
-
if (typeof _optionalChain([ui, 'optionalAccess', _10 => _10.max]) === "number") {
|
|
138
|
-
s = s.max(ui.max);
|
|
139
|
-
}
|
|
140
|
-
if (!field.required) {
|
|
141
|
-
s = s.optional().nullable();
|
|
142
|
-
}
|
|
143
|
-
return s;
|
|
144
|
-
}
|
|
145
|
-
function getNumberFieldDefault(field) {
|
|
146
|
-
if (field.defaultValue !== void 0) {
|
|
147
|
-
return typeof field.defaultValue === "number" ? field.defaultValue : null;
|
|
148
|
-
}
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
function buildSelectFieldSchema(field) {
|
|
152
|
-
const validValues = _nullishCoalesce(_optionalChain([field, 'access', _11 => _11.options, 'optionalAccess', _12 => _12.map, 'call', _13 => _13((opt) => opt.value)]), () => ( []));
|
|
153
|
-
if (validValues.length === 0) {
|
|
154
|
-
return field.required ? _zod.z.string().min(1) : _zod.z.string().optional();
|
|
155
|
-
}
|
|
156
|
-
let schema = _zod.z.enum(validValues);
|
|
157
|
-
if (!field.required) {
|
|
158
|
-
schema = schema.optional();
|
|
159
|
-
}
|
|
160
|
-
return schema;
|
|
161
|
-
}
|
|
162
|
-
function getSelectFieldDefault(field) {
|
|
163
|
-
if (field.defaultValue !== void 0 && field.defaultValue !== null) {
|
|
164
|
-
return String(field.defaultValue);
|
|
165
|
-
}
|
|
166
|
-
return _nullishCoalesce(_optionalChain([field, 'access', _14 => _14.options, 'optionalAccess', _15 => _15[0], 'optionalAccess', _16 => _16.value]), () => ( ""));
|
|
167
|
-
}
|
|
168
|
-
function buildBooleanFieldSchema(field) {
|
|
169
|
-
return _zod.z.boolean();
|
|
170
|
-
}
|
|
171
|
-
function getBooleanFieldDefault(field) {
|
|
172
|
-
if (field.defaultValue !== void 0) {
|
|
173
|
-
return Boolean(field.defaultValue);
|
|
174
|
-
}
|
|
175
|
-
return false;
|
|
176
|
-
}
|
|
177
|
-
function buildGroupFieldSchema(field, ctx) {
|
|
178
|
-
const shape = {};
|
|
179
|
-
for (const child of field.fields) {
|
|
180
|
-
shape[child.id] = ctx.getFieldSchema(child);
|
|
181
|
-
}
|
|
182
|
-
return _zod.z.object(shape).catchall(_zod.z.unknown()).passthrough();
|
|
183
|
-
}
|
|
184
|
-
function getGroupFieldDefault(field, ctx) {
|
|
185
|
-
const obj = {};
|
|
186
|
-
for (const child of field.fields) {
|
|
187
|
-
obj[child.id] = ctx.resolve(child);
|
|
188
|
-
}
|
|
189
|
-
return obj;
|
|
190
|
-
}
|
|
191
|
-
function buildModalFieldSchema(field, ctx) {
|
|
192
|
-
const shape = {};
|
|
193
|
-
const fields = _nullishCoalesce(_nullishCoalesce(_optionalChain([field, 'access', _17 => _17.schema, 'optionalAccess', _18 => _18.fields]), () => ( field.fields)), () => ( []));
|
|
194
|
-
for (const child of fields) {
|
|
195
|
-
shape[child.id] = ctx.getFieldSchema(child);
|
|
196
|
-
}
|
|
197
|
-
return _zod.z.object(shape).catchall(_zod.z.unknown()).passthrough();
|
|
198
|
-
}
|
|
199
|
-
function getModalFieldDefault(field, ctx) {
|
|
200
|
-
const obj = {};
|
|
201
|
-
const fields = _nullishCoalesce(_nullishCoalesce(_optionalChain([field, 'access', _19 => _19.schema, 'optionalAccess', _20 => _20.fields]), () => ( field.fields)), () => ( []));
|
|
202
|
-
for (const child of fields) {
|
|
203
|
-
obj[child.id] = ctx.resolve(child);
|
|
204
|
-
}
|
|
205
|
-
return obj;
|
|
206
|
-
}
|
|
207
|
-
function buildRepeaterFieldSchema(field, ctx) {
|
|
208
|
-
let itemSchema;
|
|
209
|
-
if (field.polymorphic && field.itemTypes) {
|
|
210
|
-
const itemTypeSchemas = [];
|
|
211
|
-
for (const [typeKey, itemType] of Object.entries(field.itemTypes)) {
|
|
212
|
-
const childShape = {
|
|
213
|
-
_type: _zod.z.literal(typeKey)
|
|
214
|
-
};
|
|
215
|
-
for (const childField of itemType.fields) {
|
|
216
|
-
childShape[childField.id] = ctx.getFieldSchema(childField);
|
|
217
|
-
}
|
|
218
|
-
itemTypeSchemas.push(_zod.z.object(childShape).catchall(_zod.z.unknown()).passthrough());
|
|
219
|
-
}
|
|
220
|
-
itemSchema = itemTypeSchemas.length > 1 ? _zod.z.discriminatedUnion("_type", itemTypeSchemas) : _nullishCoalesce(itemTypeSchemas[0], () => ( _zod.z.object({ _type: _zod.z.string() }).passthrough()));
|
|
221
|
-
} else if (!field.polymorphic && field.fields) {
|
|
222
|
-
const childShape = {};
|
|
223
|
-
for (const childField of field.fields) {
|
|
224
|
-
childShape[childField.id] = ctx.getFieldSchema(childField);
|
|
225
|
-
}
|
|
226
|
-
itemSchema = _zod.z.object(childShape).catchall(_zod.z.unknown()).passthrough();
|
|
227
|
-
} else {
|
|
228
|
-
itemSchema = _zod.z.any();
|
|
229
|
-
}
|
|
230
|
-
if (field.validation) {
|
|
231
|
-
const customValidation = field.validation;
|
|
232
|
-
if (field.required) {
|
|
233
|
-
return customValidation;
|
|
234
|
-
}
|
|
235
|
-
return customValidation.optional();
|
|
236
|
-
}
|
|
237
|
-
let schema = _zod.z.array(itemSchema);
|
|
238
|
-
const minItems = _nullishCoalesce(field.minItems, () => ( 0));
|
|
239
|
-
if (minItems > 0) {
|
|
240
|
-
schema = schema.min(minItems, `Must have at least ${minItems} item(s)`);
|
|
241
|
-
}
|
|
242
|
-
if (field.maxItems !== void 0) {
|
|
243
|
-
schema = schema.max(field.maxItems, `Must have at most ${field.maxItems} item(s)`);
|
|
244
|
-
}
|
|
245
|
-
if (field.required) {
|
|
246
|
-
return schema;
|
|
247
|
-
}
|
|
248
|
-
return schema.optional();
|
|
249
|
-
}
|
|
250
|
-
function getRepeaterFieldDefault(field, ctx) {
|
|
251
|
-
if (field.defaultValue !== void 0) {
|
|
252
|
-
return Array.isArray(field.defaultValue) ? field.defaultValue : [];
|
|
253
|
-
}
|
|
254
|
-
const minItems = _nullishCoalesce(field.minItems, () => ( 0));
|
|
255
|
-
if (minItems > 0) {
|
|
256
|
-
const items = [];
|
|
257
|
-
for (let i = 0; i < minItems; i++) {
|
|
258
|
-
const item = {};
|
|
259
|
-
if (field.polymorphic && field.itemTypes) {
|
|
260
|
-
const firstType = Object.keys(field.itemTypes)[0];
|
|
261
|
-
if (firstType) {
|
|
262
|
-
item._type = firstType;
|
|
263
|
-
const typeSchema = field.itemTypes[firstType];
|
|
264
|
-
if (typeSchema) {
|
|
265
|
-
for (const childField of typeSchema.fields) {
|
|
266
|
-
item[childField.id] = ctx.resolve(childField);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
} else if (field.fields) {
|
|
271
|
-
for (const childField of field.fields) {
|
|
272
|
-
item[childField.id] = ctx.resolve(childField);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
items.push(item);
|
|
276
|
-
}
|
|
277
|
-
return items;
|
|
278
|
-
}
|
|
279
|
-
return [];
|
|
280
|
-
}
|
|
281
|
-
var ALLOWED_PROTOCOLS = ["http:", "https:"];
|
|
282
|
-
function buildUrlFieldSchema(field) {
|
|
283
|
-
const message = `${field.label} must be a valid URL`;
|
|
284
|
-
const validator = (value) => {
|
|
285
|
-
if (!value) {
|
|
286
|
-
return !field.required;
|
|
287
|
-
}
|
|
288
|
-
if (field.allowRelative && value.startsWith("/")) {
|
|
289
|
-
return true;
|
|
290
|
-
}
|
|
291
|
-
try {
|
|
292
|
-
const parsed = new URL(value);
|
|
293
|
-
return ALLOWED_PROTOCOLS.includes(parsed.protocol);
|
|
294
|
-
} catch (e2) {
|
|
295
|
-
return false;
|
|
296
|
-
}
|
|
297
|
-
};
|
|
298
|
-
const base = _zod.z.string().trim().refine(validator, message);
|
|
299
|
-
if (field.required) {
|
|
300
|
-
return base.min(1, { message: `${field.label} is required` });
|
|
301
|
-
}
|
|
302
|
-
return _zod.z.union([base, _zod.z.literal("")]).optional().nullable();
|
|
303
|
-
}
|
|
304
|
-
function getUrlFieldDefault(field) {
|
|
305
|
-
return _nullishCoalesce(field.defaultValue, () => ( ""));
|
|
306
|
-
}
|
|
307
|
-
function buildTimeFieldSchema(field) {
|
|
308
|
-
const base = _zod.z.string();
|
|
309
|
-
if (field.required) {
|
|
310
|
-
return base.min(1, { message: `${field.label} is required` });
|
|
311
|
-
}
|
|
312
|
-
return _zod.z.union([base, _zod.z.literal(""), _zod.z.null()]).optional().nullable();
|
|
313
|
-
}
|
|
314
|
-
function getTimeFieldDefault(field) {
|
|
315
|
-
return _nullishCoalesce(field.defaultValue, () => ( null));
|
|
316
|
-
}
|
|
317
|
-
function buildDateFieldSchema(field) {
|
|
318
|
-
const base = _zod.z.string();
|
|
319
|
-
if (field.required) {
|
|
320
|
-
return base.min(1, { message: `${field.label} is required` });
|
|
321
|
-
}
|
|
322
|
-
return _zod.z.union([base, _zod.z.literal(""), _zod.z.null()]).optional().nullable();
|
|
323
|
-
}
|
|
324
|
-
function getDateFieldDefault(field) {
|
|
325
|
-
return _nullishCoalesce(field.defaultValue, () => ( null));
|
|
326
|
-
}
|
|
327
|
-
function buildDateTimeFieldSchema(field) {
|
|
328
|
-
const base = _zod.z.string().refine(
|
|
329
|
-
(val) => {
|
|
330
|
-
if (!val) return true;
|
|
331
|
-
const date = new Date(val);
|
|
332
|
-
return !isNaN(date.getTime());
|
|
333
|
-
},
|
|
334
|
-
{ message: `${field.label} must be a valid date-time` }
|
|
335
|
-
);
|
|
336
|
-
if (field.required) {
|
|
337
|
-
return base.min(1, { message: `${field.label} is required` });
|
|
338
|
-
}
|
|
339
|
-
return _zod.z.union([base, _zod.z.literal(""), _zod.z.null()]).optional().nullable();
|
|
340
|
-
}
|
|
341
|
-
function getDateTimeFieldDefault(field) {
|
|
342
|
-
return _nullishCoalesce(field.defaultValue, () => ( null));
|
|
343
|
-
}
|
|
344
|
-
var SLUG_PATTERN = /^(?:[a-z0-9]+(?:-[a-z0-9]+)*)(?:\/(?:[a-z0-9]+(?:-[a-z0-9]+)*))*$/;
|
|
345
|
-
function buildSlugFieldSchema(field) {
|
|
346
|
-
const base = _zod.z.string().regex(SLUG_PATTERN, `${field.label} must use lowercase letters, numbers, and dashes`);
|
|
347
|
-
const withLength = field.maxLength ? base.max(field.maxLength, { message: `${field.label} must be at most ${field.maxLength} characters` }) : base;
|
|
348
|
-
if (field.required) {
|
|
349
|
-
return withLength.min(1, { message: `${field.label} is required` });
|
|
350
|
-
}
|
|
351
|
-
return _zod.z.union([withLength, _zod.z.literal("")]).optional().nullable();
|
|
352
|
-
}
|
|
353
|
-
function getSlugFieldDefault(field) {
|
|
354
|
-
return _nullishCoalesce(field.defaultValue, () => ( ""));
|
|
355
|
-
}
|
|
356
|
-
function buildLinkFieldSchema(field) {
|
|
357
|
-
const nullableString = _zod.z.union([_zod.z.string().min(1), _zod.z.null()]);
|
|
358
|
-
const internal = _zod.z.object({
|
|
359
|
-
kind: _zod.z.literal("internal"),
|
|
360
|
-
routeId: _zod.z.string().min(1),
|
|
361
|
-
entityId: _zod.z.string().min(1).optional(),
|
|
362
|
-
entityType: _zod.z.enum(["page", "content"]).optional(),
|
|
363
|
-
href: nullableString.optional(),
|
|
364
|
-
title: nullableString.optional(),
|
|
365
|
-
typeLabel: nullableString.optional(),
|
|
366
|
-
contentTypeKey: nullableString.optional(),
|
|
367
|
-
contentTypeName: nullableString.optional(),
|
|
368
|
-
updatedAt: nullableString.optional()
|
|
369
|
-
}).passthrough();
|
|
370
|
-
const external = _zod.z.object({
|
|
371
|
-
kind: _zod.z.literal("external"),
|
|
372
|
-
href: _zod.z.string().min(1)
|
|
373
|
-
}).passthrough();
|
|
374
|
-
const custom = _zod.z.object({
|
|
375
|
-
kind: _zod.z.literal("url"),
|
|
376
|
-
href: _zod.z.string().min(1)
|
|
377
|
-
}).passthrough();
|
|
378
|
-
const linkSchema = _zod.z.union([internal, external, custom]);
|
|
379
|
-
if (field.required) {
|
|
380
|
-
return linkSchema;
|
|
381
|
-
}
|
|
382
|
-
return _zod.z.union([linkSchema, _zod.z.null()]).optional();
|
|
383
|
-
}
|
|
384
|
-
function getLinkFieldDefault(_field) {
|
|
385
|
-
return null;
|
|
386
|
-
}
|
|
387
|
-
function buildRichTextFieldSchema(config) {
|
|
388
|
-
return _chunkVHDDXCK6js.buildRichTextSchema.call(void 0, {
|
|
389
|
-
required: config.required,
|
|
390
|
-
label: config.label
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
var EMPTY_RICH_TEXT_DOC = {
|
|
394
|
-
type: "doc",
|
|
395
|
-
content: [
|
|
396
|
-
{
|
|
397
|
-
type: "paragraph"
|
|
398
|
-
}
|
|
399
|
-
]
|
|
400
|
-
};
|
|
401
|
-
function getRichTextFieldDefaultValue(_config) {
|
|
402
|
-
return EMPTY_RICH_TEXT_DOC;
|
|
403
|
-
}
|
|
404
|
-
var MediaValueSchema = _zod.z.object({
|
|
405
|
-
kind: _zod.z.enum(["image", "video"]),
|
|
406
|
-
url: _zod.z.string().url(),
|
|
407
|
-
alt: _zod.z.string().optional(),
|
|
408
|
-
caption: _zod.z.string().optional(),
|
|
409
|
-
credit: _zod.z.string().optional(),
|
|
410
|
-
width: _zod.z.number().optional(),
|
|
411
|
-
height: _zod.z.number().optional(),
|
|
412
|
-
size: _zod.z.number().optional(),
|
|
413
|
-
mimeType: _zod.z.string().optional()
|
|
414
|
-
});
|
|
415
|
-
function buildMediaFieldSchema(config) {
|
|
416
|
-
let schema = MediaValueSchema.nullable();
|
|
417
|
-
if (config.required) {
|
|
418
|
-
schema = schema.refine((val) => val !== null, {
|
|
419
|
-
message: `${config.label} is required`
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
return schema;
|
|
423
|
-
}
|
|
424
|
-
function getMediaFieldDefaultValue(_config) {
|
|
425
|
-
return null;
|
|
426
|
-
}
|
|
427
|
-
function buildTabGroupFieldSchema(field, ctx) {
|
|
428
|
-
const shape = {};
|
|
429
|
-
for (const tab of field.tabs) {
|
|
430
|
-
for (const child of tab.fields) {
|
|
431
|
-
shape[child.id] = ctx.getFieldSchema(child);
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
if (field.activeTabField) {
|
|
435
|
-
const tabIds = field.tabs.map((t) => t.id);
|
|
436
|
-
if (tabIds.length > 0) {
|
|
437
|
-
shape[field.activeTabField] = _zod.z.enum(tabIds);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
return _zod.z.object(shape).catchall(_zod.z.unknown()).passthrough();
|
|
441
|
-
}
|
|
442
|
-
function getTabGroupFieldDefault(field, ctx) {
|
|
443
|
-
const defaults = {};
|
|
444
|
-
for (const tab of field.tabs) {
|
|
445
|
-
for (const child of tab.fields) {
|
|
446
|
-
defaults[child.id] = ctx.resolve(child);
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
if (field.activeTabField && field.tabs.length > 0) {
|
|
450
|
-
defaults[field.activeTabField] = field.tabs[0].id;
|
|
451
|
-
}
|
|
452
|
-
return defaults;
|
|
453
|
-
}
|
|
454
|
-
function buildPresetOrCustomFieldSchema(field, _ctx) {
|
|
455
|
-
const presetValues = field.presets.map((p) => p.value);
|
|
456
|
-
return _zod.z.string();
|
|
457
|
-
}
|
|
458
|
-
function getPresetOrCustomFieldDefault(field, _ctx) {
|
|
459
|
-
if (field.defaultValue !== void 0 && field.defaultValue !== null) {
|
|
460
|
-
return String(field.defaultValue);
|
|
461
|
-
}
|
|
462
|
-
return _nullishCoalesce(_optionalChain([field, 'access', _21 => _21.presets, 'access', _22 => _22[0], 'optionalAccess', _23 => _23.value]), () => ( ""));
|
|
463
|
-
}
|
|
464
|
-
function buildReferenceFieldSchema(field, _ctx) {
|
|
465
|
-
return _zod.z.string();
|
|
466
|
-
}
|
|
467
|
-
function getReferenceFieldDefault(field, _ctx) {
|
|
468
|
-
if (field.defaultValue !== void 0 && field.defaultValue !== null) {
|
|
469
|
-
return String(field.defaultValue);
|
|
470
|
-
}
|
|
471
|
-
if (field.required) {
|
|
472
|
-
return `placeholder-${field.id}`;
|
|
473
|
-
}
|
|
474
|
-
return "";
|
|
475
|
-
}
|
|
476
|
-
var SCHEMA_BUILDERS = {
|
|
477
|
-
text: buildTextFieldSchema,
|
|
478
|
-
number: buildNumberFieldSchema,
|
|
479
|
-
select: buildSelectFieldSchema,
|
|
480
|
-
boolean: buildBooleanFieldSchema,
|
|
481
|
-
group: buildGroupFieldSchema,
|
|
482
|
-
modal: buildModalFieldSchema,
|
|
483
|
-
repeater: buildRepeaterFieldSchema,
|
|
484
|
-
url: buildUrlFieldSchema,
|
|
485
|
-
time: buildTimeFieldSchema,
|
|
486
|
-
date: buildDateFieldSchema,
|
|
487
|
-
datetime: buildDateTimeFieldSchema,
|
|
488
|
-
slug: buildSlugFieldSchema,
|
|
489
|
-
link: buildLinkFieldSchema,
|
|
490
|
-
richText: buildRichTextFieldSchema,
|
|
491
|
-
media: buildMediaFieldSchema,
|
|
492
|
-
tabGroup: buildTabGroupFieldSchema,
|
|
493
|
-
presetOrCustom: buildPresetOrCustomFieldSchema,
|
|
494
|
-
reference: buildReferenceFieldSchema
|
|
495
|
-
};
|
|
496
|
-
var DEFAULT_VALUE_BUILDERS = {
|
|
497
|
-
text: getTextFieldDefault,
|
|
498
|
-
number: getNumberFieldDefault,
|
|
499
|
-
select: getSelectFieldDefault,
|
|
500
|
-
boolean: getBooleanFieldDefault,
|
|
501
|
-
group: getGroupFieldDefault,
|
|
502
|
-
modal: getModalFieldDefault,
|
|
503
|
-
repeater: getRepeaterFieldDefault,
|
|
504
|
-
url: getUrlFieldDefault,
|
|
505
|
-
time: getTimeFieldDefault,
|
|
506
|
-
date: getDateFieldDefault,
|
|
507
|
-
datetime: getDateTimeFieldDefault,
|
|
508
|
-
slug: getSlugFieldDefault,
|
|
509
|
-
link: getLinkFieldDefault,
|
|
510
|
-
richText: getRichTextFieldDefaultValue,
|
|
511
|
-
media: getMediaFieldDefaultValue,
|
|
512
|
-
tabGroup: getTabGroupFieldDefault,
|
|
513
|
-
presetOrCustom: getPresetOrCustomFieldDefault,
|
|
514
|
-
reference: getReferenceFieldDefault
|
|
515
|
-
};
|
|
516
|
-
function buildFieldSchema(field, ctx) {
|
|
517
|
-
const builder = SCHEMA_BUILDERS[field.type];
|
|
518
|
-
if (!builder) {
|
|
519
|
-
console.warn(`No schema builder registered for field type: ${field.type}`);
|
|
520
|
-
return __require2("zod").z.any();
|
|
521
|
-
}
|
|
522
|
-
return builder(field, ctx);
|
|
523
|
-
}
|
|
524
|
-
function getFieldDefault(field, ctx) {
|
|
525
|
-
const getDefault = DEFAULT_VALUE_BUILDERS[field.type];
|
|
526
|
-
if (!getDefault) {
|
|
527
|
-
console.warn(`No default value builder registered for field type: ${field.type}`);
|
|
528
|
-
return field.defaultValue;
|
|
529
|
-
}
|
|
530
|
-
return getDefault(field, ctx);
|
|
531
|
-
}
|
|
532
|
-
var DEFAULT_ROLE = "author";
|
|
533
|
-
var rolePriority = {
|
|
534
|
-
author: 0,
|
|
535
|
-
designer: 1,
|
|
536
|
-
admin: 2
|
|
537
|
-
};
|
|
538
|
-
function createManifestFormAdapter(manifest, options) {
|
|
539
|
-
const role = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _24 => _24.role]), () => ( DEFAULT_ROLE));
|
|
540
|
-
const fields = (_nullishCoalesce(manifest.fields, () => ( []))).map((field) => transformField(field, role)).filter(Boolean);
|
|
541
|
-
const schema = buildValidationSchema(fields);
|
|
542
|
-
return { fields, schema };
|
|
543
|
-
}
|
|
544
|
-
function transformField(field, role) {
|
|
545
|
-
if (!isFieldVisible(field, role)) {
|
|
546
|
-
return void 0;
|
|
547
|
-
}
|
|
548
|
-
if (field.type !== "group" && field.type !== "repeater") {
|
|
549
|
-
return field;
|
|
550
|
-
}
|
|
551
|
-
if (field.type === "group") {
|
|
552
|
-
const children = (_nullishCoalesce(_optionalChain([field, 'access', _25 => _25.schema, 'optionalAccess', _26 => _26.fields]), () => ( []))).map((child) => transformField(child, role)).filter(Boolean);
|
|
553
|
-
if (!children.length) {
|
|
554
|
-
return void 0;
|
|
555
|
-
}
|
|
556
|
-
const { schema: _schema, ...rest } = field;
|
|
557
|
-
return { ...rest, fields: children };
|
|
558
|
-
}
|
|
559
|
-
if (field.type === "repeater") {
|
|
560
|
-
if (field.polymorphic && field.itemTypes) {
|
|
561
|
-
const itemTypes = {};
|
|
562
|
-
for (const [typeKey, itemType] of Object.entries(field.itemTypes)) {
|
|
563
|
-
const children2 = (_nullishCoalesce(itemType.fields, () => ( []))).map((child) => transformField(child, role)).filter(Boolean);
|
|
564
|
-
if (children2.length > 0) {
|
|
565
|
-
itemTypes[typeKey] = {
|
|
566
|
-
label: itemType.label,
|
|
567
|
-
icon: itemType.icon,
|
|
568
|
-
fields: children2
|
|
569
|
-
};
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
if (Object.keys(itemTypes).length === 0) {
|
|
573
|
-
return void 0;
|
|
574
|
-
}
|
|
575
|
-
const { schema: _schema2, ...rest2 } = field;
|
|
576
|
-
return { ...rest2, itemTypes };
|
|
577
|
-
}
|
|
578
|
-
const children = (_nullishCoalesce(_optionalChain([field, 'access', _27 => _27.schema, 'optionalAccess', _28 => _28.fields]), () => ( []))).map((child) => transformField(child, role)).filter(Boolean);
|
|
579
|
-
if (!children.length) {
|
|
580
|
-
return void 0;
|
|
581
|
-
}
|
|
582
|
-
const { schema: _schema3, polymorphic: _polymorphic, itemTypes: _itemTypes, ...rest } = field;
|
|
583
|
-
return { ...rest, fields: children };
|
|
584
|
-
}
|
|
585
|
-
return void 0;
|
|
586
|
-
}
|
|
587
|
-
function isFieldVisible(field, role) {
|
|
588
|
-
if (role === "admin") {
|
|
589
|
-
return true;
|
|
590
|
-
}
|
|
591
|
-
const allowed = field.visibleRoles;
|
|
592
|
-
if (!allowed || allowed.length === 0) {
|
|
593
|
-
return true;
|
|
594
|
-
}
|
|
595
|
-
return allowed.some((visibility) => rolePriority[role] >= rolePriority[visibility]);
|
|
596
|
-
}
|
|
597
|
-
function buildValidationSchema(fields) {
|
|
598
|
-
const shape = {};
|
|
599
|
-
const ctx = {
|
|
600
|
-
getFieldSchema: (field) => buildFieldSchema(field, ctx)
|
|
601
|
-
};
|
|
602
|
-
for (const field of fields) {
|
|
603
|
-
shape[field.id] = buildFieldSchema(field, ctx);
|
|
604
|
-
}
|
|
605
|
-
return _zod.z.object(shape).catchall(_zod.z.unknown()).passthrough();
|
|
606
|
-
}
|
|
607
|
-
function createManifestDefaultValues(manifest, data = {}, options = {}) {
|
|
608
|
-
const { fields } = createManifestFormAdapter(manifest, {
|
|
609
|
-
role: options.role,
|
|
610
|
-
...options.adapterOptions
|
|
611
|
-
});
|
|
612
|
-
const ctx = {
|
|
613
|
-
resolve: (field) => getFieldDefault(field, ctx)
|
|
614
|
-
};
|
|
615
|
-
const result = {};
|
|
616
|
-
for (const field of fields) {
|
|
617
|
-
const rawValue = data[field.id];
|
|
618
|
-
result[field.id] = ensureFieldValue(field, rawValue, ctx);
|
|
619
|
-
}
|
|
620
|
-
return result;
|
|
621
|
-
}
|
|
622
|
-
function ensureFieldValue(field, rawValue, ctx) {
|
|
623
|
-
if (field.type === "repeater") {
|
|
624
|
-
if (rawValue === void 0) {
|
|
625
|
-
rawValue = getFieldDefault(field, ctx);
|
|
626
|
-
}
|
|
627
|
-
const items = Array.isArray(rawValue) ? rawValue : [];
|
|
628
|
-
return items.map((item) => ensureRepeaterItem(field, item, ctx));
|
|
629
|
-
}
|
|
630
|
-
if (rawValue === void 0) {
|
|
631
|
-
return getFieldDefault(field, ctx);
|
|
632
|
-
}
|
|
633
|
-
return rawValue;
|
|
634
|
-
}
|
|
635
|
-
function ensureRepeaterItem(field, value, ctx) {
|
|
636
|
-
const itemData = typeof value === "object" && value !== null ? { ...value } : {};
|
|
637
|
-
if (field.polymorphic && field.itemTypes) {
|
|
638
|
-
const itemType = typeof itemData._type === "string" ? itemData._type : Object.keys(field.itemTypes)[0];
|
|
639
|
-
const typeSchema = field.itemTypes[itemType];
|
|
640
|
-
if (!typeSchema) return itemData;
|
|
641
|
-
for (const child of typeSchema.fields) {
|
|
642
|
-
if (child.type === "group" && _optionalChain([child, 'optionalAccess', _29 => _29.ui, 'optionalAccess', _30 => _30.flattenInRepeater])) {
|
|
643
|
-
const group = child;
|
|
644
|
-
for (const gc of group.fields) {
|
|
645
|
-
itemData[gc.id] = ensureFieldValue(gc, itemData[gc.id], ctx);
|
|
646
|
-
}
|
|
647
|
-
} else {
|
|
648
|
-
itemData[child.id] = ensureFieldValue(child, itemData[child.id], ctx);
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
return itemData;
|
|
652
|
-
}
|
|
653
|
-
if (!field.polymorphic && field.fields) {
|
|
654
|
-
for (const child of field.fields) {
|
|
655
|
-
if (child.type === "group" && _optionalChain([child, 'optionalAccess', _31 => _31.ui, 'optionalAccess', _32 => _32.flattenInRepeater])) {
|
|
656
|
-
const group = child;
|
|
657
|
-
for (const gc of group.fields) {
|
|
658
|
-
itemData[gc.id] = ensureFieldValue(gc, itemData[gc.id], ctx);
|
|
659
|
-
}
|
|
660
|
-
} else {
|
|
661
|
-
itemData[child.id] = ensureFieldValue(child, itemData[child.id], ctx);
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
return itemData;
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
// ../site-renderer/dist/index.mjs
|
|
669
|
-
function selectPrimaryMenu(menus) {
|
|
670
|
-
if (!menus.length) {
|
|
671
|
-
return null;
|
|
672
|
-
}
|
|
673
|
-
const primary = menus.find((menu) => menu.isPrimary);
|
|
674
|
-
return _nullishCoalesce(_nullishCoalesce(primary, () => ( menus[0])), () => ( null));
|
|
675
|
-
}
|
|
676
|
-
function buildMenuViewModel(menu) {
|
|
677
|
-
if (!menu) {
|
|
678
|
-
return { items: [], ctaItem: null };
|
|
679
|
-
}
|
|
680
|
-
const flatItems = menu.items.filter((item) => item.parentId === null && item.urlType !== "dropdown").sort((a, b) => a.orderIndex - b.orderIndex);
|
|
681
|
-
const items = [];
|
|
682
|
-
let ctaItem = null;
|
|
683
|
-
for (const item of flatItems) {
|
|
684
|
-
const viewItem = {
|
|
685
|
-
id: item.id,
|
|
686
|
-
label: item.label,
|
|
687
|
-
link: convertNavigationLink(item),
|
|
688
|
-
target: null,
|
|
689
|
-
rel: null,
|
|
690
|
-
active: false
|
|
691
|
-
// TODO: Compute active state based on current route
|
|
692
|
-
};
|
|
693
|
-
if (!ctaItem && Boolean(item.isCta)) {
|
|
694
|
-
ctaItem = { ...viewItem, variant: "primary" };
|
|
695
|
-
continue;
|
|
696
|
-
}
|
|
697
|
-
items.push(viewItem);
|
|
698
|
-
}
|
|
699
|
-
return { items, ctaItem };
|
|
700
|
-
}
|
|
701
|
-
function buildLogoViewModel(logo, fallbackTitle) {
|
|
702
|
-
if (!logo) {
|
|
703
|
-
return null;
|
|
704
|
-
}
|
|
705
|
-
if (!logo.url && !logo.storagePath) {
|
|
706
|
-
return null;
|
|
707
|
-
}
|
|
708
|
-
const alt = logo.alt && logo.alt.trim().length > 0 ? logo.alt : _nullishCoalesce(fallbackTitle, () => ( "Site logo"));
|
|
709
|
-
const viewModel = {
|
|
710
|
-
type: "image",
|
|
711
|
-
src: _nullishCoalesce(logo.url, () => ( "")),
|
|
712
|
-
// Empty when using storagePath - MediaNode builds direct URL
|
|
713
|
-
alt,
|
|
714
|
-
assetId: _nullishCoalesce(logo.assetId, () => ( void 0)),
|
|
715
|
-
width: _nullishCoalesce(logo.width, () => ( void 0)),
|
|
716
|
-
height: _nullishCoalesce(logo.height, () => ( void 0)),
|
|
717
|
-
storagePath: _nullishCoalesce(logo.storagePath, () => ( void 0)),
|
|
718
|
-
storageBucket: _nullishCoalesce(logo.storageBucket, () => ( void 0))
|
|
719
|
-
};
|
|
720
|
-
return viewModel;
|
|
721
|
-
}
|
|
722
|
-
function convertNavigationLink(item) {
|
|
723
|
-
const payload = _nullishCoalesce(item.url, () => ( null));
|
|
724
|
-
if (!payload) return null;
|
|
725
|
-
const kind = typeof payload.kind === "string" ? payload.kind : null;
|
|
726
|
-
if (kind === "external" || kind === "url") {
|
|
727
|
-
const href = typeof payload.href === "string" ? payload.href : null;
|
|
728
|
-
return href ? { kind, href } : null;
|
|
729
|
-
}
|
|
730
|
-
if (kind === "internal") {
|
|
731
|
-
const routeId = typeof payload.routeId === "string" ? payload.routeId : null;
|
|
732
|
-
const entityId = typeof payload.entityId === "string" ? payload.entityId : null;
|
|
733
|
-
const entityType = typeof payload.entityType === "string" && (payload.entityType === "page" || payload.entityType === "content") ? payload.entityType : null;
|
|
734
|
-
const href = typeof payload.href === "string" ? payload.href : null;
|
|
735
|
-
const title = typeof payload.title === "string" ? payload.title : null;
|
|
736
|
-
const typeLabel = typeof payload.typeLabel === "string" ? payload.typeLabel : null;
|
|
737
|
-
if (!routeId || !entityId || !entityType || !href || !title || !typeLabel) {
|
|
738
|
-
return null;
|
|
739
|
-
}
|
|
740
|
-
return {
|
|
741
|
-
kind: "internal",
|
|
742
|
-
routeId,
|
|
743
|
-
entityId,
|
|
744
|
-
entityType,
|
|
745
|
-
href,
|
|
746
|
-
title,
|
|
747
|
-
typeLabel,
|
|
748
|
-
contentTypeKey: typeof payload.contentTypeKey === "string" ? payload.contentTypeKey : null,
|
|
749
|
-
contentTypeName: typeof payload.contentTypeName === "string" ? payload.contentTypeName : null,
|
|
750
|
-
updatedAt: typeof payload.updatedAt === "string" ? payload.updatedAt : null
|
|
751
|
-
};
|
|
752
|
-
}
|
|
753
|
-
return null;
|
|
754
|
-
}
|
|
755
|
-
var HEADER_DEFAULTS = createManifestDefaultValues(_chunkEGTDJ4PLjs.siteHeaderManifest);
|
|
756
|
-
var FOOTER_DEFAULTS = createManifestDefaultValues(_chunkEGTDJ4PLjs.siteFooterManifest);
|
|
757
|
-
|
|
758
|
-
// src/rendering/components/Layout.tsx
|
|
759
|
-
|
|
760
|
-
async function Layout({
|
|
761
|
-
siteData: providedSiteData,
|
|
762
|
-
client,
|
|
763
|
-
siteId,
|
|
764
|
-
slug,
|
|
765
|
-
domain,
|
|
766
|
-
children,
|
|
767
|
-
header = true,
|
|
768
|
-
footer = true,
|
|
769
|
-
headerVariant
|
|
770
|
-
}) {
|
|
771
|
-
let siteData = providedSiteData;
|
|
772
|
-
if (!siteData) {
|
|
773
|
-
if (!client) {
|
|
774
|
-
throw new Error("Layout: must provide either siteData or client");
|
|
775
|
-
}
|
|
776
|
-
if (!siteId && !slug && !domain) {
|
|
777
|
-
throw new Error("Layout: must provide siteId, slug, or domain when using client");
|
|
778
|
-
}
|
|
779
|
-
siteData = await client.getSite({ id: siteId, slug, domain });
|
|
780
|
-
}
|
|
781
|
-
const { site, theme, navigation, layout, routes } = siteData;
|
|
782
|
-
const themeRuntime = _chunkVHDDXCK6js.buildThemeRuntime.call(void 0, theme);
|
|
783
|
-
const menu = selectPrimaryMenu(navigation);
|
|
784
|
-
const menuViewModel = buildMenuViewModel(menu);
|
|
785
|
-
const logoViewModel = buildLogoViewModel(_nullishCoalesce(layout.logo, () => ( null)), site.title);
|
|
786
|
-
const headerData = {
|
|
787
|
-
menu: menuViewModel,
|
|
788
|
-
logo: logoViewModel,
|
|
789
|
-
site,
|
|
790
|
-
theme,
|
|
791
|
-
routes
|
|
792
|
-
};
|
|
793
|
-
const headerContent = headerVariant ? { ...layout.header, variant: headerVariant } : layout.header;
|
|
794
|
-
const themeWithVariant = headerVariant ? {
|
|
795
|
-
...theme,
|
|
796
|
-
header: { ...theme.header, variant: headerVariant }
|
|
797
|
-
} : theme;
|
|
798
|
-
const viewModelOverrides = {
|
|
799
|
-
$root: {
|
|
800
|
-
siteId: site.id,
|
|
801
|
-
routes,
|
|
802
|
-
theme: themeWithVariant
|
|
803
|
-
},
|
|
804
|
-
site,
|
|
805
|
-
menu: menuViewModel,
|
|
806
|
-
content: {
|
|
807
|
-
logo: logoViewModel
|
|
808
|
-
}
|
|
809
|
-
};
|
|
810
|
-
let headerElement = null;
|
|
811
|
-
if (header === true) {
|
|
812
|
-
headerElement = _chunkVHDDXCK6js.renderBlock.call(void 0, _chunkEGTDJ4PLjs.siteHeaderManifest, headerContent, {
|
|
813
|
-
theme: themeRuntime.tokens,
|
|
814
|
-
themeConfig: themeWithVariant,
|
|
815
|
-
viewModelOverrides
|
|
816
|
-
});
|
|
817
|
-
} else if (typeof header === "function") {
|
|
818
|
-
headerElement = header(headerData);
|
|
819
|
-
}
|
|
820
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
821
|
-
headerElement,
|
|
822
|
-
children,
|
|
823
|
-
footer && _chunkVHDDXCK6js.renderBlock.call(void 0, _chunkEGTDJ4PLjs.siteFooterManifest, layout.footer, {
|
|
824
|
-
theme: themeRuntime.tokens,
|
|
825
|
-
themeConfig: theme,
|
|
826
|
-
viewModelOverrides
|
|
827
|
-
})
|
|
828
|
-
] });
|
|
829
|
-
}
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
exports.Page = Page; exports.Layout = Layout;
|
|
835
|
-
//# sourceMappingURL=chunk-TNYU5EIO.js.map
|