zenz-contract 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,260 @@
1
+ import { Layout } from './lib/interface';
2
+ import { BaseElement } from './lib/BaseElement';
3
+ import { LayoutElement } from './lib/LayoutElement';
4
+ import { Loader } from './Loader';
5
+ /**
6
+ * 编辑器
7
+ * @param renderEl 渲染节点
8
+ * @param options 选项
9
+ */
10
+ export declare class Editor<D = Record<string, any>, T extends Editor.EditorOptions<D> = Editor.EditorOptions<D>, E extends Editor.EventMap = Editor.EventMap> extends Loader<D, T, E> {
11
+ #private;
12
+ constructor(renderEl: HTMLDivElement, options?: Partial<T>);
13
+ /**
14
+ * 编辑节点
15
+ */
16
+ get editElement(): HTMLDivElement;
17
+ /**
18
+ * 悬停的节点
19
+ */
20
+ get hoverElement(): BaseElement<any, BaseElement<any, any, any>, BaseElement.EventMap>;
21
+ /**
22
+ * 选中的节点
23
+ */
24
+ get selectedElement(): BaseElement<any, BaseElement<any, any, any>, BaseElement.EventMap>;
25
+ /**
26
+ * 边界矩形
27
+ */
28
+ get domRect(): DOMRect;
29
+ /**
30
+ * 操作历史
31
+ */
32
+ get history(): Editor.History.Item<Editor.History.Type>[];
33
+ /**
34
+ * 可以撤销
35
+ */
36
+ get canRevoke(): boolean;
37
+ /**
38
+ * 可以重做
39
+ */
40
+ get cnaRedo(): boolean;
41
+ disposed(): void;
42
+ /**
43
+ * 选择节点
44
+ * @param target
45
+ */
46
+ select<T extends BaseElement<any>>(target: T): void;
47
+ /**
48
+ * 创建边界矩形
49
+ * @param target
50
+ * @returns
51
+ */
52
+ createDomRect<T extends BaseElement<any>>(target: T): HTMLDivElement;
53
+ /**
54
+ * 撤销
55
+ */
56
+ revoke(): void;
57
+ /**
58
+ * 重做
59
+ */
60
+ redo(): void;
61
+ }
62
+ export declare namespace Editor {
63
+ /**
64
+ * 事件列表
65
+ */
66
+ interface EventMap extends Loader.EventMap {
67
+ /**
68
+ * 尺寸发生改变
69
+ * @param data
70
+ */
71
+ resize(data: DOMRect): void;
72
+ (event: 'resize', data: DOMRect): void;
73
+ /**
74
+ * 悬停节点
75
+ * @param target 目标节点
76
+ * @param nativeData 原始鼠标事件
77
+ */
78
+ hover<T = BaseElement<any>>(target: T, nativeData: MouseEvent): void;
79
+ <T = BaseElement<any>>(event: 'hover', target: T, nativeData: MouseEvent): void;
80
+ /**
81
+ * 选中节点
82
+ * @param target 目标节点
83
+ */
84
+ select<T = BaseElement<any>>(target: T): void;
85
+ <T = BaseElement<any>>(event: 'select', target: T): void;
86
+ /**
87
+ * 事件触发
88
+ * @param eventData 事件数据
89
+ * @param nativeEvent 原始鼠标事件
90
+ */
91
+ eventTrigger<T, U>(eventData: EventElementData<T, U>, nativeEvent: MouseEvent): void;
92
+ <T, U>(event: 'eventTrigger', eventData: EventElementData<T, U>, nativeEvent: MouseEvent): void;
93
+ /**
94
+ * 插入节点
95
+ * @param insertHook 插入钩子函数
96
+ * @param eventData 事件数据
97
+ * @param nativeEvent 原始鼠标事件
98
+ */
99
+ insert(insertHook: (target: BaseElement<any>) => void, eventData: EventElementData<InsertType | number>, nativeEvent: MouseEvent): void;
100
+ (event: 'insert', insertHook: (target: BaseElement<any>) => void, eventData: EventElementData<InsertType | number>, nativeEvent: MouseEvent): void;
101
+ }
102
+ /**
103
+ * 选项
104
+ */
105
+ interface EditorOptions<T = Record<string, any>> extends Loader.Options<T> {
106
+ /**
107
+ * 主题颜色
108
+ * @default #03A9F4
109
+ */
110
+ themeColor: string;
111
+ }
112
+ namespace EditorOptions {
113
+ /**
114
+ * 获取默认值
115
+ * @returns
116
+ */
117
+ function getDefault(): EditorOptions;
118
+ }
119
+ /**
120
+ * 类名
121
+ */
122
+ namespace ClassName {
123
+ const Editor = "zen-contract-editor";
124
+ const EditorRect = "editor-rect";
125
+ const EditorRectBack = "editor-rect-back";
126
+ const EditorContainer = "zen-contract-editor-container";
127
+ const EditorSelected = "editor-selected";
128
+ const EditorInsertBtn = "editor-insert-btn";
129
+ const EditorInsertBtnBefore = "editor-insert-btn-before";
130
+ const EditorInsertBtnAfter = "editor-insert-btn-after";
131
+ const EditorSplitLine = "editor-split-line";
132
+ function getSelectedTypeClassName(type: Layout.Type): string;
133
+ }
134
+ /**
135
+ * 事件节点数据
136
+ */
137
+ interface EventElementData<T = any, U = BaseElement<any>> {
138
+ /**
139
+ * 事件类型
140
+ */
141
+ type: string;
142
+ /**
143
+ * 事件目标
144
+ */
145
+ target: U;
146
+ /**
147
+ * 事件数据
148
+ */
149
+ data: T;
150
+ }
151
+ /**
152
+ * 插入类型
153
+ */
154
+ enum InsertType {
155
+ /**
156
+ * 在之前插入
157
+ */
158
+ Before = "before",
159
+ /**
160
+ * 在之后插入
161
+ */
162
+ After = "after",
163
+ /**
164
+ * 在父级之前插入
165
+ */
166
+ ParentBefore = "parentBefore",
167
+ /**
168
+ * 在父级之后插入
169
+ */
170
+ ParentAfter = "parentAfter"
171
+ }
172
+ /**
173
+ * 操作历史
174
+ */
175
+ type History = History.Item[];
176
+ namespace History {
177
+ /**
178
+ * 历史项目
179
+ */
180
+ interface Item<T extends History.Type = History.Type> {
181
+ /**
182
+ * 类型
183
+ */
184
+ type: T;
185
+ /**
186
+ * 数据
187
+ */
188
+ data: History.Value[T];
189
+ }
190
+ /**
191
+ * 操作类型
192
+ */
193
+ enum Type {
194
+ /**
195
+ * 新增
196
+ */
197
+ Add = "add",
198
+ /**
199
+ * 删除
200
+ */
201
+ Delete = "delete",
202
+ /**
203
+ * 修改
204
+ */
205
+ Modify = "modify"
206
+ }
207
+ /**
208
+ * 操作值
209
+ */
210
+ interface Value {
211
+ [Type.Add]: {
212
+ /**
213
+ * 目标
214
+ */
215
+ target: BaseElement<any>;
216
+ /**
217
+ * 父级
218
+ */
219
+ parent: LayoutElement;
220
+ /**
221
+ * 在父级的位置
222
+ */
223
+ index: number;
224
+ };
225
+ [Type.Delete]: {
226
+ /**
227
+ * 目标
228
+ * @description 为数组时判断为全部删除,index属性无效
229
+ */
230
+ target: BaseElement<any> | BaseElement<any>[];
231
+ /**
232
+ * 父级
233
+ */
234
+ parent: LayoutElement;
235
+ /**
236
+ * 在父级的位置
237
+ */
238
+ index?: number;
239
+ };
240
+ [Type.Modify]: {
241
+ /**
242
+ * 目标
243
+ */
244
+ target: BaseElement<any>;
245
+ /**
246
+ * 配置路径
247
+ */
248
+ path: string[];
249
+ /**
250
+ * 当前值
251
+ */
252
+ value: any;
253
+ /**
254
+ * 修改前的值
255
+ */
256
+ oldValue: any;
257
+ };
258
+ }
259
+ }
260
+ }
@@ -0,0 +1,81 @@
1
+ import { DataProxy } from '@kotron/watcher';
2
+ import { Layout, Variable } from './lib/interface';
3
+ import { LayoutElement } from './lib/LayoutElement';
4
+ import { BaseElement } from './lib/BaseElement';
5
+ /**
6
+ * 加载器
7
+ * @param renderEl 渲染节点
8
+ * @param options 选项
9
+ */
10
+ export declare class Loader<D = Record<string, any>, T extends Loader.Options<D> = Loader.Options<D>, E extends Loader.EventMap = Loader.EventMap> extends LayoutElement<T, E> {
11
+ #private;
12
+ constructor(renderEl: HTMLElement, options?: Partial<T>);
13
+ /**
14
+ * 渲染的节点
15
+ */
16
+ get renderEl(): HTMLElement;
17
+ /**
18
+ * SVG节点
19
+ */
20
+ get svgElement(): SVGElement;
21
+ /**
22
+ * 加载的节点
23
+ */
24
+ get loadElement(): SVGGElement;
25
+ /**
26
+ * HTML根节点
27
+ */
28
+ get rootElement(): HTMLDivElement;
29
+ /**
30
+ * 尺寸
31
+ */
32
+ get size(): {
33
+ width: number;
34
+ height: number;
35
+ };
36
+ get width(): number;
37
+ /**
38
+ * 变量列表
39
+ */
40
+ get variableList(): (keyof D | Variable<keyof D>)[];
41
+ /**
42
+ * 数据源
43
+ */
44
+ get dataSource(): DataProxy<D>;
45
+ onAppendChildDeep<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
46
+ onRemoveChildDeep<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
47
+ /**
48
+ * 根据ID获取元素
49
+ * @param id
50
+ * @returns
51
+ */
52
+ getElementById<T extends BaseElement<any> = BaseElement<any>>(id: string): T;
53
+ disposed(): void;
54
+ }
55
+ export declare namespace Loader {
56
+ /**
57
+ * 事件列表
58
+ */
59
+ interface EventMap extends LayoutElement.EventMap {
60
+ }
61
+ /**
62
+ * 选项
63
+ */
64
+ interface Options<T = Record<string, any>, K = keyof T> extends Omit<Layout, 'type'> {
65
+ /**
66
+ * 变量列表
67
+ */
68
+ variableList: Array<K | Variable<K>>;
69
+ /**
70
+ * 数据源
71
+ */
72
+ dataSource?: T;
73
+ }
74
+ namespace Options {
75
+ /**
76
+ * 获取默认值
77
+ * @returns
78
+ */
79
+ function getDefault(): Options;
80
+ }
81
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * 创建foreignObject对象
3
+ * @param options
4
+ */
5
+ export declare function createForeignObject(options?: createForeignObject.Options): {
6
+ foreignObject: SVGForeignObjectElement;
7
+ root: HTMLDivElement;
8
+ };
9
+ export declare namespace createForeignObject {
10
+ /**
11
+ * 选项
12
+ */
13
+ interface Options {
14
+ x: number | string;
15
+ y: number | string;
16
+ width: number | string;
17
+ height: number | string;
18
+ }
19
+ namespace Options {
20
+ /**
21
+ * 获取默认值
22
+ * @returns
23
+ */
24
+ function getDefault(): Options;
25
+ }
26
+ }
27
+ /**
28
+ * 获取间距值列表
29
+ * @param value 需要解析的间距值
30
+ * @param length 获取的长度
31
+ * @returns
32
+ */
33
+ export declare function getGapValue<T = number | string, R = T[]>(value: T | T[], length?: number): R;
@@ -0,0 +1,12 @@
1
+ import './lib/global.scss';
2
+ export * from './lib/interface';
3
+ export * from './lib/BaseElement';
4
+ export * from './lib/LayoutElement';
5
+ export * from './lib/ContentElement';
6
+ export * from './lib/TextElement';
7
+ export * from './lib/VariableElement';
8
+ export * from './lib/TableElement';
9
+ export * from './lib/SignatureAndSealElement';
10
+ export * as Utils from './Utils';
11
+ export * from './Loader';
12
+ export * from './Editor';
@@ -0,0 +1,120 @@
1
+ import { EventManager } from '@~crazy/eventmanager';
2
+ import { DataProxy } from '@kotron/watcher';
3
+ /**
4
+ * 基础元素
5
+ * @description 抽象类
6
+ * @param options 选项
7
+ */
8
+ export declare abstract class BaseElement<T, P extends BaseElement<any, any, any> = BaseElement<any, any, any>, E extends BaseElement.EventMap = BaseElement.EventMap> extends EventManager<E> {
9
+ #private;
10
+ constructor(options: T);
11
+ /**
12
+ * 元素
13
+ */
14
+ abstract get el(): HTMLElement;
15
+ /**
16
+ * 宽度
17
+ */
18
+ abstract get width(): number;
19
+ /**
20
+ * 高度
21
+ */
22
+ abstract get height(): number;
23
+ /**
24
+ * 唯一ID
25
+ */
26
+ get id(): string;
27
+ /**
28
+ * 父级
29
+ */
30
+ get parent(): P;
31
+ /**
32
+ * 选项
33
+ */
34
+ get options(): T;
35
+ /**
36
+ * 初始化
37
+ */
38
+ init(): void;
39
+ /**
40
+ * 设置父级
41
+ * @param parent
42
+ */
43
+ setParent(parent: P): void;
44
+ /**
45
+ * 获取根元素
46
+ * @returns
47
+ */
48
+ getRootElement<R = P>(): R;
49
+ /**
50
+ * 更新前
51
+ * @param record 数据记录
52
+ */
53
+ beforeUpdate(record: DataProxy.DataRecord<T>): void;
54
+ /**
55
+ * 更新完成
56
+ */
57
+ updated(): void;
58
+ /**
59
+ * 销毁前
60
+ */
61
+ beforeDispose(): void;
62
+ /**
63
+ * 销毁完成
64
+ */
65
+ disposed(): void;
66
+ /**
67
+ * 销毁
68
+ */
69
+ dispose(): void;
70
+ /**
71
+ * 获取选项
72
+ * @returns
73
+ */
74
+ getOptions(): T;
75
+ }
76
+ export declare namespace BaseElement {
77
+ /**
78
+ * 事件列表
79
+ */
80
+ interface EventMap {
81
+ /**
82
+ * 初始化
83
+ */
84
+ init(): void;
85
+ (event: 'init'): void;
86
+ /**
87
+ * 更新前
88
+ * @param record 数据记录
89
+ */
90
+ beforeUpdate(record: DataProxy.DataRecord): void;
91
+ (event: 'beforeUpdate', record: DataProxy.DataRecord): void;
92
+ /**
93
+ * 更新完成
94
+ */
95
+ updated(): void;
96
+ (event: 'updated'): void;
97
+ /**
98
+ * 销毁前
99
+ */
100
+ beforeDispose(): void;
101
+ (event: 'beforeDispose'): void;
102
+ /**
103
+ * 销毁完成
104
+ */
105
+ disposed(): void;
106
+ (event: 'disposed'): void;
107
+ }
108
+ /**
109
+ * 判断目标是否为基础元素
110
+ * @param target
111
+ * @returns
112
+ */
113
+ function isBaseElement(target: HTMLElement): boolean;
114
+ /**
115
+ * 获取基础元素ID
116
+ * @param target
117
+ * @returns
118
+ */
119
+ function getID(target: HTMLElement): any;
120
+ }
@@ -0,0 +1,32 @@
1
+ import { Content } from './interface';
2
+ import { BaseElement } from './BaseElement';
3
+ import { LayoutElement } from './LayoutElement';
4
+ /**
5
+ * 内容元素
6
+ * @param options 选项
7
+ */
8
+ export declare abstract class ContentElement<T extends Content = Content, E extends ContentElement.EventMap = ContentElement.EventMap, P extends LayoutElement = LayoutElement> extends BaseElement<T, P, E> {
9
+ #private;
10
+ constructor(options?: Partial<T>);
11
+ get el(): HTMLDivElement;
12
+ get width(): number;
13
+ get height(): number;
14
+ init(): void;
15
+ /**
16
+ * 添加目标到当前内容之前的位置
17
+ * @param target 需要添加的目标
18
+ */
19
+ appendBefore<T>(target: BaseElement<T>): void;
20
+ /**
21
+ * 添加目标到当前内容之后的位置
22
+ * @param target 需要添加的目标
23
+ */
24
+ appendAfter<T>(target: BaseElement<T>): void;
25
+ }
26
+ export declare namespace ContentElement {
27
+ /**
28
+ * 事件列表
29
+ */
30
+ interface EventMap extends BaseElement.EventMap {
31
+ }
32
+ }
@@ -0,0 +1,124 @@
1
+ import { Layout } from './interface';
2
+ import { BaseElement } from './BaseElement';
3
+ /**
4
+ * 布局元素
5
+ * @param options 选项
6
+ */
7
+ export declare class LayoutElement<T extends Layout = Layout, E extends LayoutElement.EventMap = LayoutElement.EventMap, P extends LayoutElement.Parent = LayoutElement.Parent> extends BaseElement<T, P, E> {
8
+ #private;
9
+ constructor(options?: Partial<T>);
10
+ get el(): HTMLDivElement;
11
+ get width(): number;
12
+ get height(): number;
13
+ /**
14
+ * 类型
15
+ */
16
+ get type(): Layout.Type;
17
+ /**
18
+ * 内填充
19
+ */
20
+ get padding(): number[];
21
+ /**
22
+ * 间距
23
+ */
24
+ get gap(): number[];
25
+ /**
26
+ * 子项
27
+ */
28
+ get children(): BaseElement<any, BaseElement<any, any, any>, BaseElement.EventMap>[];
29
+ /**
30
+ * 添加子元素生命周期
31
+ * @param child
32
+ */
33
+ onAppendChild<T>(child: BaseElement<T>): void;
34
+ /**
35
+ * 移除子元素生命周期
36
+ * @param child
37
+ */
38
+ onRemoveChild<T>(child: BaseElement<T>): void;
39
+ /**
40
+ * 深观察添加子元素生命周期
41
+ * @param child 添加的子元素
42
+ * @param target 添加的目标
43
+ */
44
+ onAppendChildDeep<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
45
+ /**
46
+ * 深观察移除子元素生命周期
47
+ * @param child 移除的子元素
48
+ * @param target 移除的目标
49
+ */
50
+ onRemoveChildDeep<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
51
+ init(): void;
52
+ getOptions(): any;
53
+ /**
54
+ * 添加子元素
55
+ * @param child 添加的子元素
56
+ */
57
+ appendChild<T>(child: BaseElement<T>): void;
58
+ /**
59
+ * 移除子元素
60
+ * @param child 移除的子元素
61
+ */
62
+ removeChild<T>(child: BaseElement<T>): void;
63
+ /**
64
+ * 添加子元素到目标之前的位置
65
+ * @param child 添加的子元素
66
+ * @param target 目标
67
+ */
68
+ appendBefore<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
69
+ /**
70
+ * 添加子元素到目标之后的位置
71
+ * @param child 添加的子元素
72
+ * @param target 目标
73
+ */
74
+ appendAfter<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
75
+ }
76
+ export declare namespace LayoutElement {
77
+ /**
78
+ * 父级对象
79
+ */
80
+ type Parent = LayoutElement;
81
+ /**
82
+ * 事件列表
83
+ */
84
+ interface EventMap extends BaseElement.EventMap {
85
+ /**
86
+ * 添加子元素
87
+ * @param child 添加的子元素
88
+ */
89
+ appendChild<T>(child: BaseElement<T>): void;
90
+ <T>(event: 'appendChild', child: BaseElement<T>): void;
91
+ /**
92
+ * 移除子元素
93
+ * @param child 移除的子元素
94
+ */
95
+ removeChild<T>(child: BaseElement<T>): void;
96
+ <T>(event: 'removeChild', child: BaseElement<T>): void;
97
+ /**
98
+ * 深观察后代添加子元素
99
+ * @param child 添加的子元素
100
+ * @param target 添加的目标
101
+ */
102
+ appendChildDeep<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
103
+ <T, U>(event: 'appendChildDeep', child: BaseElement<T>, target: BaseElement<U>): void;
104
+ /**
105
+ * 深观察后代移除子元素
106
+ * @param child 移除的子元素
107
+ * @param target 移除的目标
108
+ */
109
+ removeChildDeep<T, U>(child: BaseElement<T>, target: BaseElement<U>): void;
110
+ <T, U>(event: 'removeChildDeep', child: BaseElement<T>, target: BaseElement<U>): void;
111
+ }
112
+ /**
113
+ * 判断是否为行
114
+ * @param type
115
+ * @returns
116
+ */
117
+ function isRow(type: Layout.Type): boolean;
118
+ /**
119
+ * 判断是否为列
120
+ * @param type
121
+ * @returns
122
+ */
123
+ function isColumn(type: Layout.Type): boolean;
124
+ }
@@ -0,0 +1,37 @@
1
+ import { Content } from './interface';
2
+ import { VariableElement } from './VariableElement';
3
+ /**
4
+ * 签名盖章处元素
5
+ * @param options 选项
6
+ */
7
+ export declare class SignatureAndSealElement<T extends SignatureAndSealElement.Options = SignatureAndSealElement.Options, E extends SignatureAndSealElement.EventMap = SignatureAndSealElement.EventMap> extends VariableElement<T, E> {
8
+ constructor(options?: Partial<T>);
9
+ /**
10
+ * 公章图片
11
+ */
12
+ get image(): string;
13
+ init(): void;
14
+ }
15
+ export declare namespace SignatureAndSealElement {
16
+ /**
17
+ * 事件列表
18
+ */
19
+ interface EventMap extends VariableElement.EventMap {
20
+ }
21
+ /**
22
+ * 选项
23
+ */
24
+ interface Options extends Content {
25
+ /**
26
+ * 签名标签
27
+ */
28
+ label: string;
29
+ }
30
+ namespace Options {
31
+ /**
32
+ * 获取默认值
33
+ * @returns
34
+ */
35
+ function getDefault(): Options;
36
+ }
37
+ }