@actuate-media/cms-admin 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/LICENSE +21 -21
  2. package/dist/__tests__/fields/component-block-helpers.test.d.ts +7 -0
  3. package/dist/__tests__/fields/component-block-helpers.test.d.ts.map +1 -0
  4. package/dist/__tests__/fields/component-block-helpers.test.js +592 -0
  5. package/dist/__tests__/fields/component-block-helpers.test.js.map +1 -0
  6. package/dist/fields/ComponentBlockField.d.ts +25 -0
  7. package/dist/fields/ComponentBlockField.d.ts.map +1 -0
  8. package/dist/fields/ComponentBlockField.js +74 -0
  9. package/dist/fields/ComponentBlockField.js.map +1 -0
  10. package/dist/fields/FieldRenderer.d.ts +3 -0
  11. package/dist/fields/FieldRenderer.d.ts.map +1 -1
  12. package/dist/fields/FieldRenderer.js +3 -1
  13. package/dist/fields/FieldRenderer.js.map +1 -1
  14. package/dist/fields/PropInput.d.ts +14 -0
  15. package/dist/fields/PropInput.d.ts.map +1 -0
  16. package/dist/fields/PropInput.js +163 -0
  17. package/dist/fields/PropInput.js.map +1 -0
  18. package/dist/fields/component-block-helpers.d.ts +96 -0
  19. package/dist/fields/component-block-helpers.d.ts.map +1 -0
  20. package/dist/fields/component-block-helpers.js +323 -0
  21. package/dist/fields/component-block-helpers.js.map +1 -0
  22. package/dist/fields/index.d.ts +4 -0
  23. package/dist/fields/index.d.ts.map +1 -1
  24. package/dist/fields/index.js +2 -0
  25. package/dist/fields/index.js.map +1 -1
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/package.json +10 -3
  31. package/src/__tests__/fields/component-block-helpers.test.ts +674 -0
  32. package/src/fields/ComponentBlockField.tsx +179 -0
  33. package/src/fields/FieldRenderer.tsx +8 -0
  34. package/src/fields/PropInput.tsx +552 -0
  35. package/src/fields/component-block-helpers.ts +341 -0
  36. package/src/fields/index.ts +4 -0
  37. package/src/index.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-block-helpers.test.js","sourceRoot":"","sources":["../../../src/__tests__/fields/component-block-helpers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Manifest } from '@actuate-media/component-blocks';
