verstak 0.22.412

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.
Files changed (59) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +28 -0
  3. package/build/dist/source/api.d.ts +2 -0
  4. package/build/dist/source/api.js +2 -0
  5. package/build/dist/source/archive/RxDomV1.Types.d.ts +46 -0
  6. package/build/dist/source/archive/RxDomV1.Types.js +22 -0
  7. package/build/dist/source/archive/RxDomV1.d.ts +45 -0
  8. package/build/dist/source/archive/RxDomV1.js +556 -0
  9. package/build/dist/source/core/Elements.d.ts +4 -0
  10. package/build/dist/source/core/Elements.js +7 -0
  11. package/build/dist/source/core/Restyler.d.ts +7 -0
  12. package/build/dist/source/core/Restyler.js +30 -0
  13. package/build/dist/source/core/RxNode.d.ts +59 -0
  14. package/build/dist/source/core/RxNode.js +426 -0
  15. package/build/dist/source/core/Utils.d.ts +1 -0
  16. package/build/dist/source/core/Utils.js +3 -0
  17. package/build/dist/source/core/api.d.ts +4 -0
  18. package/build/dist/source/core/api.js +4 -0
  19. package/build/dist/source/html/CellRange.d.ts +11 -0
  20. package/build/dist/source/html/CellRange.js +175 -0
  21. package/build/dist/source/html/HtmlApiExt.d.ts +7 -0
  22. package/build/dist/source/html/HtmlApiExt.js +25 -0
  23. package/build/dist/source/html/HtmlElements.d.ts +349 -0
  24. package/build/dist/source/html/HtmlElements.js +529 -0
  25. package/build/dist/source/html/HtmlNodeFactory.d.ts +19 -0
  26. package/build/dist/source/html/HtmlNodeFactory.js +96 -0
  27. package/build/dist/source/html/RxFocuser.d.ts +2 -0
  28. package/build/dist/source/html/RxFocuser.js +11 -0
  29. package/build/dist/source/html/api.d.ts +18 -0
  30. package/build/dist/source/html/api.js +18 -0
  31. package/build/dist/source/html/sensors/BasePointerSensor.d.ts +18 -0
  32. package/build/dist/source/html/sensors/BasePointerSensor.js +32 -0
  33. package/build/dist/source/html/sensors/ButtonSensor.d.ts +32 -0
  34. package/build/dist/source/html/sensors/ButtonSensor.js +211 -0
  35. package/build/dist/source/html/sensors/DataForSensor.d.ts +27 -0
  36. package/build/dist/source/html/sensors/DataForSensor.js +72 -0
  37. package/build/dist/source/html/sensors/FocusSensor.d.ts +29 -0
  38. package/build/dist/source/html/sensors/FocusSensor.js +182 -0
  39. package/build/dist/source/html/sensors/HoverSensor.d.ts +10 -0
  40. package/build/dist/source/html/sensors/HoverSensor.js +80 -0
  41. package/build/dist/source/html/sensors/HtmlDragSensor.d.ts +61 -0
  42. package/build/dist/source/html/sensors/HtmlDragSensor.js +386 -0
  43. package/build/dist/source/html/sensors/HtmlElementSensor.d.ts +13 -0
  44. package/build/dist/source/html/sensors/HtmlElementSensor.js +53 -0
  45. package/build/dist/source/html/sensors/HtmlSensors.d.ts +22 -0
  46. package/build/dist/source/html/sensors/HtmlSensors.js +47 -0
  47. package/build/dist/source/html/sensors/KeyboardSensor.d.ts +33 -0
  48. package/build/dist/source/html/sensors/KeyboardSensor.js +143 -0
  49. package/build/dist/source/html/sensors/PointerSensor.d.ts +60 -0
  50. package/build/dist/source/html/sensors/PointerSensor.js +394 -0
  51. package/build/dist/source/html/sensors/ResizeSensor.d.ts +18 -0
  52. package/build/dist/source/html/sensors/ResizeSensor.js +72 -0
  53. package/build/dist/source/html/sensors/Sensor.d.ts +6 -0
  54. package/build/dist/source/html/sensors/Sensor.js +11 -0
  55. package/build/dist/source/html/sensors/WheelSensor.d.ts +13 -0
  56. package/build/dist/source/html/sensors/WheelSensor.js +86 -0
  57. package/build/dist/source/html/sensors/WindowSensor.d.ts +10 -0
  58. package/build/dist/source/html/sensors/WindowSensor.js +38 -0
  59. package/package.json +54 -0
