@ydesign/react-editor 0.0.2 → 0.0.4

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 (137) hide show
  1. package/LICENSE +1 -1
  2. package/dist/app.css +2 -2
  3. package/dist/app.d.ts +4 -4
  4. package/dist/app.js +2 -2
  5. package/dist/canvas/workspace-canvas.d.ts +4 -0
  6. package/dist/canvas/workspace.d.ts +4 -0
  7. package/dist/chunk-3TO57JPN.js +1 -0
  8. package/dist/chunk-3TTTJUTT.js +1 -0
  9. package/dist/chunk-4FFLRF6N.js +1 -0
  10. package/dist/{chunk-V5RJX32O.js → chunk-4HEMGHOQ.js} +1 -1
  11. package/dist/chunk-4LUZF4CB.js +2 -0
  12. package/dist/chunk-53KFBGJB.js +16 -0
  13. package/dist/chunk-5C2MNUBC.js +1 -0
  14. package/dist/chunk-7NNOHYKX.js +15 -0
  15. package/dist/chunk-AGNRQAPA.js +1 -0
  16. package/dist/chunk-APQPKBER.js +1 -0
  17. package/dist/chunk-CB23VFSC.js +1 -0
  18. package/dist/chunk-CMH73CYQ.js +27 -0
  19. package/dist/chunk-COQ4GO5N.js +1 -0
  20. package/dist/{chunk-GMISU6MD.js → chunk-CS6Z4TQU.js} +1 -1
  21. package/dist/chunk-EOBIVNFF.js +1 -0
  22. package/dist/chunk-FXO52BV7.js +1 -0
  23. package/dist/chunk-IQ7O55C5.js +42 -0
  24. package/dist/chunk-KLZXBPXI.js +1 -0
  25. package/dist/chunk-LCE6Z46D.js +3 -0
  26. package/dist/chunk-M4S26KQG.js +1 -0
  27. package/dist/chunk-MQZE5LZU.js +1 -0
  28. package/dist/chunk-MXZ6RXT3.js +1 -0
  29. package/dist/chunk-OV74NBJ5.js +45 -0
  30. package/dist/{chunk-FIAIYSJ7.js → chunk-PSXS4WMN.js} +1 -1
  31. package/dist/chunk-Q2L6VKFI.js +9 -0
  32. package/dist/chunk-RVXI723F.js +1 -0
  33. package/dist/{chunk-LW2W4B2N.js → chunk-VXTF2OL2.js} +3 -3
  34. package/dist/{chunk-JWQ2DUXA.js → chunk-WCHGSVUC.js} +1 -1
  35. package/dist/chunk-WGX437MN.js +9 -0
  36. package/dist/chunk-XK24AOVW.js +54 -0
  37. package/dist/chunk-XM3RPIUS.js +9 -0
  38. package/dist/chunk-XPAHGJGK.js +1 -0
  39. package/dist/{chunk-3HQUN5MA.js → chunk-YRJUN267.js} +1 -1
  40. package/dist/config.d.ts +52 -1
  41. package/dist/config.js +1 -0
  42. package/dist/hooks/use-duplicate-element.d.ts +4 -0
  43. package/dist/hooks/use-lock.d.ts +4 -0
  44. package/dist/hooks/use-remove-element.d.ts +4 -0
  45. package/dist/lib/utils.js +1 -1
  46. package/dist/model/store.d.ts +64 -38
  47. package/dist/model/store.js +1 -1
  48. package/dist/project.d.ts +10 -1
  49. package/dist/project.js +1 -1
  50. package/dist/side-panel/background-panel.d.ts +10 -3
  51. package/dist/side-panel/background-panel.js +1 -1
  52. package/dist/side-panel/images-grid.d.ts +25 -0
  53. package/dist/side-panel/images-grid.js +1 -0
  54. package/dist/side-panel/index.d.ts +4 -0
  55. package/dist/side-panel/index.js +1 -1
  56. package/dist/side-panel/layers-panel.d.ts +8 -2
  57. package/dist/side-panel/layers-panel.js +1 -1
  58. package/dist/side-panel/photos-panel.d.ts +4 -0
  59. package/dist/side-panel/shapes-panel.d.ts +4 -0
  60. package/dist/side-panel/shapes-panel.js +1 -1
  61. package/dist/side-panel/side-panel.d.ts +4 -0
  62. package/dist/side-panel/side-panel.js +1 -1
  63. package/dist/side-panel/size-panel.d.ts +8 -2
  64. package/dist/side-panel/size-panel.js +1 -1
  65. package/dist/side-panel/tab-button.js +1 -1
  66. package/dist/side-panel/templates-panel.d.ts +8 -2
  67. package/dist/side-panel/templates-panel.js +1 -1
  68. package/dist/side-panel/text-panel.d.ts +8 -2
  69. package/dist/side-panel/text-panel.js +1 -1
  70. package/dist/side-panel/upload-panel.d.ts +4 -0
  71. package/dist/toolbar/default-toolbar.d.ts +10 -1
  72. package/dist/toolbar/default-toolbar.js +1 -1
  73. package/dist/toolbar/download-button.d.ts +4 -0
  74. package/dist/toolbar/duplicate-button.d.ts +4 -0
  75. package/dist/toolbar/element-container.js +1 -1
  76. package/dist/toolbar/figure-toolbar.d.ts +33 -0
  77. package/dist/toolbar/figure-toolbar.js +1 -0
  78. package/dist/toolbar/filters-picker.d.ts +4 -0
  79. package/dist/toolbar/filters-picker.js +1 -1
  80. package/dist/toolbar/flip-button.d.ts +4 -0
  81. package/dist/toolbar/flip-button.js +1 -1
  82. package/dist/toolbar/group-button.d.ts +4 -0
  83. package/dist/toolbar/group-button.js +1 -1
  84. package/dist/toolbar/history-buttons.d.ts +4 -0
  85. package/dist/toolbar/history-buttons.js +1 -1
  86. package/dist/toolbar/image-eraser-pen.d.ts +4 -1
  87. package/dist/toolbar/image-eraser-pen.js +1 -1
  88. package/dist/toolbar/image-remove-background.d.ts +4 -1
  89. package/dist/toolbar/image-remove-background.js +1 -1
  90. package/dist/toolbar/image-toolbar.d.ts +12 -2
  91. package/dist/toolbar/image-toolbar.js +1 -1
  92. package/dist/toolbar/lock-button.d.ts +4 -0
  93. package/dist/toolbar/opacity-picker.d.ts +4 -0
  94. package/dist/toolbar/opacity-picker.js +1 -1
  95. package/dist/toolbar/position-picker.d.ts +4 -0
  96. package/dist/toolbar/remove-button.d.ts +4 -0
  97. package/dist/toolbar/text-ai-write.js +1 -1
  98. package/dist/toolbar/text-toolbar.d.ts +4 -0
  99. package/dist/toolbar/text-toolbar.js +1 -1
  100. package/dist/toolbar/toolbar.d.ts +6 -2
  101. package/dist/toolbar/toolbar.js +1 -1
  102. package/dist/toolbar/zoom-buttons.d.ts +4 -0
  103. package/dist/toolbar/zoom-buttons.js +2 -2
  104. package/dist/topbar/file-menu.d.ts +14 -0
  105. package/dist/topbar/file-menu.js +1 -0
  106. package/dist/topbar/topbar.d.ts +16 -0
  107. package/dist/topbar/topbar.js +28 -0
  108. package/dist/utils/figure-to-svg.d.ts +36 -0
  109. package/dist/utils/figure-to-svg.js +1 -0
  110. package/dist/utils/image.d.ts +9 -3
  111. package/dist/utils/image.js +1 -1
  112. package/dist/utils/index.js +1 -1
  113. package/dist/utils/screen.js +1 -1
  114. package/dist/utils/svg.d.ts +3 -0
  115. package/dist/utils/svg.js +1 -0
  116. package/dist/utils/text.d.ts +3 -0
  117. package/dist/utils/text.js +1 -0
  118. package/dist/utils/unit.d.ts +18 -0
  119. package/dist/utils/unit.js +1 -0
  120. package/package.json +12 -10
  121. package/dist/chunk-2AWYWIIK.js +0 -1
  122. package/dist/chunk-55FJG4FK.js +0 -1
  123. package/dist/chunk-5MWZMSER.js +0 -1
  124. package/dist/chunk-6LFGFFHI.js +0 -1
  125. package/dist/chunk-7LU5UGIG.js +0 -16
  126. package/dist/chunk-E7ZSWHPU.js +0 -1
  127. package/dist/chunk-EMAFC3HG.js +0 -1
  128. package/dist/chunk-JW76IC3E.js +0 -1
  129. package/dist/chunk-M33EDDXB.js +0 -1
  130. package/dist/chunk-QJBRJELT.js +0 -1
  131. package/dist/chunk-TE6HYOIP.js +0 -7
  132. package/dist/chunk-TX4BNXQC.js +0 -1
  133. package/dist/chunk-U7HIFGXC.js +0 -1
  134. package/dist/chunk-V6ZZKUTN.js +0 -1
  135. package/dist/chunk-WIM26GEM.js +0 -1
  136. package/dist/chunk-XDLFQXMN.js +0 -54
  137. package/dist/chunk-XZAP76LL.js +0 -1
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e}from"../chunk-XPAHGJGK.js";import"../chunk-4HEMGHOQ.js";import"../chunk-YRJUN267.js";import"../chunk-RVXI723F.js";import"../chunk-WCHGSVUC.js";import"../chunk-O2XFH626.js";export{b as FigureFill,c as FigureSettings,d as FigureStroke,e as FigureToolbar,a as getFillKey};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
3
  import { FabricObject } from '@ydesign/core';
