@kyro-cms/core 0.10.4 → 0.10.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/api-handler-graphql.cjs +1 -49
- package/dist/api-handler-graphql.js +1 -46
- package/dist/api-handler-trpc.cjs +1 -38
- package/dist/api-handler-trpc.js +1 -36
- package/dist/api-handler.cjs +1 -44
- package/dist/api-handler.js +1 -27
- package/dist/bootstrap-HIAV5ZFT.cjs +1 -0
- package/dist/bootstrap-P7QPQYQP.js +1 -0
- package/dist/chunk-2BTRHVT3.cjs +20 -0
- package/dist/chunk-2W4FK6CJ.js +122 -0
- package/dist/chunk-4ORJMSJU.cjs +1 -0
- package/dist/chunk-65G73T7Z.cjs +2 -0
- package/dist/chunk-7N6NKCRT.js +1 -0
- package/dist/chunk-7WOX27LK.js +259 -0
- package/dist/chunk-AE6GXUT7.js +1 -0
- package/dist/chunk-AJAZ7D3W.cjs +259 -0
- package/dist/chunk-ATLSIYRH.cjs +1 -0
- package/dist/chunk-AU6IWTBO.js +2 -0
- package/dist/chunk-CDL7ARXT.js +133 -0
- package/dist/chunk-CUTFS6N2.cjs +1 -0
- package/dist/chunk-CVVW4LXZ.cjs +1 -0
- package/dist/chunk-DGJUBN33.js +1 -0
- package/dist/chunk-DV4LFLPL.cjs +1 -0
- package/dist/chunk-EEWCANFX.js +1 -0
- package/dist/chunk-ELICKLFM.cjs +3 -0
- package/dist/chunk-EQUQJBPP.cjs +2 -0
- package/dist/chunk-ET6NN2V2.cjs +122 -0
- package/dist/chunk-F7P36SLX.cjs +74 -0
- package/dist/chunk-F7SR5IDT.cjs +1 -0
- package/dist/chunk-FO3HLBC7.js +1 -0
- package/dist/chunk-FS7GL2BR.js +73 -0
- package/dist/chunk-G6A7OSIG.js +2 -0
- package/dist/chunk-GFU7AOI3.cjs +1 -0
- package/dist/chunk-GYQMNXXW.cjs +114 -0
- package/dist/chunk-HLSB2MCK.js +1 -0
- package/dist/chunk-HVXO3OFB.cjs +1 -0
- package/dist/chunk-IFJJ44OQ.cjs +133 -0
- package/dist/chunk-ISWMETHJ.cjs +1 -0
- package/dist/chunk-K6WUOU6P.js +1 -0
- package/dist/chunk-KDNYHLD2.js +1 -0
- package/dist/chunk-KIW36TG7.cjs +86 -0
- package/dist/chunk-L6CZYN3L.cjs +20 -0
- package/dist/chunk-LRGAPGG3.js +74 -0
- package/dist/chunk-LZ6YFYQM.js +20 -0
- package/dist/chunk-MIOMMB23.cjs +1 -0
- package/dist/chunk-NGBJKZMT.js +90 -0
- package/dist/chunk-NRLIGDYF.js +1 -0
- package/dist/chunk-NY47CFVP.cjs +1 -0
- package/dist/chunk-NZ35PV5R.js +2 -0
- package/dist/chunk-OG7CNQGU.js +1 -0
- package/dist/chunk-OQD3WG6Z.cjs +1 -0
- package/dist/chunk-P7CESLDJ.js +1 -0
- package/dist/chunk-PP5S2UBV.js +0 -0
- package/dist/chunk-Q3Q7BJVQ.cjs +1 -0
- package/dist/chunk-Q4CSLXCO.cjs +90 -0
- package/dist/chunk-QRXDCV6K.js +0 -0
- package/dist/chunk-R7DVVXXI.cjs +73 -0
- package/dist/chunk-RHCWCG3O.js +114 -0
- package/dist/chunk-SL3LZQCF.js +1 -0
- package/dist/chunk-UBHFUFD4.cjs +1 -0
- package/dist/chunk-UBRYJP2G.js +1 -0
- package/dist/chunk-UDSJGML2.cjs +2 -0
- package/dist/chunk-UHFDH3PG.js +20 -0
- package/dist/chunk-UJNSOOYZ.cjs +1 -0
- package/dist/chunk-URCLFIME.js +86 -0
- package/dist/chunk-UVTS2IWM.js +1 -0
- package/dist/chunk-V65NPSR5.cjs +1 -0
- package/dist/chunk-WIZ6C5QZ.cjs +1 -0
- package/dist/chunk-ZAQOSRP6.js +1 -0
- package/dist/chunk-ZELCS7IC.js +3 -0
- package/dist/cli/index.cjs +35 -405
- package/dist/cli/index.js +35 -402
- package/dist/client.cjs +1 -55
- package/dist/client.js +1 -6
- package/dist/drizzle/index.cjs +1 -50
- package/dist/drizzle/index.d.cts +1 -2
- package/dist/drizzle/index.d.ts +1 -2
- package/dist/drizzle/index.js +1 -9
- package/dist/fields/index.cjs +1 -89
- package/dist/fields/index.js +1 -4
- package/dist/graphql/index.cjs +1 -31
- package/dist/graphql/index.d.cts +1 -1
- package/dist/graphql/index.d.ts +1 -1
- package/dist/graphql/index.js +1 -6
- package/dist/{index-jLs0zlft.d.ts → index-DXr33e0x.d.ts} +1 -1
- package/dist/{index-DHbywDs-.d.cts → index-DuuUzWBq.d.cts} +1 -1
- package/dist/index.cjs +29 -2464
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +29 -1929
- package/dist/integration.cjs +1 -10
- package/dist/integration.js +1 -4
- package/dist/media-NSSMOB7N.cjs +1 -0
- package/dist/media-RNMCZYPZ.js +1 -0
- package/dist/mongo-auth-adapter-JYJ4GBZE.cjs +1 -0
- package/dist/mongo-auth-adapter-XI7EPURZ.js +1 -0
- package/dist/mongodb/index.cjs +1 -29
- package/dist/mongodb/index.d.cts +1 -2
- package/dist/mongodb/index.d.ts +1 -2
- package/dist/mongodb/index.js +1 -8
- package/dist/postgres-auth-adapter-E7OGMDD4.cjs +1 -0
- package/dist/postgres-auth-adapter-F4KLOGAG.js +1 -0
- package/dist/redis-adapter-AQJVABYT.cjs +1 -0
- package/dist/redis-adapter-AUKOV74G.js +1 -0
- package/dist/rest/index.cjs +1 -31
- package/dist/rest/index.d.cts +1 -1
- package/dist/rest/index.d.ts +1 -1
- package/dist/rest/index.js +1 -18
- package/dist/schema-5XNROI7I.js +1 -0
- package/dist/schema-6O4JTJRU.cjs +1 -0
- package/dist/sqlite-adapter-5XFLNJDH.js +1 -0
- package/dist/sqlite-adapter-W53Q32N5.cjs +1 -0
- package/dist/templates/index.cjs +1 -207
- package/dist/templates/index.js +1 -6
- package/dist/trpc/index.cjs +1 -48
- package/dist/trpc/index.js +1 -7
- package/dist/ws/index.cjs +1 -25
- package/dist/ws/index.js +1 -4
- package/package.json +44 -13
- package/dist/api-handler-graphql.cjs.map +0 -1
- package/dist/api-handler-graphql.js.map +0 -1
- package/dist/api-handler-trpc.cjs.map +0 -1
- package/dist/api-handler-trpc.js.map +0 -1
- package/dist/api-handler.cjs.map +0 -1
- package/dist/api-handler.js.map +0 -1
- package/dist/bootstrap-FUAPY2OF.cjs +0 -32
- package/dist/bootstrap-FUAPY2OF.cjs.map +0 -1
- package/dist/bootstrap-OXNVM7FP.js +0 -7
- package/dist/bootstrap-OXNVM7FP.js.map +0 -1
- package/dist/chunk-2HFJUUFZ.js +0 -250
- package/dist/chunk-2HFJUUFZ.js.map +0 -1
- package/dist/chunk-3AKCVYDB.js +0 -162
- package/dist/chunk-3AKCVYDB.js.map +0 -1
- package/dist/chunk-3KTWGODI.cjs +0 -178
- package/dist/chunk-3KTWGODI.cjs.map +0 -1
- package/dist/chunk-3YELQL7Z.cjs +0 -4
- package/dist/chunk-3YELQL7Z.cjs.map +0 -1
- package/dist/chunk-4CV4JOE5.js +0 -24
- package/dist/chunk-4CV4JOE5.js.map +0 -1
- package/dist/chunk-4OCMVGEY.cjs +0 -173
- package/dist/chunk-4OCMVGEY.cjs.map +0 -1
- package/dist/chunk-4PWRCMTQ.cjs +0 -15
- package/dist/chunk-4PWRCMTQ.cjs.map +0 -1
- package/dist/chunk-53NYVYVX.js +0 -3243
- package/dist/chunk-53NYVYVX.js.map +0 -1
- package/dist/chunk-5GFQPHGT.cjs +0 -156
- package/dist/chunk-5GFQPHGT.cjs.map +0 -1
- package/dist/chunk-5RPRLTTN.js +0 -861
- package/dist/chunk-5RPRLTTN.js.map +0 -1
- package/dist/chunk-74YSDAWE.cjs +0 -2749
- package/dist/chunk-74YSDAWE.cjs.map +0 -1
- package/dist/chunk-7OGPN7MP.js +0 -352
- package/dist/chunk-7OGPN7MP.js.map +0 -1
- package/dist/chunk-7OS7TX2Q.cjs +0 -495
- package/dist/chunk-7OS7TX2Q.cjs.map +0 -1
- package/dist/chunk-ADLJSJSN.cjs +0 -13
- package/dist/chunk-ADLJSJSN.cjs.map +0 -1
- package/dist/chunk-B6X3LN25.cjs +0 -6486
- package/dist/chunk-B6X3LN25.cjs.map +0 -1
- package/dist/chunk-BYBMTIMT.js +0 -419
- package/dist/chunk-BYBMTIMT.js.map +0 -1
- package/dist/chunk-CF7OL6HR.js +0 -355
- package/dist/chunk-CF7OL6HR.js.map +0 -1
- package/dist/chunk-CJX74IYK.js +0 -489
- package/dist/chunk-CJX74IYK.js.map +0 -1
- package/dist/chunk-CKVOU6MX.cjs +0 -52
- package/dist/chunk-CKVOU6MX.cjs.map +0 -1
- package/dist/chunk-CZLDE2OZ.cjs +0 -28
- package/dist/chunk-CZLDE2OZ.cjs.map +0 -1
- package/dist/chunk-DPA3KWPY.cjs +0 -205
- package/dist/chunk-DPA3KWPY.cjs.map +0 -1
- package/dist/chunk-EEJUFDMF.cjs +0 -424
- package/dist/chunk-EEJUFDMF.cjs.map +0 -1
- package/dist/chunk-FIAMXNTH.js +0 -220
- package/dist/chunk-FIAMXNTH.js.map +0 -1
- package/dist/chunk-GAOXD3XT.js +0 -175
- package/dist/chunk-GAOXD3XT.js.map +0 -1
- package/dist/chunk-GTGRLD4Y.js +0 -3
- package/dist/chunk-GTGRLD4Y.js.map +0 -1
- package/dist/chunk-GUUB5EAG.cjs +0 -223
- package/dist/chunk-GUUB5EAG.cjs.map +0 -1
- package/dist/chunk-GXFOGU7N.cjs +0 -359
- package/dist/chunk-GXFOGU7N.cjs.map +0 -1
- package/dist/chunk-GZS4LMR7.js +0 -422
- package/dist/chunk-GZS4LMR7.js.map +0 -1
- package/dist/chunk-HY6B7B5A.js +0 -150
- package/dist/chunk-HY6B7B5A.js.map +0 -1
- package/dist/chunk-HZOMOK5Y.js +0 -2728
- package/dist/chunk-HZOMOK5Y.js.map +0 -1
- package/dist/chunk-IDVRRRAK.cjs +0 -824
- package/dist/chunk-IDVRRRAK.cjs.map +0 -1
- package/dist/chunk-KC2GDBLS.cjs +0 -84
- package/dist/chunk-KC2GDBLS.cjs.map +0 -1
- package/dist/chunk-L4EZKIEX.js +0 -185
- package/dist/chunk-L4EZKIEX.js.map +0 -1
- package/dist/chunk-LNTFRAHF.cjs +0 -473
- package/dist/chunk-LNTFRAHF.cjs.map +0 -1
- package/dist/chunk-MTIRYI7F.cjs +0 -4
- package/dist/chunk-MTIRYI7F.cjs.map +0 -1
- package/dist/chunk-N4GN6Q3V.cjs +0 -869
- package/dist/chunk-N4GN6Q3V.cjs.map +0 -1
- package/dist/chunk-N4H37VN4.cjs +0 -259
- package/dist/chunk-N4H37VN4.cjs.map +0 -1
- package/dist/chunk-N5QSHUA6.js +0 -1135
- package/dist/chunk-N5QSHUA6.js.map +0 -1
- package/dist/chunk-NKPKR5BW.cjs +0 -188
- package/dist/chunk-NKPKR5BW.cjs.map +0 -1
- package/dist/chunk-OIRG6ZRV.cjs +0 -1073
- package/dist/chunk-OIRG6ZRV.cjs.map +0 -1
- package/dist/chunk-OJ2AM75W.cjs +0 -253
- package/dist/chunk-OJ2AM75W.cjs.map +0 -1
- package/dist/chunk-OLV7K22H.js +0 -6457
- package/dist/chunk-OLV7K22H.js.map +0 -1
- package/dist/chunk-OX6GOIPH.js +0 -516
- package/dist/chunk-OX6GOIPH.js.map +0 -1
- package/dist/chunk-P2YW545G.js +0 -11
- package/dist/chunk-P2YW545G.js.map +0 -1
- package/dist/chunk-PHJRNPHY.cjs +0 -3291
- package/dist/chunk-PHJRNPHY.cjs.map +0 -1
- package/dist/chunk-Q72BOAPK.js +0 -817
- package/dist/chunk-Q72BOAPK.js.map +0 -1
- package/dist/chunk-QU2RFFH4.js +0 -3
- package/dist/chunk-QU2RFFH4.js.map +0 -1
- package/dist/chunk-RP7VZUEL.js +0 -49
- package/dist/chunk-RP7VZUEL.js.map +0 -1
- package/dist/chunk-SHTTJMLT.cjs +0 -361
- package/dist/chunk-SHTTJMLT.cjs.map +0 -1
- package/dist/chunk-SX76DNOO.js +0 -103
- package/dist/chunk-SX76DNOO.js.map +0 -1
- package/dist/chunk-THBQG64D.cjs +0 -425
- package/dist/chunk-THBQG64D.cjs.map +0 -1
- package/dist/chunk-TQG7G7YI.cjs +0 -526
- package/dist/chunk-TQG7G7YI.cjs.map +0 -1
- package/dist/chunk-U3VVLYXG.cjs +0 -189
- package/dist/chunk-U3VVLYXG.cjs.map +0 -1
- package/dist/chunk-UUDTPZX6.js +0 -193
- package/dist/chunk-UUDTPZX6.js.map +0 -1
- package/dist/chunk-V5AWATUP.js +0 -1059
- package/dist/chunk-V5AWATUP.js.map +0 -1
- package/dist/chunk-VAXLFZCV.cjs +0 -110
- package/dist/chunk-VAXLFZCV.cjs.map +0 -1
- package/dist/chunk-VKREAIBA.cjs +0 -1139
- package/dist/chunk-VKREAIBA.cjs.map +0 -1
- package/dist/chunk-WDTTHKDS.js +0 -458
- package/dist/chunk-WDTTHKDS.js.map +0 -1
- package/dist/chunk-WXVB364T.js +0 -218
- package/dist/chunk-WXVB364T.js.map +0 -1
- package/dist/chunk-X4BPPD6K.js +0 -181
- package/dist/chunk-X4BPPD6K.js.map +0 -1
- package/dist/chunk-XEB7PH2E.js +0 -81
- package/dist/chunk-XEB7PH2E.js.map +0 -1
- package/dist/chunk-YT7HXXVN.js +0 -13
- package/dist/chunk-YT7HXXVN.js.map +0 -1
- package/dist/cli/index.cjs.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/client.cjs.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/drizzle/index.cjs.map +0 -1
- package/dist/drizzle/index.js.map +0 -1
- package/dist/fields/index.cjs.map +0 -1
- package/dist/fields/index.js.map +0 -1
- package/dist/graphql/index.cjs.map +0 -1
- package/dist/graphql/index.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/integration.cjs.map +0 -1
- package/dist/integration.js.map +0 -1
- package/dist/media-7WDX4BDJ.js +0 -4
- package/dist/media-7WDX4BDJ.js.map +0 -1
- package/dist/media-TUSLVRQ6.cjs +0 -17
- package/dist/media-TUSLVRQ6.cjs.map +0 -1
- package/dist/mongo-auth-adapter-GT4S7SCU.cjs +0 -17
- package/dist/mongo-auth-adapter-GT4S7SCU.cjs.map +0 -1
- package/dist/mongo-auth-adapter-M7VV4LNB.js +0 -4
- package/dist/mongo-auth-adapter-M7VV4LNB.js.map +0 -1
- package/dist/mongodb/index.cjs.map +0 -1
- package/dist/mongodb/index.js.map +0 -1
- package/dist/postgres-auth-adapter-AFAPISH7.js +0 -5
- package/dist/postgres-auth-adapter-AFAPISH7.js.map +0 -1
- package/dist/postgres-auth-adapter-SFDTLONT.cjs +0 -14
- package/dist/postgres-auth-adapter-SFDTLONT.cjs.map +0 -1
- package/dist/redis-adapter-UQX4EE3B.cjs +0 -13
- package/dist/redis-adapter-UQX4EE3B.cjs.map +0 -1
- package/dist/redis-adapter-XALOGWY3.js +0 -4
- package/dist/redis-adapter-XALOGWY3.js.map +0 -1
- package/dist/rest/index.cjs.map +0 -1
- package/dist/rest/index.js.map +0 -1
- package/dist/schema-6QL3USNB.cjs +0 -67
- package/dist/schema-6QL3USNB.cjs.map +0 -1
- package/dist/schema-FNNWEAAW.js +0 -6
- package/dist/schema-FNNWEAAW.js.map +0 -1
- package/dist/sqlite-adapter-AQB5TCGV.cjs +0 -13
- package/dist/sqlite-adapter-AQB5TCGV.cjs.map +0 -1
- package/dist/sqlite-adapter-N5H6IM2X.js +0 -4
- package/dist/sqlite-adapter-N5H6IM2X.js.map +0 -1
- package/dist/templates/index.cjs.map +0 -1
- package/dist/templates/index.js.map +0 -1
- package/dist/trpc/index.cjs.map +0 -1
- package/dist/trpc/index.js.map +0 -1
- package/dist/ws/index.cjs.map +0 -1
- package/dist/ws/index.js.map +0 -1
package/dist/chunk-FIAMXNTH.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import { generateHTML } from '@tiptap/html';
|
|
2
|
-
import StarterKit from '@tiptap/starter-kit';
|
|
3
|
-
import Link from '@tiptap/extension-link';
|
|
4
|
-
import Image from '@tiptap/extension-image';
|
|
5
|
-
import TextAlign from '@tiptap/extension-text-align';
|
|
6
|
-
import Underline from '@tiptap/extension-underline';
|
|
7
|
-
import Highlight from '@tiptap/extension-highlight';
|
|
8
|
-
import TaskList from '@tiptap/extension-task-list';
|
|
9
|
-
import TaskItem from '@tiptap/extension-task-item';
|
|
10
|
-
import { TextStyle } from '@tiptap/extension-text-style';
|
|
11
|
-
import Color from '@tiptap/extension-color';
|
|
12
|
-
|
|
13
|
-
// src/fields/types.ts
|
|
14
|
-
function isTextField(field) {
|
|
15
|
-
return field.type === "text";
|
|
16
|
-
}
|
|
17
|
-
function isNumberField(field) {
|
|
18
|
-
return field.type === "number";
|
|
19
|
-
}
|
|
20
|
-
function isRelationshipField(field) {
|
|
21
|
-
return field.type === "relationship";
|
|
22
|
-
}
|
|
23
|
-
function isArrayField(field) {
|
|
24
|
-
return field.type === "array";
|
|
25
|
-
}
|
|
26
|
-
function isGroupField(field) {
|
|
27
|
-
return field.type === "group";
|
|
28
|
-
}
|
|
29
|
-
function isBlocksField(field) {
|
|
30
|
-
return field.type === "blocks";
|
|
31
|
-
}
|
|
32
|
-
function isUploadField(field) {
|
|
33
|
-
return field.type === "upload";
|
|
34
|
-
}
|
|
35
|
-
function isImageField(field) {
|
|
36
|
-
return field.type === "image";
|
|
37
|
-
}
|
|
38
|
-
function isRichTextField(field) {
|
|
39
|
-
return field.type === "richtext";
|
|
40
|
-
}
|
|
41
|
-
function isSelectField(field) {
|
|
42
|
-
return field.type === "select";
|
|
43
|
-
}
|
|
44
|
-
function isLayoutField(field) {
|
|
45
|
-
return field.type === "row" || field.type === "collapsible" || field.type === "tabs";
|
|
46
|
-
}
|
|
47
|
-
var PRIMITIVE_FIELD_TYPES = [
|
|
48
|
-
"text",
|
|
49
|
-
"number",
|
|
50
|
-
"checkbox",
|
|
51
|
-
"date",
|
|
52
|
-
"email",
|
|
53
|
-
"password",
|
|
54
|
-
"textarea",
|
|
55
|
-
"select",
|
|
56
|
-
"radio",
|
|
57
|
-
"color"
|
|
58
|
-
];
|
|
59
|
-
var COMPLEX_FIELD_TYPES = [
|
|
60
|
-
"richtext",
|
|
61
|
-
"json",
|
|
62
|
-
"code",
|
|
63
|
-
"upload",
|
|
64
|
-
"image",
|
|
65
|
-
"markdown"
|
|
66
|
-
];
|
|
67
|
-
var RELATIONAL_FIELD_TYPES = [
|
|
68
|
-
"relationship",
|
|
69
|
-
"array",
|
|
70
|
-
"group",
|
|
71
|
-
"blocks"
|
|
72
|
-
];
|
|
73
|
-
var LAYOUT_FIELD_TYPES = ["row", "collapsible", "tabs"];
|
|
74
|
-
var ALL_FIELD_TYPES = [
|
|
75
|
-
...PRIMITIVE_FIELD_TYPES,
|
|
76
|
-
...COMPLEX_FIELD_TYPES,
|
|
77
|
-
...RELATIONAL_FIELD_TYPES,
|
|
78
|
-
...LAYOUT_FIELD_TYPES
|
|
79
|
-
];
|
|
80
|
-
function createRelationshipFieldConfig(name, relationTo, options) {
|
|
81
|
-
return {
|
|
82
|
-
name,
|
|
83
|
-
type: "relationship",
|
|
84
|
-
relationTo,
|
|
85
|
-
...options,
|
|
86
|
-
required: options?.required ?? false
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
var richTextStyles = `
|
|
90
|
-
.kyro-richtext {
|
|
91
|
-
color: inherit;
|
|
92
|
-
line-height: 1.7;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.kyro-richtext > *:first-child {
|
|
96
|
-
margin-top: 0;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.kyro-richtext > *:last-child {
|
|
100
|
-
margin-bottom: 0;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.kyro-richtext p,
|
|
104
|
-
.kyro-richtext ul,
|
|
105
|
-
.kyro-richtext ol,
|
|
106
|
-
.kyro-richtext blockquote,
|
|
107
|
-
.kyro-richtext pre {
|
|
108
|
-
margin: 0 0 1rem;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.kyro-richtext h1,
|
|
112
|
-
.kyro-richtext h2,
|
|
113
|
-
.kyro-richtext h3,
|
|
114
|
-
.kyro-richtext h4,
|
|
115
|
-
.kyro-richtext h5,
|
|
116
|
-
.kyro-richtext h6 {
|
|
117
|
-
margin: 0 0 0.75rem;
|
|
118
|
-
line-height: 1.2;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.kyro-richtext ul,
|
|
122
|
-
.kyro-richtext ol {
|
|
123
|
-
padding-left: 1.5rem;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.kyro-richtext blockquote {
|
|
127
|
-
border-left: 4px solid rgba(148, 163, 184, 0.5);
|
|
128
|
-
margin-left: 0;
|
|
129
|
-
padding-left: 1rem;
|
|
130
|
-
font-style: italic;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.kyro-richtext pre {
|
|
134
|
-
overflow-x: auto;
|
|
135
|
-
border-radius: 0.75rem;
|
|
136
|
-
background: rgba(15, 23, 42, 0.92);
|
|
137
|
-
color: #f8fafc;
|
|
138
|
-
padding: 1rem;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
.kyro-richtext code {
|
|
142
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
.kyro-richtext img {
|
|
146
|
-
display: block;
|
|
147
|
-
max-width: 100%;
|
|
148
|
-
height: auto;
|
|
149
|
-
border-radius: 0.75rem;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.kyro-richtext ul[data-type="taskList"] {
|
|
153
|
-
list-style: none;
|
|
154
|
-
padding: 0;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
.kyro-richtext li[data-type="taskItem"] {
|
|
158
|
-
display: flex;
|
|
159
|
-
align-items: flex-start;
|
|
160
|
-
gap: 0.5rem;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
.kyro-richtext li[data-type="taskItem"] > label {
|
|
164
|
-
user-select: none;
|
|
165
|
-
pointer-events: none;
|
|
166
|
-
margin-top: 0.2rem;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
.kyro-richtext li[data-type="taskItem"] > div {
|
|
170
|
-
flex: 1;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.kyro-richtext mark {
|
|
174
|
-
background-color: #fef08a;
|
|
175
|
-
border-radius: 0.25rem;
|
|
176
|
-
padding: 0.125rem 0.25rem;
|
|
177
|
-
}
|
|
178
|
-
`.trim();
|
|
179
|
-
var extensions = [
|
|
180
|
-
StarterKit,
|
|
181
|
-
Link.configure({
|
|
182
|
-
openOnClick: false
|
|
183
|
-
}),
|
|
184
|
-
Image,
|
|
185
|
-
TextAlign.configure({
|
|
186
|
-
types: ["heading", "paragraph"]
|
|
187
|
-
}),
|
|
188
|
-
Underline,
|
|
189
|
-
Highlight.configure({
|
|
190
|
-
multicolor: true
|
|
191
|
-
}),
|
|
192
|
-
TaskList,
|
|
193
|
-
TaskItem.configure({
|
|
194
|
-
nested: true
|
|
195
|
-
}),
|
|
196
|
-
TextStyle,
|
|
197
|
-
Color
|
|
198
|
-
];
|
|
199
|
-
function normalizeRichTextValue(value) {
|
|
200
|
-
if (typeof value === "object" && value !== null) {
|
|
201
|
-
return value;
|
|
202
|
-
}
|
|
203
|
-
return {};
|
|
204
|
-
}
|
|
205
|
-
function renderRichText(value) {
|
|
206
|
-
if (typeof value !== "object" || value === null) {
|
|
207
|
-
return "";
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const html = generateHTML(value, extensions);
|
|
211
|
-
return `<div class="kyro-richtext">${html}</div>`;
|
|
212
|
-
} catch (error) {
|
|
213
|
-
console.error("Failed to render rich text:", error);
|
|
214
|
-
return "";
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
export { ALL_FIELD_TYPES, COMPLEX_FIELD_TYPES, LAYOUT_FIELD_TYPES, PRIMITIVE_FIELD_TYPES, RELATIONAL_FIELD_TYPES, createRelationshipFieldConfig, isArrayField, isBlocksField, isGroupField, isImageField, isLayoutField, isNumberField, isRelationshipField, isRichTextField, isSelectField, isTextField, isUploadField, normalizeRichTextValue, renderRichText, richTextStyles };
|
|
219
|
-
//# sourceMappingURL=chunk-FIAMXNTH.js.map
|
|
220
|
-
//# sourceMappingURL=chunk-FIAMXNTH.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fields/types.ts","../src/fields/richtext.ts"],"names":[],"mappings":"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","file":"chunk-FIAMXNTH.js","sourcesContent":["\n\n// ============================================================================\n// Base Field Interface\n// ============================================================================\n\n/**\n * Serializable condition for conditional field visibility.\n * Unlike function conditions, these survive JSON serialization\n * and can be used in admin configs that are built at compile time.\n */\nexport interface DeclarativeCondition {\n /** The field name to evaluate (resolved from root form data) */\n field: string;\n /** Show the field when the target field equals this value */\n equals?: string | number | boolean;\n /** Show the field when the target field does NOT equal this value */\n notEquals?: string | number | boolean;\n /** Show the field when the target field's value is one of these */\n in?: (string | number | boolean)[];\n}\n\nexport interface FieldAdmin {\n description?: string;\n placeholder?: string;\n readOnly?: boolean | ((\n data: Record<string, unknown>,\n siblingData: Record<string, unknown>,\n ) => boolean);\n hidden?: boolean | ((\n data: Record<string, unknown>,\n siblingData: Record<string, unknown>,\n ) => boolean);\n width?: string;\n position?: \"sidebar\" | \"main\";\n autoGenerate?: string;\n action?: string;\n method?: string;\n inline?: boolean;\n pickerMode?: \"drawer\" | \"dropdown\";\n condition?:\n | ((\n data: Record<string, unknown>,\n siblingData: Record<string, unknown>,\n ) => boolean)\n | DeclarativeCondition;\n}\n\nexport interface BaseField {\n name: string;\n label?: string;\n required?: boolean;\n unique?: boolean;\n indexed?: boolean;\n defaultValue?: any;\n admin?: FieldAdmin;\n validate?: (\n value: any,\n options: ValidateOptions,\n ) => string | true | Promise<string | true>;\n hooks?: {\n beforeValidate?: Hook[];\n beforeChange?: Hook[];\n afterChange?: Hook[];\n afterRead?: Hook[];\n };\n}\n\nexport interface ValidateOptions {\n data?: Record<string, any>;\n siblingData?: Record<string, any>;\n user?: unknown;\n operation?: string;\n required?: boolean;\n}\n\nexport type Hook = (args: any) => Promise<any> | any;\n\n// ============================================================================\n// Primitive Fields\n// ============================================================================\n\nexport type TextFieldVariant = \"text\" | \"email\" | \"password\" | \"url\" | \"id\";\n\nexport interface TextField extends BaseField {\n type: \"text\";\n variant?: TextFieldVariant;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n hasMany?: boolean;\n localized?: boolean;\n}\n\nexport interface NumberField extends BaseField {\n type: \"number\";\n min?: number;\n max?: number;\n step?: number;\n integer?: boolean;\n hasMany?: boolean;\n}\n\nexport interface CheckboxField extends BaseField {\n type: \"checkbox\";\n}\n\nexport interface DateField extends BaseField {\n type: \"date\";\n minDate?: string;\n maxDate?: string;\n time?: boolean;\n}\n\nexport interface EmailField extends BaseField {\n type: \"email\";\n}\n\nexport interface PasswordField extends BaseField {\n type: \"password\";\n}\n\nexport interface TextareaField extends BaseField {\n type: \"textarea\";\n minLength?: number;\n maxLength?: number;\n rows?: number;\n localized?: boolean;\n}\n\nexport interface SelectField extends BaseField {\n type: \"select\";\n options?: Array<{ label: string; value: string }>;\n dynamicOptions?: string;\n hasMany?: boolean;\n defaultValue?: string | string[];\n}\n\nexport interface RadioField extends BaseField {\n type: \"radio\";\n options: Array<{ label: string; value: string }>;\n defaultValue?: string;\n}\n\nexport interface ColorField extends BaseField {\n type: \"color\";\n format?: \"hex\" | \"rgb\" | \"hsl\";\n defaultValue?: string;\n}\n\nexport interface ImageField extends BaseField {\n type: \"image\";\n minCount?: number;\n maxCount?: number;\n allowedTypes?: string[];\n maxSize?: number;\n}\n\n// ============================================================================\n// Complex Fields\n// ============================================================================\n\nexport type RichTextBlock = Record<string, any>; // TipTap JSONContent\n\nexport interface RichTextField extends BaseField {\n type: \"richtext\";\n defaultValue?: Record<string, any>;\n localized?: boolean;\n}\n\nexport interface JSONField extends BaseField {\n type: \"json\";\n defaultValue?: Record<string, any>;\n}\n\nexport interface CodeField extends BaseField {\n type: \"code\";\n language?: string;\n defaultValue?: string;\n}\n\nexport interface UploadField extends BaseField {\n type: \"upload\";\n relationTo: string;\n hasMany?: boolean;\n maxDepth?: number;\n defaultValue?: string;\n}\n\nexport interface MarkdownField extends BaseField {\n type: \"markdown\";\n localized?: boolean;\n defaultValue?: string;\n}\n\n// ============================================================================\n// Relational Fields\n// ============================================================================\n\nexport interface RelationshipField extends BaseField {\n type: \"relationship\";\n relationTo: string | string[];\n hasMany?: boolean;\n maxDepth?: number;\n filterOptions?: (args: { data: any; user: any }) => Record<string, any>;\n defaultValue?: string | string[];\n}\n\nexport interface ArrayField extends BaseField {\n type: \"array\";\n fields: Field[];\n minRows?: number;\n maxRows?: number;\n labels?: { singular?: string; plural?: string };\n defaultValue?: Record<string, any>[];\n}\n\nexport interface ListField extends BaseField {\n type: \"list\";\n defaultValue?: string[];\n}\n\nexport interface GroupField extends BaseField {\n type: \"group\";\n fields: Field[];\n defaultValue?: Record<string, any>;\n}\n\nexport interface BlockImage {\n url: string;\n alt?: string;\n}\n\nexport interface BlockAdmin {\n group?: string;\n description?: string;\n images?: {\n icon?: BlockImage | string;\n thumbnail?: BlockImage | string;\n };\n}\n\nexport interface Block {\n slug: string;\n label: string;\n fields: Field[];\n imageURL?: string;\n admin?: BlockAdmin;\n}\n\nexport interface BlocksField extends BaseField {\n type: \"blocks\";\n blocks?: Block[];\n minRows?: number;\n maxRows?: number;\n defaultValue?: Array<{ blockType: string; [key: string]: any }>;\n}\n\nexport interface RowField extends Omit<BaseField, \"name\"> {\n type: \"row\";\n fields: Field[];\n name?: string;\n}\n\nexport interface CollapsibleField extends Omit<BaseField, \"name\"> {\n type: \"collapsible\";\n fields: Field[];\n label: string;\n name?: string;\n}\n\nexport interface TabsField extends Omit<BaseField, \"name\"> {\n type: \"tabs\";\n tabs: Array<{\n label: string;\n fields: Field[];\n name?: string;\n }>;\n name?: string;\n}\n\nexport interface ButtonField extends BaseField {\n type: \"button\";\n label: string;\n action?: string;\n method?: string;\n inline?: boolean;\n}\n\nexport interface ActionField extends BaseField {\n type: \"action\";\n label: string;\n action?: string;\n method?: string;\n inline?: boolean;\n}\n\nexport interface SecretField extends BaseField {\n type: \"secret\";\n}\n\n// ============================================================================\n// Union Type\n// ============================================================================\n\nexport type Field =\n | TextField\n | NumberField\n | CheckboxField\n | DateField\n | EmailField\n | PasswordField\n | TextareaField\n | SelectField\n | RadioField\n | ColorField\n | ImageField\n | RichTextField\n | JSONField\n | CodeField\n | UploadField\n | MarkdownField\n | RelationshipField\n | ArrayField\n | ListField\n | GroupField\n | BlocksField\n | RowField\n | CollapsibleField\n | TabsField\n | ButtonField\n | ActionField\n | SecretField;\n\nexport type FieldType = Field[\"type\"];\n\n// ============================================================================\n// Field Type Guards\n// ============================================================================\n\nexport function isTextField(field: Field): field is TextField {\n return field.type === \"text\";\n}\n\nexport function isNumberField(field: Field): field is NumberField {\n return field.type === \"number\";\n}\n\nexport function isRelationshipField(field: Field): field is RelationshipField {\n return field.type === \"relationship\";\n}\n\nexport function isArrayField(field: Field): field is ArrayField {\n return field.type === \"array\";\n}\n\nexport function isGroupField(field: Field): field is GroupField {\n return field.type === \"group\";\n}\n\nexport function isBlocksField(field: Field): field is BlocksField {\n return field.type === \"blocks\";\n}\n\nexport function isUploadField(field: Field): field is UploadField {\n return field.type === \"upload\";\n}\n\nexport function isImageField(field: Field): field is ImageField {\n return field.type === \"image\";\n}\n\nexport function isRichTextField(field: Field): field is RichTextField {\n return field.type === \"richtext\";\n}\n\nexport function isSelectField(field: Field): field is SelectField {\n return field.type === \"select\";\n}\n\nexport function isLayoutField(\n field: Field,\n): field is RowField | CollapsibleField | TabsField {\n return (\n field.type === \"row\" ||\n field.type === \"collapsible\" ||\n field.type === \"tabs\"\n );\n}\n\n// ============================================================================\n// Field Type List\n// ============================================================================\n\nexport const PRIMITIVE_FIELD_TYPES = [\n \"text\",\n \"number\",\n \"checkbox\",\n \"date\",\n \"email\",\n \"password\",\n \"textarea\",\n \"select\",\n \"radio\",\n \"color\",\n] as const;\n\nexport const COMPLEX_FIELD_TYPES = [\n \"richtext\",\n \"json\",\n \"code\",\n \"upload\",\n \"image\",\n \"markdown\",\n] as const;\n\nexport const RELATIONAL_FIELD_TYPES = [\n \"relationship\",\n \"array\",\n \"group\",\n \"blocks\",\n] as const;\n\nexport const LAYOUT_FIELD_TYPES = [\"row\", \"collapsible\", \"tabs\"] as const;\n\nexport const ALL_FIELD_TYPES = [\n ...PRIMITIVE_FIELD_TYPES,\n ...COMPLEX_FIELD_TYPES,\n ...RELATIONAL_FIELD_TYPES,\n ...LAYOUT_FIELD_TYPES,\n] as const;\n\n// ============================================================================\n// Field Factory Functions\n// ============================================================================\n\nexport function createRelationshipFieldConfig(\n name: string,\n relationTo: string | string[],\n options?: Partial<Omit<RelationshipField, \"type\" | \"name\" | \"relationTo\">>,\n): RelationshipField {\n return {\n name,\n type: \"relationship\",\n relationTo,\n ...options,\n required: options?.required ?? false,\n };\n}\n","import { generateHTML } from \"@tiptap/html\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport Link from \"@tiptap/extension-link\";\nimport Image from \"@tiptap/extension-image\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Underline from \"@tiptap/extension-underline\";\nimport Highlight from \"@tiptap/extension-highlight\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport { TextStyle } from \"@tiptap/extension-text-style\";\nimport Color from \"@tiptap/extension-color\";\n\nexport const richTextStyles = `\n.kyro-richtext {\n color: inherit;\n line-height: 1.7;\n}\n\n.kyro-richtext > *:first-child {\n margin-top: 0;\n}\n\n.kyro-richtext > *:last-child {\n margin-bottom: 0;\n}\n\n.kyro-richtext p,\n.kyro-richtext ul,\n.kyro-richtext ol,\n.kyro-richtext blockquote,\n.kyro-richtext pre {\n margin: 0 0 1rem;\n}\n\n.kyro-richtext h1,\n.kyro-richtext h2,\n.kyro-richtext h3,\n.kyro-richtext h4,\n.kyro-richtext h5,\n.kyro-richtext h6 {\n margin: 0 0 0.75rem;\n line-height: 1.2;\n}\n\n.kyro-richtext ul,\n.kyro-richtext ol {\n padding-left: 1.5rem;\n}\n\n.kyro-richtext blockquote {\n border-left: 4px solid rgba(148, 163, 184, 0.5);\n margin-left: 0;\n padding-left: 1rem;\n font-style: italic;\n}\n\n.kyro-richtext pre {\n overflow-x: auto;\n border-radius: 0.75rem;\n background: rgba(15, 23, 42, 0.92);\n color: #f8fafc;\n padding: 1rem;\n}\n\n.kyro-richtext code {\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n\n.kyro-richtext img {\n display: block;\n max-width: 100%;\n height: auto;\n border-radius: 0.75rem;\n}\n\n.kyro-richtext ul[data-type=\"taskList\"] {\n list-style: none;\n padding: 0;\n}\n\n.kyro-richtext li[data-type=\"taskItem\"] {\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n}\n\n.kyro-richtext li[data-type=\"taskItem\"] > label {\n user-select: none;\n pointer-events: none;\n margin-top: 0.2rem;\n}\n\n.kyro-richtext li[data-type=\"taskItem\"] > div {\n flex: 1;\n}\n\n.kyro-richtext mark {\n background-color: #fef08a;\n border-radius: 0.25rem;\n padding: 0.125rem 0.25rem;\n}\n`.trim();\n\nconst extensions = [\n StarterKit,\n Link.configure({\n openOnClick: false,\n }),\n Image,\n TextAlign.configure({\n types: [\"heading\", \"paragraph\"],\n }),\n Underline,\n Highlight.configure({\n multicolor: true,\n }),\n TaskList,\n TaskItem.configure({\n nested: true,\n }),\n TextStyle,\n Color,\n];\n\nexport function normalizeRichTextValue<T>(value: T): T {\n // TipTap JSON is already standard JSON, so we just ensure it's an object.\n if (typeof value === \"object\" && value !== null) {\n return value;\n }\n return {} as T;\n}\n\nexport function renderRichText(value: unknown): string {\n if (typeof value !== \"object\" || value === null) {\n return \"\";\n }\n \n try {\n const html = generateHTML(value as Record<string, any>, extensions);\n return `<div class=\"kyro-richtext\">${html}</div>`;\n } catch (error) {\n console.error(\"Failed to render rich text:\", error);\n return \"\";\n }\n}\n"]}
|
package/dist/chunk-GAOXD3XT.js
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
// src/templates/settings/storage.ts
|
|
2
|
-
var localFields = [
|
|
3
|
-
{ name: "uploadDir", type: "text", label: "Upload Directory", defaultValue: "./public/uploads" },
|
|
4
|
-
{ name: "baseUrl", type: "text", label: "Base URL", defaultValue: "/uploads" }
|
|
5
|
-
];
|
|
6
|
-
var awsFields = [
|
|
7
|
-
{ name: "bucket", type: "text", label: "Bucket Name", required: true },
|
|
8
|
-
{ name: "region", type: "text", label: "Region", defaultValue: "us-east-1", admin: { placeholder: "us-east-1" } },
|
|
9
|
-
{ name: "accessKeyId", type: "text", label: "Access Key ID", required: true },
|
|
10
|
-
{ name: "secretAccessKey", type: "password", label: "Secret Access Key", required: true },
|
|
11
|
-
{ name: "endpoint", type: "text", label: "Endpoint URL", admin: { placeholder: "https://s3.custom.com" } },
|
|
12
|
-
{ name: "cdnUrl", type: "text", label: "CDN URL", admin: { placeholder: "https://cdn.example.com" } },
|
|
13
|
-
{ name: "prefix", type: "text", label: "Path Prefix", admin: { placeholder: "uploads" } }
|
|
14
|
-
];
|
|
15
|
-
var r2Fields = [
|
|
16
|
-
{ name: "accountId", type: "text", label: "Account ID", required: true, admin: { placeholder: "Your Cloudflare Account ID" } },
|
|
17
|
-
{ name: "accessKeyId", type: "text", label: "Access Key ID", required: true },
|
|
18
|
-
{ name: "secretAccessKey", type: "password", label: "Secret Access Key", required: true },
|
|
19
|
-
{ name: "bucket", type: "text", label: "Bucket Name", required: true },
|
|
20
|
-
{
|
|
21
|
-
name: "publicDevUrl",
|
|
22
|
-
type: "text",
|
|
23
|
-
label: "Public Dev URL ID",
|
|
24
|
-
admin: {
|
|
25
|
-
placeholder: "pub-xxxxxxxxxxxxxxxx",
|
|
26
|
-
description: "Enter ONLY the ID (e.g., pub-b8d8c4cc8bcf4d868ddd95efc1b305aa). Do NOT include https:// or the full URL. Found in R2 Dashboard \u2192 Public Dev URL."
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
{ name: "cdnUrl", type: "text", label: "Custom CDN URL", admin: { placeholder: "https://assets.example.com (optional)" } },
|
|
30
|
-
{ name: "prefix", type: "text", label: "Path Prefix", admin: { placeholder: "uploads (optional)", description: "Optional prefix for all object keys. Do not use '/' as prefix." } }
|
|
31
|
-
];
|
|
32
|
-
var cloudinaryFields = [
|
|
33
|
-
{ name: "cloudName", type: "text", label: "Cloud Name", required: true },
|
|
34
|
-
{ name: "apiKey", type: "text", label: "API Key", required: true },
|
|
35
|
-
{ name: "apiSecret", type: "password", label: "API Secret", required: true },
|
|
36
|
-
{ name: "folder", type: "text", label: "Folder", admin: { placeholder: "Optional folder path" } },
|
|
37
|
-
{
|
|
38
|
-
name: "uploadPreset",
|
|
39
|
-
type: "text",
|
|
40
|
-
label: "Upload Preset (optional)",
|
|
41
|
-
admin: { placeholder: "Leave empty for signed uploads", description: "If not set, uploads will be signed with API Secret" }
|
|
42
|
-
}
|
|
43
|
-
];
|
|
44
|
-
var ftpFields = [
|
|
45
|
-
{ name: "host", type: "text", label: "Host", required: true, admin: { placeholder: "ftp.example.com" } },
|
|
46
|
-
{ name: "port", type: "number", label: "Port", defaultValue: 21, admin: { placeholder: "21 for FTP" } },
|
|
47
|
-
{ name: "user", type: "text", label: "Username", required: true },
|
|
48
|
-
{ name: "password", type: "password", label: "Password", required: true },
|
|
49
|
-
{ name: "secure", type: "checkbox", label: "Use TLS/SSL", defaultValue: false, admin: { description: "Enable TLS/SSL for secure connections (FTP only)" } },
|
|
50
|
-
{ name: "baseUrl", type: "text", label: "Base URL", required: true, admin: { placeholder: "https://files.example.com" } },
|
|
51
|
-
{ name: "prefix", type: "text", label: "Path Prefix", admin: { placeholder: "uploads" } }
|
|
52
|
-
];
|
|
53
|
-
var builtInProviders = [
|
|
54
|
-
{ type: "local", displayName: "Local Server", configFields: localFields },
|
|
55
|
-
{ type: "aws", displayName: "S3 Compatible (AWS, Backblaze, Wasabi, etc.)", configFields: awsFields },
|
|
56
|
-
{ type: "r2", displayName: "Cloudflare R2", configFields: r2Fields },
|
|
57
|
-
{ type: "cloudinary", displayName: "Cloudinary", configFields: cloudinaryFields },
|
|
58
|
-
{ type: "ftp", displayName: "FTP", configFields: ftpFields }
|
|
59
|
-
];
|
|
60
|
-
var providerOptions = builtInProviders.map((p) => ({
|
|
61
|
-
label: p.displayName,
|
|
62
|
-
value: p.type
|
|
63
|
-
}));
|
|
64
|
-
var providerGroups = builtInProviders.map((p) => ({
|
|
65
|
-
name: p.type,
|
|
66
|
-
type: "group",
|
|
67
|
-
label: `${p.displayName} Settings`,
|
|
68
|
-
admin: { condition: { field: "provider", equals: p.type } },
|
|
69
|
-
fields: p.configFields
|
|
70
|
-
}));
|
|
71
|
-
var storageSettingsGlobal = {
|
|
72
|
-
slug: "storage-settings",
|
|
73
|
-
label: "Storage Settings",
|
|
74
|
-
admin: { group: "settings" },
|
|
75
|
-
access: { read: () => true, update: () => true },
|
|
76
|
-
fields: [
|
|
77
|
-
{
|
|
78
|
-
name: "provider",
|
|
79
|
-
type: "select",
|
|
80
|
-
label: "Storage Provider",
|
|
81
|
-
defaultValue: "local",
|
|
82
|
-
options: providerOptions
|
|
83
|
-
},
|
|
84
|
-
...providerGroups,
|
|
85
|
-
{
|
|
86
|
-
name: "limits",
|
|
87
|
-
type: "group",
|
|
88
|
-
label: "Upload Limits",
|
|
89
|
-
fields: [
|
|
90
|
-
{
|
|
91
|
-
name: "maxFileSize",
|
|
92
|
-
type: "number",
|
|
93
|
-
label: "Max File Size (bytes)",
|
|
94
|
-
defaultValue: 10485760
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
name: "allowedTypes",
|
|
98
|
-
type: "json",
|
|
99
|
-
label: "Allowed MIME Types",
|
|
100
|
-
defaultValue: ["image/*", "video/*", "audio/*", "application/pdf"]
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: "maxFilesPerUpload",
|
|
104
|
-
type: "number",
|
|
105
|
-
label: "Max Files per Upload",
|
|
106
|
-
defaultValue: 10
|
|
107
|
-
}
|
|
108
|
-
]
|
|
109
|
-
}
|
|
110
|
-
]
|
|
111
|
-
};
|
|
112
|
-
function createStorageSettingsGlobal(registry, isPluginEnabled) {
|
|
113
|
-
const allProviders = registry.getAllAvailable(isPluginEnabled);
|
|
114
|
-
const builtInTypes = new Set(builtInProviders.map((p) => p.type));
|
|
115
|
-
const hasExtras = allProviders.some((p) => !builtInTypes.has(p.type));
|
|
116
|
-
if (!hasExtras) {
|
|
117
|
-
return storageSettingsGlobal;
|
|
118
|
-
}
|
|
119
|
-
const providerOpts = allProviders.map((p) => ({
|
|
120
|
-
label: p.displayName,
|
|
121
|
-
value: p.type
|
|
122
|
-
}));
|
|
123
|
-
const groups = allProviders.map((p) => ({
|
|
124
|
-
name: p.type,
|
|
125
|
-
type: "group",
|
|
126
|
-
label: `${p.displayName} Settings`,
|
|
127
|
-
admin: { condition: { field: "provider", equals: p.type } },
|
|
128
|
-
fields: p.configFields
|
|
129
|
-
}));
|
|
130
|
-
return {
|
|
131
|
-
slug: "storage-settings",
|
|
132
|
-
label: "Storage Settings",
|
|
133
|
-
admin: { group: "settings" },
|
|
134
|
-
access: { read: () => true, update: () => true },
|
|
135
|
-
fields: [
|
|
136
|
-
{
|
|
137
|
-
name: "provider",
|
|
138
|
-
type: "select",
|
|
139
|
-
label: "Storage Provider",
|
|
140
|
-
defaultValue: "local",
|
|
141
|
-
options: providerOpts
|
|
142
|
-
},
|
|
143
|
-
...groups,
|
|
144
|
-
{
|
|
145
|
-
name: "limits",
|
|
146
|
-
type: "group",
|
|
147
|
-
label: "Upload Limits",
|
|
148
|
-
fields: [
|
|
149
|
-
{
|
|
150
|
-
name: "maxFileSize",
|
|
151
|
-
type: "number",
|
|
152
|
-
label: "Max File Size (bytes)",
|
|
153
|
-
defaultValue: 10485760
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
name: "allowedTypes",
|
|
157
|
-
type: "json",
|
|
158
|
-
label: "Allowed MIME Types",
|
|
159
|
-
defaultValue: ["image/*", "video/*", "audio/*", "application/pdf"]
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: "maxFilesPerUpload",
|
|
163
|
-
type: "number",
|
|
164
|
-
label: "Max Files per Upload",
|
|
165
|
-
defaultValue: 10
|
|
166
|
-
}
|
|
167
|
-
]
|
|
168
|
-
}
|
|
169
|
-
]
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
export { createStorageSettingsGlobal, storageSettingsGlobal };
|
|
174
|
-
//# sourceMappingURL=chunk-GAOXD3XT.js.map
|
|
175
|
-
//# sourceMappingURL=chunk-GAOXD3XT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/templates/settings/storage.ts"],"names":[],"mappings":"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","file":"chunk-GAOXD3XT.js","sourcesContent":["import type { GlobalConfig } from \"../../registry/types.js\";\nimport type { Field } from \"../../fields/types.js\";\nimport type { DeclarativeCondition } from \"../../fields/types.js\";\nimport type { StorageProviderRegistry } from \"../../storage/registry.js\";\n\n// ============================================================================\n// Built-in Provider Field Definitions\n// ============================================================================\n// These are defined statically so they are available at build time\n// (for admin config serialization) without requiring a runtime registry.\n\nconst localFields: Field[] = [\n { name: \"uploadDir\", type: \"text\", label: \"Upload Directory\", defaultValue: \"./public/uploads\" },\n { name: \"baseUrl\", type: \"text\", label: \"Base URL\", defaultValue: \"/uploads\" },\n];\n\nconst awsFields: Field[] = [\n { name: \"bucket\", type: \"text\", label: \"Bucket Name\", required: true },\n { name: \"region\", type: \"text\", label: \"Region\", defaultValue: \"us-east-1\", admin: { placeholder: \"us-east-1\" } },\n { name: \"accessKeyId\", type: \"text\", label: \"Access Key ID\", required: true },\n { name: \"secretAccessKey\", type: \"password\", label: \"Secret Access Key\", required: true },\n { name: \"endpoint\", type: \"text\", label: \"Endpoint URL\", admin: { placeholder: \"https://s3.custom.com\" } },\n { name: \"cdnUrl\", type: \"text\", label: \"CDN URL\", admin: { placeholder: \"https://cdn.example.com\" } },\n { name: \"prefix\", type: \"text\", label: \"Path Prefix\", admin: { placeholder: \"uploads\" } },\n];\n\nconst r2Fields: Field[] = [\n { name: \"accountId\", type: \"text\", label: \"Account ID\", required: true, admin: { placeholder: \"Your Cloudflare Account ID\" } },\n { name: \"accessKeyId\", type: \"text\", label: \"Access Key ID\", required: true },\n { name: \"secretAccessKey\", type: \"password\", label: \"Secret Access Key\", required: true },\n { name: \"bucket\", type: \"text\", label: \"Bucket Name\", required: true },\n {\n name: \"publicDevUrl\", type: \"text\", label: \"Public Dev URL ID\",\n admin: {\n placeholder: \"pub-xxxxxxxxxxxxxxxx\",\n description: \"Enter ONLY the ID (e.g., pub-b8d8c4cc8bcf4d868ddd95efc1b305aa). Do NOT include https:// or the full URL. Found in R2 Dashboard → Public Dev URL.\",\n },\n },\n { name: \"cdnUrl\", type: \"text\", label: \"Custom CDN URL\", admin: { placeholder: \"https://assets.example.com (optional)\" } },\n { name: \"prefix\", type: \"text\", label: \"Path Prefix\", admin: { placeholder: \"uploads (optional)\", description: \"Optional prefix for all object keys. Do not use '/' as prefix.\" } },\n];\n\nconst cloudinaryFields: Field[] = [\n { name: \"cloudName\", type: \"text\", label: \"Cloud Name\", required: true },\n { name: \"apiKey\", type: \"text\", label: \"API Key\", required: true },\n { name: \"apiSecret\", type: \"password\", label: \"API Secret\", required: true },\n { name: \"folder\", type: \"text\", label: \"Folder\", admin: { placeholder: \"Optional folder path\" } },\n {\n name: \"uploadPreset\", type: \"text\", label: \"Upload Preset (optional)\",\n admin: { placeholder: \"Leave empty for signed uploads\", description: \"If not set, uploads will be signed with API Secret\" },\n },\n];\n\nconst ftpFields: Field[] = [\n { name: \"host\", type: \"text\", label: \"Host\", required: true, admin: { placeholder: \"ftp.example.com\" } },\n { name: \"port\", type: \"number\", label: \"Port\", defaultValue: 21, admin: { placeholder: \"21 for FTP\" } },\n { name: \"user\", type: \"text\", label: \"Username\", required: true },\n { name: \"password\", type: \"password\", label: \"Password\", required: true },\n { name: \"secure\", type: \"checkbox\", label: \"Use TLS/SSL\", defaultValue: false, admin: { description: \"Enable TLS/SSL for secure connections (FTP only)\" } },\n { name: \"baseUrl\", type: \"text\", label: \"Base URL\", required: true, admin: { placeholder: \"https://files.example.com\" } },\n { name: \"prefix\", type: \"text\", label: \"Path Prefix\", admin: { placeholder: \"uploads\" } },\n];\n\n// All built-in providers and their config field groups\ninterface ProviderDef {\n type: string;\n displayName: string;\n configFields: Field[];\n}\n\nconst builtInProviders: ProviderDef[] = [\n { type: \"local\", displayName: \"Local Server\", configFields: localFields },\n { type: \"aws\", displayName: \"S3 Compatible (AWS, Backblaze, Wasabi, etc.)\", configFields: awsFields },\n { type: \"r2\", displayName: \"Cloudflare R2\", configFields: r2Fields },\n { type: \"cloudinary\", displayName: \"Cloudinary\", configFields: cloudinaryFields },\n { type: \"ftp\", displayName: \"FTP\", configFields: ftpFields },\n];\n\n// ============================================================================\n// Static Storage Settings Global\n// ============================================================================\n// This global is included in allSettingsGlobals so it's available at build time.\n// It uses DeclarativeCondition instead of function conditions so the\n// conditions survive JSON serialization in the admin config.\n\nconst providerOptions = builtInProviders.map((p) => ({\n label: p.displayName,\n value: p.type,\n}));\n\nconst providerGroups: Field[] = builtInProviders.map((p) => ({\n name: p.type,\n type: \"group\" as const,\n label: `${p.displayName} Settings`,\n admin: { condition: { field: \"provider\", equals: p.type } as DeclarativeCondition },\n fields: p.configFields,\n}));\n\nexport const storageSettingsGlobal: GlobalConfig = {\n slug: \"storage-settings\",\n label: \"Storage Settings\",\n admin: { group: \"settings\" },\n access: { read: () => true, update: () => true },\n fields: [\n {\n name: \"provider\",\n type: \"select\",\n label: \"Storage Provider\",\n defaultValue: \"local\",\n options: providerOptions,\n },\n ...providerGroups,\n {\n name: \"limits\",\n type: \"group\",\n label: \"Upload Limits\",\n fields: [\n {\n name: \"maxFileSize\",\n type: \"number\",\n label: \"Max File Size (bytes)\",\n defaultValue: 10485760,\n },\n {\n name: \"allowedTypes\",\n type: \"json\",\n label: \"Allowed MIME Types\",\n defaultValue: [\"image/*\", \"video/*\", \"audio/*\", \"application/pdf\"],\n },\n {\n name: \"maxFilesPerUpload\",\n type: \"number\",\n label: \"Max Files per Upload\",\n defaultValue: 10,\n },\n ],\n },\n ],\n};\n\n// ============================================================================\n// Dynamic Storage Settings Global (runtime)\n// ============================================================================\n// Called at runtime to build a storage settings global that includes\n// any additional providers registered by plugins via the StorageProviderRegistry.\n// Falls back to the static global if no extra providers were added.\n\nexport function createStorageSettingsGlobal(\n registry: StorageProviderRegistry,\n isPluginEnabled?: (name: string) => boolean,\n): GlobalConfig {\n const allProviders = registry.getAllAvailable(isPluginEnabled);\n\n // If only the built-in providers are registered, return the static global\n const builtInTypes = new Set(builtInProviders.map((p) => p.type));\n const hasExtras = allProviders.some((p) => !builtInTypes.has(p.type));\n\n if (!hasExtras) {\n return storageSettingsGlobal;\n }\n\n // Build extended global with additional providers\n const providerOpts = allProviders.map((p) => ({\n label: p.displayName,\n value: p.type,\n }));\n\n const groups: Field[] = allProviders.map((p) => ({\n name: p.type,\n type: \"group\" as const,\n label: `${p.displayName} Settings`,\n admin: { condition: { field: \"provider\", equals: p.type } as DeclarativeCondition },\n fields: p.configFields,\n }));\n\n return {\n slug: \"storage-settings\",\n label: \"Storage Settings\",\n admin: { group: \"settings\" },\n access: { read: () => true, update: () => true },\n fields: [\n {\n name: \"provider\",\n type: \"select\",\n label: \"Storage Provider\",\n defaultValue: \"local\",\n options: providerOpts,\n },\n ...groups,\n {\n name: \"limits\",\n type: \"group\",\n label: \"Upload Limits\",\n fields: [\n {\n name: \"maxFileSize\",\n type: \"number\",\n label: \"Max File Size (bytes)\",\n defaultValue: 10485760,\n },\n {\n name: \"allowedTypes\",\n type: \"json\",\n label: \"Allowed MIME Types\",\n defaultValue: [\"image/*\", \"video/*\", \"audio/*\", \"application/pdf\"],\n },\n {\n name: \"maxFilesPerUpload\",\n type: \"number\",\n label: \"Max Files per Upload\",\n defaultValue: 10,\n },\n ],\n },\n ],\n };\n}\n"]}
|
package/dist/chunk-GTGRLD4Y.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-GTGRLD4Y.js"}
|