verstak 0.24.269 → 0.24.270

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,37 @@
1
+ import { RxNodeVariable } from "reactronic";
2
+ export declare enum Axis {
3
+ X = 0,
4
+ Y = 1
5
+ }
6
+ export type NoUnit = void;
7
+ export type DistanceUnit = "px" | "ln" | "em" | "rem" | "vw" | "vh" | "%" | "f";
8
+ export declare class Dimension<T = NoUnit> {
9
+ num: number;
10
+ unit?: T;
11
+ constructor(num: number, unit?: T);
12
+ clone(): Dimension<T>;
13
+ equalsTo(another: Dimension<T>): boolean;
14
+ static parse<T>(text: string): Dimension<T>;
15
+ static emit<T>(value: Dimension<T>): string;
16
+ static readonly gFontSizePx: RxNodeVariable<number>;
17
+ private static readonly gLineSizePx;
18
+ static get lineSizePx(): number;
19
+ static set lineSizePx(value: number);
20
+ static getLineSizePx(): RxNodeVariable<number>;
21
+ }
22
+ export declare function dim<T = NoUnit>(num: number, unit?: T): Dimension<T>;
23
+ export type SizeConverterOptions = {
24
+ axis: Axis;
25
+ lineSizePx: number;
26
+ fontSizePx: number;
27
+ containerSizeXpx: number;
28
+ containerSizeYpx: number;
29
+ };
30
+ export declare const BodyFontSize: number;
31
+ export declare const BodySmallFontSize: number;
32
+ export declare function px(num: number): Dimension<DistanceUnit>;
33
+ export declare function ln(num: number): Dimension<DistanceUnit>;
34
+ export declare function fromPx(value: number, unit: DistanceUnit, options: SizeConverterOptions): number;
35
+ export declare function fromPx<T>(value: Dimension<T>, options: SizeConverterOptions): number;
36
+ export declare function toPx(value: number, unit: DistanceUnit, options: SizeConverterOptions): number;
37
+ export declare function toPx<T>(value: Dimension<T>, options: SizeConverterOptions): number;
@@ -0,0 +1,139 @@
1
+ import { RxNodeVariable } from "reactronic";
2
+ export var Axis;
3
+ (function (Axis) {
4
+ Axis[Axis["X"] = 0] = "X";
5
+ Axis[Axis["Y"] = 1] = "Y";
6
+ })(Axis || (Axis = {}));
7
+ export class Dimension {
8
+ constructor(num, unit) {
9
+ this.num = num;
10
+ this.unit = unit;
11
+ }
12
+ clone() {
13
+ return new Dimension(this.num, this.unit);
14
+ }
15
+ equalsTo(another) {
16
+ return this.num === another.num && this.unit === another.unit;
17
+ }
18
+ static parse(text) {
19
+ text = text.trim();
20
+ const splitPos = text.search(/[^0-9.]/);
21
+ const num = Number.parseFloat(~splitPos ? text.substring(0, splitPos) : text);
22
+ const unit = ~splitPos ? text.substring(splitPos, text.length).trim() : undefined;
23
+ return dim(num, unit);
24
+ }
25
+ static emit(value) {
26
+ var _a;
27
+ return `${value.num}${(_a = value.unit) !== null && _a !== void 0 ? _a : ""}`;
28
+ }
29
+ static get lineSizePx() {
30
+ return Dimension.gLineSizePx.value;
31
+ }
32
+ static set lineSizePx(value) {
33
+ Dimension.gLineSizePx.value = value;
34
+ }
35
+ static getLineSizePx() {
36
+ return Dimension.gLineSizePx;
37
+ }
38
+ }
39
+ Dimension.gFontSizePx = new RxNodeVariable();
40
+ Dimension.gLineSizePx = new RxNodeVariable();
41
+ export function dim(num, unit) {
42
+ return new Dimension(num, unit);
43
+ }
44
+ export const BodyFontSize = Number.parseFloat(getComputedStyle(document.body).fontSize);
45
+ export const BodySmallFontSize = Math.ceil(BodyFontSize * 0.75);
46
+ export function px(num) {
47
+ return dim(num, "px");
48
+ }
49
+ export function ln(num) {
50
+ return dim(num, "ln");
51
+ }
52
+ export function fromPx(value, ...args) {
53
+ const isValueNumber = typeof value === "number";
54
+ const { num, unit } = isValueNumber
55
+ ? { num: value, unit: args[0] }
56
+ : value;
57
+ const options = isValueNumber ? args[1] : args[0];
58
+ let result = 0;
59
+ switch (unit) {
60
+ case "px":
61
+ result = num;
62
+ break;
63
+ case "ln":
64
+ result = pxToEmOrN(num, options.lineSizePx);
65
+ break;
66
+ case "em":
67
+ result = pxToEmOrN(num, options.fontSizePx);
68
+ break;
69
+ case "rem":
70
+ result = pxToRem(num);
71
+ break;
72
+ case "vw":
73
+ result = pxToPercent(num, options.containerSizeXpx);
74
+ break;
75
+ case "vh":
76
+ result = pxToPercent(num, options.containerSizeYpx);
77
+ break;
78
+ case "%":
79
+ result = pxToPercent(num, options.axis === Axis.X ? options.containerSizeXpx : options.containerSizeYpx);
80
+ break;
81
+ default:
82
+ result = num;
83
+ break;
84
+ }
85
+ return result;
86
+ }
87
+ export function toPx(value, ...args) {
88
+ const isValueNumber = typeof value === "number";
89
+ const { num, unit } = isValueNumber
90
+ ? { num: value, unit: args[0] }
91
+ : value;
92
+ const options = isValueNumber ? args[1] : args[0];
93
+ let result = 0;
94
+ switch (unit) {
95
+ case "px":
96
+ result = num;
97
+ break;
98
+ case "ln":
99
+ result = emOrNToPx(num, options.lineSizePx);
100
+ break;
101
+ case "em":
102
+ result = emOrNToPx(num, options.fontSizePx);
103
+ break;
104
+ case "rem":
105
+ result = remToPx(num);
106
+ break;
107
+ case "vw":
108
+ result = percentToPx(num, options.containerSizeXpx);
109
+ break;
110
+ case "vh":
111
+ result = percentToPx(num, options.containerSizeYpx);
112
+ break;
113
+ case "%":
114
+ result = percentToPx(num, options.axis === Axis.X ? options.containerSizeXpx : options.containerSizeYpx);
115
+ break;
116
+ default:
117
+ result = num;
118
+ break;
119
+ }
120
+ return result;
121
+ }
122
+ function pxToPercent(px, containerSizePx) {
123
+ return px * 100 / containerSizePx;
124
+ }
125
+ function pxToRem(px) {
126
+ return px / BodyFontSize;
127
+ }
128
+ function pxToEmOrN(px, sizePx) {
129
+ return px / sizePx;
130
+ }
131
+ function percentToPx(percent, containerSizePx) {
132
+ return percent * containerSizePx / 100;
133
+ }
134
+ function remToPx(rem) {
135
+ return Math.round(rem * BodyFontSize);
136
+ }
137
+ function emOrNToPx(em, sizePx) {
138
+ return Math.round(em * sizePx);
139
+ }
@@ -0,0 +1,18 @@
1
+ import { MergeList, MergedItem, RxNode } from "reactronic";
2
+ import { ElImpl } from "./El.js";
3
+ export declare function relayoutUsingSplitter(splitViewNode: RxNode<ElImpl>, deltaPx: number, index: number, initialSizesPx: Array<{
4
+ node: RxNode<ElImpl>;
5
+ sizePx: number;
6
+ }>, priorities?: ReadonlyArray<number>): void;
7
+ export declare function relayout(splitViewNode: RxNode<ElImpl>, priorities: ReadonlyArray<number>, sizesPx: Array<{
8
+ node: RxNode<ElImpl>;
9
+ sizePx: number;
10
+ }>): void;
11
+ export declare function resizeUsingDelta(splitViewNode: RxNode<ElImpl>, containerSizePx: number, deltaPx: number, index: number, priorities: ReadonlyArray<number>, sizesPx: Array<{
12
+ node: RxNode<ElImpl>;
13
+ sizePx: number;
14
+ }>, force?: boolean): void;
15
+ export declare function layout(splitViewNode: RxNode<ElImpl>): void;
16
+ export declare function getPrioritiesForSplitter(index: number, size: number): ReadonlyArray<number>;
17
+ export declare function getPrioritiesForSizeChanging(item: MergedItem<any>, children: MergeList<RxNode>): ReadonlyArray<number>;
18
+ export declare function getPrioritiesForEmptySpaceDistribution(children: MergeList<RxNode>): ReadonlyArray<number>;
@@ -0,0 +1,256 @@
1
+ import { ElLayoutInfo, InitialElLayoutInfo, SplitView } from "./El.js";
2
+ import { clamp } from "./ElUtils.js";
3
+ import { Drivers, isSplitViewPartition } from "./Elements.js";
4
+ export function relayoutUsingSplitter(splitViewNode, deltaPx, index, initialSizesPx, priorities) {
5
+ var _a, _b, _c, _d;
6
+ if (priorities === undefined) {
7
+ priorities = getPrioritiesForSplitter(index + 1, initialSizesPx.length);
8
+ }
9
+ const containerSizePx = splitViewNode.element.splitView === SplitView.horizontal
10
+ ? (_b = (_a = splitViewNode.element.layoutInfo) === null || _a === void 0 ? void 0 : _a.containerSizeXpx) !== null && _b !== void 0 ? _b : 0
11
+ : (_d = (_c = splitViewNode.element.layoutInfo) === null || _c === void 0 ? void 0 : _c.containerSizeYpx) !== null && _d !== void 0 ? _d : 0;
12
+ console.log(`(splitter) delta = ${deltaPx}, container = ${containerSizePx}, size = ${initialSizesPx.reduce((p, c) => p + c.sizePx, 0)}, index = ${index}`);
13
+ resizeUsingDelta(splitViewNode, containerSizePx, deltaPx, index + 1, priorities, initialSizesPx, true);
14
+ layout(splitViewNode);
15
+ }
16
+ export function relayout(splitViewNode, priorities, sizesPx) {
17
+ var _a, _b, _c, _d;
18
+ const containerSizePx = splitViewNode.element.splitView === SplitView.horizontal
19
+ ? (_b = (_a = splitViewNode.element.layoutInfo) === null || _a === void 0 ? void 0 : _a.containerSizeXpx) !== null && _b !== void 0 ? _b : 0
20
+ : (_d = (_c = splitViewNode.element.layoutInfo) === null || _c === void 0 ? void 0 : _c.containerSizeYpx) !== null && _d !== void 0 ? _d : 0;
21
+ const deltaPx = containerSizePx - sizesPx.reduce((p, c) => p + c.sizePx, 0);
22
+ console.log(`(relayout) delta = ${deltaPx}px, container = ${containerSizePx}px, priorities = ${priorities.map(x => `0x${x.toString(2)}`).join(",")}`);
23
+ resizeUsingDelta(splitViewNode, containerSizePx, deltaPx, sizesPx.length, priorities, sizesPx);
24
+ layout(splitViewNode);
25
+ }
26
+ export function resizeUsingDelta(splitViewNode, containerSizePx, deltaPx, index, priorities, sizesPx, force = false) {
27
+ var _a, _b, _c, _d;
28
+ const isHorizontal = splitViewNode.element.splitView === SplitView.horizontal;
29
+ if (sizesPx.length > 0 && deltaPx !== 0) {
30
+ let minBeforeDeltaPx = 0;
31
+ let maxBeforeDeltaPx = 0;
32
+ for (let i = 0; i < index; i++) {
33
+ const size = isHorizontal ? sizesPx[i].node.element.widthPx : sizesPx[i].node.element.heightPx;
34
+ minBeforeDeltaPx += size.minPx - sizesPx[i].sizePx;
35
+ maxBeforeDeltaPx += size.maxPx - sizesPx[i].sizePx;
36
+ }
37
+ const hasAfter = index < sizesPx.length;
38
+ let minAfterDeltaPx = hasAfter ? 0 : Number.NEGATIVE_INFINITY;
39
+ let maxAfterDeltaPx = hasAfter ? 0 : Number.POSITIVE_INFINITY;
40
+ for (let i = index; i < sizesPx.length; i++) {
41
+ const size = isHorizontal ? sizesPx[i].node.element.widthPx : sizesPx[i].node.element.heightPx;
42
+ minAfterDeltaPx += sizesPx[i].sizePx - size.maxPx;
43
+ maxAfterDeltaPx += sizesPx[i].sizePx - size.minPx;
44
+ }
45
+ const minDeltaPx = Math.max(minBeforeDeltaPx, minAfterDeltaPx);
46
+ const maxDeltaPx = Math.min(maxBeforeDeltaPx, maxAfterDeltaPx);
47
+ const clampedDeltaPx = clamp(deltaPx, minDeltaPx, maxDeltaPx);
48
+ console.log(`%c${sizesPx.map((x, i) => {
49
+ const size = isHorizontal ? x.node.element.widthPx : x.node.element.heightPx;
50
+ return `${i}: ${size.minPx}..${x.sizePx}..${size.maxPx} (px)`;
51
+ }).join("\n")}`, "color: orangered");
52
+ console.log(`[${Array.from({ length: index }).map((x, i) => i).join(",")} | ${Array.from({ length: Math.max(0, sizesPx.length - index) }).map((x, i) => index + i).join(",")}] min = ${minDeltaPx.toFixed(2)} (${minBeforeDeltaPx.toFixed(2)}, ${minAfterDeltaPx.toFixed(2)}), ${deltaPx.toFixed(2)} -> ${clampedDeltaPx.toFixed(2)}, max = ${maxDeltaPx.toFixed(2)} (${maxBeforeDeltaPx.toFixed(2)}, ${maxAfterDeltaPx.toFixed(2)})`);
53
+ if (clampedDeltaPx !== 0) {
54
+ const res = 1 / devicePixelRatio;
55
+ let lastGrowingElementIndex = undefined;
56
+ if (index > 0) {
57
+ let runningReminderPx = 0;
58
+ let beforeDeltaPx = clampedDeltaPx;
59
+ for (let priority = 0; priority < priorities.length; priority++) {
60
+ const vector = priorities[priority];
61
+ let fractionCount = getFractionCount(isHorizontal, sizesPx.map(x => x.node), vector, index, force);
62
+ do {
63
+ const fractionSizePx = getFractionSizePx(beforeDeltaPx, fractionCount);
64
+ fractionCount = 0;
65
+ for (const i of indexes(vector, index)) {
66
+ const child = sizesPx[i].node;
67
+ const initialSizePx = sizesPx[i].sizePx;
68
+ const g = isHorizontal ? ((_a = child.element.stretchingStrengthX) !== null && _a !== void 0 ? _a : 0) : ((_b = child.element.stretchingStrengthY) !== null && _b !== void 0 ? _b : 0);
69
+ const growth = g > 0 ? g : (force ? 1 : 0);
70
+ if (growth > 0)
71
+ lastGrowingElementIndex = i;
72
+ const appendagePx = growth * fractionSizePx;
73
+ const newSizePx = initialSizePx + appendagePx;
74
+ let flooredNewSizePx = Math.floor(newSizePx * devicePixelRatio) / devicePixelRatio;
75
+ runningReminderPx += newSizePx - flooredNewSizePx;
76
+ if (runningReminderPx >= res) {
77
+ runningReminderPx -= res;
78
+ flooredNewSizePx += res;
79
+ }
80
+ const size = isHorizontal ? sizesPx[i].node.element.widthPx : sizesPx[i].node.element.heightPx;
81
+ const sizePx = clamp(flooredNewSizePx, size.minPx, size.maxPx);
82
+ console.log(`[${i}]: min = ${size.minPx}, max = ${size.maxPx}, growth = ${growth}, flooredNewSizePx = ${flooredNewSizePx}, size = ${sizePx} px`);
83
+ beforeDeltaPx -= sizePx - initialSizePx;
84
+ sizesPx[i].sizePx = sizePx;
85
+ if (sizesPx[i].sizePx > size.minPx && sizesPx[i].sizePx < size.maxPx) {
86
+ fractionCount += growth;
87
+ }
88
+ }
89
+ } while (beforeDeltaPx > 0 && fractionCount > 0 && Math.abs(beforeDeltaPx) >= devicePixelRatio);
90
+ if (Math.abs(beforeDeltaPx) < devicePixelRatio) {
91
+ break;
92
+ }
93
+ }
94
+ if (hasAfter) {
95
+ let runningReminderPx = 0;
96
+ let afterDeltaPx = clampedDeltaPx;
97
+ for (let priority = 0; priority < priorities.length; priority++) {
98
+ const vector = priorities[priority];
99
+ let fractionCount = getFractionCount(isHorizontal, sizesPx.map(x => x.node), vector, -index, force);
100
+ do {
101
+ const fractionSizePx = getFractionSizePx(afterDeltaPx, fractionCount);
102
+ fractionCount = 0;
103
+ for (const i of indexes(vector, -index)) {
104
+ const child = sizesPx[i].node;
105
+ const initialSizePx = sizesPx[i].sizePx;
106
+ const g = isHorizontal ? ((_c = child.element.stretchingStrengthX) !== null && _c !== void 0 ? _c : 0) : ((_d = child.element.stretchingStrengthY) !== null && _d !== void 0 ? _d : 0);
107
+ const growth = g > 0 ? g : (force ? 1 : 0);
108
+ if (growth > 0)
109
+ lastGrowingElementIndex = i;
110
+ const appendagePx = growth * fractionSizePx;
111
+ const newSizePx = initialSizePx - appendagePx;
112
+ let flooredNewSizePx = Math.floor(newSizePx * devicePixelRatio) / devicePixelRatio;
113
+ runningReminderPx += newSizePx - flooredNewSizePx;
114
+ if (runningReminderPx >= res) {
115
+ runningReminderPx -= res;
116
+ flooredNewSizePx += res;
117
+ }
118
+ const size = isHorizontal ? sizesPx[i].node.element.widthPx : sizesPx[i].node.element.heightPx;
119
+ const sizePx = clamp(flooredNewSizePx, size.minPx, size.maxPx);
120
+ afterDeltaPx += sizePx - initialSizePx;
121
+ sizesPx[i].sizePx = sizePx;
122
+ if (sizesPx[i].sizePx > size.minPx && sizesPx[i].sizePx < size.maxPx) {
123
+ fractionCount += growth;
124
+ }
125
+ }
126
+ } while (afterDeltaPx > 0 && fractionCount > 0 && Math.abs(containerSizePx - sizesPx.reduce((p, c) => p + c.sizePx, 0)) >= devicePixelRatio);
127
+ if (Math.abs(containerSizePx - sizesPx.reduce((p, c) => p + c.sizePx, 0)) < devicePixelRatio) {
128
+ break;
129
+ }
130
+ }
131
+ }
132
+ if (lastGrowingElementIndex !== undefined) {
133
+ }
134
+ }
135
+ }
136
+ }
137
+ for (let i = 0; i < sizesPx.length; i++) {
138
+ const el = sizesPx[i].node.element;
139
+ if (el.layoutInfo === undefined)
140
+ el.layoutInfo = new ElLayoutInfo(InitialElLayoutInfo);
141
+ el.layoutInfo.effectiveSizePx = sizesPx[i].sizePx;
142
+ console.log(`[${i}]: set size = ${sizesPx[i].sizePx}px`);
143
+ }
144
+ }
145
+ export function layout(splitViewNode) {
146
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
147
+ const isHorizontal = splitViewNode.element.splitView === SplitView.horizontal;
148
+ let posPx = 0;
149
+ const sizesPx = [];
150
+ const offsetXpx = (_b = (_a = splitViewNode.element.layoutInfo) === null || _a === void 0 ? void 0 : _a.offsetXpx) !== null && _b !== void 0 ? _b : 0;
151
+ const offsetYpx = (_d = (_c = splitViewNode.element.layoutInfo) === null || _c === void 0 ? void 0 : _c.offsetYpx) !== null && _d !== void 0 ? _d : 0;
152
+ for (const item of splitViewNode.children.items()) {
153
+ const child = item.instance;
154
+ if (isSplitViewPartition(child.driver)) {
155
+ const el = child.element;
156
+ if (el.native !== undefined) {
157
+ posPx += (_f = (_e = el.layoutInfo) === null || _e === void 0 ? void 0 : _e.effectiveSizePx) !== null && _f !== void 0 ? _f : 0;
158
+ sizesPx.push((_h = (_g = el.layoutInfo) === null || _g === void 0 ? void 0 : _g.effectiveSizePx) !== null && _h !== void 0 ? _h : 0);
159
+ }
160
+ }
161
+ else if (child.driver === Drivers.splitter) {
162
+ const el = child.element;
163
+ if (el.native !== undefined) {
164
+ if (isHorizontal)
165
+ el.style.left = `${offsetXpx + posPx}px`;
166
+ else
167
+ el.style.top = `${offsetYpx + posPx}px`;
168
+ }
169
+ }
170
+ }
171
+ const wrapper = (_j = splitViewNode.children.firstMergedItem()) === null || _j === void 0 ? void 0 : _j.instance;
172
+ if (wrapper !== undefined) {
173
+ if (isHorizontal)
174
+ wrapper.element.style.gridTemplateColumns = sizesPx.map(x => `${x}px`).join(" ");
175
+ else
176
+ wrapper.element.style.gridTemplateRows = sizesPx.map(x => `${x}px`).join(" ");
177
+ }
178
+ }
179
+ export function getPrioritiesForSplitter(index, size) {
180
+ const result = [];
181
+ let i = index - 1;
182
+ let j = index;
183
+ while (i >= 0 || j < size) {
184
+ if (i >= 0 && j < size) {
185
+ result.push((1 << i--) | (1 << j++));
186
+ }
187
+ else if (i >= 0) {
188
+ result.push(1 << i--);
189
+ }
190
+ else {
191
+ result.push(1 << j++);
192
+ }
193
+ }
194
+ return result;
195
+ }
196
+ export function getPrioritiesForSizeChanging(item, children) {
197
+ const result = [];
198
+ let i = 0;
199
+ let changedItemIndex = -1;
200
+ for (const child of children.items()) {
201
+ if (isSplitViewPartition(child.instance.driver)) {
202
+ if (child !== item)
203
+ result.push(1 << i);
204
+ else
205
+ changedItemIndex = i;
206
+ i++;
207
+ }
208
+ }
209
+ if (changedItemIndex !== -1)
210
+ result.push(1 << changedItemIndex);
211
+ return result;
212
+ }
213
+ export function getPrioritiesForEmptySpaceDistribution(children) {
214
+ let result = 0;
215
+ let i = 0;
216
+ for (const child of children.items()) {
217
+ if (isSplitViewPartition(child.instance.driver))
218
+ result |= 1 << i++;
219
+ }
220
+ return [result];
221
+ }
222
+ function getFractionCount(isHorizontal, children, vector, index, force = false) {
223
+ var _a;
224
+ let result = 0;
225
+ for (const i of indexes(vector, index)) {
226
+ const growth = (_a = (isHorizontal ? children[i].element.stretchingStrengthX : children[i].element.stretchingStrengthY)) !== null && _a !== void 0 ? _a : 0;
227
+ result += growth > 0 ? growth : (force ? 1 : 0);
228
+ }
229
+ return result;
230
+ }
231
+ function getFractionSizePx(spacePx, fractionCount) {
232
+ return fractionCount > 0 ? spacePx / fractionCount : 0;
233
+ }
234
+ function* indexes(vector, index) {
235
+ let i = 0;
236
+ if (index < 0) {
237
+ i = -index;
238
+ vector >>>= i;
239
+ while (vector > 0) {
240
+ if (vector & 1) {
241
+ yield i;
242
+ }
243
+ vector >>>= 1;
244
+ i++;
245
+ }
246
+ }
247
+ else {
248
+ while (i < index) {
249
+ if (vector & 1) {
250
+ yield i;
251
+ }
252
+ vector >>>= 1;
253
+ i++;
254
+ }
255
+ }
256
+ }
@@ -5,6 +5,7 @@ export * from "./HtmlElements.js";
5
5
  export * from "./HtmlApiExt.js";
