@ydesign/react-editor 0.1.0 → 0.1.1

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 (191) hide show
  1. package/dist/app.css +1 -1
  2. package/dist/app.js +1 -1
  3. package/dist/canvas/workspace.d.ts +6 -4
  4. package/dist/canvas/workspace.js +1 -1
  5. package/dist/chunk-2AZQIJ4K.js +1 -0
  6. package/dist/chunk-45NWLCOP.js +15 -0
  7. package/dist/chunk-63A6RW6Y.js +21 -0
  8. package/dist/chunk-EUTDQZKU.js +1 -0
  9. package/dist/chunk-KERQXVBL.js +1 -0
  10. package/dist/{chunk-7YLSIB43.js → chunk-RBRSKAZL.js} +1 -1
  11. package/dist/chunk-SR5OYO6O.js +214 -0
  12. package/dist/chunk-YBC2DYJX.js +9 -0
  13. package/dist/config.d.ts +228 -3
  14. package/dist/config.js +1 -1
  15. package/dist/model/store.d.ts +5 -364
  16. package/dist/model/store.js +1 -1
  17. package/dist/project.d.ts +12 -4
  18. package/dist/project.js +1 -1
  19. package/dist/side-panel/index.d.ts +2 -5
  20. package/dist/side-panel/index.js +1 -1
  21. package/dist/side-panel/side-panel.d.ts +12 -6
  22. package/dist/side-panel/side-panel.js +1 -1
  23. package/dist/store-DfmY1m2j.d.ts +379 -0
  24. package/dist/toolbar/download-button.d.ts +1 -3
  25. package/dist/toolbar/download-button.js +1 -1
  26. package/dist/toolbar/toolbar.d.ts +1 -3
  27. package/dist/toolbar/toolbar.js +18 -1
  28. package/dist/toolbar/zoom-buttons.d.ts +1 -3
  29. package/dist/topbar/topbar.d.ts +1 -3
  30. package/dist/topbar/topbar.js +155 -5
  31. package/package.json +2 -2
  32. package/dist/assets/logo.d.ts +0 -7
  33. package/dist/assets/logo.js +0 -1
  34. package/dist/canvas/context-menu/context-menu.d.ts +0 -2
  35. package/dist/canvas/context-menu/context-menu.js +0 -0
  36. package/dist/canvas/hotkeys.d.ts +0 -3
  37. package/dist/canvas/hotkeys.js +0 -1
  38. package/dist/canvas/workspace-canvas.d.ts +0 -19
  39. package/dist/canvas/workspace-canvas.js +0 -1
  40. package/dist/chunk-2A3HHQ7X.js +0 -1
  41. package/dist/chunk-2T3O5ZZ2.js +0 -1
  42. package/dist/chunk-3TO57JPN.js +0 -1
  43. package/dist/chunk-4LUZF4CB.js +0 -2
  44. package/dist/chunk-5CKXOQAT.js +0 -1
  45. package/dist/chunk-5OA2JYPB.js +0 -1
  46. package/dist/chunk-5X6VER6G.js +0 -1
  47. package/dist/chunk-62YF5KTO.js +0 -1
  48. package/dist/chunk-75WC3GVB.js +0 -1
  49. package/dist/chunk-7NNOHYKX.js +0 -15
  50. package/dist/chunk-AC6CCGZH.js +0 -1
  51. package/dist/chunk-BE3YOONJ.js +0 -1
  52. package/dist/chunk-BWST6EER.js +0 -1
  53. package/dist/chunk-CB23VFSC.js +0 -1
  54. package/dist/chunk-DGCF2GDA.js +0 -9
  55. package/dist/chunk-ESNVOB52.js +0 -17
  56. package/dist/chunk-HHYPIHAP.js +0 -45
  57. package/dist/chunk-HOAYYKAZ.js +0 -3
  58. package/dist/chunk-IUFYYEGO.js +0 -1
  59. package/dist/chunk-IV52R7D7.js +0 -27
  60. package/dist/chunk-J6PYM4EV.js +0 -1
  61. package/dist/chunk-JHNSYFB2.js +0 -151
  62. package/dist/chunk-JMIN2XMC.js +0 -1
  63. package/dist/chunk-JPIYZYMQ.js +0 -1
  64. package/dist/chunk-KVT25LDU.js +0 -1
  65. package/dist/chunk-MGTFIE3C.js +0 -1
  66. package/dist/chunk-NLABIDJ5.js +0 -1
  67. package/dist/chunk-O56ZNYGR.js +0 -1
  68. package/dist/chunk-O73AAP2K.js +0 -1
  69. package/dist/chunk-OQ6HU62L.js +0 -1
  70. package/dist/chunk-P5I43V7X.js +0 -1
  71. package/dist/chunk-POCSL7OS.js +0 -50
  72. package/dist/chunk-PSO4W6J7.js +0 -9
  73. package/dist/chunk-QVSJHU2S.js +0 -1
  74. package/dist/chunk-QWM7VMLQ.js +0 -9
  75. package/dist/chunk-SGK2XN5D.js +0 -1
  76. package/dist/chunk-T3TEB73P.js +0 -1
  77. package/dist/chunk-TS5CKDHH.js +0 -1
  78. package/dist/chunk-TTK5Z2Z6.js +0 -1
  79. package/dist/chunk-TZ6B7XDS.js +0 -1
  80. package/dist/chunk-U7TPE4R3.js +0 -54
  81. package/dist/chunk-UCJMXWVT.js +0 -16
  82. package/dist/chunk-WCHGSVUC.js +0 -8
  83. package/dist/chunk-WJT6VPDR.js +0 -9
  84. package/dist/chunk-XA2G4P2Q.js +0 -1
  85. package/dist/chunk-XRRO2RT7.js +0 -1
  86. package/dist/chunk-YCJBBRRT.js +0 -1
  87. package/dist/chunk-YRJUN267.js +0 -14
  88. package/dist/chunk-YVBVDUVA.js +0 -1
  89. package/dist/chunk-Z4QXUZAS.js +0 -1
  90. package/dist/hooks/use-duplicate-element.d.ts +0 -16
  91. package/dist/hooks/use-duplicate-element.js +0 -1
  92. package/dist/hooks/use-lock.d.ts +0 -18
  93. package/dist/hooks/use-lock.js +0 -1
  94. package/dist/hooks/use-remove-element.d.ts +0 -16
  95. package/dist/hooks/use-remove-element.js +0 -1
  96. package/dist/lib/utils.d.ts +0 -5
  97. package/dist/lib/utils.js +0 -1
  98. package/dist/side-panel/background-panel.d.ts +0 -17
  99. package/dist/side-panel/background-panel.js +0 -1
  100. package/dist/side-panel/images-grid.d.ts +0 -27
  101. package/dist/side-panel/images-grid.js +0 -1
  102. package/dist/side-panel/layers-panel.d.ts +0 -16
  103. package/dist/side-panel/layers-panel.js +0 -1
  104. package/dist/side-panel/photos-panel.d.ts +0 -16
  105. package/dist/side-panel/photos-panel.js +0 -1
  106. package/dist/side-panel/shapes-panel.d.ts +0 -16
  107. package/dist/side-panel/shapes-panel.js +0 -1
  108. package/dist/side-panel/size-panel.d.ts +0 -16
  109. package/dist/side-panel/size-panel.js +0 -1
  110. package/dist/side-panel/tab-button.d.ts +0 -12
  111. package/dist/side-panel/tab-button.js +0 -1
  112. package/dist/side-panel/templates-panel.d.ts +0 -16
  113. package/dist/side-panel/templates-panel.js +0 -1
  114. package/dist/side-panel/text-panel.d.ts +0 -16
  115. package/dist/side-panel/text-panel.js +0 -1
  116. package/dist/side-panel/upload-panel.d.ts +0 -17
  117. package/dist/side-panel/upload-panel.js +0 -1
  118. package/dist/toolbar/default-toolbar.d.ts +0 -21
  119. package/dist/toolbar/default-toolbar.js +0 -1
  120. package/dist/toolbar/duplicate-button.d.ts +0 -16
  121. package/dist/toolbar/duplicate-button.js +0 -1
  122. package/dist/toolbar/element-container.d.ts +0 -13
  123. package/dist/toolbar/element-container.js +0 -1
  124. package/dist/toolbar/figure-toolbar.d.ts +0 -33
  125. package/dist/toolbar/figure-toolbar.js +0 -1
  126. package/dist/toolbar/filters-picker.d.ts +0 -18
  127. package/dist/toolbar/filters-picker.js +0 -1
  128. package/dist/toolbar/flip-button.d.ts +0 -18
  129. package/dist/toolbar/flip-button.js +0 -1
  130. package/dist/toolbar/group-button.d.ts +0 -16
  131. package/dist/toolbar/group-button.js +0 -1
  132. package/dist/toolbar/history-buttons.d.ts +0 -16
  133. package/dist/toolbar/history-buttons.js +0 -1
  134. package/dist/toolbar/image-eraser-pen.d.ts +0 -10
  135. package/dist/toolbar/image-eraser-pen.js +0 -1
  136. package/dist/toolbar/image-remove-background.d.ts +0 -10
  137. package/dist/toolbar/image-remove-background.js +0 -1
  138. package/dist/toolbar/image-toolbar.d.ts +0 -36
  139. package/dist/toolbar/image-toolbar.js +0 -1
  140. package/dist/toolbar/lock-button.d.ts +0 -16
  141. package/dist/toolbar/lock-button.js +0 -1
  142. package/dist/toolbar/many-toolbar.d.ts +0 -5
  143. package/dist/toolbar/many-toolbar.js +0 -1
  144. package/dist/toolbar/opacity-picker.d.ts +0 -16
  145. package/dist/toolbar/opacity-picker.js +0 -1
  146. package/dist/toolbar/position-picker.d.ts +0 -16
  147. package/dist/toolbar/position-picker.js +0 -1
  148. package/dist/toolbar/remove-button.d.ts +0 -16
  149. package/dist/toolbar/remove-button.js +0 -1
  150. package/dist/toolbar/text-ai-write.d.ts +0 -7
  151. package/dist/toolbar/text-ai-write.js +0 -1
  152. package/dist/toolbar/text-toolbar.d.ts +0 -19
  153. package/dist/toolbar/text-toolbar.js +0 -1
  154. package/dist/topbar/create-design.d.ts +0 -30
  155. package/dist/topbar/create-design.js +0 -1
  156. package/dist/topbar/file-menu.d.ts +0 -19
  157. package/dist/topbar/file-menu.js +0 -1
  158. package/dist/topbar/psd-parser.d.ts +0 -9
  159. package/dist/topbar/psd-parser.js +0 -1
  160. package/dist/utils/api.d.ts +0 -15
  161. package/dist/utils/api.js +0 -1
  162. package/dist/utils/blob.d.ts +0 -5
  163. package/dist/utils/blob.js +0 -1
  164. package/dist/utils/download.d.ts +0 -3
  165. package/dist/utils/download.js +0 -1
  166. package/dist/utils/figure-to-svg.d.ts +0 -36
  167. package/dist/utils/figure-to-svg.js +0 -1
  168. package/dist/utils/file.d.ts +0 -3
  169. package/dist/utils/file.js +0 -1
  170. package/dist/utils/filters.d.ts +0 -2
  171. package/dist/utils/filters.js +0 -0
  172. package/dist/utils/fonts.d.ts +0 -68
  173. package/dist/utils/fonts.js +0 -1
  174. package/dist/utils/image.d.ts +0 -19
  175. package/dist/utils/image.js +0 -1
  176. package/dist/utils/l10n.d.ts +0 -227
  177. package/dist/utils/l10n.js +0 -1
  178. package/dist/utils/loader.d.ts +0 -6
  179. package/dist/utils/loader.js +0 -1
  180. package/dist/utils/screen.d.ts +0 -6
  181. package/dist/utils/screen.js +0 -1
  182. package/dist/utils/svg.d.ts +0 -3
  183. package/dist/utils/svg.js +0 -1
  184. package/dist/utils/text.d.ts +0 -3
  185. package/dist/utils/text.js +0 -1
  186. package/dist/utils/use-api.d.ts +0 -2
  187. package/dist/utils/use-api.js +0 -0
  188. package/dist/utils/use-axios.d.ts +0 -25
  189. package/dist/utils/use-axios.js +0 -1
  190. /package/dist/{chunk-MXZ6RXT3.js → chunk-EWOU5F3O.js} +0 -0
  191. /package/dist/{chunk-YCFED7XQ.js → chunk-WFMCGQ5V.js} +0 -0
