@singleton-sd/post-kit-editor 0.3.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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -0
  3. package/dist/canvas/EditorBlock.d.ts +6 -0
  4. package/dist/canvas/EditorBlock.js +25 -0
  5. package/dist/canvas/EditorBlock.js.map +1 -0
  6. package/dist/canvas/EmailBuilderCanvas.d.ts +7 -0
  7. package/dist/canvas/EmailBuilderCanvas.js +15 -0
  8. package/dist/canvas/EmailBuilderCanvas.js.map +1 -0
  9. package/dist/canvas/blocks/ColumnsContainerEditor.d.ts +2 -0
  10. package/dist/canvas/blocks/ColumnsContainerEditor.js +47 -0
  11. package/dist/canvas/blocks/ColumnsContainerEditor.js.map +1 -0
  12. package/dist/canvas/blocks/ColumnsContainerPropsSchema.d.ts +183 -0
  13. package/dist/canvas/blocks/ColumnsContainerPropsSchema.js +19 -0
  14. package/dist/canvas/blocks/ColumnsContainerPropsSchema.js.map +1 -0
  15. package/dist/canvas/blocks/ContainerEditor.d.ts +2 -0
  16. package/dist/canvas/blocks/ContainerEditor.js +39 -0
  17. package/dist/canvas/blocks/ContainerEditor.js.map +1 -0
  18. package/dist/canvas/blocks/ContainerPropsSchema.d.ts +83 -0
  19. package/dist/canvas/blocks/ContainerPropsSchema.js +16 -0
  20. package/dist/canvas/blocks/ContainerPropsSchema.js.map +1 -0
  21. package/dist/canvas/blocks/EmailLayoutEditor.d.ts +2 -0
  22. package/dist/canvas/blocks/EmailLayoutEditor.js +80 -0
  23. package/dist/canvas/blocks/EmailLayoutEditor.js.map +1 -0
  24. package/dist/canvas/blocks/EmailLayoutPropsSchema.d.ts +28 -0
  25. package/dist/canvas/blocks/EmailLayoutPropsSchema.js +33 -0
  26. package/dist/canvas/blocks/EmailLayoutPropsSchema.js.map +1 -0
  27. package/dist/canvas/editor-context.d.ts +22 -0
  28. package/dist/canvas/editor-context.js +55 -0
  29. package/dist/canvas/editor-context.js.map +1 -0
  30. package/dist/canvas/editor-core.d.ts +2910 -0
  31. package/dist/canvas/editor-core.js +87 -0
  32. package/dist/canvas/editor-core.js.map +1 -0
  33. package/dist/canvas/helpers/AddBlockMenu.d.ts +7 -0
  34. package/dist/canvas/helpers/AddBlockMenu.js +23 -0
  35. package/dist/canvas/helpers/AddBlockMenu.js.map +1 -0
  36. package/dist/canvas/helpers/EditorBlockWrapper.d.ts +5 -0
  37. package/dist/canvas/helpers/EditorBlockWrapper.js +36 -0
  38. package/dist/canvas/helpers/EditorBlockWrapper.js.map +1 -0
  39. package/dist/canvas/helpers/EditorChildrenIds.d.ts +11 -0
  40. package/dist/canvas/helpers/EditorChildrenIds.js +38 -0
  41. package/dist/canvas/helpers/EditorChildrenIds.js.map +1 -0
  42. package/dist/canvas/helpers/block-templates.d.ts +7 -0
  43. package/dist/canvas/helpers/block-templates.js +87 -0
  44. package/dist/canvas/helpers/block-templates.js.map +1 -0
  45. package/dist/email-template-editor.d.ts +11 -0
  46. package/dist/email-template-editor.js +32 -0
  47. package/dist/email-template-editor.js.map +1 -0
  48. package/dist/index.d.ts +4 -0
  49. package/dist/index.js +13 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/insertion-target.d.ts +18 -0
  52. package/dist/insertion-target.js +41 -0
  53. package/dist/insertion-target.js.map +1 -0
  54. package/dist/metadata/MetadataPanel.d.ts +7 -0
  55. package/dist/metadata/MetadataPanel.js +56 -0
  56. package/dist/metadata/MetadataPanel.js.map +1 -0
  57. package/dist/metadata/insert-at-cursor.d.ts +5 -0
  58. package/dist/metadata/insert-at-cursor.js +22 -0
  59. package/dist/metadata/insert-at-cursor.js.map +1 -0
  60. package/dist/metadata/subject-preview.d.ts +2 -0
  61. package/dist/metadata/subject-preview.js +12 -0
  62. package/dist/metadata/subject-preview.js.map +1 -0
  63. package/dist/metadata/template-key.d.ts +4 -0
  64. package/dist/metadata/template-key.js +21 -0
  65. package/dist/metadata/template-key.js.map +1 -0
  66. package/dist/preview/PreviewDataEditor.d.ts +7 -0
  67. package/dist/preview/PreviewDataEditor.js +37 -0
  68. package/dist/preview/PreviewDataEditor.js.map +1 -0
  69. package/dist/preview/PreviewPane.d.ts +7 -0
  70. package/dist/preview/PreviewPane.js +39 -0
  71. package/dist/preview/PreviewPane.js.map +1 -0
  72. package/dist/preview/preview-frame.d.ts +8 -0
  73. package/dist/preview/preview-frame.js +41 -0
  74. package/dist/preview/preview-frame.js.map +1 -0
  75. package/dist/preview/preview-rows.d.ts +10 -0
  76. package/dist/preview/preview-rows.js +54 -0
  77. package/dist/preview/preview-rows.js.map +1 -0
  78. package/dist/preview/render-template-preview.d.ts +10 -0
  79. package/dist/preview/render-template-preview.js +27 -0
  80. package/dist/preview/render-template-preview.js.map +1 -0
  81. package/dist/serialization.d.ts +15 -0
  82. package/dist/serialization.js +128 -0
  83. package/dist/serialization.js.map +1 -0
  84. package/dist/types.d.ts +14 -0
  85. package/dist/types.js +3 -0
  86. package/dist/types.js.map +1 -0
  87. package/dist/variables/VariableCatalogue.d.ts +7 -0
  88. package/dist/variables/VariableCatalogue.js +77 -0
  89. package/dist/variables/VariableCatalogue.js.map +1 -0
  90. package/dist/variables/clipboard.d.ts +3 -0
  91. package/dist/variables/clipboard.js +16 -0
  92. package/dist/variables/clipboard.js.map +1 -0
  93. package/dist/variables/copy-feedback.d.ts +7 -0
  94. package/dist/variables/copy-feedback.js +14 -0
  95. package/dist/variables/copy-feedback.js.map +1 -0
  96. package/dist/variables/resolve-catalogue.d.ts +2 -0
  97. package/dist/variables/resolve-catalogue.js +10 -0
  98. package/dist/variables/resolve-catalogue.js.map +1 -0
  99. package/dist/working-files.d.ts +6 -0
  100. package/dist/working-files.js +25 -0
  101. package/dist/working-files.js.map +1 -0
  102. package/package.json +60 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = EmailLayoutEditor;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const EditorBlock_1 = require("../EditorBlock");
