@knotx/plugins-canvas 0.2.10 → 0.2.12
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/dist/index.cjs +92 -8
- package/dist/index.d.cts +56 -1
- package/dist/index.d.mts +56 -1
- package/dist/index.d.ts +56 -1
- package/dist/index.js +92 -8
- package/package.json +8 -8
package/dist/index.cjs
CHANGED
|
@@ -75,15 +75,37 @@ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use
|
|
|
75
75
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
76
76
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
77
77
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
78
|
-
var _init_dec, _render_dec, _scrollNodeIntoView_dec, _removeListener_dec, _addListener_dec, _container_dec, _getNode_dec, _transform_dec, _ref_dec, _a, _init;
|
|
78
|
+
var _init_dec, _render_dec, _zoomOut_dec, _zoomIn_dec, _scrollNodeIntoView_dec, _removeListener_dec, _addListener_dec, _container_dec, _getNode_dec, _transform_dec, _ref_dec, _a, _init;
|
|
79
79
|
class Canvas extends (_a = core.BasePlugin, _ref_dec = [decorators.register("ref")], _transform_dec = [decorators.register("transform")], _getNode_dec = [decorators.inject.getNode()], _container_dec = [decorators.inject.container()], _addListener_dec = [decorators.register("addListener")], _removeListener_dec = [decorators.register("removeListener")], _scrollNodeIntoView_dec = [decorators.tool("Scroll node into viewport center", {
|
|
80
80
|
type: "object",
|
|
81
81
|
properties: {
|
|
82
82
|
nodeId: { type: "string" },
|
|
83
83
|
scale: { type: "number", description: "The scale of the canvas, default is current scale" },
|
|
84
|
+
block: { type: "string", enum: ["center", "end", "nearest", "start"], description: "Vertical alignment" },
|
|
85
|
+
inline: { type: "string", enum: ["center", "end", "nearest", "start"], description: "Horizontal alignment" },
|
|
86
|
+
offset: {
|
|
87
|
+
type: ["number", "object"],
|
|
88
|
+
description: "Offset from the viewport edge, can be a number or { x: number, y: number }",
|
|
89
|
+
properties: {
|
|
90
|
+
x: { type: "number" },
|
|
91
|
+
y: { type: "number" }
|
|
92
|
+
}
|
|
93
|
+
},
|
|
84
94
|
animationTime: { type: "number", description: "The animation time(ms) of scroll behavior" }
|
|
85
95
|
},
|
|
86
96
|
required: ["nodeId"]
|
|
97
|
+
})], _zoomIn_dec = [decorators.tool("Zoom in", {
|
|
98
|
+
type: "object",
|
|
99
|
+
properties: {
|
|
100
|
+
step: { type: "number" },
|
|
101
|
+
animationTime: { type: "number" }
|
|
102
|
+
}
|
|
103
|
+
})], _zoomOut_dec = [decorators.tool("Zoom out", {
|
|
104
|
+
type: "object",
|
|
105
|
+
properties: {
|
|
106
|
+
step: { type: "number" },
|
|
107
|
+
animationTime: { type: "number" }
|
|
108
|
+
}
|
|
87
109
|
})], _render_dec = [decorators.layer(core.Layer.Canvas)], _init_dec = [decorators.OnInit], _a) {
|
|
88
110
|
constructor() {
|
|
89
111
|
super(...arguments);
|
|
@@ -105,17 +127,77 @@ class Canvas extends (_a = core.BasePlugin, _ref_dec = [decorators.register("ref
|
|
|
105
127
|
this.listeners[type].delete(listener);
|
|
106
128
|
})), __runInitializers(_init, 31, this);
|
|
107
129
|
}
|
|
108
|
-
scrollNodeIntoView({ nodeId, scale = this.transform.scale, animationTime }) {
|
|
109
|
-
var _a2, _b, _c, _d, _e;
|
|
130
|
+
scrollNodeIntoView({ nodeId, scale = this.transform.scale, block = "nearest", inline = "nearest", offset = 0, animationTime }) {
|
|
131
|
+
var _a2, _b, _c, _d, _e, _f, _g;
|
|
110
132
|
const node = nodeId && this.getNode(nodeId);
|
|
111
133
|
if (!node) {
|
|
112
134
|
return;
|
|
113
135
|
}
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
const
|
|
118
|
-
|
|
136
|
+
const nodeX = node.position.x;
|
|
137
|
+
const nodeY = node.position.y;
|
|
138
|
+
const nodeWidth = (_b = (_a2 = node.measured) == null ? void 0 : _a2.width) != null ? _b : 0;
|
|
139
|
+
const nodeHeight = (_d = (_c = node.measured) == null ? void 0 : _c.height) != null ? _d : 0;
|
|
140
|
+
const viewportWidth = this.container.width;
|
|
141
|
+
const viewportHeight = this.container.height;
|
|
142
|
+
let positionX = -this.transform.positionX;
|
|
143
|
+
let positionY = -this.transform.positionY;
|
|
144
|
+
const offsetX = typeof offset === "number" ? offset : (_e = offset.x) != null ? _e : 0;
|
|
145
|
+
const offsetY = typeof offset === "number" ? offset : (_f = offset.y) != null ? _f : 0;
|
|
146
|
+
switch (inline) {
|
|
147
|
+
case "center":
|
|
148
|
+
positionX = (nodeX + nodeWidth / 2) * scale - viewportWidth / 2;
|
|
149
|
+
break;
|
|
150
|
+
case "start":
|
|
151
|
+
positionX = nodeX * scale - offsetX;
|
|
152
|
+
break;
|
|
153
|
+
case "end":
|
|
154
|
+
positionX = (nodeX + nodeWidth) * scale - viewportWidth + offsetX;
|
|
155
|
+
break;
|
|
156
|
+
case "nearest": {
|
|
157
|
+
const nodeRight = (nodeX + nodeWidth) * scale;
|
|
158
|
+
const nodeLeft = nodeX * scale;
|
|
159
|
+
const currentLeft = -this.transform.positionX;
|
|
160
|
+
const currentRight = currentLeft + viewportWidth;
|
|
161
|
+
if (nodeRight > currentRight) {
|
|
162
|
+
positionX = nodeRight - viewportWidth + offsetX;
|
|
163
|
+
} else if (nodeLeft < currentLeft) {
|
|
164
|
+
positionX = nodeLeft - offsetX;
|
|
165
|
+
}
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
switch (block) {
|
|
170
|
+
case "center":
|
|
171
|
+
positionY = (nodeY + nodeHeight / 2) * scale - viewportHeight / 2;
|
|
172
|
+
break;
|
|
173
|
+
case "start":
|
|
174
|
+
positionY = nodeY * scale - offsetY;
|
|
175
|
+
break;
|
|
176
|
+
case "end":
|
|
177
|
+
positionY = (nodeY + nodeHeight) * scale - viewportHeight + offsetY;
|
|
178
|
+
break;
|
|
179
|
+
case "nearest": {
|
|
180
|
+
const nodeBottom = (nodeY + nodeHeight) * scale;
|
|
181
|
+
const nodeTop = nodeY * scale;
|
|
182
|
+
const currentTop = -this.transform.positionY;
|
|
183
|
+
const currentBottom = currentTop + viewportHeight;
|
|
184
|
+
if (nodeBottom > currentBottom) {
|
|
185
|
+
positionY = nodeBottom - viewportHeight + offsetY;
|
|
186
|
+
} else if (nodeTop < currentTop) {
|
|
187
|
+
positionY = nodeTop - offsetY;
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
(_g = this.ref) == null ? void 0 : _g.setTransform(-positionX, -positionY, scale, animationTime);
|
|
193
|
+
}
|
|
194
|
+
zoomIn({ step = 0.1, animationTime }) {
|
|
195
|
+
var _a2;
|
|
196
|
+
(_a2 = this.ref) == null ? void 0 : _a2.zoomIn(step, animationTime);
|
|
197
|
+
}
|
|
198
|
+
zoomOut({ step = 0.1, animationTime }) {
|
|
199
|
+
var _a2;
|
|
200
|
+
(_a2 = this.ref) == null ? void 0 : _a2.zoomOut(step, animationTime);
|
|
119
201
|
}
|
|
120
202
|
render({ children } = { children: null }) {
|
|
121
203
|
const [transform, setTransform] = react.useState(null);
|
|
@@ -236,6 +318,8 @@ class Canvas extends (_a = core.BasePlugin, _ref_dec = [decorators.register("ref
|
|
|
236
318
|
}
|
|
237
319
|
_init = __decoratorStart(_a);
|
|
238
320
|
__decorateElement(_init, 1, "scrollNodeIntoView", _scrollNodeIntoView_dec, Canvas);
|
|
321
|
+
__decorateElement(_init, 1, "zoomIn", _zoomIn_dec, Canvas);
|
|
322
|
+
__decorateElement(_init, 1, "zoomOut", _zoomOut_dec, Canvas);
|
|
239
323
|
__decorateElement(_init, 1, "render", _render_dec, Canvas);
|
|
240
324
|
__decorateElement(_init, 1, "init", _init_dec, Canvas);
|
|
241
325
|
__decorateElement(_init, 5, "ref", _ref_dec, Canvas);
|
package/dist/index.d.cts
CHANGED
|
@@ -20,6 +20,20 @@ declare module '@knotx/core' {
|
|
|
20
20
|
scrollNodeIntoView: (params: {
|
|
21
21
|
nodeId: string;
|
|
22
22
|
scale?: number;
|
|
23
|
+
block?: 'center' | 'end' | 'nearest' | 'start';
|
|
24
|
+
inline?: 'center' | 'end' | 'nearest' | 'start';
|
|
25
|
+
offset?: number | {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
};
|
|
29
|
+
animationTime?: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
zoomIn: (params: {
|
|
32
|
+
step?: number;
|
|
33
|
+
animationTime?: number;
|
|
34
|
+
}) => void;
|
|
35
|
+
zoomOut: (params: {
|
|
36
|
+
step?: number;
|
|
23
37
|
animationTime?: number;
|
|
24
38
|
}) => void;
|
|
25
39
|
};
|
|
@@ -37,7 +51,7 @@ declare class Canvas extends BasePlugin<'canvas', CanvasConfig> {
|
|
|
37
51
|
private listeners;
|
|
38
52
|
addListener: (event: CanvasEventType, listener: CanvasEventListener) => void;
|
|
39
53
|
removeListener: (event: CanvasEventType, listener: CanvasEventListener) => void;
|
|
40
|
-
scrollNodeIntoView({ nodeId, scale, animationTime }: InferParamsFromSchema<{
|
|
54
|
+
scrollNodeIntoView({ nodeId, scale, block, inline, offset, animationTime }: InferParamsFromSchema<{
|
|
41
55
|
type: 'object';
|
|
42
56
|
properties: {
|
|
43
57
|
nodeId: {
|
|
@@ -46,12 +60,53 @@ declare class Canvas extends BasePlugin<'canvas', CanvasConfig> {
|
|
|
46
60
|
scale: {
|
|
47
61
|
type: 'number';
|
|
48
62
|
};
|
|
63
|
+
block: {
|
|
64
|
+
type: 'string';
|
|
65
|
+
enum: ['center', 'end', 'nearest', 'start'];
|
|
66
|
+
};
|
|
67
|
+
inline: {
|
|
68
|
+
type: 'string';
|
|
69
|
+
enum: ['center', 'end', 'nearest', 'start'];
|
|
70
|
+
};
|
|
71
|
+
offset: {
|
|
72
|
+
type: ['number', 'object'];
|
|
73
|
+
properties: {
|
|
74
|
+
x: {
|
|
75
|
+
type: 'number';
|
|
76
|
+
};
|
|
77
|
+
y: {
|
|
78
|
+
type: 'number';
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
49
82
|
animationTime: {
|
|
50
83
|
type: 'number';
|
|
51
84
|
};
|
|
52
85
|
};
|
|
53
86
|
required: ['nodeId'];
|
|
54
87
|
}>): void;
|
|
88
|
+
zoomIn({ step, animationTime }: InferParamsFromSchema<{
|
|
89
|
+
type: 'object';
|
|
90
|
+
properties: {
|
|
91
|
+
step: {
|
|
92
|
+
type: 'number';
|
|
93
|
+
};
|
|
94
|
+
animationTime: {
|
|
95
|
+
type: 'number';
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
}>): void;
|
|
99
|
+
zoomOut({ step, animationTime }: InferParamsFromSchema<{
|
|
100
|
+
type: 'object';
|
|
101
|
+
properties: {
|
|
102
|
+
step: {
|
|
103
|
+
type: 'number';
|
|
104
|
+
};
|
|
105
|
+
animationTime: {
|
|
106
|
+
type: 'number';
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
}>): void;
|
|
55
110
|
render({ children }?: {
|
|
56
111
|
children: ReactNode;
|
|
57
112
|
}): JSX.Element;
|
package/dist/index.d.mts
CHANGED
|
@@ -20,6 +20,20 @@ declare module '@knotx/core' {
|
|
|
20
20
|
scrollNodeIntoView: (params: {
|
|
21
21
|
nodeId: string;
|
|
22
22
|
scale?: number;
|
|
23
|
+
block?: 'center' | 'end' | 'nearest' | 'start';
|
|
24
|
+
inline?: 'center' | 'end' | 'nearest' | 'start';
|
|
25
|
+
offset?: number | {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
};
|
|
29
|
+
animationTime?: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
zoomIn: (params: {
|
|
32
|
+
step?: number;
|
|
33
|
+
animationTime?: number;
|
|
34
|
+
}) => void;
|
|
35
|
+
zoomOut: (params: {
|
|
36
|
+
step?: number;
|
|
23
37
|
animationTime?: number;
|
|
24
38
|
}) => void;
|
|
25
39
|
};
|
|
@@ -37,7 +51,7 @@ declare class Canvas extends BasePlugin<'canvas', CanvasConfig> {
|
|
|
37
51
|
private listeners;
|
|
38
52
|
addListener: (event: CanvasEventType, listener: CanvasEventListener) => void;
|
|
39
53
|
removeListener: (event: CanvasEventType, listener: CanvasEventListener) => void;
|
|
40
|
-
scrollNodeIntoView({ nodeId, scale, animationTime }: InferParamsFromSchema<{
|
|
54
|
+
scrollNodeIntoView({ nodeId, scale, block, inline, offset, animationTime }: InferParamsFromSchema<{
|
|
41
55
|
type: 'object';
|
|
42
56
|
properties: {
|
|
43
57
|
nodeId: {
|
|
@@ -46,12 +60,53 @@ declare class Canvas extends BasePlugin<'canvas', CanvasConfig> {
|
|
|
46
60
|
scale: {
|
|
47
61
|
type: 'number';
|
|
48
62
|
};
|
|
63
|
+
block: {
|
|
64
|
+
type: 'string';
|
|
65
|
+
enum: ['center', 'end', 'nearest', 'start'];
|
|
66
|
+
};
|
|
67
|
+
inline: {
|
|
68
|
+
type: 'string';
|
|
69
|
+
enum: ['center', 'end', 'nearest', 'start'];
|
|
70
|
+
};
|
|
71
|
+
offset: {
|
|
72
|
+
type: ['number', 'object'];
|
|
73
|
+
properties: {
|
|
74
|
+
x: {
|
|
75
|
+
type: 'number';
|
|
76
|
+
};
|
|
77
|
+
y: {
|
|
78
|
+
type: 'number';
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
49
82
|
animationTime: {
|
|
50
83
|
type: 'number';
|
|
51
84
|
};
|
|
52
85
|
};
|
|
53
86
|
required: ['nodeId'];
|
|
54
87
|
}>): void;
|
|
88
|
+
zoomIn({ step, animationTime }: InferParamsFromSchema<{
|
|
89
|
+
type: 'object';
|
|
90
|
+
properties: {
|
|
91
|
+
step: {
|
|
92
|
+
type: 'number';
|
|
93
|
+
};
|
|
94
|
+
animationTime: {
|
|
95
|
+
type: 'number';
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
}>): void;
|
|
99
|
+
zoomOut({ step, animationTime }: InferParamsFromSchema<{
|
|
100
|
+
type: 'object';
|
|
101
|
+
properties: {
|
|
102
|
+
step: {
|
|
103
|
+
type: 'number';
|
|
104
|
+
};
|
|
105
|
+
animationTime: {
|
|
106
|
+
type: 'number';
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
}>): void;
|
|
55
110
|
render({ children }?: {
|
|
56
111
|
children: ReactNode;
|
|
57
112
|
}): JSX.Element;
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,20 @@ declare module '@knotx/core' {
|
|
|
20
20
|
scrollNodeIntoView: (params: {
|
|
21
21
|
nodeId: string;
|
|
22
22
|
scale?: number;
|
|
23
|
+
block?: 'center' | 'end' | 'nearest' | 'start';
|
|
24
|
+
inline?: 'center' | 'end' | 'nearest' | 'start';
|
|
25
|
+
offset?: number | {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
};
|
|
29
|
+
animationTime?: number;
|
|
30
|
+
}) => void;
|
|
31
|
+
zoomIn: (params: {
|
|
32
|
+
step?: number;
|
|
33
|
+
animationTime?: number;
|
|
34
|
+
}) => void;
|
|
35
|
+
zoomOut: (params: {
|
|
36
|
+
step?: number;
|
|
23
37
|
animationTime?: number;
|
|
24
38
|
}) => void;
|
|
25
39
|
};
|
|
@@ -37,7 +51,7 @@ declare class Canvas extends BasePlugin<'canvas', CanvasConfig> {
|
|
|
37
51
|
private listeners;
|
|
38
52
|
addListener: (event: CanvasEventType, listener: CanvasEventListener) => void;
|
|
39
53
|
removeListener: (event: CanvasEventType, listener: CanvasEventListener) => void;
|
|
40
|
-
scrollNodeIntoView({ nodeId, scale, animationTime }: InferParamsFromSchema<{
|
|
54
|
+
scrollNodeIntoView({ nodeId, scale, block, inline, offset, animationTime }: InferParamsFromSchema<{
|
|
41
55
|
type: 'object';
|
|
42
56
|
properties: {
|
|
43
57
|
nodeId: {
|
|
@@ -46,12 +60,53 @@ declare class Canvas extends BasePlugin<'canvas', CanvasConfig> {
|
|
|
46
60
|
scale: {
|
|
47
61
|
type: 'number';
|
|
48
62
|
};
|
|
63
|
+
block: {
|
|
64
|
+
type: 'string';
|
|
65
|
+
enum: ['center', 'end', 'nearest', 'start'];
|
|
66
|
+
};
|
|
67
|
+
inline: {
|
|
68
|
+
type: 'string';
|
|
69
|
+
enum: ['center', 'end', 'nearest', 'start'];
|
|
70
|
+
};
|
|
71
|
+
offset: {
|
|
72
|
+
type: ['number', 'object'];
|
|
73
|
+
properties: {
|
|
74
|
+
x: {
|
|
75
|
+
type: 'number';
|
|
76
|
+
};
|
|
77
|
+
y: {
|
|
78
|
+
type: 'number';
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
49
82
|
animationTime: {
|
|
50
83
|
type: 'number';
|
|
51
84
|
};
|
|
52
85
|
};
|
|
53
86
|
required: ['nodeId'];
|
|
54
87
|
}>): void;
|
|
88
|
+
zoomIn({ step, animationTime }: InferParamsFromSchema<{
|
|
89
|
+
type: 'object';
|
|
90
|
+
properties: {
|
|
91
|
+
step: {
|
|
92
|
+
type: 'number';
|
|
93
|
+
};
|
|
94
|
+
animationTime: {
|
|
95
|
+
type: 'number';
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
}>): void;
|
|
99
|
+
zoomOut({ step, animationTime }: InferParamsFromSchema<{
|
|
100
|
+
type: 'object';
|
|
101
|
+
properties: {
|
|
102
|
+
step: {
|
|
103
|
+
type: 'number';
|
|
104
|
+
};
|
|
105
|
+
animationTime: {
|
|
106
|
+
type: 'number';
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
}>): void;
|
|
55
110
|
render({ children }?: {
|
|
56
111
|
children: ReactNode;
|
|
57
112
|
}): JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -73,15 +73,37 @@ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use
|
|
|
73
73
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
74
74
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
75
75
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
76
|
-
var _init_dec, _render_dec, _scrollNodeIntoView_dec, _removeListener_dec, _addListener_dec, _container_dec, _getNode_dec, _transform_dec, _ref_dec, _a, _init;
|
|
76
|
+
var _init_dec, _render_dec, _zoomOut_dec, _zoomIn_dec, _scrollNodeIntoView_dec, _removeListener_dec, _addListener_dec, _container_dec, _getNode_dec, _transform_dec, _ref_dec, _a, _init;
|
|
77
77
|
class Canvas extends (_a = BasePlugin, _ref_dec = [register("ref")], _transform_dec = [register("transform")], _getNode_dec = [inject.getNode()], _container_dec = [inject.container()], _addListener_dec = [register("addListener")], _removeListener_dec = [register("removeListener")], _scrollNodeIntoView_dec = [tool("Scroll node into viewport center", {
|
|
78
78
|
type: "object",
|
|
79
79
|
properties: {
|
|
80
80
|
nodeId: { type: "string" },
|
|
81
81
|
scale: { type: "number", description: "The scale of the canvas, default is current scale" },
|
|
82
|
+
block: { type: "string", enum: ["center", "end", "nearest", "start"], description: "Vertical alignment" },
|
|
83
|
+
inline: { type: "string", enum: ["center", "end", "nearest", "start"], description: "Horizontal alignment" },
|
|
84
|
+
offset: {
|
|
85
|
+
type: ["number", "object"],
|
|
86
|
+
description: "Offset from the viewport edge, can be a number or { x: number, y: number }",
|
|
87
|
+
properties: {
|
|
88
|
+
x: { type: "number" },
|
|
89
|
+
y: { type: "number" }
|
|
90
|
+
}
|
|
91
|
+
},
|
|
82
92
|
animationTime: { type: "number", description: "The animation time(ms) of scroll behavior" }
|
|
83
93
|
},
|
|
84
94
|
required: ["nodeId"]
|
|
95
|
+
})], _zoomIn_dec = [tool("Zoom in", {
|
|
96
|
+
type: "object",
|
|
97
|
+
properties: {
|
|
98
|
+
step: { type: "number" },
|
|
99
|
+
animationTime: { type: "number" }
|
|
100
|
+
}
|
|
101
|
+
})], _zoomOut_dec = [tool("Zoom out", {
|
|
102
|
+
type: "object",
|
|
103
|
+
properties: {
|
|
104
|
+
step: { type: "number" },
|
|
105
|
+
animationTime: { type: "number" }
|
|
106
|
+
}
|
|
85
107
|
})], _render_dec = [layer(Layer.Canvas)], _init_dec = [OnInit], _a) {
|
|
86
108
|
constructor() {
|
|
87
109
|
super(...arguments);
|
|
@@ -103,17 +125,77 @@ class Canvas extends (_a = BasePlugin, _ref_dec = [register("ref")], _transform_
|
|
|
103
125
|
this.listeners[type].delete(listener);
|
|
104
126
|
})), __runInitializers(_init, 31, this);
|
|
105
127
|
}
|
|
106
|
-
scrollNodeIntoView({ nodeId, scale = this.transform.scale, animationTime }) {
|
|
107
|
-
var _a2, _b, _c, _d, _e;
|
|
128
|
+
scrollNodeIntoView({ nodeId, scale = this.transform.scale, block = "nearest", inline = "nearest", offset = 0, animationTime }) {
|
|
129
|
+
var _a2, _b, _c, _d, _e, _f, _g;
|
|
108
130
|
const node = nodeId && this.getNode(nodeId);
|
|
109
131
|
if (!node) {
|
|
110
132
|
return;
|
|
111
133
|
}
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
|
|
134
|
+
const nodeX = node.position.x;
|
|
135
|
+
const nodeY = node.position.y;
|
|
136
|
+
const nodeWidth = (_b = (_a2 = node.measured) == null ? void 0 : _a2.width) != null ? _b : 0;
|
|
137
|
+
const nodeHeight = (_d = (_c = node.measured) == null ? void 0 : _c.height) != null ? _d : 0;
|
|
138
|
+
const viewportWidth = this.container.width;
|
|
139
|
+
const viewportHeight = this.container.height;
|
|
140
|
+
let positionX = -this.transform.positionX;
|
|
141
|
+
let positionY = -this.transform.positionY;
|
|
142
|
+
const offsetX = typeof offset === "number" ? offset : (_e = offset.x) != null ? _e : 0;
|
|
143
|
+
const offsetY = typeof offset === "number" ? offset : (_f = offset.y) != null ? _f : 0;
|
|
144
|
+
switch (inline) {
|
|
145
|
+
case "center":
|
|
146
|
+
positionX = (nodeX + nodeWidth / 2) * scale - viewportWidth / 2;
|
|
147
|
+
break;
|
|
148
|
+
case "start":
|
|
149
|
+
positionX = nodeX * scale - offsetX;
|
|
150
|
+
break;
|
|
151
|
+
case "end":
|
|
152
|
+
positionX = (nodeX + nodeWidth) * scale - viewportWidth + offsetX;
|
|
153
|
+
break;
|
|
154
|
+
case "nearest": {
|
|
155
|
+
const nodeRight = (nodeX + nodeWidth) * scale;
|
|
156
|
+
const nodeLeft = nodeX * scale;
|
|
157
|
+
const currentLeft = -this.transform.positionX;
|
|
158
|
+
const currentRight = currentLeft + viewportWidth;
|
|
159
|
+
if (nodeRight > currentRight) {
|
|
160
|
+
positionX = nodeRight - viewportWidth + offsetX;
|
|
161
|
+
} else if (nodeLeft < currentLeft) {
|
|
162
|
+
positionX = nodeLeft - offsetX;
|
|
163
|
+
}
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
switch (block) {
|
|
168
|
+
case "center":
|
|
169
|
+
positionY = (nodeY + nodeHeight / 2) * scale - viewportHeight / 2;
|
|
170
|
+
break;
|
|
171
|
+
case "start":
|
|
172
|
+
positionY = nodeY * scale - offsetY;
|
|
173
|
+
break;
|
|
174
|
+
case "end":
|
|
175
|
+
positionY = (nodeY + nodeHeight) * scale - viewportHeight + offsetY;
|
|
176
|
+
break;
|
|
177
|
+
case "nearest": {
|
|
178
|
+
const nodeBottom = (nodeY + nodeHeight) * scale;
|
|
179
|
+
const nodeTop = nodeY * scale;
|
|
180
|
+
const currentTop = -this.transform.positionY;
|
|
181
|
+
const currentBottom = currentTop + viewportHeight;
|
|
182
|
+
if (nodeBottom > currentBottom) {
|
|
183
|
+
positionY = nodeBottom - viewportHeight + offsetY;
|
|
184
|
+
} else if (nodeTop < currentTop) {
|
|
185
|
+
positionY = nodeTop - offsetY;
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
(_g = this.ref) == null ? void 0 : _g.setTransform(-positionX, -positionY, scale, animationTime);
|
|
191
|
+
}
|
|
192
|
+
zoomIn({ step = 0.1, animationTime }) {
|
|
193
|
+
var _a2;
|
|
194
|
+
(_a2 = this.ref) == null ? void 0 : _a2.zoomIn(step, animationTime);
|
|
195
|
+
}
|
|
196
|
+
zoomOut({ step = 0.1, animationTime }) {
|
|
197
|
+
var _a2;
|
|
198
|
+
(_a2 = this.ref) == null ? void 0 : _a2.zoomOut(step, animationTime);
|
|
117
199
|
}
|
|
118
200
|
render({ children } = { children: null }) {
|
|
119
201
|
const [transform, setTransform] = useState(null);
|
|
@@ -234,6 +316,8 @@ class Canvas extends (_a = BasePlugin, _ref_dec = [register("ref")], _transform_
|
|
|
234
316
|
}
|
|
235
317
|
_init = __decoratorStart(_a);
|
|
236
318
|
__decorateElement(_init, 1, "scrollNodeIntoView", _scrollNodeIntoView_dec, Canvas);
|
|
319
|
+
__decorateElement(_init, 1, "zoomIn", _zoomIn_dec, Canvas);
|
|
320
|
+
__decorateElement(_init, 1, "zoomOut", _zoomOut_dec, Canvas);
|
|
237
321
|
__decorateElement(_init, 1, "render", _render_dec, Canvas);
|
|
238
322
|
__decorateElement(_init, 1, "init", _init_dec, Canvas);
|
|
239
323
|
__decorateElement(_init, 5, "ref", _ref_dec, Canvas);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knotx/plugins-canvas",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.12",
|
|
4
4
|
"description": "Canvas Plugin for Knotx",
|
|
5
5
|
"author": "boenfu",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,23 +29,23 @@
|
|
|
29
29
|
],
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"react": ">=17.0.0",
|
|
32
|
-
"@knotx/jsx": "0.2.
|
|
32
|
+
"@knotx/jsx": "0.2.11"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"lodash-es": "^4.17.21",
|
|
36
36
|
"react-zoom-pan-pinch": "^3.7.0",
|
|
37
37
|
"rxjs": "^7.8.1",
|
|
38
|
-
"@knotx/core": "0.2.
|
|
39
|
-
"@knotx/decorators": "0.2.
|
|
38
|
+
"@knotx/core": "0.2.11",
|
|
39
|
+
"@knotx/decorators": "0.2.12"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/lodash-es": "^4.17.12",
|
|
43
43
|
"@types/react": "^17.0.0",
|
|
44
44
|
"react": "^17.0.0",
|
|
45
|
-
"@knotx/build-config": "0.2.
|
|
46
|
-
"@knotx/eslint-config": "0.2.
|
|
47
|
-
"@knotx/jsx": "0.2.
|
|
48
|
-
"@knotx/typescript-config": "0.2.
|
|
45
|
+
"@knotx/build-config": "0.2.11",
|
|
46
|
+
"@knotx/eslint-config": "0.2.11",
|
|
47
|
+
"@knotx/jsx": "0.2.11",
|
|
48
|
+
"@knotx/typescript-config": "0.2.11"
|
|
49
49
|
},
|
|
50
50
|
"scripts": {
|
|
51
51
|
"build": "unbuild",
|