@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.
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/dist/canvas/EditorBlock.d.ts +6 -0
- package/dist/canvas/EditorBlock.js +25 -0
- package/dist/canvas/EditorBlock.js.map +1 -0
- package/dist/canvas/EmailBuilderCanvas.d.ts +7 -0
- package/dist/canvas/EmailBuilderCanvas.js +15 -0
- package/dist/canvas/EmailBuilderCanvas.js.map +1 -0
- package/dist/canvas/blocks/ColumnsContainerEditor.d.ts +2 -0
- package/dist/canvas/blocks/ColumnsContainerEditor.js +47 -0
- package/dist/canvas/blocks/ColumnsContainerEditor.js.map +1 -0
- package/dist/canvas/blocks/ColumnsContainerPropsSchema.d.ts +183 -0
- package/dist/canvas/blocks/ColumnsContainerPropsSchema.js +19 -0
- package/dist/canvas/blocks/ColumnsContainerPropsSchema.js.map +1 -0
- package/dist/canvas/blocks/ContainerEditor.d.ts +2 -0
- package/dist/canvas/blocks/ContainerEditor.js +39 -0
- package/dist/canvas/blocks/ContainerEditor.js.map +1 -0
- package/dist/canvas/blocks/ContainerPropsSchema.d.ts +83 -0
- package/dist/canvas/blocks/ContainerPropsSchema.js +16 -0
- package/dist/canvas/blocks/ContainerPropsSchema.js.map +1 -0
- package/dist/canvas/blocks/EmailLayoutEditor.d.ts +2 -0
- package/dist/canvas/blocks/EmailLayoutEditor.js +80 -0
- package/dist/canvas/blocks/EmailLayoutEditor.js.map +1 -0
- package/dist/canvas/blocks/EmailLayoutPropsSchema.d.ts +28 -0
- package/dist/canvas/blocks/EmailLayoutPropsSchema.js +33 -0
- package/dist/canvas/blocks/EmailLayoutPropsSchema.js.map +1 -0
- package/dist/canvas/editor-context.d.ts +22 -0
- package/dist/canvas/editor-context.js +55 -0
- package/dist/canvas/editor-context.js.map +1 -0
- package/dist/canvas/editor-core.d.ts +2910 -0
- package/dist/canvas/editor-core.js +87 -0
- package/dist/canvas/editor-core.js.map +1 -0
- package/dist/canvas/helpers/AddBlockMenu.d.ts +7 -0
- package/dist/canvas/helpers/AddBlockMenu.js +23 -0
- package/dist/canvas/helpers/AddBlockMenu.js.map +1 -0
- package/dist/canvas/helpers/EditorBlockWrapper.d.ts +5 -0
- package/dist/canvas/helpers/EditorBlockWrapper.js +36 -0
- package/dist/canvas/helpers/EditorBlockWrapper.js.map +1 -0
- package/dist/canvas/helpers/EditorChildrenIds.d.ts +11 -0
- package/dist/canvas/helpers/EditorChildrenIds.js +38 -0
- package/dist/canvas/helpers/EditorChildrenIds.js.map +1 -0
- package/dist/canvas/helpers/block-templates.d.ts +7 -0
- package/dist/canvas/helpers/block-templates.js +87 -0
- package/dist/canvas/helpers/block-templates.js.map +1 -0
- package/dist/email-template-editor.d.ts +11 -0
- package/dist/email-template-editor.js +32 -0
- package/dist/email-template-editor.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/insertion-target.d.ts +18 -0
- package/dist/insertion-target.js +41 -0
- package/dist/insertion-target.js.map +1 -0
- package/dist/metadata/MetadataPanel.d.ts +7 -0
- package/dist/metadata/MetadataPanel.js +56 -0
- package/dist/metadata/MetadataPanel.js.map +1 -0
- package/dist/metadata/insert-at-cursor.d.ts +5 -0
- package/dist/metadata/insert-at-cursor.js +22 -0
- package/dist/metadata/insert-at-cursor.js.map +1 -0
- package/dist/metadata/subject-preview.d.ts +2 -0
- package/dist/metadata/subject-preview.js +12 -0
- package/dist/metadata/subject-preview.js.map +1 -0
- package/dist/metadata/template-key.d.ts +4 -0
- package/dist/metadata/template-key.js +21 -0
- package/dist/metadata/template-key.js.map +1 -0
- package/dist/preview/PreviewDataEditor.d.ts +7 -0
- package/dist/preview/PreviewDataEditor.js +37 -0
- package/dist/preview/PreviewDataEditor.js.map +1 -0
- package/dist/preview/PreviewPane.d.ts +7 -0
- package/dist/preview/PreviewPane.js +39 -0
- package/dist/preview/PreviewPane.js.map +1 -0
- package/dist/preview/preview-frame.d.ts +8 -0
- package/dist/preview/preview-frame.js +41 -0
- package/dist/preview/preview-frame.js.map +1 -0
- package/dist/preview/preview-rows.d.ts +10 -0
- package/dist/preview/preview-rows.js +54 -0
- package/dist/preview/preview-rows.js.map +1 -0
- package/dist/preview/render-template-preview.d.ts +10 -0
- package/dist/preview/render-template-preview.js +27 -0
- package/dist/preview/render-template-preview.js.map +1 -0
- package/dist/serialization.d.ts +15 -0
- package/dist/serialization.js +128 -0
- package/dist/serialization.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/variables/VariableCatalogue.d.ts +7 -0
- package/dist/variables/VariableCatalogue.js +77 -0
- package/dist/variables/VariableCatalogue.js.map +1 -0
- package/dist/variables/clipboard.d.ts +3 -0
- package/dist/variables/clipboard.js +16 -0
- package/dist/variables/clipboard.js.map +1 -0
- package/dist/variables/copy-feedback.d.ts +7 -0
- package/dist/variables/copy-feedback.js +14 -0
- package/dist/variables/copy-feedback.js.map +1 -0
- package/dist/variables/resolve-catalogue.d.ts +2 -0
- package/dist/variables/resolve-catalogue.js +10 -0
- package/dist/variables/resolve-catalogue.js.map +1 -0
- package/dist/working-files.d.ts +6 -0
- package/dist/working-files.js +25 -0
- package/dist/working-files.js.map +1 -0
- 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"}
|