9
+ const editor_context_1 = require("../editor-context");
10
+ const EditorChildrenIds_1 = __importDefault(require("../helpers/EditorChildrenIds"));
11
+ function getFontFamily(fontFamily) {
12
+ const f = fontFamily ?? 'MODERN_SANS';
13
+ switch (f) {
14
+ case 'MODERN_SANS':
15
+ return '"Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif';
16
+ case 'BOOK_SANS':
17
+ return 'Optima, Candara, "Noto Sans", source-sans-pro, sans-serif';
18
+ case 'ORGANIC_SANS':
19
+ return 'Seravek, "Gill Sans Nova", Ubuntu, Calibri, "DejaVu Sans", source-sans-pro, sans-serif';
20
+ case 'GEOMETRIC_SANS':
21
+ return 'Avenir, "Avenir Next LT Pro", Montserrat, Corbel, "URW Gothic", source-sans-pro, sans-serif';
22
+ case 'HEAVY_SANS':
23
+ return 'Bahnschrift, "DIN Alternate", "Franklin Gothic Medium", "Nimbus Sans Narrow", sans-serif-condensed, sans-serif';
24
+ case 'ROUNDED_SANS':
25
+ return 'ui-rounded, "Hiragino Maru Gothic ProN", Quicksand, Comfortaa, Manjari, "Arial Rounded MT Bold", Calibri, source-sans-pro, sans-serif';
26
+ case 'MODERN_SERIF':
27
+ return 'Charter, "Bitstream Charter", "Sitka Text", Cambria, serif';
28
+ case 'BOOK_SERIF':
29
+ return '"Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif';
30
+ case 'MONOSPACE':
31
+ return '"Nimbus Mono PS", "Courier New", "Cutive Mono", monospace';
32
+ }
33
+ }
34
+ function EmailLayoutEditor(props) {
35
+ const childrenIds = props.childrenIds ?? [];
36
+ const document = (0, editor_context_1.useDocument)();
37
+ const currentBlockId = (0, EditorBlock_1.useCurrentBlockId)();
38
+ const patchDocument = (0, editor_context_1.usePatchDocument)();
39
+ const setSelectedBlockId = (0, editor_context_1.useSetSelectedBlockId)();
40
+ return ((0, jsx_runtime_1.jsx)("div", { onClick: (event) => {
41
+ if (event.target === event.currentTarget) {
42
+ setSelectedBlockId(null);
43
+ }
44
+ }, style: {
45
+ backgroundColor: props.backdropColor ?? '#F5F5F5',
46
+ color: props.textColor ?? '#262626',
47
+ fontFamily: getFontFamily(props.fontFamily),
48
+ fontSize: '16px',
49
+ fontWeight: '400',
50
+ letterSpacing: '0.15008px',
51
+ lineHeight: '1.5',
52
+ margin: '0',
53
+ padding: '32px 0',
54
+ width: '100%',
55
+ minHeight: '100%',
56
+ }, children: (0, jsx_runtime_1.jsx)("table", { align: "center", width: "100%", style: {
57
+ margin: '0 auto',
58
+ maxWidth: '600px',
59
+ backgroundColor: props.canvasColor ?? '#FFFFFF',
60
+ borderRadius: props.borderRadius ?? undefined,
61
+ border: props.borderColor ? `1px solid ${props.borderColor}` : undefined,
62
+ }, role: "presentation", cellSpacing: 0, cellPadding: 0, border: 0, children: (0, jsx_runtime_1.jsx)("tbody", { children: (0, jsx_runtime_1.jsx)("tr", { style: { width: '100%' }, children: (0, jsx_runtime_1.jsx)("td", { children: (0, jsx_runtime_1.jsx)(EditorChildrenIds_1.default, { childrenIds: childrenIds, onChange: ({ block, blockId, childrenIds: nextChildrenIds }) => {
63
+ const currentBlock = document[currentBlockId];
64
+ if (!currentBlock || currentBlock.type !== 'EmailLayout') {
65
+ return;
66
+ }
67
+ patchDocument({
68
+ [blockId]: block,
69
+ [currentBlockId]: {
70
+ type: 'EmailLayout',
71
+ data: {
72
+ ...currentBlock.data,
73
+ childrenIds: nextChildrenIds,
74
+ },
75
+ },
76
+ });
77
+ setSelectedBlockId(blockId);
78
+ } }) }) }) }) }) }));
79
+ }
80
+ //# sourceMappingURL=EmailLayoutEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailLayoutEditor.js","sourceRoot":"","sources":["../../../src/canvas/blocks/EmailLayoutEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ declare const EmailLayoutPropsSchema: z.ZodObject<{
3
+ backdropColor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4
+ borderColor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5
+ borderRadius: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
6
+ canvasColor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
7
+ textColor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
8
+ fontFamily: z.ZodOptional<z.ZodNullable<z.ZodEnum<["MODERN_SANS", "BOOK_SANS", "ORGANIC_SANS", "GEOMETRIC_SANS", "HEAVY_SANS", "ROUNDED_SANS", "MODERN_SERIF", "BOOK_SERIF", "MONOSPACE"]>>>;
9
+ childrenIds: z.ZodNullable<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ childrenIds?: string[] | null | undefined;
12
+ backdropColor?: string | null | undefined;
13
+ borderColor?: string | null | undefined;
14
+ borderRadius?: number | null | undefined;
15
+ canvasColor?: string | null | undefined;
16
+ textColor?: string | null | undefined;
17
+ fontFamily?: "MODERN_SANS" | "BOOK_SANS" | "ORGANIC_SANS" | "GEOMETRIC_SANS" | "HEAVY_SANS" | "ROUNDED_SANS" | "MODERN_SERIF" | "BOOK_SERIF" | "MONOSPACE" | null | undefined;
18
+ }, {
19
+ childrenIds?: string[] | null | undefined;
20
+ backdropColor?: string | null | undefined;
21
+ borderColor?: string | null | undefined;
22
+ borderRadius?: number | null | undefined;
23
+ canvasColor?: string | null | undefined;
24
+ textColor?: string | null | undefined;
25
+ fontFamily?: "MODERN_SANS" | "BOOK_SANS" | "ORGANIC_SANS" | "GEOMETRIC_SANS" | "HEAVY_SANS" | "ROUNDED_SANS" | "MODERN_SERIF" | "BOOK_SERIF" | "MONOSPACE" | null | undefined;
26
+ }>;
27
+ export default EmailLayoutPropsSchema;
28
+ export type EmailLayoutProps = z.infer<typeof EmailLayoutPropsSchema>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const zod_1 = require("zod");
4
+ const COLOR_SCHEMA = zod_1.z
5
+ .string()
6
+ .regex(/^#[0-9a-fA-F]{6}$/)
7
+ .nullable()
8
+ .optional();
9
+ const FONT_FAMILY_SCHEMA = zod_1.z
10
+ .enum([
11
+ 'MODERN_SANS',
12
+ 'BOOK_SANS',
13
+ 'ORGANIC_SANS',
14
+ 'GEOMETRIC_SANS',
15
+ 'HEAVY_SANS',
16
+ 'ROUNDED_SANS',
17
+ 'MODERN_SERIF',
18
+ 'BOOK_SERIF',
19
+ 'MONOSPACE',
20
+ ])
21
+ .nullable()
22
+ .optional();
23
+ const EmailLayoutPropsSchema = zod_1.z.object({
24
+ backdropColor: COLOR_SCHEMA,
25
+ borderColor: COLOR_SCHEMA,
26
+ borderRadius: zod_1.z.number().optional().nullable(),
27
+ canvasColor: COLOR_SCHEMA,
28
+ textColor: COLOR_SCHEMA,
29
+ fontFamily: FONT_FAMILY_SCHEMA,
30
+ childrenIds: zod_1.z.array(zod_1.z.string()).optional().nullable(),
31
+ });
32
+ exports.default = EmailLayoutPropsSchema;
33
+ //# sourceMappingURL=EmailLayoutPropsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailLayoutPropsSchema.js","sourceRoot":"","sources":["../../../src/canvas/blocks/EmailLayoutPropsSchema.ts"],"names":[],"mappings":";;AAAA,6BAAwB;AAExB,MAAM,YAAY,GAAG,OAAC;KACnB,MAAM,EAAE;KACR,KAAK,CAAC,mBAAmB,CAAC;KAC1B,QAAQ,EAAE;KACV,QAAQ,EAAE,CAAC;AAEd,MAAM,kBAAkB,GAAG,OAAC;KACzB,IAAI,CAAC;IACJ,aAAa;IACb,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,cAAc;IACd,YAAY;IACZ,WAAW;CACZ,CAAC;KACD,QAAQ,EAAE;KACV,QAAQ,EAAE,CAAC;AAEd,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,aAAa,EAAE,YAAY;IAC3B,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,kBAAkB;IAC9B,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC;AAEH,kBAAe,sBAAsB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { EmailBuilderDocument } from '../types';
3
+ import type { TEditorBlock } from './editor-core';
4
+ type CanvasEditorContextValue = {
5
+ document: EmailBuilderDocument;
6
+ selectedBlockId: string | null;
7
+ setSelectedBlockId: (blockId: string | null) => void;
8
+ patchDocument: (partial: Record<string, TEditorBlock>) => void;
9
+ replaceDocument: (document: EmailBuilderDocument) => void;
10
+ };
11
+ export declare function CanvasEditorProvider({ document, onChange, children, }: {
12
+ document: EmailBuilderDocument;
13
+ onChange: (document: EmailBuilderDocument) => void;
14
+ children: React.ReactNode;
15
+ }): JSX.Element;
16
+ export declare function useCanvasEditor(): CanvasEditorContextValue;
17
+ export declare function useDocument(): EmailBuilderDocument;
18
+ export declare function useSelectedBlockId(): string | null;
19
+ export declare function useSetSelectedBlockId(): (blockId: string | null) => void;
20
+ export declare function usePatchDocument(): (partial: Record<string, TEditorBlock>) => void;
21
+ export declare function useReplaceDocument(): (document: EmailBuilderDocument) => void;
22
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CanvasEditorProvider = CanvasEditorProvider;
4
+ exports.useCanvasEditor = useCanvasEditor;
5
+ exports.useDocument = useDocument;
6
+ exports.useSelectedBlockId = useSelectedBlockId;
7
+ exports.useSetSelectedBlockId = useSetSelectedBlockId;
8
+ exports.usePatchDocument = usePatchDocument;
9
+ exports.useReplaceDocument = useReplaceDocument;
10
+ const jsx_runtime_1 = require("react/jsx-runtime");
11
+ const react_1 = require("react");
12
+ const CanvasEditorContext = (0, react_1.createContext)(null);
13
+ function CanvasEditorProvider({ document, onChange, children, }) {
14
+ const [selectedBlockId, setSelectedBlockId] = (0, react_1.useState)(null);
15
+ const patchDocument = (0, react_1.useCallback)((partial) => {
16
+ onChange({
17
+ ...document,
18
+ ...partial,
19
+ });
20
+ }, [document, onChange]);
21
+ const replaceDocument = (0, react_1.useCallback)((nextDocument) => {
22
+ onChange(nextDocument);
23
+ }, [onChange]);
24
+ const value = (0, react_1.useMemo)(() => ({
25
+ document,
26
+ selectedBlockId,
27
+ setSelectedBlockId,
28
+ patchDocument,
29
+ replaceDocument,
30
+ }), [document, selectedBlockId, patchDocument, replaceDocument]);
31
+ return (0, jsx_runtime_1.jsx)(CanvasEditorContext.Provider, { value: value, children: children });
32
+ }
33
+ function useCanvasEditor() {
34
+ const context = (0, react_1.useContext)(CanvasEditorContext);
35
+ if (!context) {
36
+ throw new Error('useCanvasEditor must be used within CanvasEditorProvider');
37
+ }
38
+ return context;
39
+ }
40
+ function useDocument() {
41
+ return useCanvasEditor().document;
42
+ }
43
+ function useSelectedBlockId() {
44
+ return useCanvasEditor().selectedBlockId;
45
+ }
46
+ function useSetSelectedBlockId() {
47
+ return useCanvasEditor().setSelectedBlockId;
48
+ }
49
+ function usePatchDocument() {
50
+ return useCanvasEditor().patchDocument;
51
+ }
52
+ function useReplaceDocument() {
53
+ return useCanvasEditor().replaceDocument;
54
+ }
55
+ //# sourceMappingURL=editor-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-context.js","sourceRoot":"","sources":["../../src/canvas/editor-context.tsx"],"names":[],"mappings":";;AAeA,oDAwCC;AAED,0CAMC;AAED,kCAEC;AAED,gDAEC;AAED,sDAEC;AAED,4CAEC;AAED,gDAEC;;AAnFD,iCAAyF;AAazF,MAAM,mBAAmB,GAAG,IAAA,qBAAa,EAAkC,IAAI,CAAC,CAAC;AAEjF,SAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,QAAQ,GAKT;IACC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAC;IAE5E,MAAM,aAAa,GAAG,IAAA,mBAAW,EAC/B,CAAC,OAAqC,EAAE,EAAE;QACxC,QAAQ,CAAC;YACP,GAAG,QAAQ;YACX,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,CAAC;IAEF,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CAAC,YAAkC,EAAE,EAAE;QACrC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,KAAK,GAAG,IAAA,eAAO,EACnB,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ;QACR,eAAe;QACf,kBAAkB;QAClB,aAAa;QACb,eAAe;KAChB,CAAC,EACF,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,CAC5D,CAAC;IAEF,OAAO,uBAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAgC,CAAC;AAC/F,CAAC;AAED,SAAgB,eAAe;IAC7B,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,mBAAmB,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,eAAe,EAAE,CAAC,QAAQ,CAAC;AACpC,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,eAAe,EAAE,CAAC,eAAe,CAAC;AAC3C,CAAC;AAED,SAAgB,qBAAqB;IACnC,OAAO,eAAe,EAAE,CAAC,kBAAkB,CAAC;AAC9C,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,eAAe,EAAE,CAAC,aAAa,CAAC;AACzC,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,eAAe,EAAE,CAAC,eAAe,CAAC;AAC3C,CAAC"}