@printine/designer 0.1.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/README.md +146 -0
- package/dist/DesignerRuntimeContext.d.ts +3 -0
- package/dist/PrintineDesigner.d.ts +9 -0
- package/dist/api/client.d.ts +8 -0
- package/dist/api/client.js +82 -0
- package/dist/api/common-endpoints.d.ts +12 -0
- package/dist/api/design-endpoints.d.ts +18 -0
- package/dist/api/endpoints.d.ts +33 -0
- package/dist/api/endpoints.js +46 -0
- package/dist/api/files-endpoints.d.ts +1 -0
- package/dist/assets/icons/aspect_ratio.d.ts +3 -0
- package/dist/assets/icons/delete.d.ts +3 -0
- package/dist/assets/icons/fit_screen.d.ts +3 -0
- package/dist/assets/icons/index.d.ts +11 -0
- package/dist/assets/icons/loading_1.d.ts +3 -0
- package/dist/assets/icons/loading_2.d.ts +3 -0
- package/dist/assets/icons/loading_3.d.ts +3 -0
- package/dist/assets/icons/pan.d.ts +3 -0
- package/dist/assets/icons/setting.d.ts +3 -0
- package/dist/assets/icons/text_color.d.ts +3 -0
- package/dist/assets/icons/text_h.d.ts +3 -0
- package/dist/assets/icons/text_v.d.ts +3 -0
- package/dist/bundled-assets.d.ts +4 -0
- package/dist/components/add-design.d.ts +8 -0
- package/dist/components/assets-dialog.d.ts +21 -0
- package/dist/components/canvas-context-menu.d.ts +6 -0
- package/dist/components/color-picker/index.d.ts +10 -0
- package/dist/components/context.d.ts +24 -0
- package/dist/components/design.d.ts +9 -0
- package/dist/components/fonts.d.ts +26 -0
- package/dist/components/image-crop.d.ts +4 -0
- package/dist/components/image-edit.d.ts +1 -0
- package/dist/components/layout/aside.d.ts +3 -0
- package/dist/components/layout/bottom-nav/element-menu-sheet.d.ts +11 -0
- package/dist/components/layout/bottom-nav/element-sheet.d.ts +11 -0
- package/dist/components/layout/bottom-nav/index.d.ts +1 -0
- package/dist/components/layout/header.d.ts +5 -0
- package/dist/components/loading.d.ts +3 -0
- package/dist/components/menus/ai.d.ts +5 -0
- package/dist/components/menus/background.d.ts +6 -0
- package/dist/components/menus/clipart.d.ts +6 -0
- package/dist/components/menus/files.d.ts +7 -0
- package/dist/components/menus/image.d.ts +8 -0
- package/dist/components/menus/index.d.ts +13 -0
- package/dist/components/menus/layer.d.ts +5 -0
- package/dist/components/menus/product.d.ts +3 -0
- package/dist/components/menus/sca.d.ts +5 -0
- package/dist/components/menus/shapes.d.ts +6 -0
- package/dist/components/menus/templates.d.ts +6 -0
- package/dist/components/menus/text-effects.d.ts +5 -0
- package/dist/components/menus/text.d.ts +6 -0
- package/dist/components/placement-tab.d.ts +7 -0
- package/dist/components/preview/3d.d.ts +7 -0
- package/dist/components/preview/graphic.d.ts +7 -0
- package/dist/components/preview/index.d.ts +18 -0
- package/dist/components/preview/open.d.ts +7 -0
- package/dist/components/preview/real-time/3d.d.ts +12 -0
- package/dist/components/preview/real-time/graphic.d.ts +18 -0
- package/dist/components/preview/real-time/index.d.ts +11 -0
- package/dist/components/scale-tools.d.ts +7 -0
- package/dist/components/semi-deisgn-config.d.ts +13 -0
- package/dist/components/semi-design-link.d.ts +9 -0
- package/dist/components/store.d.ts +1 -0
- package/dist/components/toolbar.d.ts +2 -0
- package/dist/config-D2qm60gf.js +16 -0
- package/dist/contracts/api-design.d.ts +176 -0
- package/dist/contracts/design.d.ts +86 -0
- package/dist/design-7zRpRtv9.js +20331 -0
- package/dist/engine/canvas-designer.d.ts +101 -0
- package/dist/engine/canvas-designer.js +313 -0
- package/dist/engine/constants.d.ts +27 -0
- package/dist/engine/constants.js +148 -0
- package/dist/engine/editor.d.ts +186 -0
- package/dist/engine/editor.js +734 -0
- package/dist/engine/events.d.ts +34 -0
- package/dist/engine/events.js +7 -0
- package/dist/engine/extensions/curved-text.d.ts +59 -0
- package/dist/engine/fabric.d.ts +4 -0
- package/dist/engine/fabric.js +187 -0
- package/dist/engine/history.d.ts +27 -0
- package/dist/engine/history.js +56 -0
- package/dist/engine/managers/event.d.ts +101 -0
- package/dist/engine/managers/event.js +410 -0
- package/dist/engine/managers/resize.d.ts +24 -0
- package/dist/engine/managers/resize.js +63 -0
- package/dist/engine/managers/snapline.d.ts +70 -0
- package/dist/engine/managers/snapline.js +124 -0
- package/dist/engine/managers/workspace.d.ts +26 -0
- package/dist/engine/managers/workspace.js +53 -0
- package/dist/engine/processors/image.d.ts +88 -0
- package/dist/engine/processors/image.js +473 -0
- package/dist/engine/processors/template.d.ts +45 -0
- package/dist/engine/processors/template.js +314 -0
- package/dist/engine/processors/text.d.ts +74 -0
- package/dist/engine/processors/text.js +215 -0
- package/dist/engine/semi-export-editor.d.ts +199 -0
- package/dist/engine/types.d.ts +28 -0
- package/dist/engine/utils/common.d.ts +25 -0
- package/dist/engine/utils/common.js +68 -0
- package/dist/engine/utils/dialog.d.ts +25 -0
- package/dist/engine/utils/font.d.ts +5 -0
- package/dist/engine/utils/font.js +39 -0
- package/dist/engine/utils/image.d.ts +8 -0
- package/dist/engine/utils/image.js +50 -0
- package/dist/engine/utils/loading.d.ts +17 -0
- package/dist/engine/utils/loading.js +71 -0
- package/dist/engine/utils/measure.d.ts +6 -0
- package/dist/engine/utils/measure.js +6 -0
- package/dist/engine/utils/mockup.d.ts +59 -0
- package/dist/engine/utils/setting.d.ts +4 -0
- package/dist/engine/utils/setting.js +73 -0
- package/dist/fabric-types.d.ts +59 -0
- package/dist/full-designer.js +14 -0
- package/dist/hooks/pagination.d.ts +19 -0
- package/dist/hooks/use-adobe-express.d.ts +50 -0
- package/dist/hooks/use-before-unload.d.ts +1 -0
- package/dist/hooks/use-image-drop.d.ts +18 -0
- package/dist/hooks/use-oss-upload.d.ts +34 -0
- package/dist/hooks/use-screen.d.ts +1 -0
- package/dist/i18n/index.d.ts +12 -0
- package/dist/images/design/asset_empty.png +0 -0
- package/dist/images/design/design/background.svg +3 -0
- package/dist/images/design/design/color-picker.svg +15 -0
- package/dist/images/design/design/computer.svg +1 -0
- package/dist/images/design/design/copy.svg +1 -0
- package/dist/images/design/design/image.svg +10 -0
- package/dist/images/design/design/line.svg +1 -0
- package/dist/images/design/design/text.svg +1 -0
- package/dist/images/design/design/title.svg +1 -0
- package/dist/images/design/empty.png +0 -0
- package/dist/images/design/layer_empty.png +0 -0
- package/dist/images/design/menu/ai.svg +1 -0
- package/dist/images/design/menu/back.svg +4 -0
- package/dist/images/design/menu/background.svg +6 -0
- package/dist/images/design/menu/clipart.svg +6 -0
- package/dist/images/design/menu/file.svg +4 -0
- package/dist/images/design/menu/fill.svg +1 -0
- package/dist/images/design/menu/image.svg +7 -0
- package/dist/images/design/menu/layer.svg +6 -0
- package/dist/images/design/menu/product.svg +3 -0
- package/dist/images/design/menu/sca.svg +5 -0
- package/dist/images/design/menu/shapes.svg +5 -0
- package/dist/images/design/menu/templates.svg +6 -0
- package/dist/images/design/menu/text.svg +6 -0
- package/dist/images/design/menu/uploads.svg +7 -0
- package/dist/images/design/spinner.svg +3 -0
- package/dist/images/design/spinners.svg +17 -0
- package/dist/images/design/transparent_pattern.svg +5 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +127 -0
- package/dist/lib/analytics.d.ts +17 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/common.d.ts +16 -0
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/navigation.d.ts +2 -0
- package/dist/renderer/ThreeDPreview.d.ts +14 -0
- package/dist/renderer/sticker.js +1731 -0
- package/dist/renderer/three-d-preview.js +32 -0
- package/dist/state/designer-store.d.ts +43 -0
- package/dist/state/designer-store.js +85 -0
- package/dist/style.css +1 -0
- package/dist/types.d.ts +184 -0
- package/dist/ui/accordion.d.ts +7 -0
- package/dist/ui/button-group.d.ts +11 -0
- package/dist/ui/button.d.ts +10 -0
- package/dist/ui/checkbox.d.ts +4 -0
- package/dist/ui/command.d.ts +18 -0
- package/dist/ui/confirm-dialog.d.ts +15 -0
- package/dist/ui/context-menu.d.ts +25 -0
- package/dist/ui/dialog.d.ts +15 -0
- package/dist/ui/drawer.d.ts +15 -0
- package/dist/ui/editable-combobox.d.ts +10 -0
- package/dist/ui/hint.d.ts +8 -0
- package/dist/ui/image.d.ts +24 -0
- package/dist/ui/input-group.d.ts +16 -0
- package/dist/ui/input-with-addon.d.ts +17 -0
- package/dist/ui/input.d.ts +3 -0
- package/dist/ui/label.d.ts +4 -0
- package/dist/ui/loading-button.d.ts +15 -0
- package/dist/ui/popover.d.ts +9 -0
- package/dist/ui/scroll-area.d.ts +5 -0
- package/dist/ui/select.d.ts +22 -0
- package/dist/ui/separator.d.ts +4 -0
- package/dist/ui/shared-loading-button.d.ts +20 -0
- package/dist/ui/simple-dialog.d.ts +19 -0
- package/dist/ui/simple-popover.d.ts +13 -0
- package/dist/ui/simple-select.d.ts +20 -0
- package/dist/ui/skeleton.d.ts +2 -0
- package/dist/ui/slider.d.ts +4 -0
- package/dist/ui/spinner-box.d.ts +12 -0
- package/dist/ui/spinner.d.ts +2 -0
- package/dist/ui/switch.d.ts +6 -0
- package/dist/ui/tab/index.d.ts +15 -0
- package/dist/ui/textarea.d.ts +3 -0
- package/dist/ui/tooltip.d.ts +7 -0
- package/dist/workers/image-resize.worker.d.ts +1 -0
- package/dist/workers/mockup.worker.d.ts +5 -0
- package/dist/workers/render.worker.d.ts +1 -0
- package/package.json +201 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ImageUploadProps {
|
|
2
|
+
show: boolean;
|
|
3
|
+
isShapeUpload?: boolean;
|
|
4
|
+
type?: 'sidebar' | 'sheet';
|
|
5
|
+
file?: File;
|
|
6
|
+
}
|
|
7
|
+
export default function ImageUpload({ show, isShapeUpload, type, file }: ImageUploadProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ElementType } from '../../contracts/design';
|
|
2
|
+
export interface ExtraData {
|
|
3
|
+
shape?: boolean;
|
|
4
|
+
image?: File;
|
|
5
|
+
hideBack?: boolean;
|
|
6
|
+
}
|
|
7
|
+
type MenuProps = {
|
|
8
|
+
type?: ElementType;
|
|
9
|
+
position?: 'sidebar' | 'sheet';
|
|
10
|
+
extraData?: ExtraData;
|
|
11
|
+
};
|
|
12
|
+
export default function Menu({ type, position }: MenuProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TDRender, TDRenderArea } from '../../contracts/api-design';
|
|
2
|
+
interface ThreeDPreviewProps {
|
|
3
|
+
model: TDRender;
|
|
4
|
+
areas: TDRenderArea[];
|
|
5
|
+
}
|
|
6
|
+
export default function ThreeDPreview({ model, areas }: ThreeDPreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export type { ThreeDPreviewProps, TDRender, TDRenderArea };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface GraphicPreviewProps {
|
|
2
|
+
imageList: string[];
|
|
3
|
+
renderParams?: Record<string, any>;
|
|
4
|
+
index?: number;
|
|
5
|
+
}
|
|
6
|
+
export default function GraphicPreview({ imageList, renderParams, index }: GraphicPreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export type { GraphicPreviewProps };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Product, TDRender, TDRenderArea } from '../../contracts/api-design';
|
|
2
|
+
import { type OssUploadFun } from '../../hooks/use-oss-upload';
|
|
3
|
+
type PreviewType = '3d' | 'graphic' | 'graphicRealTime';
|
|
4
|
+
interface PreviewDialogProps {
|
|
5
|
+
onClose?: () => void;
|
|
6
|
+
type: PreviewType;
|
|
7
|
+
tdModel?: TDRender;
|
|
8
|
+
areas?: TDRenderArea[];
|
|
9
|
+
imageList?: string[];
|
|
10
|
+
renderParams?: Record<string, any>;
|
|
11
|
+
product: Product;
|
|
12
|
+
designData?: Record<string, any>;
|
|
13
|
+
hasEmptyView?: boolean;
|
|
14
|
+
index?: number;
|
|
15
|
+
onOssUpload?: OssUploadFun;
|
|
16
|
+
}
|
|
17
|
+
export default function PreviewDialog({ onClose, type, tdModel, areas, renderParams, imageList, product, designData, index, hasEmptyView, onOssUpload, }: PreviewDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export type { PreviewDialogProps, PreviewType };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PreviewDialogProps } from './index';
|
|
2
|
+
import type { DesignerRuntime } from '../../types';
|
|
3
|
+
export type OpenPreviewProps = PreviewDialogProps & {
|
|
4
|
+
runtime: DesignerRuntime;
|
|
5
|
+
};
|
|
6
|
+
/** Opens the full-screen preview in a portal root while preserving package runtime. */
|
|
7
|
+
export default function openPreview({ runtime, ...props }: OpenPreviewProps): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TDRender, TDRenderArea } from '../../../contracts/api-design';
|
|
3
|
+
interface ThreeDProps {
|
|
4
|
+
model: TDRender;
|
|
5
|
+
designPreviewMap: Record<string, string | ImageBitmap>;
|
|
6
|
+
}
|
|
7
|
+
export type ThreeDPreviewRef = {
|
|
8
|
+
getRenderAreas: () => TDRenderArea[];
|
|
9
|
+
};
|
|
10
|
+
declare const ThreeDPreview: React.ForwardRefExoticComponent<ThreeDProps & React.RefAttributes<ThreeDPreviewRef>>;
|
|
11
|
+
export default ThreeDPreview;
|
|
12
|
+
export type { ThreeDProps };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Render } from '../../../contracts/api-design';
|
|
2
|
+
interface GraphicProps {
|
|
3
|
+
models: Render[];
|
|
4
|
+
designPreviewMap: Record<string, string | ImageBitmap>;
|
|
5
|
+
renderColor: string;
|
|
6
|
+
onPreview?: (index: number) => void;
|
|
7
|
+
}
|
|
8
|
+
export type GraphicPreviewRef = {
|
|
9
|
+
getRenderImage: () => string[];
|
|
10
|
+
};
|
|
11
|
+
declare const GraphicPreview: import("react").ForwardRefExoticComponent<GraphicProps & import("react").RefAttributes<GraphicPreviewRef>>;
|
|
12
|
+
interface GraphicItemProps {
|
|
13
|
+
image?: string;
|
|
14
|
+
defaultImage: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const GraphicItem: ({ image, defaultImage }: GraphicItemProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
17
|
+
export default GraphicPreview;
|
|
18
|
+
export type { GraphicProps };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Product, Render, TDRender } from '../../../contracts/api-design';
|
|
2
|
+
interface RealTimePreviewProps {
|
|
3
|
+
renderList: Render[];
|
|
4
|
+
tdRenderList: TDRender[];
|
|
5
|
+
designPreviewMap: Record<string, string | ImageBitmap>;
|
|
6
|
+
color: string;
|
|
7
|
+
product: Product;
|
|
8
|
+
onPreview: (img: string[], index?: number) => void;
|
|
9
|
+
}
|
|
10
|
+
export default function RealTimePreview({ renderList, tdRenderList, designPreviewMap, color, product, onPreview, }: RealTimePreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ElementConfig {
|
|
2
|
+
type: 'image' | 'text' | 'svg';
|
|
3
|
+
id: string;
|
|
4
|
+
config: Record<string, any> | undefined;
|
|
5
|
+
}
|
|
6
|
+
interface CustomDesignElementProps {
|
|
7
|
+
open: boolean;
|
|
8
|
+
onOpenChange: (open: boolean) => void;
|
|
9
|
+
elementConfig: ElementConfig | undefined;
|
|
10
|
+
onUpdate: (id: string, config: Record<string, any>) => void;
|
|
11
|
+
}
|
|
12
|
+
export default function CustomDesignElement({ open, onOpenChange, elementConfig, onUpdate }: CustomDesignElementProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Layer } from '../contracts/design';
|
|
2
|
+
interface SemiDesignGroupProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
elements: Layer[];
|
|
6
|
+
onSelect: (elements: string[]) => void;
|
|
7
|
+
}
|
|
8
|
+
export default function SemiDesignGroup({ open, onOpenChange, elements, onSelect }: SemiDesignGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useDesignerStore, useDesignStore, type DesignerState } from '../state/designer-store';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const g = { "/images/design/asset_empty.png": "data:image/png;base64,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", "/images/design/design/background.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE4LjY1IDIuNUg1LjM1QzMuNzczIDIuNSAyLjUgMy43NzMgMi41IDUuMzVWMTguNjVDMi41IDIwLjIyNyAzLjc3MyAyMS41IDUuMzUgMjEuNUgxOC42NUMyMC4yMjcgMjEuNSAyMS41IDIwLjIyNyAyMS41IDE4LjY1VjUuMzVDMjEuNSAzLjc3MyAyMC4yMjcgMi41IDE4LjY1IDIuNVpNNC40IDkuODkxVjUuMzVDNC40IDQuODI3NSA0LjgyNzUgNC40IDUuMzUgNC40SDEyLjQwODVMNC40IDExLjc0MzVWOS44OTFaTTQuNCAxNC4zMThMMTUuMjIwNSA0LjRIMTguMjEzTDQuNCAxNy4zNzdWMTQuMzE4Wk0xOS42IDE4LjY1QzE5LjYgMTkuMTcyNSAxOS4xNzI1IDE5LjYgMTguNjUgMTkuNkgxMS40Mzk1TDE5LjYgMTEuNDM5NVYxOC42NVpNMTkuNiA4Ljc2MDVMOC43NjA1IDE5LjZINS4zNUM1LjE5OCAxOS42IDUuMDU1NSAxOS41NTI1IDQuOTIyNSAxOS40ODZMMTkuNiA1LjcwMTVWOC43NjA1WiIgZmlsbD0iIzMzMzMzMyIvPgo8L3N2Zz4K", "/images/design/design/color-picker.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzU2NDdfMTI3MjkpIj4KPHBhdGggZD0iTTEwLjUgMS4xNjY5OUwxMi44MzMzIDMuNTAwMzMiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS4xNjY2NyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik05LjkxNzk3IDQuMDgzMDFMMTEuNjY4IDIuMzMzMDEiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS4xNjY2NyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS4wODM5IDUuMjUwMzNMNS4wNzU1MiAxMS4yNTg3QzQuNDkyMTkgMTEuODQyIDMuNjE3MTkgMTEuODQyIDMuMDkyMTkgMTEuMjU4N0wyLjc0MjE5IDEwLjkwODdDMi4xNTg4NSAxMC4zMjUzIDIuMTU4ODUgOS40NTAzMyAyLjc0MjE5IDguOTI1MzNMOC43NTA1MiAyLjkxNjk5IiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuMTY2NjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNNS4yNSA2LjQxNjk5TDcuNTgzMzMgOC43NTAzMyIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjE2NjY3IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIuOTE3OTcgMTEuMDgzTDEuMTY3OTcgMTIuODMzIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuMTY2NjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNOC4xNjc5NyAyLjMzMzAxTDExLjY2OCA1LjgzMzAxIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuMTY2NjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzU2NDdfMTI3MjkiPgo8cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==", "/images/design/design/computer.svg": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMWYxZjFmIj48cGF0aCBkPSJNNDAtMTIwdi04MGg4ODB2ODBINDBabTEyMC0xMjBxLTMzIDAtNTYuNS0yMy41VDgwLTMyMHYtNDQwcTAtMzMgMjMuNS01Ni41VDE2MC04NDBoNjQwcTMzIDAgNTYuNSAyMy41VDg4MC03NjB2NDQwcTAgMzMtMjMuNSA1Ni41VDgwMC0yNDBIMTYwWm0wLTgwaDY0MHYtNDQwSDE2MHY0NDBabTAgMHYtNDQwIDQ0MFoiLz48L3N2Zz4=", "/images/design/design/copy.svg": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMWYxZjFmIj48cGF0aCBkPSJNNzYwLTIwMEgzMjBxLTMzIDAtNTYuNS0yMy41VDI0MC0yODB2LTU2MHEwLTMzIDIzLjUtNTYuNVQzMjAtOTIwaDI4MGwyNDAgMjQwdjQwMHEwIDMzLTIzLjUgNTYuNVQ3NjAtMjAwWk01NjAtNjQwdi0yMDBIMzIwdjU2MGg0NDB2LTM2MEg1NjBaTTE2MC00MHEtMzMgMC01Ni41LTIzLjVUODAtMTIwdi01NjBoODB2NTYwaDQ0MHY4MEgxNjBabTE2MC04MDB2MjAwLTIwMCA1NjAtNTYwWiIvPjwvc3ZnPg==", "/images/design/design/image.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzM0OTRfOTYwNikiPgo8cGF0aCBkPSJNMCA4LjI2NDU3VjI3Ljc5MDlDMCAyOS42MTMyIDAuMzc4MDc5IDI5Ljk2MDQgMi4yMTA2MSAyOS45NjA0SDI3LjI0MUMyOS4wNTgxIDI5Ljk2MDQgMjkuNDQ5IDI5LjYyODYgMjkuNDQ5IDI3Ljc5MDlWOC4yNjU4NkMyOS40NDkgNi40ODYwNiAyOS4xMDE4IDYuMDk2NCAyNy4yNDEgNi4wOTY0SDIuMjA5MzJDMC4zODMyMjMgNi4wOTY0IDAuMDAxMjg2IDYuNDA2MzMgMC4wMDEyODU5NyA4LjI2NTg2TDAgOC4yNjQ1N1pNMjUuOTgwNyAyNC44OTg4SDMuNDgzNzNDNS45NDI1MyAyMS4zNzUyIDEwLjMxNDkgMTUuNTAzNCAxMS40MjYgMTUuNTAzNEMxMi41MDEgMTUuNTAzNCAxNi4xNTIgMjAuMjQ4NyAxNy44MDA2IDIxLjkxOTFDMTcuODAwNiAyMS45MTkxIDE5LjkyMjUgMTkuMTM1IDIxLjAzMzUgMTkuMTM1QzIyLjE2NjUgMTkuMTM1IDI1Ljk0MzQgMjQuODcwNSAyNS45ODA3IDI0Ljg5ODhaTTE5LjM3MDggMTIuNjA0OEMxOS4zNzA4IDExLjEyODUgMjAuNTg0NyA5LjkzNTA3IDIyLjA4NTUgOS45MzUwN0MyMy41ODc1IDkuOTM1MDcgMjQuODAyOCAxMS4xMjg1IDI0LjgwMjggMTIuNjAzNUMyNC44MDI4IDE0LjA3ODUgMjMuNTg3NSAxNS4yNzE5IDIyLjA4NTUgMTUuMjcxOUMyMC41ODQ3IDE1LjI3MTkgMTkuMzY5NSAxNC4wNzg1IDE5LjM2OTUgMTIuNjAzNUwxOS4zNzA4IDEyLjYwNDhaTTEzLjgxMTUgNC43ODQ3TDkuNTAzNDIgMy45ODM1M0M4LjA3NTk4IDMuNzE3MzQgNy41MTAxNCAzLjgxMjUgNy4xNjAzNiA0Ljc4NTk5SDEzLjgxMTVWNC43ODQ3Wk0zNC4wOTY2IDguNTY1NDlMMzAuNzI2IDcuOTM3OTNMMzAuNzI3MyA4LjE3NzEzVjI3LjgxNDFDMzAuNzI3MyAyOC43MjcxIDMwLjY2NjggMjkuNzU3MiAyOS45MzI2IDMwLjQ2MzJDMjkuMjIwMSAzMS4xNDk5IDI4LjE4NjIgMzEuMjA3OCAyNy4yNzQ0IDMxLjIwNzhIMjUuMjQyNkwyOS41NjczIDMyLjAxNDFDMzEuMzUyMyAzMi4zNDcyIDMxLjc5OTggMzIuMDkxMyAzMi4xNDgzIDMwLjI4N0wzNS44NTQ1IDExLjEwMjdDMzYuMTkxNCA5LjM1MzggMzUuOTI1MiA4LjkwNzU2IDM0LjA5NjYgOC41NjY3OFY4LjU2NTQ5WiIgZmlsbD0iIzM1NDBBNSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzM0OTRfOTYwNiI+CjxyZWN0IHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K", "/images/design/design/line.svg": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzUxODU5MTc4MjAxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjExMjAwIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48cGF0aCBkPSJNODUuMzMzMzMzIDk1NS43MzMzMzNhMTcuMDQ5NiAxNy4wNDk2IDAgMCAxLTEyLjA2NjEzMy0yOS4xMzI4bDg1My4zMzMzMzMtODUzLjMzMzMzM2ExNy4wNDk2IDE3LjA0OTYgMCAxIDEgMjQuMTMyMjY3IDI0LjEzMjI2N2wtODUzLjMzMzMzMyA4NTMuMzMzMzMzQTE3LjAxNTQ2NyAxNy4wMTU0NjcgMCAwIDEgODUuMzMzMzMzIDk1NS43MzMzMzN6IiBwLWlkPSIxMTIwMSIgZmlsbD0iI2JmYmZiZiI+PC9wYXRoPjwvc3ZnPg==", "/images/design/design/text.svg": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMWYxZjFmIj48cGF0aCBkPSJNMjgwLTE2MHYtNTIwSDgwdi0xMjBoNTIwdjEyMEg0MDB2NTIwSDI4MFptMzYwIDB2LTMyMEg1MjB2LTEyMGgzNjB2MTIwSDc2MHYzMjBINjQwWiIvPjwvc3ZnPg==", "/images/design/design/title.svg": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMWYxZjFmIj48cGF0aCBkPSJNNDIwLTE2MHYtNTIwSDIwMHYtMTIwaDU2MHYxMjBINTQwdjUyMEg0MjBaIi8+PC9zdmc+", "/images/design/empty.png": "data:image/png;base64,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", "/images/design/layer_empty.png": "data:image/png;base64,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", "/images/design/menu/ai.svg": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjQuMDAwMiA0NUMyNy4yMjA4IDQ1IDMyLjcyNzYgNDAuOCAzMi43Mjc2IDI0QzMyLjcyNzYgNy4yIDI3LjIyMDggMyAyNC4wMDAyIDNDMjAuNzc5NyAzIDE1LjI3MjkgNy40ODMwMiAxNS4yNzI5IDI0QzE1LjI3MjkgNDAuNTE3IDIwLjc3OTcgNDUgMjQuMDAwMiA0NVoiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuMTA1MTUgMzUuMDAwMUM2LjcxNTQ1IDM3LjgxMjQgMTMuMjQ3OSA0MC40MjExIDI4LjM2NCAzMS42MjExQzQzLjQ4IDIyLjgyMTEgNDQuNTA1NyAxNS44MTI0IDQyLjg5NTQgMTMuMDAwMUM0MS4yODUxIDEwLjE4NzggMzQuNDk4MSA3LjcyNzI4IDE5LjYzNjcgMTYuMzc5MUM0Ljc3NTIxIDI1LjAzMDggMy40OTQ4OSAzMi4xODc4IDUuMTA1MTUgMzUuMDAwMVoiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuMTA1MDYgMTMuMDAwMUMzLjQ5NDggMTUuODEyNCA0LjUyMDQ2IDIyLjgyMTEgMTkuNjM2NiAzMS42MjExQzM0Ljc1MjcgNDAuNDIxMSA0MS4yODUgMzcuODEyNCA0Mi44OTUzIDM1LjAwMDFDNDQuNTA1NiAzMi4xODc4IDQzLjIyNTMgMjUuMDMwOCAyOC4zNjM4IDE2LjM3OTFDMTMuNTAyNCA3LjcyNzI4IDYuNzE1MzcgMTAuMTg3OCA1LjEwNTA2IDEzLjAwMDFaIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+", "/images/design/menu/back.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIuODk5NDggMTJIMjAuODk5NSIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTguODk5NCAxOEwyLjg5OTQxIDEyTDguODk5NCA2IiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K", "/images/design/menu/background.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMy4yMjI2NiIgeT0iMy4yMTA5NCIgd2lkdGg9IjE3LjUyNzMiIGhlaWdodD0iMTcuNTI3MyIgcng9IjIuMjUiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHBhdGggZD0iTTMuNDQxOTYgMTMuODcyMUwxNC45Nzg3IDMuMzM3ODkiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNOS4yNjcyMyAyMC42Njc0TDIwLjU4NjcgOS4xNjAzNSIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zLjUxOTE2IDE5LjQzMjlMMjAuMDA5IDQuMDY3OTQiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K", "/images/design/menu/clipart.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUgMjJIMTlDMTkuNTUyMyAyMiAyMCAyMS41NTIzIDIwIDIxVjdIMTVWMkg1QzQuNDQ3NzEgMiA0IDIuNDQ3NzEgNCAzVjIxQzQgMjEuNTUyMyA0LjQ0NzcxIDIyIDUgMjJaIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNSAyTDIwIDciIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTkgMTAuNUMxMC4xMDQ2IDEwLjUgMTEgOS42MDQ1NyAxMSA4LjVDMTEgNy4zOTU0MyAxMC4xMDQ2IDYuNSA5IDYuNUM3Ljg5NTQzIDYuNSA3IDcuMzk1NDMgNyA4LjVDNyA5LjYwNDU3IDcuODk1NDMgMTAuNSA5IDEwLjVaIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik03LjUgMTRWMTguNUgxNi41VjEwLjVMMTEuNzQ0NyAxNS43NUw3LjUgMTRaIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=", "/images/design/menu/file.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIgNC41VjIwLjVMNC41IDEwLjVIMTkuNzVWNy41QzE5Ljc1IDYuOTQ3NyAxOS4zMDIzIDYuNSAxOC43NSA2LjVIMTJMOS41IDMuNUgzQzIuNDQ3NzEgMy41IDIgMy45NDc3MSAyIDQuNVoiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjAgMjAuNUwyMiAxMC41SDQuNDA2MjVMMiAyMC41SDIwWiIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=", "/images/design/menu/fill.svg": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMWYxZjFmIj48cGF0aCBkPSJNMzQ2LTE0MCAxMDAtMzg2cS0xMC0xMC0xNS0yMnQtNS0yNXEwLTEzIDUtMjV0MTUtMjJsMjMwLTIyOS0xMDYtMTA2IDYyLTY1IDQwMCA0MDBxMTAgMTAgMTQuNSAyMnQ0LjUgMjVxMCAxMy00LjUgMjVUNjg2LTM4Nkw0NDAtMTQwcS0xMCAxMC0yMiAxNXQtMjUgNXEtMTMgMC0yNS01dC0yMi0xNVptNDctNTA2TDE3OS00MzJoNDI4TDM5My02NDZabTM5OSA1MjZxLTM2IDAtNjEtMjUuNVQ3MDYtMjA4cTAtMjcgMTMuNS01MXQzMC41LTQ3bDQyLTU0IDQ0IDU0cTE2IDIzIDMwIDQ3dDE0IDUxcTAgMzctMjYgNjIuNVQ3OTItMTIwWiIvPjwvc3ZnPg==", "/images/design/menu/image.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIyIDEyQzIyIDExLjQ0NzcgMjEuNzQ5MyAxMS4wMjQzIDIxLjE5NyAxMS4wMjQzQzIwLjY0NDcgMTEuMDI0MyAyMC40NzM0IDExLjQ0NzcgMjAuNDczNCAxMkgyMlpNMTIgMy41QzEyLjU1MjMgMy41IDEzLjA0MjUgMy4zMzY5OSAxMy4wNDI1IDIuNzg0N0MxMy4wNDI1IDIuMjMyNDIgMTIuNTUyMyAyIDEyIDJWMy41Wk0xOS41IDIwLjU1MzhINC41VjIySDE5LjVWMjAuNTUzOFpNMy41IDE5LjVWMTJWNC41SDJWMTkuNUgzLjVaTTIwLjQ3MzQgMTJWMTkuNUgyMlYxMkgyMC40NzM0Wk00LjUgMy41SDEyVjJINC41VjMuNVpNNC41IDIwLjU1MzhDNC4yMjM4NiAyMC41NTM4IDMuNSAxOS43NzYxIDMuNSAxOS41SDJDMiAyMC44ODA3IDMuMTE5MjggMjIgNC41IDIyVjIwLjU1MzhaTTE5LjUgMjJDMjAuODgwNyAyMiAyMiAyMC44ODA3IDIyIDE5LjVIMjAuNDczNEMyMC40NzM0IDE5Ljc3NjEgMTkuNzc2MSAyMC41NTM4IDE5LjUgMjAuNTUzOFYyMlpNMy41IDQuNUMzLjUgNC4yMjM4NiA0LjIyMzg2IDMuNSA0LjUgMy41VjJDMy4xMTkyOSAyIDIgMy4xMTkyOCAyIDQuNUgzLjVaIiBmaWxsPSIjMUMxQzFFIi8+CjxwYXRoIGQ9Ik0zIDE3LjQ5OThMOC4zNDY1NSAxMi41OTg4QzguNzE5NDUgMTIuMjU2OSA5LjI4ODk1IDEyLjI0NzQgOS42NzMwNSAxMi41NzY3TDE2IDE3Ljk5OTgiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQgMTUuNDk5OUwxNi4zODY3IDEzLjExMzJDMTYuNzM4NiAxMi43NjEzIDE3LjI5NTcgMTIuNzIxNyAxNy42OTM4IDEzLjAyMDNMMjEgMTUuNDk5OSIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNSA2SDIxIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE4IDNWOSIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=", "/images/design/menu/layer.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIgNS45NTcxNUwxMiA5LjVMMjIgNS45NTcxNUwxMiAyLjVMMiA1Ljk1NzE1WiIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMiAxMEwxMiAxMy41TDIyIDEwIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yIDE0TDEyIDE3LjVMMjIgMTQiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIgMThMMTIgMjEuNUwyMiAxOCIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K", "/images/design/menu/product.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkgM0M5IDQuNjU2ODUgMTAuMzQzMiA2IDEyIDZDMTMuNjU2OCA2IDE1IDQuNjU2ODUgMTUgM0gxNy43MjcyTDIxIDcuOTA5MUwxOC4xMzY0IDEwLjM2MzdWMjFINS44NjM2NVYxMC4zNjM3TDMgNy45MDkxTDYuMjcyNzUgM0g5WiIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K", "/images/design/menu/sca.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyLjE3NzUgOC44NzgzOEMxNC4yMTUgOC44NzgzOCAxNS44NjY3IDcuMjI2NjcgMTUuODY2NyA1LjE4OTE5QzE1Ljg2NjcgMy4xNTE3MSAxNC4yMTUgMS41IDEyLjE3NzUgMS41QzEwLjE0IDEuNSA4LjQ4ODI4IDMuMTUxNzEgOC40ODgyOCA1LjE4OTE5QzguNDg4MjggNy4yMjY2NyAxMC4xNCA4Ljg3ODM4IDEyLjE3NzUgOC44NzgzOFoiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjU4MTA4IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTEuNjM2NzIgMjAuOTk4OEMxLjYzNjcyIDE2LjM0MTcgNS44ODM5OCAxMi41NjY0IDExLjEyMzIgMTIuNTY2NCIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNTgxMDgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjIuOTcwOSA5LjU2MDc1QzIyLjc0MSA5LjI4ODg1IDIxLjY4MyA5Ljk1Mzk0IDIwLjQ3NTQgMTEuMDcxNEMxOS43OTc5IDExLjY5OTggMTcuOTIxOSAxMy40NTMyIDE2LjQwNDcgMTQuODcxTDE4LjA4MTUgMTYuNjU5MkMxOS40MDE4IDE0Ljk1OTkgMjEuMDY0MyAxMi44MjE2IDIxLjY3MDEgMTIuMDQ3QzIyLjczMjYgMTAuNjg4MiAyMy4xMTQ2IDkuNzEyMjIgMjIuOTcwOSA5LjU2MDc1Wk0xNC41ODI4IDE2LjU3NDlMMTYuNTY3MyAxOC42MDcyTDE3Ljc4ODEgMTcuMDM1OUwxNi4wNjE1IDE1LjE5MzJDMTUuNDQgMTUuNzczIDE0LjkwNCAxNi4yNzM5IDE0LjU4MjggMTYuNTc0OVpNMTIuMTQ3MyAxOS4xMzY2QzEyLjE0NzMgMjEuMjQyIDEwIDIwLjk1NzUgMTAgMjAuOTU3NUMxMCAyMC45NTc1IDE1LjExOTIgMjMuNjI4MSAxNi4yNzE1IDE4Ljk4MjJWMTguOTg4M0wxNi4yNzU1IDE4Ljk4M0wxNC4yNDMxIDE2LjkwMjJDMTQuMTIyIDE2LjkxMDkgMTIuMTQ3MyAxNy4wOTUxIDEyLjE0NzMgMTkuMTM2NloiIGZpbGw9IiMxQzFDMUUiLz4KPC9zdmc+Cg==", "/images/design/menu/shapes.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEwIDE0LjVIM1YyMS41SDEwVjE0LjVaIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMiAyTDE3IDEwLjVIN0wxMiAyWiIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTggMjJDMjAuMjA5MiAyMiAyMiAyMC4yMDkyIDIyIDE4QzIyIDE1Ljc5MDggMjAuMjA5MiAxNCAxOCAxNEMxNS43OTA4IDE0IDE0IDE1Ljc5MDggMTQgMThDMTQgMjAuMjA5MiAxNS43OTA4IDIyIDE4IDIyWiIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K", "/images/design/menu/templates.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjUgMkgyVjEzSDExLjVWMloiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIyIDE3SDJWMjEuNUgyMlYxN1oiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTIyIDJIMTUuNVY2SDIyVjJaIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMiA5SDE1LjVWMTNIMjJWOVoiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==", "/images/design/menu/text.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE5LjUgM0g0LjVDMy42NzE1NyAzIDMgMy42NzE1NyAzIDQuNVYxOS41QzMgMjAuMzI4NCAzLjY3MTU3IDIxIDQuNSAyMUgxOS41QzIwLjMyODQgMjEgMjEgMjAuMzI4NCAyMSAxOS41VjQuNUMyMSAzLjY3MTU3IDIwLjMyODQgMyAxOS41IDNaIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik04IDkuNVY4SDE2VjkuNSIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMSAxN0gxMyIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMiA5VjE3IiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==", "/images/design/menu/uploads.svg": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIyIDEyQzIyIDExLjQ0NzcgMjEuNzQ5MyAxMS4wMjQzIDIxLjE5NyAxMS4wMjQzQzIwLjY0NDcgMTEuMDI0MyAyMC40NzM0IDExLjQ0NzcgMjAuNDczNCAxMkgyMlpNMTIgMy41QzEyLjU1MjMgMy41IDEzLjA0MjUgMy4zMzY5OSAxMy4wNDI1IDIuNzg0N0MxMy4wNDI1IDIuMjMyNDIgMTIuNTUyMyAyIDEyIDJWMy41Wk0xOS41IDIwLjU1MzhINC41VjIySDE5LjVWMjAuNTUzOFpNMy41IDE5LjVWMTJWNC41SDJWMTkuNUgzLjVaTTIwLjQ3MzQgMTJWMTkuNUgyMlYxMkgyMC40NzM0Wk00LjUgMy41SDEyVjJINC41VjMuNVpNNC41IDIwLjU1MzhDNC4yMjM4NiAyMC41NTM4IDMuNSAxOS43NzYxIDMuNSAxOS41SDJDMiAyMC44ODA3IDMuMTE5MjggMjIgNC41IDIyVjIwLjU1MzhaTTE5LjUgMjJDMjAuODgwNyAyMiAyMiAyMC44ODA3IDIyIDE5LjVIMjAuNDczNEMyMC40NzM0IDE5Ljc3NjEgMTkuNzc2MSAyMC41NTM4IDE5LjUgMjAuNTUzOFYyMlpNMy41IDQuNUMzLjUgNC4yMjM4NiA0LjIyMzg2IDMuNSA0LjUgMy41VjJDMy4xMTkyOSAyIDIgMy4xMTkyOCAyIDQuNUgzLjVaIiBmaWxsPSIjMUMxQzFFIi8+CjxwYXRoIGQ9Ik0zIDE3LjQ5OThMOC4zNDY1NSAxMi41OTg4QzguNzE5NDUgMTIuMjU2OSA5LjI4ODk1IDEyLjI0NzQgOS42NzMwNSAxMi41NzY3TDE2IDE3Ljk5OTgiIHN0cm9rZT0iIzFDMUMxRSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTQgMTUuNDk5OUwxNi4zODY3IDEzLjExMzJDMTYuNzM4NiAxMi43NjEzIDE3LjI5NTcgMTIuNzIxNyAxNy42OTM4IDEzLjAyMDNMMjEgMTUuNDk5OSIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNSA2SDIxIiBzdHJva2U9IiMxQzFDMUUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE4IDNWOSIgc3Ryb2tlPSIjMUMxQzFFIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=", "/images/design/spinner.svg": "data:image/svg+xml;base64,PHN2ZyAgdmlld0JveD0iMCAwIDMyIDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNMS42IDE2QzAuNzE2MzQ1IDE2IC0wLjAwODI5MDI1IDE1LjI4MTkgMC4wNzk5Mjc1IDE0LjQwMjZDMC4zNDA4MDcgMTEuODAyNSAxLjIzNTY4IDkuMjk3MTIgMi42OTY0OCA3LjExMDg4QzQuNDU0NTkgNC40Nzk2OSA2Ljk1MzQ0IDIuNDI4OTMgOS44NzcwNiAxLjIxNzkzQzEyLjgwMDcgMC4wMDY5MjczMiAxNi4wMTc3IC0wLjMwOTkyOCAxOS4xMjE0IDAuMzA3NDMzQzIyLjIyNTEgMC45MjQ3OTQgMjUuMDc2MSAyLjQ0ODY0IDI3LjMxMzcgNC42ODYyOEMyOS41NTEzIDYuOTIzOTIgMzEuMDc1MiA5Ljc3NDg0IDMxLjY5MjYgMTIuODc4NUMzMi4zMDk5IDE1Ljk4MjIgMzEuOTkzMSAxOS4xOTkzIDMwLjc4MjEgMjIuMTIyOUMyOS41NzExIDI1LjA0NjUgMjcuNTIwMyAyNy41NDU0IDI0Ljg4OTEgMjkuMzAzNUMyMi43MDI5IDMwLjc2NDMgMjAuMTk3NSAzMS42NTkyIDE3LjU5NzQgMzEuOTIwMUMxNi43MTgyIDMyLjAwODMgMTYgMzEuMjgzNyAxNiAzMC40VjMwLjRDMTYgMjkuNTE2MyAxNi43MTkxIDI4LjgxMDMgMTcuNTk1OSAyOC43MDAxQzE5LjU2MiAyOC40NTMxIDIxLjQ1MTYgMjcuNzUxOCAyMy4xMTEzIDI2LjY0MjhDMjUuMjE2MyAyNS4yMzYzIDI2Ljg1NjkgMjMuMjM3MiAyNy44MjU3IDIwLjg5ODNDMjguNzk0NSAxOC41NTk0IDI5LjA0NzkgMTUuOTg1OCAyOC41NTQgMTMuNTAyOEMyOC4wNjAyIDExLjAxOTkgMjYuODQxMSA4LjczOTEzIDI1LjA1MSA2Ljk0OTAyQzIzLjI2MDggNS4xNTg5MSAyMC45ODAxIDMuOTM5ODQgMTguNDk3MSAzLjQ0NTk1QzE2LjAxNDIgMi45NTIwNiAxMy40NDA1IDMuMjA1NTQgMTEuMTAxNiA0LjE3NDM0QzguNzYyNzUgNS4xNDMxNSA2Ljc2MzY3IDYuNzgzNzUgNS4zNTcxOSA4Ljg4ODdDNC4yNDgyMSAxMC41NDg0IDMuNTQ2OTIgMTIuNDM4IDMuMjk5ODYgMTQuNDA0MUMzLjE4OTY5IDE1LjI4MDkgMi40ODM2NiAxNiAxLjYgMTZWMTZaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4KPC9zdmc+Cg==", "/images/design/spinners.svg": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSI1MCIgd2lkdGg9IjUwIiB2aWV3Qm94PSIwIDAgNTAgNTAiPgoJPGNpcmNsZSBjeD0iMjUiIGN5PSIyNSIgcj0iMjAiIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSIjRTVFNUU1IiAvPgoJPGNpcmNsZSBjeD0iMjUiIGN5PSIyNSIgcj0iMjAiIGZpbGw9Im5vbmUiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlPSIjNTU1NTU1IiBzdHJva2UtbGluZWNhcD0icm91bmQiPgoJCTxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZS1kYXNoYXJyYXkiIHZhbHVlcz0iMSwgMTUwOzkwLCAxNTA7OTAsIDE1MCIgZHVyPSIxLjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KCQk8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaG9mZnNldCIgdmFsdWVzPSIwOy0zNTstMTI0IiBkdXI9IjEuNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgoJCTxhbmltYXRlVHJhbnNmb3JtCgkJCWF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKCQkJYXR0cmlidXRlVHlwZT0iWE1MIgoJCQl0eXBlPSJyb3RhdGUiCgkJCWZyb209IjAgMjUgMjUiCgkJCXRvPSIzNjAgMjUgMjUiCgkJCWR1cj0iMnMiCgkJCXJlcGVhdENvdW50PSJpbmRlZmluaXRlIgoJCS8+Cgk8L2NpcmNsZT4KPC9zdmc+", "/images/design/transparent_pattern.svg": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyMCcgaGVpZ2h0PScyMCc+CjxyZWN0IHdpZHRoPScyMCcgaGVpZ2h0PScyMCcgZmlsbD0nI2ZmZicvPgo8cmVjdCB3aWR0aD0nMTAnIGhlaWdodD0nMTAnIGZpbGw9JyNmN2Y3ZjcnLz4KPHJlY3QgeD0nMTAnIHk9JzEwJyB3aWR0aD0nMTAnIGhlaWdodD0nMTAnIGZpbGw9JyNmN2Y3ZjcnLz4KPC9zdmc+Cg==" }, N = g, D = {
|
|
2
|
+
imageBaseUrl: ""
|
|
3
|
+
};
|
|
4
|
+
function j(M) {
|
|
5
|
+
M.imageBaseUrl !== void 0 && (D.imageBaseUrl = M.imageBaseUrl);
|
|
6
|
+
}
|
|
7
|
+
function A(M) {
|
|
8
|
+
if (/^(?:https?:|data:|blob:)/i.test(M)) return M;
|
|
9
|
+
const I = `/${M.replace(/^\//, "")}`;
|
|
10
|
+
return N[I] ?? I;
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
D as a,
|
|
14
|
+
A as d,
|
|
15
|
+
j as s
|
|
16
|
+
};
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import type { FontStyle } from './design';
|
|
2
|
+
import '../fabric-types';
|
|
3
|
+
export interface Product {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
assets: {
|
|
7
|
+
id: string;
|
|
8
|
+
full_url: string;
|
|
9
|
+
}[];
|
|
10
|
+
design_options: {
|
|
11
|
+
design_type: string;
|
|
12
|
+
design_value: string;
|
|
13
|
+
}[];
|
|
14
|
+
product: {
|
|
15
|
+
title: string;
|
|
16
|
+
design?: {
|
|
17
|
+
design_data: Record<string, any>;
|
|
18
|
+
design_layers?: DesignLayer[];
|
|
19
|
+
background_customized?: SemiCustomBackground;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
price: string;
|
|
23
|
+
variant_title: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DesignLayer {
|
|
26
|
+
id: string;
|
|
27
|
+
area_id?: string;
|
|
28
|
+
pattern: string;
|
|
29
|
+
render_id: number;
|
|
30
|
+
name: string;
|
|
31
|
+
}
|
|
32
|
+
export interface BasePlate {
|
|
33
|
+
id: number;
|
|
34
|
+
colors: string[];
|
|
35
|
+
preview_img01: string;
|
|
36
|
+
preview_img02: string;
|
|
37
|
+
custom_color: number;
|
|
38
|
+
custom_shape: number;
|
|
39
|
+
areas: Mockup[];
|
|
40
|
+
render_list: {
|
|
41
|
+
id: number;
|
|
42
|
+
}[];
|
|
43
|
+
renders: Render[];
|
|
44
|
+
td_renders: TDRender[];
|
|
45
|
+
}
|
|
46
|
+
export interface Mockup {
|
|
47
|
+
name: string;
|
|
48
|
+
id: string | number;
|
|
49
|
+
image: string;
|
|
50
|
+
width?: number;
|
|
51
|
+
height?: number;
|
|
52
|
+
is_default: 0 | 1;
|
|
53
|
+
}
|
|
54
|
+
export interface MockupPosition {
|
|
55
|
+
areaWidth: number;
|
|
56
|
+
areaHeight: number;
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
left: number;
|
|
60
|
+
top: number;
|
|
61
|
+
}
|
|
62
|
+
export interface PrintArea {
|
|
63
|
+
widthInInch: number;
|
|
64
|
+
heightInInch: number;
|
|
65
|
+
}
|
|
66
|
+
export interface TemplateBaseInfo {
|
|
67
|
+
areaWidth: number;
|
|
68
|
+
areaHeight: number;
|
|
69
|
+
elements: TemplateElement[];
|
|
70
|
+
}
|
|
71
|
+
export interface TemplateCategory {
|
|
72
|
+
id: number;
|
|
73
|
+
name: string;
|
|
74
|
+
templates: TemplateItem[];
|
|
75
|
+
showAll?: boolean;
|
|
76
|
+
}
|
|
77
|
+
export interface TemplateItem {
|
|
78
|
+
id: number;
|
|
79
|
+
price: number;
|
|
80
|
+
name: string;
|
|
81
|
+
attachments: TemplateData;
|
|
82
|
+
}
|
|
83
|
+
export interface TemplateData extends TemplateBaseInfo {
|
|
84
|
+
id?: number;
|
|
85
|
+
name?: string;
|
|
86
|
+
urlPreview: string;
|
|
87
|
+
elements: TemplateElement[];
|
|
88
|
+
}
|
|
89
|
+
export interface TemplateElement {
|
|
90
|
+
type: string;
|
|
91
|
+
position: {
|
|
92
|
+
left: number;
|
|
93
|
+
top: number;
|
|
94
|
+
rotation: number;
|
|
95
|
+
width: number;
|
|
96
|
+
height: number;
|
|
97
|
+
};
|
|
98
|
+
image?: {
|
|
99
|
+
url: string;
|
|
100
|
+
width: number;
|
|
101
|
+
height: number;
|
|
102
|
+
flipX?: boolean;
|
|
103
|
+
flipY?: boolean;
|
|
104
|
+
mask?: Record<string, any>;
|
|
105
|
+
fill?: string | fabric.Pattern | fabric.Gradient;
|
|
106
|
+
};
|
|
107
|
+
text?: {
|
|
108
|
+
text: string;
|
|
109
|
+
color: string;
|
|
110
|
+
fontFamily: string;
|
|
111
|
+
fontWeight: number | string;
|
|
112
|
+
fontStyle: FontStyle;
|
|
113
|
+
fontPath: string;
|
|
114
|
+
fontSize: number;
|
|
115
|
+
textAlign: string;
|
|
116
|
+
radius?: number;
|
|
117
|
+
spacing?: number;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export interface Shape {
|
|
121
|
+
id: number;
|
|
122
|
+
url: string;
|
|
123
|
+
}
|
|
124
|
+
export interface ClipArtCategory {
|
|
125
|
+
id: number;
|
|
126
|
+
name: string;
|
|
127
|
+
clip_arts: ClipArt[];
|
|
128
|
+
showAll?: boolean;
|
|
129
|
+
}
|
|
130
|
+
export interface ClipArt {
|
|
131
|
+
id: number;
|
|
132
|
+
name: string;
|
|
133
|
+
url: string;
|
|
134
|
+
}
|
|
135
|
+
export interface Render {
|
|
136
|
+
id: number;
|
|
137
|
+
image: string;
|
|
138
|
+
preview_image?: string;
|
|
139
|
+
render_areas: RenderArea[];
|
|
140
|
+
}
|
|
141
|
+
export interface RenderArea {
|
|
142
|
+
id: number;
|
|
143
|
+
base_plate_area_id?: number;
|
|
144
|
+
name: string;
|
|
145
|
+
image: string;
|
|
146
|
+
design: number;
|
|
147
|
+
width: number;
|
|
148
|
+
height: number;
|
|
149
|
+
x: number;
|
|
150
|
+
y: number;
|
|
151
|
+
texture: string;
|
|
152
|
+
texture_transform?: Record<string, any>;
|
|
153
|
+
area?: Mockup;
|
|
154
|
+
export?: {
|
|
155
|
+
blend: string;
|
|
156
|
+
opacity: number;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export interface TDRender {
|
|
160
|
+
id: number;
|
|
161
|
+
image: string;
|
|
162
|
+
render3_d_areas: TDRenderArea[];
|
|
163
|
+
}
|
|
164
|
+
export interface TDRenderArea {
|
|
165
|
+
base_plate_area_id?: number;
|
|
166
|
+
name: string;
|
|
167
|
+
render_replace: number;
|
|
168
|
+
texture: string | ImageBitmap;
|
|
169
|
+
image: string;
|
|
170
|
+
texture_transform: Record<string, any>;
|
|
171
|
+
}
|
|
172
|
+
export interface SemiCustomBackground {
|
|
173
|
+
colors: string[];
|
|
174
|
+
palette: boolean;
|
|
175
|
+
enable: boolean;
|
|
176
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/** Portable online-designer data contract.
|
|
2
|
+
* 尺寸
|
|
3
|
+
*/
|
|
4
|
+
export interface Size {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export interface TransformBox extends Size {
|
|
9
|
+
scaleX?: number;
|
|
10
|
+
scaleY?: number;
|
|
11
|
+
left: number;
|
|
12
|
+
top: number;
|
|
13
|
+
}
|
|
14
|
+
export interface RenderableBox extends TransformBox {
|
|
15
|
+
right: number;
|
|
16
|
+
bottom: number;
|
|
17
|
+
center?: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
};
|
|
21
|
+
angle?: number;
|
|
22
|
+
centerX?: number;
|
|
23
|
+
centerY?: number;
|
|
24
|
+
originalWidth?: number;
|
|
25
|
+
originalHeight?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 添加图片数据
|
|
29
|
+
*/
|
|
30
|
+
export interface ImageFile extends Size {
|
|
31
|
+
name: string;
|
|
32
|
+
uri: string;
|
|
33
|
+
isSvg?: boolean;
|
|
34
|
+
file?: File | Blob;
|
|
35
|
+
type?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 字体
|
|
39
|
+
*/
|
|
40
|
+
export interface Font {
|
|
41
|
+
family: string;
|
|
42
|
+
category?: string;
|
|
43
|
+
files: FontFile[];
|
|
44
|
+
variants: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 字体文件
|
|
48
|
+
*/
|
|
49
|
+
export interface FontFile {
|
|
50
|
+
family?: string;
|
|
51
|
+
style: FontStyle;
|
|
52
|
+
variant?: string;
|
|
53
|
+
weight: number;
|
|
54
|
+
label?: string;
|
|
55
|
+
url?: string;
|
|
56
|
+
}
|
|
57
|
+
export type FontStyle = 'normal' | 'italic' | 'oblique';
|
|
58
|
+
/**
|
|
59
|
+
* 画布对象图层信息
|
|
60
|
+
*/
|
|
61
|
+
export interface Layer {
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
type: string;
|
|
65
|
+
angle: number;
|
|
66
|
+
width?: number;
|
|
67
|
+
height?: number;
|
|
68
|
+
withInInch?: number;
|
|
69
|
+
heightInInch?: number;
|
|
70
|
+
text?: string;
|
|
71
|
+
fontFamily?: string;
|
|
72
|
+
src?: string;
|
|
73
|
+
clip?: boolean;
|
|
74
|
+
scale?: number;
|
|
75
|
+
ungroupable?: boolean;
|
|
76
|
+
selectable?: boolean;
|
|
77
|
+
sourceType?: string;
|
|
78
|
+
links?: Layer[];
|
|
79
|
+
}
|
|
80
|
+
export type ElementType = 'product' | 'shapes' | 'images' | 'text' | 'textEffects' | 'layer' | 'templates' | 'clipart' | 'ai' | 'background' | 'sca' | 'files';
|
|
81
|
+
export interface CCPublishParams {
|
|
82
|
+
projectId: string;
|
|
83
|
+
asset: {
|
|
84
|
+
data: string;
|
|
85
|
+
}[];
|
|
86
|
+
}
|