polotno 3.0.0-beta.13 → 3.0.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blueprint.polotno.css +269 -39
- package/canvas/audio.d.ts +1 -1
- package/canvas/context-menu/context-menu.d.ts +1 -1
- package/canvas/drawing-layer.d.ts +1 -1
- package/canvas/element.d.ts +1 -1
- package/canvas/image-element.d.ts +1 -1
- package/canvas/page-controls.d.ts +1 -1
- package/canvas/rules.d.ts +4 -2
- package/canvas/rules.js +3 -3
- package/canvas/tooltip.d.ts +1 -1
- package/canvas/use-color.d.ts +2 -2
- package/canvas/video-element.d.ts +1 -1
- package/canvas/workspace-canvas.d.ts +2 -1
- package/canvas/workspace-canvas.js +1 -1
- package/model/audio-model.d.ts +6 -6
- package/model/figure-model.d.ts +112 -88
- package/model/gif-model.d.ts +125 -101
- package/model/group-model.d.ts +843 -675
- package/model/history.d.ts +2 -2
- package/model/history.js +1 -1
- package/model/image-model.d.ts +122 -98
- package/model/line-model.d.ts +112 -88
- package/model/node-model.d.ts +72 -40
- package/model/node-model.js +1 -1
- package/model/page-model.d.ts +11 -11
- package/model/page-model.js +1 -1
- package/model/shape-model.d.ts +112 -88
- package/model/shape-model.js +1 -1
- package/model/store.d.ts +346 -309
- package/model/store.js +1 -1
- package/model/svg-model.d.ts +114 -90
- package/model/text-model.d.ts +131 -107
- package/model/video-model.d.ts +127 -103
- package/package.json +16 -13
- package/pages-timeline/audio-track.js +1 -1
- package/pages-timeline/audios.d.ts +1 -1
- package/pages-timeline/elements.d.ts +1 -1
- package/pages-timeline/waveform.d.ts +2 -2
- package/polotno.bundle.js +73 -73
- package/side-panel/animations-panel.d.ts +1 -1
- package/side-panel/effects-panel.d.ts +1 -1
- package/side-panel/select-video.d.ts +236 -199
- package/side-panel/videos-grid.d.ts +1 -1
- package/toolbar/element-container.d.ts +1 -1
- package/toolbar/figure-toolbar.d.ts +1 -1
- package/toolbar/sketch.d.ts +7 -7
- package/toolbar/text-ai-write.d.ts +1 -1
- package/toolbar/toolbar.d.ts +1 -1
- package/toolbar/use-copy-style.d.ts +2 -2
- package/toolbar/video-toolbar.d.ts +1 -1
- package/utils/clipboard.js +1 -1
- package/utils/font-metric.d.ts +4 -4
- package/utils/from-svg.js +1 -1
- package/utils/gif-lib.d.ts +5 -0
- package/utils/goober.d.ts +5 -0
- package/utils/gradient.js +1 -1
- package/utils/l10n.d.ts +5 -1
- package/utils/l10n.js +1 -1
- package/utils/luma.js +1 -1
- package/utils/pdf.d.ts +6 -1
- package/utils/pdf.js +1 -1
- package/utils/react-color/components/common/ColorWrap.d.ts +2 -2
- package/utils/react-color/components/common/Swatch.d.ts +3 -3
- package/utils/react-color/helpers/interaction.d.ts +3 -3
- package/utils/reactcss/components/active.d.ts +3 -3
- package/utils/reactcss/components/hover.d.ts +3 -3
- package/utils/styled.js +1 -1
- package/utils/svg.d.ts +1 -1
- package/utils/svg.js +1 -1
- package/utils/to-canvas.d.ts +3 -1
- package/utils/to-canvas.js +1 -1
- package/utils/to-pptx.d.ts +1 -1
- package/utils/to-svg.d.ts +9 -7
- package/utils/use-api.d.ts +3 -3
- package/utils/validate-key.js +1 -1
package/model/node-model.d.ts
CHANGED
|
@@ -1,42 +1,67 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
2
|
export declare const Node: import("mobx-state-tree").IModelType<{
|
|
3
3
|
id: import("mobx-state-tree").ISimpleType<string>;
|
|
4
|
-
type: import("mobx-state-tree").IType<string, string, string>;
|
|
5
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
6
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
4
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
5
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
6
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
7
7
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
8
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
9
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
10
|
-
removable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
11
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
12
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
8
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
9
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
10
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
11
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
12
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
13
13
|
}, {
|
|
14
|
-
readonly locked: boolean;
|
|
15
14
|
readonly page: any;
|
|
16
15
|
readonly store: any;
|
|
17
16
|
readonly top: import("mobx-state-tree").ModelInstanceTypeProps<{
|
|
18
17
|
id: import("mobx-state-tree").ISimpleType<string>;
|
|
19
|
-
type: import("mobx-state-tree").IType<string, string, string>;
|
|
20
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
21
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
18
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
19
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
20
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
22
21
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
23
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
24
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
25
|
-
removable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
26
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
27
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
22
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
23
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
24
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
25
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
26
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
28
27
|
}> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
29
28
|
id: import("mobx-state-tree").ISimpleType<string>;
|
|
30
|
-
type: import("mobx-state-tree").IType<string, string, string>;
|
|
31
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
32
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
29
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
30
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
31
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
33
32
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
34
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
35
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
36
|
-
removable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
37
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
38
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
33
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
34
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
35
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
36
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
37
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
39
38
|
}, {}, import("mobx-state-tree").ModelCreationType<{
|
|
39
|
+
id: string;
|
|
40
|
+
type: string | undefined;
|
|
41
|
+
name: string | undefined;
|
|
42
|
+
opacity: number | undefined;
|
|
43
|
+
custom: any;
|
|
44
|
+
visible: boolean | undefined;
|
|
45
|
+
selectable: boolean | undefined;
|
|
46
|
+
removable: boolean | undefined;
|
|
47
|
+
alwaysOnTop: boolean | undefined;
|
|
48
|
+
showInExport: boolean | undefined;
|
|
49
|
+
}>, import("mobx-state-tree").ModelSnapshotType<{
|
|
50
|
+
id: import("mobx-state-tree").ISimpleType<string>;
|
|
51
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
52
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
53
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
54
|
+
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
55
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
56
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
57
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
58
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
59
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
60
|
+
}>>>;
|
|
61
|
+
readonly parent: any;
|
|
62
|
+
readonly zIndex: any;
|
|
63
|
+
} & {
|
|
64
|
+
toJSON(): {
|
|
40
65
|
id: string;
|
|
41
66
|
type: string;
|
|
42
67
|
name: string;
|
|
@@ -47,14 +72,10 @@ export declare const Node: import("mobx-state-tree").IModelType<{
|
|
|
47
72
|
removable: boolean;
|
|
48
73
|
alwaysOnTop: boolean;
|
|
49
74
|
showInExport: boolean;
|
|
50
|
-
}
|
|
51
|
-
readonly parent: any;
|
|
52
|
-
readonly zIndex: any;
|
|
53
|
-
} & {
|
|
54
|
-
toJSON(): {};
|
|
75
|
+
};
|
|
55
76
|
} & {
|
|
56
77
|
clone(attrs?: any, { skipSelect }?: {
|
|
57
|
-
skipSelect?: boolean;
|
|
78
|
+
skipSelect?: boolean | undefined;
|
|
58
79
|
}): NodeType;
|
|
59
80
|
set(attrs: any): void;
|
|
60
81
|
moveUp(): void;
|
|
@@ -65,14 +86,25 @@ export declare const Node: import("mobx-state-tree").IModelType<{
|
|
|
65
86
|
beforeDestroy(): void;
|
|
66
87
|
}, import("mobx-state-tree").ModelCreationType<{
|
|
67
88
|
id: string;
|
|
68
|
-
type: string;
|
|
69
|
-
name: string;
|
|
70
|
-
opacity: number;
|
|
89
|
+
type: string | undefined;
|
|
90
|
+
name: string | undefined;
|
|
91
|
+
opacity: number | undefined;
|
|
71
92
|
custom: any;
|
|
72
|
-
visible: boolean;
|
|
73
|
-
selectable: boolean;
|
|
74
|
-
removable: boolean;
|
|
75
|
-
alwaysOnTop: boolean;
|
|
76
|
-
showInExport: boolean;
|
|
77
|
-
}>, {
|
|
93
|
+
visible: boolean | undefined;
|
|
94
|
+
selectable: boolean | undefined;
|
|
95
|
+
removable: boolean | undefined;
|
|
96
|
+
alwaysOnTop: boolean | undefined;
|
|
97
|
+
showInExport: boolean | undefined;
|
|
98
|
+
}>, import("mobx-state-tree").ModelSnapshotType<{
|
|
99
|
+
id: import("mobx-state-tree").ISimpleType<string>;
|
|
100
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
101
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
102
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
103
|
+
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
104
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
105
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
106
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
107
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
108
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
109
|
+
}>>;
|
|
78
110
|
export type NodeType = Instance<typeof Node>;
|
package/model/node-model.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{types as e,getParentOfType as t,getSnapshot as o,hasParentOfType as n}from"mobx-state-tree";import{nanoid as r}from"nanoid";import{Store as s}from"./store.js";import{Page as i}from"./page-model.js";import{GroupElement as
|
|
1
|
+
import{types as e,getParentOfType as t,getSnapshot as o,hasParentOfType as n}from"mobx-state-tree";import{nanoid as r}from"nanoid";import{Store as s}from"./store.js";import{Page as i}from"./page-model.js";import{GroupElement as p,forEveryChild as m}from"./group-model.js";export const Node=e.model("Node",{id:e.identifier,type:"none",name:"",opacity:1,custom:e.frozen(),visible:!0,selectable:!0,removable:!0,alwaysOnTop:!1,showInExport:!0}).preProcessSnapshot(e=>{for(var t in e){null===e[t]&&(e[t]=void 0)}return e}).postProcessSnapshot(e=>{const t=Object.assign({},e),o={};for(var n in t){"_"!==n[0]&&(o[n]=e[n])}return o}).views(e=>({get page(){return t(e,i)},get store(){return t(e,s)},get top(){let o=e;for(;;){if(!n(o,p)){return o}o=t(o,p)}},get parent(){if(n(e,p)){const o=t(e,p);return o&&o.children&&o.children.length,o}if(n(e,i)){const o=t(e,i);return o&&o.children&&o.children.length,o}if(n(e,s)){const o=t(e,s);return o&&o.pages&&o.pages.length,o}return null},get zIndex(){return e.parent.children.indexOf(e)}})).actions(e=>({toJSON:()=>Object.assign({},o(e))})).actions(e=>({clone(t={},{skipSelect:o=!1}={}){const n=JSON.parse(JSON.stringify(e.toJSON()));return t.id=t.id||r(10),m(n,e=>{e.id=r(10)}),Object.assign(n,t),e.page.addElement(n,{skipSelect:o})},set(t){Object.assign(e,t)},moveUp(){e.page.moveElementsUp([e.id])},moveTop(){e.page.moveElementsTop([e.id])},moveDown(){e.page.moveElementsDown([e.id])},moveBottom(){e.page.moveElementsBottom([e.id])},setZIndex(t){e.parent.setElementZIndex(e.id,t)},beforeDestroy(){}}));
|
package/model/page-model.d.ts
CHANGED
|
@@ -6,13 +6,13 @@ export declare const Page: import("mobx-state-tree").IModelType<{
|
|
|
6
6
|
children: import("mobx-state-tree").IArrayType<any>;
|
|
7
7
|
width: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree/dist/internal").IUnionType<[import("mobx-state-tree").ISimpleType<number>, import("mobx-state-tree").ISimpleType<"auto">]>, [undefined]>;
|
|
8
8
|
height: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree/dist/internal").IUnionType<[import("mobx-state-tree").ISimpleType<number>, import("mobx-state-tree").ISimpleType<"auto">]>, [undefined]>;
|
|
9
|
-
background: import("mobx-state-tree").IType<string, string, string>;
|
|
10
|
-
bleed: import("mobx-state-tree").IType<number, number, number>;
|
|
9
|
+
background: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
10
|
+
bleed: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
11
11
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
12
|
-
duration: import("mobx-state-tree").IType<number, number, number>;
|
|
13
|
-
_exporting: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
14
|
-
_rendering: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
15
|
-
_forceMount: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
12
|
+
duration: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
13
|
+
_exporting: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
14
|
+
_rendering: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
15
|
+
_forceMount: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
16
16
|
}, {
|
|
17
17
|
readonly store: any;
|
|
18
18
|
} & {
|
|
@@ -35,17 +35,17 @@ export declare const Page: import("mobx-state-tree").IModelType<{
|
|
|
35
35
|
} & (T extends ElementType["type"] ? Partial<Omit<Extract<ElementType, {
|
|
36
36
|
type: T;
|
|
37
37
|
}>, "type">> : Record<string, any>), { skipSelect }?: {
|
|
38
|
-
skipSelect?: boolean;
|
|
38
|
+
skipSelect?: boolean | undefined;
|
|
39
39
|
}): T extends ElementType["type"] ? Extract<ElementType, {
|
|
40
40
|
type: T;
|
|
41
41
|
}> : NodeType;
|
|
42
|
-
canMoveElementsUp(ids: Array<string>):
|
|
42
|
+
canMoveElementsUp(ids: Array<string>): boolean;
|
|
43
43
|
moveElementsUp(ids: Array<string>): void;
|
|
44
|
-
canMoveElementsTop(ids: Array<string>):
|
|
44
|
+
canMoveElementsTop(ids: Array<string>): boolean;
|
|
45
45
|
moveElementsTop(ids: Array<string>): void;
|
|
46
|
-
canMoveElementsDown(ids: Array<string>):
|
|
46
|
+
canMoveElementsDown(ids: Array<string>): boolean;
|
|
47
47
|
moveElementsDown(ids: Array<string>): void;
|
|
48
|
-
canMoveElementsBottom(ids: Array<string>):
|
|
48
|
+
canMoveElementsBottom(ids: Array<string>): boolean;
|
|
49
49
|
moveElementsBottom(ids: Array<string>): void;
|
|
50
50
|
setElementZIndex(id: any, zIndex: any): void;
|
|
51
51
|
setSize({ width, height, useMagic, softChange, }: {
|
package/model/page-model.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{detach as e,getParentOfType as t,getSnapshot as n,types as
|
|
1
|
+
import{detach as e,getParentOfType as t,getSnapshot as n,types as o}from"mobx-state-tree";import{nanoid as i}from"nanoid";import{ElementTypes as r,forEveryChild as d,TYPES_MAP as s}from"./group-model.js";import{Store as c}from"./store.js";import{getTotalClientRect as a}from"../utils/math.js";export const Page=o.model("Page",{id:o.identifier,children:o.array(o.late(()=>r)),width:o.optional(o.union(o.number,o.literal("auto")),"auto"),height:o.optional(o.union(o.number,o.literal("auto")),"auto"),background:"white",bleed:0,custom:o.frozen(),duration:5e3,_exporting:!1,_rendering:!1,_forceMount:!1}).postProcessSnapshot(e=>{const t=Object.assign({},e),n={};for(var o in t){"_"!==o[0]&&(n[o]=e[o])}return n}).views(e=>({get store(){return t(e,c)}})).views(e=>({get startTime(){let t=0;for(const n of e.store.pages){if(n.id===e.id){return t}t+=n.duration}return t},get _exportingOrRendering(){return e._exporting||e._rendering}})).views(e=>({get computedWidth(){return"auto"===e.width?e.store.width:e.width},get computedHeight(){return"auto"===e.height?e.store.height:e.height}})).actions(e=>({toJSON:()=>JSON.parse(JSON.stringify(n(e))),_forEachElementUp(t,n){const o=t.map(t=>({id:t,index:e.children.findIndex(e=>e.id===t)}));o.sort((e,t)=>t.index-e.index);for(const{index:i}of o){if(-1==i){continue}const o=i<e.children.length-1&&e.children[i+1],r=t.indexOf(null==o?void 0:o.id)>=0;i===e.children.length-1||r||n(i)}},_forEachElementDown(t,n){const o=t.map(t=>({id:t,index:e.children.findIndex(e=>e.id===t)}));o.sort((e,t)=>e.index-t.index);for(const{index:i}of o){if(-1==i){continue}const o=i>0&&e.children[i-1],r=t.indexOf(null==o?void 0:o.id)>=0;0===i||r||n(i)}return!1}})).actions(t=>{const n={clone(e={}){const n=t.toJSON();n.children.forEach(e=>{e.id=i(10),d(e,e=>{e.id=i(10)})});const o=Object.assign(Object.assign(Object.assign({},n),{id:i(10)}),e),r=t.store.addPage(o),s=t.store.pages.indexOf(t);return r.setZIndex(s+1),r.select(),r},setZIndex(e){t.store.setPageZIndex(t.id,e)},set(e){Object.assign(t,e)},select(){t.store.selectPage(t.id)},addElement(e,{skipSelect:n=!1}={}){const o=s[e.type];if(!o){return void console.error("Can not find model with type "+e.type)}"children"in e&&Array.isArray(e.children)&&d(e,e=>{e.id=e.id||i(10)});const r=t.children.reduce((t,n)=>{if("group"===n.type){const o=n.children.reduce((t,n)=>{var o;const i=null===(o=n.name)||void 0===o?void 0:o.match(new RegExp(`${e.type}-(\\d+)`));if(i){const e=parseInt(i[1],10);return Math.max(t,e||0)}},0);return Math.max(t,o||0)}{const o=n.name.match(new RegExp(`${e.type}-(\\d+)`));if(o){const e=parseInt(o[1],10);return Math.max(t,e||0)}}return t},0),c=o.create(Object.assign({id:i(10),name:`${e.type}-${r+1}`},e));return t.children.push(c),c.selectable&&!n&&t.store.selectElements([c.id]),c},canMoveElementsUp(e){let n=!1;return t._forEachElementUp(e,()=>{n=n||!0}),n},moveElementsUp(n){t._forEachElementUp(n,n=>{const o=t.children[n];e(o),t.children.splice(n+1,0,o)})},canMoveElementsTop:e=>n.canMoveElementsUp(e),moveElementsTop(e){const n=[],o=[];t.children.forEach(t=>{e.indexOf(t.id)>=0?n.push(t):o.push(t)}),t.children.replace(o.concat(n))},canMoveElementsDown(e){let n=!1;return t._forEachElementDown(e,()=>{n=n||!0}),n},moveElementsDown(n){t._forEachElementDown(n,n=>{const o=t.children[n];e(o),t.children.splice(n-1,0,o)})},canMoveElementsBottom:e=>n.canMoveElementsDown(e),moveElementsBottom(e){const n=[],o=[];t.children.forEach(t=>{e.indexOf(t.id)>=0?n.push(t):o.push(t)}),t.children.replace(n.concat(o))},setElementZIndex(n,o){const i=t.children.find(e=>e.id===n);i&&(e(i),t.children.remove(i),t.children.splice(o,0,i))},setSize({width:e,height:n,useMagic:o,softChange:i}){if(o){const o=[],i=e=>"image"===e.type&&e.x<1&&e.y<1&&e.width>=t.computedWidth-2&&e.height>=t.computedHeight-2;d(t,e=>{"group"!==e.type&&(i(e)||o.push(e))});const r=o.length?a(o):{x:0,y:0,width:t.computedWidth,height:t.computedHeight},s=1/4,c=Math.max(0,Math.min(r.x,t.computedWidth-r.x-r.width)),m=t.computedWidth*s,h=Math.max(0,c-m),l=Math.max(0,Math.min(r.y,t.computedHeight-r.y-r.height)),p=t.computedHeight*s,u=Math.max(0,l-p),g=t.computedWidth-2*h,f=t.computedHeight-2*u,E=e/g,x=n/f,v=Math.min(E,x),w=(e-g*v)/2-h*v,y=(n-f*v)/2-u*v;d(t,e=>{"group"!==e.type&&(i(e)?e.set({x:e.x*v,y:e.y*v,width:e.width*E,height:e.height*x,cropX:0,cropY:0,cropWidth:1,cropHeight:1}):(e.set({x:w+e.x*v,y:y+e.y*v,width:e.width*v,height:e.height*v}),"text"===e.type?e.set({fontSize:e.fontSize*v}):"figure"===e.type&&e.set({strokeWidth:e.strokeWidth*v})))})}i||(t.width=e),i||(t.height=n)}};return n}).actions(e=>({moveElementUp(t){console.warn("page.moveElementUp(id) is deprecated. Please use page.moveElementsUp([id1, id2]) instead."),e.moveElementsUp([t])},moveElementDown(t){console.warn("page.moveElementDown(id) is deprecated. Please use page.moveElementsDown([id1, id2]) instead."),e.moveElementsDown([t])},moveElementTop(t){console.warn("page.moveElementTop(id) is deprecated. Please use page.moveElementsTop([id1, id2]) instead."),e.moveElementsTop([t])},moveElementBottom(t){console.warn("page.moveElementBottom(id) is deprecated. Please use page.moveElementsBottom([id1, id2]) instead."),e.moveElementsBottom([t])},play(){e.store.play({startTime:e.startTime,endTime:e.startTime+e.duration})}}));
|
package/model/shape-model.d.ts
CHANGED
|
@@ -1,93 +1,118 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
2
|
export declare const Animation: import("mobx-state-tree").IModelType<{
|
|
3
|
-
delay: import("mobx-state-tree").IType<number, number, number>;
|
|
4
|
-
duration: import("mobx-state-tree").IType<number, number, number>;
|
|
5
|
-
enabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
3
|
+
delay: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
4
|
+
duration: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
5
|
+
enabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
6
6
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
7
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
8
|
-
data: import("mobx-state-tree").IType<{}, {}, {}>;
|
|
7
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
8
|
+
data: import("mobx-state-tree").IType<{} | null | undefined, {}, {}>;
|
|
9
9
|
}, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
10
10
|
export declare const getDiff: (obj1: Record<string, any>, obj2: Record<string, any>) => Record<string, any>;
|
|
11
11
|
export declare const ShapeFilter: import("mobx-state-tree").IModelType<{
|
|
12
|
-
intensity: import("mobx-state-tree").IType<number, number, number>;
|
|
12
|
+
intensity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
13
13
|
}, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
|
|
14
14
|
export declare const INDEPENDENT_FILTERS: string[];
|
|
15
15
|
export declare const Shape: import("mobx-state-tree").IModelType<{
|
|
16
16
|
id: import("mobx-state-tree").ISimpleType<string>;
|
|
17
|
-
type: import("mobx-state-tree").IType<string, string, string>;
|
|
18
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
19
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
17
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
18
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
19
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
20
20
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
21
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
22
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
23
|
-
removable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
24
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
25
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
21
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
22
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
23
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
24
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
25
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
26
26
|
} & {
|
|
27
|
-
x: import("mobx-state-tree").IType<number, number, number>;
|
|
28
|
-
y: import("mobx-state-tree").IType<number, number, number>;
|
|
29
|
-
width: import("mobx-state-tree").IType<number, number, number>;
|
|
30
|
-
height: import("mobx-state-tree").IType<number, number, number>;
|
|
31
|
-
rotation: import("mobx-state-tree").IType<number, number, number>;
|
|
32
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
27
|
+
x: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
28
|
+
y: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
29
|
+
width: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
30
|
+
height: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
31
|
+
rotation: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
32
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
33
33
|
animations: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
|
|
34
|
-
delay: import("mobx-state-tree").IType<number, number, number>;
|
|
35
|
-
duration: import("mobx-state-tree").IType<number, number, number>;
|
|
36
|
-
enabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
34
|
+
delay: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
35
|
+
duration: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
36
|
+
enabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
37
37
|
type: import("mobx-state-tree").ISimpleType<string>;
|
|
38
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
39
|
-
data: import("mobx-state-tree").IType<{}, {}, {}>;
|
|
38
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
39
|
+
data: import("mobx-state-tree").IType<{} | null | undefined, {}, {}>;
|
|
40
40
|
}, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
41
|
-
blurEnabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
42
|
-
blurRadius: import("mobx-state-tree").IType<number, number, number>;
|
|
43
|
-
brightnessEnabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
44
|
-
brightness: import("mobx-state-tree").IType<number, number, number>;
|
|
45
|
-
sepiaEnabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
46
|
-
grayscaleEnabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
41
|
+
blurEnabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
42
|
+
blurRadius: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
43
|
+
brightnessEnabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
44
|
+
brightness: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
45
|
+
sepiaEnabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
46
|
+
grayscaleEnabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
47
47
|
filters: import("mobx-state-tree").IMapType<import("mobx-state-tree").IModelType<{
|
|
48
|
-
intensity: import("mobx-state-tree").IType<number, number, number>;
|
|
48
|
+
intensity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
49
49
|
}, {}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
|
|
50
|
-
shadowEnabled: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
51
|
-
shadowBlur: import("mobx-state-tree").IType<number, number, number>;
|
|
52
|
-
shadowOffsetX: import("mobx-state-tree").IType<number, number, number>;
|
|
53
|
-
shadowOffsetY: import("mobx-state-tree").IType<number, number, number>;
|
|
54
|
-
shadowColor: import("mobx-state-tree").IType<string, string, string>;
|
|
55
|
-
shadowOpacity: import("mobx-state-tree").IType<number, number, number>;
|
|
56
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
57
|
-
draggable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
58
|
-
resizable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
59
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
60
|
-
contentEditable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
61
|
-
styleEditable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
62
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
63
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
50
|
+
shadowEnabled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
51
|
+
shadowBlur: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
52
|
+
shadowOffsetX: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
53
|
+
shadowOffsetY: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
54
|
+
shadowColor: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
55
|
+
shadowOpacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
56
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
57
|
+
draggable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
58
|
+
resizable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
59
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
60
|
+
contentEditable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
61
|
+
styleEditable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
62
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
63
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
64
64
|
}, {
|
|
65
|
-
readonly locked: boolean;
|
|
66
65
|
readonly page: any;
|
|
67
66
|
readonly store: any;
|
|
68
67
|
readonly top: import("mobx-state-tree").ModelInstanceTypeProps<{
|
|
69
68
|
id: import("mobx-state-tree").ISimpleType<string>;
|
|
70
|
-
type: import("mobx-state-tree").IType<string, string, string>;
|
|
71
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
72
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
69
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
70
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
71
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
73
72
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
74
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
75
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
76
|
-
removable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
77
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
78
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
73
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
74
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
75
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
76
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
77
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
79
78
|
}> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IModelType<{
|
|
80
79
|
id: import("mobx-state-tree").ISimpleType<string>;
|
|
81
|
-
type: import("mobx-state-tree").IType<string, string, string>;
|
|
82
|
-
name: import("mobx-state-tree").IType<string, string, string>;
|
|
83
|
-
opacity: import("mobx-state-tree").IType<number, number, number>;
|
|
80
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
81
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
82
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
84
83
|
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
85
|
-
visible: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
86
|
-
selectable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
87
|
-
removable: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
88
|
-
alwaysOnTop: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
89
|
-
showInExport: import("mobx-state-tree").IType<boolean, boolean, boolean>;
|
|
84
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
85
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
86
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
87
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
88
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
90
89
|
}, {}, import("mobx-state-tree").ModelCreationType<{
|
|
90
|
+
id: string;
|
|
91
|
+
type: string | undefined;
|
|
92
|
+
name: string | undefined;
|
|
93
|
+
opacity: number | undefined;
|
|
94
|
+
custom: any;
|
|
95
|
+
visible: boolean | undefined;
|
|
96
|
+
selectable: boolean | undefined;
|
|
97
|
+
removable: boolean | undefined;
|
|
98
|
+
alwaysOnTop: boolean | undefined;
|
|
99
|
+
showInExport: boolean | undefined;
|
|
100
|
+
}>, import("mobx-state-tree").ModelSnapshotType<{
|
|
101
|
+
id: import("mobx-state-tree").ISimpleType<string>;
|
|
102
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
103
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
104
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
105
|
+
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
106
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
107
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
108
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
109
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
110
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
111
|
+
}>>>;
|
|
112
|
+
readonly parent: any;
|
|
113
|
+
readonly zIndex: any;
|
|
114
|
+
} & {
|
|
115
|
+
toJSON(): {
|
|
91
116
|
id: string;
|
|
92
117
|
type: string;
|
|
93
118
|
name: string;
|
|
@@ -98,14 +123,10 @@ export declare const Shape: import("mobx-state-tree").IModelType<{
|
|
|
98
123
|
removable: boolean;
|
|
99
124
|
alwaysOnTop: boolean;
|
|
100
125
|
showInExport: boolean;
|
|
101
|
-
}
|
|
102
|
-
readonly parent: any;
|
|
103
|
-
readonly zIndex: any;
|
|
104
|
-
} & {
|
|
105
|
-
toJSON(): {};
|
|
126
|
+
};
|
|
106
127
|
} & {
|
|
107
128
|
clone(attrs?: any, { skipSelect }?: {
|
|
108
|
-
skipSelect?: boolean;
|
|
129
|
+
skipSelect?: boolean | undefined;
|
|
109
130
|
}): import("./node-model.js").NodeType;
|
|
110
131
|
set(attrs: any): void;
|
|
111
132
|
moveUp(): void;
|
|
@@ -115,30 +136,33 @@ export declare const Shape: import("mobx-state-tree").IModelType<{
|
|
|
115
136
|
setZIndex(zIndex: number): void;
|
|
116
137
|
beforeDestroy(): void;
|
|
117
138
|
} & {
|
|
118
|
-
readonly
|
|
119
|
-
|
|
120
|
-
y: number;
|
|
121
|
-
width: number;
|
|
122
|
-
height: number;
|
|
123
|
-
rotation: number;
|
|
124
|
-
opacity: number;
|
|
125
|
-
color: any;
|
|
126
|
-
fontSize: any;
|
|
127
|
-
};
|
|
139
|
+
readonly locked: boolean;
|
|
140
|
+
readonly a: Record<string, any>;
|
|
128
141
|
animated(attr: any): any;
|
|
129
142
|
} & {
|
|
130
143
|
setAnimation(type: any, attrs: any): void;
|
|
131
144
|
setFilter(type: any, value: any): void;
|
|
132
145
|
}, import("mobx-state-tree").ModelCreationType<{
|
|
133
146
|
id: string;
|
|
134
|
-
type: string;
|
|
135
|
-
name: string;
|
|
136
|
-
opacity: number;
|
|
147
|
+
type: string | undefined;
|
|
148
|
+
name: string | undefined;
|
|
149
|
+
opacity: number | undefined;
|
|
137
150
|
custom: any;
|
|
138
|
-
visible: boolean;
|
|
139
|
-
selectable: boolean;
|
|
140
|
-
removable: boolean;
|
|
141
|
-
alwaysOnTop: boolean;
|
|
142
|
-
showInExport: boolean;
|
|
143
|
-
}>, {
|
|
151
|
+
visible: boolean | undefined;
|
|
152
|
+
selectable: boolean | undefined;
|
|
153
|
+
removable: boolean | undefined;
|
|
154
|
+
alwaysOnTop: boolean | undefined;
|
|
155
|
+
showInExport: boolean | undefined;
|
|
156
|
+
}>, import("mobx-state-tree").ModelSnapshotType<{
|
|
157
|
+
id: import("mobx-state-tree").ISimpleType<string>;
|
|
158
|
+
type: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
159
|
+
name: import("mobx-state-tree").IType<string | undefined, string, string>;
|
|
160
|
+
opacity: import("mobx-state-tree").IType<number | undefined, number, number>;
|
|
161
|
+
custom: import("mobx-state-tree").IType<any, any, any>;
|
|
162
|
+
visible: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
163
|
+
selectable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
164
|
+
removable: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
165
|
+
alwaysOnTop: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
166
|
+
showInExport: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
|
|
167
|
+
}>>;
|
|
144
168
|
export type ShapeType = Instance<typeof Shape>;
|
package/model/shape-model.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{types as
|
|
1
|
+
import{types as e}from"mobx-state-tree";import{animate as t}from"../utils/animations.js";import{observable as n,action as i}from"mobx";import{Node as o}from"./node-model.js";export const Animation=e.model("Animation",{delay:0,duration:500,enabled:!0,type:e.enumeration("Type",["enter","exit","loop"]),name:"none",data:e.frozen({})});export const getDiff=(e,t)=>{const n={};for(const i in t){if("number"==typeof e[i]&&"number"==typeof t[i]){const o=t[i]-e[i];0!==o&&(n[i]=o)}}return n};export const ShapeFilter=e.model("ShapeFilter",{intensity:1});export const INDEPENDENT_FILTERS=["temperature","contrast","highlights","shadows","white","black","saturation","vibrance"];export const Shape=o.named("Shape").props({x:0,y:0,width:100,height:100,rotation:0,opacity:1,animations:e.array(Animation),blurEnabled:!1,blurRadius:10,brightnessEnabled:!1,brightness:0,sepiaEnabled:!1,grayscaleEnabled:!1,filters:e.map(ShapeFilter),shadowEnabled:!1,shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"black",shadowOpacity:1,visible:!0,draggable:!0,resizable:!0,selectable:!0,contentEditable:!0,styleEditable:!0,alwaysOnTop:!1,showInExport:!0}).preProcessSnapshot(e=>{const t=Object.assign(Object.assign({},e),{x:"x"in e&&e.x||0,y:"y"in e&&e.y||0,filters:"filters"in e?Array.isArray(e.filters)?{}:e.filters:void 0});return"width"in e&&(t.width=t.width||1),"height"in e&&(t.height=t.height||1),"locked"in e&&e.locked&&(t.draggable=!1,t.contentEditable=!1,t.styleEditable=!1,t.resizable=!1,t.removable=!1),t}).views(e=>{const o=["x","y","width","height","rotation","opacity","color","fontSize","cropX","cropY","cropWidth","cropHeight"],a=e,r={};for(const t of o){t in e&&(r[t]=a[t])}const s=n(r),l=i(e=>{for(const t in e){s[t]=e[t]}}),d=i(e=>{Object.assign(s,e)}),c=i(e=>{for(const t in e){"number"==typeof s[t]&&(s[t]=s[t]+e[t])}});return{get locked(){return!(e.draggable||e.contentEditable||e.styleEditable||e.resizable)},get a(){const{currentTime:n}=e.store,i={};for(const e in s){i[e]=a[e]}if(l(i),0===n){return s}const o=n-e.page.startTime;if(o>e.page.duration){return s}if(o<0){return s}const r=e.store.animatedElementsIds;if(r.length&&!r.includes(e.id)){return s}const p=e.animations.find(e=>"enter"===e.type),f=(null==p?void 0:p.enabled)&&o<p.delay;f&&d({opacity:0});const m=(null==p?void 0:p.enabled)&&o>=p.delay&&o<=p.delay+p.duration;if(m){const n=o-p.delay,i=t({element:e,animation:p,dTime:n}),a=getDiff(e,i);c(a)}const b=e.animations.find(e=>"exit"===e.type);if(!f&&!m&&(null==b?void 0:b.enabled)&&o>=e.page.duration-b.duration-b.delay&&o<=e.page.duration-b.delay){const n=o-(e.page.duration-b.duration-b.delay),i=t({element:e,animation:b,dTime:n}),a=getDiff(e,i);c(a)}(null==b?void 0:b.enabled)&&o>=e.page.duration-b.delay&&d({opacity:0});const h=e.animations.find(e=>"loop"===e.type);if(null==h?void 0:h.enabled){const n=t({element:e,animation:h,dTime:o}),i=getDiff(e,n);c(i)}return s},animated(e){return this.a[e]}}}).actions(e=>({setAnimation(t,n){const i=e.animations.find(e=>e.type===t);i?Object.assign(i,n):e.animations.push(Object.assign({type:t},n))},setFilter(t,n){INDEPENDENT_FILTERS.includes(t)||e.filters.forEach((t,n)=>{INDEPENDENT_FILTERS.includes(n.toString())||e.filters.delete(n.toString())}),null==n?e.filters.delete(t):e.filters.set(t,{intensity:n})}}));
|