@@ -0,0 +1,143 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { options, sensitive, transactional, LoggingLevel } from 'reactronic';
11
+ import { grabElementDataList, SymDataForSensor } from './DataForSensor';
12
+ import { HtmlElementSensor } from './HtmlElementSensor';
13
+ export var KeyboardModifiers;
14
+ (function (KeyboardModifiers) {
15
+ KeyboardModifiers[KeyboardModifiers["None"] = 0] = "None";
16
+ KeyboardModifiers[KeyboardModifiers["Ctrl"] = 1] = "Ctrl";
17
+ KeyboardModifiers[KeyboardModifiers["Shift"] = 2] = "Shift";
18
+ KeyboardModifiers[KeyboardModifiers["Alt"] = 4] = "Alt";
19
+ KeyboardModifiers[KeyboardModifiers["Meta"] = 8] = "Meta";
20
+ KeyboardModifiers[KeyboardModifiers["CtrlShift"] = 3] = "CtrlShift";
21
+ KeyboardModifiers[KeyboardModifiers["CtrlAlt"] = 5] = "CtrlAlt";
22
+ KeyboardModifiers[KeyboardModifiers["CtrlMeta"] = 9] = "CtrlMeta";
23
+ KeyboardModifiers[KeyboardModifiers["CtrlShiftAlt"] = 7] = "CtrlShiftAlt";
24
+ KeyboardModifiers[KeyboardModifiers["CtrlShiftAltMeta"] = 15] = "CtrlShiftAltMeta";
25
+ KeyboardModifiers[KeyboardModifiers["CtrlShiftMeta"] = 11] = "CtrlShiftMeta";
26
+ KeyboardModifiers[KeyboardModifiers["ShiftAlt"] = 6] = "ShiftAlt";
27
+ KeyboardModifiers[KeyboardModifiers["ShiftMeta"] = 10] = "ShiftMeta";
28
+ KeyboardModifiers[KeyboardModifiers["ShiftAltMeta"] = 14] = "ShiftAltMeta";
29
+ KeyboardModifiers[KeyboardModifiers["AltMeta"] = 12] = "AltMeta";
30
+ })(KeyboardModifiers || (KeyboardModifiers = {}));
31
+ export class KeyboardSensor extends HtmlElementSensor {
32
+ constructor() {
33
+ super();
34
+ this.down = '';
35
+ this.up = '';
36
+ this.modifiers = KeyboardModifiers.None;
37
+ }
38
+ listen(element, enabled = true) {
39
+ const existing = this.sourceElement;
40
+ if (element !== existing) {
41
+ if (existing) {
42
+ existing.removeEventListener('keydown', this.onKeyDown.bind(this), { capture: true });
43
+ existing.removeEventListener('keyup', this.onKeyUp.bind(this), { capture: true });
44
+ }
45
+ this.sourceElement = element;
46
+ if (element && enabled) {
47
+ element.addEventListener('keydown', this.onKeyDown.bind(this), { capture: true });
48
+ element.addEventListener('keyup', this.onKeyUp.bind(this), { capture: true });
49
+ }
50
+ }
51
+ }
52
+ reset() {
53
+ this.preventDefault = false;
54
+ this.stopPropagation = false;
55
+ this.down = '';
56
+ this.up = '';
57
+ this.modifiers = KeyboardModifiers.None;
58
+ }
59
+ onKeyDown(e) {
60
+ this.keyDown(e);
61
+ this.setPreventDefaultAndStopPropagation(e);
62
+ }
63
+ onKeyUp(e) {
64
+ this.keyUp(e);
65
+ this.setPreventDefaultAndStopPropagation(e);
66
+ }
67
+ keyDown(e) {
68
+ this.updateSensorData(e);
69
+ this.up = '';
70
+ sensitive(true, () => this.down = e.key);
71
+ }
72
+ keyUp(e) {
73
+ this.updateSensorData(e);
74
+ this.down = '';
75
+ sensitive(true, () => this.up = e.key);
76
+ }
77
+ updateSensorData(e) {
78
+ this.preventDefault = false;
79
+ this.stopPropagation = false;
80
+ const path = e.composedPath();
81
+ this.elementDataList = grabElementDataList(path, SymDataForSensor, 'keyboard', this.elementDataList).dataList;
82
+ this.modifiers = extractModifierKeys(e);
83
+ this.revision++;
84
+ }
85
+ static getKeyAsModifierIfAny(key) {
86
+ let modifier = KeyboardModifiers.None;
87
+ if (key === 'Control')
88
+ modifier = KeyboardModifiers.Ctrl;
89
+ else if (key === 'Shift')
90
+ modifier = KeyboardModifiers.Shift;
91
+ else if (key === 'Alt')
92
+ modifier = KeyboardModifiers.Alt;
93
+ else if (key === 'Meta')
94
+ modifier = KeyboardModifiers.Meta;
95
+ return modifier;
96
+ }
97
+ }
98
+ __decorate([
99
+ transactional,
100
+ __metadata("design:type", Function),
101
+ __metadata("design:paramtypes", [Object, Boolean]),
102
+ __metadata("design:returntype", void 0)
103
+ ], KeyboardSensor.prototype, "listen", null);
104
+ __decorate([
105
+ transactional,
106
+ __metadata("design:type", Function),
107
+ __metadata("design:paramtypes", []),
108
+ __metadata("design:returntype", void 0)
109
+ ], KeyboardSensor.prototype, "reset", null);
110
+ __decorate([
111
+ transactional,
112
+ options({ logging: LoggingLevel.Off }),
113
+ __metadata("design:type", Function),
114
+ __metadata("design:paramtypes", [KeyboardEvent]),
115
+ __metadata("design:returntype", void 0)
116
+ ], KeyboardSensor.prototype, "keyDown", null);
117
+ __decorate([
118
+ transactional,
119
+ options({ logging: LoggingLevel.Off }),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [KeyboardEvent]),
122
+ __metadata("design:returntype", void 0)
123
+ ], KeyboardSensor.prototype, "keyUp", null);
124
+ export function extractModifierKeys(e) {
125
+ let modifiers = KeyboardModifiers.None;
126
+ if (e.ctrlKey)
127
+ modifiers |= KeyboardModifiers.Ctrl;
128
+ else
129
+ modifiers &= ~KeyboardModifiers.Ctrl;
130
+ if (e.shiftKey)
131
+ modifiers |= KeyboardModifiers.Shift;
132
+ else
133
+ modifiers &= ~KeyboardModifiers.Shift;
134
+ if (e.altKey)
135
+ modifiers |= KeyboardModifiers.Alt;
136
+ else
137
+ modifiers &= ~KeyboardModifiers.Alt;
138
+ if (e.metaKey)
139
+ modifiers |= KeyboardModifiers.Meta;
140
+ else
141
+ modifiers &= ~KeyboardModifiers.Meta;
142
+ return modifiers;
143
+ }
@@ -0,0 +1,60 @@
1
+ import { PointerButton, BasePointerSensor } from './BasePointerSensor';
2
+ import { FocusSensor } from './FocusSensor';
3
+ import { KeyboardModifiers } from './KeyboardSensor';
4
+ import { WindowSensor } from './WindowSensor';
5
+ export declare class PointerSensor extends BasePointerSensor {
6
+ pointerButton: PointerButton;
7
+ private clickable;
8
+ hotPositionX: number;
9
+ hotPositionY: number;
10
+ clicking: unknown;
11
+ clicked: unknown;
12
+ clickX: number;
13
+ clickY: number;
14
+ private tryingDragging;
15
+ draggableData: unknown;
16
+ dragSource: unknown;
17
+ dragTarget: unknown;
18
+ dragTargetWindow: unknown;
19
+ previousDragTarget: unknown;
20
+ dragStarted: boolean;
21
+ dragFinished: boolean;
22
+ startX: number;
23
+ startY: number;
24
+ private draggingData;
25
+ dropAllowed: boolean;
26
+ draggingOver: boolean;
27
+ positionX: number;
28
+ positionY: number;
29
+ modifiers: KeyboardModifiers;
30
+ dropX: number;
31
+ dropY: number;
32
+ dropped: boolean;
33
+ immediatePositionX: number;
34
+ immediatePositionY: number;
35
+ immediateModifiers: KeyboardModifiers;
36
+ static readonly DraggingThreshold = 4;
37
+ constructor(focusSensor: FocusSensor, windowSensor: WindowSensor);
38
+ getData(): unknown;
39
+ setData(value: unknown): void;
40
+ listen(element: HTMLElement | undefined, enabled?: boolean): void;
41
+ protected onPointerDown(e: PointerEvent): void;
42
+ protected onPointerMove(e: PointerEvent): void;
43
+ protected onPointerUp(e: PointerEvent): void;
44
+ protected onLostPointerCapture(e: PointerEvent): void;
45
+ protected onKeyDown(e: KeyboardEvent): void;
46
+ protected moveOver(e: PointerEvent): void;
47
+ protected tryClickingOrDragging(e: PointerEvent): void;
48
+ protected clickingOver(e: PointerEvent): void;
49
+ protected click(e: PointerEvent): void;
50
+ protected startDragging(e: PointerEvent): void;
51
+ protected dragOver(e: PointerEvent): void;
52
+ protected drop(e: PointerEvent): void;
53
+ protected finishDragging(): void;
54
+ protected cancelDragging(): void;
55
+ protected reset(): void;
56
+ protected updateClicking(e: PointerEvent): boolean;
57
+ protected updateDragTarget(e: PointerEvent): void;
58
+ protected whenClickingOrDragging(): void;
59
+ protected whenMoving(): void;
60
+ }
@@ -0,0 +1,394 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { options, reactive, Reentrance, transactional, raw, Transaction, LoggingLevel } from 'reactronic';
11
+ import { extractPointerButton, isPointerButtonDown, PointerButton, BasePointerSensor } from './BasePointerSensor';
12
+ import { findTargetElementData, SymDataForSensor } from './DataForSensor';
13
+ import { extractModifierKeys, KeyboardModifiers } from './KeyboardSensor';
14
+ export class PointerSensor extends BasePointerSensor {
15
+ constructor(focusSensor, windowSensor) {
16
+ super(focusSensor, windowSensor);
17
+ this.hotPositionX = Infinity;
18
+ this.hotPositionY = Infinity;
19
+ this.pointerButton = PointerButton.None;
20
+ this.tryingDragging = false;
21
+ this.clickable = undefined;
22
+ this.clicking = undefined;
23
+ this.clicked = undefined;
24
+ this.clickX = Infinity;
25
+ this.clickY = Infinity;
26
+ this.draggableData = undefined;
27
+ this.dragSource = undefined;
28
+ this.dragTarget = undefined;
29
+ this.dragTargetWindow = undefined;
30
+ this.previousDragTarget = undefined;
31
+ this.dragStarted = false;
32
+ this.dragFinished = false;
33
+ this.startX = Infinity;
34
+ this.startY = Infinity;
35
+ this.draggingData = undefined;
36
+ this.dropAllowed = false;
37
+ this.draggingOver = false;
38
+ this.positionX = Infinity;
39
+ this.positionY = Infinity;
40
+ this.modifiers = KeyboardModifiers.None;
41
+ this.dropX = Infinity;
42
+ this.dropY = Infinity;
43
+ this.dropped = false;
44
+ this.immediatePositionX = Infinity;
45
+ this.immediatePositionY = Infinity;
46
+ this.immediateModifiers = KeyboardModifiers.None;
47
+ }
48
+ getData() {
49
+ return this.draggingData;
50
+ }
51
+ setData(value) {
52
+ this.draggingData = value;
53
+ }
54
+ listen(element, enabled = true) {
55
+ const existing = this.sourceElement;
56
+ if (element !== existing) {
57
+ if (existing) {
58
+ existing.removeEventListener('pointerdown', this.onPointerDown.bind(this), { capture: true });
59
+ existing.removeEventListener('pointermove', this.onPointerMove.bind(this), { capture: true });
60
+ existing.removeEventListener('pointerup', this.onPointerUp.bind(this), { capture: true });
61
+ existing.removeEventListener('lostpointercapture', this.onLostPointerCapture.bind(this), { capture: true });
62
+ existing.removeEventListener('keydown', this.onKeyDown.bind(this), { capture: true });
63
+ }
64
+ this.sourceElement = element;
65
+ if (element && enabled) {
66
+ element.addEventListener('pointerdown', this.onPointerDown.bind(this), { capture: true });
67
+ element.addEventListener('pointermove', this.onPointerMove.bind(this), { capture: true });
68
+ element.addEventListener('pointerup', this.onPointerUp.bind(this), { capture: true });
69
+ element.addEventListener('lostpointercapture', this.onLostPointerCapture.bind(this), { capture: true });
70
+ element.addEventListener('keydown', this.onKeyDown.bind(this), { capture: true });
71
+ }
72
+ }
73
+ }
74
+ onPointerDown(e) {
75
+ const button = extractPointerButton(e);
76
+ if (!this.dragStarted && this.clickable === undefined &&
77
+ (button === PointerButton.Left || button === PointerButton.Right)) {
78
+ this.tryClickingOrDragging(e);
79
+ }
80
+ }
81
+ onPointerMove(e) {
82
+ this.moveOver(e);
83
+ if (isPointerButtonDown(this.pointerButton, e.buttons)) {
84
+ if (this.tryingDragging) {
85
+ if (Math.abs(e.clientX - this.startX) > PointerSensor.DraggingThreshold ||
86
+ Math.abs(e.clientY - this.startY) > PointerSensor.DraggingThreshold) {
87
+ this.startDragging(e);
88
+ }
89
+ }
90
+ else if (this.dragStarted) {
91
+ this.dragOver(e);
92
+ }
93
+ else if (this.clickable) {
94
+ this.clickingOver(e);
95
+ }
96
+ }
97
+ else {
98
+ if (this.dragStarted) {
99
+ this.cancelDragging();
100
+ this.reset();
101
+ }
102
+ else if (this.clickable) {
103
+ this.reset();
104
+ }
105
+ }
106
+ }
107
+ onPointerUp(e) {
108
+ if (this.draggingOver) {
109
+ this.drop(e);
110
+ this.finishDragging();
111
+ }
112
+ else if (this.dragStarted) {
113
+ this.finishDragging();
114
+ }
115
+ else if (this.clickable) {
116
+ this.click(e);
117
+ }
118
+ this.reset();
119
+ }
120
+ onLostPointerCapture(e) {
121
+ if (this.dragStarted || this.clickable) {
122
+ this.cancelDragging();
123
+ this.reset();
124
+ }
125
+ }
126
+ onKeyDown(e) {
127
+ if (e.key === 'Escape' && (this.dragStarted || this.clickable)) {
128
+ this.cancelDragging();
129
+ this.reset();
130
+ }
131
+ }
132
+ moveOver(e) {
133
+ this.immediatePositionX = e.clientX;
134
+ this.immediatePositionY = e.clientY;
135
+ }
136
+ tryClickingOrDragging(e) {
137
+ var _a;
138
+ this.preventDefault = false;
139
+ this.stopPropagation = false;
140
+ const targetPath = e.composedPath();
141
+ const underPointer = document.elementsFromPoint(e.clientX, e.clientY);
142
+ const { data, window } = findTargetElementData(targetPath, underPointer, SymDataForSensor, ['click', 'draggable']);
143
+ const clickable = data === null || data === void 0 ? void 0 : data.click;
144
+ const draggable = data === null || data === void 0 ? void 0 : data.draggable;
145
+ if (clickable || draggable) {
146
+ this.clickable = clickable;
147
+ this.clicking = clickable;
148
+ this.draggableData = draggable;
149
+ this.tryingDragging = draggable !== undefined;
150
+ this.dragSource = (_a = findTargetElementData(targetPath, underPointer, SymDataForSensor, ['drag'], true).data) === null || _a === void 0 ? void 0 : _a.drag;
151
+ this.pointerButton = extractPointerButton(e);
152
+ this.startX = e.clientX;
153
+ this.startY = e.clientY;
154
+ this.modifiers = extractModifierKeys(e);
155
+ this.positionX = e.clientX;
156
+ this.positionY = e.clientY;
157
+ this.dropped = false;
158
+ this.dragTarget = undefined;
159
+ this.dragTargetWindow = undefined;
160
+ this.previousDragTarget = undefined;
161
+ Transaction.separate(() => {
162
+ var _a;
163
+ (_a = this.windowSensor) === null || _a === void 0 ? void 0 : _a.setActiveWindow(window, 'pointer');
164
+ });
165
+ }
166
+ this.revision++;
167
+ }
168
+ clickingOver(e) {
169
+ this.updateClicking(e);
170
+ this.revision++;
171
+ }
172
+ click(e) {
173
+ if (this.updateClicking(e)) {
174
+ this.modifiers = this.immediateModifiers;
175
+ this.clickX = e.clientX;
176
+ this.clickY = e.clientY;
177
+ this.clicked = this.clicking;
178
+ }
179
+ this.clickable = undefined;
180
+ this.revision++;
181
+ }
182
+ startDragging(e) {
183
+ this.updateDragTarget(e);
184
+ this.clickable = undefined;
185
+ this.dragStarted = true;
186
+ this.dragFinished = false;
187
+ this.tryingDragging = false;
188
+ this.dropped = false;
189
+ this.revision++;
190
+ }
191
+ dragOver(e) {
192
+ this.updateDragTarget(e);
193
+ this.draggingOver = true;
194
+ this.dropped = false;
195
+ this.revision++;
196
+ }
197
+ drop(e) {
198
+ this.updateDragTarget(e);
199
+ this.modifiers = this.immediateModifiers;
200
+ this.dropX = e.clientX;
201
+ this.dropY = e.clientY;
202
+ this.dropped = true;
203
+ this.revision++;
204
+ }
205
+ finishDragging() {
206
+ this.dragFinished = true;
207
+ this.tryingDragging = false;
208
+ this.revision++;
209
+ }
210
+ cancelDragging() {
211
+ this.dragFinished = true;
212
+ this.tryingDragging = false;
213
+ this.dropped = false;
214
+ this.revision++;
215
+ }
216
+ reset() {
217
+ this.pointerButton = PointerButton.None;
218
+ this.clickable = undefined;
219
+ this.clicking = undefined;
220
+ this.clicked = undefined;
221
+ this.clickX = Infinity;
222
+ this.clickY = Infinity;
223
+ this.tryingDragging = false;
224
+ this.draggableData = undefined;
225
+ this.dragSource = undefined;
226
+ this.dragTarget = undefined;
227
+ this.dragTargetWindow = undefined;
228
+ this.previousDragTarget = undefined;
229
+ this.dragStarted = false;
230
+ this.dragFinished = false;
231
+ this.startX = Infinity;
232
+ this.startY = Infinity;
233
+ this.draggingData = undefined;
234
+ this.dropAllowed = false;
235
+ this.draggingOver = false;
236
+ this.positionX = Infinity;
237
+ this.positionY = Infinity;
238
+ this.modifiers = KeyboardModifiers.None;
239
+ this.dropX = Infinity;
240
+ this.dropY = Infinity;
241
+ this.dropped = false;
242
+ this.immediatePositionX = Infinity;
243
+ this.immediatePositionY = Infinity;
244
+ this.immediateModifiers = KeyboardModifiers.None;
245
+ this.revision++;
246
+ }
247
+ updateClicking(e) {
248
+ var _a;
249
+ const targetPath = e.composedPath();
250
+ const underPointer = document.elementsFromPoint(e.clientX, e.clientY);
251
+ const clickable = (_a = findTargetElementData(targetPath, underPointer, SymDataForSensor, ['click']).data) === null || _a === void 0 ? void 0 : _a.click;
252
+ const isSameClickable = this.clickable === clickable;
253
+ if (isSameClickable)
254
+ this.clicking = clickable;
255
+ this.immediateModifiers = extractModifierKeys(e);
256
+ this.immediatePositionX = e.clientX;
257
+ this.immediatePositionY = e.clientY;
258
+ return isSameClickable;
259
+ }
260
+ updateDragTarget(e) {
261
+ const targetPath = e.composedPath();
262
+ const underPointer = document.elementsFromPoint(e.clientX, e.clientY);
263
+ const { data, window } = findTargetElementData(targetPath, underPointer, SymDataForSensor, ['drag']);
264
+ const dragTarget = data === null || data === void 0 ? void 0 : data.drag;
265
+ if (dragTarget !== this.dragTarget) {
266
+ this.previousDragTarget = this.dragTarget;
267
+ this.dragTarget = dragTarget;
268
+ this.dragTargetWindow = window;
269
+ }
270
+ this.immediateModifiers = extractModifierKeys(e);
271
+ this.immediatePositionX = e.clientX;
272
+ this.immediatePositionY = e.clientY;
273
+ }
274
+ whenClickingOrDragging() {
275
+ if (this.draggingOver || this.clickable) {
276
+ this.positionX = this.immediatePositionX;
277
+ this.positionY = this.immediatePositionY;
278
+ this.modifiers = this.immediateModifiers;
279
+ }
280
+ }
281
+ whenMoving() {
282
+ if (Number.isFinite(this.immediatePositionX) && Number.isFinite(this.immediatePositionY)) {
283
+ this.hotPositionX = this.immediatePositionX;
284
+ this.hotPositionY = this.immediatePositionY;
285
+ }
286
+ }
287
+ }
288
+ PointerSensor.DraggingThreshold = 4;
289
+ __decorate([
290
+ raw,
291
+ __metadata("design:type", Object)
292
+ ], PointerSensor.prototype, "clickable", void 0);
293
+ __decorate([
294
+ raw,
295
+ __metadata("design:type", Boolean)
296
+ ], PointerSensor.prototype, "tryingDragging", void 0);
297
+ __decorate([
298
+ raw,
299
+ __metadata("design:type", Object)
300
+ ], PointerSensor.prototype, "draggingData", void 0);
301
+ __decorate([
302
+ raw,
303
+ __metadata("design:type", Boolean)
304
+ ], PointerSensor.prototype, "dropAllowed", void 0);
305
+ __decorate([
306
+ transactional,
307
+ __metadata("design:type", Function),
308
+ __metadata("design:paramtypes", [Object, Boolean]),
309
+ __metadata("design:returntype", void 0)
310
+ ], PointerSensor.prototype, "listen", null);
311
+ __decorate([
312
+ transactional,
313
+ options({ logging: LoggingLevel.Off }),
314
+ __metadata("design:type", Function),
315
+ __metadata("design:paramtypes", [PointerEvent]),
316
+ __metadata("design:returntype", void 0)
317
+ ], PointerSensor.prototype, "moveOver", null);
318
+ __decorate([
319
+ transactional,
320
+ options({ logging: LoggingLevel.Off }),
321
+ __metadata("design:type", Function),
322
+ __metadata("design:paramtypes", [PointerEvent]),
323
+ __metadata("design:returntype", void 0)
324
+ ], PointerSensor.prototype, "tryClickingOrDragging", null);
325
+ __decorate([
326
+ transactional,
327
+ options({ reentrance: Reentrance.CancelPrevious, logging: LoggingLevel.Off }),
328
+ __metadata("design:type", Function),
329
+ __metadata("design:paramtypes", [PointerEvent]),
330
+ __metadata("design:returntype", void 0)
331
+ ], PointerSensor.prototype, "clickingOver", null);
332
+ __decorate([
333
+ transactional,
334
+ options({ logging: LoggingLevel.Off }),
335
+ __metadata("design:type", Function),
336
+ __metadata("design:paramtypes", [PointerEvent]),
337
+ __metadata("design:returntype", void 0)
338
+ ], PointerSensor.prototype, "click", null);
339
+ __decorate([
340
+ transactional,
341
+ options({ logging: LoggingLevel.Off }),
342
+ __metadata("design:type", Function),
343
+ __metadata("design:paramtypes", [PointerEvent]),
344
+ __metadata("design:returntype", void 0)
345
+ ], PointerSensor.prototype, "startDragging", null);
346
+ __decorate([
347
+ transactional,
348
+ options({ logging: LoggingLevel.Off }),
349
+ __metadata("design:type", Function),
350
+ __metadata("design:paramtypes", [PointerEvent]),
351
+ __metadata("design:returntype", void 0)
352
+ ], PointerSensor.prototype, "dragOver", null);
353
+ __decorate([
354
+ transactional,
355
+ options({ logging: LoggingLevel.Off }),
356
+ __metadata("design:type", Function),
357
+ __metadata("design:paramtypes", [PointerEvent]),
358
+ __metadata("design:returntype", void 0)
359
+ ], PointerSensor.prototype, "drop", null);
360
+ __decorate([
361
+ transactional,
362
+ options({ logging: LoggingLevel.Off }),
363
+ __metadata("design:type", Function),
364
+ __metadata("design:paramtypes", []),
365
+ __metadata("design:returntype", void 0)
366
+ ], PointerSensor.prototype, "finishDragging", null);
367
+ __decorate([
368
+ transactional,
369
+ options({ logging: LoggingLevel.Off }),
370
+ __metadata("design:type", Function),
371
+ __metadata("design:paramtypes", []),
372
+ __metadata("design:returntype", void 0)
373
+ ], PointerSensor.prototype, "cancelDragging", null);
374
+ __decorate([
375
+ transactional,
376
+ options({ logging: LoggingLevel.Off }),
377
+ __metadata("design:type", Function),
378
+ __metadata("design:paramtypes", []),
379
+ __metadata("design:returntype", void 0)
380
+ ], PointerSensor.prototype, "reset", null);
381
+ __decorate([
382
+ reactive,
383
+ options({ throttling: 0 }),
384
+ __metadata("design:type", Function),
385
+ __metadata("design:paramtypes", []),
386
+ __metadata("design:returntype", void 0)
387
+ ], PointerSensor.prototype, "whenClickingOrDragging", null);
388
+ __decorate([
389
+ reactive,
390
+ options({ throttling: 0 }),
391
+ __metadata("design:type", Function),
392
+ __metadata("design:paramtypes", []),
393
+ __metadata("design:returntype", void 0)
394
+ ], PointerSensor.prototype, "whenMoving", null);
@@ -0,0 +1,18 @@
1
+ import { RxNode } from '../../core/api';
2
+ import { Sensor } from './Sensor';
3
+ export interface ResizedElement {
4
+ readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
5
+ readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
6
+ readonly contentRect: DOMRectReadOnly;
7
+ readonly resizeData: any;
8
+ }
9
+ export declare class ResizeSensor extends Sensor {
10
+ private readonly observer;
11
+ resizedElements: Array<ResizedElement>;
12
+ constructor();
13
+ reset(): void;
14
+ observeResizing(node: RxNode<any, any, any>, value: boolean, boxSizing?: ResizeObserverBoxOptions): void;
15
+ protected onResize(entries: Array<ResizeObserverEntry>): void;
16
+ protected resize(entries: Array<ResizeObserverEntry>): void;
17
+ protected doReset(): void;
18
+ }
@@ -0,0 +1,72 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { options, transactional, LoggingLevel } from 'reactronic';
11
+ import { Sensor } from './Sensor';
12
+ export class ResizeSensor extends Sensor {
13
+ constructor() {
14
+ super();
15
+ this.resizedElements = [];
16
+ this.observer = new ResizeObserver(this.onResize.bind(this));
17
+ }
18
+ reset() {
19
+ this.doReset();
20
+ }
21
+ observeResizing(node, value, boxSizing = 'content-box') {
22
+ const native = node.element;
23
+ if (native instanceof Element) {
24
+ if (value) {
25
+ if (native.resizeObserver !== undefined && native.resizeObserver !== this.observer)
26
+ native.resizeObserver.unobserve(native);
27
+ native.resizeObserver = this.observer;
28
+ this.observer.observe(native, { box: boxSizing });
29
+ }
30
+ else {
31
+ if (native.resizeObserver === this.observer) {
32
+ this.observer.unobserve(native);
33
+ native.resizeObserver = undefined;
34
+ }
35
+ }
36
+ }
37
+ else
38
+ throw new Error('cannot observe resizing of non-HTML node');
39
+ }
40
+ onResize(entries) {
41
+ this.resize(entries);
42
+ this.reset();
43
+ }
44
+ resize(entries) {
45
+ this.revision++;
46
+ this.resizedElements = entries.map(entry => {
47
+ const element = entry.target;
48
+ return {
49
+ borderBoxSize: entry.borderBoxSize,
50
+ contentBoxSize: entry.contentBoxSize,
51
+ contentRect: entry.contentRect,
52
+ resizeData: element.dataForSensor.resize,
53
+ };
54
+ });
55
+ }
56
+ doReset() {
57
+ this.resizedElements = [];
58
+ }
59
+ }
60
+ __decorate([
61
+ transactional,
62
+ __metadata("design:type", Function),
63
+ __metadata("design:paramtypes", []),
64
+ __metadata("design:returntype", void 0)
65
+ ], ResizeSensor.prototype, "reset", null);
66
+ __decorate([
67
+ transactional,
68
+ options({ logging: LoggingLevel.Off }),
69
+ __metadata("design:type", Function),
70
+ __metadata("design:paramtypes", [Array]),
71
+ __metadata("design:returntype", void 0)
72
+ ], ResizeSensor.prototype, "resize", null);