nextjs-cms 0.6.4 → 0.6.6
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/core/config/config-loader.d.ts +12 -0
- package/dist/core/config/config-loader.d.ts.map +1 -1
- package/dist/core/config/config-loader.js +17 -1
- package/dist/core/fields/field.d.ts +1 -1
- package/dist/core/fields/field.d.ts.map +1 -1
- package/dist/core/fields/index.d.ts +4 -1
- package/dist/core/fields/index.d.ts.map +1 -1
- package/dist/core/fields/index.js +1 -0
- package/dist/core/fields/photo.d.ts +84 -6
- package/dist/core/fields/photo.d.ts.map +1 -1
- package/dist/core/fields/photo.js +52 -11
- package/dist/core/fields/richText.d.ts +9 -9
- package/dist/core/fields/slug.d.ts +245 -0
- package/dist/core/fields/slug.d.ts.map +1 -0
- package/dist/core/fields/slug.js +200 -0
- package/dist/core/sections/category.d.ts +34 -34
- package/dist/core/sections/hasItems.d.ts +112 -40
- package/dist/core/sections/hasItems.d.ts.map +1 -1
- package/dist/core/sections/section.d.ts +17 -17
- package/dist/core/sections/simple.d.ts +8 -8
- package/dist/core/submit/submit.d.ts +7 -0
- package/dist/core/submit/submit.d.ts.map +1 -1
- package/dist/core/submit/submit.js +21 -3
- package/dist/core/types/index.d.ts +1 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/validators/index.d.ts +1 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +1 -0
- package/dist/validators/slug.d.ts +4 -0
- package/dist/validators/slug.d.ts.map +1 -0
- package/dist/validators/slug.js +20 -0
- package/package.json +2 -2
|
@@ -24,6 +24,12 @@ declare const cmsConfigSchema: z.ZodObject<{
|
|
|
24
24
|
preserveExtension: z.ZodBoolean;
|
|
25
25
|
}, z.core.$strip>>;
|
|
26
26
|
images: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
r: z.ZodNumber;
|
|
29
|
+
g: z.ZodNumber;
|
|
30
|
+
b: z.ZodNumber;
|
|
31
|
+
alpha: z.ZodNumber;
|
|
32
|
+
}, z.core.$strip>>;
|
|
27
33
|
thumbnail: z.ZodOptional<z.ZodObject<{
|
|
28
34
|
width: z.ZodNumber;
|
|
29
35
|
height: z.ZodNumber;
|
|
@@ -106,6 +112,12 @@ export interface ComputedCMSConfig {
|
|
|
106
112
|
preserveExtension: boolean;
|
|
107
113
|
};
|
|
108
114
|
images: {
|
|
115
|
+
background: {
|
|
116
|
+
r: number;
|
|
117
|
+
g: number;
|
|
118
|
+
b: number;
|
|
119
|
+
alpha: number;
|
|
120
|
+
};
|
|
109
121
|
thumbnail: {
|
|
110
122
|
width: number;
|
|
111
123
|
height: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAGxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,uBAAwB,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAGrE,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAGxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,uBAAwB,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAGrE,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2OnB,CAAA;AAGF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAEvD,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,EAAE,eAAe,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,iEAAiE;IACjE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC/C;AAGD,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE;QACA,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,QAAQ,EAAE;YACN,oBAAoB,EAAE,OAAO,CAAA;SAChC,CAAA;KACJ,CAAA;IACD,KAAK,EAAE;QACH,MAAM,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,iBAAiB,EAAE,OAAO,CAAA;SAC7B,CAAA;QACD,MAAM,EAAE;YACJ,UAAU,EAAE;gBAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAA;YAC9D,SAAS,EAAE;gBACP,KAAK,EAAE,MAAM,CAAA;gBACb,MAAM,EAAE,MAAM,CAAA;gBACd,IAAI,EAAE,OAAO,CAAA;gBACb,OAAO,EAAE,MAAM,CAAA;aAClB,CAAA;YACD,SAAS,EAAE,OAAO,CAAA;SACrB,CAAA;KACJ,CAAA;IACD,gBAAgB,EAAE;QACd,OAAO,EAAE;YACL,OAAO,EAAE,OAAO,CAAA;YAChB,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,EAAE,MAAM,CAAA;YAChB,MAAM,EAAE;gBACJ,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;gBAChD,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;aACpD,CAAA;SACJ,CAAA;KACJ,CAAA;IACD,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,IAAI,EAAE;QACF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;QACrC,gBAAgB,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,SAAS,EAAE;QACP,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACJ;AA6KD;;;;;;GAMG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAazE"}
|
|
@@ -90,6 +90,18 @@ const cmsConfigSchema = z.object({
|
|
|
90
90
|
*/
|
|
91
91
|
images: z
|
|
92
92
|
.object({
|
|
93
|
+
/**
|
|
94
|
+
* Global background color for image resizing (used when crop is false).
|
|
95
|
+
* Applied to both normal size images and thumbnails as a fallback.
|
|
96
|
+
*/
|
|
97
|
+
background: z
|
|
98
|
+
.object({
|
|
99
|
+
r: z.number().min(0).max(255),
|
|
100
|
+
g: z.number().min(0).max(255),
|
|
101
|
+
b: z.number().min(0).max(255),
|
|
102
|
+
alpha: z.number().min(0).max(1),
|
|
103
|
+
})
|
|
104
|
+
.optional(),
|
|
93
105
|
/**
|
|
94
106
|
* Global images thumbnail configuration
|
|
95
107
|
*/
|
|
@@ -192,7 +204,9 @@ const cmsConfigSchema = z.object({
|
|
|
192
204
|
supportedLanguages: z
|
|
193
205
|
.record(z.enum(AVAILABLE_I18N_LOCALES), z.record(z.string(), z.string()))
|
|
194
206
|
.optional()
|
|
195
|
-
.refine((v) => v === undefined || Object.keys(v).length >= 1, {
|
|
207
|
+
.refine((v) => v === undefined || Object.keys(v).length >= 1, {
|
|
208
|
+
message: 'i18n.supportedLanguages must have at least one locale',
|
|
209
|
+
}),
|
|
196
210
|
/**
|
|
197
211
|
* Fallback locale when the user's stored locale is not in supportedLanguages,
|
|
198
212
|
* or when no session exists (e.g. login page).
|
|
@@ -262,6 +276,7 @@ function mergeConfig(defaults, userConfig) {
|
|
|
262
276
|
preserveExtension: userConfig.media?.upload?.preserveExtension ?? defaults.media.upload.preserveExtension,
|
|
263
277
|
},
|
|
264
278
|
images: {
|
|
279
|
+
background: userConfig.media?.images?.background ?? defaults.media.images.background,
|
|
265
280
|
thumbnail: {
|
|
266
281
|
width: userConfig.media?.images?.thumbnail?.width ?? defaults.media.images.thumbnail.width,
|
|
267
282
|
height: userConfig.media?.images?.thumbnail?.height ?? defaults.media.images.thumbnail.height,
|
|
@@ -313,6 +328,7 @@ const defaultConfig = {
|
|
|
313
328
|
preserveExtension: true,
|
|
314
329
|
},
|
|
315
330
|
images: {
|
|
331
|
+
background: { r: 0, g: 0, b: 0, alpha: 0 },
|
|
316
332
|
thumbnail: {
|
|
317
333
|
width: 200,
|
|
318
334
|
height: 200,
|
|
@@ -63,7 +63,7 @@ export declare abstract class Field<TType extends FieldType = FieldType, TExtraF
|
|
|
63
63
|
* Build the field to be used in a form
|
|
64
64
|
*/
|
|
65
65
|
build(): Promise<void>;
|
|
66
|
-
abstract prepareForSubmission(): Promise<void>;
|
|
66
|
+
abstract prepareForSubmission(context?: unknown): Promise<void>;
|
|
67
67
|
/**
|
|
68
68
|
* Generate a human-readable label from a field name.
|
|
69
69
|
* This is a static method to avoid recreation on every call.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/core/fields/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB;;;GAGG;AACH,8BAAsB,KAAK,CAEvB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,iBAAiB,SAAS,MAAM,GAAG,MAAM,CAC3C,YAAW,QAAQ,CAAC,KAAK,CAAC;IAExB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAU;IAC9C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,SAAS,CAAA;IAExD;;;;OAIG;IACH,cAAc,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,UAAU,CAAA;IAE1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,cAAc,EAAE,MAAM,CAAA;QACtB,gBAAgB,EAAE,MAAM,CAAA;KAC3B,CAAA;IAED;;OAEG;IACI,iBAAiB,EAAE,gBAAgB,EAAE,CAAK;IACnC,KAAK,EAAE,GAAG,CAAA;gBAKZ,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK;IAaxE,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B,QAAQ,CAAC,KAAK,EAAE,GAAG;IAInB;;OAEG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,GAAG;IAExB,cAAc,IAAI,GAAG;IAIrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/core/fields/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB;;;GAGG;AACH,8BAAsB,KAAK,CAEvB,KAAK,SAAS,SAAS,GAAG,SAAS,EACnC,iBAAiB,SAAS,MAAM,GAAG,MAAM,CAC3C,YAAW,QAAQ,CAAC,KAAK,CAAC;IAExB,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAU;IAC9C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,SAAS,CAAA;IAExD;;;;OAIG;IACH,cAAc,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,UAAU,CAAA;IAE1C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,cAAc,EAAE,MAAM,CAAA;QACtB,gBAAgB,EAAE,MAAM,CAAA;KAC3B,CAAA;IAED;;OAEG;IACI,iBAAiB,EAAE,gBAAgB,EAAE,CAAK;IACnC,KAAK,EAAE,GAAG,CAAA;gBAKZ,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,KAAK;IAaxE,QAAQ,CAAC,aAAa,IAAI,IAAI;IAE9B,QAAQ,CAAC,KAAK,EAAE,GAAG;IAInB;;OAEG;IACU,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,GAAG;IAExB,cAAc,IAAI,GAAG;IAIrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/D;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAY1C,eAAe;;;;;;;;;;IAef,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,aAAa,IAAI,OAAO;CAa3B;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAGpE,eAAO,MAAM,qBAAqB,+CAA8B,CAAA;AAEhE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;IAW9B;;;;OAIG;;IAEH;;;;OAIG;;kBAEL,CAAA;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,iBAAiB,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,GAC1G,iBAAiB,CAAA;AAErB;;GAEG;AACH,UAAU,QAAQ,CAAC,KAAK,SAAS,SAAS,CAAE,SAAQ,eAAe,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,KAAK,CAAA;CACd"}
|
|
@@ -28,6 +28,8 @@ export { DateField, dateField } from './date.js';
|
|
|
28
28
|
export type { DateFieldClientConfig, DateFieldConfig } from './date.js';
|
|
29
29
|
export { ColorField, colorField } from './color.js';
|
|
30
30
|
export type { ColorFieldClientConfig, ColorFieldConfig } from './color.js';
|
|
31
|
+
export { SlugField, slugField } from './slug.js';
|
|
32
|
+
export type { SlugFieldClientConfig, SlugFieldConfig, SlugFieldSubmissionContext } from './slug.js';
|
|
31
33
|
export { Field } from './field.js';
|
|
32
34
|
export type { BaseFieldConfig, FieldClientConfig } from './field.js';
|
|
33
35
|
export { FileField } from './fileField.js';
|
|
@@ -48,6 +50,7 @@ import type { DocumentFieldConfig } from './document.js';
|
|
|
48
50
|
import type { MapFieldConfig } from './map.js';
|
|
49
51
|
import type { DateFieldConfig } from './date.js';
|
|
50
52
|
import type { ColorFieldConfig } from './color.js';
|
|
53
|
+
import type { SlugFieldConfig } from './slug.js';
|
|
51
54
|
/**
|
|
52
55
|
* Union type of all field config types
|
|
53
56
|
* This allows type-safe handling of field configs
|
|
@@ -61,5 +64,5 @@ import type { ColorFieldConfig } from './color.js';
|
|
|
61
64
|
* const textInstance = textConfig.build() // Direct build() call
|
|
62
65
|
* ```
|
|
63
66
|
*/
|
|
64
|
-
export type FieldConfig = TextFieldConfig | NumberFieldConfig | TextAreaFieldConfig | TagsFieldConfig | CheckboxFieldConfig | RichTextFieldConfig | PasswordFieldConfig | PhotoFieldConfig | VideoFieldConfig | SelectFieldConfigType | SelectMultipleFieldConfigType | DocumentFieldConfig | MapFieldConfig | DateFieldConfig | ColorFieldConfig;
|
|
67
|
+
export type FieldConfig = TextFieldConfig | NumberFieldConfig | TextAreaFieldConfig | TagsFieldConfig | CheckboxFieldConfig | RichTextFieldConfig | PasswordFieldConfig | PhotoFieldConfig | VideoFieldConfig | SelectFieldConfigType | SelectMultipleFieldConfigType | DocumentFieldConfig | MapFieldConfig | DateFieldConfig | ColorFieldConfig | SlugFieldConfig;
|
|
65
68
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,uBAAuB,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEtG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAElG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/F,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,YAAY,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAEzG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE9G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7C,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE9G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAIvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,uBAAuB,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAEtG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAElG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/F,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9E,YAAY,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAEzG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE9G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7C,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE9G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEvE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE1E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAEnG,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAIvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAEhD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GACjB,eAAe,GACf,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,qBAAqB,GACrB,6BAA6B,GAC7B,mBAAmB,GACnB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,eAAe,CAAA"}
|
|
@@ -13,6 +13,7 @@ export { MapField, mapField } from './map.js';
|
|
|
13
13
|
export { RichTextField, richTextField } from './richText.js';
|
|
14
14
|
export { DateField, dateField } from './date.js';
|
|
15
15
|
export { ColorField, colorField } from './color.js';
|
|
16
|
+
export { SlugField, slugField } from './slug.js';
|
|
16
17
|
export { Field } from './field.js';
|
|
17
18
|
export { FileField } from './fileField.js';
|
|
18
19
|
export { fieldGroup } from './field-group.js';
|
|
@@ -23,12 +23,32 @@ declare const configSchema: z.ZodObject<{
|
|
|
23
23
|
* }
|
|
24
24
|
*/
|
|
25
25
|
crop: z.ZodBoolean;
|
|
26
|
+
/**
|
|
27
|
+
* Background color for padding when crop is false.
|
|
28
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
29
|
+
*/
|
|
30
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
31
|
+
r: z.ZodNumber;
|
|
32
|
+
g: z.ZodNumber;
|
|
33
|
+
b: z.ZodNumber;
|
|
34
|
+
alpha: z.ZodNumber;
|
|
35
|
+
}, z.core.$strict>>;
|
|
26
36
|
}, z.core.$strict>>;
|
|
27
37
|
thumbnail: z.ZodOptional<z.ZodObject<{
|
|
28
38
|
width: z.ZodNumber;
|
|
29
39
|
height: z.ZodNumber;
|
|
30
40
|
crop: z.ZodBoolean;
|
|
31
41
|
quality: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
/**
|
|
43
|
+
* Background color for padding when crop is false.
|
|
44
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
45
|
+
*/
|
|
46
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
47
|
+
r: z.ZodNumber;
|
|
48
|
+
g: z.ZodNumber;
|
|
49
|
+
b: z.ZodNumber;
|
|
50
|
+
alpha: z.ZodNumber;
|
|
51
|
+
}, z.core.$strict>>;
|
|
32
52
|
}, z.core.$strict>>;
|
|
33
53
|
/**
|
|
34
54
|
* Maximum file size
|
|
@@ -54,10 +74,10 @@ declare const configSchema: z.ZodObject<{
|
|
|
54
74
|
* @hint 'jpg' is an alias for 'jpeg'
|
|
55
75
|
*/
|
|
56
76
|
fileType: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
57
|
-
webp: "webp";
|
|
58
|
-
jpg: "jpg";
|
|
59
77
|
jpeg: "jpeg";
|
|
78
|
+
jpg: "jpg";
|
|
60
79
|
png: "png";
|
|
80
|
+
webp: "webp";
|
|
61
81
|
}>>>;
|
|
62
82
|
/**
|
|
63
83
|
* Remove the extension from the file name
|
|
@@ -74,6 +94,12 @@ export declare class PhotoField extends FileField<'photo', Config> {
|
|
|
74
94
|
width: number;
|
|
75
95
|
height: number;
|
|
76
96
|
crop: boolean;
|
|
97
|
+
background?: {
|
|
98
|
+
r: number;
|
|
99
|
+
g: number;
|
|
100
|
+
b: number;
|
|
101
|
+
alpha: number;
|
|
102
|
+
};
|
|
77
103
|
} | undefined;
|
|
78
104
|
readonly maxFileSize: {
|
|
79
105
|
size: number;
|
|
@@ -107,11 +133,23 @@ export declare class PhotoField extends FileField<'photo', Config> {
|
|
|
107
133
|
height: number;
|
|
108
134
|
crop: boolean;
|
|
109
135
|
quality?: number;
|
|
136
|
+
background?: {
|
|
137
|
+
r: number;
|
|
138
|
+
g: number;
|
|
139
|
+
b: number;
|
|
140
|
+
alpha: number;
|
|
141
|
+
};
|
|
110
142
|
};
|
|
111
143
|
size: {
|
|
112
144
|
width: number;
|
|
113
145
|
height: number;
|
|
114
146
|
crop: boolean;
|
|
147
|
+
background?: {
|
|
148
|
+
r: number;
|
|
149
|
+
g: number;
|
|
150
|
+
b: number;
|
|
151
|
+
alpha: number;
|
|
152
|
+
};
|
|
115
153
|
} | undefined;
|
|
116
154
|
maxFileSize: {
|
|
117
155
|
size: number;
|
|
@@ -170,12 +208,32 @@ declare const optionsSchema: z.ZodObject<{
|
|
|
170
208
|
* }
|
|
171
209
|
*/
|
|
172
210
|
crop: z.ZodBoolean;
|
|
211
|
+
/**
|
|
212
|
+
* Background color for padding when crop is false.
|
|
213
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
214
|
+
*/
|
|
215
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
216
|
+
r: z.ZodNumber;
|
|
217
|
+
g: z.ZodNumber;
|
|
218
|
+
b: z.ZodNumber;
|
|
219
|
+
alpha: z.ZodNumber;
|
|
220
|
+
}, z.core.$strict>>;
|
|
173
221
|
}, z.core.$strict>>;
|
|
174
222
|
thumbnail: z.ZodOptional<z.ZodObject<{
|
|
175
223
|
width: z.ZodNumber;
|
|
176
224
|
height: z.ZodNumber;
|
|
177
225
|
crop: z.ZodBoolean;
|
|
178
226
|
quality: z.ZodOptional<z.ZodNumber>;
|
|
227
|
+
/**
|
|
228
|
+
* Background color for padding when crop is false.
|
|
229
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
230
|
+
*/
|
|
231
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
232
|
+
r: z.ZodNumber;
|
|
233
|
+
g: z.ZodNumber;
|
|
234
|
+
b: z.ZodNumber;
|
|
235
|
+
alpha: z.ZodNumber;
|
|
236
|
+
}, z.core.$strict>>;
|
|
179
237
|
}, z.core.$strict>>;
|
|
180
238
|
/**
|
|
181
239
|
* Maximum file size
|
|
@@ -201,10 +259,10 @@ declare const optionsSchema: z.ZodObject<{
|
|
|
201
259
|
* @hint 'jpg' is an alias for 'jpeg'
|
|
202
260
|
*/
|
|
203
261
|
fileType: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
204
|
-
webp: "webp";
|
|
205
|
-
jpg: "jpg";
|
|
206
262
|
jpeg: "jpeg";
|
|
263
|
+
jpg: "jpg";
|
|
207
264
|
png: "png";
|
|
265
|
+
webp: "webp";
|
|
208
266
|
}>>>;
|
|
209
267
|
/**
|
|
210
268
|
* Remove the extension from the file name
|
|
@@ -242,12 +300,32 @@ declare const photoFieldConfigSchema: z.ZodObject<{
|
|
|
242
300
|
* }
|
|
243
301
|
*/
|
|
244
302
|
crop: z.ZodBoolean;
|
|
303
|
+
/**
|
|
304
|
+
* Background color for padding when crop is false.
|
|
305
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
306
|
+
*/
|
|
307
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
308
|
+
r: z.ZodNumber;
|
|
309
|
+
g: z.ZodNumber;
|
|
310
|
+
b: z.ZodNumber;
|
|
311
|
+
alpha: z.ZodNumber;
|
|
312
|
+
}, z.core.$strict>>;
|
|
245
313
|
}, z.core.$strict>>;
|
|
246
314
|
thumbnail: z.ZodOptional<z.ZodObject<{
|
|
247
315
|
width: z.ZodNumber;
|
|
248
316
|
height: z.ZodNumber;
|
|
249
317
|
crop: z.ZodBoolean;
|
|
250
318
|
quality: z.ZodOptional<z.ZodNumber>;
|
|
319
|
+
/**
|
|
320
|
+
* Background color for padding when crop is false.
|
|
321
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
322
|
+
*/
|
|
323
|
+
background: z.ZodOptional<z.ZodObject<{
|
|
324
|
+
r: z.ZodNumber;
|
|
325
|
+
g: z.ZodNumber;
|
|
326
|
+
b: z.ZodNumber;
|
|
327
|
+
alpha: z.ZodNumber;
|
|
328
|
+
}, z.core.$strict>>;
|
|
251
329
|
}, z.core.$strict>>;
|
|
252
330
|
/**
|
|
253
331
|
* Maximum file size
|
|
@@ -273,10 +351,10 @@ declare const photoFieldConfigSchema: z.ZodObject<{
|
|
|
273
351
|
* @hint 'jpg' is an alias for 'jpeg'
|
|
274
352
|
*/
|
|
275
353
|
fileType: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
276
|
-
webp: "webp";
|
|
277
|
-
jpg: "jpg";
|
|
278
354
|
jpeg: "jpeg";
|
|
355
|
+
jpg: "jpg";
|
|
279
356
|
png: "png";
|
|
357
|
+
webp: "webp";
|
|
280
358
|
}>>>;
|
|
281
359
|
/**
|
|
282
360
|
* Remove the extension from the file name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAKxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../../src/core/fields/photo.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,14 @@ import { customAlphabet } from 'nanoid';
|
|
|
8
8
|
import { FileField } from './fileField.js';
|
|
9
9
|
import { humanReadableFileSize } from '../../utils/index.js';
|
|
10
10
|
import { getCMSConfig } from '../config/index.js';
|
|
11
|
+
const backgroundSchema = z
|
|
12
|
+
.strictObject({
|
|
13
|
+
r: z.number().min(0).max(255).describe('Red channel (0-255)'),
|
|
14
|
+
g: z.number().min(0).max(255).describe('Green channel (0-255)'),
|
|
15
|
+
b: z.number().min(0).max(255).describe('Blue channel (0-255)'),
|
|
16
|
+
alpha: z.number().min(0).max(1).describe('Alpha channel (0-1)'),
|
|
17
|
+
})
|
|
18
|
+
.describe('Background color for image padding (used when crop is false)');
|
|
11
19
|
const sizeSchema = z.strictObject({
|
|
12
20
|
width: z.number().describe('Image width in pixels'),
|
|
13
21
|
height: z.number().describe('Image height in pixels'),
|
|
@@ -25,12 +33,22 @@ const sizeSchema = z.strictObject({
|
|
|
25
33
|
* }
|
|
26
34
|
*/
|
|
27
35
|
crop: z.boolean().describe('Whether to crop the image to fit dimensions'),
|
|
36
|
+
/**
|
|
37
|
+
* Background color for padding when crop is false.
|
|
38
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
39
|
+
*/
|
|
40
|
+
background: backgroundSchema.optional().describe('Background color for padding when not cropping'),
|
|
28
41
|
});
|
|
29
42
|
const thumbnailSchema = z.strictObject({
|
|
30
43
|
width: z.number().describe('Thumbnail width in pixels'),
|
|
31
44
|
height: z.number().describe('Thumbnail height in pixels'),
|
|
32
45
|
crop: z.boolean().describe('Whether to crop the thumbnail'),
|
|
33
46
|
quality: z.number().optional().describe('Thumbnail quality (0-100)'),
|
|
47
|
+
/**
|
|
48
|
+
* Background color for padding when crop is false.
|
|
49
|
+
* Falls back to CMS config media.images.background if not provided.
|
|
50
|
+
*/
|
|
51
|
+
background: backgroundSchema.optional().describe('Background color for padding when not cropping'),
|
|
34
52
|
});
|
|
35
53
|
const maxFileSizeSchema = z.strictObject({
|
|
36
54
|
size: z.number().describe('Maximum file size'),
|
|
@@ -175,7 +193,9 @@ export class PhotoField extends FileField {
|
|
|
175
193
|
* If .photos, and 'sectionName' folders don't exist, create them
|
|
176
194
|
*/
|
|
177
195
|
const thumbnail = await this.getThumbnail();
|
|
178
|
-
const
|
|
196
|
+
const cmsConfig = await getCMSConfig();
|
|
197
|
+
const uploadsFolder = cmsConfig.media.upload.path;
|
|
198
|
+
const cmsBackground = cmsConfig.media.images.background;
|
|
179
199
|
const photosFolder = path.join(uploadsFolder, '.photos', this._folder);
|
|
180
200
|
const thumbsFolder = path.join(uploadsFolder, '.thumbs', this._folder);
|
|
181
201
|
if (!fs.existsSync(photosFolder)) {
|
|
@@ -186,23 +206,43 @@ export class PhotoField extends FileField {
|
|
|
186
206
|
}
|
|
187
207
|
/**
|
|
188
208
|
* Check if the image needs to be resized and write the file to disk
|
|
209
|
+
* - crop: true -> fit: 'cover' (crops to fill dimensions)
|
|
210
|
+
* - crop: false -> fit: 'contain' with background (preserves all content, adds padding)
|
|
189
211
|
*/
|
|
190
|
-
if (this.size
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
212
|
+
if (this.size) {
|
|
213
|
+
if (this.size.crop) {
|
|
214
|
+
// Crop mode: use 'cover' to fill dimensions by cropping excess
|
|
215
|
+
await this._sharpImage
|
|
216
|
+
.clone()
|
|
217
|
+
.resize({
|
|
218
|
+
width: this.size.width,
|
|
219
|
+
height: this.size.height,
|
|
220
|
+
fit: 'cover',
|
|
221
|
+
})
|
|
222
|
+
.webp()
|
|
223
|
+
.toFile(path.join(uploadsFolder, '.photos', this._folder, this.value));
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// Contain mode: preserve all content with background padding
|
|
227
|
+
// Use field-level background, fall back to CMS config background
|
|
228
|
+
await this._sharpImage
|
|
229
|
+
.clone()
|
|
230
|
+
.resize({
|
|
231
|
+
width: this.size.width,
|
|
232
|
+
height: this.size.height,
|
|
233
|
+
fit: 'contain',
|
|
234
|
+
background: this.size.background ?? cmsBackground,
|
|
235
|
+
})
|
|
236
|
+
.webp()
|
|
237
|
+
.toFile(path.join(uploadsFolder, '.photos', this._folder, this.value));
|
|
238
|
+
}
|
|
200
239
|
}
|
|
201
240
|
else {
|
|
202
241
|
await this._sharpImage.clone().toFile(path.join(uploadsFolder, '.photos', this._folder, this.value));
|
|
203
242
|
}
|
|
204
243
|
/**
|
|
205
244
|
* Also, write a thumbnail
|
|
245
|
+
* Use CMS config background for padding when crop is false
|
|
206
246
|
*/
|
|
207
247
|
await this._sharpImage
|
|
208
248
|
.clone()
|
|
@@ -210,6 +250,7 @@ export class PhotoField extends FileField {
|
|
|
210
250
|
width: thumbnail.width,
|
|
211
251
|
height: thumbnail.height,
|
|
212
252
|
fit: thumbnail.crop ? 'cover' : 'contain',
|
|
253
|
+
background: thumbnail.background ?? cmsBackground,
|
|
213
254
|
})
|
|
214
255
|
.webp({
|
|
215
256
|
quality: thumbnail.quality ?? 80,
|
|
@@ -31,10 +31,10 @@ declare const allowImageUploadsSchema: z.ZodObject<{
|
|
|
31
31
|
*/
|
|
32
32
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
33
33
|
format: z.ZodOptional<z.ZodEnum<{
|
|
34
|
-
webp: "webp";
|
|
35
|
-
jpg: "jpg";
|
|
36
34
|
jpeg: "jpeg";
|
|
35
|
+
jpg: "jpg";
|
|
37
36
|
png: "png";
|
|
37
|
+
webp: "webp";
|
|
38
38
|
}>>;
|
|
39
39
|
}, z.core.$strict>;
|
|
40
40
|
declare const configSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -72,10 +72,10 @@ declare const configSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
72
72
|
*/
|
|
73
73
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
74
74
|
format: z.ZodOptional<z.ZodEnum<{
|
|
75
|
-
webp: "webp";
|
|
76
|
-
jpg: "jpg";
|
|
77
75
|
jpeg: "jpeg";
|
|
76
|
+
jpg: "jpg";
|
|
78
77
|
png: "png";
|
|
78
|
+
webp: "webp";
|
|
79
79
|
}>>;
|
|
80
80
|
}, z.core.$strict>>;
|
|
81
81
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -118,7 +118,7 @@ export declare class RichTextField extends Field<'rich_text', Config> {
|
|
|
118
118
|
} | undefined;
|
|
119
119
|
handleMethod?: "base64" | "tempSave" | undefined;
|
|
120
120
|
omitExtension?: boolean | undefined;
|
|
121
|
-
format?: "
|
|
121
|
+
format?: "jpeg" | "jpg" | "png" | "webp" | undefined;
|
|
122
122
|
};
|
|
123
123
|
sanitize: boolean;
|
|
124
124
|
type: "rich_text";
|
|
@@ -186,10 +186,10 @@ declare const optionsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
186
186
|
*/
|
|
187
187
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
188
188
|
format: z.ZodOptional<z.ZodEnum<{
|
|
189
|
-
webp: "webp";
|
|
190
|
-
jpg: "jpg";
|
|
191
189
|
jpeg: "jpeg";
|
|
190
|
+
jpg: "jpg";
|
|
192
191
|
png: "png";
|
|
192
|
+
webp: "webp";
|
|
193
193
|
}>>;
|
|
194
194
|
}, z.core.$strict>>;
|
|
195
195
|
name: z.ZodString;
|
|
@@ -248,10 +248,10 @@ declare const richTextFieldConfigSchema: z.ZodIntersection<z.ZodDiscriminatedUni
|
|
|
248
248
|
*/
|
|
249
249
|
omitExtension: z.ZodOptional<z.ZodBoolean>;
|
|
250
250
|
format: z.ZodOptional<z.ZodEnum<{
|
|
251
|
-
webp: "webp";
|
|
252
|
-
jpg: "jpg";
|
|
253
251
|
jpeg: "jpeg";
|
|
252
|
+
jpg: "jpg";
|
|
254
253
|
png: "png";
|
|
254
|
+
webp: "webp";
|
|
255
255
|
}>>;
|
|
256
256
|
}, z.core.$strict>>;
|
|
257
257
|
name: z.ZodString;
|