2
+ export interface ComponentBlockValue {
3
+ component: string;
4
+ props: Record<string, unknown>;
5
+ }
6
+ export interface ComponentBlockFieldProps {
7
+ label?: string;
8
+ manifest: Manifest;
9
+ /** Optional whitelist of component names. */
10
+ allow?: string[];
11
+ /** Default component picked when the field is first used. */
12
+ defaultComponent?: string;
13
+ value?: ComponentBlockValue;
14
+ onChange: (value: ComponentBlockValue) => void;
15
+ /**
16
+ * Optional async validator hook. Receives the proposed value and the
17
+ * field config; should return `true` for ok or a string error.
18
+ * Falls back to a built-in structural validator when not provided —
19
+ * which is what cms-core would do server-side at save time anyway.
20
+ */
21
+ validate?: (value: ComponentBlockValue) => string | true;
22
+ helpText?: string;
23
+ }
24
+ export declare function ComponentBlockField({ label, manifest, allow, defaultComponent, value, onChange, validate, helpText, }: ComponentBlockFieldProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=ComponentBlockField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentBlockField.d.ts","sourceRoot":"","sources":["../../src/fields/ComponentBlockField.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAU/D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,MAAM,GAAG,IAAI,CAAA;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,wBAAwB,2CAmH1B"}
@@ -0,0 +1,74 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * Top-level admin field for component-aware blocks. Consumes a
5
+ * {@link Manifest} produced by `@actuate-media/component-blocks`,
6
+ * renders a component picker (when more than one component is allowed)
7
+ * and a recursive props form via {@link PropInput}.
8
+ *
9
+ * Storage shape:
10
+ * { component: 'Hero', props: { title: 'Welcome', alignment: 'center' } }
11
+ *
12
+ * Live validation runs through `validateComponentBlockValue` from
13
+ * `@actuate-media/cms-core`. The whole-value error is shown at the top
14
+ * of the form, and the per-prop error map (parsed out of the message
15
+ * string) is forwarded into `PropInput` so each input can render its
16
+ * own inline error.
17
+ */
18
+ import { useEffect, useMemo, useRef, useState } from 'react';
19
+ import { buildClientValidator, getAllowedComponents, parsePerPropErrors, seedPropsForComponent, } from './component-block-helpers.js';
20
+ import { PropInput } from './PropInput.js';
21
+ export function ComponentBlockField({ label, manifest, allow, defaultComponent, value, onChange, validate, helpText, }) {
22
+ const allowedComponents = useMemo(() => getAllowedComponents(manifest, allow), [manifest, allow]);
23
+ // Track the initial seed application so we don't repeatedly stomp
24
+ // the editor's prop values on every render. The defaultComponent
25
+ // seed only fires once, when value is undefined on mount.
26
+ const seededRef = useRef(false);
27
+ useEffect(() => {
28
+ if (seededRef.current)
29
+ return;
30
+ if (value) {
31
+ seededRef.current = true;
32
+ return;
33
+ }
34
+ const picked = allowedComponents.find((c) => c.name === defaultComponent) ?? allowedComponents[0];
35
+ if (!picked)
36
+ return;
37
+ seededRef.current = true;
38
+ onChange({ component: picked.name, props: seedPropsForComponent(picked) });
39
+ }, [allowedComponents, defaultComponent, value, onChange]);
40
+ const currentSpec = (value && manifest.components.find((c) => c.name === value.component)) ?? allowedComponents[0];
41
+ // Pure structural validation when caller didn't provide their own.
42
+ // Keeps the form usable even without a live validator wired in.
43
+ const builtinValidate = useMemo(() => buildClientValidator(manifest, allow), [manifest, allow]);
44
+ const validator = validate ?? builtinValidate;
45
+ const [errorMessage, setErrorMessage] = useState(null);
46
+ const perPropErrors = useMemo(() => parsePerPropErrors(errorMessage), [errorMessage]);
47
+ useEffect(() => {
48
+ if (!value) {
49
+ setErrorMessage(null);
50
+ return;
51
+ }
52
+ const result = validator(value);
53
+ setErrorMessage(result === true ? null : result);
54
+ }, [value, validator]);
55
+ function handleComponentChange(componentName) {
56
+ const spec = manifest.components.find((c) => c.name === componentName);
57
+ if (!spec)
58
+ return;
59
+ onChange({ component: spec.name, props: seedPropsForComponent(spec) });
60
+ }
61
+ function handlePropChange(propName, next) {
62
+ if (!value)
63
+ return;
64
+ onChange({
65
+ ...value,
66
+ props: { ...value.props, [propName]: next },
67
+ });
68
+ }
69
+ if (!currentSpec) {
70
+ return (_jsx("div", { className: "rounded-md border border-[var(--destructive)] bg-red-50 p-3 text-sm text-[var(--destructive)]", children: "Component block has no components to choose from." }));
71
+ }
72
+ return (_jsxs("div", { className: "space-y-3", children: [label ? _jsx("label", { className: "block text-sm font-medium", children: label }) : null, allowedComponents.length > 1 ? (_jsxs("label", { className: "block text-sm", children: [_jsx("div", { className: "mb-1 text-xs tracking-wide text-[var(--muted-foreground)] uppercase", children: "Component" }), _jsx("select", { value: currentSpec.name, onChange: (e) => handleComponentChange(e.target.value), className: "w-full rounded-md border border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-[var(--ring)]", children: allowedComponents.map((spec) => (_jsx("option", { value: spec.name, children: spec.displayName }, spec.name))) })] })) : null, errorMessage ? (_jsx("div", { className: "rounded-md border border-[var(--destructive)] bg-red-50 px-3 py-2 text-xs text-[var(--destructive)]", children: errorMessage })) : null, _jsxs("fieldset", { className: "rounded-md border border-[var(--border)] bg-[var(--card)] p-4", children: [_jsx("legend", { className: "px-1 text-xs tracking-wide text-[var(--muted-foreground)] uppercase", children: currentSpec.displayName }), currentSpec.description ? (_jsx("p", { className: "mb-3 text-xs text-[var(--muted-foreground)]", children: currentSpec.description })) : null, _jsx("div", { className: "space-y-4", children: currentSpec.props.map((prop) => (_jsx(PropInput, { prop: prop, value: value?.props?.[prop.name], onChange: (next) => handlePropChange(prop.name, next), errors: perPropErrors, path: prop.name }, prop.name))) })] }), helpText ? _jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: helpText }) : null] }));
73
+ }
74
+ //# sourceMappingURL=ComponentBlockField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentBlockField.js","sourceRoot":"","sources":["../../src/fields/ComponentBlockField.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,9 @@ export interface FieldDefinition {
12
12
  multi?: boolean;