4
+ import 'fabric';
5
+ import 'mobx-state-tree/dist/internal';
4
6
  import 'mobx-state-tree';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const FiltersPicker: (({ element, store, elements }: {
7
11
  elements?: Array<FabricObject>;
@@ -1 +1 @@
1
- import{a}from"../chunk-V5RJX32O.js";import"../chunk-E7ZSWHPU.js";import"../chunk-O2XFH626.js";export{a as FiltersPicker};
1
+ import{a}from"../chunk-4HEMGHOQ.js";import"../chunk-RVXI723F.js";import"../chunk-O2XFH626.js";export{a as FiltersPicker};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { FabricObject } from '@ydesign/core';
3
3
  import { StoreType } from '../model/store.js';
4
+ import 'fabric';
5
+ import 'mobx-state-tree/dist/internal';
4
6
  import 'mobx-state-tree';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const FlipButton: ({ element, store }: {
7
11
  elements?: Array<FabricObject>;
@@ -1 +1 @@
1
- import{a}from"../chunk-GMISU6MD.js";import"../chunk-O2XFH626.js";export{a as FlipButton};
1
+ import{a}from"../chunk-CS6Z4TQU.js";import"../chunk-O2XFH626.js";export{a as FlipButton};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const GroupButton: (({ store }: {
7
11
  store: StoreType;
@@ -1 +1 @@
1
- import{a}from"../chunk-V6ZZKUTN.js";import"../chunk-O2XFH626.js";export{a as GroupButton};
1
+ import{a}from"../chunk-4FFLRF6N.js";import"../chunk-O2XFH626.js";export{a as GroupButton};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const HistoryButtons: (({ store }: {
7
11
  store: StoreType;
@@ -1 +1 @@
1
- import{e as a}from"../chunk-7LU5UGIG.js";import"../chunk-R6Z6F447.js";import"../chunk-TE6HYOIP.js";import"../chunk-FIAIYSJ7.js";import"../chunk-5MWZMSER.js";import"../chunk-2AWYWIIK.js";import"../chunk-U7HIFGXC.js";import"../chunk-GYDTKPW5.js";import"../chunk-XRRO2RT7.js";import"../chunk-JW76IC3E.js";import"../chunk-MNACXCF5.js";import"../chunk-XZAP76LL.js";import"../chunk-B35ZYWID.js";import"../chunk-H67HTXU4.js";import"../chunk-3HQUN5MA.js";import"../chunk-V5RJX32O.js";import"../chunk-GMISU6MD.js";import"../chunk-V6ZZKUTN.js";import"../chunk-OQ6HU62L.js";import"../chunk-EMAFC3HG.js";import"../chunk-E7ZSWHPU.js";import"../chunk-IUFYYEGO.js";import"../chunk-JWQ2DUXA.js";import"../chunk-WJT6VPDR.js";import"../chunk-JMIN2XMC.js";import"../chunk-75WC3GVB.js";import"../chunk-O2XFH626.js";export{a as HistoryButtons};
1
+ import{e as a}from"../chunk-53KFBGJB.js";import"../chunk-MNACXCF5.js";import"../chunk-R6Z6F447.js";import"../chunk-COQ4GO5N.js";import"../chunk-PSXS4WMN.js";import"../chunk-4FFLRF6N.js";import"../chunk-LCE6Z46D.js";import"../chunk-CB23VFSC.js";import"../chunk-3TO57JPN.js";import"../chunk-M4S26KQG.js";import"../chunk-EOBIVNFF.js";import"../chunk-GYDTKPW5.js";import"../chunk-XRRO2RT7.js";import"../chunk-3TTTJUTT.js";import"../chunk-B35ZYWID.js";import"../chunk-H67HTXU4.js";import"../chunk-XPAHGJGK.js";import"../chunk-4HEMGHOQ.js";import"../chunk-CS6Z4TQU.js";import"../chunk-IUFYYEGO.js";import"../chunk-MXZ6RXT3.js";import"../chunk-APQPKBER.js";import"../chunk-OQ6HU62L.js";import"../chunk-YRJUN267.js";import"../chunk-RVXI723F.js";import"../chunk-WCHGSVUC.js";import"../chunk-MQZE5LZU.js";import"../chunk-7NNOHYKX.js";import"../chunk-WJT6VPDR.js";import"../chunk-JMIN2XMC.js";import"../chunk-75WC3GVB.js";import"../chunk-O2XFH626.js";export{a as HistoryButtons};
@@ -1,5 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { FabricImage } from '@ydesign/core';
2
3
 
3
- declare const ImageEraserPen: () => react_jsx_runtime.JSX.Element;
4
+ declare const ImageEraserPen: ({ element }: {
5
+ element: FabricImage;
6
+ }) => react_jsx_runtime.JSX.Element;
4
7
 
5
8
  export { ImageEraserPen };
@@ -1 +1 @@
1
- import{a}from"../chunk-2AWYWIIK.js";import"../chunk-O2XFH626.js";export{a as ImageEraserPen};
1
+ import{a}from"../chunk-M4S26KQG.js";import"../chunk-O2XFH626.js";export{a as ImageEraserPen};
@@ -1,5 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { FabricImage } from '@ydesign/core';
2
3
 
3
- declare const ImageRemoveBackground: () => react_jsx_runtime.JSX.Element;
4
+ declare const ImageRemoveBackground: ({ element }: {
5
+ element: FabricImage;
6
+ }) => react_jsx_runtime.JSX.Element;
4
7
 
5
8
  export { ImageRemoveBackground };
@@ -1 +1 @@
1
- import{a}from"../chunk-U7HIFGXC.js";import"../chunk-O2XFH626.js";export{a as ImageRemoveBackground};
1
+ import{a}from"../chunk-EOBIVNFF.js";import"../chunk-O2XFH626.js";export{a as ImageRemoveBackground};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { FabricImage } from '@ydesign/core';
3
3
  import { StoreType } from '../model/store.js';
4
+ import 'fabric';
5
+ import 'mobx-state-tree/dist/internal';
4
6
  import 'mobx-state-tree';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  type Props = {
7
11
  store: StoreType;
@@ -11,10 +15,16 @@ declare const ImageFitToBackground: ({ element, store }: {
11
15
  element: FabricImage;
12
16
  store: StoreType;
13
17
  }) => react_jsx_runtime.JSX.Element;
14
- declare const ImageCrop: (() => react_jsx_runtime.JSX.Element) & {
18
+ declare const ImageCrop: (({ element, store }: {
19
+ element: FabricImage;
20
+ store: StoreType;
21
+ }) => react_jsx_runtime.JSX.Element) & {
15
22
  displayName: string;
16
23
  };
17
- declare const ImageClip: (() => react_jsx_runtime.JSX.Element) & {
24
+ declare const ImageClip: (({ element, store }: {
25
+ element: FabricImage;
26
+ store: StoreType;
27
+ }) => react_jsx_runtime.JSX.Element) & {
18
28
  displayName: string;
19
29
  };
20
30
  declare const ImageToolbar: (({ store, components }: Props) => react_jsx_runtime.JSX.Element) & {
@@ -1 +1 @@
1
- import{a,b,c,d,e}from"../chunk-5MWZMSER.js";import"../chunk-2AWYWIIK.js";import"../chunk-U7HIFGXC.js";import"../chunk-3HQUN5MA.js";import"../chunk-V5RJX32O.js";import"../chunk-GMISU6MD.js";import"../chunk-EMAFC3HG.js";import"../chunk-E7ZSWHPU.js";import"../chunk-JWQ2DUXA.js";import"../chunk-O2XFH626.js";export{c as ImageClip,b as ImageCrop,a as ImageFitToBackground,d as ImageToolbar,e as default};
1
+ import{a,b,c,d,e}from"../chunk-LCE6Z46D.js";import"../chunk-CB23VFSC.js";import"../chunk-3TO57JPN.js";import"../chunk-M4S26KQG.js";import"../chunk-EOBIVNFF.js";import"../chunk-4HEMGHOQ.js";import"../chunk-CS6Z4TQU.js";import"../chunk-MXZ6RXT3.js";import"../chunk-YRJUN267.js";import"../chunk-RVXI723F.js";import"../chunk-WCHGSVUC.js";import"../chunk-MQZE5LZU.js";import"../chunk-7NNOHYKX.js";import"../chunk-O2XFH626.js";export{c as ImageClip,b as ImageCrop,a as ImageFitToBackground,d as ImageToolbar,e as default};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const LockButton: (({ store }: {
7
11
  store: StoreType;
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const OpacityPicker: (({ store }: {
7
11
  store: StoreType;
@@ -1 +1 @@
1
- import{a}from"../chunk-JW76IC3E.js";import"../chunk-O2XFH626.js";export{a as OpacityPicker};
1
+ import{a}from"../chunk-3TTTJUTT.js";import"../chunk-O2XFH626.js";export{a as OpacityPicker};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const PositionPicker: (({ store }: {
7
11
  store: StoreType;
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const RemoveButton: (({ store }: {
7
11
  store: StoreType;
@@ -1 +1 @@
1
- import{a}from"../chunk-FIAIYSJ7.js";import"../chunk-O2XFH626.js";export{a as TextAiWrite};
1
+ import{a}from"../chunk-PSXS4WMN.js";import"../chunk-O2XFH626.js";export{a as TextAiWrite};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  type PageProps = {
7
11
  store: StoreType;
@@ -1 +1 @@
1
- import{a,b,c}from"../chunk-TE6HYOIP.js";import"../chunk-FIAIYSJ7.js";import"../chunk-3HQUN5MA.js";import"../chunk-V5RJX32O.js";import"../chunk-E7ZSWHPU.js";import"../chunk-JWQ2DUXA.js";import"../chunk-WJT6VPDR.js";import"../chunk-O2XFH626.js";export{a as ALIGN_OPTIONS,b as TextToolbar,c as default};
1
+ import{a,b,c}from"../chunk-COQ4GO5N.js";import"../chunk-PSXS4WMN.js";import"../chunk-4HEMGHOQ.js";import"../chunk-YRJUN267.js";import"../chunk-RVXI723F.js";import"../chunk-WCHGSVUC.js";import"../chunk-WJT6VPDR.js";import"../chunk-O2XFH626.js";export{a as ALIGN_OPTIONS,b as TextToolbar,c as default};
@@ -1,12 +1,16 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as node_modules_styled_components_dist_types from 'node_modules/styled-components/dist/types';
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
5
  import { StoreType } from '../model/store.js';
6
+ import 'fabric';
7
+ import 'mobx-state-tree/dist/internal';
6
8
  import 'mobx-state-tree';
7
9
  import '@ydesign/core';
10
+ import '../utils/fonts.js';
11
+ import 'mobx';
8
12
 
9
- declare const NavBarGroup: node_modules_styled_components_dist_types.IStyledComponentBase<"web", styled_components.FastOmit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
13
+ declare const NavBarGroup: styled_components_dist_types.IStyledComponentBase<"web", styled_components.FastOmit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
10
14
  declare function registerToolbarComponent(type: string, reactComponent: any): void;
11
15
  type ToolbarProps = {
12
16
  store: StoreType;
@@ -1 +1 @@
1
- import{a,b,c,d}from"../chunk-7LU5UGIG.js";import"../chunk-R6Z6F447.js";import"../chunk-TE6HYOIP.js";import"../chunk-FIAIYSJ7.js";import"../chunk-5MWZMSER.js";import"../chunk-2AWYWIIK.js";import"../chunk-U7HIFGXC.js";import"../chunk-GYDTKPW5.js";import"../chunk-XRRO2RT7.js";import"../chunk-JW76IC3E.js";import"../chunk-MNACXCF5.js";import"../chunk-XZAP76LL.js";import"../chunk-B35ZYWID.js";import"../chunk-H67HTXU4.js";import"../chunk-3HQUN5MA.js";import"../chunk-V5RJX32O.js";import"../chunk-GMISU6MD.js";import"../chunk-V6ZZKUTN.js";import"../chunk-OQ6HU62L.js";import"../chunk-EMAFC3HG.js";import"../chunk-E7ZSWHPU.js";import"../chunk-IUFYYEGO.js";import"../chunk-JWQ2DUXA.js";import"../chunk-WJT6VPDR.js";import"../chunk-JMIN2XMC.js";import"../chunk-75WC3GVB.js";import"../chunk-O2XFH626.js";export{a as NavBarGroup,c as Toolbar,d as default,b as registerToolbarComponent};
1
+ import{a,b,c,d}from"../chunk-53KFBGJB.js";import"../chunk-MNACXCF5.js";import"../chunk-R6Z6F447.js";import"../chunk-COQ4GO5N.js";import"../chunk-PSXS4WMN.js";import"../chunk-4FFLRF6N.js";import"../chunk-LCE6Z46D.js";import"../chunk-CB23VFSC.js";import"../chunk-3TO57JPN.js";import"../chunk-M4S26KQG.js";import"../chunk-EOBIVNFF.js";import"../chunk-GYDTKPW5.js";import"../chunk-XRRO2RT7.js";import"../chunk-3TTTJUTT.js";import"../chunk-B35ZYWID.js";import"../chunk-H67HTXU4.js";import"../chunk-XPAHGJGK.js";import"../chunk-4HEMGHOQ.js";import"../chunk-CS6Z4TQU.js";import"../chunk-IUFYYEGO.js";import"../chunk-MXZ6RXT3.js";import"../chunk-APQPKBER.js";import"../chunk-OQ6HU62L.js";import"../chunk-YRJUN267.js";import"../chunk-RVXI723F.js";import"../chunk-WCHGSVUC.js";import"../chunk-MQZE5LZU.js";import"../chunk-7NNOHYKX.js";import"../chunk-WJT6VPDR.js";import"../chunk-JMIN2XMC.js";import"../chunk-75WC3GVB.js";import"../chunk-O2XFH626.js";export{a as NavBarGroup,c as Toolbar,d as default,b as registerToolbarComponent};
@@ -1,7 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
3
5
  import 'mobx-state-tree';
4
6
  import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
5
9
 
6
10
  declare const ZoomGroup: (({ store }: {
7
11
  store: StoreType;
@@ -3,10 +3,10 @@ import"../chunk-O2XFH626.js";import{observer as S}from"mobx-react-lite";import m
3
3
  height: 0px;
4
4
  `,k=m.div`
5
5
  position: absolute;
6
- bottom: 10px;
6
+ bottom: 20px;
7
7
  width: auto;
8
8
  left: 50%;
9
9
  transform: translateX(-50%);
10
10
  border-radius: 5px;
11
11
  overflow: hidden;
12
- `,i=[.1,.25,.5,.75,1,1.5,2,3],y=i[i.length-1],b=i[0],v=S(({store:t})=>{let p=Math.max(y,t.scaleToFit),s=Math.min(b,t.scaleToFit),d=t.scale<p,c=t.scale>s,u=i.map((r,C)=>({key:C,label:o("div",{style:{minWidth:80,textAlign:"center"},onClick:()=>{t.editor?.zoomHandler.zoomToRatio(r)},children:`${Math.round(100*r)}%`})}));return n(B,{children:[n(a.Compact,{children:[o(e,{disabled:!c,onClick:()=>t.editor?.zoomHandler.zoomOut(),children:o(f,{size:16})}),o(M,{menu:{items:u},placement:"top",children:n(e,{children:[Math.round(100*t.scale),"%"]})}),o(e,{disabled:!d,onClick:()=>t.editor?.zoomHandler.zoomIn(),children:o(h,{size:16})})]}),n(a.Compact,{style:{marginLeft:10},children:[o(l,{title:"\u9002\u5408\u5C4F\u5E55",children:o(e,{onClick:()=>t.editor?.workareaHandler.auto(),children:o(x,{size:16})})}),o(l,{title:"\u586B\u6EE1\u5C4F\u5E55",children:o(e,{onClick:()=>t.editor?.workareaHandler.one(),children:o(z,{size:16})})})]})]})}),A=({store:t})=>o(T,{children:o(k,{children:o(v,{store:t})})}),E=A;export{A as ZoomButtons,v as ZoomGroup,E as default};
12
+ `,i=[.1,.25,.5,.75,1,1.5,2,3],y=i[i.length-1],b=i[0],v=S(({store:t})=>{let p=Math.max(y,t.scaleToFit),s=Math.min(b,t.scaleToFit),d=t.scale<p,c=t.scale>s,u=i.map((r,C)=>({key:C,label:o("div",{style:{minWidth:80,textAlign:"center"},onClick:()=>{t.editor?.zoomHandler.zoomToRatio(r)},children:`${Math.round(100*r)}%`})}));return n(B,{children:[n(a.Compact,{children:[o(e,{disabled:!c,onClick:()=>t.editor?.zoomHandler.zoomIn(),children:o(f,{size:16})}),o(M,{menu:{items:u},placement:"top",children:n(e,{children:[Math.round(100*t.scale),"%"]})}),o(e,{disabled:!d,onClick:()=>t.editor?.zoomHandler.zoomOut(),children:o(h,{size:16})})]}),n(a.Compact,{style:{marginLeft:10},children:[o(l,{title:"\u9002\u5408\u5C4F\u5E55",children:o(e,{onClick:()=>t.editor?.workareaHandler.auto(),children:o(x,{size:16})})}),o(l,{title:"\u586B\u6EE1\u5C4F\u5E55",children:o(e,{onClick:()=>t.editor?.workareaHandler.one(),children:o(z,{size:16})})})]})]})}),A=({store:t})=>o(T,{children:o(k,{children:o(v,{store:t})})}),E=A;export{A as ZoomButtons,v as ZoomGroup,E as default};
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
5
+ import 'mobx-state-tree';
6
+ import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
9
+
10
+ declare const FileMenu: ({ store }: {
11
+ store: StoreType;
12
+ }) => react_jsx_runtime.JSX.Element;
13
+
14
+ export { FileMenu };
@@ -0,0 +1 @@
1
+ import{a}from"../chunk-FXO52BV7.js";import"../chunk-O2XFH626.js";export{a as FileMenu};
@@ -0,0 +1,16 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { StoreType } from '../model/store.js';
3
+ import 'fabric';
4
+ import 'mobx-state-tree/dist/internal';
5
+ import 'mobx-state-tree';
6
+ import '@ydesign/core';
7
+ import '../utils/fonts.js';
8
+ import 'mobx';
9
+
10
+ declare const Topbar: (({ store }: {
11
+ store: StoreType;
12
+ }) => react_jsx_runtime.JSX.Element) & {
13
+ displayName: string;
14
+ };
15
+
16
+ export { Topbar };
@@ -0,0 +1,28 @@
1
+ import{a as n}from"../chunk-B35ZYWID.js";import{a}from"../chunk-FXO52BV7.js";import{b as r}from"../chunk-KLZXBPXI.js";import"../chunk-WJT6VPDR.js";import"../chunk-O2XFH626.js";import i from"styled-components";import{observer as p}from"mobx-react-lite";import{Input as l,Tooltip as s,Button as g}from"antd";import{CloudUpload as h}from"lucide-react";import{jsx as t,jsxs as o}from"react/jsx-runtime";var m=i("div")`
2
+ white-space: nowrap;
3
+ height: 50px;
4
+ padding: 0 15px;
5
+ position: relative;
6
+ width: 100%;
7
+ z-index: 10;
8
+
9
+ @media screen and (max-width: 500px) {
10
+ overflow-x: auto;
11
+ overflow-y: hidden;
12
+ max-width: 100vw;
13
+ }
14
+ `,f=i("div")`
15
+ @media screen and (max-width: 500px) {
16
+ display: flex;
17
+ }
18
+ `,c=i("div")`
19
+ float: left;
20
+ display: flex;
21
+ align-items: center;
22
+ height: 50px;
23
+ `,v=i("div")`
24
+ float: right;
25
+ display: flex;
26
+ align-items: center;
27
+ height: 50px;
28
+ `,x=p(({project:e})=>(console.log(e.status),t(s,{title:"\u4FDD\u5B58\u4F5C\u56FE\u8BB0\u5F55",children:t(g,{type:"text",style:{marginLeft:16},icon:t(h,{size:16,style:{display:"flex"}}),children:"Save"})}))),j=p(({store:e})=>{let d=r();return t(m,{className:"topbar border-b-1 border-b-gray-200",children:o(f,{children:[o(c,{children:[o("div",{style:{display:"flex",alignItems:"center",gap:10,paddingRight:16,paddingLeft:16,userSelect:"none"},children:[t("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t("rect",{width:"20",height:"20",fill:"rgb(22, 119, 255)"})}),t("span",{style:{fontWeight:500,fontSize:20,lineHeight:"100%",letterSpacing:.25},children:"Ydesign"})]}),t(a,{store:e}),t("div",{style:{paddingLeft:10,maxWidth:200},children:t(l,{placeholder:"Design name"})}),o("div",{style:{paddingLeft:16},className:"text-gray-600",children:[Math.round(e.width)," x ",Math.round(e.height)," px"]}),t(x,{project:d})]}),t(v,{children:t(n,{store:e})})]})})});export{j as Topbar};
@@ -0,0 +1,36 @@
1
+ interface SizeParams {
2
+ width: number;
3
+ height: number;
4
+ }
5
+ interface RectParams extends SizeParams {
6
+ cornerRadius?: number;
7
+ }
8
+ interface FigureParams extends SizeParams {
9
+ id?: string;
10
+ fill: string;
11
+ stroke: string;
12
+ strokeWidth: number;
13
+ dash?: number[];
14
+ subType: string;
15
+ cornerRadius?: number;
16
+ }
17
+ type PathResult = string | {
18
+ path: string;
19
+ scaleX: number;
20
+ scaleY: number;
21
+ };
22
+ type PathDataFunc = (params: FigureParams) => PathResult;
23
+ declare const rectData: ({ width, height, cornerRadius }: RectParams) => string;
24
+ declare const circleData: ({ width, height }: SizeParams) => string;
25
+ declare function starPath({ width: t, height: h }: SizeParams): string;
26
+ declare const triangleData: ({ width: t, height: h }: SizeParams) => string;
27
+ declare const rightTriangleData: ({ width: t, height: h }: SizeParams) => string;
28
+ declare function diamondPath({ width: t, height: h }: SizeParams): string;
29
+ declare function pentagonPath({ width: t, height: h }: SizeParams): string;
30
+ declare function hexagonPath({ width: t, height: h }: SizeParams): string;
31
+ declare function speechBubblePath({ width: t, height: h }: SizeParams): string;
32
+ declare function crossPath({ width: t, height: h }: SizeParams): string;
33
+ declare const TYPES: Record<string, PathDataFunc>;
34
+ declare function figureToSvg(params: FigureParams): string;
35
+
36
+ export { TYPES, circleData, crossPath, diamondPath, figureToSvg, hexagonPath, pentagonPath, rectData, rightTriangleData, speechBubblePath, starPath, triangleData };
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l}from"../chunk-7NNOHYKX.js";import"../chunk-O2XFH626.js";export{k as TYPES,b as circleData,j as crossPath,f as diamondPath,l as figureToSvg,h as hexagonPath,g as pentagonPath,a as rectData,e as rightTriangleData,i as speechBubblePath,c as starPath,d as triangleData};
@@ -3,11 +3,17 @@ type Size = {
3
3
  width: number;
4
4
  height: number;
5
5
  };
6
- declare function getCrop(elementSize: Size, originalImageSize: Size): {
6
+ /**
7
+ * 计算图片适配到目标尺寸的裁剪参数(Cover 模式,居中裁剪)
8
+ * @param targetSize 目标尺寸(画布/workarea)
9
+ * @param imageSize 原始图片尺寸
10
+ * @returns Fabric.js v6 裁剪参数(像素值)
11
+ */
12
+ declare function getCrop(targetSize: Size, imageSize: Size): {
7
13
  cropX: number;
8
14
  cropY: number;
9
- cropWidth: number;
10
- cropHeight: number;
15
+ width: number;
16
+ height: number;
11
17
  };
12
18
 
13
19
  export { getCrop, getImageSize };
@@ -1 +1 @@
1
- import{a,b}from"../chunk-EMAFC3HG.js";import"../chunk-O2XFH626.js";export{b as getCrop,a as getImageSize};
1
+ import{a,b}from"../chunk-3TO57JPN.js";import"../chunk-O2XFH626.js";export{b as getCrop,a as getImageSize};
@@ -1 +1 @@
1
- import{a,b,c,d}from"../chunk-E7ZSWHPU.js";import"../chunk-O2XFH626.js";export{a as convertFillToPickerValue,c as getJSONFontFamily,b as getRandomColor,d as isVectorShape};
1
+ import{a,b,c,d}from"../chunk-RVXI723F.js";import"../chunk-O2XFH626.js";export{a as convertFillToPickerValue,c as getJSONFontFamily,b as getRandomColor,d as isVectorShape};
@@ -1 +1 @@
1
- import{a,b,c,d}from"../chunk-JWQ2DUXA.js";import"../chunk-O2XFH626.js";export{a as MOBILE_BREAKPOINT,b as isMobile,c as mobileStyle,d as useMobile};
1
+ import{a,b,c,d}from"../chunk-WCHGSVUC.js";import"../chunk-O2XFH626.js";export{a as MOBILE_BREAKPOINT,b as isMobile,c as mobileStyle,d as useMobile};
@@ -0,0 +1,3 @@
1
+ declare function svgToURL(svg: string): string;
2
+
3
+ export { svgToURL };
@@ -0,0 +1 @@
1
+ import{a}from"../chunk-CB23VFSC.js";import"../chunk-O2XFH626.js";export{a as svgToURL};
@@ -0,0 +1,3 @@
1
+ declare function removeTags(e?: string): string;
2
+
3
+ export { removeTags };
@@ -0,0 +1 @@
1
+ import{a}from"../chunk-4LUZF4CB.js";import"../chunk-O2XFH626.js";export{a as removeTags};
@@ -0,0 +1,18 @@
1
+ type UnitType = 'pt' | 'mm' | 'cm' | 'in' | 'px';
2
+ type fromPx = {
3
+ px: number;
4
+ unit: UnitType;
5
+ dpi: number;
6
+ };
7
+ declare function pxToUnit({ px, unit, dpi }: fromPx): number;
8
+ declare function pxToUnitRounded({ px, precious, dpi, unit, }: fromPx & {
9
+ precious?: number;
10
+ }): number;
11
+ declare function unitToPx({ unitVal, dpi, unit }: {
12
+ unitVal: any;
13
+ dpi: any;
14
+ unit: any;
15
+ }): number;
16
+ declare function pxToUnitString(params: fromPx): string;
17
+
18
+ export { type UnitType, pxToUnit, pxToUnitRounded, pxToUnitString, unitToPx };
@@ -0,0 +1 @@
1
+ import{a,b,c,d}from"../chunk-5C2MNUBC.js";import"../chunk-O2XFH626.js";export{a as pxToUnit,b as pxToUnitRounded,d as pxToUnitString,c as unitToPx};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ydesign/react-editor",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "设计编辑器UI组件库,基于react版本",
5
5
  "main": "dist/app.js",
6
6
  "module": "dist/app.js",
@@ -71,6 +71,14 @@
71
71
  "./project": {
72
72
  "import": "./dist/project.js",
73
73
  "types": "./dist/project.d.ts"
74
+ },
75
+ "./topbar/*": {
76
+ "import": "./dist/topbar/*.js",
77
+ "types": "./dist/topbar/*.d.ts"
78
+ },
79
+ "./topbar": {
80
+ "import": "./dist/topbar/topbar.js",
81
+ "types": "./dist/topbar/topbar.d.ts"
74
82
  }
75
83
  },
76
84
  "author": "junhaoliao",
@@ -92,27 +100,21 @@
92
100
  },
93
101
  "license": "SEE LICENSE IN LICENSE.md",
94
102
  "dependencies": {
95
- "@radix-ui/react-dropdown-menu": "^2.1.16",
96
- "@radix-ui/react-popover": "^1.1.15",
97
- "@radix-ui/react-select": "^2.2.6",
98
- "@radix-ui/react-separator": "^1.1.8",
99
- "@radix-ui/react-slot": "^1.2.4",
100
- "@radix-ui/react-tooltip": "^1.2.8",
101
103
  "antd": "^6.0.0",
102
- "class-variance-authority": "^0.7.1",
103
104
  "clsx": "^2.1.1",
104
- "lodash-es": "^4.17.21",
105
+ "es-toolkit": "^1.44.0",
105
106
  "lucide-react": "^0.553.0",
106
107
  "mobx": "^6.15.0",
107
108
  "mobx-react-lite": "^4.1.1",
108
109
  "mobx-state-tree": "^6.0.1",
109
110
  "react-overflow-list": "^0.5.0",
111
+ "react-sortablejs": "^6.1.4",
110
112
  "react-window": "^1.8.11",
111
113
  "styled-components": "^6.1.19",
112
114
  "tailwind-merge": "^3.3.1",
113
115
  "tailwindcss": "^4.1.17",
114
116
  "tw-animate-css": "^1.4.0",
115
- "@ydesign/core": "^0.0.1"
117
+ "@ydesign/core": "^0.0.4"
116
118
  },
117
119
  "browserslist": [
118
120
  "> 0.5%",
@@ -1 +0,0 @@
1
- import{Button as e}from"antd";import{Eraser as r}from"lucide-react";import{jsx as t}from"react/jsx-runtime";var s=()=>t(e,{type:"text",icon:t(r,{size:16,style:{display:"flex"}}),styles:{root:{padding:"0 10px"}},children:"Eraser pen"});export{s as a};
@@ -1 +0,0 @@
1
- import{jsx as o}from"react/jsx-runtime";var p=({store:e})=>(console.log("ShapesPanel",e),o("div",{children:"\u5F62\u72B6"}));export{p as a};
@@ -1 +0,0 @@
1
- import{a as f}from"./chunk-2AWYWIIK.js";import{a as u}from"./chunk-U7HIFGXC.js";import{a as c,b as y}from"./chunk-3HQUN5MA.js";import{a as d}from"./chunk-V5RJX32O.js";import{a as I}from"./chunk-GMISU6MD.js";import{a as g,b as l}from"./chunk-EMAFC3HG.js";import{observer as s}from"mobx-react-lite";import{Button as i,Tooltip as k}from"antd";import{Crop as C}from"lucide-react";import{jsx as t}from"react/jsx-runtime";var x={root:{padding:"0 6px"}},F=({element:n,store:e})=>t(i,{type:"text",styles:x,onClick:async()=>{let o=e.width+2*e.bleed,m=e.height+2*e.bleed;console.log("w, h ---> ",o,m);let p=await g(n.getSrc()),r=l({width:o,height:m},p);console.log("cropImg",r)},children:"Fit to page"}),T=s(()=>t(k,{title:"Crop",children:t(i,{type:"text",styles:{root:{padding:"0 7px"}},children:t(C,{size:16})})})),B=s(()=>t(i,{type:"text",styles:x,children:"Apply mask"})),b={ImageFlip:I,ImageFilters:d,ImageFitToBackground:F,ImageCrop:T,ImageClip:B,ImageRemoveBackground:u,ImageEraserPen:f},h=s(({store:n,components:e})=>{let o=n.selectedElements,p=c({type:"text",usedItems:["ImageFlip","ImageFilters","ImageFitToBackground","ImageClip","ImageCrop","ImageRemoveBackground","ImageEraserPen"],components:e});return t(y,{items:p,itemRender:r=>{let a=e[r]||b[r];return a&&t(a,{elements:o,element:o[0],store:n},r)}})}),O=h;export{F as a,T as b,B as c,h as d,O as e};
@@ -1 +0,0 @@
1
- import{jsx as o}from"react/jsx-runtime";var t=({store:e})=>(console.log("TextPanel",e),o("div",{children:"\u6587\u672C\u9762\u677F"}));export{t as a};
@@ -1,16 +0,0 @@
1
- import{a as k}from"./chunk-R6Z6F447.js";import{c as h}from"./chunk-TE6HYOIP.js";import{d as E}from"./chunk-5MWZMSER.js";import{a as C}from"./chunk-GYDTKPW5.js";import{a as H}from"./chunk-XRRO2RT7.js";import{a as B}from"./chunk-JW76IC3E.js";import{a as x}from"./chunk-MNACXCF5.js";import{a as v}from"./chunk-XZAP76LL.js";import{b}from"./chunk-B35ZYWID.js";import{a as g}from"./chunk-H67HTXU4.js";import{a as T}from"./chunk-V6ZZKUTN.js";import u from"styled-components";import{useRef as q}from"react";import{Tooltip as N,Button as R}from"antd";import{Undo2 as A,Redo2 as U}from"lucide-react";import{observer as F}from"mobx-react-lite";import{useEffect as M}from"react";import{jsx as n,jsxs as _}from"react/jsx-runtime";var w=F(({store:o})=>(M(()=>{},[o._updateHistory]),_(c,{style:{float:"left",paddingRight:10},children:[n(N,{title:"\u64A4\u9500",placement:"bottom",children:n(R,{type:"text",disabled:!o.editor?.historyHandler.canUndo(),styles:{root:{padding:"0 7px"}},onClick:()=>{o.editor?.historyHandler.undo()},children:n(A,{size:16})})}),n(N,{title:"\u91CD\u505A",placement:"bottom",children:n(R,{type:"text",disabled:!o.editor?.historyHandler.canRedo(),styles:{root:{padding:"0 7px"}},onClick:()=>{o.editor?.historyHandler.redo()},children:n(U,{size:16})})})]})));import{observer as J}from"mobx-react-lite";import{Divider as K}from"antd";import{Fragment as X,jsx as e,jsxs as d}from"react/jsx-runtime";var Q=u.div`
2
- white-space: nowrap;
3
-
4
- height: 50px;
5
- padding: 0 15px;
6
- position: relative;
7
- width: 100%;
8
- z-index: 10;
9
- `,V=u.div`
10
- width: 100%;
11
- height: 100%;
12
- `,c=u.div`
13
- align-items: center;
14
- display: flex;
15
- height: 50px;
16
- `,s={textbox:h,image:E,many:H};function xo(o,a){s[o]=a}var W=J(({store:o,downloadButtonEnabled:a,components:i={}})=>{let G=new Set(o.selectedElements.map(r=>r?.type)).size===1,P=o.selectedElements.length===1,m=o.selectedElements[0],y=o.selectedElements.length&&o.selectedElements.every(r=>r?.locked),l=P&&s[m?.type];G?l=s[m?.type]:o.selectedElements.length>1&&(l=s.many);let p=q(i);(Object.keys(i).some(r=>i[r]!==p.current[r])||Object.keys(p.current).some(r=>!(r in i)))&&(p.current=Object.assign({},i));let t=p.current,f=t?.ActionControls||(a?b:null),D=t?.Position||x,O=t?.Opacity||B,S=t?.Lock||C,z=t?.Duplicate||g,L=t?.Remove||k,I=t?.History||w,j=t?.Group||T;return e(Q,{className:"bp5-navbar design-toolbar",children:d(V,{children:[e(I,{store:o}),!m&&e(v,{store:o,components:t}),l&&!y&&e(l,{store:o,components:t}),d(c,{style:{float:"right"},children:[e(j,{store:o}),e(D,{store:o}),!y&&e(O,{store:o}),e(S,{store:o}),e(z,{store:o}),e(L,{store:o}),f&&d(X,{children:[e(K,{orientation:"vertical",style:{margin:"0 15px"}}),e(f,{store:o})]})]})]})})}),Bo=W;export{c as a,xo as b,W as c,Bo as d,w as e};
@@ -1 +0,0 @@
1
- var s=t=>{if(t){if(typeof t=="string")return t;if(typeof t=="object"&&"colorStops"in t&&Array.isArray(t.colorStops))return t.colorStops.map(o=>({color:o.color,percent:o.offset*100}))}},i=()=>{let t="0123456789ABCDEF",o="#";for(let r=0;r<6;r++)o+=t[Math.floor(Math.random()*16)];return o},n=t=>{let o=[];for(let r of t){if(r.type==="group"){let e=n(r.objects);o.push(...e)}r.type==="textbox"&&(o.some(e=>e===r.fontFamily)||o.push(r.fontFamily))}return o},c=new Set(["ellipse","polygon","triangle","rect","line","circle","polyline","path"]);function p(t){return!!t&&c.has(t.type)}export{s as a,i as b,n as c,p as d};
@@ -1 +0,0 @@
1
- function p(o){return new Promise((t,s)=>{let h=new Image;h.onload=()=>{t({width:h.width,height:h.height})},h.onerror=()=>{s(new Error("\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"))},h.src=o,h.crossOrigin="anonymous"})}function e(o,t){console.log(o),console.log(t);let{width:s,height:h}=o,w=s/h,c,r;w>=t.width/t.height?(c=t.width,r=t.width/w):(c=t.height*w,r=t.height);let d=(t.width-c)/2,n=(t.height-r)/2;return{cropX:d/t.width,cropY:n/t.height,cropWidth:c/t.width,cropHeight:r/t.height}}export{p as a,e as b};
@@ -1 +0,0 @@
1
- import{Blend as s}from"lucide-react";import{Popover as d,Tooltip as m,Button as c,InputNumber as v,Slider as u}from"antd";import{observer as y}from"mobx-react-lite";import{jsx as t,jsxs as r}from"react/jsx-runtime";var x=y(({store:e})=>{let a=e.selectedShapes.length>0,o=e.selectedShapes[0],i=Math.round(100*o?.opacity),n=p=>{let l=Math.max(0,Math.min(p,100));e.editor?.objectsHandler.update({opacity:l/100})};return t(m,{title:"Opacity",placement:"bottom",children:t(d,{content:r("div",{children:[t("div",{style:{textAlign:"center",marginBottom:10},children:"Transparency"}),r("div",{style:{display:"flex"},children:[t("div",{style:{width:170,paddingRight:20},children:t(u,{min:0,max:100,onChange:n,value:i})}),t(v,{min:0,max:100,value:i,onChange:n,size:"small",styles:{root:{width:65}}})]})]}),trigger:"click",children:t(c,{type:"text",disabled:!a,styles:{root:{padding:"0 7px"}},children:t(s,{size:16})})})})});export{x as a};
@@ -1 +0,0 @@
1
- import{jsx as o}from"react/jsx-runtime";var r=({store:e})=>(console.log("LayersPanel",e),o("div",{children:"\u56FE\u5C42"}));export{r as a};
@@ -1 +0,0 @@
1
- import{Button as o}from"antd";import{jsx as l,jsxs as i}from"react/jsx-runtime";var a=({store:t})=>i("div",{onClick:()=>{console.log("TemplatesPanel",t)},style:{display:"flex",flexDirection:"column",gap:10},children:["\u6A21\u677F\u4E2D\u5FC3",l(o,{onClick:()=>{},children:"\u6DFB\u52A0\u6587\u5B57"}),l(o,{onClick:()=>{let e=t.editor?.customCanvas.canvas.getActiveObject();if(e){let{selectionStart:n,selectionEnd:c}=e;n!==c?(console.log("\u6709\u5C40\u90E8\u6587\u5B57\u9009\u4E2D"),e.setSelectionStyles({fill:"red"},n,c)):e.set({fill:"red"}),t.editor?.customCanvas.canvas.requestRenderAll()}},children:"\u8BBE\u7F6E\u5C40\u90E8\u6587\u5B57\u4E3A\u7EA2\u8272"}),l(o,{children:"\u6DFB\u52A0\u56FE\u7247"})]});export{a};
@@ -1,7 +0,0 @@
1
- import{a as j}from"./chunk-FIAIYSJ7.js";import{a as I,b as H}from"./chunk-3HQUN5MA.js";import{a as B}from"./chunk-V5RJX32O.js";import{a as w,c as z}from"./chunk-E7ZSWHPU.js";import{a as v}from"./chunk-WJT6VPDR.js";import{observer as f}from"mobx-react-lite";import{useEffect as u,useState as y,useCallback as N}from"react";import{ColorPicker as M,Popover as L,Button as m,Input as W,InputNumber as b,Space as G,Slider as A,Tooltip as x}from"antd";import{cssGradient2FabricGradient as O}from"@ydesign/core";import{ChevronDown as E,TextAlignStart as V,TextAlignCenter as _,TextAlignEnd as R,TextAlignJustify as U,Bold as D,Italic as J,Underline as K,Strikethrough as $,ListChevronsUpDown as q,TextWrap as Q}from"lucide-react";import{FixedSizeList as X}from"react-window";import Y from"styled-components";import{jsx as t,jsxs as h}from"react/jsx-runtime";var Z=Y.img`
2
- height: 20px;
3
-
4
- .bp5-dark & {
5
- filter: invert(1);
6
- }
7
- `,{Search:tt}=W,et=({fontFamily:i,handleClick:n,modifiers:e,store:s,isCustom:c})=>{let[o,d]=y(!c);if(console.log(d,Z),u(()=>{o||s.loadFont(i)},[i,o]),i==="_divider")return t("div",{style:{width:"100%",height:1,background:"#e8e8e8"}});let l=i;return t(m,{type:e.active?"primary":"text",block:!0,style:{justifyContent:"start"},onClick:()=>n(i),disabled:e.disabled,styles:{root:{fontFamily:'"'+i+'"'},content:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"}},children:l})},nt=({onChange:i,defaultValue:n})=>t(tt,{placeholder:n,allowClear:!0,onChange:e=>{i(e.target.value)},style:{width:210}}),ot=({store:i,fonts:n,activeFont:e,activeFontLabel:s,onFontSelect:c})=>{let[o,d]=y(""),l=n.filter(r=>r.toLowerCase().includes(o.toLowerCase()));return t(L,{content:h("div",{children:[t(nt,{defaultValue:"\u641C\u7D22\u5B57\u4F53",onChange:r=>d(r??"")}),t("div",{style:{paddingTop:5},children:t(X,{itemCount:l.length,itemSize:28,width:210,height:Math.min(400,28*l.length)+10,children:({index:r,style:p})=>{let a=l[r];return t("div",{style:{...p,display:"flex",alignItems:"center",justifyContent:"center"},children:t(et,{fontFamily:a,modifiers:{active:e===a},handleClick:()=>c(a),store:i,isCustom:i.fonts.find(g=>g.fontFamily===a)||v.find(g=>g.fontFamily===a)},a)})}})})]}),trigger:"click",children:t(m,{type:"text",style:{marginRight:5,fontFamily:'"'+e+'"',overflow:"hidden",whiteSpace:"nowrap",maxHeight:30,padding:"0 10px"},icon:t(E,{size:16,style:{display:"flex"}}),iconPlacement:"end",children:s})})},S=["left","center","right","justify"],it=f(({elements:i,store:n})=>{let e=n.fonts.concat(v).map(d=>d.fontFamily),s=i[0].fontFamily;s.length>15&&(s=s.slice(0,15)+"...");let c=z(n.objects),o=[...new Set(c.concat("_divider").concat(e))];return t(ot,{fonts:o,activeFont:i[0].fontFamily,activeFontLabel:s,store:n,onFontSelect:d=>{n.editor?.objectsHandler.setTextStyle({fontFamily:d})}})}),lt=f(({elements:i,store:n})=>{let e=i[0],[s,c]=y(e.fill),o=N(()=>{let{selectionStart:l,selectionEnd:r}=e;if(l!==r&&l!==void 0){let p=e.getSelectionStyles(l,l+1);if(p.length>0&&p[0].fill!==void 0)return p[0].fill}return e.fill},[e]);u(()=>{let l=n.editor?.customCanvas?.canvas;if(!l)return;let r=()=>{c(o())};return l.on("text:selection:changed",r),l.on("text:editing:entered",r),l.on("text:editing:exited",r),c(o()),()=>{l.off("text:selection:changed",r),l.off("text:editing:entered",r),l.off("text:editing:exited",r)}},[n.editor?.customCanvas?.canvas,o]),u(()=>{c(o())},[e,o]);let d=w(s);return t(M,{value:d,allowClear:!0,mode:["single","gradient"],onChangeComplete:l=>{let r=l.toCssString();if(r.includes("gradient")){let p=O(r);n.editor?.objectsHandler.setTextStyle({fill:p})}else n.editor?.objectsHandler.setTextStyle({fill:r});c(o())}})}),rt=f(({elements:i,store:n})=>{let[e,s]=y(i[0].fontSize);u(()=>{s(i[0].fontSize)},[i[0]?.fontSize,n._updateFontSize]);let c=o=>{Number.isNaN(o)||(n.editor?.objectsHandler.setTextStyle({fontSize:Number(o)}),s(Number(o)))};return t(b,{min:5,max:4*n.height,value:Math.round(e),onChange:c,style:{width:70}})}),st=f(({elements:i,store:n})=>{let e=i[0],[s,c]=y(e.textAlign),[o,d]=y(e.fontWeight),[l,r]=y(e.fontStyle),[p,a]=y(e.underline),[g,C]=y(e.linethrough),[T,P]=y(e.splitByGrapheme);return u(()=>{c(e.textAlign),d(e.fontWeight),r(e.fontStyle),a(e.underline),C(e.linethrough),P(e.splitByGrapheme)},[e]),h(G.Compact,{children:[t(x,{placement:"bottom",title:`Text align ${s}`,children:t(m,{type:"text",icon:s==="left"?t(V,{size:16,style:{display:"flex"}}):s==="center"?t(_,{size:16,style:{display:"flex"}}):s==="right"?t(R,{size:16,style:{display:"flex"}}):t(U,{size:16,style:{display:"flex"}}),onClick:()=>{let F=(S.indexOf(s)+1+S.length)%S.length,k=S[F];n.editor?.objectsHandler.setTextStyle({textAlign:k}),c(k)}})}),t(x,{placement:"bottom",title:"Bold",children:t(m,{type:o==="bold"||o==="700"?"primary":"text",icon:t(D,{size:16,style:{display:"flex"}}),onClick:()=>{o==="bold"||o==="700"?(n.editor?.objectsHandler.setTextStyle({fontWeight:"normal"}),d("normal")):(n.editor?.objectsHandler.setTextStyle({fontWeight:"bold"}),d("bold"))}})}),t(x,{placement:"bottom",title:"Italic",children:t(m,{type:l==="italic"?"primary":"text",icon:t(J,{size:16,style:{display:"flex"}}),onClick:()=>{l==="italic"?(n.editor?.objectsHandler.setTextStyle({fontStyle:"normal"}),r("normal")):(n.editor?.objectsHandler.setTextStyle({fontStyle:"italic"}),r("italic"))}})}),t(x,{placement:"bottom",title:"Underline",children:t(m,{type:p?"primary":"text",icon:t(K,{size:16,style:{display:"flex"}}),onClick:()=>{n.editor?.objectsHandler.setTextStyle({underline:!p}),a(!p)}})}),t(x,{placement:"bottom",title:"Strikethrough",children:t(m,{type:g?"primary":"text",icon:t($,{size:16,style:{display:"flex"}}),onClick:()=>{n.editor?.objectsHandler.setTextStyle({linethrough:!g}),C(!g)}})}),t(x,{placement:"bottom",title:"Split by grapheme",children:t(m,{type:T?"primary":"text",icon:t(Q,{size:16,style:{display:"flex"}}),onClick:()=>{n.editor?.objectsHandler.setTextStyle({splitByGrapheme:!T}),P(!T)}})})]})}),at=f(({elements:i,store:n})=>{let e=i[0],s={display:"flex",alignItems:"center",justifyContent:"space-between",paddingTop:"5px",paddingBottom:"5px"},c=typeof e.lineHeight=="number"?100*e.lineHeight:120,[o,d]=y(c),[l,r]=y(e.charSpacing),p=a=>{n.editor?.objectsHandler.setTextStyle(a)};return t(L,{trigger:"click",content:h("div",{style:{padding:"0 6px",width:"230px"},children:[h("div",{style:s,children:[t("div",{children:"Line height"}),t("div",{children:t(b,{min:50,max:250,value:Math.round(o),style:{width:80},onChange:a=>{p({lineHeight:a/100}),d(a)}})})]}),t(A,{value:Math.round(o),min:50,max:250,step:1,onChange:a=>{p({lineHeight:a/100}),d(a)}}),h("div",{style:s,children:[t("div",{children:"Letter spacing"}),t("div",{children:t(b,{min:-50,max:250,value:Math.round(l/10),style:{width:80},onChange:a=>{p({charSpacing:(a??0)*10}),r((a??0)*10)}})})]}),t(A,{value:Math.round(l/10),min:-50,max:250,step:1,onChange:a=>{p({charSpacing:(a??0)*10}),r((a??0)*10)}})]}),children:t(m,{type:"text",icon:t(q,{size:16,style:{display:"flex"}})})})}),ct={TextFill:lt,TextFontFamily:it,TextFontSize:rt,TextFontVariant:st,TextSpacing:at,TextFilters:B,TextAiWrite:j},dt=f(({store:i,components:n})=>{let e=i.selectedElements,c=I({type:"text",usedItems:["TextFill","TextFontFamily","TextFontSize","TextFontVariant","TextSpacing","TextFilters","TextAiWrite"],components:n});return t(H,{items:c,itemRender:o=>{let d=n[o]||ct[o];return d&&t(d,{elements:e,element:e[0],store:i},o)}})}),Ct=dt;export{S as a,dt as b,Ct as c};