@djangocfg/ui-tools 2.1.233 → 2.1.235
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/JsonSchemaForm-IIYKSH6X.cjs +13 -0
- package/dist/{JsonSchemaForm-GZBFMEKR.cjs.map → JsonSchemaForm-IIYKSH6X.cjs.map} +1 -1
- package/dist/JsonSchemaForm-RN3XWSWX.mjs +4 -0
- package/dist/{JsonSchemaForm-ZTRWXMEF.mjs.map → JsonSchemaForm-RN3XWSWX.mjs.map} +1 -1
- package/dist/{chunk-QKG4LERV.mjs → chunk-2QY3LJR6.mjs} +4 -6
- package/dist/chunk-2QY3LJR6.mjs.map +1 -0
- package/dist/{chunk-46VDB3BJ.cjs → chunk-CXVGN6ZW.cjs} +3 -5
- package/dist/chunk-CXVGN6ZW.cjs.map +1 -0
- package/dist/{chunk-TKB5BDPN.mjs → chunk-JUGQNNDC.mjs} +11 -11
- package/dist/chunk-JUGQNNDC.mjs.map +1 -0
- package/dist/{chunk-UYBYZXVD.cjs → chunk-L37FZYJU.cjs} +11 -11
- package/dist/chunk-L37FZYJU.cjs.map +1 -0
- package/dist/{components-AALNUI3D.cjs → components-3RTH76CV.cjs} +7 -7
- package/dist/{components-AALNUI3D.cjs.map → components-3RTH76CV.cjs.map} +1 -1
- package/dist/{components-JOYIAXID.mjs → components-OTK43IMD.mjs} +3 -3
- package/dist/{components-JOYIAXID.mjs.map → components-OTK43IMD.mjs.map} +1 -1
- package/dist/index.cjs +39 -39
- package/dist/index.mjs +4 -4
- package/package.json +6 -6
- package/src/tools/JsonForm/JsonSchemaForm.tsx +6 -5
- package/src/tools/JsonForm/utils.ts +4 -3
- package/src/tools/VideoPlayer/providers/VidstackProvider.tsx +2 -5
- package/dist/JsonSchemaForm-GZBFMEKR.cjs +0 -13
- package/dist/JsonSchemaForm-ZTRWXMEF.mjs +0 -4
- package/dist/chunk-46VDB3BJ.cjs.map +0 -1
- package/dist/chunk-QKG4LERV.mjs.map +0 -1
- package/dist/chunk-TKB5BDPN.mjs.map +0 -1
- package/dist/chunk-UYBYZXVD.cjs.map +0 -1
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
|
|
4
4
|
var consola = require('consola');
|
|
5
|
+
var lib = require('@djangocfg/ui-core/lib');
|
|
5
6
|
var lucideReact = require('lucide-react');
|
|
6
7
|
var react = require('react');
|
|
7
8
|
var components = require('@djangocfg/ui-core/components');
|
|
8
9
|
var Form = require('@rjsf/core');
|
|
9
10
|
var validator = require('@rjsf/validator-ajv8');
|
|
10
|
-
var lib = require('@djangocfg/ui-core/lib');
|
|
11
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
12
|
var utils = require('@rjsf/utils');
|
|
13
13
|
var i18n = require('@djangocfg/i18n');
|
|
@@ -275,19 +275,19 @@ function BaseInputTemplate(props) {
|
|
|
275
275
|
chunkWGEGR3DF_cjs.__name(BaseInputTemplate, "BaseInputTemplate");
|
|
276
276
|
function validateSchema(schema) {
|
|
277
277
|
if (!schema || typeof schema !== "object") {
|
|
278
|
-
{
|
|
278
|
+
if (lib.isDev) {
|
|
279
279
|
consola__default.default.error("[JsonSchemaForm] Invalid schema: must be an object", schema);
|
|
280
280
|
}
|
|
281
281
|
return null;
|
|
282
282
|
}
|
|
283
283
|
const hasValidStructure = schema.type || schema.properties || schema.$ref || schema.$schema;
|
|
284
284
|
if (!hasValidStructure) {
|
|
285
|
-
{
|
|
285
|
+
if (lib.isDev) {
|
|
286
286
|
consola__default.default.error("[JsonSchemaForm] Invalid schema: missing type, properties, $ref, or $schema", schema);
|
|
287
287
|
}
|
|
288
288
|
return null;
|
|
289
289
|
}
|
|
290
|
-
{
|
|
290
|
+
if (lib.isDev) {
|
|
291
291
|
consola__default.default.success("[JsonSchemaForm] Schema validated successfully:", {
|
|
292
292
|
type: schema.type,
|
|
293
293
|
title: schema.title,
|
|
@@ -959,27 +959,27 @@ function JsonSchemaForm(props) {
|
|
|
959
959
|
...restProps
|
|
960
960
|
} = props;
|
|
961
961
|
const validatedSchema = react.useMemo(() => {
|
|
962
|
-
{
|
|
962
|
+
if (lib.isDev) {
|
|
963
963
|
consola__default.default.info("[JsonSchemaForm] Validating schema...", schema);
|
|
964
964
|
}
|
|
965
965
|
const result = validateSchema(schema);
|
|
966
|
-
if (!result &&
|
|
966
|
+
if (!result && lib.isDev) {
|
|
967
967
|
consola__default.default.error("[JsonSchemaForm] Schema validation failed");
|
|
968
968
|
}
|
|
969
969
|
return result;
|
|
970
970
|
}, [schema]);
|
|
971
971
|
const normalizedFormData = react.useMemo(() => {
|
|
972
972
|
if (!validatedSchema) {
|
|
973
|
-
{
|
|
973
|
+
if (lib.isDev) {
|
|
974
974
|
consola__default.default.warn("[JsonSchemaForm] Cannot normalize formData - invalid schema");
|
|
975
975
|
}
|
|
976
976
|
return null;
|
|
977
977
|
}
|
|
978
|
-
{
|
|
978
|
+
if (lib.isDev) {
|
|
979
979
|
consola__default.default.info("[JsonSchemaForm] Normalizing formData...", formData);
|
|
980
980
|
}
|
|
981
981
|
const normalized = normalizeFormData(formData, validatedSchema);
|
|
982
|
-
{
|
|
982
|
+
if (lib.isDev) {
|
|
983
983
|
consola__default.default.info("[JsonSchemaForm] Normalized formData:", normalized);
|
|
984
984
|
}
|
|
985
985
|
return normalized;
|
|
@@ -1082,5 +1082,5 @@ exports.safeJsonParse = safeJsonParse;
|
|
|
1082
1082
|
exports.safeJsonStringify = safeJsonStringify;
|
|
1083
1083
|
exports.validateRequiredFields = validateRequiredFields;
|
|
1084
1084
|
exports.validateSchema = validateSchema;
|
|
1085
|
-
//# sourceMappingURL=chunk-
|
|
1086
|
-
//# sourceMappingURL=chunk-
|
|
1085
|
+
//# sourceMappingURL=chunk-L37FZYJU.cjs.map
|
|
1086
|
+
//# sourceMappingURL=chunk-L37FZYJU.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/JsonForm/templates/FieldTemplate.tsx","../src/tools/JsonForm/templates/ObjectFieldTemplate.tsx","../src/tools/JsonForm/templates/ArrayFieldTemplate.tsx","../src/tools/JsonForm/templates/ArrayFieldItemTemplate.tsx","../src/tools/JsonForm/templates/ErrorListTemplate.tsx","../src/tools/JsonForm/templates/BaseInputTemplate.tsx","../src/tools/JsonForm/utils.ts","../src/tools/JsonForm/widgets/TextWidget.tsx","../src/tools/JsonForm/widgets/NumberWidget.tsx","../src/tools/JsonForm/widgets/CheckboxWidget.tsx","../src/tools/JsonForm/widgets/SelectWidget.tsx","../src/tools/JsonForm/widgets/SwitchWidget.tsx","../src/tools/JsonForm/widgets/ColorWidget.tsx","../src/tools/JsonForm/widgets/SliderWidget.tsx","../src/tools/JsonForm/JsonSchemaForm.tsx"],"names":["jsx","jsxs","cn","Label","__name","useState","Collapsible","CollapsibleTrigger","ChevronDown","CollapsibleContent","Button","Plus","getUiOptions","getTemplate","Alert","AlertCircle","AlertTitle","AlertDescription","useMemo","getInputProps","useCallback","Input","isDev","consola","Checkbox","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Switch","useAppT","useRef","t","hexValue","Slider","Form","validator"],"mappings":";;;;;;;;;;;;;;;;;;;;AAYO,SAAS,cAAc,KAAA,EAA2B;AACvD,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,uBAAOA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAU,QAAA,EAAS,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,QAAA,GAAW,SAAA,IAAa,SAAA,CAAU,MAAA,GAAS,CAAA;AAEjD,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,MAAA,CAAG,WAAA,EAAa,UAAU,CAAA;AAAA,MACrC,KAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,YAAA,IAAgB,KAAA,oCACdC,gBAAA,EAAA,EAAM,OAAA,EAAS,IAAI,SAAA,EAAWD,MAAA,CAAG,QAAA,IAAY,kBAAkB,CAAA,EAC7D,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,oBAAYF,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAwB,QAAA,EAAA,GAAA,EAAC;AAAA,SAAA,EACxD,CAAA;AAAA,QAGD,WAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAiC,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,wBAG9DA,cAAA,CAAC,SAAK,QAAA,EAAS,CAAA;AAAA,QAEd,MAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAA4B,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAGnD,IAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAiC,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AAAA,GAEzD;AAEJ;AAjDgBI,wBAAA,CAAA,aAAA,EAAA,eAAA,CAAA;ACgBT,SAAS,oBAAoB,KAAA,EAAiC;AACnE,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAGJ,EAAA,MAAM,aAAA,GAAgB,QAAA,GAAW,gBAAgB,CAAA,KAAM,IAAA;AACvD,EAAA,MAAM,gBAAA,GAAmB,QAAA,GAAW,cAAc,CAAA,KAAM,IAAA;AACxD,EAAA,MAAM,QAAA,GAAW,WAAW,SAAS,CAAA;AACrC,EAAA,MAAM,SAAA,GAAY,WAAW,cAAc,CAAA;AAG3C,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,cAAA,CAAS,CAAC,gBAAgB,CAAA;AAGtD,EAAA,MAAM,SAAS,CAAC,KAAA;AAGhB,EAAA,MAAM,SAAA,GAAY,QAAA,GACd,CAAA,qBAAA,EAAwB,QAAQ,CAAA,CAAA,GAChC,WAAA;AAGJ,EAAA,MAAM,OAAA,mBACJL,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAWE,MAAAA,CAAG,SAAA,EAAW,SAAS,CAAA,EACpC,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,OAAA,qBACfF,cAAAA,CAAC,KAAA,EAAA,EAAuB,SAAA,EAAU,kBAAA,EAC/B,kBAAQ,OAAA,EAAA,EADD,OAAA,CAAQ,IAElB,CACD,CAAA,EACH,CAAA;AAIF,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,uBAAOA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAa,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EAC7C;AAGA,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,uBACEC,gBAACK,sBAAA,EAAA,EAAY,IAAA,EAAM,QAAQ,YAAA,EAAc,SAAA,EAAW,WAAU,WAAA,EAC5D,QAAA,EAAA;AAAA,sBAAAL,eAAAA,CAACM,6BAAA,EAAA,EAAmB,SAAA,EAAU,6HAAA,EAC5B,QAAA,EAAA;AAAA,wBAAAN,gBAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAA,eAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EACX,QAAA,EAAA;AAAA,YAAA,KAAA;AAAA,YACA,4BAAYD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAwB,QAAA,EAAA,GAAA,EAAC;AAAA,WAAA,EACxD,CAAA;AAAA,UACC,+BACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wCAAwC,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAErE,CAAA;AAAA,wBACAA,cAAAA;AAAA,UAACQ,uBAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWN,MAAAA;AAAA,cACT,iEAAA;AAAA,cACA,MAAA,IAAU;AAAA;AACZ;AAAA;AACF,OAAA,EACF,CAAA;AAAA,sBACAF,cAAAA,CAACS,6BAAA,EAAA,EAAmB,SAAA,EAAU,kBAC3B,QAAA,EAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACER,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EACX,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,4BAAYD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAwB,QAAA,EAAA,GAAA,EAAC;AAAA,OAAA,EACxD,CAAA;AAAA,MACC,+BACCA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sCAAsC,QAAA,EAAA,WAAA,EAAY;AAAA,KAAA,EAEnE,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;AAvFgBI,wBAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;ACXT,SAAS,mBAAmB,KAAA,EAAgC;AACjE,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,uBACEH,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uBAAA,EACX,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,4BAAYD,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAwB,QAAA,EAAA,GAAA,EAAC;AAAA,OAAA,EACxD,CAAA;AAAA,MACC,0BACCC,eAAAA;AAAA,QAACS,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,SAAA,EAAU,OAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAV,cAAAA,CAACW,gBAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA;AAE9B,KAAA,EAEJ,CAAA;AAAA,oBAIFX,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,IAEC,MAAM,MAAA,KAAW,CAAA,oBAChBC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0EAAA,EAA2E,QAAA,EAAA;AAAA,MAAA,qBAAA;AAAA,MAEvF,0BACCA,eAAAA;AAAA,QAACS,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAQ,OAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,SAAA,EAAU,YAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAV,cAAAA,CAACW,gBAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,YAAE;AAAA;AAAA;AAAA;AAE9B,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAxDgBP,wBAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACHT,SAAS,uBAAuB,KAAA,EAAoC;AACzE,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAYQ,mBAAa,QAAQ,CAAA;AACvC,EAAA,MAAM,6BAAA,GAAgCC,iBAAA;AAAA,IACpC,+BAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACEZ,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,MAAAA;AAAA,QACT,sDAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAF,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAU,QAAA,EAAS,CAAA;AAAA,QACjC,UAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,6BAAA,EAAA,EAA+B,GAAG,YAAA,EAAc,CAAA,EACnD;AAAA;AAAA;AAAA,GAEJ;AAEJ;AAhCgBI,wBAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA;ACFT,SAAS,kBAAkB,KAAA,EAAuB;AACvD,EAAA,MAAM,EAAE,QAAO,GAAI,KAAA;AAEnB,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAClC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEH,eAAAA,CAACa,gBAAA,EAAA,EAAM,OAAA,EAAQ,aAAA,EAAc,WAAU,MAAA,EACrC,QAAA,EAAA;AAAA,oBAAAd,cAAAA,CAACe,uBAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,oBACjCf,cAAAA,CAACgB,qBAAA,EAAA,EAAW,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,oBAC7BhB,eAACiB,2BAAA,EAAA,EACC,QAAA,kBAAAjB,eAAC,IAAA,EAAA,EAAG,SAAA,EAAU,sCAAA,EACX,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,OAAO,KAAA,qBAClBA,cAAAA,CAAC,IAAA,EAAA,EAAe,SAAA,EAAU,SAAA,EACvB,gBAAM,KAAA,EAAA,EADA,KAET,CACD,CAAA,EACH,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAtBgBI,wBAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;ACST,SAAS,kBAAkB,KAAA,EAAoB;AACpD,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAGJ,EAAA,MAAM,UAAA,GAAac,cAAQ,MAAM;AAC/B,IAAA,OAAOC,mBAAA,CAAc,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAA;AAAA,EAC5C,CAAA,EAAG,CAAC,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAC,CAAA;AAG1B,EAAA,MAAM,SAAA,GAAYD,cAAQ,MAAM;AAC9B,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,EAAA;AAClD,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,OAAO,SAAA,IAAa,UAAU,MAAA,GAAS,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,YAAA,GAAeE,iBAAA,CAAY,CAAC,KAAA,KAAyC;AACzE,IAAA,MAAM,GAAA,GAAM,MAAM,MAAA,CAAO,KAAA;AAGzB,IAAA,IAAI,QAAQ,EAAA,EAAI;AACd,MAAA,QAAA,CAAS,OAAA,EAAS,cAAc,EAAE,CAAA;AAClC,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,UAAA,CAAW,SAAS,QAAA,IAAY,MAAA,CAAO,SAAS,QAAA,IAAY,MAAA,CAAO,SAAS,SAAA,EAAW;AACzF,MAAA,MAAM,GAAA,GAAM,OAAO,GAAG,CAAA;AACtB,MAAA,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,GAAI,GAAA,GAAM,GAAG,CAAA;AAC/B,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,GAAG,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,QAAA,EAAU,UAAA,CAAW,MAAM,MAAA,CAAO,IAAA,EAAM,OAAA,EAAS,UAAU,CAAC,CAAA;AAEhE,EAAA,MAAM,UAAA,GAAaA,iBAAA,CAAY,CAAC,KAAA,KAAwC;AACtE,IAAA,MAAA,CAAO,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,EAAA,EAAI,MAAM,CAAC,CAAA;AAEf,EAAA,MAAM,WAAA,GAAcA,iBAAA,CAAY,CAAC,KAAA,KAAwC;AACvE,IAAA,OAAA,CAAQ,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,EAAA,EAAI,OAAO,CAAC,CAAA;AAGhB,EAAA,MAAM,SAAA,GAAYF,cAAQ,MAAM;AAC9B,IAAA,IAAI,UAAA,CAAW,IAAA,EAAM,OAAO,UAAA,CAAW,IAAA;AACvC,IAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,IAAA,KAAS,WAAW,OAAO,QAAA;AAClE,IAAA,OAAO,MAAA;AAAA,EACT,GAAG,CAAC,UAAA,CAAW,IAAA,EAAM,MAAA,CAAO,IAAI,CAAC,CAAA;AAEjC,EAAA,uBACElB,cAAAA;AAAA,IAACqB,gBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,QAAA;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,YAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT,WAAA;AAAA,MACA,SAAA,EAAW,WAAW,oBAAA,GAAuB,EAAA;AAAA,MAC7C,MAAM,UAAA,CAAW,IAAA;AAAA,MACjB,KAAK,UAAA,CAAW,GAAA;AAAA,MAChB,KAAK,UAAA,CAAW;AAAA;AAAA,GAClB;AAEJ;AArFgBjB,wBAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;ACRT,SAAS,eAAe,MAAA,EAAgC;AAC7D,EAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACzC,IAAA,IAAIkB,SAAA,EAAO;AACT,MAAAC,wBAAA,CAAQ,KAAA,CAAM,sDAAsD,MAAM,CAAA;AAAA,IAC5E;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAIA,EAAA,MAAM,oBACJ,MAAA,CAAO,IAAA,IACP,OAAO,UAAA,IACP,MAAA,CAAO,QACP,MAAA,CAAO,OAAA;AAET,EAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,IAAA,IAAID,SAAA,EAAO;AACT,MAAAC,wBAAA,CAAQ,KAAA,CAAM,+EAA+E,MAAM,CAAA;AAAA,IACrG;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAID,SAAA,EAAO;AACT,IAAAC,wBAAA,CAAQ,QAAQ,iDAAA,EAAmD;AAAA,MACjE,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,aAAA,EAAe,CAAC,CAAC,MAAA,CAAO,UAAA;AAAA,MACxB,WAAA,EAAa,CAAC,CAAC,MAAA,CAAO;AAAA,KACvB,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,MAAA;AACT;AAjCgBnB,wBAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;AAuCT,SAAS,iBAAA,CACd,UACA,MAAA,EACG;AACH,EAAA,IAAI,QAAA,KAAa,IAAA,IAAQ,QAAA,KAAa,MAAA,EAAW;AAC/C,IAAA,OAAQ,MAAA,CAAO,SAAS,QAAA,GAAW,KAAK,MAAA,CAAO,IAAA,KAAS,OAAA,GAAU,EAAC,GAAI,IAAA;AAAA,EACzE;AAGA,EAAA,MAAM,aAAa,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,QAAQ,CAAC,CAAA;AAGtD,EAAA,OAAO,gBAAgB,UAAU,CAAA;AACnC;AAbgBA,wBAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AAkBhB,SAAS,gBAAgB,GAAA,EAAe;AACtC,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,GAAA,KAAQ,MAAA,EAAW;AACrC,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,GAAA,CAAI,IAAI,eAAe,CAAA,CAAE,OAAO,CAAC,IAAA,KAAS,SAAS,MAAS,CAAA;AAAA,EACrE;AAEA,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAC3B,IAAA,MAAM,UAAe,EAAC;AACtB,IAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACrB,MAAA,IAAI,GAAA,CAAI,GAAG,CAAA,KAAM,MAAA,EAAW;AAC1B,QAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,eAAA,CAAgB,GAAA,CAAI,GAAG,CAAC,CAAA;AAAA,MACzC;AAAA,IACF;AACA,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO,GAAA;AACT;AApBSA,wBAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAyBF,SAAS,aAAA,CACd,UACA,MAAA,EACK;AACL,EAAA,IAAI,CAAC,QAAQ,OAAO,QAAA;AAEpB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,QAAA,EAAS;AAE7B,EAAA,IAAI,MAAA,CAAO,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,UAAA,EAAY;AACjD,IAAA,KAAA,MAAW,CAAC,KAAK,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,EAAG;AACjE,MAAA,MAAM,IAAA,GAAO,UAAA;AAGb,MAAA,IAAI,OAAO,GAAG,CAAA,KAAM,MAAA,IAAa,IAAA,CAAK,YAAY,MAAA,EAAW;AAC3D,QAAA,MAAA,CAAO,GAAG,IAAI,IAAA,CAAK,OAAA;AAAA,MACrB;AAGA,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,GAAG,CAAA,EAAG;AACzC,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,aAAA,CAAc,MAAA,CAAO,GAAG,GAAG,IAAI,CAAA;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAzBgBA,wBAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AA8BT,SAAS,aAAA,CACd,YACA,QAAA,EACG;AACH,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,UAAU,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAAmB,wBAAA,CAAQ,KAAA,CAAM,sCAAsC,KAAK,CAAA;AACzD,IAAA,OAAO,QAAA;AAAA,EACT;AACF;AAVgBnB,wBAAA,CAAA,aAAA,EAAA,eAAA,CAAA;AAeT,SAAS,iBAAA,CACd,GAAA,EACA,MAAA,GAAkB,IAAA,EACV;AACR,EAAA,IAAI;AACF,IAAA,OAAO,KAAK,SAAA,CAAU,GAAA,EAAK,IAAA,EAAM,MAAA,GAAS,IAAI,CAAC,CAAA;AAAA,EACjD,SAAS,KAAA,EAAO;AACd,IAAAmB,wBAAA,CAAQ,KAAA,CAAM,0CAA0C,KAAK,CAAA;AAC7D,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAVgBnB,wBAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AAeT,SAAS,kBAAkB,MAAA,EAA6B;AAC7D,EAAA,OAAO,MAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,IAAK,MAAA,CAAO,SAAS,MAAA,GAAS,CAAA;AACpE;AAFgBA,wBAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AAOT,SAAS,iBAAA,CACd,MAAA,EACA,MAAA,GAAiB,EAAA,EACP;AACV,EAAA,MAAM,WAAqB,EAAC;AAE5B,EAAA,IAAI,OAAO,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,EAAG;AACrD,IAAA,QAAA,CAAS,IAAA,CAAK,GAAG,MAAA,CAAO,QAAA,CAAS,GAAA;AAAA,MAAI,CAAC,KAAA,KACpC,MAAA,GAAS,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK;AAAA,KACjC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,CAAO,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,UAAA,EAAY;AACjD,IAAA,KAAA,MAAW,CAAC,KAAK,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,EAAG;AACjE,MAAA,MAAM,IAAA,GAAO,UAAA;AACb,MAAA,MAAM,YAAY,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAChD,MAAA,QAAA,CAAS,IAAA,CAAK,GAAG,iBAAA,CAAkB,IAAA,EAAM,SAAS,CAAC,CAAA;AAAA,IACrD;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AArBgBA,wBAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AA0BT,SAAS,sBAAA,CACd,UACA,MAAA,EACuC;AACvC,EAAA,MAAM,cAAA,GAAiB,kBAAkB,MAAM,CAAA;AAC/C,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,SAAS,cAAA,EAAgB;AAClC,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,QAAA,EAAU,KAAK,CAAA;AAC5C,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,UAAU,EAAA,EAAI;AACzD,MAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,IACpB;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,QAAQ,MAAA,KAAW,CAAA;AAAA,IAC1B;AAAA,GACF;AACF;AAlBgBA,wBAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA;AAuBhB,SAAS,cAAA,CAAe,KAAU,IAAA,EAAmB;AACnD,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,OAAA,EAAS,GAAA,KAAQ,OAAA,GAAU,GAAG,CAAA,EAAG,GAAG,CAAA;AACrE;AAFSA,wBAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;ACxMF,SAAS,WAAW,KAAA,EAAoB;AAC7C,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAGJ,EAAA,MAAM,MAAA,GAASc,cAAQ,OAAO;AAAA,IAC5B,UAAA,EAAY,SAAS,MAAA,KAAW,UAAA;AAAA,IAChC,IAAA,EAAM,SAAS,IAAA,IAAQ,CAAA;AAAA,IACvB,YAAY,OAAA,EAAS;AAAA,GACvB,CAAA,EAAI,CAAC,OAAO,CAAC,CAAA;AAGb,EAAA,MAAM,SAAA,GAAYA,cAAQ,MAAM;AAC9B,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,EAAA;AAClD,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,OAAO,SAAA,IAAa,UAAU,MAAA,GAAS,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,YAAA,GAAeE,iBAAAA,CAAY,CAAC,KAAA,KAAqE;AACrG,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA;AAC9B,IAAA,QAAA,CAAS,QAAA,KAAa,EAAA,GAAK,MAAA,CAAO,UAAA,GAAa,QAAQ,CAAA;AAAA,EACzD,CAAA,EAAG,CAAC,QAAA,EAAU,MAAA,CAAO,UAAU,CAAC,CAAA;AAEhC,EAAA,MAAM,UAAA,GAAaA,iBAAAA,CAAY,CAAC,KAAA,KAAoE;AAClG,IAAA,MAAA,CAAO,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,EAAA,EAAI,MAAM,CAAC,CAAA;AAEf,EAAA,MAAM,WAAA,GAAcA,iBAAAA,CAAY,CAAC,KAAA,KAAoE;AACnG,IAAA,OAAA,CAAQ,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,EAAA,EAAI,OAAO,CAAC,CAAA;AAEhB,EAAA,IAAI,OAAO,UAAA,EAAY;AACrB,IAAA,uBACEpB,cAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,SAAA,EAAW,CAAA,2CAAA,EACT,QAAA,GAAW,oBAAA,GAAuB,cACpC,CAAA,oOAAA,CAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAU,QAAA,IAAY,QAAA;AAAA,QACtB,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,SAAA;AAAA,QACX,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,MAAM,MAAA,CAAO;AAAA;AAAA,KACf;AAAA,EAEJ;AAEA,EAAA,uBACEA,cAAAA;AAAA,IAACqB,gBAAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,KAAA,EAAO,SAAA;AAAA,MACP,QAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,WAAW,oBAAA,GAAuB;AAAA;AAAA,GAC/C;AAEJ;AApFgBjB,wBAAA,CAAA,UAAA,EAAA,YAAA,CAAA;ACAT,SAAS,aAAa,KAAA,EAAoB;AAC/C,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAGJ,EAAA,MAAM,MAAA,GAASc,cAAQ,OAAO;AAAA,IAC5B,SAAA,EAAW,OAAO,IAAA,KAAS,SAAA;AAAA,IAC3B,IAAA,EAAM,MAAA,CAAO,IAAA,KAAS,SAAA,GAAY,GAAA,GAAM,KAAA;AAAA,IACxC,KAAK,MAAA,CAAO,OAAA;AAAA,IACZ,KAAK,MAAA,CAAO,OAAA;AAAA,IACZ,YAAY,OAAA,EAAS;AAAA,GACvB,CAAA,EAAI,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAGrB,EAAA,MAAM,SAAA,GAAYA,cAAQ,MAAM;AAC9B,IAAA,IAAI,UAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAI,OAAO,EAAA;AAClE,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,KAAK,GAAG,OAAO,KAAA;AACvD,IAAA,OAAO,EAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,OAAO,SAAA,IAAa,UAAU,MAAA,GAAS,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,YAAA,GAAeE,iBAAAA,CAAY,CAAC,KAAA,KAA+C;AAC/E,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA;AAC9B,IAAA,IAAI,aAAa,EAAA,EAAI;AACnB,MAAA,QAAA,CAAS,OAAO,UAAU,CAAA;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,MAAM,WAAA,GAAc,OAAO,SAAA,GACvB,QAAA,CAAS,UAAU,EAAE,CAAA,GACrB,WAAW,QAAQ,CAAA;AAEvB,MAAA,QAAA,CAAS,KAAA,CAAM,WAAW,CAAA,GAAI,MAAA,CAAO,aAAa,WAAW,CAAA;AAAA,IAC/D;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAA,MAAM,UAAA,GAAaA,iBAAAA,CAAY,CAAC,KAAA,KAA8C;AAC5E,IAAA,MAAA,CAAO,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,EAAA,EAAI,MAAM,CAAC,CAAA;AAEf,EAAA,MAAM,WAAA,GAAcA,iBAAAA,CAAY,CAAC,KAAA,KAA8C;AAC7E,IAAA,OAAA,CAAQ,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,EAAA,EAAI,OAAO,CAAC,CAAA;AAEhB,EAAA,uBACEpB,cAAAA;AAAA,IAACqB,gBAAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,KAAA,EAAO,SAAA;AAAA,MACP,QAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,KAAK,MAAA,CAAO,GAAA;AAAA,MACZ,KAAK,MAAA,CAAO,GAAA;AAAA,MACZ,SAAA,EAAW,WAAW,oBAAA,GAAuB;AAAA;AAAA,GAC/C;AAEJ;AA7EgBjB,wBAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACFT,SAAS,eAAe,KAAA,EAAoB;AACjD,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAA,6CAAgB,OAAA,KAAqB;AACzC,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,EAClB,CAAA,EAFqB,cAAA,CAAA;AAIrB,EAAA,uBACEJ,cAAAA;AAAA,IAACwB,mBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,SAAS,KAAA,IAAS,KAAA;AAAA,MAClB,UAAU,QAAA,IAAY,QAAA;AAAA,MACtB,SAAA,EAAW,SAAA;AAAA,MACX,eAAA,EAAiB,YAAA;AAAA,MACjB,MAAA,EAAQ,MAAM,MAAA,CAAO,EAAA,EAAI,KAAK,CAAA;AAAA,MAC9B,OAAA,EAAS,MAAM,OAAA,CAAQ,EAAA,EAAI,KAAK;AAAA;AAAA,GAClC;AAEJ;AA3BgBpB,wBAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;ACIT,SAAS,aAAa,KAAA,EAAoB;AAC/C,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAGJ,EAAA,MAAM,WAAA,GAAcc,cAAQ,MAAM;AAChC,IAAA,MAAM,OAAO,OAAA,EAAS,WAAA;AACtB,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,SAAU,EAAC;AAClC,IAAA,OAAO,KAAK,MAAA,CAAO,CAAA,GAAA,KAAO,GAAA,IAAQ,GAAA,CAAI,UAAU,MAAU,CAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,OAAO,SAAA,IAAa,UAAU,MAAA,GAAS,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,SAAA,GAAYA,cAAQ,MAAM;AAC9B,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,EAAA;AAClD,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,YAAA,GAAeE,iBAAAA,CAAY,CAAC,QAAA,KAAqB;AACrD,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,MAAA,CAAO,IAAI,QAAQ,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,QAAA,EAAU,MAAA,EAAQ,EAAE,CAAC,CAAA;AAIzB,EAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,IAAA,uBACEpB,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO,SAAA;AAAA,QACP,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACxC,QAAQ,CAAC,CAAA,KAAM,OAAO,EAAA,EAAI,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACxC,SAAS,CAAC,CAAA,KAAM,QAAQ,EAAA,EAAI,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QAC1C,UAAU,QAAA,IAAY,QAAA;AAAA,QACtB,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,CAAA,mCAAA,EACT,QAAA,GAAW,oBAAA,GAAuB,cACpC,CAAA,oOAAA,CAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEC,eAAAA;AAAA,IAACwB,iBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,SAAA;AAAA,MACP,aAAA,EAAe,YAAA;AAAA,MACf,UAAU,QAAA,IAAY,QAAA;AAAA,MACtB,QAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAzB,cAAAA;AAAA,UAAC0B,wBAAA;AAAA,UAAA;AAAA,YACC,EAAA;AAAA,YACA,SAAA,EAAW,WAAW,oBAAA,GAAuB,EAAA;AAAA,YAC7C,SAAA,EAAW,SAAA;AAAA,YACX,OAAA,EAAS,MAAM,OAAA,CAAQ,EAAA,EAAI,KAAK,CAAA;AAAA,YAEhC,QAAA,kBAAA1B,cAAAA,CAAC2B,sBAAA,EAAA,EAAY,WAAA,EAAa,eAAe,kBAAA,EAAoB;AAAA;AAAA,SAC/D;AAAA,wBACA3B,cAAAA,CAAC4B,wBAAA,EAAA,EACE,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,qBAChB5B,cAAAA,CAAC6B,qBAAA,EAAA,EAAsC,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,EAC9D,QAAA,EAAA,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,EAAA,EADrB,MAAA,CAAO,MAAA,CAAO,KAAK,CAEpC,CACD,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AAnFgBzB,wBAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACJT,SAAS,aAAa,KAAA,EAAoB;AAC/C,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAA,6CAAgB,OAAA,KAAqB;AACzC,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,EAClB,CAAA,EAFqB,cAAA,CAAA;AAIrB,EAAA,uBACEJ,cAAAA;AAAA,IAAC8B,iBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,SAAS,KAAA,IAAS,KAAA;AAAA,MAClB,UAAU,QAAA,IAAY,QAAA;AAAA,MACtB,eAAA,EAAiB,YAAA;AAAA,MACjB,MAAA,EAAQ,MAAM,MAAA,CAAO,EAAA,EAAI,KAAK,CAAA;AAAA,MAC9B,OAAA,EAAS,MAAM,OAAA,CAAQ,EAAA,EAAI,KAAK;AAAA;AAAA,GAClC;AAEJ;AAzBgB1B,wBAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACIT,SAAS,YAAY,KAAA,EAAoB;AAC9C,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,IAAI2B,YAAA,EAAQ;AAClB,EAAA,MAAM,cAAA,GAAiBb,cAAQ,MAAM,CAAA,CAAE,kBAAkB,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,aAAA,GAAgBc,aAAyB,IAAI,CAAA;AAGnD,EAAA,MAAM,MAAA,GAASd,cAAQ,MAAM;AAC3B,IAAA,IAAI,OAAA,EAAS,MAAA,EAAQ,OAAO,OAAA,CAAQ,MAAA;AACpC,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,UAAA,CAAW,GAAG,GAAG,OAAO,KAAA;AAC/D,IAAA,OAAO,KAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAC,CAAA;AAG3B,EAAA,MAAM,SAAA,GAAYA,cAAQ,MAAM;AAC9B,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,EAAA;AAClD,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,MAAM,QAAA,GAAWE,iBAAAA,CAAY,CAAC,QAAA,KAA6B;AACzD,IAAA,IAAI,CAAC,UAAU,OAAO,aAAA;AACtB,IAAA,IAAI,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG,OAAO,QAAA;AACrC,IAAA,IAAI,QAAA,CAAS,UAAA,CAAW,KAAK,CAAA,EAAG,OAAO,QAAA;AAEvC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,MAAA,OAAO,CAAA,IAAA,EAAO,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,IAClD;AACA,IAAA,OAAO,aAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,YAAA,GAAeF,cAAQ,MAAM;AACjC,IAAA,OAAO,SAAS,SAAS,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,SAAA,EAAW,QAAQ,CAAC,CAAA;AAGxB,EAAA,MAAM,QAAA,GAAWE,iBAAAA,CAAY,CAAC,GAAA,KAAwB;AAEpD,IAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAA;AAGzB,IAAA,MAAM,CAAA,GAAI,SAAS,GAAA,CAAI,SAAA,CAAU,GAAG,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA;AAC9C,IAAA,MAAM,CAAA,GAAI,SAAS,GAAA,CAAI,SAAA,CAAU,GAAG,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA;AAC9C,IAAA,MAAM,CAAA,GAAI,SAAS,GAAA,CAAI,SAAA,CAAU,GAAG,CAAC,CAAA,EAAG,EAAE,CAAA,GAAI,GAAA;AAE9C,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAC,CAAA;AAC5B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAG,CAAC,CAAA;AAC5B,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,IAAI,CAAA,GAAI,CAAA;AACR,IAAA,MAAM,CAAA,GAAA,CAAK,MAAM,GAAA,IAAO,CAAA;AAExB,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAA,MAAM,IAAI,GAAA,GAAM,GAAA;AAChB,MAAA,CAAA,GAAI,IAAI,GAAA,GAAM,CAAA,IAAK,IAAI,GAAA,GAAM,GAAA,CAAA,GAAO,KAAK,GAAA,GAAM,GAAA,CAAA;AAE/C,MAAA,QAAQ,GAAA;AAAK,QACX,KAAK,CAAA;AACH,UAAA,CAAA,GAAA,CAAA,CAAM,IAAI,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,CAAA,GAAI,IAAI,CAAA,CAAA,IAAM,CAAA;AACtC,UAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,CAAA,GAAA,CAAA,CAAM,CAAA,GAAI,CAAA,IAAK,CAAA,GAAI,CAAA,IAAK,CAAA;AACxB,UAAA;AAAA,QACF,KAAK,CAAA;AACH,UAAA,CAAA,GAAA,CAAA,CAAM,CAAA,GAAI,CAAA,IAAK,CAAA,GAAI,CAAA,IAAK,CAAA;AACxB,UAAA;AAAA;AACJ,IACF;AAEA,IAAA,OAAO,GAAG,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,EAAA,EAAK,KAAK,KAAA,CAAM,CAAA,GAAI,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,EAC9E,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,QAAA,GAAWA,iBAAAA,CAAY,CAAC,QAAA,KAA6B;AACzD,IAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,WAAW,GAAG,CAAA,SAAU,QAAA,IAAY,SAAA;AAE9D,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAChC,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,SAAA;AAE/B,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,GAAA;AAC/B,IAAA,MAAM,CAAA,GAAI,SAAS,KAAA,CAAM,CAAC,EAAE,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAC,CAAA,GAAI,GAAA;AAChD,IAAA,MAAM,CAAA,GAAI,SAAS,KAAA,CAAM,CAAC,EAAE,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAC,CAAA,GAAI,GAAA;AAEhD,IAAA,MAAM,OAAA,mBAAUhB,wBAAA,CAAA,CAAC,CAAA,EAAW,CAAA,EAAW6B,EAAAA,KAAc;AACnD,MAAA,IAAIA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,CAAA;AAChB,MAAA,IAAIA,EAAAA,GAAI,CAAA,EAAGA,EAAAA,IAAK,CAAA;AAChB,MAAA,IAAIA,KAAI,CAAA,GAAE,CAAA,SAAU,CAAA,GAAA,CAAK,CAAA,GAAI,KAAK,CAAA,GAAIA,EAAAA;AACtC,MAAA,IAAIA,EAAAA,GAAI,CAAA,GAAE,CAAA,EAAG,OAAO,CAAA;AACpB,MAAA,IAAIA,EAAAA,GAAI,IAAE,CAAA,EAAG,OAAO,KAAK,CAAA,GAAI,CAAA,KAAM,CAAA,GAAE,CAAA,GAAIA,EAAAA,CAAAA,GAAK,CAAA;AAC9C,MAAA,OAAO,CAAA;AAAA,IACT,CAAA,EAPgB,SAAA,CAAA;AAShB,IAAA,IAAI,GAAG,CAAA,EAAG,CAAA;AACV,IAAA,IAAI,MAAM,CAAA,EAAG;AACX,MAAA,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AAAA,IACd,CAAA,MAAO;AACL,MAAA,MAAM,CAAA,GAAI,IAAI,GAAA,GAAM,CAAA,IAAK,IAAI,CAAA,CAAA,GAAK,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AAC9C,MAAA,MAAM,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AAClB,MAAA,CAAA,GAAI,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,CAAA,GAAI,IAAE,CAAC,CAAA;AACzB,MAAA,CAAA,GAAI,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACnB,MAAA,CAAA,GAAI,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,CAAA,GAAI,IAAE,CAAC,CAAA;AAAA,IAC3B;AAEA,IAAA,MAAM,KAAA,6CAAS,CAAA,KAAc;AAC3B,MAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,IAAI,GAAG,CAAA,CAAE,SAAS,EAAE,CAAA;AAC3C,MAAA,OAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA,IACxC,CAAA,EAHc,OAAA,CAAA;AAKd,IAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAC3C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAWf,cAAQ,MAAM;AAC7B,IAAA,OAAO,SAAA,IAAa,UAAU,MAAA,GAAS,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,YAAA,GAAeE,iBAAAA,CAAY,CAAC,KAAA,KAA+C;AAC/E,IAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,KAAA;AAC9B,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,EACnB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,uBAAA,GAA0BA,iBAAAA,CAAY,CAAC,KAAA,KAA+C;AAC1F,IAAA,MAAMc,SAAAA,GAAW,MAAM,MAAA,CAAO,KAAA;AAC9B,IAAA,IAAI,WAAW,KAAA,EAAO;AACpB,MAAA,QAAA,CAAS,QAAA,CAASA,SAAQ,CAAC,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,QAAA,CAASA,SAAQ,CAAA;AAAA,IACnB;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAE/B,EAAA,MAAM,UAAA,GAAad,iBAAAA,CAAY,CAAC,KAAA,KAA8C;AAC5E,IAAA,MAAA,CAAO,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,EAAA,EAAI,MAAM,CAAC,CAAA;AAEf,EAAA,MAAM,WAAA,GAAcA,iBAAAA,CAAY,CAAC,KAAA,KAA8C;AAC7E,IAAA,OAAA,CAAQ,EAAA,EAAI,KAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,EAAA,EAAI,OAAO,CAAC,CAAA;AAGhB,EAAA,MAAM,QAAA,GAAWF,cAAQ,MAAM;AAC7B,IAAA,IAAI,MAAA,KAAW,KAAA,IAAS,SAAA,CAAU,UAAA,CAAW,GAAG,CAAA,EAAG;AACjD,MAAA,OAAO,SAAA,IAAa,SAAA;AAAA,IACtB;AACA,IAAA,OAAO,SAAS,SAAS,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,SAAA,EAAW,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAGhC,EAAA,MAAM,mBAAA,GAAsBE,kBAAY,MAAM;AAC5C,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU;AAC1B,MAAA,aAAA,CAAc,SAAS,KAAA,EAAM;AAAA,IAC/B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA;AAEvB,EAAA,uBACEnB,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAEb,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,mBAAA;AAAA,UACT,UAAU,QAAA,IAAY,QAAA;AAAA,UACtB,SAAA,EAAU,0MAAA;AAAA,UACV,KAAA,EAAO,EAAE,eAAA,EAAiB,YAAA,EAAa;AAAA,UACvC,YAAA,EAAY;AAAA;AAAA,OACd;AAAA,sBAEAA,cAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,aAAA;AAAA,UACL,IAAA,EAAK,OAAA;AAAA,UACL,KAAA,EAAO,QAAA;AAAA,UACP,QAAA,EAAU,uBAAA;AAAA,UACV,SAAA,EAAU,yDAAA;AAAA,UACV,UAAU,QAAA,IAAY,QAAA;AAAA,UACtB,QAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAGAA,cAAAA;AAAA,MAACqB,gBAAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,WAAA,EAAa,WAAA,KAAgB,MAAA,KAAW,KAAA,GAAQ,aAAA,GAAgB,SAAA,CAAA;AAAA,QAChE,QAAA;AAAA,QACA,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,SAAA;AAAA,QACX,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,CAAA,yBAAA,EAA4B,QAAA,GAAW,oBAAA,GAAuB,EAAE,CAAA;AAAA;AAAA;AAC7E,GAAA,EACF,CAAA;AAEJ;AAhNgBjB,wBAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACmBT,SAAS,aAAa,KAAA,EAAoB;AAC/C,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAGJ,EAAA,MAAM,MAAA,GAASc,cAAQ,MAAM;AAC3B,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,OAAA,IAAW,OAAA,EAAS,GAAA,IAAO,CAAA;AAC9C,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,OAAA,IAAW,OAAA,EAAS,GAAA,IAAO,GAAA;AAC9C,IAAA,MAAM,OAAO,OAAA,EAAS,IAAA,KAAS,MAAA,CAAO,IAAA,KAAS,YAAY,CAAA,GAAI,GAAA,CAAA;AAC/D,IAAA,MAAM,OAAO,OAAA,EAAS,IAAA;AACtB,IAAA,MAAM,SAAA,GAAY,SAAS,SAAA,KAAc,KAAA;AAEzC,IAAA,OAAO,EAAE,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM,MAAM,SAAA,EAAU;AAAA,EAC3C,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAGpB,EAAA,MAAM,YAAA,GAAeA,cAAQ,MAAM;AACjC,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,IAAa,UAAU,EAAA,EAAI;AACzD,MAAA,OAAO,MAAA,CAAO,GAAA;AAAA,IAChB;AACA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAE7B,MAAA,MAAM,MAAA,GAAS,WAAW,KAAK,CAAA;AAC/B,MAAA,OAAO,KAAA,CAAM,MAAM,CAAA,GAAI,MAAA,CAAO,GAAA,GAAM,MAAA;AAAA,IACtC;AACA,IAAA,OAAO,MAAA,CAAO,GAAA;AAAA,EAChB,CAAA,EAAG,CAAC,KAAA,EAAO,MAAA,CAAO,GAAG,CAAC,CAAA;AAEtB,EAAA,MAAM,QAAA,GAAWA,cAAQ,MAAM;AAC7B,IAAA,OAAO,SAAA,IAAa,UAAU,MAAA,GAAS,CAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAA,MAAM,kBAAA,GAAqBE,iBAAAA,CAAY,CAAC,MAAA,KAAqB;AAC3D,IAAA,MAAM,QAAA,GAAW,OAAO,CAAC,CAAA;AACzB,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,IACtC,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,MAAA,CAAO,IAAI,CAAC,CAAA;AAG1B,EAAA,MAAM,iBAAA,GAAoBA,iBAAAA,CAAY,CAAC,KAAA,KAA+C;AACpF,IAAA,MAAM,UAAA,GAAa,MAAM,MAAA,CAAO,KAAA;AAGhC,IAAA,IAAI,OAAO,IAAA,EAAM;AAEf,MAAA,MAAM,aAAa,UAAA,CAAW,OAAA,CAAQ,OAAO,IAAA,EAAM,EAAE,EAAE,IAAA,EAAK;AAC5D,MAAA,MAAM,MAAA,GAAS,WAAW,UAAU,CAAA;AACpC,MAAA,IAAI,CAAC,KAAA,CAAM,MAAM,CAAA,EAAG;AAClB,QAAA,QAAA,CAAS,CAAA,EAAG,MAAM,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,MACpC,CAAA,MAAA,IAAW,eAAe,EAAA,EAAI;AAC5B,QAAA,QAAA,CAAS,GAAG,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAE,CAAA;AAAA,MACxC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,MAAA,GAAS,WAAW,UAAU,CAAA;AACpC,MAAA,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,GAAI,MAAA,CAAO,MAAM,MAAM,CAAA;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,QAAA,EAAU,OAAO,IAAA,EAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AAGtC,EAAA,MAAM,YAAA,GAAeF,cAAQ,MAAM;AACjC,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,OAAO,CAAA,EAAG,YAAY,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,IACtC;AACA,IAAA,OAAO,OAAO,YAAY,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,YAAA,EAAc,MAAA,CAAO,IAAI,CAAC,CAAA;AAE9B,EAAA,uBACEjB,gBAAC,KAAA,EAAA,EAAI,SAAA,EAAWC,OAAG,yBAAA,EAA2B,QAAA,IAAY,kBAAkB,CAAA,EAE1E,QAAA,EAAA;AAAA,oBAAAF,cAAAA;AAAA,MAACmC,iBAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,UAAU,QAAA,IAAY,QAAA;AAAA,QACtB,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,QACpB,aAAA,EAAe,kBAAA;AAAA,QACf,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,KAAK,MAAA,CAAO,GAAA;AAAA,QACZ,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,IAGC,MAAA,CAAO,4BACNnC,cAAAA;AAAA,MAACqB,gBAAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO,YAAA;AAAA,QACP,QAAA,EAAU,iBAAA;AAAA,QACV,QAAA;AAAA,QACA,QAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAWnB,MAAAA;AAAA,UACT,oCAAA;AAAA,UACA,QAAA,IAAY;AAAA;AACd;AAAA,wBAGFF,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2DACb,QAAA,EAAA,YAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAnHgBI,wBAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACeT,SAAS,eAAwB,KAAA,EAA+B;AACrE,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA,GAAgB,KAAA;AAAA,IAChB,YAAA,GAAe,KAAA;AAAA,IACf,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,gBAAA,GAAmB,IAAA;AAAA,IACnB,gBAAA,GAAmB,QAAA;AAAA,IACnB,GAAG;AAAA,GACL,GAAI,KAAA;AAGJ,EAAA,MAAM,eAAA,GAAkBc,cAAQ,MAAM;AACpC,IAAA,IAAII,SAAAA,EAAO;AACT,MAAAC,wBAAAA,CAAQ,IAAA,CAAK,uCAAA,EAAyC,MAAM,CAAA;AAAA,IAC9D;AACA,IAAA,MAAM,MAAA,GAAS,eAAe,MAAM,CAAA;AACpC,IAAA,IAAI,CAAC,UAAUD,SAAAA,EAAO;AACpB,MAAAC,wBAAAA,CAAQ,MAAM,2CAA2C,CAAA;AAAA,IAC3D;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAA,MAAM,kBAAA,GAAqBL,cAAQ,MAAM;AACvC,IAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,MAAA,IAAII,SAAAA,EAAO;AACT,QAAAC,wBAAAA,CAAQ,KAAK,6DAA6D,CAAA;AAAA,MAC5E;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAID,SAAAA,EAAO;AACT,MAAAC,wBAAAA,CAAQ,IAAA,CAAK,0CAAA,EAA4C,QAAQ,CAAA;AAAA,IACnE;AACA,IAAA,MAAM,UAAA,GAAa,iBAAA,CAAqB,QAAA,EAAU,eAAe,CAAA;AACjE,IAAA,IAAID,SAAAA,EAAO;AACT,MAAAC,wBAAAA,CAAQ,IAAA,CAAK,uCAAA,EAAyC,UAAU,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,UAAA;AAAA,EACT,CAAA,EAAG,CAAC,QAAA,EAAU,eAAe,CAAC,CAAA;AAQ9B,EAAA,MAAM,OAAA,GAA+BL,cAAQ,OAAO;AAAA;AAAA,IAElD,UAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA;AAAA,IAEA,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ,YAAA;AAAA,IACR,QAAA,EAAU,cAAA;AAAA,IACV,MAAA,EAAQ,YAAA;AAAA,IACR,MAAA,EAAQ,YAAA;AAAA,IACR,KAAA,EAAO,WAAA;AAAA,IACP,MAAA,EAAQ,YAAA;AAAA,IACR,KAAA,EAAO;AAAA;AAAA,GACT,CAAA,EAAI,EAAE,CAAA;AAGN,EAAA,MAAM,SAAA,GAAYA,cAAQ,OAAO;AAAA,IAC/B,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,sBAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF,CAAA,EAAI,EAAE,CAAA;AAGN,EAAA,MAAM,YAAA,GAAeE,iBAAAA,CAAY,CAAC,IAAA,KAAc;AAC9C,IAAA,IAAI,QAAA,EAAU;AAEZ,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,GAAG,IAAA;AAAA,QACH,QAAA,EAAU,iBAAA,CAAkB,IAAA,CAAK,QAAA,EAAU,eAAgB;AAAA,OAC7D;AACA,MAAA,QAAA,CAAS,SAAS,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,eAAe,CAAC,CAAA;AAE9B,EAAA,MAAM,YAAA,GAAeA,iBAAAA,CAAY,CAAC,IAAA,KAAc;AAC9C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,WAAA,GAAcA,iBAAAA,CAAY,CAAC,MAAA,KAAgB;AAC/C,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAGZ,EAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,uBACEpB,eAAC,KAAA,EAAA,EAAI,SAAA,EACH,0BAAAC,eAAAA,CAACa,gBAAAA,EAAA,EAAM,OAAA,EAAQ,aAAA,EACb,QAAA,EAAA;AAAA,sBAAAd,cAAAA,CAACe,uBAAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,sBACjCf,cAAAA,CAACiB,2BAAAA,EAAA,EAAiB,QAAA,EAAA,0DAAA,EAElB;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEjB,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EACH,QAAA,kBAAAA,cAAAA;AAAA,IAACoC,qBAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAQ,eAAA;AAAA,MACR,QAAA;AAAA,MACA,QAAA,EAAU,kBAAA;AAAA,iBACVC,0BAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MACT,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACC,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,gBAAA,oBACCrC,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACb,QAAA,kBAAAA,cAAAA,CAACU,iBAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,QAAA,EACnB,4BACH,CAAA,EACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AAtJgBN,wBAAA,CAAA,cAAA,EAAA,gBAAA,CAAA","file":"chunk-L37FZYJU.cjs","sourcesContent":["\"use client\"\n\nimport React from 'react';\n\nimport { Label } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { FieldTemplateProps } from '@rjsf/utils';\n\n/**\n * Field template for JSON Schema Form\n * Controls the layout and styling of individual form fields\n */\nexport function FieldTemplate(props: FieldTemplateProps) {\n const {\n id,\n classNames,\n style,\n label,\n help,\n required,\n description,\n errors,\n children,\n displayLabel,\n hidden,\n rawErrors,\n } = props;\n\n if (hidden) {\n return <div className=\"hidden\">{children}</div>;\n }\n\n const hasError = rawErrors && rawErrors.length > 0;\n\n return (\n <div\n className={cn('space-y-2', classNames)}\n style={style}\n >\n {displayLabel && label && (\n <Label htmlFor={id} className={cn(hasError && 'text-destructive')}>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n\n {description && (\n <div className=\"text-sm text-muted-foreground\">{description}</div>\n )}\n\n <div>{children}</div>\n\n {errors && (\n <div className=\"text-sm text-destructive\">{errors}</div>\n )}\n\n {help && (\n <div className=\"text-sm text-muted-foreground\">{help}</div>\n )}\n </div>\n );\n}\n","\"use client\"\n\nimport { ChevronDown } from 'lucide-react';\nimport React, { useState } from 'react';\n\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { ObjectFieldTemplateProps } from '@rjsf/utils';\n\n/**\n * Object field template for JSON Schema Form\n *\n * Supports:\n * - Collapsible groups via ui:collapsible option\n * - Grid layout via ui:grid option\n * - Custom styling via ui:className\n *\n * Usage in uiSchema:\n * ```json\n * {\n * \"colors\": {\n * \"ui:collapsible\": true,\n * \"ui:collapsed\": false,\n * \"ui:grid\": 2\n * }\n * }\n * ```\n */\nexport function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {\n const {\n title,\n description,\n properties,\n required,\n uiSchema,\n } = props;\n\n // UI options\n const isCollapsible = uiSchema?.['ui:collapsible'] === true;\n const defaultCollapsed = uiSchema?.['ui:collapsed'] === true;\n const gridCols = uiSchema?.['ui:grid'] as number | undefined;\n const className = uiSchema?.['ui:className'] as string | undefined;\n\n // Collapsible state\n const [isOpen, setIsOpen] = useState(!defaultCollapsed);\n\n // Check if this is root object (no title usually means root)\n const isRoot = !title;\n\n // Grid class based on columns\n const gridClass = gridCols\n ? `grid gap-4 grid-cols-${gridCols}`\n : 'space-y-4';\n\n // Content wrapper\n const content = (\n <div className={cn(gridClass, className)}>\n {properties.map((element) => (\n <div key={element.name} className=\"property-wrapper\">\n {element.content}\n </div>\n ))}\n </div>\n );\n\n // Root object - no wrapper\n if (isRoot) {\n return <div className=\"space-y-6\">{content}</div>;\n }\n\n // Collapsible group\n if (isCollapsible) {\n return (\n <Collapsible open={isOpen} onOpenChange={setIsOpen} className=\"space-y-2\">\n <CollapsibleTrigger className=\"flex w-full items-center justify-between rounded-lg border bg-muted/50 px-4 py-3 text-left hover:bg-muted transition-colors\">\n <div>\n <h3 className=\"text-sm font-semibold\">\n {title}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">{description}</p>\n )}\n </div>\n <ChevronDown\n className={cn(\n 'h-4 w-4 text-muted-foreground transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pl-1 pr-1 pt-2\">\n {content}\n </CollapsibleContent>\n </Collapsible>\n );\n }\n\n // Regular group with title\n return (\n <div className=\"space-y-4\">\n {title && (\n <div className=\"border-b pb-2\">\n <h3 className=\"text-sm font-semibold\">\n {title}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground mt-1\">{description}</p>\n )}\n </div>\n )}\n {content}\n </div>\n );\n}\n","\"use client\"\n\nimport { Plus } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@djangocfg/ui-core/components';\nimport { ArrayFieldTemplateProps } from '@rjsf/utils';\n\n/**\n * Array field template for JSON Schema Form\n * Renders array items with add/remove controls\n *\n * NOTE: In RJSF v6, `items` is an array of ReactElement (already rendered),\n * NOT an array of objects with {children, hasRemove, etc.}.\n * The actual rendering of each item (including remove buttons) is handled\n * by ArrayFieldItemTemplate.\n */\nexport function ArrayFieldTemplate(props: ArrayFieldTemplateProps) {\n const {\n title,\n items,\n canAdd,\n onAddClick,\n required,\n } = props;\n\n return (\n <div className=\"space-y-4\">\n {title && (\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-semibold\">\n {title}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </h3>\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onAddClick}\n className=\"gap-2\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Item\n </Button>\n )}\n </div>\n )}\n\n {/* In RJSF v6, items is already an array of ReactElements */}\n <div className=\"space-y-3\">\n {items}\n </div>\n\n {items.length === 0 && (\n <div className=\"text-center py-8 text-muted-foreground border-2 border-dashed rounded-md\">\n No items added yet.\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={onAddClick}\n className=\"mt-2 gap-2\"\n >\n <Plus className=\"h-4 w-4\" />\n Add First Item\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","\"use client\"\n\nimport React from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { ArrayFieldItemTemplateProps, getTemplate, getUiOptions } from '@rjsf/utils';\n\n/**\n * Array field item template for JSON Schema Form\n * Renders individual array items with proper styling and action buttons\n *\n * In RJSF v6, this template is responsible for rendering each item in an array,\n * including the item content (children) and the action buttons (remove, move up/down, copy).\n */\nexport function ArrayFieldItemTemplate(props: ArrayFieldItemTemplateProps) {\n const {\n children,\n className,\n buttonsProps,\n hasToolbar,\n registry,\n uiSchema,\n } = props;\n\n const uiOptions = getUiOptions(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate(\n 'ArrayFieldItemButtonsTemplate',\n registry,\n uiOptions,\n );\n\n return (\n <div\n className={cn(\n 'flex gap-2 items-start p-4 rounded-md border bg-card',\n className\n )}\n >\n <div className=\"flex-1\">{children}</div>\n {hasToolbar && (\n <div className=\"flex items-center gap-1\">\n <ArrayFieldItemButtonsTemplate {...buttonsProps} />\n </div>\n )}\n </div>\n );\n}\n","\"use client\"\n\nimport { AlertCircle } from 'lucide-react';\nimport React from 'react';\n\nimport { Alert, AlertDescription, AlertTitle } from '@djangocfg/ui-core/components';\nimport { ErrorListProps } from '@rjsf/utils';\n\n/**\n * Error list template for JSON Schema Form\n * Displays validation errors at the top of the form\n */\nexport function ErrorListTemplate(props: ErrorListProps) {\n const { errors } = props;\n\n if (!errors || errors.length === 0) {\n return null;\n }\n\n return (\n <Alert variant=\"destructive\" className=\"mb-6\">\n <AlertCircle className=\"h-4 w-4\" />\n <AlertTitle>Validation Errors</AlertTitle>\n <AlertDescription>\n <ul className=\"list-disc list-inside space-y-1 mt-2\">\n {errors.map((error, index) => (\n <li key={index} className=\"text-sm\">\n {error.stack}\n </li>\n ))}\n </ul>\n </AlertDescription>\n </Alert>\n );\n}\n","\"use client\"\n\nimport React, { ChangeEvent, FocusEvent, useCallback, useMemo } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { getInputProps, WidgetProps } from '@rjsf/utils';\n\n/**\n * Base input template for JSON Schema Form\n *\n * This template is CRITICAL for rendering primitive types (string, number)\n * inside arrays. Without it, array items with primitive types will render\n * as empty containers.\n *\n * RJSF uses this template for:\n * - Array items with primitive types (e.g., array of strings)\n * - Fields without explicit widget mapping\n * - All text-based widgets internally\n *\n * @see https://rjsf-team.github.io/react-jsonschema-form/docs/advanced-customization/custom-templates/#baseinputtemplate\n */\nexport function BaseInputTemplate(props: WidgetProps) {\n const {\n id,\n type,\n value,\n readonly,\n disabled,\n autofocus,\n onBlur,\n onFocus,\n onChange,\n options,\n schema,\n rawErrors,\n placeholder,\n } = props;\n\n // Get input props from RJSF utils (handles step, min, max, etc.)\n const inputProps = useMemo(() => {\n return getInputProps(schema, type, options);\n }, [schema, type, options]);\n\n // Safely convert value to string for input\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n // Handle text change - transform empty strings based on schema type\n const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n const val = event.target.value;\n\n // Empty value handling\n if (val === '') {\n onChange(options?.emptyValue ?? '');\n return;\n }\n\n // Number type conversion\n if (inputProps.type === 'number' || schema.type === 'number' || schema.type === 'integer') {\n const num = Number(val);\n onChange(isNaN(num) ? val : num);\n return;\n }\n\n onChange(val);\n }, [onChange, inputProps.type, schema.type, options?.emptyValue]);\n\n const handleBlur = useCallback((event: FocusEvent<HTMLInputElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: FocusEvent<HTMLInputElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n // Determine input type\n const inputType = useMemo(() => {\n if (inputProps.type) return inputProps.type;\n if (schema.type === 'number' || schema.type === 'integer') return 'number';\n return 'text';\n }, [inputProps.type, schema.type]);\n\n return (\n <Input\n id={id}\n type={inputType}\n value={safeValue}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n className={hasError ? 'border-destructive' : ''}\n step={inputProps.step}\n min={inputProps.min}\n max={inputProps.max}\n />\n );\n}\n","import { isDev } from \"@djangocfg/ui-core/lib\";\nimport consola from 'consola';\n\nimport { RJSFSchema } from '@rjsf/utils';\n\n/**\n * Utility functions for JSON Schema Form\n */\n\n/**\n * Safely validates and normalizes JSON Schema\n * Ensures schema is valid before rendering\n */\nexport function validateSchema(schema: any): RJSFSchema | null {\n if (!schema || typeof schema !== 'object') {\n if (isDev) {\n consola.error('[JsonSchemaForm] Invalid schema: must be an object', schema);\n }\n return null;\n }\n\n // Basic schema validation - more permissive\n // Schema is valid if it has type OR properties OR $ref OR $schema\n const hasValidStructure =\n schema.type ||\n schema.properties ||\n schema.$ref ||\n schema.$schema;\n\n if (!hasValidStructure) {\n if (isDev) {\n consola.error('[JsonSchemaForm] Invalid schema: missing type, properties, $ref, or $schema', schema);\n }\n return null;\n }\n\n if (isDev) {\n consola.success('[JsonSchemaForm] Schema validated successfully:', {\n type: schema.type,\n title: schema.title,\n hasProperties: !!schema.properties,\n hasRequired: !!schema.required,\n });\n }\n\n return schema as RJSFSchema;\n}\n\n/**\n * Safely normalizes form data\n * Removes undefined values and ensures data structure matches schema\n */\nexport function normalizeFormData<T = any>(\n formData: any,\n schema: RJSFSchema\n): T {\n if (formData === null || formData === undefined) {\n return (schema.type === 'object' ? {} : schema.type === 'array' ? [] : null) as T;\n }\n\n // Deep clone to avoid mutations\n const normalized = JSON.parse(JSON.stringify(formData));\n\n // Remove undefined values recursively\n return removeUndefined(normalized) as T;\n}\n\n/**\n * Recursively removes undefined values from an object\n */\nfunction removeUndefined(obj: any): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(removeUndefined).filter((item) => item !== undefined);\n }\n\n if (typeof obj === 'object') {\n const cleaned: any = {};\n for (const key in obj) {\n if (obj[key] !== undefined) {\n cleaned[key] = removeUndefined(obj[key]);\n }\n }\n return cleaned;\n }\n\n return obj;\n}\n\n/**\n * Merges schema defaults with form data\n */\nexport function mergeDefaults(\n formData: any,\n schema: RJSFSchema\n): any {\n if (!schema) return formData;\n\n const result = { ...formData };\n\n if (schema.type === 'object' && schema.properties) {\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n const prop = propSchema as RJSFSchema;\n\n // Apply default if field is missing\n if (result[key] === undefined && prop.default !== undefined) {\n result[key] = prop.default;\n }\n\n // Recursively merge nested objects\n if (prop.type === 'object' && result[key]) {\n result[key] = mergeDefaults(result[key], prop);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Safely parses JSON string with error handling\n */\nexport function safeJsonParse<T = any>(\n jsonString: string,\n fallback: T\n): T {\n try {\n return JSON.parse(jsonString);\n } catch (error) {\n consola.error('[JsonSchemaForm] JSON parse error:', error);\n return fallback;\n }\n}\n\n/**\n * Safely stringifies object to JSON\n */\nexport function safeJsonStringify(\n obj: any,\n pretty: boolean = true\n): string {\n try {\n return JSON.stringify(obj, null, pretty ? 2 : 0);\n } catch (error) {\n consola.error('[JsonSchemaForm] JSON stringify error:', error);\n return '{}';\n }\n}\n\n/**\n * Checks if schema has required fields\n */\nexport function hasRequiredFields(schema: RJSFSchema): boolean {\n return Array.isArray(schema.required) && schema.required.length > 0;\n}\n\n/**\n * Gets all required field paths from schema\n */\nexport function getRequiredFields(\n schema: RJSFSchema,\n prefix: string = ''\n): string[] {\n const required: string[] = [];\n\n if (schema.required && Array.isArray(schema.required)) {\n required.push(...schema.required.map((field) =>\n prefix ? `${prefix}.${field}` : field\n ));\n }\n\n if (schema.type === 'object' && schema.properties) {\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n const prop = propSchema as RJSFSchema;\n const fieldPath = prefix ? `${prefix}.${key}` : key;\n required.push(...getRequiredFields(prop, fieldPath));\n }\n }\n\n return required;\n}\n\n/**\n * Validates form data against required fields\n */\nexport function validateRequiredFields(\n formData: any,\n schema: RJSFSchema\n): { valid: boolean; missing: string[] } {\n const requiredFields = getRequiredFields(schema);\n const missing: string[] = [];\n\n for (const field of requiredFields) {\n const value = getNestedValue(formData, field);\n if (value === undefined || value === null || value === '') {\n missing.push(field);\n }\n }\n\n return {\n valid: missing.length === 0,\n missing,\n };\n}\n\n/**\n * Gets nested value from object by path\n */\nfunction getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((current, key) => current?.[key], obj);\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Text input widget for JSON Schema Form\n * Handles string fields with optional textarea for multiline\n */\nexport function TextWidget(props: WidgetProps) {\n const {\n id,\n placeholder,\n required,\n disabled,\n readonly,\n autofocus,\n value,\n onChange,\n onBlur,\n onFocus,\n options,\n schema,\n rawErrors,\n } = props;\n\n // Memoize widget configuration\n const config = useMemo(() => ({\n isTextarea: options?.widget === 'textarea',\n rows: options?.rows || 3,\n emptyValue: options?.emptyValue,\n }), [options]);\n\n // Ensure value is always a string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const newValue = event.target.value;\n onChange(newValue === '' ? config.emptyValue : newValue);\n }, [onChange, config.emptyValue]);\n\n const handleBlur = useCallback((event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n if (config.isTextarea) {\n return (\n <textarea\n id={id}\n className={`flex min-h-[80px] w-full rounded-md border ${\n hasError ? 'border-destructive' : 'border-input'\n } bg-transparent px-3 py-2 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`}\n placeholder={placeholder}\n disabled={disabled || readonly}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n rows={config.rows}\n />\n );\n }\n\n return (\n <Input\n id={id}\n type=\"text\"\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n className={hasError ? 'border-destructive' : ''}\n />\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Number input widget for JSON Schema Form\n * Handles integer and number fields\n */\nexport function NumberWidget(props: WidgetProps) {\n const {\n id,\n placeholder,\n required,\n disabled,\n readonly,\n autofocus,\n value,\n onChange,\n onBlur,\n onFocus,\n options,\n schema,\n rawErrors,\n } = props;\n\n // Memoize widget configuration\n const config = useMemo(() => ({\n isInteger: schema.type === 'integer',\n step: schema.type === 'integer' ? '1' : 'any',\n min: schema.minimum,\n max: schema.maximum,\n emptyValue: options?.emptyValue,\n }), [schema, options]);\n\n // Ensure value is valid number or empty string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined || value === '') return '';\n if (typeof value === 'number' && !isNaN(value)) return value;\n return '';\n }, [value]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n if (newValue === '') {\n onChange(config.emptyValue);\n } else {\n const parsedValue = config.isInteger\n ? parseInt(newValue, 10)\n : parseFloat(newValue);\n\n onChange(isNaN(parsedValue) ? config.emptyValue : parsedValue);\n }\n }, [onChange, config]);\n\n const handleBlur = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n return (\n <Input\n id={id}\n type=\"number\"\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n step={config.step}\n min={config.min}\n max={config.max}\n className={hasError ? 'border-destructive' : ''}\n />\n );\n}\n","import React from 'react';\n\nimport { Checkbox } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Checkbox widget for JSON Schema Form\n * Handles boolean fields\n */\nexport function CheckboxWidget(props: WidgetProps) {\n const {\n id,\n value,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n } = props;\n\n const handleChange = (checked: boolean) => {\n onChange(checked);\n };\n\n return (\n <Checkbox\n id={id}\n checked={value || false}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onCheckedChange={handleChange}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n />\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n Select, SelectContent, SelectItem, SelectTrigger, SelectValue\n} from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Select dropdown widget for JSON Schema Form\n * Handles enum fields\n */\nexport function SelectWidget(props: WidgetProps) {\n const {\n id,\n options,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n placeholder,\n rawErrors,\n } = props;\n\n // Safely extract and validate enum options\n const enumOptions = useMemo(() => {\n const opts = options?.enumOptions;\n if (!Array.isArray(opts)) return [];\n return opts.filter(opt => opt && (opt.value !== undefined));\n }, [options]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n // Ensure value is always a string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n const handleChange = useCallback((newValue: string) => {\n onChange(newValue);\n onBlur(id, newValue);\n }, [onChange, onBlur, id]);\n\n // If no enum options, render a text input instead\n // This handles cases like anyOf/oneOf where RJSF might incorrectly use SelectWidget\n if (enumOptions.length === 0) {\n return (\n <input\n id={id}\n type=\"text\"\n value={safeValue}\n onChange={(e) => onChange(e.target.value)}\n onBlur={(e) => onBlur(id, e.target.value)}\n onFocus={(e) => onFocus(id, e.target.value)}\n disabled={disabled || readonly}\n readOnly={readonly}\n className={`flex h-10 w-full rounded-md border ${\n hasError ? 'border-destructive' : 'border-input'\n } bg-transparent px-3 py-2 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`}\n placeholder={placeholder}\n />\n );\n }\n\n return (\n <Select\n value={safeValue}\n onValueChange={handleChange}\n disabled={disabled || readonly}\n required={required}\n >\n <SelectTrigger\n id={id}\n className={hasError ? 'border-destructive' : ''}\n autoFocus={autofocus}\n onFocus={() => onFocus(id, value)}\n >\n <SelectValue placeholder={placeholder || 'Select an option'} />\n </SelectTrigger>\n <SelectContent>\n {enumOptions.map((option: any) => (\n <SelectItem key={String(option.value)} value={String(option.value)}>\n {option.label || String(option.value)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n","import React from 'react';\n\nimport { Switch } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Switch toggle widget for JSON Schema Form\n * Alternative boolean input\n */\nexport function SwitchWidget(props: WidgetProps) {\n const {\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n onFocus,\n } = props;\n\n const handleChange = (checked: boolean) => {\n onChange(checked);\n };\n\n return (\n <Switch\n id={id}\n checked={value || false}\n disabled={disabled || readonly}\n onCheckedChange={handleChange}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n />\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo, useRef } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { useAppT } from '@djangocfg/i18n';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Color input widget for JSON Schema Form\n * Supports HSL format (h s% l%) and HEX format\n * Click on color box to open native color picker directly\n */\nexport function ColorWidget(props: WidgetProps) {\n const {\n id,\n placeholder,\n required,\n disabled,\n readonly,\n autofocus,\n value,\n onChange,\n onBlur,\n onFocus,\n options,\n rawErrors,\n } = props;\n\n const t = useAppT();\n const pickColorLabel = useMemo(() => t('tools.color.pick'), [t]);\n const colorInputRef = useRef<HTMLInputElement>(null);\n\n // Determine format from options or auto-detect from value\n const format = useMemo(() => {\n if (options?.format) return options.format as 'hsl' | 'hex';\n if (typeof value === 'string' && value.startsWith('#')) return 'hex';\n return 'hsl';\n }, [options?.format, value]);\n\n // Ensure value is always a string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n // Convert HSL string (like \"217 91% 60%\") to CSS hsl() value\n const hslToCss = useCallback((hslValue: string): string => {\n if (!hslValue) return 'transparent';\n if (hslValue.startsWith('#')) return hslValue;\n if (hslValue.startsWith('hsl')) return hslValue;\n // Format: \"h s% l%\" -> \"hsl(h, s%, l%)\"\n const parts = hslValue.split(' ');\n if (parts.length === 3) {\n return `hsl(${parts[0]}, ${parts[1]}, ${parts[2]})`;\n }\n return 'transparent';\n }, []);\n\n // Convert CSS color to preview color\n const previewColor = useMemo(() => {\n return hslToCss(safeValue);\n }, [safeValue, hslToCss]);\n\n // Convert hex to HSL string for internal storage\n const hexToHsl = useCallback((hex: string): string => {\n // Remove # if present\n hex = hex.replace('#', '');\n\n // Parse hex values\n const r = parseInt(hex.substring(0, 2), 16) / 255;\n const g = parseInt(hex.substring(2, 4), 16) / 255;\n const b = parseInt(hex.substring(4, 6), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;\n }, []);\n\n // Convert HSL to hex\n const hslToHex = useCallback((hslValue: string): string => {\n if (!hslValue || hslValue.startsWith('#')) return hslValue || '#000000';\n\n const parts = hslValue.split(' ');\n if (parts.length !== 3) return '#000000';\n\n const h = parseInt(parts[0]) / 360;\n const s = parseInt(parts[1].replace('%', '')) / 100;\n const l = parseInt(parts[2].replace('%', '')) / 100;\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n let r, g, b;\n if (s === 0) {\n r = g = b = l;\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n const toHex = (x: number) => {\n const hex = Math.round(x * 255).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }, []);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n onChange(newValue);\n }, [onChange]);\n\n const handleColorPickerChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const hexValue = event.target.value;\n if (format === 'hsl') {\n onChange(hexToHsl(hexValue));\n } else {\n onChange(hexValue);\n }\n }, [onChange, format, hexToHsl]);\n\n const handleBlur = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n // Get hex value for native color picker\n const hexValue = useMemo(() => {\n if (format === 'hex' || safeValue.startsWith('#')) {\n return safeValue || '#000000';\n }\n return hslToHex(safeValue);\n }, [safeValue, format, hslToHex]);\n\n // Click on color box opens native color picker\n const handleColorBoxClick = useCallback(() => {\n if (!disabled && !readonly) {\n colorInputRef.current?.click();\n }\n }, [disabled, readonly]);\n\n return (\n <div className=\"flex items-center gap-2\">\n {/* Color preview box - clicking opens native picker */}\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={handleColorBoxClick}\n disabled={disabled || readonly}\n className=\"h-10 w-10 shrink-0 rounded-md border-2 border-input cursor-pointer hover:border-ring focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\"\n style={{ backgroundColor: previewColor }}\n aria-label={pickColorLabel}\n />\n {/* Hidden native color input */}\n <input\n ref={colorInputRef}\n type=\"color\"\n value={hexValue}\n onChange={handleColorPickerChange}\n className=\"absolute inset-0 opacity-0 w-full h-full cursor-pointer\"\n disabled={disabled || readonly}\n tabIndex={-1}\n />\n </div>\n\n {/* Text input for manual HSL/HEX entry */}\n <Input\n id={id}\n type=\"text\"\n placeholder={placeholder || (format === 'hsl' ? '217 91% 60%' : '#3b82f6')}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n className={`flex-1 font-mono text-sm ${hasError ? 'border-destructive' : ''}`}\n />\n </div>\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Input, Slider } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Slider widget for JSON Schema Form\n *\n * Supports:\n * - number/integer types\n * - min/max from schema\n * - step from schema or options\n * - unit suffix (e.g., \"rem\", \"px\", \"%\")\n * - optional text input for precise values\n *\n * Usage in uiSchema:\n * ```json\n * {\n * \"radius\": {\n * \"ui:widget\": \"slider\",\n * \"ui:options\": {\n * \"unit\": \"rem\",\n * \"showInput\": true,\n * \"step\": 0.125\n * }\n * }\n * }\n * ```\n */\nexport function SliderWidget(props: WidgetProps) {\n const {\n id,\n disabled,\n readonly,\n value,\n onChange,\n schema,\n options,\n rawErrors,\n } = props;\n\n // Extract configuration\n const config = useMemo(() => {\n const min = schema.minimum ?? options?.min ?? 0;\n const max = schema.maximum ?? options?.max ?? 100;\n const step = options?.step ?? (schema.type === 'integer' ? 1 : 0.1);\n const unit = options?.unit as string | undefined;\n const showInput = options?.showInput !== false; // default true\n\n return { min, max, step, unit, showInput };\n }, [schema, options]);\n\n // Parse value - handle string values like \"0.5rem\"\n const numericValue = useMemo(() => {\n if (value === null || value === undefined || value === '') {\n return config.min;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n // Extract number from string like \"0.5rem\"\n const parsed = parseFloat(value);\n return isNaN(parsed) ? config.min : parsed;\n }\n return config.min;\n }, [value, config.min]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n // Handle slider change\n const handleSliderChange = useCallback((values: number[]) => {\n const newValue = values[0];\n if (config.unit) {\n onChange(`${newValue}${config.unit}`);\n } else {\n onChange(newValue);\n }\n }, [onChange, config.unit]);\n\n // Handle text input change\n const handleInputChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = event.target.value;\n\n // If has unit, just store raw value with unit\n if (config.unit) {\n // Remove unit if user typed it, then add it back\n const cleanValue = inputValue.replace(config.unit, '').trim();\n const parsed = parseFloat(cleanValue);\n if (!isNaN(parsed)) {\n onChange(`${parsed}${config.unit}`);\n } else if (inputValue === '') {\n onChange(`${config.min}${config.unit}`);\n }\n } else {\n const parsed = parseFloat(inputValue);\n onChange(isNaN(parsed) ? config.min : parsed);\n }\n }, [onChange, config.unit, config.min]);\n\n // Display value with unit\n const displayValue = useMemo(() => {\n if (config.unit) {\n return `${numericValue}${config.unit}`;\n }\n return String(numericValue);\n }, [numericValue, config.unit]);\n\n return (\n <div className={cn('flex items-center gap-3', hasError && 'text-destructive')}>\n {/* Slider */}\n <Slider\n id={id}\n disabled={disabled || readonly}\n value={[numericValue]}\n onValueChange={handleSliderChange}\n min={config.min}\n max={config.max}\n step={config.step}\n className=\"flex-1\"\n />\n\n {/* Value input or display */}\n {config.showInput ? (\n <Input\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n readOnly={readonly}\n className={cn(\n 'w-20 text-center font-mono text-sm',\n hasError && 'border-destructive'\n )}\n />\n ) : (\n <span className=\"w-16 text-right font-mono text-sm text-muted-foreground\">\n {displayValue}\n </span>\n )}\n </div>\n );\n}\n","'use client';\n\nimport consola from 'consola';\nimport { isDev } from '@djangocfg/ui-core/lib';\nimport { AlertCircle } from 'lucide-react';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Alert, AlertDescription, Button } from '@djangocfg/ui-core/components';\nimport Form from '@rjsf/core';\nimport { RegistryWidgetsType } from '@rjsf/utils';\nimport validator from '@rjsf/validator-ajv8';\n\nimport {\n ArrayFieldItemTemplate, ArrayFieldTemplate, BaseInputTemplate, ErrorListTemplate, FieldTemplate,\n ObjectFieldTemplate\n} from './templates';\nimport { JsonSchemaFormProps } from './types';\nimport { normalizeFormData, validateSchema } from './utils';\nimport {\n CheckboxWidget, ColorWidget, NumberWidget, SelectWidget, SliderWidget, SwitchWidget, TextWidget\n} from './widgets';\n\n/**\n * JSON Schema Form Component\n *\n * A fully-featured form generator that creates forms from JSON Schema.\n * Built on top of react-jsonschema-form with custom widgets and templates\n * using @djangocfg/ui components.\n *\n * @example\n * ```tsx\n * const schema = {\n * type: 'object',\n * required: ['name'],\n * properties: {\n * name: { type: 'string', title: 'Name' },\n * age: { type: 'number', title: 'Age' },\n * active: { type: 'boolean', title: 'Active' }\n * }\n * };\n *\n * <JsonSchemaForm\n * schema={schema}\n * onSubmit={(data) => console.log(data.formData)}\n * />\n * ```\n */\nexport function JsonSchemaForm<T = any>(props: JsonSchemaFormProps<T>) {\n const {\n schema,\n uiSchema,\n formData,\n onSubmit,\n onChange,\n onError,\n showErrorList = 'top',\n liveValidate = false,\n disabled = false,\n readonly = false,\n className,\n showSubmitButton = true,\n submitButtonText = 'Submit',\n ...restProps\n } = props;\n\n // Validate and normalize schema before render\n const validatedSchema = useMemo(() => {\n if (isDev) {\n consola.info('[JsonSchemaForm] Validating schema...', schema);\n }\n const result = validateSchema(schema);\n if (!result && isDev) {\n consola.error('[JsonSchemaForm] Schema validation failed');\n }\n return result;\n }, [schema]);\n\n // Normalize form data before render\n const normalizedFormData = useMemo(() => {\n if (!validatedSchema) {\n if (isDev) {\n consola.warn('[JsonSchemaForm] Cannot normalize formData - invalid schema');\n }\n return null;\n }\n if (isDev) {\n consola.info('[JsonSchemaForm] Normalizing formData...', formData);\n }\n const normalized = normalizeFormData<T>(formData, validatedSchema);\n if (isDev) {\n consola.info('[JsonSchemaForm] Normalized formData:', normalized);\n }\n return normalized;\n }, [formData, validatedSchema]);\n\n // Memoize widgets mapping to prevent recreation on every render\n // IMPORTANT: Widget keys must match RJSF's expected names:\n // - For type: string -> uses 'TextWidget' or 'text'\n // - For type: number/integer -> uses 'updown' or 'range'\n // - For type: boolean -> uses 'checkbox' or 'select'\n // - For enum fields -> uses 'SelectWidget' or 'select'\n const widgets: RegistryWidgetsType = useMemo(() => ({\n // Standard widget names (PascalCase) - used by RJSF internally\n TextWidget,\n NumberWidget,\n CheckboxWidget,\n SelectWidget,\n SwitchWidget,\n ColorWidget,\n SliderWidget,\n // Lowercase aliases - for uiSchema 'ui:widget' references\n text: TextWidget,\n number: NumberWidget,\n checkbox: CheckboxWidget,\n select: SelectWidget,\n switch: SwitchWidget,\n color: ColorWidget,\n slider: SliderWidget,\n range: SliderWidget, // alias\n }), []);\n\n // Memoize templates to prevent recreation on every render\n const templates = useMemo(() => ({\n FieldTemplate,\n ObjectFieldTemplate,\n ArrayFieldTemplate,\n ArrayFieldItemTemplate,\n ErrorListTemplate,\n BaseInputTemplate,\n }), []);\n\n // Memoize callbacks\n const handleSubmit = useCallback((data: any) => {\n if (onSubmit) {\n // Ensure clean data on submit\n const cleanData = {\n ...data,\n formData: normalizeFormData(data.formData, validatedSchema!),\n };\n onSubmit(cleanData);\n }\n }, [onSubmit, validatedSchema]);\n\n const handleChange = useCallback((data: any) => {\n if (onChange) {\n onChange(data);\n }\n }, [onChange]);\n\n const handleError = useCallback((errors: any) => {\n if (onError) {\n onError(errors);\n }\n }, [onError]);\n\n // Early return if schema is invalid\n if (!validatedSchema) {\n return (\n <div className={className}>\n <Alert variant=\"destructive\">\n <AlertCircle className=\"h-4 w-4\" />\n <AlertDescription>\n Invalid schema provided. Please check the schema format.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n return (\n <div className={className}>\n <Form\n schema={validatedSchema}\n uiSchema={uiSchema}\n formData={normalizedFormData}\n validator={validator}\n widgets={widgets}\n templates={templates}\n onSubmit={handleSubmit}\n onChange={handleChange}\n onError={handleError}\n showErrorList={showErrorList}\n liveValidate={liveValidate}\n disabled={disabled}\n readonly={readonly}\n {...restProps}\n >\n {showSubmitButton && (\n <div className=\"mt-6 flex gap-2\">\n <Button type=\"submit\" disabled={disabled}>\n {submitButtonText}\n </Button>\n </div>\n )}\n </Form>\n </div>\n );\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCXVGN6ZW_cjs = require('./chunk-CXVGN6ZW.cjs');
|
|
4
4
|
require('./chunk-F2N7P5XU.cjs');
|
|
5
5
|
require('./chunk-77HQWEQ6.cjs');
|
|
6
6
|
require('./chunk-WGEGR3DF.cjs');
|
|
@@ -9,19 +9,19 @@ require('./chunk-WGEGR3DF.cjs');
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "VideoControls", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoControls; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "VideoErrorFallback", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoErrorFallback; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "VideoPlayer", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoPlayer; }
|
|
21
21
|
});
|
|
22
22
|
Object.defineProperty(exports, "createVideoErrorFallback", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkCXVGN6ZW_cjs.createVideoErrorFallback; }
|
|
25
25
|
});
|
|
26
|
-
//# sourceMappingURL=components-
|
|
27
|
-
//# sourceMappingURL=components-
|
|
26
|
+
//# sourceMappingURL=components-3RTH76CV.cjs.map
|
|
27
|
+
//# sourceMappingURL=components-3RTH76CV.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"components-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"components-3RTH76CV.cjs"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-
|
|
1
|
+
export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-2QY3LJR6.mjs';
|
|
2
2
|
import './chunk-JWB2EWQO.mjs';
|
|
3
3
|
import './chunk-5LBDYFWH.mjs';
|
|
4
4
|
import './chunk-CGILA3WO.mjs';
|
|
5
|
-
//# sourceMappingURL=components-
|
|
6
|
-
//# sourceMappingURL=components-
|
|
5
|
+
//# sourceMappingURL=components-OTK43IMD.mjs.map
|
|
6
|
+
//# sourceMappingURL=components-OTK43IMD.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"components-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"components-OTK43IMD.mjs"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkYZX6FH3H_cjs = require('./chunk-YZX6FH3H.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkCXVGN6ZW_cjs = require('./chunk-CXVGN6ZW.cjs');
|
|
5
5
|
require('./chunk-F2N7P5XU.cjs');
|
|
6
6
|
var chunkIHAY6FO6_cjs = require('./chunk-IHAY6FO6.cjs');
|
|
7
7
|
var chunk77HQWEQ6_cjs = require('./chunk-77HQWEQ6.cjs');
|
|
@@ -9,7 +9,7 @@ var chunkF2CMIIOH_cjs = require('./chunk-F2CMIIOH.cjs');
|
|
|
9
9
|
var chunkN7EDSU3Z_cjs = require('./chunk-N7EDSU3Z.cjs');
|
|
10
10
|
var chunkTNTCWAVZ_cjs = require('./chunk-TNTCWAVZ.cjs');
|
|
11
11
|
require('./chunk-G2A6SX5L.cjs');
|
|
12
|
-
var
|
|
12
|
+
var chunkL37FZYJU_cjs = require('./chunk-L37FZYJU.cjs');
|
|
13
13
|
var chunkPRPG2T2E_cjs = require('./chunk-PRPG2T2E.cjs');
|
|
14
14
|
var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
|
|
15
15
|
var React3 = require('react');
|
|
@@ -737,7 +737,7 @@ var LazyOpenapiViewer = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(({ config }) =>
|
|
|
737
737
|
}, "LazyOpenapiViewer");
|
|
738
738
|
LazyOpenapiViewer.displayName = "LazyOpenapiViewer";
|
|
739
739
|
var LazyJsonSchemaForm = createLazyComponent(
|
|
740
|
-
() => import('./JsonSchemaForm-
|
|
740
|
+
() => import('./JsonSchemaForm-IIYKSH6X.cjs').then((mod) => ({ default: mod.JsonSchemaForm })),
|
|
741
741
|
{
|
|
742
742
|
displayName: "LazyJsonSchemaForm",
|
|
743
743
|
fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -835,7 +835,7 @@ function VideoLoadingFallback() {
|
|
|
835
835
|
}
|
|
836
836
|
chunkWGEGR3DF_cjs.__name(VideoLoadingFallback, "VideoLoadingFallback");
|
|
837
837
|
var LazyVideoPlayer = createLazyComponent(
|
|
838
|
-
() => import('./components-
|
|
838
|
+
() => import('./components-3RTH76CV.cjs').then((mod) => ({ default: mod.VideoPlayer })),
|
|
839
839
|
{
|
|
840
840
|
displayName: "LazyVideoPlayer",
|
|
841
841
|
fallback: /* @__PURE__ */ jsxRuntime.jsx(VideoLoadingFallback, {})
|
|
@@ -1047,55 +1047,55 @@ Object.defineProperty(exports, "useVisualization", {
|
|
|
1047
1047
|
});
|
|
1048
1048
|
Object.defineProperty(exports, "NativeProvider", {
|
|
1049
1049
|
enumerable: true,
|
|
1050
|
-
get: function () { return
|
|
1050
|
+
get: function () { return chunkCXVGN6ZW_cjs.NativeProvider; }
|
|
1051
1051
|
});
|
|
1052
1052
|
Object.defineProperty(exports, "StreamProvider", {
|
|
1053
1053
|
enumerable: true,
|
|
1054
|
-
get: function () { return
|
|
1054
|
+
get: function () { return chunkCXVGN6ZW_cjs.StreamProvider; }
|
|
1055
1055
|
});
|
|
1056
1056
|
Object.defineProperty(exports, "VideoControls", {
|
|
1057
1057
|
enumerable: true,
|
|
1058
|
-
get: function () { return
|
|
1058
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoControls; }
|
|
1059
1059
|
});
|
|
1060
1060
|
Object.defineProperty(exports, "VideoErrorFallback", {
|
|
1061
1061
|
enumerable: true,
|
|
1062
|
-
get: function () { return
|
|
1062
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoErrorFallback; }
|
|
1063
1063
|
});
|
|
1064
1064
|
Object.defineProperty(exports, "VideoPlayer", {
|
|
1065
1065
|
enumerable: true,
|
|
1066
|
-
get: function () { return
|
|
1066
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoPlayer; }
|
|
1067
1067
|
});
|
|
1068
1068
|
Object.defineProperty(exports, "VideoPlayerProvider", {
|
|
1069
1069
|
enumerable: true,
|
|
1070
|
-
get: function () { return
|
|
1070
|
+
get: function () { return chunkCXVGN6ZW_cjs.VideoPlayerProvider; }
|
|
1071
1071
|
});
|
|
1072
1072
|
Object.defineProperty(exports, "VidstackProvider", {
|
|
1073
1073
|
enumerable: true,
|
|
1074
|
-
get: function () { return
|
|
1074
|
+
get: function () { return chunkCXVGN6ZW_cjs.VidstackProvider; }
|
|
1075
1075
|
});
|
|
1076
1076
|
Object.defineProperty(exports, "createVideoErrorFallback", {
|
|
1077
1077
|
enumerable: true,
|
|
1078
|
-
get: function () { return
|
|
1078
|
+
get: function () { return chunkCXVGN6ZW_cjs.createVideoErrorFallback; }
|
|
1079
1079
|
});
|
|
1080
1080
|
Object.defineProperty(exports, "isSimpleStreamSource", {
|
|
1081
1081
|
enumerable: true,
|
|
1082
|
-
get: function () { return
|
|
1082
|
+
get: function () { return chunkCXVGN6ZW_cjs.isSimpleStreamSource; }
|
|
1083
1083
|
});
|
|
1084
1084
|
Object.defineProperty(exports, "resolveFileSource", {
|
|
1085
1085
|
enumerable: true,
|
|
1086
|
-
get: function () { return
|
|
1086
|
+
get: function () { return chunkCXVGN6ZW_cjs.resolveFileSource; }
|
|
1087
1087
|
});
|
|
1088
1088
|
Object.defineProperty(exports, "resolvePlayerMode", {
|
|
1089
1089
|
enumerable: true,
|
|
1090
|
-
get: function () { return
|
|
1090
|
+
get: function () { return chunkCXVGN6ZW_cjs.resolvePlayerMode; }
|
|
1091
1091
|
});
|
|
1092
1092
|
Object.defineProperty(exports, "resolveStreamSource", {
|
|
1093
1093
|
enumerable: true,
|
|
1094
|
-
get: function () { return
|
|
1094
|
+
get: function () { return chunkCXVGN6ZW_cjs.resolveStreamSource; }
|
|
1095
1095
|
});
|
|
1096
1096
|
Object.defineProperty(exports, "useVideoPlayerContext", {
|
|
1097
1097
|
enumerable: true,
|
|
1098
|
-
get: function () { return
|
|
1098
|
+
get: function () { return chunkCXVGN6ZW_cjs.useVideoPlayerContext; }
|
|
1099
1099
|
});
|
|
1100
1100
|
Object.defineProperty(exports, "ImageViewer", {
|
|
1101
1101
|
enumerable: true,
|
|
@@ -1215,91 +1215,91 @@ Object.defineProperty(exports, "JsonTree", {
|
|
|
1215
1215
|
});
|
|
1216
1216
|
Object.defineProperty(exports, "ArrayFieldItemTemplate", {
|
|
1217
1217
|
enumerable: true,
|
|
1218
|
-
get: function () { return
|
|
1218
|
+
get: function () { return chunkL37FZYJU_cjs.ArrayFieldItemTemplate; }
|
|
1219
1219
|
});
|
|
1220
1220
|
Object.defineProperty(exports, "ArrayFieldTemplate", {
|
|
1221
1221
|
enumerable: true,
|
|
1222
|
-
get: function () { return
|
|
1222
|
+
get: function () { return chunkL37FZYJU_cjs.ArrayFieldTemplate; }
|
|
1223
1223
|
});
|
|
1224
1224
|
Object.defineProperty(exports, "BaseInputTemplate", {
|
|
1225
1225
|
enumerable: true,
|
|
1226
|
-
get: function () { return
|
|
1226
|
+
get: function () { return chunkL37FZYJU_cjs.BaseInputTemplate; }
|
|
1227
1227
|
});
|
|
1228
1228
|
Object.defineProperty(exports, "CheckboxWidget", {
|
|
1229
1229
|
enumerable: true,
|
|
1230
|
-
get: function () { return
|
|
1230
|
+
get: function () { return chunkL37FZYJU_cjs.CheckboxWidget; }
|
|
1231
1231
|
});
|
|
1232
1232
|
Object.defineProperty(exports, "ColorWidget", {
|
|
1233
1233
|
enumerable: true,
|
|
1234
|
-
get: function () { return
|
|
1234
|
+
get: function () { return chunkL37FZYJU_cjs.ColorWidget; }
|
|
1235
1235
|
});
|
|
1236
1236
|
Object.defineProperty(exports, "ErrorListTemplate", {
|
|
1237
1237
|
enumerable: true,
|
|
1238
|
-
get: function () { return
|
|
1238
|
+
get: function () { return chunkL37FZYJU_cjs.ErrorListTemplate; }
|
|
1239
1239
|
});
|
|
1240
1240
|
Object.defineProperty(exports, "FieldTemplate", {
|
|
1241
1241
|
enumerable: true,
|
|
1242
|
-
get: function () { return
|
|
1242
|
+
get: function () { return chunkL37FZYJU_cjs.FieldTemplate; }
|
|
1243
1243
|
});
|
|
1244
1244
|
Object.defineProperty(exports, "JsonSchemaForm", {
|
|
1245
1245
|
enumerable: true,
|
|
1246
|
-
get: function () { return
|
|
1246
|
+
get: function () { return chunkL37FZYJU_cjs.JsonSchemaForm; }
|
|
1247
1247
|
});
|
|
1248
1248
|
Object.defineProperty(exports, "NumberWidget", {
|
|
1249
1249
|
enumerable: true,
|
|
1250
|
-
get: function () { return
|
|
1250
|
+
get: function () { return chunkL37FZYJU_cjs.NumberWidget; }
|
|
1251
1251
|
});
|
|
1252
1252
|
Object.defineProperty(exports, "ObjectFieldTemplate", {
|
|
1253
1253
|
enumerable: true,
|
|
1254
|
-
get: function () { return
|
|
1254
|
+
get: function () { return chunkL37FZYJU_cjs.ObjectFieldTemplate; }
|
|
1255
1255
|
});
|
|
1256
1256
|
Object.defineProperty(exports, "SelectWidget", {
|
|
1257
1257
|
enumerable: true,
|
|
1258
|
-
get: function () { return
|
|
1258
|
+
get: function () { return chunkL37FZYJU_cjs.SelectWidget; }
|
|
1259
1259
|
});
|
|
1260
1260
|
Object.defineProperty(exports, "SliderWidget", {
|
|
1261
1261
|
enumerable: true,
|
|
1262
|
-
get: function () { return
|
|
1262
|
+
get: function () { return chunkL37FZYJU_cjs.SliderWidget; }
|
|
1263
1263
|
});
|
|
1264
1264
|
Object.defineProperty(exports, "SwitchWidget", {
|
|
1265
1265
|
enumerable: true,
|
|
1266
|
-
get: function () { return
|
|
1266
|
+
get: function () { return chunkL37FZYJU_cjs.SwitchWidget; }
|
|
1267
1267
|
});
|
|
1268
1268
|
Object.defineProperty(exports, "TextWidget", {
|
|
1269
1269
|
enumerable: true,
|
|
1270
|
-
get: function () { return
|
|
1270
|
+
get: function () { return chunkL37FZYJU_cjs.TextWidget; }
|
|
1271
1271
|
});
|
|
1272
1272
|
Object.defineProperty(exports, "getRequiredFields", {
|
|
1273
1273
|
enumerable: true,
|
|
1274
|
-
get: function () { return
|
|
1274
|
+
get: function () { return chunkL37FZYJU_cjs.getRequiredFields; }
|
|
1275
1275
|
});
|
|
1276
1276
|
Object.defineProperty(exports, "hasRequiredFields", {
|
|
1277
1277
|
enumerable: true,
|
|
1278
|
-
get: function () { return
|
|
1278
|
+
get: function () { return chunkL37FZYJU_cjs.hasRequiredFields; }
|
|
1279
1279
|
});
|
|
1280
1280
|
Object.defineProperty(exports, "mergeDefaults", {
|
|
1281
1281
|
enumerable: true,
|
|
1282
|
-
get: function () { return
|
|
1282
|
+
get: function () { return chunkL37FZYJU_cjs.mergeDefaults; }
|
|
1283
1283
|
});
|
|
1284
1284
|
Object.defineProperty(exports, "normalizeFormData", {
|
|
1285
1285
|
enumerable: true,
|
|
1286
|
-
get: function () { return
|
|
1286
|
+
get: function () { return chunkL37FZYJU_cjs.normalizeFormData; }
|
|
1287
1287
|
});
|
|
1288
1288
|
Object.defineProperty(exports, "safeJsonParse", {
|
|
1289
1289
|
enumerable: true,
|
|
1290
|
-
get: function () { return
|
|
1290
|
+
get: function () { return chunkL37FZYJU_cjs.safeJsonParse; }
|
|
1291
1291
|
});
|
|
1292
1292
|
Object.defineProperty(exports, "safeJsonStringify", {
|
|
1293
1293
|
enumerable: true,
|
|
1294
|
-
get: function () { return
|
|
1294
|
+
get: function () { return chunkL37FZYJU_cjs.safeJsonStringify; }
|
|
1295
1295
|
});
|
|
1296
1296
|
Object.defineProperty(exports, "validateRequiredFields", {
|
|
1297
1297
|
enumerable: true,
|
|
1298
|
-
get: function () { return
|
|
1298
|
+
get: function () { return chunkL37FZYJU_cjs.validateRequiredFields; }
|
|
1299
1299
|
});
|
|
1300
1300
|
Object.defineProperty(exports, "validateSchema", {
|
|
1301
1301
|
enumerable: true,
|
|
1302
|
-
get: function () { return
|
|
1302
|
+
get: function () { return chunkL37FZYJU_cjs.validateSchema; }
|
|
1303
1303
|
});
|
|
1304
1304
|
Object.defineProperty(exports, "useLottie", {
|
|
1305
1305
|
enumerable: true,
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { AudioReactiveCover, COLOR_SCHEMES, COLOR_SCHEME_INFO, EFFECT_ANIMATIONS, GlowEffect, HybridAudioPlayer, HybridAudioProvider, HybridSimplePlayer, HybridWaveform, INTENSITY_CONFIG, INTENSITY_INFO, MeshEffect, OrbsEffect, SpotlightEffect, VARIANT_INFO, VisualizationProvider, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, formatTime, getColors, getEffectConfig, prepareEffectColors, useAudioBus, useAudioBusStore, useAudioVisualization, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useVisualization } from './chunk-HMHIVEMS.mjs';
|
|
2
|
-
export { NativeProvider, StreamProvider, VideoControls, VideoErrorFallback, VideoPlayer, VideoPlayerProvider, VidstackProvider, createVideoErrorFallback, isSimpleStreamSource, resolveFileSource, resolvePlayerMode, resolveStreamSource, useVideoPlayerContext } from './chunk-
|
|
2
|
+
export { NativeProvider, StreamProvider, VideoControls, VideoErrorFallback, VideoPlayer, VideoPlayerProvider, VidstackProvider, createVideoErrorFallback, isSimpleStreamSource, resolveFileSource, resolvePlayerMode, resolveStreamSource, useVideoPlayerContext } from './chunk-2QY3LJR6.mjs';
|
|
3
3
|
import './chunk-JWB2EWQO.mjs';
|
|
4
4
|
export { ImageViewer } from './chunk-GGKGH5PM.mjs';
|
|
5
5
|
export { generateContentKey, useAudioCache, useBlobUrlCleanup, useImageCache, useMediaCacheStore, useVideoCache, useVideoPlayerSettings } from './chunk-5LBDYFWH.mjs';
|
|
@@ -8,7 +8,7 @@ import { PlaygroundProvider, PrettyCode_default } from './chunk-TSDCMPCW.mjs';
|
|
|
8
8
|
export { PrettyCode_default as PrettyCode } from './chunk-TSDCMPCW.mjs';
|
|
9
9
|
export { JsonTree_default as JsonTree } from './chunk-C5PVPPR7.mjs';
|
|
10
10
|
import './chunk-MBFBVGUP.mjs';
|
|
11
|
-
export { ArrayFieldItemTemplate, ArrayFieldTemplate, BaseInputTemplate, CheckboxWidget, ColorWidget, ErrorListTemplate, FieldTemplate, JsonSchemaForm, NumberWidget, ObjectFieldTemplate, SelectWidget, SliderWidget, SwitchWidget, TextWidget, getRequiredFields, hasRequiredFields, mergeDefaults, normalizeFormData, safeJsonParse, safeJsonStringify, validateRequiredFields, validateSchema } from './chunk-
|
|
11
|
+
export { ArrayFieldItemTemplate, ArrayFieldTemplate, BaseInputTemplate, CheckboxWidget, ColorWidget, ErrorListTemplate, FieldTemplate, JsonSchemaForm, NumberWidget, ObjectFieldTemplate, SelectWidget, SliderWidget, SwitchWidget, TextWidget, getRequiredFields, hasRequiredFields, mergeDefaults, normalizeFormData, safeJsonParse, safeJsonStringify, validateRequiredFields, validateSchema } from './chunk-JUGQNNDC.mjs';
|
|
12
12
|
export { useLottie } from './chunk-6JTB2X72.mjs';
|
|
13
13
|
import { __name } from './chunk-CGILA3WO.mjs';
|
|
14
14
|
import * as React3 from 'react';
|
|
@@ -713,7 +713,7 @@ var LazyOpenapiViewer = /* @__PURE__ */ __name(({ config }) => {
|
|
|
713
713
|
}, "LazyOpenapiViewer");
|
|
714
714
|
LazyOpenapiViewer.displayName = "LazyOpenapiViewer";
|
|
715
715
|
var LazyJsonSchemaForm = createLazyComponent(
|
|
716
|
-
() => import('./JsonSchemaForm-
|
|
716
|
+
() => import('./JsonSchemaForm-RN3XWSWX.mjs').then((mod) => ({ default: mod.JsonSchemaForm })),
|
|
717
717
|
{
|
|
718
718
|
displayName: "LazyJsonSchemaForm",
|
|
719
719
|
fallback: /* @__PURE__ */ jsx(
|
|
@@ -811,7 +811,7 @@ function VideoLoadingFallback() {
|
|
|
811
811
|
}
|
|
812
812
|
__name(VideoLoadingFallback, "VideoLoadingFallback");
|
|
813
813
|
var LazyVideoPlayer = createLazyComponent(
|
|
814
|
-
() => import('./components-
|
|
814
|
+
() => import('./components-OTK43IMD.mjs').then((mod) => ({ default: mod.VideoPlayer })),
|
|
815
815
|
{
|
|
816
816
|
displayName: "LazyVideoPlayer",
|
|
817
817
|
fallback: /* @__PURE__ */ jsx(VideoLoadingFallback, {})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@djangocfg/ui-tools",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.235",
|
|
4
4
|
"description": "Heavy React tools with lazy loading - for Electron, Vite, CRA, Next.js apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ui-tools",
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"check": "tsc --noEmit"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
81
|
-
"@djangocfg/i18n": "^2.1.
|
|
82
|
-
"@djangocfg/ui-core": "^2.1.
|
|
81
|
+
"@djangocfg/i18n": "^2.1.235",
|
|
82
|
+
"@djangocfg/ui-core": "^2.1.235",
|
|
83
83
|
"lucide-react": "^0.545.0",
|
|
84
84
|
"react": "^19.1.0",
|
|
85
85
|
"react-dom": "^19.1.0",
|
|
@@ -112,10 +112,10 @@
|
|
|
112
112
|
"@maplibre/maplibre-gl-geocoder": "^1.7.0"
|
|
113
113
|
},
|
|
114
114
|
"devDependencies": {
|
|
115
|
-
"@djangocfg/i18n": "^2.1.
|
|
115
|
+
"@djangocfg/i18n": "^2.1.235",
|
|
116
116
|
"@djangocfg/playground": "workspace:*",
|
|
117
|
-
"@djangocfg/typescript-config": "^2.1.
|
|
118
|
-
"@djangocfg/ui-core": "^2.1.
|
|
117
|
+
"@djangocfg/typescript-config": "^2.1.235",
|
|
118
|
+
"@djangocfg/ui-core": "^2.1.235",
|
|
119
119
|
"@types/mapbox__mapbox-gl-draw": "^1.4.8",
|
|
120
120
|
"@types/node": "^24.7.2",
|
|
121
121
|
"@types/react": "^19.1.0",
|