6
6
  export * from "./Elements.js";
7
7
  export * from "./Handlers.js";
8
+ export * from "./Sizes.js";
8
9
  export * from "./sensors/Sensor.js";
9
10
  export * from "./sensors/PointerSensor.js";
10
11
  export * from "./sensors/BasePointerSensor.js";
@@ -5,6 +5,7 @@ export * from "./HtmlElements.js";
5
5
  export * from "./HtmlApiExt.js";
6
6
  export * from "./Elements.js";
7
7
  export * from "./Handlers.js";
8
+ export * from "./Sizes.js";
8
9
  export * from "./sensors/Sensor.js";
9
10
  export * from "./sensors/PointerSensor.js";
10
11
  export * from "./sensors/BasePointerSensor.js";
@@ -64,6 +64,8 @@ export class PointerSensor extends BasePointerSensor {
64
64
  }
65
65
  }
66
66
  onPointerDown(e) {
67
+ var _a;
68
+ (_a = this.sourceElement) === null || _a === void 0 ? void 0 : _a.setPointerCapture(e.pointerId);
67
69
  const button = extractPointerButton(e);
68
70
  if (!this.dragStarted && this.clickable === undefined &&
69
71
  (button === PointerButton.left || button === PointerButton.right)) {
@@ -97,6 +99,8 @@ export class PointerSensor extends BasePointerSensor {
97
99
  }
98
100
  }
99
101
  onPointerUp(e) {
102
+ var _a;
103
+ (_a = this.sourceElement) === null || _a === void 0 ? void 0 : _a.releasePointerCapture(e.pointerId);
100
104
  if (this.draggingOver) {
101
105
  this.drop(e);
102
106
  this.finishDragging();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verstak",
3
- "version": "0.24.269",
3
+ "version": "0.24.270",
4
4
  "description": "Verstak - Front-End Library",
5
5
  "publisher": "Nezaboodka Software",
6
6
  "license": "Apache-2.0",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "homepage": "https://github.com/nezaboodka/verstak/blob/master/README.md#readme",
33
33
  "dependencies": {
34
- "reactronic": "^0.24.268"
34
+ "reactronic": "^0.24.270"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "20.11.17",