@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.
Files changed (199) hide show
  1. package/README.md +146 -0
  2. package/dist/DesignerRuntimeContext.d.ts +3 -0
  3. package/dist/PrintineDesigner.d.ts +9 -0
  4. package/dist/api/client.d.ts +8 -0
  5. package/dist/api/client.js +82 -0
  6. package/dist/api/common-endpoints.d.ts +12 -0
  7. package/dist/api/design-endpoints.d.ts +18 -0
  8. package/dist/api/endpoints.d.ts +33 -0
  9. package/dist/api/endpoints.js +46 -0
  10. package/dist/api/files-endpoints.d.ts +1 -0
  11. package/dist/assets/icons/aspect_ratio.d.ts +3 -0
  12. package/dist/assets/icons/delete.d.ts +3 -0
  13. package/dist/assets/icons/fit_screen.d.ts +3 -0
  14. package/dist/assets/icons/index.d.ts +11 -0
  15. package/dist/assets/icons/loading_1.d.ts +3 -0
  16. package/dist/assets/icons/loading_2.d.ts +3 -0
  17. package/dist/assets/icons/loading_3.d.ts +3 -0
  18. package/dist/assets/icons/pan.d.ts +3 -0
  19. package/dist/assets/icons/setting.d.ts +3 -0
  20. package/dist/assets/icons/text_color.d.ts +3 -0
  21. package/dist/assets/icons/text_h.d.ts +3 -0
  22. package/dist/assets/icons/text_v.d.ts +3 -0
  23. package/dist/bundled-assets.d.ts +4 -0
  24. package/dist/components/add-design.d.ts +8 -0
  25. package/dist/components/assets-dialog.d.ts +21 -0
  26. package/dist/components/canvas-context-menu.d.ts +6 -0
  27. package/dist/components/color-picker/index.d.ts +10 -0
  28. package/dist/components/context.d.ts +24 -0
  29. package/dist/components/design.d.ts +9 -0
  30. package/dist/components/fonts.d.ts +26 -0
  31. package/dist/components/image-crop.d.ts +4 -0
  32. package/dist/components/image-edit.d.ts +1 -0
  33. package/dist/components/layout/aside.d.ts +3 -0
  34. package/dist/components/layout/bottom-nav/element-menu-sheet.d.ts +11 -0
  35. package/dist/components/layout/bottom-nav/element-sheet.d.ts +11 -0
  36. package/dist/components/layout/bottom-nav/index.d.ts +1 -0
  37. package/dist/components/layout/header.d.ts +5 -0
  38. package/dist/components/loading.d.ts +3 -0
  39. package/dist/components/menus/ai.d.ts +5 -0
  40. package/dist/components/menus/background.d.ts +6 -0
  41. package/dist/components/menus/clipart.d.ts +6 -0
  42. package/dist/components/menus/files.d.ts +7 -0
  43. package/dist/components/menus/image.d.ts +8 -0
  44. package/dist/components/menus/index.d.ts +13 -0
  45. package/dist/components/menus/layer.d.ts +5 -0
  46. package/dist/components/menus/product.d.ts +3 -0
  47. package/dist/components/menus/sca.d.ts +5 -0
  48. package/dist/components/menus/shapes.d.ts +6 -0
  49. package/dist/components/menus/templates.d.ts +6 -0
  50. package/dist/components/menus/text-effects.d.ts +5 -0
  51. package/dist/components/menus/text.d.ts +6 -0
  52. package/dist/components/placement-tab.d.ts +7 -0
  53. package/dist/components/preview/3d.d.ts +7 -0
  54. package/dist/components/preview/graphic.d.ts +7 -0
  55. package/dist/components/preview/index.d.ts +18 -0
  56. package/dist/components/preview/open.d.ts +7 -0
  57. package/dist/components/preview/real-time/3d.d.ts +12 -0
  58. package/dist/components/preview/real-time/graphic.d.ts +18 -0
  59. package/dist/components/preview/real-time/index.d.ts +11 -0
  60. package/dist/components/scale-tools.d.ts +7 -0
  61. package/dist/components/semi-deisgn-config.d.ts +13 -0
  62. package/dist/components/semi-design-link.d.ts +9 -0
  63. package/dist/components/store.d.ts +1 -0
  64. package/dist/components/toolbar.d.ts +2 -0
  65. package/dist/config-D2qm60gf.js +16 -0
  66. package/dist/contracts/api-design.d.ts +176 -0
  67. package/dist/contracts/design.d.ts +86 -0
  68. package/dist/design-7zRpRtv9.js +20331 -0
  69. package/dist/engine/canvas-designer.d.ts +101 -0
  70. package/dist/engine/canvas-designer.js +313 -0
  71. package/dist/engine/constants.d.ts +27 -0
  72. package/dist/engine/constants.js +148 -0
  73. package/dist/engine/editor.d.ts +186 -0
  74. package/dist/engine/editor.js +734 -0
  75. package/dist/engine/events.d.ts +34 -0
  76. package/dist/engine/events.js +7 -0
  77. package/dist/engine/extensions/curved-text.d.ts +59 -0
  78. package/dist/engine/fabric.d.ts +4 -0
  79. package/dist/engine/fabric.js +187 -0
  80. package/dist/engine/history.d.ts +27 -0
  81. package/dist/engine/history.js +56 -0
  82. package/dist/engine/managers/event.d.ts +101 -0
  83. package/dist/engine/managers/event.js +410 -0
  84. package/dist/engine/managers/resize.d.ts +24 -0
  85. package/dist/engine/managers/resize.js +63 -0
  86. package/dist/engine/managers/snapline.d.ts +70 -0
  87. package/dist/engine/managers/snapline.js +124 -0
  88. package/dist/engine/managers/workspace.d.ts +26 -0
  89. package/dist/engine/managers/workspace.js +53 -0
  90. package/dist/engine/processors/image.d.ts +88 -0
  91. package/dist/engine/processors/image.js +473 -0
  92. package/dist/engine/processors/template.d.ts +45 -0
  93. package/dist/engine/processors/template.js +314 -0
  94. package/dist/engine/processors/text.d.ts +74 -0
  95. package/dist/engine/processors/text.js +215 -0
  96. package/dist/engine/semi-export-editor.d.ts +199 -0
  97. package/dist/engine/types.d.ts +28 -0
  98. package/dist/engine/utils/common.d.ts +25 -0
  99. package/dist/engine/utils/common.js +68 -0
  100. package/dist/engine/utils/dialog.d.ts +25 -0
  101. package/dist/engine/utils/font.d.ts +5 -0
  102. package/dist/engine/utils/font.js +39 -0
  103. package/dist/engine/utils/image.d.ts +8 -0
  104. package/dist/engine/utils/image.js +50 -0
  105. package/dist/engine/utils/loading.d.ts +17 -0
  106. package/dist/engine/utils/loading.js +71 -0
  107. package/dist/engine/utils/measure.d.ts +6 -0
  108. package/dist/engine/utils/measure.js +6 -0
  109. package/dist/engine/utils/mockup.d.ts +59 -0
  110. package/dist/engine/utils/setting.d.ts +4 -0
  111. package/dist/engine/utils/setting.js +73 -0
  112. package/dist/fabric-types.d.ts +59 -0
  113. package/dist/full-designer.js +14 -0
  114. package/dist/hooks/pagination.d.ts +19 -0
  115. package/dist/hooks/use-adobe-express.d.ts +50 -0
  116. package/dist/hooks/use-before-unload.d.ts +1 -0
  117. package/dist/hooks/use-image-drop.d.ts +18 -0
  118. package/dist/hooks/use-oss-upload.d.ts +34 -0
  119. package/dist/hooks/use-screen.d.ts +1 -0
  120. package/dist/i18n/index.d.ts +12 -0
  121. package/dist/images/design/asset_empty.png +0 -0
  122. package/dist/images/design/design/background.svg +3 -0
  123. package/dist/images/design/design/color-picker.svg +15 -0
  124. package/dist/images/design/design/computer.svg +1 -0
  125. package/dist/images/design/design/copy.svg +1 -0
  126. package/dist/images/design/design/image.svg +10 -0
  127. package/dist/images/design/design/line.svg +1 -0
  128. package/dist/images/design/design/text.svg +1 -0
  129. package/dist/images/design/design/title.svg +1 -0
  130. package/dist/images/design/empty.png +0 -0
  131. package/dist/images/design/layer_empty.png +0 -0
  132. package/dist/images/design/menu/ai.svg +1 -0
  133. package/dist/images/design/menu/back.svg +4 -0
  134. package/dist/images/design/menu/background.svg +6 -0
  135. package/dist/images/design/menu/clipart.svg +6 -0
  136. package/dist/images/design/menu/file.svg +4 -0
  137. package/dist/images/design/menu/fill.svg +1 -0
  138. package/dist/images/design/menu/image.svg +7 -0
  139. package/dist/images/design/menu/layer.svg +6 -0
  140. package/dist/images/design/menu/product.svg +3 -0
  141. package/dist/images/design/menu/sca.svg +5 -0
  142. package/dist/images/design/menu/shapes.svg +5 -0
  143. package/dist/images/design/menu/templates.svg +6 -0
  144. package/dist/images/design/menu/text.svg +6 -0
  145. package/dist/images/design/menu/uploads.svg +7 -0
  146. package/dist/images/design/spinner.svg +3 -0
  147. package/dist/images/design/spinners.svg +17 -0
  148. package/dist/images/design/transparent_pattern.svg +5 -0
  149. package/dist/index.d.ts +39 -0
  150. package/dist/index.js +127 -0
  151. package/dist/lib/analytics.d.ts +17 -0
  152. package/dist/lib/cn.d.ts +3 -0
  153. package/dist/lib/common.d.ts +16 -0
  154. package/dist/lib/config.d.ts +14 -0
  155. package/dist/lib/navigation.d.ts +2 -0
  156. package/dist/renderer/ThreeDPreview.d.ts +14 -0
  157. package/dist/renderer/sticker.js +1731 -0
  158. package/dist/renderer/three-d-preview.js +32 -0
  159. package/dist/state/designer-store.d.ts +43 -0
  160. package/dist/state/designer-store.js +85 -0
  161. package/dist/style.css +1 -0
  162. package/dist/types.d.ts +184 -0
  163. package/dist/ui/accordion.d.ts +7 -0
  164. package/dist/ui/button-group.d.ts +11 -0
  165. package/dist/ui/button.d.ts +10 -0
  166. package/dist/ui/checkbox.d.ts +4 -0
  167. package/dist/ui/command.d.ts +18 -0
  168. package/dist/ui/confirm-dialog.d.ts +15 -0
  169. package/dist/ui/context-menu.d.ts +25 -0
  170. package/dist/ui/dialog.d.ts +15 -0
  171. package/dist/ui/drawer.d.ts +15 -0
  172. package/dist/ui/editable-combobox.d.ts +10 -0
  173. package/dist/ui/hint.d.ts +8 -0
  174. package/dist/ui/image.d.ts +24 -0
  175. package/dist/ui/input-group.d.ts +16 -0
  176. package/dist/ui/input-with-addon.d.ts +17 -0
  177. package/dist/ui/input.d.ts +3 -0
  178. package/dist/ui/label.d.ts +4 -0
  179. package/dist/ui/loading-button.d.ts +15 -0
  180. package/dist/ui/popover.d.ts +9 -0
  181. package/dist/ui/scroll-area.d.ts +5 -0
  182. package/dist/ui/select.d.ts +22 -0
  183. package/dist/ui/separator.d.ts +4 -0
  184. package/dist/ui/shared-loading-button.d.ts +20 -0
  185. package/dist/ui/simple-dialog.d.ts +19 -0
  186. package/dist/ui/simple-popover.d.ts +13 -0
  187. package/dist/ui/simple-select.d.ts +20 -0
  188. package/dist/ui/skeleton.d.ts +2 -0
  189. package/dist/ui/slider.d.ts +4 -0
  190. package/dist/ui/spinner-box.d.ts +12 -0
  191. package/dist/ui/spinner.d.ts +2 -0
  192. package/dist/ui/switch.d.ts +6 -0
  193. package/dist/ui/tab/index.d.ts +15 -0
  194. package/dist/ui/textarea.d.ts +3 -0
  195. package/dist/ui/tooltip.d.ts +7 -0
  196. package/dist/workers/image-resize.worker.d.ts +1 -0
  197. package/dist/workers/mockup.worker.d.ts +5 -0
  198. package/dist/workers/render.worker.d.ts +1 -0
  199. 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,5 @@