13
13
  fields?: FieldDefinition[];
14
14
  blocks?: any[];
15
+ manifest?: unknown;
16
+ allow?: string[];
17
+ defaultComponent?: string;
15
18
  }
16
19
  export interface FieldRendererProps {
17
20
  field: FieldDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../../src/fields/FieldRenderer.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,eAAe,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,eAAe,CAAA;IACtB,KAAK,EAAE,GAAG,CAAA;IACV,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;CAC/B;AAkBD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CA6B3E"}
1
+ {"version":3,"file":"FieldRenderer.d.ts","sourceRoot":"","sources":["../../src/fields/FieldRenderer.tsx"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,eAAe,EAAE,CAAA;IAC1B,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,eAAe,CAAA;IACtB,KAAK,EAAE,GAAG,CAAA;IACV,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;CAC/B;AAmBD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAgC3E"}
@@ -13,6 +13,7 @@ import { BlockBuilderField } from './BlockBuilderField.js';
13
13
  import { GroupField } from './GroupField.js';
14
14
  import { NavBuilderField } from './NavBuilderField.js';
15
15
  import { NumberField } from './NumberField.js';
16
+ import { ComponentBlockField } from './ComponentBlockField.js';
16
17
  const FIELD_MAP = {
17
18
  text: TextField,
18
19
  richText: RichTextField,
@@ -27,12 +28,13 @@ const FIELD_MAP = {
27
28
  group: GroupField,
28
29
  nav: NavBuilderField,
29
30
  number: NumberField,
31
+ componentBlock: ComponentBlockField,
30
32
  };
31
33
  export function FieldRenderer({ field, value, onChange }) {
32
34
  const Component = FIELD_MAP[field.type];
33
35
  if (!Component) {
34
36
  return (_jsxs("div", { className: "rounded-md border border-[var(--destructive)] bg-red-50 p-3 text-sm text-[var(--destructive)]", children: ["Unknown field type: ", _jsx("code", { children: field.type })] }));
35
37
  }
36
- return (_jsx(Component, { label: field.label, value: value, onChange: onChange, required: field.required, maxLength: field.maxLength, helpText: field.helpText, options: field.options, min: field.min, max: field.max, from: field.from, multi: field.multi, fields: field.fields, blocks: field.blocks, name: field.name }));
38
+ return (_jsx(Component, { label: field.label, value: value, onChange: onChange, required: field.required, maxLength: field.maxLength, helpText: field.helpText, options: field.options, min: field.min, max: field.max, from: field.from, multi: field.multi, fields: field.fields, blocks: field.blocks, name: field.name, manifest: field.manifest, allow: field.allow, defaultComponent: field.defaultComponent }));
37
39
  }
38
40
  //# sourceMappingURL=FieldRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../../src/fields/FieldRenderer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAwB9C,MAAM,SAAS,GAA6C;IAC1D,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,YAAY,EAAE,iBAAiB;IAC/B,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,WAAW;CACpB,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAsB;IAC1E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,eAAK,SAAS,EAAC,+FAA+F,qCACxF,yBAAO,KAAK,CAAC,IAAI,GAAQ,IACzC,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,IAAI,EAAE,KAAK,CAAC,IAAI,GAChB,CACH,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"FieldRenderer.js","sourceRoot":"","sources":["../../src/fields/FieldRenderer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AA2B9D,MAAM,SAAS,GAA6C;IAC1D,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,YAAY,EAAE,iBAAiB;IAC/B,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,WAAW;IACnB,cAAc,EAAE,mBAAmB;CACpC,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAsB;IAC1E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,eAAK,SAAS,EAAC,+FAA+F,qCACxF,yBAAO,KAAK,CAAC,IAAI,GAAQ,IACzC,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GACxC,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PropSpec } from '@actuate-media/component-blocks';
2
+ import { defaultForType } from './component-block-helpers.js';
3
+ export { defaultForType };
4
+ export interface PropInputProps {
5
+ prop: PropSpec;
6
+ value: unknown;
7
+ onChange: (value: unknown) => void;
8
+ /** Map keyed by `propPath` (dot-joined) for nested error display. */
9
+ errors?: Record<string, string>;
10
+ /** Dot-separated path for the field; used as the error map key. */
11
+ path?: string;
12
+ }
13
+ export declare function PropInput({ prop, value, onChange, errors, path }: PropInputProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=PropInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropInput.d.ts","sourceRoot":"","sources":["../../src/fields/PropInput.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,iCAAiC,CAAA;AAEzE,OAAO,EACL,cAAc,EAIf,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,CAAA;AAEzB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,cAAc,2CAmBhF"}
@@ -0,0 +1,163 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Recursive input dispatcher for component-block props. Given a
5
+ * {@link PropSpec} and the currently stored value, renders the correct
6
+ * editor:
7
+ *
8
+ * | PropType.kind | Editor |
9
+ * | --------------------- | ---------------------------------------------- |
10
+ * | `string` | single-line text input |
11
+ * | `number` | native number input |
12
+ * | `boolean` | switch (ToggleField look) |
13
+ * | `enum` | select with the literal values |
14
+ * | `literal` | readonly display (it's the only allowed value) |
15
+ * | `array` | add/remove list of recursive PropInputs |
16
+ * | `object` | bordered group of recursive PropInputs |
17
+ * | `union` (discriminated) | variant picker + recursive object form |
18
+ * | `union` (other) | JSON textarea + hint |
19
+ * | `reference` | JSON textarea + "unresolved" hint |
20
+ * | `unknown` | JSON textarea + warning |
21
+ *
22
+ * The component is intentionally small and self-contained — no calls
23
+ * into cms-core; the parent {@link ComponentBlockField} runs validation
24
+ * via `validateComponentBlockValue` and pipes per-prop errors back in
25
+ * via the `errors` prop.
26
+ */
27
+ import { detectDiscriminator, findVariant, } from '@actuate-media/component-blocks/discriminated-union';
28
+ import { defaultForType, parseEnumSelection, safeJsonStringify, switchUnionVariant, } from './component-block-helpers.js';
29
+ export { defaultForType };
30
+ export function PropInput({ prop, value, onChange, errors, path }) {
31
+ const fullPath = path ?? prop.name;
32
+ const safeErrors = errors ?? EMPTY_ERRORS;
33
+ const error = safeErrors[fullPath];
34
+ return (_jsxs("div", { className: "space-y-1", children: [_jsx(PropInputBody, { prop: prop, value: value, onChange: onChange, errors: safeErrors, path: fullPath }), prop.description && !error ? (_jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: prop.description })) : null, error ? _jsx("p", { className: "text-xs text-[var(--destructive)]", children: error }) : null] }));
35
+ }
36
+ const EMPTY_ERRORS = Object.freeze({});
37
+ function PropInputBody({ prop, value, onChange, errors, path }) {
38
+ const type = prop.type;
39
+ switch (type.kind) {
40
+ case 'string':
41
+ return _jsx(StringInput, { label: fieldLabel(prop), value: value, onChange: onChange });
42
+ case 'number':
43
+ return _jsx(NumberInputControl, { label: fieldLabel(prop), value: value, onChange: onChange });
44
+ case 'boolean':
45
+ return _jsx(BooleanInput, { label: fieldLabel(prop), value: value, onChange: onChange });
46
+ case 'enum':
47
+ return (_jsx(EnumInput, { label: fieldLabel(prop), options: type.values, value: value, onChange: onChange }));
48
+ case 'literal':
49
+ return _jsx(LiteralDisplay, { label: fieldLabel(prop), literal: type.value });
50
+ case 'array':
51
+ return (_jsx(ArrayInput, { label: fieldLabel(prop), itemType: type.itemType, itemPath: path, value: value, onChange: onChange, errors: errors }));
52
+ case 'object':
53
+ return (_jsx(ObjectInput, { label: fieldLabel(prop), fields: type.fields, value: value, onChange: onChange, errors: errors, path: path }));
54
+ case 'union': {
55
+ const detected = detectDiscriminator(type);
56
+ if (detected) {
57
+ return (_jsx(DiscriminatedUnionInput, { label: fieldLabel(prop), union: detected, value: value, onChange: onChange, errors: errors, path: path }));
58
+ }
59
+ return (_jsx(JsonFallback, { label: fieldLabel(prop), value: value, onChange: onChange, hint: fallbackHint(type) }));
60
+ }
61
+ case 'reference':
62
+ case 'unknown':
63
+ default:
64
+ return (_jsx(JsonFallback, { label: fieldLabel(prop), value: value, onChange: onChange, hint: fallbackHint(type) }));
65
+ }
66
+ }
67
+ function fieldLabel(prop) {
68
+ return (_jsxs(_Fragment, { children: [_jsx("span", { className: "font-medium", children: prop.name }), prop.required ? _jsx("span", { className: "ml-0.5 text-[var(--destructive)]", children: "*" }) : null] }));
69
+ }
70
+ function fallbackHint(type) {
71
+ if (type.kind === 'reference') {
72
+ return `Type '${type.targetType}' could not be resolved — paste a raw JSON value for now.`;
73
+ }
74
+ if (type.kind === 'union') {
75
+ return 'Non-discriminated union — paste a raw JSON value (the form renders a picker for unions with a shared literal tag field like `kind`).';
76
+ }
77
+ return 'Unknown type — paste a raw JSON value.';
78
+ }
79
+ // ─── Primitive editors ───────────────────────────────────────────────
80
+ function StringInput({ label, value, onChange, }) {
81
+ const stringVal = typeof value === 'string' ? value : '';
82
+ return (_jsxs("label", { className: "block text-sm", children: [_jsx("div", { className: "mb-1", children: label }), _jsx("input", { type: "text", value: stringVal, onChange: (e) => onChange(e.target.value), className: "w-full rounded-md border border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-[var(--ring)]" })] }));
83
+ }
84
+ function NumberInputControl({ label, value, onChange, }) {
85
+ const numericVal = typeof value === 'number' ? value : '';
86
+ return (_jsxs("label", { className: "block text-sm", children: [_jsx("div", { className: "mb-1", children: label }), _jsx("input", { type: "number", value: numericVal === '' ? '' : numericVal, onChange: (e) => {
87
+ const raw = e.target.value;
88
+ if (raw === '') {
89
+ onChange(undefined);
90
+ return;
91
+ }
92
+ const parsed = Number(raw);
93
+ onChange(Number.isNaN(parsed) ? raw : parsed);
94
+ }, className: "w-full rounded-md border border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-[var(--ring)]" })] }));
95
+ }
96
+ function BooleanInput({ label, value, onChange, }) {
97
+ const boolVal = value === true;
98
+ return (_jsxs("div", { className: "flex items-center justify-between text-sm", children: [_jsx("span", { children: label }), _jsx("button", { type: "button", role: "switch", "aria-checked": boolVal, onClick: () => onChange(!boolVal), className: `relative inline-flex h-6 w-11 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors ${boolVal ? 'bg-[var(--primary)]' : 'bg-[var(--muted)]'}`, children: _jsx("span", { className: `pointer-events-none inline-block h-5 w-5 rounded-full bg-white shadow-sm ring-0 transition-transform ${boolVal ? 'translate-x-5' : 'translate-x-0'}` }) })] }));
99
+ }
100
+ function EnumInput({ label, options, value, onChange, }) {
101
+ const currentIdx = options.findIndex((o) => o === value);
102
+ return (_jsxs("label", { className: "block text-sm", children: [_jsx("div", { className: "mb-1", children: label }), _jsxs("select", { value: currentIdx === -1 ? '' : String(currentIdx), onChange: (e) => {
103
+ onChange(parseEnumSelection(e.target.value, options));
104
+ }, className: "w-full rounded-md border border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-[var(--ring)]", children: [_jsx("option", { value: "", children: "Select\u2026" }), options.map((opt, idx) => (_jsx("option", { value: idx, children: String(opt) }, String(opt))))] })] }));
105
+ }
106
+ function LiteralDisplay({ label, literal, }) {
107
+ return (_jsxs("div", { className: "text-sm", children: [_jsx("div", { className: "mb-1", children: label }), _jsxs("div", { className: "rounded-md border border-dashed border-[var(--border)] bg-[var(--muted)] px-3 py-2 text-xs text-[var(--muted-foreground)]", children: ["Fixed: ", _jsx("code", { children: String(literal) })] })] }));
108
+ }
109
+ // ─── Composite editors ───────────────────────────────────────────────
110
+ function ObjectInput({ label, fields, value, onChange, errors, path, }) {
111
+ const obj = isPlainObject(value) ? value : {};
112
+ return (_jsxs("fieldset", { className: "rounded-md border border-[var(--border)] bg-[var(--card)] p-3 text-sm", children: [_jsx("legend", { className: "px-1 text-xs tracking-wide text-[var(--muted-foreground)] uppercase", children: label }), _jsx("div", { className: "space-y-3", children: fields.map((field) => (_jsx(PropInput, { prop: field, value: obj[field.name], onChange: (next) => onChange({ ...obj, [field.name]: next }), errors: errors, path: `${path}.${field.name}` }, field.name))) })] }));
113
+ }
114
+ function ArrayInput({ label, itemType, itemPath, value, onChange, errors, }) {
115
+ const arr = Array.isArray(value) ? value : [];
116
+ return (_jsxs("div", { className: "text-sm", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("span", { children: label }), _jsx("button", { type: "button", onClick: () => onChange([...arr, defaultForType(itemType)]), className: "rounded-md border border-[var(--border)] bg-[var(--input-background)] px-2 py-1 text-xs text-[var(--foreground)] hover:bg-[var(--accent)]", children: "+ Add" })] }), arr.length === 0 ? (_jsx("div", { className: "rounded-md border border-dashed border-[var(--border)] px-3 py-4 text-center text-xs text-[var(--muted-foreground)]", children: "No items yet" })) : (_jsx("ol", { className: "space-y-2", children: arr.map((item, idx) => (_jsxs("li", { className: "rounded-md border border-[var(--border)] bg-[var(--card)] p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between text-xs text-[var(--muted-foreground)]", children: [_jsxs("span", { children: ["Item ", idx + 1] }), _jsx("button", { type: "button", onClick: () => onChange(arr.filter((_, i) => i !== idx)), className: "text-[var(--destructive)] hover:underline", children: "Remove" })] }), _jsx(PropInput, { prop: { name: `[${idx}]`, type: itemType, required: true }, value: item, onChange: (next) => onChange(arr.map((v, i) => (i === idx ? next : v))), errors: errors, path: `${itemPath}[${idx}]` })] }, idx))) }))] }));
117
+ }
118
+ function DiscriminatedUnionInput({ label, union, value, onChange, errors, path, }) {
119
+ const currentVariant = findVariant(value, union);
120
+ const obj = isPlainObject(value) ? value : {};
121
+ function switchTo(variantIdx) {
122
+ const variant = union.variants[variantIdx];
123
+ if (!variant)
124
+ return;
125
+ onChange(switchUnionVariant(value, union, variant));
126
+ }
127
+ const currentIdx = currentVariant
128
+ ? union.variants.findIndex((v) => v.value === currentVariant.value)
129
+ : -1;
130
+ return (_jsxs("fieldset", { className: "rounded-md border border-[var(--border)] bg-[var(--card)] p-3 text-sm", children: [_jsx("legend", { className: "px-1 text-xs tracking-wide text-[var(--muted-foreground)] uppercase", children: label }), _jsxs("div", { className: "space-y-3", children: [_jsxs("label", { className: "block text-sm", children: [_jsxs("div", { className: "mb-1", children: [_jsx("span", { className: "font-medium", children: union.field }), _jsx("span", { className: "ml-0.5 text-[var(--destructive)]", children: "*" }), _jsx("span", { className: "ml-2 text-xs text-[var(--muted-foreground)]", children: "(variant)" })] }), _jsxs("select", { value: currentIdx === -1 ? '' : String(currentIdx), onChange: (e) => {
131
+ const idx = Number(e.target.value);
132
+ if (Number.isInteger(idx) && idx >= 0 && idx < union.variants.length) {
133
+ switchTo(idx);
134
+ }
135
+ }, className: "w-full rounded-md border border-[var(--border)] bg-[var(--input-background)] px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-[var(--ring)]", children: [_jsx("option", { value: "", disabled: true, children: "Select a variant\u2026" }), union.variants.map((variant, idx) => (_jsx("option", { value: idx, children: String(variant.value) }, String(variant.value))))] })] }), currentVariant && currentVariant.remainingFields.length > 0 ? (_jsx("div", { className: "space-y-3", children: currentVariant.remainingFields.map((field) => (_jsx(PropInput, { prop: field, value: obj[field.name], onChange: (next) => onChange({ ...obj, [field.name]: next }), errors: errors, path: `${path}.${field.name}` }, field.name))) })) : null, !currentVariant ? (_jsx("p", { className: "text-xs text-[var(--muted-foreground)]", children: "Pick a variant to configure its fields." })) : null] })] }));
136
+ }
137
+ function JsonFallback({ label, value, onChange, hint, }) {
138
+ // Treat both `undefined` and `null` as "empty" — `null` arrives as
139
+ // the structural default for kinds we can't seed (union / reference /
140
+ // unknown) and also from a JSON round-trip on `undefined`. Rendering
141
+ // the literal string "null" would surface as broken UX.
142
+ const text = value === undefined || value === null ? '' : safeJsonStringify(value);
143
+ return (_jsxs("label", { className: "block text-sm", children: [_jsx("div", { className: "mb-1", children: label }), _jsx("textarea", { value: text, onChange: (e) => {
144
+ const raw = e.target.value;
145
+ if (raw.trim() === '') {
146
+ onChange(undefined);
147
+ return;
148
+ }
149
+ try {
150
+ onChange(JSON.parse(raw));
151
+ }
152
+ catch {
153
+ // Keep the raw string so the user can finish editing without
154
+ // losing focus; the validator will catch it on save.
155
+ onChange(raw);
156
+ }
157
+ }, rows: 3, className: "w-full rounded-md border border-[var(--border)] bg-[var(--input-background)] px-3 py-2 font-mono text-xs outline-none focus:ring-2 focus:ring-[var(--ring)]" }), _jsx("p", { className: "mt-1 text-xs text-[var(--muted-foreground)]", children: hint })] }));
158
+ }
159
+ // ─── Helpers ─────────────────────────────────────────────────────────
160
+ function isPlainObject(v) {
161
+ return v !== null && typeof v === 'object' && !Array.isArray(v);
162
+ }
163
+ //# sourceMappingURL=PropInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropInput.js","sourceRoot":"","sources":["../../src/fields/PropInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Pure helpers behind `<ComponentBlockField>`. Extracted so vitest can
3
+ * exercise them in node without spinning up jsdom — the React component
4
+ * just composes these into UI.
5
+ *
6
+ * Kept structurally typed (no peer-dep import of types here would be
7
+ * cleaner, but the `PropType` discriminated union is the contract we
8
+ * promise consumers, so we lean on the package's types).
9
+ */
10
+ import type { DiscriminatedUnion, DiscriminatedVariant } from '@actuate-media/component-blocks/discriminated-union';
11
+ import type { ComponentSpec, Manifest, PropType } from '@actuate-media/component-blocks';
12
+ import type { ComponentBlockValue } from './ComponentBlockField.js';
13
+ /**
14
+ * Compute the list of components an editor can pick from given the
15
+ * manifest + the optional allow-list. Returns the full list when no
16
+ * filter is provided; returns `[]` when every entry is filtered out
17
+ * (the caller renders an error in that case).
18
+ */
19
+ export declare function getAllowedComponents(manifest: Manifest, allow: string[] | undefined): ComponentSpec[];
20
+ /**
21
+ * JSON-encode any value so it round-trips cleanly through the
22
+ * JsonFallback textarea. Previously the helper short-circuited for
23
+ * strings (returning the raw string), which made the textarea
24
+ * stateful: typing `"hello"` parsed to the JS string `hello`,
25
+ * re-rendered as bare `hello`, then `JSON.parse('hello')` threw on
26
+ * the next edit and the field "locked" as a raw string. Always
27
+ * stringifying keeps the textarea visually consistent with the
28
+ * underlying JSON value.
29
+ *
30
+ * Falls back to `String(v)` for values that can't be JSON-encoded
31
+ * (e.g. circular refs) so the field remains editable.
32
+ */
33
+ export declare function safeJsonStringify(v: unknown): string;
34
+ /**
35
+ * Map an `<select>` change-event value to an enum-prop value.
36
+ *
37
+ * The placeholder `<option value="">Select…</option>` clears the field
38
+ * to `undefined`; any other value is the stringified array index into
39
+ * `options`. Extracted so we can test the clear semantics without
40
+ * spinning up jsdom: previously the inline handler used `Number("")`,
41
+ * which evaluates to `0` and silently picked the first option instead
42
+ * of clearing.
43
+ */
44
+ export declare function parseEnumSelection<T>(raw: string, options: readonly T[]): T | undefined;
45
+ /**
46
+ * Produce a sensible empty value for a freshly-created array item or
47
+ * required prop. The admin form generator never wants `undefined` in
48
+ * an array; that breaks downstream PropInput defaults and confuses
49
+ * validators.
50
+ */
51
+ export declare function defaultForType(type: PropType): unknown;
52
+ /**
53
+ * Seed an empty props object for a freshly-picked component using each
54
+ * prop's explicit `defaultValue` when set, else the structural default
55
+ * from {@link defaultForType} (only for required props — optional
56
+ * unset props stay absent so they render as empty inputs).
57
+ */
58
+ export declare function seedPropsForComponent(spec: ComponentSpec): Record<string, unknown>;
59
+ /**
60
+ * Compute the next value for a discriminated-union field when the
61
+ * editor switches variants. Pure helper so the React component stays
62
+ * thin and the seeding rules can be unit-tested without rendering.
63
+ *
64
+ * Seeding rules:
65
+ * 1. The discriminator field is always written to the variant's
66
+ * tag value.
67
+ * 2. Optional fields shared by both variants survive the switch
68
+ * (preserves "edited the same label" intent across, e.g.,
69
+ * Link → Modal where both carry `label`).
70
+ * 3. Required fields exclusive to the new variant are seeded by
71
+ * priority: explicit `field.defaultValue` first (matches
72
+ * `seedPropsForComponent`), else the structural default from
73
+ * `defaultForType` — but only when that default is non-null.
74
+ * A `null` from `defaultForType` (reference / unknown / non-
75
+ * discriminated union types) is treated as "no sensible default"
76
+ * and the field is left absent so the validator's
77
+ * "missing required prop" message and the data agree.
78
+ * 4. Fields exclusive to the previous variant are dropped so the
79
+ * value stays structurally valid against the chosen variant.
80
+ */
81
+ export declare function switchUnionVariant(current: unknown, union: DiscriminatedUnion, variant: DiscriminatedVariant): Record<string, unknown>;
82
+ /**
83
+ * Build a minimal structural validator that mirrors the rules the
84
+ * cms-core `validateComponentBlockValue` runs server-side, so the form
85
+ * can show feedback without a round-trip. Kept in sync with cms-core
86
+ * by inspection; the canonical implementation lives there.
87
+ */
88
+ export declare function buildClientValidator(manifest: Manifest, allow: string[] | undefined): (value: ComponentBlockValue) => string | true;
89
+ /**
90
+ * The validator returns a single error string. The form wants to show
91
+ * the message under the specific input that triggered it — so we parse
92
+ * the message back into a sparse `{ propPath → message }` map. Pure
93
+ * function so it's trivial to unit-test.
94
+ */
95
+ export declare function parsePerPropErrors(message: string | null): Record<string, string>;
96
+ //# sourceMappingURL=component-block-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-block-helpers.d.ts","sourceRoot":"","sources":["../../src/fields/component-block-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,qDAAqD,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAY,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAElG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAC1B,aAAa,EAAE,CAGjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAMpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAKvF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CA6CtD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBlF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAC1B,CAAC,KAAK,EAAE,mBAAmB,KAAK,MAAM,GAAG,IAAI,CA4B/C;AA8ED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOjF"}