mce 0.13.4 → 0.13.6

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.
@@ -1,15 +1,17 @@
1
1
  import type { OrientedBoundingBox } from '../types';
2
2
  import { Editor } from '../editor';
3
3
  type __VLS_Slots = {
4
- selector?: (props: {
4
+ 'selector'?: (props: {
5
5
  box: OrientedBoundingBox;
6
6
  }) => void;
7
- transformer?: (props: {
7
+ 'transformer'?: (props: {
8
8
  box: Partial<OrientedBoundingBox>;
9
9
  }) => void;
10
- floatbar?: () => void;
11
- drawboard?: () => void;
12
- default?: () => void;
10
+ 'floatbar'?: () => void;
11
+ 'floatbar-top'?: () => void;
12
+ 'floatbar-bottom'?: () => void;
13
+ 'drawboard'?: () => void;
14
+ 'default'?: () => void;
13
15
  };
14
16
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
15
17
  editor: typeof Editor;
@@ -21,13 +23,15 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
21
23
  type: import("vue").PropType<import("..").ActiveStrategy>;
22
24
  default: import("..").ActiveStrategy;
23
25
  };
26
+ doubleclickStrategy: {
27
+ type: import("vue").PropType<import("..").DoubleclickStrategy>;
28
+ default: import("..").DoubleclickStrategy;
29
+ };
24
30
  hoverStrategy: {
25
31
  type: import("vue").PropType<import("..").HoverStrategy>;
26
32
  default: import("..").HoverStrategy;
27
33
  };
28
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
29
- "dblclick:drawboard": (event: Event) => any;
30
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
34
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
31
35
  editor: typeof Editor;
32
36
  resizeStrategy: {
33
37
  type: import("vue").PropType<import("..").ResizeStrategy>;
@@ -37,15 +41,18 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
37
41
  type: import("vue").PropType<import("..").ActiveStrategy>;
38
42
  default: import("..").ActiveStrategy;
39
43
  };
44
+ doubleclickStrategy: {
45
+ type: import("vue").PropType<import("..").DoubleclickStrategy>;
46
+ default: import("..").DoubleclickStrategy;
47
+ };
40
48
  hoverStrategy: {
41
49
  type: import("vue").PropType<import("..").HoverStrategy>;
42
50
  default: import("..").HoverStrategy;
43
51
  };
44
- }>> & Readonly<{
45
- "onDblclick:drawboard"?: ((event: Event) => any) | undefined;
46
- }>, {
52
+ }>> & Readonly<{}>, {
47
53
  resizeStrategy: import("..").ResizeStrategy;
48
54
  activeStrategy: import("..").ActiveStrategy;
55
+ doubleclickStrategy: import("..").DoubleclickStrategy;
49
56
  hoverStrategy: import("..").HoverStrategy;
50
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
51
58
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -4,10 +4,7 @@ type __VLS_Slots = {} & {
4
4
  default?: (props: typeof __VLS_7) => any;
5
5
  };
6
6
  declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
7
- location: {
8
- type: import("vue").PropType<import("@floating-ui/vue").Side | "left-end" | "left-start" | "right-end" | "right-start" | "top-end" | "top-start" | "bottom-end" | "bottom-start">;
9
- default: NonNullable<import("@floating-ui/vue").Side | "left-end" | "left-start" | "right-end" | "right-start" | "top-end" | "top-start" | "bottom-end" | "bottom-start">;
10
- };
7
+ location: import("vue").PropType<import("@floating-ui/vue").Side | import("@floating-ui/vue").AlignedPlacement>;
11
8
  offset: {
12
9
  type: import("vue").PropType<number>;
13
10
  default: number;
@@ -30,10 +27,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
30
27
  }>, {
31
28
  updateLocation: typeof updateLocation;
32
29
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
33
- location: {
34
- type: import("vue").PropType<import("@floating-ui/vue").Side | "left-end" | "left-start" | "right-end" | "right-start" | "top-end" | "top-start" | "bottom-end" | "bottom-start">;
35
- default: NonNullable<import("@floating-ui/vue").Side | "left-end" | "left-start" | "right-end" | "right-start" | "top-end" | "top-start" | "bottom-end" | "bottom-start">;
36
- };
30
+ location: import("vue").PropType<import("@floating-ui/vue").Side | import("@floating-ui/vue").AlignedPlacement>;
37
31
  offset: {
38
32
  type: import("vue").PropType<number>;
39
33
  default: number;
@@ -55,7 +49,6 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
55
49
  };
56
50
  }>> & Readonly<{}>, {
57
51
  offset: number;
58
- location: import("@floating-ui/vue").Side | "left-end" | "left-start" | "right-end" | "right-start" | "top-end" | "top-start" | "bottom-end" | "bottom-start";
59
52
  attach: string | boolean | Element | null | undefined;
60
53
  middlewares: any[] | ("shift" | "flip" | "offset")[];
61
54
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,89 @@
1
+ import type { ImageFillCropRect } from 'modern-idoc';
2
+ /**
3
+ * TODO 撤回无法重渲
4
+ */
5
+ type __VLS_Props = {
6
+ image: string;
7
+ minScale?: number;
8
+ maxScale?: number;
9
+ };
10
+ declare function ok(): void;
11
+ declare function cancel(): void;
12
+ declare function applySourceTransformToStyle(): void;
13
+ type __VLS_ModelProps = {
14
+ /**
15
+ * CropRect (value are based on CropRect !!!)
16
+ *
17
+ * @example
18
+ *
19
+ * cropRect: { left: 0.3, top: 0.3, right: 0.3, bottom: 0.3 }
20
+ *
21
+ * Before:
22
+ *
23
+ * View (Source)
24
+ * |---0---|
25
+ * | |
26
+ * 0 0
27
+ * | |
28
+ * |---0---|
29
+ *
30
+ * After:
31
+ *
32
+ * Source
33
+ * |----- 0 -----|
34
+ * | View |
35
+ * | |--0.3--| |
36
+ * | | | |
37
+ * 0 0.3 0.3 0
38
+ * | | | |
39
+ * | |--0.3--| |
40
+ * | |
41
+ * |----- 0 -----|
42
+ */
43
+ modelValue?: ImageFillCropRect;
44
+ 'style'?: Record<string, any>;
45
+ };
46
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
47
+ declare var __VLS_5: {
48
+ scale: number;
49
+ ok: typeof ok;
50
+ cancel: typeof cancel;
51
+ applySourceTransformToStyle: typeof applySourceTransformToStyle;
52
+ };
53
+ type __VLS_Slots = {} & {
54
+ default?: (props: typeof __VLS_5) => any;
55
+ };
56
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
57
+ end: () => any;
58
+ start: () => any;
59
+ "update:modelValue": (value: ImageFillCropRect) => any;
60
+ "update:transform": (args_0: {
61
+ left: number;
62
+ top: number;
63
+ width: number;
64
+ height: number;
65
+ }) => any;
66
+ "update:style": (value: Record<string, any>) => any;
67
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
68
+ onEnd?: (() => any) | undefined;
69
+ onStart?: (() => any) | undefined;
70
+ "onUpdate:modelValue"?: ((value: ImageFillCropRect) => any) | undefined;
71
+ "onUpdate:transform"?: ((args_0: {
72
+ left: number;
73
+ top: number;
74
+ width: number;
75
+ height: number;
76
+ }) => any) | undefined;
77
+ "onUpdate:style"?: ((value: Record<string, any>) => any) | undefined;
78
+ }>, {
79
+ minScale: number;
80
+ maxScale: number;
81
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
82
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
83
+ declare const _default: typeof __VLS_export;
84
+ export default _default;
85
+ type __VLS_WithSlots<T, S> = T & {
86
+ new (): {
87
+ $slots: S;
88
+ };
89
+ };
@@ -27,7 +27,7 @@ declare var __VLS_7: {
27
27
  onPointerdown: typeof start;
28
28
  };
29
29
  start: typeof start;
30
- }, __VLS_9: {
30
+ }, __VLS_14: {
31
31
  box: {
32
32
  left: number;
33
33
  top: number;
@@ -40,7 +40,7 @@ declare var __VLS_7: {
40
40
  type __VLS_Slots = {} & {
41
41
  default?: (props: typeof __VLS_7) => any;
42
42
  } & {
43
- svg?: (props: typeof __VLS_9) => any;
43
+ svg?: (props: typeof __VLS_14) => any;
44
44
  };
45
45
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
46
46
  start: typeof start;
@@ -1,10 +1,14 @@
1
1
  import type { Element2D, PointerInputEvent } from 'modern-canvas';
2
2
  import type { PropType } from 'vue';
3
+ import type { Editor } from '../editor';
3
4
  export interface ActiveStrategyContext {
4
5
  element: Element2D | undefined;
5
- oldElement: Element2D | undefined;
6
6
  event: PointerInputEvent;
7
- isExcluded: (element: Element2D) => boolean;
7
+ editor: Editor;
8
+ }
9
+ export interface DoubleclickStrategyContext {
10
+ event: PointerInputEvent;
11
+ editor: Editor;
8
12
  }
9
13
  export interface HoverStrategyContext extends ActiveStrategyContext {
10
14
  }
@@ -13,6 +17,7 @@ export type ActiveStrategy = (context: ActiveStrategyContext) => {
13
17
  element: Element2D | undefined;
14
18
  state: Mce.State | undefined;
15
19
  } | Element2D | undefined;
20
+ export type DoubleclickStrategy = (context: DoubleclickStrategyContext) => Mce.State | undefined;
16
21
  export type HoverStrategy = (context: HoverStrategyContext) => {
17
22
  element: Element2D | undefined;
18
23
  cursor: string | undefined;
@@ -20,6 +25,7 @@ export type HoverStrategy = (context: HoverStrategyContext) => {
20
25
  export declare const makeMceStrategyProps: <Defaults extends {
21
26
  resizeStrategy?: unknown;
22
27
  activeStrategy?: unknown;
28
+ doubleclickStrategy?: unknown;
23
29
  hoverStrategy?: unknown;
24
30
  } = {}>(defaults?: Defaults | undefined) => {
25
31
  resizeStrategy: unknown extends Defaults["resizeStrategy"] ? PropType<ResizeStrategy> : {
@@ -30,6 +36,10 @@ export declare const makeMceStrategyProps: <Defaults extends {
30
36
  type: PropType<unknown extends Defaults["activeStrategy"] ? ActiveStrategy : ActiveStrategy | Defaults["activeStrategy"]>;
31
37
  default: unknown extends Defaults["activeStrategy"] ? ActiveStrategy : ActiveStrategy | Defaults["activeStrategy"];
32
38
  };
39
+ doubleclickStrategy: unknown extends Defaults["doubleclickStrategy"] ? PropType<DoubleclickStrategy> : {
40
+ type: PropType<unknown extends Defaults["doubleclickStrategy"] ? DoubleclickStrategy : DoubleclickStrategy | Defaults["doubleclickStrategy"]>;
41
+ default: unknown extends Defaults["doubleclickStrategy"] ? DoubleclickStrategy : DoubleclickStrategy | Defaults["doubleclickStrategy"];
42
+ };
33
43
  hoverStrategy: unknown extends Defaults["hoverStrategy"] ? PropType<HoverStrategy> : {
34
44
  type: PropType<unknown extends Defaults["hoverStrategy"] ? HoverStrategy : HoverStrategy | Defaults["hoverStrategy"]>;
35
45
  default: unknown extends Defaults["hoverStrategy"] ? HoverStrategy : HoverStrategy | Defaults["hoverStrategy"];
@@ -37,4 +47,5 @@ export declare const makeMceStrategyProps: <Defaults extends {
37
47
  };
38
48
  export declare const defaultResizeStrategy: ResizeStrategy;
39
49
  export declare const defaultActiveStrategy: ActiveStrategy;
50
+ export declare const defaultDoubleclickStrategy: DoubleclickStrategy;
40
51
  export declare const defaultHoverStrategy: HoverStrategy;
package/dist/editor.d.ts CHANGED
@@ -4,6 +4,7 @@ import type { App, InjectionKey } from 'vue';
4
4
  import { Observable } from 'modern-idoc';
5
5
  export interface Options extends Mce.Options {
6
6
  debug?: boolean;
7
+ showMadeWith?: boolean;
7
8
  plugins?: Plugin[];
8
9
  configCacheInLocal?: boolean;
9
10
  }
@@ -14,6 +15,7 @@ export interface Events extends Mce.Events, ObservableEvents {
14
15
  export declare class Editor extends Observable<Events> {
15
16
  static injectionKey: InjectionKey<Editor>;
16
17
  debug: import("vue").Ref<boolean, boolean>;
18
+ showMadeWith: import("vue").Ref<boolean, boolean>;
17
19
  config: RemovableRef<Mce.Config>;
18
20
  onEmit?: <K extends keyof Events & string>(event: K, ...args: Events[K]) => void;
19
21
  plugins: Map<string, PluginObject>;
package/dist/index.css CHANGED
@@ -150,6 +150,106 @@
150
150
  overflow: hidden;
151
151
  text-overflow: ellipsis;
152
152
  background-color: rgba(var(--mce-theme-surface), 1);
153
+ }.mce-transformable {
154
+ left: 0;
155
+ top: 0;
156
+ }
157
+ .mce-transformable__svg {
158
+ position: absolute;
159
+ left: 0;
160
+ top: 0;
161
+ width: 100%;
162
+ height: 100%;
163
+ overflow: visible;
164
+ pointer-events: none;
165
+ color: rgb(var(--mce-theme-primary));
166
+ stroke: currentColor;
167
+ }
168
+ .mce-transformable__diagonal {
169
+ stroke-width: 1px;
170
+ stroke-dasharray: 2px;
171
+ visibility: hidden;
172
+ }
173
+ .mce-transformable__rect {
174
+ stroke-width: 1px;
175
+ }
176
+ .mce-transformable__handle {
177
+ fill: white;
178
+ stroke-width: 1px;
179
+ pointer-events: none;
180
+ }
181
+ .mce-transformable__handle-rect {
182
+ stroke-width: 1px;
183
+ fill: transparent;
184
+ stroke: transparent;
185
+ }
186
+ .mce-transformable__tip {
187
+ position: absolute;
188
+ bottom: 0;
189
+ left: 50%;
190
+ transform: translate(-50%, calc(100% + 8px));
191
+ background-color: rgb(var(--mce-theme-primary));
192
+ color: rgb(var(--mce-theme-on-primary));
193
+ font-size: 12px;
194
+ padding: 2px 4px;
195
+ border-radius: 3px;
196
+ text-wrap: nowrap;
197
+ }
198
+ .mce-transformable--dashed .mce-transformable__rect {
199
+ stroke-dasharray: 4px;
200
+ }
201
+ .mce-transformable--resizing .mce-transformable__diagonal {
202
+ visibility: visible;
203
+ }
204
+ .mce-transformable--moving .mce-transformable__handle {
205
+ visibility: hidden;
206
+ }
207
+ .mce-transformable--moving .mce-transformable__handle-rect {
208
+ visibility: hidden;
209
+ }
210
+ .mce-transformable--moving .mce-transformable__rect {
211
+ opacity: 0.4;
212
+ stroke-width: 0.5px;
213
+ }
214
+ .mce-transformable--moving .mce-transformable__svg-slot {
215
+ opacity: 0.4;
216
+ stroke-width: 0.5px;
217
+ }
218
+ .mce-transformable--hide-ui .mce-transformable__handle {
219
+ visibility: hidden;
220
+ }
221
+ .mce-transformable--hide-ui .mce-transformable__handle-rect {
222
+ visibility: hidden;
223
+ }
224
+ .mce-transformable--hide-ui .mce-transformable__rect {
225
+ visibility: hidden;
226
+ }.mce-cropper {
227
+ pointer-events: auto;
228
+ position: absolute;
229
+ left: 0;
230
+ top: 0;
231
+ width: 100%;
232
+ height: 100%;
233
+ }
234
+ .mce-cropper__source {
235
+ position: absolute;
236
+ width: 100%;
237
+ height: 100%;
238
+ transform-origin: top left;
239
+ }
240
+ .mce-cropper__source canvas {
241
+ position: absolute;
242
+ width: 100%;
243
+ height: 100%;
244
+ }
245
+ .mce-cropper__transformable {
246
+ position: absolute;
247
+ color: rgba(var(--mce-theme-primary), 1);
248
+ opacity: 0.5;
249
+ }
250
+ .mce-cropper__transformable_rect {
251
+ width: 100%;
252
+ height: 100%;
153
253
  }.mce-frame {
154
254
  position: absolute;
155
255
  }
@@ -355,6 +455,26 @@
355
455
  }
356
456
  .mce-layers:hover .mce-layer:not(.mce-layer--root) .mce-layer__expand {
357
457
  opacity: 1;
458
+ }.mce-made-with {
459
+ pointer-events: auto !important;
460
+ position: absolute;
461
+ right: 18px;
462
+ bottom: 18px;
463
+ opacity: 0.38;
464
+ color: #000;
465
+ text-align: center;
466
+ font-size: 12px;
467
+ line-height: 1;
468
+ border: 2px solid currentColor;
469
+ padding: 2px 4px;
470
+ border-radius: 4px;
471
+ box-sizing: border-box;
472
+ font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
473
+ text-decoration: none;
474
+ }
475
+ .mce-made-with div:last-child {
476
+ font-weight: bold;
477
+ letter-spacing: 1px;
358
478
  }.mce-tooltip {
359
479
  background: rgb(var(--mce-theme-surface-variant));
360
480
  color: rgb(var(--mce-theme-on-surface-variant));
@@ -450,79 +570,6 @@
450
570
  }
451
571
  .mce-scrollbar__thumb--active, .mce-scrollbar__thumb:hover {
452
572
  background-color: rgba(var(--mce-theme-on-background), var(--mce-medium-emphasis-opacity));
453
- }.mce-transformable {
454
- left: 0;
455
- top: 0;
456
- }
457
- .mce-transformable__svg {
458
- position: absolute;
459
- left: 0;
460
- top: 0;
461
- width: 100%;
462
- height: 100%;
463
- overflow: visible;
464
- pointer-events: none;
465
- color: rgb(var(--mce-theme-primary));
466
- stroke: currentColor;
467
- }
468
- .mce-transformable__diagonal {
469
- stroke-width: 1px;
470
- stroke-dasharray: 2px;
471
- visibility: hidden;
472
- }
473
- .mce-transformable__rect {
474
- stroke-width: 1px;
475
- }
476
- .mce-transformable__handle {
477
- fill: white;
478
- stroke-width: 1px;
479
- pointer-events: none;
480
- }
481
- .mce-transformable__handle-rect {
482
- stroke-width: 1px;
483
- fill: transparent;
484
- stroke: transparent;
485
- }
486
- .mce-transformable__tip {
487
- position: absolute;
488
- bottom: 0;
489
- left: 50%;
490
- transform: translate(-50%, calc(100% + 8px));
491
- background-color: rgb(var(--mce-theme-primary));
492
- color: rgb(var(--mce-theme-on-primary));
493
- font-size: 12px;
494
- padding: 2px 4px;
495
- border-radius: 3px;
496
- text-wrap: nowrap;
497
- }
498
- .mce-transformable--dashed .mce-transformable__rect {
499
- stroke-dasharray: 4px;
500
- }
501
- .mce-transformable--lockAspectRatio.mce-transformable--resizing .mce-transformable__diagonal, .mce-transformable--lockAspectRatioDiagonal.mce-transformable--resizing .mce-transformable__diagonal {
502
- visibility: visible;
503
- }
504
- .mce-transformable--moving .mce-transformable__handle {
505
- visibility: hidden;
506
- }
507
- .mce-transformable--moving .mce-transformable__handle-rect {
508
- visibility: hidden;
509
- }
510
- .mce-transformable--moving .mce-transformable__rect {
511
- opacity: 0.4;
512
- stroke-width: 0.5px;
513
- }
514
- .mce-transformable--moving .mce-transformable__svg-slot {
515
- opacity: 0.4;
516
- stroke-width: 0.5px;
517
- }
518
- .mce-transformable--hide-ui .mce-transformable__handle {
519
- visibility: hidden;
520
- }
521
- .mce-transformable--hide-ui .mce-transformable__handle-rect {
522
- visibility: hidden;
523
- }
524
- .mce-transformable--hide-ui .mce-transformable__rect {
525
- visibility: hidden;
526
573
  }.mce-parent-element-obb {
527
574
  position: absolute;
528
575
  pointer-events: none;
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import './typed-global.d.ts';
2
2
  import './typed-plugins.d.ts';
3
3
  export { default as EditorLayout } from './components/EditorLayout.vue';
4
4
  export { default as EditorLayers } from './components/Layers.vue';
5
+ export { default as Cropper } from './components/shared/Cropper.vue';
5
6
  export { default as Dialog } from './components/shared/Dialog.vue';
6
7
  export { default as EditorLayoutItem } from './components/shared/LayoutItem.vue';
7
8
  export { default as Menu } from './components/shared/Menu.vue';