1
+ interface LayerProps {
2
+ show: boolean;
3
+ }
4
+ export default function Layer({ show }: LayerProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,3 @@
1
+ export default function Product({ show }: {
2
+ show: boolean;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ interface SCAListProps {
2
+ show: boolean;
3
+ }
4
+ export default function SCAList({ show }: SCAListProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,6 @@
1
+ interface ShapesProps {
2
+ show: boolean;
3
+ type?: 'sidebar' | 'sheet';
4
+ }
5
+ export default function Shapes({ show, type }: ShapesProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ interface TemplatesProps {
2
+ show: boolean;
3
+ type?: 'sidebar' | 'sheet';
4
+ }
5
+ export default function Templates({ show, type }: TemplatesProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,5 @@
1
+ type TextEffectsProps = {
2
+ position?: 'sidebar' | 'sheet';
3
+ };
4
+ export default function TextEffects({ position }: TextEffectsProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,6 @@
1
+ type TextProps = {
2
+ show: boolean;
3
+ position?: 'sidebar' | 'sheet';
4
+ };
5
+ export default function Text({ show, position }: TextProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,7 @@
1
+ type PlacementTabProps = {
2
+ activePlacement: string;
3
+ list: any[];
4
+ onChange: (placement: string) => void;
5
+ };
6
+ export default function PlacementTab({ activePlacement, list, onChange }: PlacementTabProps): import("react/jsx-runtime").JSX.Element;
7
+ 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,7 @@
1
+ interface ScaleToolsProps {
2
+ fitScale: number;
3
+ scale: number;
4
+ onChangeScale: (val: number) => void;
5
+ }
6
+ export default function ScaleTools({ fitScale, scale, onChangeScale }: ScaleToolsProps): import("react/jsx-runtime").JSX.Element;
7
+ 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,2 @@
1
+ import React from 'react';
2
+ export default function Toolbar({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,16 @@
1
+ const g = { "/images/design/asset_empty.png": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAMAAABOo35HAAAAUVBMVEUAAAAxO6c4QKc1QKU5P6k1QKU1QKY0QKUzN6w9SKssOKYzQKc2QKM1QKU1QKU1QKU0QKQ3QKc3QKY0QKU1QKY1QKU0QKU1QKU6QKo2QKY1QKXvShVdAAAAGnRSTlMAGiCAEN+/7wsGFhNAn89gcEBwkI+vUDAwsHWIfaUAAAobSURBVHja7J3bmpsgFIX5ON6omKhJu9//QXtgWqYVJdgQlun+b+fLzPIfwK3hIBiGYRiGYRiGYRiGYRiGYRiGYRiGYRiGYV6GHud5vAgmj7T0E+MFk+Hu6BdKMLtIR5GrYPaw9AmnBbPNhX7AHfEhpiBpGk0Y5AWT64WjEDJYE0xOVieECE1LCoZlsax9WFYBLKsAllUAyyqAZRXAsgpgWQWwrAJYVgEsqwCWVQDLKoBltSTKciwrx0I/mPlN6SOo4KifQ8MaBLNNx9/uHP3e0PCQtYs0FOHZDo/bGgWTQfZBle0Ek0fflPJYw9Vl7AfjqDXGLuMlI0/ZdU5nX+bz0rfX9AnT7/i6bUU1N1EfraBMZSb6KdrmKmrjAVVt65K0x11URVqCJVWE7se1oiZX0GYVcNeChlX9tYT6FMyON9l8HqK+d8ruPA2Oocl1WxN1vahGH9vv2NxTRPuBftGn/rtKrJlWP3m6K9TquDPR1lrWlLqYurIUBRzkQ9foUj3Rf9QIl7/5uJhapdYV/MWHNInqSbcY4ON0/AFosPoTOXy0fPlw6dCLOhh0V0LoYV09SZcpzGrgsftgQJt1R7xv23K1CvgQw0G7+t2OnF6NZQlsrYvxJ3n5OKZq026ya6ZO1OI0yztsaFqiFXEBEVwtuqZrn7Tf+85Sjr1x9FLcsHi517R60Y6dp05vqRE2mWds2g9jL9SJnxhqiEno0q5xPxw33pTpmRoz641+eBWtWNJP6HKg5qyr5LHxoGWTLVsaAmBl69Z4Ak2w8mX9bBFwqpPipehuMkTpp1XZuCRMju8zBUwnmuB/6Zr/Etl4Hlvqz3sKTFo0Qk+UrEABZRmA+WLqo22jy/If7Uo05aNteXBZoWowWrQj3mQstiwJMreuCzkktKwR5ZWNC/U6tKwFYcSKY3wPLWto/tboj35ooGWF1g/wTU8YPB20LJzVHnDZ4AIhZ4MLhJwNLhByNrhAyNngAiFngwuEnA0uEHI2uEDI2eACIWeDC4ScDS4Qcja4QMjZ4AIhZ4MLhJwNLhByNrhAyNngAiFngwuEnA0uEHK21wW6jHM/jxfIbFiB4rJ+10uwbGiy/lx/raCyocma6U8GjZMNTVZ0FW2hZEOTpWjNDJINTZakFB1ENjhZPaWwENnQZElK0wFkg5PlKc0EkA1O1kJpBoBscLIspXEA2eBkGdoAIBvL+sTpZA3cDY+WWRELkA1OFpcOBWhHSSRAttfJ0lJq8QDqf3/cucyDC7sDzpdjTUv+J7L+2vnVqMyF32iNghgiKsjKbtFprqUdccIYT2vLkpYSWFlkS4HcfCrLkia3q0D+Y6ZDuVPXlSXN0W3j/EIB63HKmkqyoqtSW5Hu5v1dI9WAtWRFV3lb7WvASINA0dWuLZaVdxVtsazoKm+LZUVXeVssK+5Am2PQLCu4qmFL63eTFV0909ZFLSacr6O+vI+svKtyW1r98UuNfxdZCxXRHzq0xvi3kNUTPdmWTurv5fll5VyV27pvvro4u6yeDtAfPODnem5Zig4xi0jJbrGzPrEsRQdRIlL2NH5aWYoOow4e3eb8SWUpoufamh/64CllHXf1bxs2D/J8shTRU21dHD2IuZ1NliJ6nq1S9+pcshQ9AXX4pMlFnkiWp6dgvPypSrniT97PI+t5GDs4OoL6D2Udh2WxrE+wrAJYVgEsqwCWVQDLKoBlFcCyCmBZBbCsAlhWASyrAJZVAMsqgGUV8H/JcgQF9lEyECeMRgZoWT1B8RVa1khQYB+sJgkK7CP7hCUgBiG96q0x9B2HJ8sTEMbRCrd4KeqRlwV8P0xiG/hKyuroFPQFuurJEhOdg9foyi9rOgkv0JVfMIc0bA3TeJNhMs69GydbsO1BHVmottzU6VW4rjcFaxzryxIaYNxyUyc26Hr6jbuKyuRrYm+oKU5psYNUJtsV68uK+IEakFUVdcWqS4vq5HeeGZfBUQOsFA8g7afZ4HVAOno/fVdxo3iQ0e0O8+8rSw8HLlyanQW0byzLHhqA9LK9Md77ylJ7G5HJ2RAN6Xp92l62966yvrV3hsuNgkAApoBgEo2YaHrH+z/oNQazuUpAqogFvl+dqZOZfNndLAuai6kNuEgFMWme9FuxysLcEFdEPiGG2OLTwItTlqrTvfW5sDdDuTujb8QpS8VOQd+IBAqkgRb6RIxSFjblUTvj9xww171AnLJqOSCQDqGaL1wYokfo0zhCWSqwmClFCfyhhWnjLkJZKrDwElmYT4XHKAtDV+AsCyC60IpPVq2K0jJZlE8fVhKfLAgsuyz7dZyiF6KT1UDFWiSLcp+9FsiiKCAM0meRLHT1XeIL+FRDAFlYLZdV+f7kz7DgCkQDq5iFspDvPKzh9QPRQxYulXWFs4JeEJDngeCQhUtkQR5y5AV4fYpC8SkH0BqyKPdcgXngPLxBaC+TBRW4Qb6oA+YhqLiuI+sKV3ih8rCkcq/vl3VkCd8rHh42tBh8VktlQU57g/ifyNq74j/ryMLQs/mB+p/I2gMb/xJZSMBmQQDkAHKQFXYuwFxOC/iWZZ/Bh5WFucO5ne1lVfI/qpCyIBFlsZOD+MZ9w+DjOeJ4PHOjAg8NAdDYxz0c+aWWiqJF21LYZNnPOgCfhuDzYUueG4o2hMFAbYYtgYy0GzXYRAKMtH+sxjYdqOH6LGVxxbOK71/kHcFlOK7IgQAL6V3dVXH2kNMrsq/7BFaaPkrjQjMaXRVagRY6h22oai5nsruiVUN934xK9GzrCOPr9WwNihdqz0M42m3JwuA7xt5h9jyEo9173k7YAgHfh4uWO1hGn4VqVAsaHI92AySBLBzTh9MFIxroqWsUNxVk2Jyj3UkH1ljiOV4yVsYygfJ+p1rhaHefSGA93+nl55F1kUlULOvdJNWs21GSCazVbnQiKAnOULZ+sGHRjyLTYMyj7icdfCcHeBJJeEeADdcNC/L8ZzLAfeGOGxadTKpgPWDyQU+RA5TJVNrR3/UQjD2BC+dTBBc+Ck6muE9/tLXf5YN79gVl0CNg68WESwVLLAcnLVVBsFWV4ooSRYADWbfoDW0Hl/GE+ivjKYJC44u23f2SlMuVJhUVrBPqUA/GN9GduXyBJ9WK6sC1nAlLO6xcfnaaVSgzK7p4nVUBuGGGoBJptlZGX7324fnZ1Bs+b6RnBR8sFawmTa7pmUwmk8lkMplMJpPZHYeREqCKk+L4yscMjq+cRuiD8slhBO2KFx/KwvC+d4US+/S5kcdRzKBlb07cUQ5Hf6v4GexE4GaePeXOSdEgKAE/7xnEgTa9pcQdaawN0r55Kmm2ZHRWHpQp+pGZAf3ydfrIzOSUZTnIymnokIaqwOevQRNHWk6+EnProGsdyoOlKT2lbe3L0V3SwXm5E8VS0M7xIQgUrbOQPsVgb1gKKjtbzSEO5e8a0ZS7HXXphn+ndYd/VFFuM/37B4NK9varaL2QAAAAAElFTkSuQmCC", "/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
+ }