@pooder/core 0.0.2
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/CHANGELOG.md +7 -0
- package/dist/index.d.mts +155 -0
- package/dist/index.d.ts +155 -0
- package/dist/index.js +437 -0
- package/dist/index.mjs +396 -0
- package/package.json +25 -0
- package/src/canvas.ts +3 -0
- package/src/command.ts +61 -0
- package/src/editor.ts +171 -0
- package/src/event.ts +48 -0
- package/src/extension.ts +189 -0
- package/src/index.ts +9 -0
- package/src/layer.ts +13 -0
- package/src/obj.ts +7 -0
- package/src/types.ts +102 -0
- package/tsconfig.json +13 -0
package/CHANGELOG.md
ADDED
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Canvas, FabricObject, Group } from 'fabric';
|
|
2
|
+
export { Circle, Ellipse, Group, FabricImage as Image, Line, Path, Pattern, Point, Canvas as PooderCanvas, Group as PooderLayer, FabricObject as PooderObject, Rect, Text, filters } from 'fabric';
|
|
3
|
+
|
|
4
|
+
declare module "fabric" {
|
|
5
|
+
interface FabricObject {
|
|
6
|
+
data?: any;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare module "fabric" {
|
|
11
|
+
interface Group {
|
|
12
|
+
data?: any;
|
|
13
|
+
}
|
|
14
|
+
interface GroupProps {
|
|
15
|
+
data?: any;
|
|
16
|
+
}
|
|
17
|
+
interface SerializedGroupProps {
|
|
18
|
+
data?: any;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare class ExtensionMap extends Map<string, Extension> {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
declare class CommandMap extends Map<string, Command> {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface CommandArgSchema {
|
|
29
|
+
type: 'string' | 'number' | 'boolean' | 'object' | 'any';
|
|
30
|
+
label?: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
required?: boolean;
|
|
33
|
+
default?: any;
|
|
34
|
+
options?: string[] | {
|
|
35
|
+
label: string;
|
|
36
|
+
value: any;
|
|
37
|
+
}[];
|
|
38
|
+
min?: number;
|
|
39
|
+
max?: number;
|
|
40
|
+
}
|
|
41
|
+
interface CommandSchema {
|
|
42
|
+
[argName: string]: CommandArgSchema;
|
|
43
|
+
}
|
|
44
|
+
interface Command {
|
|
45
|
+
execute(...args: any[]): boolean;
|
|
46
|
+
schema?: CommandSchema;
|
|
47
|
+
}
|
|
48
|
+
interface Event {
|
|
49
|
+
name: string;
|
|
50
|
+
data: any;
|
|
51
|
+
}
|
|
52
|
+
type EventHandler = (...args: any[]) => void | boolean;
|
|
53
|
+
interface ExtensionOptions {
|
|
54
|
+
[key: string]: any;
|
|
55
|
+
}
|
|
56
|
+
interface OptionSchema {
|
|
57
|
+
type: 'string' | 'number' | 'boolean' | 'color' | 'select';
|
|
58
|
+
options?: string[] | {
|
|
59
|
+
label: string;
|
|
60
|
+
value: any;
|
|
61
|
+
}[];
|
|
62
|
+
min?: number;
|
|
63
|
+
max?: number;
|
|
64
|
+
step?: number;
|
|
65
|
+
label?: string;
|
|
66
|
+
}
|
|
67
|
+
interface Extension<T extends ExtensionOptions = ExtensionOptions> {
|
|
68
|
+
name: string;
|
|
69
|
+
priority?: number;
|
|
70
|
+
options?: T;
|
|
71
|
+
schema?: Record<keyof T, OptionSchema>;
|
|
72
|
+
enabled?: boolean;
|
|
73
|
+
onCreate?(editor: Editor): void;
|
|
74
|
+
onMount?(editor: Editor): void;
|
|
75
|
+
onUpdate?(editor: Editor, state: EditorState): void;
|
|
76
|
+
onUnmount?(editor: Editor): void;
|
|
77
|
+
onDestroy?(editor: Editor): void;
|
|
78
|
+
commands?: Record<string, Command>;
|
|
79
|
+
}
|
|
80
|
+
interface EditorState {
|
|
81
|
+
width: number;
|
|
82
|
+
height: number;
|
|
83
|
+
metadata?: Record<string, any>;
|
|
84
|
+
}
|
|
85
|
+
interface Editor {
|
|
86
|
+
state: EditorState;
|
|
87
|
+
canvas: Canvas;
|
|
88
|
+
extensions: ExtensionMap;
|
|
89
|
+
commands: CommandMap;
|
|
90
|
+
use(extension: Extension): void;
|
|
91
|
+
unuse(name: string): void;
|
|
92
|
+
getExtension(name: string): Extension | undefined;
|
|
93
|
+
getExtensions(): Extension[];
|
|
94
|
+
enableExtension(name: string): void;
|
|
95
|
+
disableExtension(name: string): void;
|
|
96
|
+
registerCommand(name: string, command: Command): void;
|
|
97
|
+
unregisterCommand(name: string): void;
|
|
98
|
+
executeCommand(name: string, ...args: any[]): void;
|
|
99
|
+
on(event: string, handler: EventHandler, priority?: number): void;
|
|
100
|
+
off(event: string, handler: EventHandler): void;
|
|
101
|
+
emit(event: string, ...args: any[]): void;
|
|
102
|
+
getObjects(): FabricObject[];
|
|
103
|
+
getObject(id: string, layerId?: string): FabricObject | undefined;
|
|
104
|
+
getLayers(): Group[];
|
|
105
|
+
getLayer(id: string): Group | undefined;
|
|
106
|
+
updateState(updater: (state: EditorState) => EditorState): void;
|
|
107
|
+
getState(): EditorState;
|
|
108
|
+
toJSON(): any;
|
|
109
|
+
loadFromJSON(json: any): Promise<void>;
|
|
110
|
+
destroy(): void;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
declare class PooderEditor implements Editor {
|
|
114
|
+
state: EditorState;
|
|
115
|
+
canvas: Canvas;
|
|
116
|
+
extensions: ExtensionMap;
|
|
117
|
+
commands: CommandMap;
|
|
118
|
+
private eventBus;
|
|
119
|
+
private commandManager;
|
|
120
|
+
private extensionManager;
|
|
121
|
+
private destroyed;
|
|
122
|
+
constructor(el: HTMLCanvasElement, options?: {
|
|
123
|
+
width?: number;
|
|
124
|
+
height?: number;
|
|
125
|
+
extensions?: Extension[];
|
|
126
|
+
});
|
|
127
|
+
use(extension: Extension): void;
|
|
128
|
+
unuse(name: string): void;
|
|
129
|
+
getExtension(name: string): Extension | undefined;
|
|
130
|
+
getExtensions(): Extension[];
|
|
131
|
+
enableExtension(name: string): void;
|
|
132
|
+
disableExtension(name: string): void;
|
|
133
|
+
registerCommand(name: string, command: Command): void;
|
|
134
|
+
unregisterCommand(name: string): void;
|
|
135
|
+
executeCommand(name: string, ...args: any[]): boolean;
|
|
136
|
+
on(event: string, handler: EventHandler, priority?: number): void;
|
|
137
|
+
off(event: string, handler: EventHandler): void;
|
|
138
|
+
emit(event: string, ...args: any[]): void;
|
|
139
|
+
getObjects(): FabricObject[];
|
|
140
|
+
getObject(id: string, layerId?: string): FabricObject | undefined;
|
|
141
|
+
getLayers(): Group[];
|
|
142
|
+
getLayer(id: string): Group | undefined;
|
|
143
|
+
updateState(updater: (state: EditorState) => EditorState): void;
|
|
144
|
+
toJSON(): {
|
|
145
|
+
width: number;
|
|
146
|
+
height: number;
|
|
147
|
+
metadata: Record<string, any> | undefined;
|
|
148
|
+
};
|
|
149
|
+
loadFromJSON(json: any): Promise<void>;
|
|
150
|
+
getState(): EditorState;
|
|
151
|
+
destroy(): void;
|
|
152
|
+
isDestroyed(): boolean;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { type Command, type Editor, type EditorState, type Event, type EventHandler, type Extension, type ExtensionOptions, type OptionSchema, PooderEditor };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Canvas, FabricObject, Group } from 'fabric';
|
|
2
|
+
export { Circle, Ellipse, Group, FabricImage as Image, Line, Path, Pattern, Point, Canvas as PooderCanvas, Group as PooderLayer, FabricObject as PooderObject, Rect, Text, filters } from 'fabric';
|
|
3
|
+
|
|
4
|
+
declare module "fabric" {
|
|
5
|
+
interface FabricObject {
|
|
6
|
+
data?: any;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare module "fabric" {
|
|
11
|
+
interface Group {
|
|
12
|
+
data?: any;
|
|
13
|
+
}
|
|
14
|
+
interface GroupProps {
|
|
15
|
+
data?: any;
|
|
16
|
+
}
|
|
17
|
+
interface SerializedGroupProps {
|
|
18
|
+
data?: any;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare class ExtensionMap extends Map<string, Extension> {
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
declare class CommandMap extends Map<string, Command> {
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface CommandArgSchema {
|
|
29
|
+
type: 'string' | 'number' | 'boolean' | 'object' | 'any';
|
|
30
|
+
label?: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
required?: boolean;
|
|
33
|
+
default?: any;
|
|
34
|
+
options?: string[] | {
|
|
35
|
+
label: string;
|
|
36
|
+
value: any;
|
|
37
|
+
}[];
|
|
38
|
+
min?: number;
|
|
39
|
+
max?: number;
|
|
40
|
+
}
|
|
41
|
+
interface CommandSchema {
|
|
42
|
+
[argName: string]: CommandArgSchema;
|
|
43
|
+
}
|
|
44
|
+
interface Command {
|
|
45
|
+
execute(...args: any[]): boolean;
|
|
46
|
+
schema?: CommandSchema;
|
|
47
|
+
}
|
|
48
|
+
interface Event {
|
|
49
|
+
name: string;
|
|
50
|
+
data: any;
|
|
51
|
+
}
|
|
52
|
+
type EventHandler = (...args: any[]) => void | boolean;
|
|
53
|
+
interface ExtensionOptions {
|
|
54
|
+
[key: string]: any;
|
|
55
|
+
}
|
|
56
|
+
interface OptionSchema {
|
|
57
|
+
type: 'string' | 'number' | 'boolean' | 'color' | 'select';
|
|
58
|
+
options?: string[] | {
|
|
59
|
+
label: string;
|
|
60
|
+
value: any;
|
|
61
|
+
}[];
|
|
62
|
+
min?: number;
|
|
63
|
+
max?: number;
|
|
64
|
+
step?: number;
|
|
65
|
+
label?: string;
|
|
66
|
+
}
|
|
67
|
+
interface Extension<T extends ExtensionOptions = ExtensionOptions> {
|
|
68
|
+
name: string;
|
|
69
|
+
priority?: number;
|
|
70
|
+
options?: T;
|
|
71
|
+
schema?: Record<keyof T, OptionSchema>;
|
|
72
|
+
enabled?: boolean;
|
|
73
|
+
onCreate?(editor: Editor): void;
|
|
74
|
+
onMount?(editor: Editor): void;
|
|
75
|
+
onUpdate?(editor: Editor, state: EditorState): void;
|
|
76
|
+
onUnmount?(editor: Editor): void;
|
|
77
|
+
onDestroy?(editor: Editor): void;
|
|
78
|
+
commands?: Record<string, Command>;
|
|
79
|
+
}
|
|
80
|
+
interface EditorState {
|
|
81
|
+
width: number;
|
|
82
|
+
height: number;
|
|
83
|
+
metadata?: Record<string, any>;
|
|
84
|
+
}
|
|
85
|
+
interface Editor {
|
|
86
|
+
state: EditorState;
|
|
87
|
+
canvas: Canvas;
|
|
88
|
+
extensions: ExtensionMap;
|
|
89
|
+
commands: CommandMap;
|
|
90
|
+
use(extension: Extension): void;
|
|
91
|
+
unuse(name: string): void;
|
|
92
|
+
getExtension(name: string): Extension | undefined;
|
|
93
|
+
getExtensions(): Extension[];
|
|
94
|
+
enableExtension(name: string): void;
|
|
95
|
+
disableExtension(name: string): void;
|
|
96
|
+
registerCommand(name: string, command: Command): void;
|
|
97
|
+
unregisterCommand(name: string): void;
|
|
98
|
+
executeCommand(name: string, ...args: any[]): void;
|
|
99
|
+
on(event: string, handler: EventHandler, priority?: number): void;
|
|
100
|
+
off(event: string, handler: EventHandler): void;
|
|
101
|
+
emit(event: string, ...args: any[]): void;
|
|
102
|
+
getObjects(): FabricObject[];
|
|
103
|
+
getObject(id: string, layerId?: string): FabricObject | undefined;
|
|
104
|
+
getLayers(): Group[];
|
|
105
|
+
getLayer(id: string): Group | undefined;
|
|
106
|
+
updateState(updater: (state: EditorState) => EditorState): void;
|
|
107
|
+
getState(): EditorState;
|
|
108
|
+
toJSON(): any;
|
|
109
|
+
loadFromJSON(json: any): Promise<void>;
|
|
110
|
+
destroy(): void;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
declare class PooderEditor implements Editor {
|
|
114
|
+
state: EditorState;
|
|
115
|
+
canvas: Canvas;
|
|
116
|
+
extensions: ExtensionMap;
|
|
117
|
+
commands: CommandMap;
|
|
118
|
+
private eventBus;
|
|
119
|
+
private commandManager;
|
|
120
|
+
private extensionManager;
|
|
121
|
+
private destroyed;
|
|
122
|
+
constructor(el: HTMLCanvasElement, options?: {
|
|
123
|
+
width?: number;
|
|
124
|
+
height?: number;
|
|
125
|
+
extensions?: Extension[];
|
|
126
|
+
});
|
|
127
|
+
use(extension: Extension): void;
|
|
128
|
+
unuse(name: string): void;
|
|
129
|
+
getExtension(name: string): Extension | undefined;
|
|
130
|
+
getExtensions(): Extension[];
|
|
131
|
+
enableExtension(name: string): void;
|
|
132
|
+
disableExtension(name: string): void;
|
|
133
|
+
registerCommand(name: string, command: Command): void;
|
|
134
|
+
unregisterCommand(name: string): void;
|
|
135
|
+
executeCommand(name: string, ...args: any[]): boolean;
|
|
136
|
+
on(event: string, handler: EventHandler, priority?: number): void;
|
|
137
|
+
off(event: string, handler: EventHandler): void;
|
|
138
|
+
emit(event: string, ...args: any[]): void;
|
|
139
|
+
getObjects(): FabricObject[];
|
|
140
|
+
getObject(id: string, layerId?: string): FabricObject | undefined;
|
|
141
|
+
getLayers(): Group[];
|
|
142
|
+
getLayer(id: string): Group | undefined;
|
|
143
|
+
updateState(updater: (state: EditorState) => EditorState): void;
|
|
144
|
+
toJSON(): {
|
|
145
|
+
width: number;
|
|
146
|
+
height: number;
|
|
147
|
+
metadata: Record<string, any> | undefined;
|
|
148
|
+
};
|
|
149
|
+
loadFromJSON(json: any): Promise<void>;
|
|
150
|
+
getState(): EditorState;
|
|
151
|
+
destroy(): void;
|
|
152
|
+
isDestroyed(): boolean;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export { type Command, type Editor, type EditorState, type Event, type EventHandler, type Extension, type ExtensionOptions, type OptionSchema, PooderEditor };
|