@@ -1,12 +1,18 @@
1
- import { StoreType } from '../model/store.js';
2
- export { SectionTab } from './tab-button.js';
1
+ import { S as StoreType } from '../store-DfmY1m2j.js';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
3
  import 'fabric';
4
4
  import 'mobx-state-tree/dist/internal';
5
5
  import 'mobx-state-tree';
6
6
  import '@ydesign/core';
7
- import '../utils/fonts.js';
8
- import 'mobx';
9
- import 'react/jsx-runtime';
7
+
8
+ interface SectionTabProps$1 {
9
+ children: any;
10
+ name: string;
11
+ onClick: any;
12
+ active: boolean;
13
+ iconSize?: number;
14
+ }
15
+ declare const SectionTab: ({ children, name, iconSize, onClick, active }: SectionTabProps$1) => react_jsx_runtime.JSX.Element;
10
16
 
11
17
  interface SectionTabProps {
12
18
  onClick: any;
@@ -36,4 +42,4 @@ declare const SizeSection: Section;
36
42
  declare const DEFAULT_SECTIONS: Section[];
37
43
  declare const SidePanel: React.FC<SidePanelProps>;
38
44
 
39
- export { BackgroundSection, DEFAULT_SECTIONS, LayersSection, PhotosSection, type Section, ShapesSection, SidePanel, SizeSection, TemplatesSection, TextSection, UploadSection, SidePanel as default };
45
+ export { BackgroundSection, DEFAULT_SECTIONS, LayersSection, PhotosSection, type Section, SectionTab, ShapesSection, SidePanel, SizeSection, TemplatesSection, TextSection, UploadSection, SidePanel as default };
@@ -1 +1 @@
1
- import{a as b,b as c,c as d,d as e,e as f,f as g,g as h,h as i,i as j,j as k,k as l}from"../chunk-U7TPE4R3.js";import"../chunk-TS5CKDHH.js";import"../chunk-DGCF2GDA.js";import"../chunk-QWM7VMLQ.js";import"../chunk-5C2MNUBC.js";import{a}from"../chunk-ESNVOB52.js";import"../chunk-HHYPIHAP.js";import"../chunk-IV52R7D7.js";import"../chunk-JPIYZYMQ.js";import"../chunk-MXZ6RXT3.js";import"../chunk-PSO4W6J7.js";import"../chunk-O56ZNYGR.js";import"../chunk-RVXI723F.js";import"../chunk-YRJUN267.js";import"../chunk-OQ6HU62L.js";import"../chunk-POCSL7OS.js";import"../chunk-WCHGSVUC.js";import"../chunk-5X6VER6G.js";import"../chunk-4LUZF4CB.js";import"../chunk-TZ6B7XDS.js";import"../chunk-7NNOHYKX.js";import"../chunk-BE3YOONJ.js";import"../chunk-YCFED7XQ.js";import"../chunk-O2XFH626.js";export{g as BackgroundSection,j as DEFAULT_SECTIONS,h as LayersSection,d as PhotosSection,a as SectionTab,e as ShapesSection,k as SidePanel,i as SizeSection,b as TemplatesSection,c as TextSection,f as UploadSection,l as default};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l}from"../chunk-SR5OYO6O.js";import"../chunk-63A6RW6Y.js";import"../chunk-RVXI723F.js";import"../chunk-45NWLCOP.js";import"../chunk-5C2MNUBC.js";import"../chunk-EWOU5F3O.js";import"../chunk-WFMCGQ5V.js";import"../chunk-EUTDQZKU.js";import"../chunk-O2XFH626.js";export{g as BackgroundSection,j as DEFAULT_SECTIONS,h as LayersSection,d as PhotosSection,a as SectionTab,e as ShapesSection,k as SidePanel,i as SizeSection,b as TemplatesSection,c as TextSection,f as UploadSection,l as default};
@@ -0,0 +1,379 @@
1
+ import * as fabric from 'fabric';
2
+ import * as mobx_state_tree_dist_internal from 'mobx-state-tree/dist/internal';
3
+ import * as mobx_state_tree from 'mobx-state-tree';
4
+ import { Instance } from 'mobx-state-tree';
5
+ import { Editor, FabricObject } from '@ydesign/core';
6
+
7
+ type FONT = {
8
+ fontFamily: string;
9
+ url?: string;
10
+ img?: string;
11
+ name?: string;
12
+ styles?: Array<{
13
+ src: string;
14
+ fontStyle?: string;
15
+ fontWeight?: string;
16
+ }>;
17
+ };
18
+
19
+ interface ExportOptions {
20
+ multiplier: number;
21
+ format?: 'jpeg' | 'png' | 'webp';
22
+ quality?: number;
23
+ enableRetinaScaling?: boolean;
24
+ left?: number;
25
+ top?: number;
26
+ width?: number;
27
+ height?: number;
28
+ filter?: (object: any) => boolean;
29
+ }
30
+ declare const forEveryChild: (node: any, cb: any) => void;
31
+ declare const Font: mobx_state_tree.IModelType<{
32
+ fontFamily: mobx_state_tree.ISimpleType<string>;
33
+ name: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
34
+ url: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
35
+ img: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
36
+ styles: mobx_state_tree.IType<any, any, any>;
37
+ }, {}, mobx_state_tree.ModelCreationType<{
38
+ fontFamily: string;
39
+ name: string | undefined;
40
+ url: string | undefined;
41
+ img: string | undefined;
42
+ styles: any;
43
+ }>, mobx_state_tree._NotCustomized>;
44
+ /**
45
+ * 三个对象要搞清楚关系
46
+ * 1. selectedElementsIds: 选中的元素id数组
47
+ * 2. selectedElements: 会根据ids返回元素实例
48
+ * 3. selectElements: 设置 ids 的
49
+ * 4. selectedShapes:
50
+ */
51
+ declare const Store: mobx_state_tree.IModelType<{
52
+ name: mobx_state_tree.IType<string | undefined, string, string>;
53
+ token: mobx_state_tree.IType<string | undefined, string, string>;
54
+ workspaceId: mobx_state_tree.IType<string | undefined, string, string>;
55
+ width: mobx_state_tree.IType<number | undefined, number, number>;
56
+ height: mobx_state_tree.IType<number | undefined, number, number>;
57
+ scale: mobx_state_tree.IType<number | undefined, number, number>;
58
+ scaleToFit: mobx_state_tree.IType<number | undefined, number, number>;
59
+ unit: mobx_state_tree.IType<string | undefined, string, string>;
60
+ dpi: mobx_state_tree.IType<number | undefined, number, number>;
61
+ bleed: mobx_state_tree.IType<number | undefined, number, number>;
62
+ bleedVisible: mobx_state_tree.IType<boolean | undefined, boolean, boolean>;
63
+ rulesVisible: mobx_state_tree.IType<boolean | undefined, boolean, boolean>;
64
+ openedSidePanel: mobx_state_tree.IType<string | undefined, string, string>;
65
+ selectedElementsIds: mobx_state_tree.IArrayType<mobx_state_tree.ISimpleType<string>>;
66
+ backgroundColor: mobx_state_tree.IOptionalIType<mobx_state_tree_dist_internal.IUnionType<[mobx_state_tree.ISimpleType<string>, mobx_state_tree.IType<Record<string, any>, Record<string, any>, Record<string, any>>]>, [undefined]>;
67
+ fonts: mobx_state_tree.IArrayType<mobx_state_tree.IModelType<{
68
+ fontFamily: mobx_state_tree.ISimpleType<string>;
69
+ name: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
70
+ url: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
71
+ img: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
72
+ styles: mobx_state_tree.IType<any, any, any>;
73
+ }, {}, mobx_state_tree.ModelCreationType<{
74
+ fontFamily: string;
75
+ name: string | undefined;
76
+ url: string | undefined;
77
+ img: string | undefined;
78
+ styles: any;
79
+ }>, mobx_state_tree._NotCustomized>>;
80
+ editor: mobx_state_tree.IType<Editor | null | undefined, Editor | null, Editor | null>;
81
+ custom: mobx_state_tree.IType<any, any, any>;
82
+ objects: mobx_state_tree.IArrayType<mobx_state_tree.IType<any, any, any>>;
83
+ _key: mobx_state_tree.IType<string | undefined, string, string>;
84
+ _updateTrigger: mobx_state_tree.IType<number | undefined, number, number>;
85
+ _updateFontSize: mobx_state_tree.IType<number | undefined, number, number>;
86
+ }, {
87
+ readonly selectedElements: FabricObject[];
88
+ } & {
89
+ readonly selectedShapes: FabricObject<Partial<fabric.FabricObjectProps>, fabric.SerializedObjectProps, fabric.ObjectEvents>[];
90
+ find(callback: (e: any) => boolean): any;
91
+ getElementById(id: string): any;
92
+ } & {
93
+ _setEditor(editor: Editor): void;
94
+ _triggerUpdate(): void;
95
+ _fontSizeUpdate(): void;
96
+ _syncBackgroundColor(color: any): void;
97
+ } & {
98
+ setBackgroundColor(color: string | Record<string, any>, isHistory?: boolean): void;
99
+ set(options: any, element?: FabricObject): void;
100
+ setUnit({ unit, dpi }: {
101
+ unit: any;
102
+ dpi?: any;
103
+ }): void;
104
+ setObjects(objects: any): void;
105
+ selectElements(ids: string[]): void;
106
+ openSidePanel(t: string): void;
107
+ deleteElements(ids: string[]): void;
108
+ setScale(scale: number): void;
109
+ clone(): void;
110
+ /**
111
+ * 添加jsons元素
112
+ * @param options 元素json数据
113
+ * @param isHistory 是否记录历史
114
+ * @returns
115
+ */
116
+ addElement(options: any, isHistory?: boolean): Promise<void> | undefined;
117
+ setSize({ width, height }: {
118
+ width: number;
119
+ height: number;
120
+ useMagic?: boolean;
121
+ }): void;
122
+ setupEditorListeners(): void;
123
+ } & {
124
+ _forEachElementUp(ids: Array<string>, callback: Function): void;
125
+ _forEachElementDown(ids: Array<string>, callback: Function): false | undefined;
126
+ } & {
127
+ canMoveElementsUp(ids: Array<string>): false;
128
+ moveElementsUp(ids: Array<string>): void;
129
+ canMoveElementsTop(ids: Array<string>): false;
130
+ moveElementsTop(ids: Array<string>): void;
131
+ canMoveElementsDown(ids: Array<string>): false;
132
+ moveElementsDown(ids: Array<string>): void;
133
+ canMoveElementsBottom(ids: Array<string>): false;
134
+ moveElementsBottom(ids: Array<string>): void;
135
+ setElementZIndex(): void;
136
+ } & {
137
+ toDataURL(options?: ExportOptions): Promise<string | null | undefined>;
138
+ toBlob(options?: ExportOptions): Promise<Blob | null | undefined>;
139
+ saveAsImage(options?: ExportOptions & {
140
+ fileName?: string;
141
+ }): Promise<void>;
142
+ toJSON(): any;
143
+ toObject(): any;
144
+ loadJSON: (data: any) => Promise<void>;
145
+ clear(): void;
146
+ } & {
147
+ removeFont(fontFamily: string): void;
148
+ addFont(font: FONT): void;
149
+ /**
150
+ * 加载字体(注入 CSS 并等待字体可用)
151
+ * @param fontFamily - 字体名称
152
+ */
153
+ loadFont(fontFamily: string): Promise<void[]>;
154
+ } & {
155
+ on(eventName: any, callback: any): mobx_state_tree.IDisposer | undefined;
156
+ }, mobx_state_tree._NotCustomized, mobx_state_tree._NotCustomized>;
157
+ type StoreType = Instance<typeof Store>;
158
+ interface StoreProps {
159
+ key: string;
160
+ token?: string;
161
+ workspaceId?: string;
162
+ }
163
+ declare const getToken: () => {
164
+ token: string;
165
+ workspaceId: string;
166
+ };
167
+ declare function createStore({ key, token, workspaceId }: StoreProps): mobx_state_tree.ModelInstanceTypeProps<{
168
+ name: mobx_state_tree.IType<string | undefined, string, string>;
169
+ token: mobx_state_tree.IType<string | undefined, string, string>;
170
+ workspaceId: mobx_state_tree.IType<string | undefined, string, string>;
171
+ width: mobx_state_tree.IType<number | undefined, number, number>;
172
+ height: mobx_state_tree.IType<number | undefined, number, number>;
173
+ scale: mobx_state_tree.IType<number | undefined, number, number>;
174
+ scaleToFit: mobx_state_tree.IType<number | undefined, number, number>;
175
+ unit: mobx_state_tree.IType<string | undefined, string, string>;
176
+ dpi: mobx_state_tree.IType<number | undefined, number, number>;
177
+ bleed: mobx_state_tree.IType<number | undefined, number, number>;
178
+ bleedVisible: mobx_state_tree.IType<boolean | undefined, boolean, boolean>;
179
+ rulesVisible: mobx_state_tree.IType<boolean | undefined, boolean, boolean>;
180
+ openedSidePanel: mobx_state_tree.IType<string | undefined, string, string>;
181
+ selectedElementsIds: mobx_state_tree.IArrayType<mobx_state_tree.ISimpleType<string>>;
182
+ backgroundColor: mobx_state_tree.IOptionalIType<mobx_state_tree_dist_internal.IUnionType<[mobx_state_tree.ISimpleType<string>, mobx_state_tree.IType<Record<string, any>, Record<string, any>, Record<string, any>>]>, [undefined]>;
183
+ fonts: mobx_state_tree.IArrayType<mobx_state_tree.IModelType<{
184
+ fontFamily: mobx_state_tree.ISimpleType<string>;
185
+ name: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
186
+ url: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
187
+ img: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
188
+ styles: mobx_state_tree.IType<any, any, any>;
189
+ }, {}, mobx_state_tree.ModelCreationType<{
190
+ fontFamily: string;
191
+ name: string | undefined;
192
+ url: string | undefined;
193
+ img: string | undefined;
194
+ styles: any;
195
+ }>, mobx_state_tree._NotCustomized>>;
196
+ editor: mobx_state_tree.IType<Editor | null | undefined, Editor | null, Editor | null>;
197
+ custom: mobx_state_tree.IType<any, any, any>;
198
+ objects: mobx_state_tree.IArrayType<mobx_state_tree.IType<any, any, any>>;
199
+ _key: mobx_state_tree.IType<string | undefined, string, string>;
200
+ _updateTrigger: mobx_state_tree.IType<number | undefined, number, number>;
201
+ _updateFontSize: mobx_state_tree.IType<number | undefined, number, number>;
202
+ }> & {
203
+ readonly selectedElements: FabricObject[];
204
+ } & {
205
+ readonly selectedShapes: FabricObject<Partial<fabric.FabricObjectProps>, fabric.SerializedObjectProps, fabric.ObjectEvents>[];
206
+ find(callback: (e: any) => boolean): any;
207
+ getElementById(id: string): any;
208
+ } & {
209
+ _setEditor(editor: Editor): void;
210
+ _triggerUpdate(): void;
211
+ _fontSizeUpdate(): void;
212
+ _syncBackgroundColor(color: any): void;
213
+ } & {
214
+ setBackgroundColor(color: string | Record<string, any>, isHistory?: boolean): void;
215
+ set(options: any, element?: FabricObject): void;
216
+ setUnit({ unit, dpi }: {
217
+ unit: any;
218
+ dpi?: any;
219
+ }): void;
220
+ setObjects(objects: any): void;
221
+ selectElements(ids: string[]): void;
222
+ openSidePanel(t: string): void;
223
+ deleteElements(ids: string[]): void;
224
+ setScale(scale: number): void;
225
+ clone(): void;
226
+ /**
227
+ * 添加jsons元素
228
+ * @param options 元素json数据
229
+ * @param isHistory 是否记录历史
230
+ * @returns
231
+ */
232
+ addElement(options: any, isHistory?: boolean): Promise<void> | undefined;
233
+ setSize({ width, height }: {
234
+ width: number;
235
+ height: number;
236
+ useMagic?: boolean;
237
+ }): void;
238
+ setupEditorListeners(): void;
239
+ } & {
240
+ _forEachElementUp(ids: Array<string>, callback: Function): void;
241
+ _forEachElementDown(ids: Array<string>, callback: Function): false | undefined;
242
+ } & {
243
+ canMoveElementsUp(ids: Array<string>): false;
244
+ moveElementsUp(ids: Array<string>): void;
245
+ canMoveElementsTop(ids: Array<string>): false;
246
+ moveElementsTop(ids: Array<string>): void;
247
+ canMoveElementsDown(ids: Array<string>): false;
248
+ moveElementsDown(ids: Array<string>): void;
249
+ canMoveElementsBottom(ids: Array<string>): false;
250
+ moveElementsBottom(ids: Array<string>): void;
251
+ setElementZIndex(): void;
252
+ } & {
253
+ toDataURL(options?: ExportOptions): Promise<string | null | undefined>;
254
+ toBlob(options?: ExportOptions): Promise<Blob | null | undefined>;
255
+ saveAsImage(options?: ExportOptions & {
256
+ fileName?: string;
257
+ }): Promise<void>;
258
+ toJSON(): any;
259
+ toObject(): any;
260
+ loadJSON: (data: any) => Promise<void>;
261
+ clear(): void;
262
+ } & {
263
+ removeFont(fontFamily: string): void;
264
+ addFont(font: FONT): void;
265
+ /**
266
+ * 加载字体(注入 CSS 并等待字体可用)
267
+ * @param fontFamily - 字体名称
268
+ */
269
+ loadFont(fontFamily: string): Promise<void[]>;
270
+ } & {
271
+ on(eventName: any, callback: any): mobx_state_tree.IDisposer | undefined;
272
+ } & mobx_state_tree.IStateTreeNode<mobx_state_tree.IModelType<{
273
+ name: mobx_state_tree.IType<string | undefined, string, string>;
274
+ token: mobx_state_tree.IType<string | undefined, string, string>;
275
+ workspaceId: mobx_state_tree.IType<string | undefined, string, string>;
276
+ width: mobx_state_tree.IType<number | undefined, number, number>;
277
+ height: mobx_state_tree.IType<number | undefined, number, number>;
278
+ scale: mobx_state_tree.IType<number | undefined, number, number>;
279
+ scaleToFit: mobx_state_tree.IType<number | undefined, number, number>;
280
+ unit: mobx_state_tree.IType<string | undefined, string, string>;
281
+ dpi: mobx_state_tree.IType<number | undefined, number, number>;
282
+ bleed: mobx_state_tree.IType<number | undefined, number, number>;
283
+ bleedVisible: mobx_state_tree.IType<boolean | undefined, boolean, boolean>;
284
+ rulesVisible: mobx_state_tree.IType<boolean | undefined, boolean, boolean>;
285
+ openedSidePanel: mobx_state_tree.IType<string | undefined, string, string>;
286
+ selectedElementsIds: mobx_state_tree.IArrayType<mobx_state_tree.ISimpleType<string>>;
287
+ backgroundColor: mobx_state_tree.IOptionalIType<mobx_state_tree_dist_internal.IUnionType<[mobx_state_tree.ISimpleType<string>, mobx_state_tree.IType<Record<string, any>, Record<string, any>, Record<string, any>>]>, [undefined]>;
288
+ fonts: mobx_state_tree.IArrayType<mobx_state_tree.IModelType<{
289
+ fontFamily: mobx_state_tree.ISimpleType<string>;
290
+ name: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
291
+ url: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
292
+ img: mobx_state_tree.IOptionalIType<mobx_state_tree.ISimpleType<string>, [undefined]>;
293
+ styles: mobx_state_tree.IType<any, any, any>;
294
+ }, {}, mobx_state_tree.ModelCreationType<{
295
+ fontFamily: string;
296
+ name: string | undefined;
297
+ url: string | undefined;
298
+ img: string | undefined;
299
+ styles: any;
300
+ }>, mobx_state_tree._NotCustomized>>;
301
+ editor: mobx_state_tree.IType<Editor | null | undefined, Editor | null, Editor | null>;
302
+ custom: mobx_state_tree.IType<any, any, any>;
303
+ objects: mobx_state_tree.IArrayType<mobx_state_tree.IType<any, any, any>>;
304
+ _key: mobx_state_tree.IType<string | undefined, string, string>;
305
+ _updateTrigger: mobx_state_tree.IType<number | undefined, number, number>;
306
+ _updateFontSize: mobx_state_tree.IType<number | undefined, number, number>;
307
+ }, {
308
+ readonly selectedElements: FabricObject[];
309
+ } & {
310
+ readonly selectedShapes: FabricObject<Partial<fabric.FabricObjectProps>, fabric.SerializedObjectProps, fabric.ObjectEvents>[];
311
+ find(callback: (e: any) => boolean): any;
312
+ getElementById(id: string): any;
313
+ } & {
314
+ _setEditor(editor: Editor): void;
315
+ _triggerUpdate(): void;
316
+ _fontSizeUpdate(): void;
317
+ _syncBackgroundColor(color: any): void;
318
+ } & {
319
+ setBackgroundColor(color: string | Record<string, any>, isHistory?: boolean): void;
320
+ set(options: any, element?: FabricObject): void;
321
+ setUnit({ unit, dpi }: {
322
+ unit: any;
323
+ dpi?: any;
324
+ }): void;
325
+ setObjects(objects: any): void;
326
+ selectElements(ids: string[]): void;
327
+ openSidePanel(t: string): void;
328
+ deleteElements(ids: string[]): void;
329
+ setScale(scale: number): void;
330
+ clone(): void;
331
+ /**
332
+ * 添加jsons元素
333
+ * @param options 元素json数据
334
+ * @param isHistory 是否记录历史
335
+ * @returns
336
+ */
337
+ addElement(options: any, isHistory?: boolean): Promise<void> | undefined;
338
+ setSize({ width, height }: {
339
+ width: number;
340
+ height: number;
341
+ useMagic?: boolean;
342
+ }): void;
343
+ setupEditorListeners(): void;
344
+ } & {
345
+ _forEachElementUp(ids: Array<string>, callback: Function): void;
346
+ _forEachElementDown(ids: Array<string>, callback: Function): false | undefined;
347
+ } & {
348
+ canMoveElementsUp(ids: Array<string>): false;
349
+ moveElementsUp(ids: Array<string>): void;
350
+ canMoveElementsTop(ids: Array<string>): false;
351
+ moveElementsTop(ids: Array<string>): void;
352
+ canMoveElementsDown(ids: Array<string>): false;
353
+ moveElementsDown(ids: Array<string>): void;
354
+ canMoveElementsBottom(ids: Array<string>): false;
355
+ moveElementsBottom(ids: Array<string>): void;
356
+ setElementZIndex(): void;
357
+ } & {
358
+ toDataURL(options?: ExportOptions): Promise<string | null | undefined>;
359
+ toBlob(options?: ExportOptions): Promise<Blob | null | undefined>;
360
+ saveAsImage(options?: ExportOptions & {
361
+ fileName?: string;
362
+ }): Promise<void>;
363
+ toJSON(): any;
364
+ toObject(): any;
365
+ loadJSON: (data: any) => Promise<void>;
366
+ clear(): void;
367
+ } & {
368
+ removeFont(fontFamily: string): void;
369
+ addFont(font: FONT): void;
370
+ /**
371
+ * 加载字体(注入 CSS 并等待字体可用)
372
+ * @param fontFamily - 字体名称
373
+ */
374
+ loadFont(fontFamily: string): Promise<void[]>;
375
+ } & {
376
+ on(eventName: any, callback: any): mobx_state_tree.IDisposer | undefined;
377
+ }, mobx_state_tree._NotCustomized, mobx_state_tree._NotCustomized>>;
378
+
379
+ export { type ExportOptions as E, type FONT as F, type StoreType as S, Font as a, Store as b, createStore as c, type StoreProps as d, forEveryChild as f, getToken as g };
@@ -1,11 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { StoreType } from '../model/store.js';
2
+ import { S as StoreType } from '../store-DfmY1m2j.js';
3
3
  import 'fabric';
