@knotx/plugins-selection 0.3.8 → 0.4.0
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 +34 -17
- package/dist/index.d.cts +12 -9
- package/dist/index.d.mts +12 -9
- package/dist/index.d.ts +12 -9
- package/dist/index.js +34 -17
- package/package.json +9 -9
package/dist/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const core = require('@knotx/core');
|
|
4
4
|
const decorators = require('@knotx/decorators');
|
|
5
|
-
const SelectionArea = require('@viselect
|
|
5
|
+
const SelectionArea = require('@knotx/viselect');
|
|
6
6
|
|
|
7
7
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
|
|
8
8
|
|
|
@@ -73,8 +73,8 @@ 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 _destroy_dec, _clearSelection_dec, _select_dec, _getSelected_dec, _init_dec,
|
|
77
|
-
class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.register("selected")], _registerRules_dec = [decorators.register("registerRules")], _setRuleEnabled_dec = [decorators.register("setRuleEnabled")], _clearSelectionBeforeStart_dec = [decorators.observable()], _setClearSelectionBeforeStart_dec = [decorators.register("setClearSelectionBeforeStart")], _setElementOverlap_dec = [decorators.register("setElementOverlap")], _interaction_dec = [decorators.inject.interaction()],
|
|
76
|
+
var _destroy_dec, _clearSelection_dec, _select_dec, _getSelected_dec, _init_dec, _contentSize_dec, _transform_dec, _interaction_dec, _containerSize_dec, _resolveSelectables_dec, _setElementOverlap_dec, _setClearSelectionBeforeStart_dec, _clearSelectionBeforeStart_dec, _setRuleEnabled_dec, _registerRules_dec, _selected_dec, _a, _init;
|
|
77
|
+
class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.register("selected")], _registerRules_dec = [decorators.register("registerRules")], _setRuleEnabled_dec = [decorators.register("setRuleEnabled")], _clearSelectionBeforeStart_dec = [decorators.observable()], _setClearSelectionBeforeStart_dec = [decorators.register("setClearSelectionBeforeStart")], _setElementOverlap_dec = [decorators.register("setElementOverlap")], _resolveSelectables_dec = [decorators.register("resolveSelectables")], _containerSize_dec = [decorators.inject.container()], _interaction_dec = [decorators.inject.interaction()], _transform_dec = [decorators.inject.canvas.transform()], _contentSize_dec = [decorators.inject.canvas.contentSize()], _init_dec = [decorators.OnInit], _getSelected_dec = [decorators.tool("Get selected items", {})], _select_dec = [decorators.tool("Items that match the registered rules will be selected, manifested as the item showing a selected style.", {
|
|
78
78
|
type: "array",
|
|
79
79
|
items: {
|
|
80
80
|
type: "object",
|
|
@@ -105,7 +105,7 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
105
105
|
__publicField(this, "ruleMap", /* @__PURE__ */ new Map());
|
|
106
106
|
__publicField(this, "enableDrag", true);
|
|
107
107
|
__publicField(this, "isDragging", false);
|
|
108
|
-
__publicField(this, "
|
|
108
|
+
__publicField(this, "scrollingPosition", { x: 0, y: 0 });
|
|
109
109
|
__publicField(this, "updateFrameId");
|
|
110
110
|
__publicField(this, "selected", __runInitializers(_init, 8, this, [])), __runInitializers(_init, 11, this);
|
|
111
111
|
__publicField(this, "registerRules", __runInitializers(_init, 12, this, (rules) => {
|
|
@@ -136,8 +136,14 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
136
136
|
} catch (e) {
|
|
137
137
|
}
|
|
138
138
|
})), __runInitializers(_init, 31, this);
|
|
139
|
-
__publicField(this, "
|
|
140
|
-
|
|
139
|
+
__publicField(this, "resolveSelectables", __runInitializers(_init, 32, this, () => {
|
|
140
|
+
var _a2;
|
|
141
|
+
(_a2 = this.selection) == null ? void 0 : _a2.resolveSelectables();
|
|
142
|
+
})), __runInitializers(_init, 35, this);
|
|
143
|
+
__publicField(this, "containerSize", __runInitializers(_init, 36, this)), __runInitializers(_init, 39, this);
|
|
144
|
+
__publicField(this, "interaction", __runInitializers(_init, 40, this)), __runInitializers(_init, 43, this);
|
|
145
|
+
__publicField(this, "transform", __runInitializers(_init, 44, this)), __runInitializers(_init, 47, this);
|
|
146
|
+
__publicField(this, "contentSize", __runInitializers(_init, 48, this)), __runInitializers(_init, 51, this);
|
|
141
147
|
__publicField(this, "onBeforeStart", (_) => {
|
|
142
148
|
});
|
|
143
149
|
__publicField(this, "onBeforeDrag", () => {
|
|
@@ -147,9 +153,6 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
147
153
|
__publicField(this, "onStart", ({ event, store }) => {
|
|
148
154
|
var _a2;
|
|
149
155
|
this.interaction.start(this.pluginId, "select", core.InteractionPriority.MarqueeSelection);
|
|
150
|
-
if (this.enableEdgeScroll && this.edgeScroll) {
|
|
151
|
-
this.edgeScroll.setConfig({ enabled: true });
|
|
152
|
-
}
|
|
153
156
|
if (!(event == null ? void 0 : event.ctrlKey) && !(event == null ? void 0 : event.metaKey) && !(event == null ? void 0 : event.shiftKey)) {
|
|
154
157
|
if (this.clearSelectionBeforeStart) {
|
|
155
158
|
store.stored.forEach((element) => {
|
|
@@ -162,6 +165,9 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
162
165
|
(_a2 = this.selection) == null ? void 0 : _a2.clearSelection(true, true);
|
|
163
166
|
}
|
|
164
167
|
}
|
|
168
|
+
if (this.isDragging) {
|
|
169
|
+
this.scrollingPosition = { x: -this.transform.positionX, y: -this.transform.positionY };
|
|
170
|
+
}
|
|
165
171
|
});
|
|
166
172
|
__publicField(this, "onMove", ({ store: { stored, changed: { added, removed } }, selection }) => {
|
|
167
173
|
const getSelectedElements = () => {
|
|
@@ -220,9 +226,6 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
220
226
|
});
|
|
221
227
|
__publicField(this, "onStop", ({ event }) => {
|
|
222
228
|
this.interaction.end(this.pluginId, "select");
|
|
223
|
-
if (this.enableEdgeScroll && this.edgeScroll) {
|
|
224
|
-
this.edgeScroll.setConfig({ enabled: false });
|
|
225
|
-
}
|
|
226
229
|
if (event) {
|
|
227
230
|
if (this.isDragging) {
|
|
228
231
|
this.isDragging = false;
|
|
@@ -230,6 +233,7 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
230
233
|
}
|
|
231
234
|
cancelAnimationFrame(this.updateFrameId);
|
|
232
235
|
this.updateFrameId = requestAnimationFrame(this.updateSelected);
|
|
236
|
+
this.scrollingPosition = { x: 0, y: 0 };
|
|
233
237
|
});
|
|
234
238
|
__publicField(this, "updateSelected", () => {
|
|
235
239
|
var _a2;
|
|
@@ -261,9 +265,6 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
261
265
|
if (config.enableDrag !== void 0) {
|
|
262
266
|
this.enableDrag = config.enableDrag;
|
|
263
267
|
}
|
|
264
|
-
if (config.enableEdgeScroll !== void 0) {
|
|
265
|
-
this.enableEdgeScroll = config.enableEdgeScroll;
|
|
266
|
-
}
|
|
267
268
|
queueMicrotask(() => this.createSelection());
|
|
268
269
|
}
|
|
269
270
|
createSelection() {
|
|
@@ -275,8 +276,21 @@ class Selection extends (_a = core.BasePlugin, _selected_dec = [decorators.regis
|
|
|
275
276
|
selectables: Array.from(new Set(Array.from(this.ruleMap.values()).map(({ className }) => `.${className}`))),
|
|
276
277
|
behaviour: {
|
|
277
278
|
scrolling: {
|
|
278
|
-
|
|
279
|
+
startScrollMargins: { x: 24, y: 24 }
|
|
279
280
|
}
|
|
281
|
+
},
|
|
282
|
+
scrollController: {
|
|
283
|
+
getScrollPosition: () => {
|
|
284
|
+
return this.scrollingPosition;
|
|
285
|
+
},
|
|
286
|
+
setScrollPosition: (_, { x = this.scrollingPosition.x, y = this.scrollingPosition.y }) => {
|
|
287
|
+
this.scrollingPosition.x = x;
|
|
288
|
+
this.scrollingPosition.y = y;
|
|
289
|
+
this.callTool("canvas", "setTransform", { positionX: -x, positionY: -y, scale: this.transform.scale, animationTime: 0 });
|
|
290
|
+
},
|
|
291
|
+
getClientSize: (element) => this.containerSize || { width: element.clientWidth, height: element.clientHeight },
|
|
292
|
+
getScrollSize: (element) => this.contentSize || { width: element.scrollWidth, height: element.scrollHeight },
|
|
293
|
+
alwaysScroll: true
|
|
280
294
|
}
|
|
281
295
|
}).on("beforedrag", this.onBeforeDrag).on("beforestart", this.onBeforeStart).on("start", this.onStart).on("move", this.onMove).on("stop", this.onStop);
|
|
282
296
|
}
|
|
@@ -324,8 +338,11 @@ __decorateElement(_init, 5, "setRuleEnabled", _setRuleEnabled_dec, Selection);
|
|
|
324
338
|
__decorateElement(_init, 5, "clearSelectionBeforeStart", _clearSelectionBeforeStart_dec, Selection);
|
|
325
339
|
__decorateElement(_init, 5, "setClearSelectionBeforeStart", _setClearSelectionBeforeStart_dec, Selection);
|
|
326
340
|
__decorateElement(_init, 5, "setElementOverlap", _setElementOverlap_dec, Selection);
|
|
341
|
+
__decorateElement(_init, 5, "resolveSelectables", _resolveSelectables_dec, Selection);
|
|
342
|
+
__decorateElement(_init, 5, "containerSize", _containerSize_dec, Selection);
|
|
327
343
|
__decorateElement(_init, 5, "interaction", _interaction_dec, Selection);
|
|
328
|
-
__decorateElement(_init, 5, "
|
|
344
|
+
__decorateElement(_init, 5, "transform", _transform_dec, Selection);
|
|
345
|
+
__decorateElement(_init, 5, "contentSize", _contentSize_dec, Selection);
|
|
329
346
|
__decoratorMetadata(_init, Selection);
|
|
330
347
|
|
|
331
348
|
exports.Selection = Selection;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BasePlugin, PluginData } from '@knotx/core';
|
|
2
|
-
import { OverlapMode } from '@viselect
|
|
1
|
+
import { BasePlugin, Engine, PluginData } from '@knotx/core';
|
|
2
|
+
import { OverlapMode } from '@knotx/viselect';
|
|
3
3
|
|
|
4
4
|
interface SelectionSelectedItem {
|
|
5
5
|
type: string;
|
|
@@ -29,6 +29,11 @@ declare module '@knotx/core' {
|
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
31
|
setElementOverlap: (overlap: OverlapMode) => void;
|
|
32
|
+
/**
|
|
33
|
+
* 重新匹配可选中元素,适用于虚拟滚动后可选择元素有变化的场景
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
resolveSelectables: () => void;
|
|
32
37
|
};
|
|
33
38
|
}
|
|
34
39
|
interface PluginTools {
|
|
@@ -89,11 +94,6 @@ interface SelectionConfig {
|
|
|
89
94
|
* default: bemSelector('canvas', 'wrapper')
|
|
90
95
|
*/
|
|
91
96
|
container?: string;
|
|
92
|
-
/**
|
|
93
|
-
* 是否启用边缘滚动
|
|
94
|
-
* default: false
|
|
95
|
-
*/
|
|
96
|
-
enableEdgeScroll?: boolean;
|
|
97
97
|
}
|
|
98
98
|
declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
99
99
|
name: "selection";
|
|
@@ -103,7 +103,7 @@ declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
|
103
103
|
private ruleMap;
|
|
104
104
|
private enableDrag;
|
|
105
105
|
private isDragging;
|
|
106
|
-
private
|
|
106
|
+
private scrollingPosition;
|
|
107
107
|
private updateFrameId;
|
|
108
108
|
selected: SelectionSelectedItem[];
|
|
109
109
|
registerRules: (rules: SelectionRule[]) => () => void;
|
|
@@ -111,8 +111,11 @@ declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
|
111
111
|
clearSelectionBeforeStart: boolean;
|
|
112
112
|
setClearSelectionBeforeStart: (clearSelectionBeforeStart: boolean) => void;
|
|
113
113
|
setElementOverlap: (overlap: OverlapMode) => void;
|
|
114
|
+
resolveSelectables: () => void;
|
|
115
|
+
containerSize: Engine['container'];
|
|
114
116
|
private interaction;
|
|
115
|
-
|
|
117
|
+
transform: PluginData['canvas']['transform'];
|
|
118
|
+
contentSize: PluginData['canvas']['contentSize'];
|
|
116
119
|
init(config?: SelectionConfig): void;
|
|
117
120
|
private createSelection;
|
|
118
121
|
private onBeforeStart;
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BasePlugin, PluginData } from '@knotx/core';
|
|
2
|
-
import { OverlapMode } from '@viselect
|
|
1
|
+
import { BasePlugin, Engine, PluginData } from '@knotx/core';
|
|
2
|
+
import { OverlapMode } from '@knotx/viselect';
|
|
3
3
|
|
|
4
4
|
interface SelectionSelectedItem {
|
|
5
5
|
type: string;
|
|
@@ -29,6 +29,11 @@ declare module '@knotx/core' {
|
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
31
|
setElementOverlap: (overlap: OverlapMode) => void;
|
|
32
|
+
/**
|
|
33
|
+
* 重新匹配可选中元素,适用于虚拟滚动后可选择元素有变化的场景
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
resolveSelectables: () => void;
|
|
32
37
|
};
|
|
33
38
|
}
|
|
34
39
|
interface PluginTools {
|
|
@@ -89,11 +94,6 @@ interface SelectionConfig {
|
|
|
89
94
|
* default: bemSelector('canvas', 'wrapper')
|
|
90
95
|
*/
|
|
91
96
|
container?: string;
|
|
92
|
-
/**
|
|
93
|
-
* 是否启用边缘滚动
|
|
94
|
-
* default: false
|
|
95
|
-
*/
|
|
96
|
-
enableEdgeScroll?: boolean;
|
|
97
97
|
}
|
|
98
98
|
declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
99
99
|
name: "selection";
|
|
@@ -103,7 +103,7 @@ declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
|
103
103
|
private ruleMap;
|
|
104
104
|
private enableDrag;
|
|
105
105
|
private isDragging;
|
|
106
|
-
private
|
|
106
|
+
private scrollingPosition;
|
|
107
107
|
private updateFrameId;
|
|
108
108
|
selected: SelectionSelectedItem[];
|
|
109
109
|
registerRules: (rules: SelectionRule[]) => () => void;
|
|
@@ -111,8 +111,11 @@ declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
|
111
111
|
clearSelectionBeforeStart: boolean;
|
|
112
112
|
setClearSelectionBeforeStart: (clearSelectionBeforeStart: boolean) => void;
|
|
113
113
|
setElementOverlap: (overlap: OverlapMode) => void;
|
|
114
|
+
resolveSelectables: () => void;
|
|
115
|
+
containerSize: Engine['container'];
|
|
114
116
|
private interaction;
|
|
115
|
-
|
|
117
|
+
transform: PluginData['canvas']['transform'];
|
|
118
|
+
contentSize: PluginData['canvas']['contentSize'];
|
|
116
119
|
init(config?: SelectionConfig): void;
|
|
117
120
|
private createSelection;
|
|
118
121
|
private onBeforeStart;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BasePlugin, PluginData } from '@knotx/core';
|
|
2
|
-
import { OverlapMode } from '@viselect
|
|
1
|
+
import { BasePlugin, Engine, PluginData } from '@knotx/core';
|
|
2
|
+
import { OverlapMode } from '@knotx/viselect';
|
|
3
3
|
|
|
4
4
|
interface SelectionSelectedItem {
|
|
5
5
|
type: string;
|
|
@@ -29,6 +29,11 @@ declare module '@knotx/core' {
|
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
31
|
setElementOverlap: (overlap: OverlapMode) => void;
|
|
32
|
+
/**
|
|
33
|
+
* 重新匹配可选中元素,适用于虚拟滚动后可选择元素有变化的场景
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
resolveSelectables: () => void;
|
|
32
37
|
};
|
|
33
38
|
}
|
|
34
39
|
interface PluginTools {
|
|
@@ -89,11 +94,6 @@ interface SelectionConfig {
|
|
|
89
94
|
* default: bemSelector('canvas', 'wrapper')
|
|
90
95
|
*/
|
|
91
96
|
container?: string;
|
|
92
|
-
/**
|
|
93
|
-
* 是否启用边缘滚动
|
|
94
|
-
* default: false
|
|
95
|
-
*/
|
|
96
|
-
enableEdgeScroll?: boolean;
|
|
97
97
|
}
|
|
98
98
|
declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
99
99
|
name: "selection";
|
|
@@ -103,7 +103,7 @@ declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
|
103
103
|
private ruleMap;
|
|
104
104
|
private enableDrag;
|
|
105
105
|
private isDragging;
|
|
106
|
-
private
|
|
106
|
+
private scrollingPosition;
|
|
107
107
|
private updateFrameId;
|
|
108
108
|
selected: SelectionSelectedItem[];
|
|
109
109
|
registerRules: (rules: SelectionRule[]) => () => void;
|
|
@@ -111,8 +111,11 @@ declare class Selection extends BasePlugin<'selection', SelectionConfig> {
|
|
|
111
111
|
clearSelectionBeforeStart: boolean;
|
|
112
112
|
setClearSelectionBeforeStart: (clearSelectionBeforeStart: boolean) => void;
|
|
113
113
|
setElementOverlap: (overlap: OverlapMode) => void;
|
|
114
|
+
resolveSelectables: () => void;
|
|
115
|
+
containerSize: Engine['container'];
|
|
114
116
|
private interaction;
|
|
115
|
-
|
|
117
|
+
transform: PluginData['canvas']['transform'];
|
|
118
|
+
contentSize: PluginData['canvas']['contentSize'];
|
|
116
119
|
init(config?: SelectionConfig): void;
|
|
117
120
|
private createSelection;
|
|
118
121
|
private onBeforeStart;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { bemSelector, bem, BasePlugin, InteractionPriority } from '@knotx/core';
|
|
2
2
|
import { register, observable, inject, tool, OnInit, OnDestroy } from '@knotx/decorators';
|
|
3
|
-
import SelectionArea from '@viselect
|
|
3
|
+
import SelectionArea from '@knotx/viselect';
|
|
4
4
|
|
|
5
5
|
var __create = Object.create;
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
@@ -67,8 +67,8 @@ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use
|
|
|
67
67
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
68
68
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
69
69
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
70
|
-
var _destroy_dec, _clearSelection_dec, _select_dec, _getSelected_dec, _init_dec,
|
|
71
|
-
class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")], _registerRules_dec = [register("registerRules")], _setRuleEnabled_dec = [register("setRuleEnabled")], _clearSelectionBeforeStart_dec = [observable()], _setClearSelectionBeforeStart_dec = [register("setClearSelectionBeforeStart")], _setElementOverlap_dec = [register("setElementOverlap")], _interaction_dec = [inject.interaction()],
|
|
70
|
+
var _destroy_dec, _clearSelection_dec, _select_dec, _getSelected_dec, _init_dec, _contentSize_dec, _transform_dec, _interaction_dec, _containerSize_dec, _resolveSelectables_dec, _setElementOverlap_dec, _setClearSelectionBeforeStart_dec, _clearSelectionBeforeStart_dec, _setRuleEnabled_dec, _registerRules_dec, _selected_dec, _a, _init;
|
|
71
|
+
class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")], _registerRules_dec = [register("registerRules")], _setRuleEnabled_dec = [register("setRuleEnabled")], _clearSelectionBeforeStart_dec = [observable()], _setClearSelectionBeforeStart_dec = [register("setClearSelectionBeforeStart")], _setElementOverlap_dec = [register("setElementOverlap")], _resolveSelectables_dec = [register("resolveSelectables")], _containerSize_dec = [inject.container()], _interaction_dec = [inject.interaction()], _transform_dec = [inject.canvas.transform()], _contentSize_dec = [inject.canvas.contentSize()], _init_dec = [OnInit], _getSelected_dec = [tool("Get selected items", {})], _select_dec = [tool("Items that match the registered rules will be selected, manifested as the item showing a selected style.", {
|
|
72
72
|
type: "array",
|
|
73
73
|
items: {
|
|
74
74
|
type: "object",
|
|
@@ -99,7 +99,7 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
99
99
|
__publicField(this, "ruleMap", /* @__PURE__ */ new Map());
|
|
100
100
|
__publicField(this, "enableDrag", true);
|
|
101
101
|
__publicField(this, "isDragging", false);
|
|
102
|
-
__publicField(this, "
|
|
102
|
+
__publicField(this, "scrollingPosition", { x: 0, y: 0 });
|
|
103
103
|
__publicField(this, "updateFrameId");
|
|
104
104
|
__publicField(this, "selected", __runInitializers(_init, 8, this, [])), __runInitializers(_init, 11, this);
|
|
105
105
|
__publicField(this, "registerRules", __runInitializers(_init, 12, this, (rules) => {
|
|
@@ -130,8 +130,14 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
130
130
|
} catch (e) {
|
|
131
131
|
}
|
|
132
132
|
})), __runInitializers(_init, 31, this);
|
|
133
|
-
__publicField(this, "
|
|
134
|
-
|
|
133
|
+
__publicField(this, "resolveSelectables", __runInitializers(_init, 32, this, () => {
|
|
134
|
+
var _a2;
|
|
135
|
+
(_a2 = this.selection) == null ? void 0 : _a2.resolveSelectables();
|
|
136
|
+
})), __runInitializers(_init, 35, this);
|
|
137
|
+
__publicField(this, "containerSize", __runInitializers(_init, 36, this)), __runInitializers(_init, 39, this);
|
|
138
|
+
__publicField(this, "interaction", __runInitializers(_init, 40, this)), __runInitializers(_init, 43, this);
|
|
139
|
+
__publicField(this, "transform", __runInitializers(_init, 44, this)), __runInitializers(_init, 47, this);
|
|
140
|
+
__publicField(this, "contentSize", __runInitializers(_init, 48, this)), __runInitializers(_init, 51, this);
|
|
135
141
|
__publicField(this, "onBeforeStart", (_) => {
|
|
136
142
|
});
|
|
137
143
|
__publicField(this, "onBeforeDrag", () => {
|
|
@@ -141,9 +147,6 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
141
147
|
__publicField(this, "onStart", ({ event, store }) => {
|
|
142
148
|
var _a2;
|
|
143
149
|
this.interaction.start(this.pluginId, "select", InteractionPriority.MarqueeSelection);
|
|
144
|
-
if (this.enableEdgeScroll && this.edgeScroll) {
|
|
145
|
-
this.edgeScroll.setConfig({ enabled: true });
|
|
146
|
-
}
|
|
147
150
|
if (!(event == null ? void 0 : event.ctrlKey) && !(event == null ? void 0 : event.metaKey) && !(event == null ? void 0 : event.shiftKey)) {
|
|
148
151
|
if (this.clearSelectionBeforeStart) {
|
|
149
152
|
store.stored.forEach((element) => {
|
|
@@ -156,6 +159,9 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
156
159
|
(_a2 = this.selection) == null ? void 0 : _a2.clearSelection(true, true);
|
|
157
160
|
}
|
|
158
161
|
}
|
|
162
|
+
if (this.isDragging) {
|
|
163
|
+
this.scrollingPosition = { x: -this.transform.positionX, y: -this.transform.positionY };
|
|
164
|
+
}
|
|
159
165
|
});
|
|
160
166
|
__publicField(this, "onMove", ({ store: { stored, changed: { added, removed } }, selection }) => {
|
|
161
167
|
const getSelectedElements = () => {
|
|
@@ -214,9 +220,6 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
214
220
|
});
|
|
215
221
|
__publicField(this, "onStop", ({ event }) => {
|
|
216
222
|
this.interaction.end(this.pluginId, "select");
|
|
217
|
-
if (this.enableEdgeScroll && this.edgeScroll) {
|
|
218
|
-
this.edgeScroll.setConfig({ enabled: false });
|
|
219
|
-
}
|
|
220
223
|
if (event) {
|
|
221
224
|
if (this.isDragging) {
|
|
222
225
|
this.isDragging = false;
|
|
@@ -224,6 +227,7 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
224
227
|
}
|
|
225
228
|
cancelAnimationFrame(this.updateFrameId);
|
|
226
229
|
this.updateFrameId = requestAnimationFrame(this.updateSelected);
|
|
230
|
+
this.scrollingPosition = { x: 0, y: 0 };
|
|
227
231
|
});
|
|
228
232
|
__publicField(this, "updateSelected", () => {
|
|
229
233
|
var _a2;
|
|
@@ -255,9 +259,6 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
255
259
|
if (config.enableDrag !== void 0) {
|
|
256
260
|
this.enableDrag = config.enableDrag;
|
|
257
261
|
}
|
|
258
|
-
if (config.enableEdgeScroll !== void 0) {
|
|
259
|
-
this.enableEdgeScroll = config.enableEdgeScroll;
|
|
260
|
-
}
|
|
261
262
|
queueMicrotask(() => this.createSelection());
|
|
262
263
|
}
|
|
263
264
|
createSelection() {
|
|
@@ -269,8 +270,21 @@ class Selection extends (_a = BasePlugin, _selected_dec = [register("selected")]
|
|
|
269
270
|
selectables: Array.from(new Set(Array.from(this.ruleMap.values()).map(({ className }) => `.${className}`))),
|
|
270
271
|
behaviour: {
|
|
271
272
|
scrolling: {
|
|
272
|
-
|
|
273
|
+
startScrollMargins: { x: 24, y: 24 }
|
|
273
274
|
}
|
|
275
|
+
},
|
|
276
|
+
scrollController: {
|
|
277
|
+
getScrollPosition: () => {
|
|
278
|
+
return this.scrollingPosition;
|
|
279
|
+
},
|
|
280
|
+
setScrollPosition: (_, { x = this.scrollingPosition.x, y = this.scrollingPosition.y }) => {
|
|
281
|
+
this.scrollingPosition.x = x;
|
|
282
|
+
this.scrollingPosition.y = y;
|
|
283
|
+
this.callTool("canvas", "setTransform", { positionX: -x, positionY: -y, scale: this.transform.scale, animationTime: 0 });
|
|
284
|
+
},
|
|
285
|
+
getClientSize: (element) => this.containerSize || { width: element.clientWidth, height: element.clientHeight },
|
|
286
|
+
getScrollSize: (element) => this.contentSize || { width: element.scrollWidth, height: element.scrollHeight },
|
|
287
|
+
alwaysScroll: true
|
|
274
288
|
}
|
|
275
289
|
}).on("beforedrag", this.onBeforeDrag).on("beforestart", this.onBeforeStart).on("start", this.onStart).on("move", this.onMove).on("stop", this.onStop);
|
|
276
290
|
}
|
|
@@ -318,8 +332,11 @@ __decorateElement(_init, 5, "setRuleEnabled", _setRuleEnabled_dec, Selection);
|
|
|
318
332
|
__decorateElement(_init, 5, "clearSelectionBeforeStart", _clearSelectionBeforeStart_dec, Selection);
|
|
319
333
|
__decorateElement(_init, 5, "setClearSelectionBeforeStart", _setClearSelectionBeforeStart_dec, Selection);
|
|
320
334
|
__decorateElement(_init, 5, "setElementOverlap", _setElementOverlap_dec, Selection);
|
|
335
|
+
__decorateElement(_init, 5, "resolveSelectables", _resolveSelectables_dec, Selection);
|
|
336
|
+
__decorateElement(_init, 5, "containerSize", _containerSize_dec, Selection);
|
|
321
337
|
__decorateElement(_init, 5, "interaction", _interaction_dec, Selection);
|
|
322
|
-
__decorateElement(_init, 5, "
|
|
338
|
+
__decorateElement(_init, 5, "transform", _transform_dec, Selection);
|
|
339
|
+
__decorateElement(_init, 5, "contentSize", _contentSize_dec, Selection);
|
|
323
340
|
__decoratorMetadata(_init, Selection);
|
|
324
341
|
|
|
325
342
|
export { Selection };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knotx/plugins-selection",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Selection Plugin for Knotx",
|
|
5
5
|
"author": "boenfu",
|
|
6
6
|
"license": "MIT",
|
|
@@ -28,19 +28,19 @@
|
|
|
28
28
|
"dist"
|
|
29
29
|
],
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@knotx/plugins-canvas": "0.
|
|
31
|
+
"@knotx/plugins-canvas": "0.4.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@viselect
|
|
34
|
+
"@knotx/viselect": "^3.9.0",
|
|
35
35
|
"rxjs": "^7.8.1",
|
|
36
|
-
"@knotx/core": "0.
|
|
37
|
-
"@knotx/decorators": "0.
|
|
36
|
+
"@knotx/core": "0.4.0",
|
|
37
|
+
"@knotx/decorators": "0.4.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@knotx/build-config": "0.
|
|
41
|
-
"@knotx/eslint-config": "0.
|
|
42
|
-
"@knotx/plugins-canvas": "0.
|
|
43
|
-
"@knotx/typescript-config": "0.
|
|
40
|
+
"@knotx/build-config": "0.4.0",
|
|
41
|
+
"@knotx/eslint-config": "0.4.0",
|
|
42
|
+
"@knotx/plugins-canvas": "0.4.0",
|
|
43
|
+
"@knotx/typescript-config": "0.4.0"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "unbuild",
|