4
4
  import 'mobx-state-tree/dist/internal';
5
5
  import 'mobx-state-tree';
6
6
  import '@ydesign/core';
7
- import '../utils/fonts.js';
8
- import 'mobx';
9
7
 
10
8
  declare const DownloadButton: (({ store }: {
11
9
  store: StoreType;
@@ -1 +1 @@
1
- import{a,b}from"../chunk-7YLSIB43.js";import"../chunk-YCFED7XQ.js";import"../chunk-O2XFH626.js";export{a as DownloadButton,b as default};
1
+ import{a,b}from"../chunk-RBRSKAZL.js";import"../chunk-WFMCGQ5V.js";import"../chunk-O2XFH626.js";export{a as DownloadButton,b as default};
@@ -2,13 +2,11 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as styled_components_dist_types from 'styled-components/dist/types';
3
3
  import * as styled_components from 'styled-components';
4
4
  import * as react from 'react';
5
- import { StoreType } from '../model/store.js';
5
+ import { S as StoreType } from '../store-DfmY1m2j.js';
6
6
  import 'fabric';
7
7
  import 'mobx-state-tree/dist/internal';
8
8
  import 'mobx-state-tree';
9
9
  import '@ydesign/core';
10
- import '../utils/fonts.js';
11
- import 'mobx';
12
10
 
13
11
  declare const NavBarGroup: styled_components_dist_types.IStyledComponentBase<"web", styled_components.FastOmit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
14
12
  declare function registerToolbarComponent(type: string, reactComponent: any): void;
@@ -1 +1,18 @@
1
- import{a,b,c,d}from"../chunk-UCJMXWVT.js";import"../chunk-2A3HHQ7X.js";import"../chunk-KVT25LDU.js";import"../chunk-2T3O5ZZ2.js";import"../chunk-HOAYYKAZ.js";import"../chunk-3TO57JPN.js";import"../chunk-CB23VFSC.js";import"../chunk-O73AAP2K.js";import"../chunk-AC6CCGZH.js";import"../chunk-Z4QXUZAS.js";import"../chunk-XRRO2RT7.js";import"../chunk-YCJBBRRT.js";import"../chunk-5OA2JYPB.js";import"../chunk-7YLSIB43.js";import"../chunk-J6PYM4EV.js";import"../chunk-62YF5KTO.js";import"../chunk-YVBVDUVA.js";import"../chunk-TTK5Z2Z6.js";import"../chunk-T3TEB73P.js";import"../chunk-75WC3GVB.js";import"../chunk-IUFYYEGO.js";import"../chunk-MXZ6RXT3.js";import"../chunk-O56ZNYGR.js";import"../chunk-RVXI723F.js";import"../chunk-YRJUN267.js";import"../chunk-OQ6HU62L.js";import"../chunk-WCHGSVUC.js";import"../chunk-TZ6B7XDS.js";import"../chunk-7NNOHYKX.js";import"../chunk-BE3YOONJ.js";import"../chunk-YCFED7XQ.js";import"../chunk-WJT6VPDR.js";import"../chunk-JMIN2XMC.js";import"../chunk-O2XFH626.js";export{a as NavBarGroup,c as Toolbar,d as default,b as registerToolbarComponent};
1
+ import{d as W,e as _,g as $t}from"../chunk-63A6RW6Y.js";import{a as z,c as qt}from"../chunk-RVXI723F.js";import{a as Xt,b as Kt,d as Jt}from"../chunk-45NWLCOP.js";import{b as Qt}from"../chunk-RBRSKAZL.js";import{a as Bt}from"../chunk-YBC2DYJX.js";import{a as nt}from"../chunk-EWOU5F3O.js";import{c as i}from"../chunk-WFMCGQ5V.js";import"../chunk-EUTDQZKU.js";import"../chunk-O2XFH626.js";import jt from"styled-components";import{useRef as Sn}from"react";import{observer as U}from"mobx-react-lite";import{useEffect as tt,useState as S,useCallback as uo,useRef as oe,useMemo as go}from"react";import{ColorPicker as fo,Popover as ne,Button as R,Input as yo,InputNumber as Et,Space as bo,Slider as re,Tooltip as L}from"antd";import{cssGradient2FabricGradient as ho}from"@ydesign/core";import{ChevronDown as xo,TextAlignStart as vo,TextAlignCenter as ko,TextAlignEnd as Co,TextAlignJustify as Fo,Bold as So,Italic as To,Underline as wo,Strikethrough as Bo,ListChevronsUpDown as Ho,TextWrap as Po}from"lucide-react";import{FixedSizeList as Eo}from"react-window";import{Popover as ro,Button as no,Switch as Ht,Slider as lt,InputNumber as q,ColorPicker as Zt}from"antd";import{observer as io}from"mobx-react-lite";import{Sparkles as lo}from"lucide-react";import{useEffect as ao,useState as x}from"react";import{Fragment as Pt,jsx as f,jsxs as C}from"react/jsx-runtime";var $=(t,e,o)=>Math.max(e,Math.min(o,t)),te={display:"inline-flex",justifyContent:"space-between",width:"100%",padding:6},it={display:"flex",alignItems:"center",justifyContent:"space-between",padding:6},N=({label:t,enabled:e,visible:o=!0,onEnabledChange:l,numberValue:n,min:r,max:d,onNumberValueChange:p,step:y})=>o?C(Pt,{children:[C("div",{style:{display:"inline-flex",justifyContent:"space-between",width:"100%",padding:"6px"},children:[f("span",{children:t}),f(Ht,{checked:e,onChange:s=>{l(s)}})]}),e?C("div",{style:{display:"flex",width:"100%",justifyContent:"space-between",marginTop:10,marginBottom:10},children:[f("div",{style:{flex:1},children:f(lt,{value:n,onChange:s=>{p(s)},min:r,max:d,step:y})}),f(q,{size:"small",style:{width:60,marginLeft:10},value:n,step:y,onChange:s=>{p($(s,r,d))}})]}):null]}):null,D=io(({element:t,store:e,elements:o})=>{let n=(o||[t])[0],r=e.editor,d=n?.type==="textbox",p=n?.type==="image",y=r?.imageFiltersHandler.getFilter("blur"),s=r?.imageFiltersHandler.getFilter("brightness"),c=r?.imageFiltersHandler.getFilter("contrast"),u=r?.imageFiltersHandler.getFilter("saturation"),B=r?.imageFiltersHandler.getFilter("vibrance"),H=r?.imageFiltersHandler.getFilter("hueRotation"),I=r?.imageFiltersHandler.getFilter("noise"),P=r?.imageFiltersHandler.getFilter("pixelate"),[M,J]=x(!!y),[ft,rt]=x(y?.blur||.5),[E,yt]=x(!!s),[Le,Mt]=x(s?.brightness||.05),[Ue,bt]=x(!!c),[Ge,Wt]=x(c?.contrast||.25),[Ye,ht]=x(!!u),[Xe,_t]=x(u?.saturation||1),[Ke,xt]=x(!!B),[Je,Dt]=x(B?.vibrance||1),[qe,vt]=x(!!H),[$e,Lt]=x(H?.rotation||-.5),[Qe,kt]=x(!!I),[Ze,Ut]=x(I?.noise||30),[to,Ct]=x(!!P),[eo,Gt]=x(P?.blocksize||30),[oo,Ft]=x(n?.stroke),[St,Tt]=x(n?.strokeWidth),[T,Yt]=x({enabled:!!n?.shadow,offsetX:n?.shadow?.offsetX||15,offsetY:n?.shadow?.offsetY||15,blur:n?.shadow?.blur||25,color:n?.shadow?.color||"rgba(0,0,0,0.45)",affectStroke:!1,nonScaling:!1,type:"shadow"});ao(()=>{Ft(n?.stroke),Tt(n?.strokeWidth),Yt({enabled:!!n?.shadow,offsetX:n?.shadow?.offsetX||15,offsetY:n?.shadow?.offsetY||15,blur:n?.shadow?.blur||25,color:n?.shadow?.color||"rgba(0,0,0,0.45)",affectStroke:!1,nonScaling:!1,type:"shadow"}),J(!!y),rt(y?.blur||.5),yt(!!s),Mt(s?.brightness||.05),bt(!!c),Wt(c?.contrast||.25),ht(!!u),_t(u?.saturation||1),xt(!!B),Dt(B?.vibrance||1),vt(!!H),Lt(H?.rotation||-.5),kt(!!I),Ut(I?.noise||30),Ct(!!P),Gt(P?.blocksize||30)},[n]);let wt=a=>{r?.objectsHandler.setTextStyle(a)},A=(a,b)=>{Yt({...T,[a]:b}),r&&r.objectsHandler.setShadow({...T,[a]:b})};return f(ro,{trigger:"click",content:C("div",{style:{width:"280px",maxHeight:"calc(100vh - 150px)",overflow:"auto"},children:[f(N,{label:i("toolbar.blur"),visible:p,enabled:M,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"blur",{blur:.5}),J(!0)):(r?.imageFiltersHandler._removeFilter(b,"blur"),J(!1))},min:0,max:1,step:.1,numberValue:ft,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("blur","blur",a),rt(a)}}),f(N,{label:i("toolbar.brightness"),visible:p,enabled:E,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"brightness",{brightness:.05}),yt(!0)):(r?.imageFiltersHandler._removeFilter(b,"brightness"),yt(!1))},min:-1,max:1,step:.01,numberValue:Le,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("brightness","brightness",a),Mt(a)}}),f(N,{label:i("toolbar.contrast"),visible:p,enabled:Ue,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"contrast",{contrast:.25}),bt(!0)):(r?.imageFiltersHandler._removeFilter(b,"contrast"),bt(!1))},min:-1,max:1,step:.01,numberValue:Ge,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("contrast","contrast",a),Wt(a)}}),f(N,{label:i("toolbar.saturation"),visible:p,enabled:Ye,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"saturation",{saturation:1}),ht(!0)):(r?.imageFiltersHandler._removeFilter(b,"saturation"),ht(!1))},min:-1,max:1,step:.01,numberValue:Xe,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("saturation","saturation",a),_t(a)}}),f(N,{label:i("toolbar.vibrance"),visible:p,enabled:Ke,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"vibrance",{vibrance:1}),xt(!0)):(r?.imageFiltersHandler._removeFilter(b,"vibrance"),xt(!1))},min:-1,max:1,step:.01,numberValue:Je,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("vibrance","vibrance",a),Dt(a)}}),f(N,{label:i("toolbar.hueRotation"),visible:p,enabled:qe,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"hueRotation",{rotation:-.5}),vt(!0)):(r?.imageFiltersHandler._removeFilter(b,"hueRotation"),vt(!1))},min:-1,max:1,step:.01,numberValue:$e,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("hueRotation","rotation",a),Lt(a)}}),f(N,{label:i("toolbar.noise"),visible:p,enabled:Qe,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"noise",{noise:30}),kt(!0)):(r?.imageFiltersHandler._removeFilter(b,"noise"),kt(!1))},min:0,max:1e3,step:1,numberValue:Ze,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("noise","noise",a),Ut(a)}}),f(N,{label:i("toolbar.pixelate"),visible:p,enabled:to,onEnabledChange:a=>{let b=n;a?(r?.imageFiltersHandler._createFilter(b,"pixelate",{blocksize:10}),Ct(!0)):(r?.imageFiltersHandler._removeFilter(b,"pixelate"),Ct(!1))},min:.01,max:100,step:.01,numberValue:eo,onNumberValueChange:a=>{r?.imageFiltersHandler._changeAttr("pixelate","blocksize",a),Gt(a)}}),d&&C(Pt,{children:[C("div",{style:te,children:[f("span",{children:i("toolbar.textStroke")}),f(Ht,{checked:!!St,onChange:a=>{wt({strokeWidth:a?10:0,stroke:a?"red":null}),Tt(a?10:0),Ft(a?"red":null)}})]}),!!St&&C("div",{style:{display:"flex",justifyContent:"space-between",padding:"6px"},children:[f(Zt,{value:oo,onChange:a=>{let b=a.toCssString();wt({stroke:b}),Ft(b)}}),f(q,{value:St,onChange:a=>{wt({strokeWidth:$(a,1,30)}),Tt($(a,1,30))},style:{width:60},min:1,max:Math.round(n.fontSize/2)})]})]}),C("div",{style:te,children:[f("span",{children:i("toolbar.shadow")}),f(Ht,{checked:!!T.enabled,onChange:a=>{A("enabled",a)}})]}),T.enabled&&C(Pt,{children:[C("div",{style:it,children:[f("div",{children:i("toolbar.blur")}),f("div",{children:f(q,{value:T.blur,style:{width:60},min:0,max:50,onChange:a=>{A("blur",a)}})})]}),f(lt,{value:T.blur,onChange:a=>A("blur",a),min:0,max:50}),C("div",{style:it,children:[f("div",{children:i("toolbar.offsetX")}),f("div",{children:f(q,{value:T.offsetX,style:{width:60},min:-50,max:50,onChange:a=>{A("offsetX",$(a,-50,50))}})})]}),f(lt,{value:T.offsetX,onChange:a=>A("offsetX",a),min:-50,max:50}),C("div",{style:it,children:[f("div",{children:i("toolbar.offsetY")}),f("div",{children:f(q,{value:T.offsetY,style:{width:60},min:-50,max:50,onChange:a=>{A("offsetY",$(a,-50,50))}})})]}),f(lt,{value:T.offsetY,onChange:a=>A("offsetY",a),min:-50,max:50}),C("div",{style:it,children:[f("div",{children:i("toolbar.color")}),f(Zt,{defaultFormat:"rgb",value:T.color,onChange:a=>{A("color",a.toRgbString())}})]})]})]}),children:f(no,{type:"text",icon:f(lo,{size:16,style:{display:"flex"}}),styles:{root:{padding:"0 7px"}},children:i("toolbar.effects")})})});import{observer as so}from"mobx-react-lite";import{Popover as co,Button as po}from"antd";import{Pencil as mo}from"lucide-react";import{jsx as at}from"react/jsx-runtime";var ee=so(()=>at(co,{trigger:"click",content:at("div",{children:"AI write"}),children:at(po,{type:"text",icon:at(mo,{size:16,style:{display:"flex"}}),styles:{root:{padding:"0 7px"}},children:i("toolbar.aiText.aiWrite")})}));import{jsx as m,jsxs as Z}from"react/jsx-runtime";var{Search:Io}=yo,zo=({fontFamily:t,handleClick:e,modifiers:o,store:l,isCustom:n})=>{let[r,d]=S(!n);if(console.log("FontItem ---> ",d),tt(()=>{r||l.loadFont(t)},[t,r]),t==="_divider")return m("div",{style:{width:"100%",height:1,background:"#e8e8e8"}});let p=t;return m(R,{type:o.active?"primary":"text",block:!0,style:{justifyContent:"start"},onClick:()=>e(t),disabled:o.disabled,styles:{root:{fontFamily:'"'+t+'"'},content:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"}},children:p})},Ro=({onChange:t,defaultValue:e})=>m(Io,{placeholder:e,allowClear:!0,onChange:o=>{t(o.target.value)},style:{width:210}}),Ao=({store:t,fonts:e,activeFont:o,activeFontLabel:l,onFontSelect:n})=>{let[r,d]=S(""),p=e.filter(y=>y.toLowerCase().includes(r.toLowerCase()));return m(ne,{content:Z("div",{children:[m(Ro,{defaultValue:"\u641C\u7D22\u5B57\u4F53",onChange:y=>d(y??"")}),m("div",{style:{paddingTop:5},children:m(Eo,{itemCount:p.length,itemSize:28,width:210,height:Math.min(400,28*p.length)+10,children:({index:y,style:s})=>{let c=p[y];return m("div",{style:{...s,display:"flex",alignItems:"center",justifyContent:"center"},children:m(zo,{fontFamily:c,modifiers:{active:o===c},handleClick:()=>n(c),store:t,isCustom:t.fonts.find(u=>u.fontFamily===c)||Bt.find(u=>u.fontFamily===c)},c)})}})})]}),trigger:"click",children:m(R,{type:"text",style:{marginRight:5,fontFamily:'"'+o+'"',overflow:"hidden",whiteSpace:"nowrap",maxHeight:30,padding:"0 10px"},icon:m(xo,{size:16,style:{display:"flex"}}),iconPlacement:"end",children:l})})},st=["left","center","right","justify"],No=U(({elements:t,store:e})=>{let o=e.fonts.concat(Bt).map(d=>d.fontFamily),l=t[0].fontFamily;l.length>15&&(l=l.slice(0,15)+"...");let n=qt(e.objects),r=[...new Set(n.concat("_divider").concat(o))];return m(Ao,{fonts:r,activeFont:t[0].fontFamily,activeFontLabel:l,store:e,onFontSelect:d=>{e.editor?.objectsHandler.setTextStyle({fontFamily:d})}})}),Q=t=>t?typeof t=="string"?t:t.colorStops?JSON.stringify(t.colorStops):JSON.stringify(t):"",Vo=U(({elements:t,store:e})=>{let o=t[0],l=uo(()=>{let{selectionStart:s,selectionEnd:c}=o;if(s!==c&&s!==void 0){let u=o.getSelectionStyles(s,s+1);if(u.length>0&&u[0].fill!==void 0)return u[0].fill}return o.fill},[o]),[n,r]=S(()=>z(l())),d=oe(!1),p=oe(Q(l()));tt(()=>{let s=e.editor?.customCanvas?.canvas;if(!s)return;let c=()=>{if(!d.current){let u=l();p.current=Q(u),r(z(u))}};return s.on("text:selection:changed",c),s.on("text:editing:entered",c),s.on("text:editing:exited",c),()=>{s.off("text:selection:changed",c),s.off("text:editing:entered",c),s.off("text:editing:exited",c)}},[e.editor?.customCanvas?.canvas,l]),tt(()=>{if(!d.current){let s=l(),c=Q(s);c!==p.current&&(p.current=c,r(z(s)))}},[o,l]);let y=go(()=>n,[Q(n)]);return m(fo,{value:y,allowClear:!0,mode:["single","gradient"],onOpenChange:s=>{if(d.current=s,!s){let c=l();p.current=Q(c)}},onChange:s=>{r(s)},onChangeComplete:s=>{let c=s.toCssString();if(c.includes("gradient")){let u=ho(c);e.editor?.objectsHandler.setTextStyle({fill:u})}else e.editor?.objectsHandler.setTextStyle({fill:c})}})}),Oo=U(({elements:t,store:e})=>{let[o,l]=S(t[0].fontSize);tt(()=>{l(t[0].fontSize)},[t[0]?.fontSize,e._updateFontSize]);let n=r=>{Number.isNaN(r)||(e.editor?.objectsHandler.setTextStyle({fontSize:Number(r)}),l(Number(r)))};return m(Et,{min:1,max:4*e.height,value:Math.round(o),onChange:n,style:{width:75},styles:{actions:{opacity:1,width:24}}})}),jo=U(({elements:t,store:e})=>{let o=t[0],[l,n]=S(o.textAlign),[r,d]=S(o.fontWeight),[p,y]=S(o.fontStyle),[s,c]=S(o.underline),[u,B]=S(o.linethrough),[H,I]=S(o.splitByGrapheme);return tt(()=>{n(o.textAlign),d(o.fontWeight),y(o.fontStyle),c(o.underline),B(o.linethrough),I(o.splitByGrapheme)},[o]),Z(bo.Compact,{children:[m(L,{placement:"bottom",title:i(`toolbar.text${l}`),children:m(R,{type:"text",icon:l==="left"?m(vo,{size:16,style:{display:"flex"}}):l==="center"?m(ko,{size:16,style:{display:"flex"}}):l==="right"?m(Co,{size:16,style:{display:"flex"}}):m(Fo,{size:16,style:{display:"flex"}}),onClick:()=>{let P=(st.indexOf(l)+1+st.length)%st.length,M=st[P];e.editor?.objectsHandler.setTextStyle({textAlign:M}),n(M)}})}),m(L,{placement:"bottom",title:i("toolbar.textBold"),children:m(R,{type:r==="bold"||r==="700"?"primary":"text",icon:m(So,{size:16,style:{display:"flex"}}),onClick:()=>{r==="bold"||r==="700"?(e.editor?.objectsHandler.setTextStyle({fontWeight:"normal"}),d("normal")):(e.editor?.objectsHandler.setTextStyle({fontWeight:"bold"}),d("bold"))}})}),m(L,{placement:"bottom",title:i("toolbar.textItalic"),children:m(R,{type:p==="italic"?"primary":"text",icon:m(To,{size:16,style:{display:"flex"}}),onClick:()=>{p==="italic"?(e.editor?.objectsHandler.setTextStyle({fontStyle:"normal"}),y("normal")):(e.editor?.objectsHandler.setTextStyle({fontStyle:"italic"}),y("italic"))}})}),m(L,{placement:"bottom",title:i("toolbar.textUnderline"),children:m(R,{type:s?"primary":"text",icon:m(wo,{size:16,style:{display:"flex"}}),onClick:()=>{e.editor?.objectsHandler.setTextStyle({underline:!s}),c(!s)}})}),m(L,{placement:"bottom",title:i("toolbar.textStrikethrough"),children:m(R,{type:u?"primary":"text",icon:m(Bo,{size:16,style:{display:"flex"}}),onClick:()=>{e.editor?.objectsHandler.setTextStyle({linethrough:!u}),B(!u)}})}),m(L,{placement:"bottom",title:i("toolbar.splitByGrapheme"),children:m(R,{type:H?"primary":"text",icon:m(Po,{size:16,style:{display:"flex"}}),onClick:()=>{e.editor?.objectsHandler.setTextStyle({splitByGrapheme:!H}),I(!H)}})})]})}),Mo=U(({elements:t,store:e})=>{let o=t[0],l={display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:"5px",paddingBottom:"5px"},n=typeof o.lineHeight=="number"?100*o.lineHeight:120,[r,d]=S(n),[p,y]=S(o.charSpacing),s=c=>{e.editor?.objectsHandler.setTextStyle(c)};return m(ne,{trigger:"click",content:Z("div",{style:{padding:"0 6px",width:"230px"},children:[Z("div",{style:l,children:[m("div",{children:i("toolbar.lineHeight")}),m("div",{children:m(Et,{min:50,max:250,value:Math.round(r),style:{width:80},onChange:c=>{s({lineHeight:c/100}),d(c)}})})]}),m(re,{value:Math.round(r),min:50,max:250,step:1,onChange:c=>{s({lineHeight:c/100}),d(c)}}),Z("div",{style:l,children:[m("div",{children:i("toolbar.letterSpacing")}),m("div",{children:m(Et,{min:-50,max:250,value:Math.round(p/10),style:{width:80},onChange:c=>{s({charSpacing:(c??0)*10}),y((c??0)*10)}})})]}),m(re,{value:Math.round(p/10),min:-50,max:250,step:1,onChange:c=>{s({charSpacing:(c??0)*10}),y((c??0)*10)}})]}),children:m(R,{type:"text",icon:m(Ho,{size:16,style:{display:"flex"}})})})}),Wo={TextFill:Vo,TextFontFamily:No,TextFontSize:Oo,TextFontVariant:jo,TextSpacing:Mo,TextFilters:D,TextAiWrite:ee},_o=U(({store:t,components:e})=>{let o=t.selectedElements,n=W({type:"text",usedItems:["TextFill","TextFontFamily","TextFontSize","TextFontVariant","TextSpacing","TextFilters","TextAiWrite"],components:e});return m(_,{items:n,itemRender:r=>{let d=e[r]||Wo[r];return d&&m(d,{elements:o,element:o[0],store:t},r)}})}),ie=_o;import{Tooltip as le,Button as ae}from"antd";import{Undo2 as Do,Redo2 as Lo}from"lucide-react";import{observer as Uo}from"mobx-react-lite";import{useEffect as Go,useState as Yo}from"react";import{jsx as G,jsxs as Xo}from"react/jsx-runtime";var se=Uo(({store:t})=>{let[e,o]=Yo({hasUndo:!1,hasRedo:!1});return Go(()=>{let l=t.editor,n=r=>{o(r)};return l&&l.on("history:changed",n),()=>{l&&l.off("history:changed",n)}},[t.editor]),Xo(It,{style:{float:"left",paddingRight:10},children:[G(le,{title:i("toolbar.undo"),placement:"bottom",children:G(ae,{type:"text",disabled:!e.hasUndo,styles:{root:{padding:"0 7px"}},onClick:()=>{t.editor?.historyHandler.undo()},children:G(Do,{size:16})})}),G(le,{title:i("toolbar.redo"),placement:"bottom",children:G(ae,{type:"text",disabled:!e.hasRedo,styles:{root:{padding:"0 7px"}},onClick:()=>{t.editor?.historyHandler.redo()},children:G(Lo,{size:16})})})]})});import{observer as Tn}from"mobx-react-lite";import{Layers as Ko}from"lucide-react";import{Popover as Jo,Button as F,Divider as zt}from"antd";import{observer as qo}from"mobx-react-lite";import{ChevronUp as $o,ChevronsUp as Qo,ChevronDown as Zo,ChevronsDown as tr,AlignStartVertical as er,AlignCenterVertical as or,AlignEndVertical as rr,AlignStartHorizontal as nr,AlignCenterHorizontal as ir,AlignEndHorizontal as lr,AlignVerticalSpaceAround as ar,AlignHorizontalSpaceAround as sr}from"lucide-react";import{Fragment as ce,jsx as g,jsxs as w}from"react/jsx-runtime";var de=qo(({store:t})=>{let e=t.selectedElements.length>0,o=t.selectedElementsIds,l=t.selectedElements.every(r=>r?.locked),n=!l&&t.selectedElements.length>1;return g(Jo,{styles:{container:{padding:"10px 5px"}},content:w("div",{style:{width:280},children:[g(zt,{size:"small",children:i("toolbar.layering")}),w("div",{style:{display:"flex"},children:[w("div",{style:{width:"50%"},children:[g(F,{type:"text",block:!0,icon:g($o,{size:16}),disabled:!t.canMoveElementsUp(o),onClick:()=>{t.moveElementsUp(o)},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.up")})}),g(F,{type:"text",block:!0,icon:g(Qo,{size:16}),disabled:!t.canMoveElementsTop(o),onClick:()=>{t.moveElementsTop(o)},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.toForward")})})]}),w("div",{style:{width:"50%"},children:[g(F,{type:"text",block:!0,icon:g(Zo,{size:16}),disabled:!t.canMoveElementsDown(o),onClick:()=>{t.moveElementsDown(o)},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.down")})}),g(F,{type:"text",block:!0,icon:g(tr,{size:16}),disabled:!t.canMoveElementsBottom(o),onClick:()=>{t.moveElementsBottom(o)},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.toBottom")})})]})]}),!l&&w(ce,{children:[g(zt,{size:"small",children:i("toolbar.position")}),w("div",{style:{display:"flex"},children:[w("div",{style:{width:"50%"},children:[g(F,{type:"text",block:!0,icon:g(er,{size:16}),onClick:()=>{t.editor?.alignmentHandler.alignLeft()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.alignLeft")})}),g(F,{type:"text",block:!0,icon:g(or,{size:16}),onClick:()=>{t.editor?.alignmentHandler.alignCenter()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.alignCenter")})}),g(F,{type:"text",block:!0,icon:g(rr,{size:16}),onClick:()=>{t.editor?.alignmentHandler.alignRight()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.alignRight")})})]}),w("div",{style:{width:"50%"},children:[g(F,{type:"text",block:!0,icon:g(nr,{size:16}),onClick:()=>{t.editor?.alignmentHandler.alignTop()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.alignTop")})}),g(F,{type:"text",block:!0,icon:g(ir,{size:16}),onClick:()=>{t.editor?.alignmentHandler.alignMiddle()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.alignMiddle")})}),g(F,{type:"text",block:!0,icon:g(lr,{size:16}),onClick:()=>{t.editor?.alignmentHandler.alignBottom()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.alignBottom")})})]})]})]}),n&&w(ce,{children:[g(zt,{size:"small",children:i("toolbar.spaceEvenly")}),w("div",{style:{display:"flex"},children:[g("div",{style:{width:"50%"},children:g(F,{type:"text",block:!0,icon:g(ar,{size:16}),onClick:()=>{t.editor?.alignmentHandler.yequation()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.verticalDistribution")})})}),g("div",{style:{width:"50%"},children:g(F,{type:"text",block:!0,icon:g(sr,{size:16}),onClick:()=>{t.editor?.alignmentHandler.xequation()},children:g("span",{className:"w-[70px] text-left text-xs",children:i("toolbar.horizontalDistribution")})})})]})]})]}),trigger:"click",placement:"bottom",children:w(F,{type:"text",disabled:!e,styles:{root:{padding:"0 7px"}},children:[g(Ko,{size:16}),i("toolbar.position")]})})});import{Blend as cr}from"lucide-react";import{Popover as dr,Tooltip as pr,Button as mr,InputNumber as ur,Slider as gr}from"antd";import{observer as fr}from"mobx-react-lite";import{useState as yr,useEffect as br}from"react";import{jsx as V,jsxs as pe}from"react/jsx-runtime";var me=fr(({store:t})=>{let e=t.selectedShapes.length>0,o=t.selectedShapes[0],[l,n]=yr(()=>Math.round(100*(o?.opacity??1)));br(()=>{o&&n(Math.round(100*(o.opacity??1)))},[o,o?.opacity]);let r=d=>{let p=Math.max(0,Math.min(d,100));n(p),t.set({opacity:p/100})};return V(pr,{title:i("toolbar.transparency"),placement:"bottom",children:V(dr,{content:pe("div",{children:[V("div",{style:{textAlign:"center",marginBottom:10},children:i("toolbar.transparency")}),pe("div",{style:{display:"flex"},children:[V("div",{style:{width:170,paddingRight:20},children:V(gr,{min:0,max:100,onChange:r,value:l})}),V(ur,{min:0,max:100,value:l,onChange:r,size:"small",styles:{root:{width:65}}})]})]}),trigger:"click",children:V(mr,{type:"text",disabled:!e,styles:{root:{padding:"0 7px"}},children:V(cr,{size:16})})})})});import{LockKeyholeOpen as hr,LockKeyhole as xr}from"lucide-react";import{Tooltip as vr,Button as kr}from"antd";import{useCallback as ue}from"react";var ge=({store:t})=>{let e=t.selectedShapes.length>0,l=t.selectedShapes[0]?.locked;return{disabled:!e,lock:ue(()=>{t.editor?.lockHandler.lock()},[l,t]),unlock:ue(()=>{t.editor?.lockHandler.unlock()},[l,t]),locked:l}};import{observer as Cr}from"mobx-react-lite";import{jsx as Rt}from"react/jsx-runtime";var fe=Cr(({store:t})=>{let{disabled:e,locked:o,lock:l,unlock:n}=ge({store:t}),r=o?xr:hr,d=i(o?"toolbar.lockedDescription":"toolbar.unlockedDescription");return Rt(vr,{title:d,placement:"bottom",children:Rt(kr,{type:"text",styles:{root:{padding:"0 7px"}},disabled:e,onClick:()=>{o?n():l()},children:Rt(r,{size:16})})})});import{Copy as Sr}from"lucide-react";import{Tooltip as Tr,Button as wr}from"antd";import{observer as Br}from"mobx-react-lite";import{useCallback as Fr}from"react";var ye=({store:t})=>{let e=t.selectedElements.length>0,o=t.selectedElements.every(r=>r?.locked===!0),l=!e||o,n=Fr(()=>{t.clone()},[t]);return{disabled:l,duplicate:n}};import{jsx as At}from"react/jsx-runtime";var be=Br(({store:t})=>{let{disabled:e,duplicate:o}=ye({store:t});return At(Tr,{title:i("toolbar.duplicateElements"),placement:"bottom",children:At(wr,{type:"text",styles:{root:{padding:"0 7px"}},disabled:e,onClick:()=>{o()},children:At(Sr,{size:16})})})});import{Trash2 as Pr}from"lucide-react";import{Tooltip as Er,Button as Ir}from"antd";import{useCallback as Hr}from"react";var he=({store:t})=>{let e=t.selectedElements.filter(l=>!l?.locked),o=Hr(()=>{t.deleteElements(e.map(l=>l.id))},[t,e]);return{disabled:!e.length,remove:o}};import{observer as zr}from"mobx-react-lite";import{jsx as Nt}from"react/jsx-runtime";var xe=zr(({store:t})=>{let{disabled:e,remove:o}=he({store:t});return Nt(Er,{title:i("toolbar.removeElements"),placement:"bottom",children:Nt(Ir,{type:"text",styles:{root:{padding:"0 7px"}},disabled:e,onClick:()=>{o()},children:Nt(Pr,{size:16})})})});import{Button as ve}from"antd";import{observer as Rr}from"mobx-react-lite";import{Fragment as Ar,jsx as ke,jsxs as Nr}from"react/jsx-runtime";var Ce=Rr(({store:t})=>{let e=t.selectedElements.length>1,o=t.selectedElements.length===1&&t.selectedElements[0]?.type==="group";return Nr(Ar,{children:[e&&ke(ve,{type:"text",onClick:()=>{t.editor?.objectsHandler.group()},children:i("toolbar.groupElements")}),o&&ke(ve,{type:"text",onClick:()=>{t.editor?.objectsHandler.ungroup()},children:i("toolbar.ungroupElements")})]})});import{observer as pt}from"mobx-react-lite";import{Button as dt,Tooltip as rn,Popover as nn}from"antd";import{Crop as ln}from"lucide-react";import an from"styled-components";import{Popover as Vr,Button as Vt}from"antd";import{Rotate3d as Or,FlipHorizontal as jr,FlipVertical as Mr}from"lucide-react";import{useState as Wr,useEffect as _r,useCallback as Fe}from"react";import{observer as Dr}from"mobx-react-lite";import{jsx as j,jsxs as Lr}from"react/jsx-runtime";var Se=Dr(({element:t,store:e})=>{let[o,l]=Wr({flipX:!1,flipY:!1}),n=Fe(()=>{e.editor?.objectsHandler.update({flipX:!o.flipX}),l({...o,flipX:!o.flipX})},[e.editor,o]),r=Fe(()=>{e.editor?.objectsHandler.update({flipY:!o.flipY}),l({...o,flipY:!o.flipY})},[e.editor,o]);return _r(()=>{t&&l({flipX:t.flipX,flipY:t.flipY})},[t]),j(Vr,{trigger:"click",content:Lr("div",{style:{width:165},children:[j(Vt,{type:"text",block:!0,style:{justifyContent:"start"},icon:j(jr,{size:16,style:{display:"flex"}}),onClick:n,children:i("toolbar.flipHorizontally")}),j(Vt,{type:"text",block:!0,style:{justifyContent:"start"},icon:j(Mr,{size:16,style:{display:"flex"}}),onClick:r,children:i("toolbar.flipVertically")})]}),children:j(Vt,{type:"text",icon:j(Or,{size:16,style:{display:"flex"}}),styles:{root:{padding:"0 7px"}},children:i("toolbar.flip")})})});import{Button as Ur,Modal as Gr}from"antd";import{useState as Te,useEffect as Yr}from"react";import{observer as we}from"mobx-react-lite";import{Fragment as Kr,jsx as ct,jsxs as Jr}from"react/jsx-runtime";var Xr=we(({isOpen:t,onClose:e,element:o})=>{let[l,n]=Te(o.getSrc());return Yr(()=>{n(o.getSrc())},[o.id]),ct(Gr,{title:i("toolbar.removeBackgroundTitle"),open:t,onOk:e,onCancel:e,width:{xs:"90%",sm:"80%",md:"70%",lg:"60%",xl:"50%",xxl:"40%"},styles:{body:{padding:"35px 0"}},okText:i("toolbar.confirmRemoveBackground"),cancelText:i("toolbar.cancelRemoveBackground"),children:ct("img",{src:l,style:{width:"100%",maxHeight:"400px",objectFit:"contain"}})})}),Be=we(({element:t})=>{let[e,o]=Te(!1);return Jr(Kr,{children:[ct(Ur,{type:"text",styles:{root:{padding:"0 7px"}},onClick:()=>o(!0),children:i("toolbar.removeBackground")}),ct(Xr,{isOpen:e,onClose:()=>o(!1),element:t})]})});import{Button as qr,Modal as $r}from"antd";import{Eraser as Qr}from"lucide-react";import{useState as He,useEffect as Zr}from"react";import{observer as Pe}from"mobx-react-lite";import{Fragment as en,jsx as et,jsxs as on}from"react/jsx-runtime";var tn=Pe(({isOpen:t,onClose:e,element:o})=>{let[l,n]=He(o.getSrc());return Zr(()=>{n(o.getSrc())},[o.id]),et($r,{title:i("toolbar.eraserPenTitle"),open:t,onOk:e,onCancel:e,width:{xs:"90%",sm:"80%",md:"70%",lg:"60%",xl:"50%",xxl:"40%"},styles:{body:{padding:"35px 0"}},okText:i("toolbar.confirmEraserPen"),cancelText:i("toolbar.cancelEraserPen"),children:et("img",{src:l,style:{width:"100%",maxHeight:"400px",objectFit:"contain"}})})}),Ee=Pe(({element:t})=>{let[e,o]=He(!1);return on(en,{children:[et(qr,{type:"text",icon:et(Qr,{size:16,style:{display:"flex"}}),styles:{root:{padding:"0 7px"}},onClick:()=>o(!0),children:i("toolbar.eraserPen")}),et(tn,{isOpen:e,onClose:()=>o(!1),element:t})]})});function Ie(t,e){let o=t.width/t.height,l=e.width/e.height,n,r;o>=l?(n=e.width,r=e.width/o):(n=e.height*o,r=e.height);let d=(e.width-n)/2,p=(e.height-r)/2;return{cropX:d,cropY:p,width:n,height:r}}function ze(t){return"data:image/svg+xml;base64,"+window.btoa(unescape(encodeURIComponent(t)))}import{jsx as v}from"react/jsx-runtime";var sn=Object.keys(Xt),cn=[{width:300,height:300,fill:"lightgray",stroke:"#0c0c0c",strokeWidth:0,url:""}],Re=[];sn.forEach(t=>{cn.forEach(e=>{Re.push(Object.assign({subType:t},e))})});Re.forEach(t=>{t.url=ze(Kt(t))});var dn=an.div`
2
+ height: 220px;
3
+ `,Ot={root:{padding:"0 7px"}},pn=pt(({element:t,store:e})=>{let o=e.editor;return v(dt,{type:"text",styles:Ot,onClick:async()=>{let l=e.width+2*e.bleed,n=e.height+2*e.bleed,r=t.getOriginalSize(),d={width:r.width,height:r.height},p=Ie({width:l,height:n},d);t.set({cropX:p.cropX,cropY:p.cropY,width:p.width,height:p.height,scaleX:l/p.width,scaleY:n/p.height,left:-e.bleed,top:-e.bleed}),t.setCoords(),o?.customCanvas?.canvas?.requestRenderAll(),o?.historyHandler.save("update")},children:i("toolbar.fitToBackground")})}),mn=pt(({element:t,store:e})=>v(rn,{title:i("toolbar.crop"),children:v(dt,{type:"text",styles:{root:{padding:"0 7px"}},onClick:()=>{let o=e.editor?.layerHandler.getLayer();e.editor?.imageCropHandler.cropStart(t,o,t.getSrc())},children:v(ln,{size:16})})})),un=pt(({element:t,store:e})=>{let o=Jt.reduce((n,r)=>n.concat(r.children),[]),l=Math.ceil(o.length/4)||1;return t.clipPath?v(dt,{type:"text",styles:Ot,onClick:()=>{t.set({clipPath:null}),e.editor?.customCanvas?.canvas?.requestRenderAll(),e._triggerUpdate(),e.editor?.historyHandler.save("update")},children:i("toolbar.removeClip")}):v(nn,{styles:{container:{padding:"5px 10px"}},content:v("div",{style:{maxHeight:313,overflowY:"auto"},children:v(dn,{style:{height:80*l,width:300},children:v("div",{className:nt("shape-list","flex flex-wrap content-start mb-2"),children:o.map((n,r)=>v("div",{className:nt("shape-item","w-[25%] h-0 pb-[25%] relative cursor-pointer shrink-0 mb-[1.2%]"),onClick:()=>{e.editor?.objectsHandler.createMaskElement(t,n),e._triggerUpdate()},children:v("div",{className:nt("shape-content","absolute inset-0 flex justify-center items-center"),children:v("svg",{overflow:"visible",width:"50",height:"50",children:v("g",{transform:`scale(${50/n.viewBox[0]}, ${50/n.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`,children:v("path",{className:"shape-path",d:n.path,fill:"#ccc",strokeMiterlimit:8,strokeLinecap:"butt"})})})})},r))})})}),trigger:"click",children:v(dt,{type:"text",styles:Ot,children:i("toolbar.clip")})})}),gn={ImageFlip:Se,ImageFilters:D,ImageFitToBackground:pn,ImageCrop:mn,ImageClip:un,ImageRemoveBackground:Be,ImageEraserPen:Ee},Ae=pt(({store:t,components:e})=>{let o=t.selectedElements,n=W({type:"text",usedItems:["ImageFlip","ImageFilters","ImageFitToBackground","ImageClip","ImageCrop","ImageRemoveBackground","ImageEraserPen"],components:e});return v(_,{items:n,itemRender:r=>{let d=e[r]||gn[r];return d&&v(d,{elements:o,element:o[0],store:t},r)}})});import{jsx as fn}from"react/jsx-runtime";var Ne=()=>fn("div",{});import{cssGradient2FabricGradient as je}from"@ydesign/core";import{observer as ut}from"mobx-react-lite";import{useState as Me,useRef as mt,useMemo as We}from"react";import{ColorPicker as _e,Popover as yn,Button as Y,InputNumber as Ve,Slider as Oe}from"antd";import{Logs as bn,Ban as hn}from"lucide-react";import{Fragment as Fn,jsx as h,jsxs as ot}from"react/jsx-runtime";var O=t=>t?typeof t=="string"?t:t.colorStops?JSON.stringify(t.colorStops):JSON.stringify(t):"",xn=ut(({store:t,elements:e})=>{let o=e[0],[l,n]=Me(()=>z(o.fill)),r=mt(!1),d=mt(O(o.fill)),p=O(o.fill);p!==d.current&&!r.current&&(d.current=p,n(z(o.fill)));let y=We(()=>l,[O(l)]);return h(_e,{value:y,allowClear:!0,mode:["single","gradient"],onOpenChange:s=>{r.current=s,s||(d.current=O(o.fill))},onChange:s=>{n(s)},onChangeComplete:s=>{let c=s.toCssString();if(c.includes("gradient")){let u=je(c);t.editor?.objectsHandler.update({fill:u})}else t.editor?.objectsHandler.update({fill:c})}})}),vn=ut(({store:t,element:e})=>h(yn,{trigger:"click",content:ot("div",{style:{width:270},children:[ot("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:15},children:[h(Y,{color:e?.strokeWidth===0?"primary":"default",variant:"filled",onClick:()=>{t.editor?.objectsHandler.update({strokeWidth:0}),t._triggerUpdate()},children:h(hn,{size:16})}),h(Y,{color:e?.strokeWidth&&e?.strokeDashArray?.length===0?"primary":"default",variant:"filled",onClick:()=>{t.editor?.objectsHandler.update({strokeDashArray:[],strokeWidth:e?.strokeWidth||10,stroke:e?.stroke||"#000000"}),t._triggerUpdate()},children:h("svg",{width:16,height:16,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:h("line",{x2:24,y1:"50%",y2:"50%",stroke:"currentColor",strokeWidth:"2"})})}),h(Y,{color:e?.strokeWidth&&Array.isArray(e.strokeDashArray)&&e.strokeDashArray[0]===4?"primary":"default",variant:"filled",onClick:()=>{t.editor?.objectsHandler.update({strokeDashArray:[4,1],strokeWidth:e?.strokeWidth||10,stroke:e?.stroke||"#000000"}),t._triggerUpdate()},children:h("svg",{width:16,height:16,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:h("line",{x1:"-1",x2:"25",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"12 2",strokeWidth:"2"})})}),h(Y,{color:e?.strokeWidth&&Array.isArray(e.strokeDashArray)&&e.strokeDashArray[0]===2?"primary":"default",variant:"filled",onClick:()=>{t.editor?.objectsHandler.update({strokeDashArray:[2,1],strokeWidth:e?.strokeWidth||10,stroke:e?.stroke||"#000000"}),t._triggerUpdate()},children:h("svg",{width:16,height:16,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:h("line",{x1:"1",x2:"23",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"6 2",strokeWidth:"2"})})}),h(Y,{color:e?.strokeWidth&&Array.isArray(e.strokeDashArray)&&e.strokeDashArray[0]===1?"primary":"default",variant:"filled",onClick:()=>{t.editor?.objectsHandler.update({strokeDashArray:[1,1],strokeWidth:e?.strokeWidth||10,stroke:e?.stroke||"#000000"}),t._triggerUpdate()},children:h("svg",{width:16,height:16,viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:h("line",{x1:"1",x2:"23",y1:"50%",y2:"50%",stroke:"currentColor",strokeDasharray:"2 2",strokeWidth:"2"})})})]}),ot("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:5},children:[h("div",{children:i("toolbar.strokeWidth")}),h("div",{children:h(Ve,{value:e?.strokeWidth,style:{width:60},min:0,max:Math.round(Math.min(e?.width,e?.height)/2),onChange:o=>{t.editor?.objectsHandler.update({strokeWidth:o}),t._triggerUpdate()}})})]}),h(Oe,{value:e?.strokeWidth,onChange:o=>{t.editor?.objectsHandler.update({strokeWidth:o}),t._triggerUpdate()},min:0,max:Math.round(Math.min(e?.width,e?.height)/2)}),e?.type==="rect"&&ot(Fn,{children:[ot("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:15,paddingBottom:5},children:[h("div",{children:i("toolbar.cornerRadius")}),h("div",{children:h(Ve,{value:e?.rx,style:{width:60},min:0,max:Math.round(Math.min(e?.width,e?.height)/2),onChange:o=>{t.editor?.objectsHandler.update({rx:o,ry:o}),t._triggerUpdate()}})})]}),h(Oe,{value:e?.rx,onChange:o=>{t.editor?.objectsHandler.update({rx:o,ry:o}),t._triggerUpdate()},min:0,max:Math.round(Math.min(e?.width,e?.height)/2)})]})]}),children:h(Y,{type:"text",styles:{root:{padding:"0 7px"}},icon:h(bn,{size:16,style:{display:"flex"}}),children:i("toolbar.strokeSettings")})})),kn=ut(({store:t,elements:e})=>{let o=e[0],[l,n]=Me(()=>z(o?.stroke)),r=mt(!1),d=mt(O(o?.stroke)),p=O(o?.stroke);p!==d.current&&!r.current&&(d.current=p,n(z(o?.stroke)));let y=We(()=>l,[O(l)]);return o?.strokeWidth?h(_e,{value:y,allowClear:!0,mode:["single","gradient"],onOpenChange:s=>{r.current=s,s||(d.current=O(o.stroke))},onChange:s=>{n(s)},onChangeComplete:s=>{let c=s.toCssString();if(c.includes("gradient")){let u=je(c);t.editor?.objectsHandler.update({stroke:u})}else t.editor?.objectsHandler.update({stroke:c})}}):null}),Cn={FigureFill:xn,FigureStroke:kn,FigureSettings:vn,FigureFilters:D},X=ut(({store:t,components:e})=>{let o=t.selectedElements[0],n=W({type:"figure",usedItems:["FigureFill","FigureStroke","FigureSettings","FigureFilters"],components:e});return h(_,{items:n,itemRender:r=>{let d=e[r]||Cn[r];return d&&h(d,{elements:t.selectedElements,element:o,store:t},r)}})});import{Button as De,Divider as wn,Space as Bn,theme as Hn}from"antd";import{Check as Pn,X as En}from"lucide-react";import{Fragment as Nn,jsx as k,jsxs as K}from"react/jsx-runtime";var In=jt.div`
4
+ white-space: nowrap;
5
+
6
+ height: 50px;
7
+ padding: 0 15px;
8
+ position: relative;
9
+ width: 100%;
10
+ z-index: 10;
11
+ `,zn=jt.div`
12
+ width: 100%;
13
+ height: 100%;
14
+ `,It=jt.div`
15
+ align-items: center;
16
+ display: flex;
17
+ height: 50px;
18
+ `,Rn=({store:t})=>K(Bn,{style:{height:50},children:[K(De,{onClick:()=>{t.editor?.imageCropHandler.cropImg.onDeselectEvent()},children:[k(Pn,{size:16}),"\u5B8C\u6210"]}),K(De,{onClick:()=>{t.editor?.imageCropHandler.cropCancel()},children:[k(En,{size:16}),"\u53D6\u6D88"]})]}),gt={textbox:ie,image:Ae,path:X,rect:X,circle:X,ellipse:X,triangle:X,cropimage:Rn,many:Ne};function wa(t,e){gt[t]=e}var An=Tn(({store:t,downloadButtonEnabled:e,components:o={}})=>{let l=new Set(t.selectedElements.map(E=>E?.type)).size===1,n=t.selectedElements.length===1,r=t.selectedElements[0],d=t.selectedElements.length&&t.selectedElements.every(E=>E?.locked),p=n&&r?.isCropping,{token:y}=Hn.useToken(),s=n&&gt[r?.type];l?s=gt[r?.type]:t.selectedElements.length>1&&(s=gt.many);let c=Sn(o);(Object.keys(o).some(E=>o[E]!==c.current[E])||Object.keys(c.current).some(E=>!(E in o)))&&(c.current=Object.assign({},o));let u=c.current,B=u?.ActionControls||(e?Qt:null),H=u?.Position||de,I=u?.Opacity||me,P=u?.Lock||fe,M=u?.Duplicate||be,J=u?.Remove||xe,ft=u?.History||se,rt=u?.Group||Ce;return k(In,{className:"bp5-navbar design-toolbar",style:{backgroundColor:y.colorBgContainer,color:y.colorText},children:K(zn,{children:[!p&&k(ft,{store:t}),!r&&k($t,{store:t,components:u}),s&&!d&&k(s,{store:t,components:u}),!p&&K(It,{style:{float:"right"},children:[k(rt,{store:t}),k(H,{store:t}),!d&&k(I,{store:t}),k(P,{store:t}),k(M,{store:t}),k(J,{store:t}),B&&K(Nn,{children:[k(wn,{orientation:"vertical",style:{margin:"0 15px"}}),k(B,{store:t})]})]})]})})}),Ba=An;export{It as NavBarGroup,An as Toolbar,Ba as default,wa as registerToolbarComponent};
@@ -1,11 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { StoreType } from '../model/store.js';
2
+ import { S as StoreType } from '../store-DfmY1m2j.js';
3
3
  import 'fabric';
4
4
  import 'mobx-state-tree/dist/internal';
5
5
  import 'mobx-state-tree';
6
6
  import '@ydesign/core';
7
- import '../utils/fonts.js';
8
- import 'mobx';
9
7
 
10
8
  declare const ZoomGroup: (({ store }: {
11
9
  store: StoreType;
@@ -1,12 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { StoreType } from '../model/store.js';
3
+ import { S as StoreType } from '../store-DfmY1m2j.js';
4
4
  import 'fabric';
5
5
  import 'mobx-state-tree/dist/internal';
6
6
  import 'mobx-state-tree';
7
7
  import '@ydesign/core';
8
- import '../utils/fonts.js';
9
- import 'mobx';
10
8
 
11
9
  interface TopbarProps {
12
10
  store: StoreType;