uiik 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/draggable.d.ts +1 -1
- package/index.esm.js +99 -53
- package/index.js +100 -53
- package/package.json +2 -2
- package/types.d.ts +13 -5
package/draggable.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { DraggableOptions, Uii } from "./types";
|
|
|
2
2
|
export declare class Draggable extends Uii {
|
|
3
3
|
#private;
|
|
4
4
|
constructor(els: string | HTMLElement | Array<string | HTMLElement> | NodeListOf<Element>, opts?: DraggableOptions);
|
|
5
|
-
bindEvent(bindTarget: Element
|
|
5
|
+
bindEvent(bindTarget: Element): void;
|
|
6
6
|
onOptionChanged(opts: Record<string, any>): void;
|
|
7
7
|
}
|
|
8
8
|
export declare function newDraggable(els: string | HTMLElement | Array<string | HTMLElement> | NodeListOf<Element>, opts?: DraggableOptions): Draggable;
|
package/index.esm.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* uiik v1.4.
|
|
2
|
+
* uiik v1.4.1
|
|
3
3
|
* A UI interactions kit includes draggable, splittable, rotatable, selectable, etc.
|
|
4
4
|
* https://github.com/holyhigh2/uiik
|
|
5
5
|
* c) 2021-2025 @holyhigh2 may be freely distributed under the MIT license
|
|
6
6
|
*/
|
|
7
7
|
import { find, map, toArray, each, reject, includes, some, flatMap, size } from 'myfx/collection';
|
|
8
8
|
import { isDefined, isNumber, isNaN, isString, isArrayLike, isElement, isEmpty, isBlank, isArray, isFunction, isBoolean, isUndefined } from 'myfx/is';
|
|
9
|
-
import { get, assign, merge } from 'myfx/object';
|
|
10
|
-
import {
|
|
9
|
+
import { get, assign, set, merge } from 'myfx/object';
|
|
10
|
+
import { closest } from 'myfx/tree';
|
|
11
|
+
import { isElement as isElement$1, filter, isCustomElement, last } from 'myfx';
|
|
11
12
|
import { compact, findIndex } from 'myfx/array';
|
|
12
13
|
import { split, test } from 'myfx/string';
|
|
13
|
-
import { closest } from 'myfx/tree';
|
|
14
14
|
import { alphaId } from 'myfx/utils';
|
|
15
15
|
|
|
16
16
|
/******************************************************************************
|
|
@@ -497,12 +497,17 @@ function isVisible(el) {
|
|
|
497
497
|
}
|
|
498
498
|
|
|
499
499
|
var _Uii_listeners;
|
|
500
|
+
const UII_KEY = '__uii_target_';
|
|
501
|
+
const UII_MAP = {};
|
|
502
|
+
let UiiSn = 0;
|
|
500
503
|
class Uii {
|
|
501
504
|
constructor(ele, opts) {
|
|
505
|
+
var _a;
|
|
502
506
|
this.enabled = true;
|
|
503
507
|
_Uii_listeners.set(this, []);
|
|
504
508
|
this.opts = opts || {};
|
|
505
509
|
this.opts.mouseButton = this.opts.mouseButton || 'left';
|
|
510
|
+
this.opts.eventCapture = (_a = this.opts.eventCapture) !== null && _a !== void 0 ? _a : true;
|
|
506
511
|
if (isArrayLike(ele) && !isString(ele)) {
|
|
507
512
|
this.ele = map(ele, (el) => {
|
|
508
513
|
let e = isString(el) ? document.querySelector(el) : el;
|
|
@@ -526,6 +531,9 @@ class Uii {
|
|
|
526
531
|
? toArray(el)
|
|
527
532
|
: [el];
|
|
528
533
|
}
|
|
534
|
+
let uid = UiiSn++ + '';
|
|
535
|
+
UII_MAP[uid] = this;
|
|
536
|
+
this._bindUiik(uid);
|
|
529
537
|
}
|
|
530
538
|
destroy() {
|
|
531
539
|
each(__classPrivateFieldGet(this, _Uii_listeners, "f"), (ev) => {
|
|
@@ -533,12 +541,13 @@ class Uii {
|
|
|
533
541
|
});
|
|
534
542
|
__classPrivateFieldSet(this, _Uii_listeners, [], "f");
|
|
535
543
|
}
|
|
536
|
-
addPointerDown(el, pointerDown
|
|
544
|
+
addPointerDown(el, pointerDown) {
|
|
537
545
|
const onPointerDown = pointerDown;
|
|
538
|
-
const threshold = opts.threshold || 0;
|
|
539
|
-
const toLockPage = opts.lockPage || false;
|
|
540
546
|
const uiiOptions = this.opts;
|
|
547
|
+
let threshold = 0;
|
|
548
|
+
let toLockPage = true;
|
|
541
549
|
this.registerEvent(el, "mousedown", (e) => {
|
|
550
|
+
var _a;
|
|
542
551
|
if (uiiOptions.mouseButton) {
|
|
543
552
|
switch (uiiOptions.mouseButton) {
|
|
544
553
|
case "left":
|
|
@@ -590,6 +599,12 @@ class Uii {
|
|
|
590
599
|
e.preventDefault();
|
|
591
600
|
return false;
|
|
592
601
|
}
|
|
602
|
+
let target = closest(t, (node) => node && get(node, UII_KEY), "parentElement");
|
|
603
|
+
if (target) {
|
|
604
|
+
let uiiInstance = UII_MAP[get(target, UII_KEY)];
|
|
605
|
+
threshold = uiiInstance.opts.threshold || 0;
|
|
606
|
+
toLockPage = (_a = uiiInstance.opts.lockPage) !== null && _a !== void 0 ? _a : true;
|
|
607
|
+
}
|
|
593
608
|
let matrixInfo = getMatrixInfo(el, true);
|
|
594
609
|
const pointerMove = (ev) => {
|
|
595
610
|
const offX = (ev.clientX - originPosX) / matrixInfo.scale;
|
|
@@ -640,7 +655,7 @@ class Uii {
|
|
|
640
655
|
window.addEventListener("blur", pointerEnd);
|
|
641
656
|
e.preventDefault();
|
|
642
657
|
return false;
|
|
643
|
-
},
|
|
658
|
+
}, this.opts.eventCapture);
|
|
644
659
|
}
|
|
645
660
|
registerEvent(el, event, hook, useCapture = false) {
|
|
646
661
|
const wrapper = ((ev) => {
|
|
@@ -671,6 +686,11 @@ class Uii {
|
|
|
671
686
|
this.opts[name] = value;
|
|
672
687
|
this.onOptionChanged(this.opts);
|
|
673
688
|
}
|
|
689
|
+
_bindUiik(uid) {
|
|
690
|
+
each(this.ele, el => {
|
|
691
|
+
set(el, UII_KEY, uid);
|
|
692
|
+
});
|
|
693
|
+
}
|
|
674
694
|
onOptionChanged(opts) { }
|
|
675
695
|
}
|
|
676
696
|
_Uii_listeners = new WeakMap();
|
|
@@ -737,7 +757,8 @@ class Splittable extends Uii {
|
|
|
737
757
|
}
|
|
738
758
|
else {
|
|
739
759
|
each(handleDoms, (h, i) => {
|
|
740
|
-
|
|
760
|
+
var _a;
|
|
761
|
+
const isRoot = (_a = h.parentElement) === null || _a === void 0 ? void 0 : _a.classList.contains(CLASS_SPLITTABLE);
|
|
741
762
|
let dom1, dom2;
|
|
742
763
|
if (isRoot) {
|
|
743
764
|
dom1 = h.previousElementSibling;
|
|
@@ -773,7 +794,7 @@ _Splittable_instances = new WeakSet(), _Splittable_checkDirection = function _Sp
|
|
|
773
794
|
const child = container.children[0];
|
|
774
795
|
let lastY = child.offsetTop;
|
|
775
796
|
let lastH = child.offsetHeight;
|
|
776
|
-
each(container.children, c => {
|
|
797
|
+
each(container.children, (c) => {
|
|
777
798
|
if (c.offsetTop > lastH + lastY) {
|
|
778
799
|
dir = 'v';
|
|
779
800
|
return false;
|
|
@@ -966,9 +987,6 @@ _Splittable_instances = new WeakSet(), _Splittable_checkDirection = function _Sp
|
|
|
966
987
|
}
|
|
967
988
|
onEnd && onEnd({ size1: originSize, size2: originSize1 }, ev);
|
|
968
989
|
});
|
|
969
|
-
}, {
|
|
970
|
-
threshold: THRESHOLD,
|
|
971
|
-
lockPage: true
|
|
972
990
|
});
|
|
973
991
|
};
|
|
974
992
|
function newSplittable(container, opts) {
|
|
@@ -1505,9 +1523,6 @@ class Resizable extends Uii {
|
|
|
1505
1523
|
}
|
|
1506
1524
|
}
|
|
1507
1525
|
});
|
|
1508
|
-
}, {
|
|
1509
|
-
threshold: THRESHOLD,
|
|
1510
|
-
lockPage: true,
|
|
1511
1526
|
});
|
|
1512
1527
|
}
|
|
1513
1528
|
initHandle(panel) {
|
|
@@ -1576,12 +1591,16 @@ function newResizable(els, opts) {
|
|
|
1576
1591
|
return new Resizable(els, opts);
|
|
1577
1592
|
}
|
|
1578
1593
|
|
|
1579
|
-
var _Draggable_instances,
|
|
1594
|
+
var _Draggable_instances, _Draggable_container, _Draggable_initHandle, _Draggable_initStyle;
|
|
1580
1595
|
const DRAGGER_GROUPS = {};
|
|
1581
1596
|
const CLASS_DRAGGABLE = "uii-draggable";
|
|
1582
1597
|
const CLASS_DRAGGABLE_HANDLE = "uii-draggable-handle";
|
|
1583
1598
|
const CLASS_DRAGGABLE_ACTIVE = "uii-draggable-active";
|
|
1584
1599
|
const CLASS_DRAGGABLE_GHOST = "uii-draggable-ghost";
|
|
1600
|
+
const HANDLE_MAP = new WeakMap();
|
|
1601
|
+
const OPTION_MAP = new WeakMap();
|
|
1602
|
+
const BINDED_CONTAINER = new WeakSet();
|
|
1603
|
+
const WATCH_MAP = {};
|
|
1585
1604
|
class Draggable extends Uii {
|
|
1586
1605
|
constructor(els, opts) {
|
|
1587
1606
|
super(els, assign({
|
|
@@ -1598,17 +1617,9 @@ class Draggable extends Uii {
|
|
|
1598
1617
|
self: false,
|
|
1599
1618
|
}, opts));
|
|
1600
1619
|
_Draggable_instances.add(this);
|
|
1601
|
-
_Draggable_handleMap.set(this, new WeakMap());
|
|
1602
1620
|
_Draggable_container.set(this, null);
|
|
1603
1621
|
if (this.opts.handle) {
|
|
1604
|
-
|
|
1605
|
-
const h = el.querySelector(this.opts.handle);
|
|
1606
|
-
if (!h) {
|
|
1607
|
-
console.error('No handle found "' + this.opts.handle + '"');
|
|
1608
|
-
return false;
|
|
1609
|
-
}
|
|
1610
|
-
__classPrivateFieldGet(this, _Draggable_handleMap, "f").set(el, h);
|
|
1611
|
-
});
|
|
1622
|
+
__classPrivateFieldGet(this, _Draggable_instances, "m", _Draggable_initHandle).call(this, this.ele);
|
|
1612
1623
|
}
|
|
1613
1624
|
this.onOptionChanged(this.opts);
|
|
1614
1625
|
if (this.opts.group) {
|
|
@@ -1637,15 +1648,20 @@ class Draggable extends Uii {
|
|
|
1637
1648
|
else {
|
|
1638
1649
|
con = isEmpty(this.ele) ? null : this.ele[0].parentElement;
|
|
1639
1650
|
}
|
|
1640
|
-
|
|
1651
|
+
let bindTarget = con || document.body;
|
|
1652
|
+
if (BINDED_CONTAINER.has(bindTarget))
|
|
1653
|
+
return;
|
|
1654
|
+
WATCH_MAP[this.eleString] = this;
|
|
1655
|
+
this.bindEvent(bindTarget);
|
|
1656
|
+
BINDED_CONTAINER.add(bindTarget);
|
|
1641
1657
|
}
|
|
1642
1658
|
else {
|
|
1643
1659
|
each(this.ele, (el) => {
|
|
1644
|
-
this.bindEvent(el
|
|
1660
|
+
this.bindEvent(el);
|
|
1645
1661
|
});
|
|
1646
1662
|
}
|
|
1647
1663
|
}
|
|
1648
|
-
bindEvent(bindTarget
|
|
1664
|
+
bindEvent(bindTarget) {
|
|
1649
1665
|
const container = __classPrivateFieldGet(this, _Draggable_container, "f");
|
|
1650
1666
|
let draggableList = this.ele;
|
|
1651
1667
|
const eleString = this.eleString;
|
|
@@ -1655,23 +1671,37 @@ class Draggable extends Uii {
|
|
|
1655
1671
|
let t = ev.target;
|
|
1656
1672
|
if (!t)
|
|
1657
1673
|
return true;
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1674
|
+
let opts = {};
|
|
1675
|
+
let findRs = closest(t, (node) => node && get(node, UII_KEY), "parentElement");
|
|
1676
|
+
if (!findRs) {
|
|
1677
|
+
let toBreak = true;
|
|
1678
|
+
each(WATCH_MAP, (v, k) => {
|
|
1679
|
+
draggableList = bindTarget.querySelectorAll(eleString);
|
|
1680
|
+
if (!isEmpty(draggableList) && (findRs = closest(t, (node) => includes(draggableList, node), "parentNode"))) {
|
|
1681
|
+
initStyle(draggableList);
|
|
1682
|
+
opts = v.opts;
|
|
1683
|
+
__classPrivateFieldGet(v, _Draggable_instances, "m", _Draggable_initHandle).call(v, draggableList);
|
|
1684
|
+
toBreak = false;
|
|
1685
|
+
return false;
|
|
1686
|
+
}
|
|
1687
|
+
});
|
|
1688
|
+
if (toBreak)
|
|
1689
|
+
return true;
|
|
1661
1690
|
}
|
|
1662
|
-
let findRs = closest(t, (node) => includes(draggableList, node), "parentNode");
|
|
1663
|
-
if (!findRs)
|
|
1664
|
-
return true;
|
|
1665
1691
|
const dragDom = findRs;
|
|
1666
|
-
let handle =
|
|
1667
|
-
if (handle && !handle.contains(t)) {
|
|
1692
|
+
let handle = HANDLE_MAP.get(dragDom);
|
|
1693
|
+
if (handle && !isCustomElement(t) && !handle.contains(t)) {
|
|
1668
1694
|
return true;
|
|
1669
1695
|
}
|
|
1696
|
+
if (isEmpty(opts))
|
|
1697
|
+
opts = OPTION_MAP.get(dragDom);
|
|
1698
|
+
if (!opts || isEmpty(opts))
|
|
1699
|
+
return true;
|
|
1670
1700
|
if (opts.self && dragDom !== t)
|
|
1671
1701
|
return true;
|
|
1672
1702
|
const onPointerDown = opts.onPointerDown;
|
|
1673
1703
|
if (onPointerDown &&
|
|
1674
|
-
onPointerDown({ draggable: dragDom }, ev) === false)
|
|
1704
|
+
onPointerDown({ draggable: dragDom, handle }, ev) === false)
|
|
1675
1705
|
return true;
|
|
1676
1706
|
const filter = opts.filter;
|
|
1677
1707
|
if (filter) {
|
|
@@ -2012,7 +2042,7 @@ class Draggable extends Uii {
|
|
|
2012
2042
|
let moveToGhost = true;
|
|
2013
2043
|
if (onEnd) {
|
|
2014
2044
|
moveToGhost =
|
|
2015
|
-
onEnd({ draggable: dragDom, x: endX, y: endY, transform }, ev) ===
|
|
2045
|
+
onEnd({ draggable: dragDom, x: endX, y: endY, transform, ghost: ghostNode }, ev) ===
|
|
2016
2046
|
false
|
|
2017
2047
|
? false
|
|
2018
2048
|
: true;
|
|
@@ -2029,13 +2059,19 @@ class Draggable extends Uii {
|
|
|
2029
2059
|
if (ghost) {
|
|
2030
2060
|
(_a = ghostNode.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(ghostNode);
|
|
2031
2061
|
if (moveToGhost !== false) {
|
|
2032
|
-
wrapper(dragDom, opts.useTransform)
|
|
2062
|
+
let transf = wrapper(dragDom, opts.useTransform);
|
|
2063
|
+
if (direction === "v") {
|
|
2064
|
+
transf.moveToY(endY);
|
|
2065
|
+
}
|
|
2066
|
+
else if (direction === "h") {
|
|
2067
|
+
transf.moveToX(endX);
|
|
2068
|
+
}
|
|
2069
|
+
else {
|
|
2070
|
+
transf.moveTo(endX, endY);
|
|
2071
|
+
}
|
|
2033
2072
|
}
|
|
2034
2073
|
}
|
|
2035
2074
|
});
|
|
2036
|
-
}, {
|
|
2037
|
-
threshold: this.opts.threshold || 0,
|
|
2038
|
-
lockPage: true,
|
|
2039
2075
|
});
|
|
2040
2076
|
}
|
|
2041
2077
|
onOptionChanged(opts) {
|
|
@@ -2056,12 +2092,27 @@ class Draggable extends Uii {
|
|
|
2056
2092
|
}
|
|
2057
2093
|
}
|
|
2058
2094
|
}
|
|
2059
|
-
|
|
2095
|
+
_Draggable_container = new WeakMap(), _Draggable_instances = new WeakSet(), _Draggable_initHandle = function _Draggable_initHandle(ele) {
|
|
2096
|
+
each(ele, (el) => {
|
|
2097
|
+
let h;
|
|
2098
|
+
if (isString(this.opts.handle)) {
|
|
2099
|
+
h = el.querySelector(this.opts.handle);
|
|
2100
|
+
if (!h) {
|
|
2101
|
+
console.error('No handle found "' + this.opts.handle + '"');
|
|
2102
|
+
return false;
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
else if (isElement(this.opts.handle)) {
|
|
2106
|
+
h = this.opts.handle;
|
|
2107
|
+
}
|
|
2108
|
+
HANDLE_MAP.set(el, h);
|
|
2109
|
+
});
|
|
2110
|
+
}, _Draggable_initStyle = function _Draggable_initStyle(draggableList) {
|
|
2060
2111
|
each(draggableList, (el) => {
|
|
2061
2112
|
if (isDefined(this.opts.type))
|
|
2062
2113
|
el.dataset.dropType = this.opts.type;
|
|
2063
2114
|
el.classList.toggle(CLASS_DRAGGABLE, true);
|
|
2064
|
-
const ee =
|
|
2115
|
+
const ee = HANDLE_MAP.get(el) || el;
|
|
2065
2116
|
ee.classList.toggle(CLASS_DRAGGABLE_HANDLE, true);
|
|
2066
2117
|
if (!isUndefined(this.opts.cursor)) {
|
|
2067
2118
|
el.style.cursor = this.opts.cursor.default || "move";
|
|
@@ -2070,6 +2121,7 @@ _Draggable_handleMap = new WeakMap(), _Draggable_container = new WeakMap(), _Dra
|
|
|
2070
2121
|
el.dataset.cursorActive = this.opts.cursor.active || "move";
|
|
2071
2122
|
}
|
|
2072
2123
|
}
|
|
2124
|
+
OPTION_MAP.set(el, this.opts);
|
|
2073
2125
|
});
|
|
2074
2126
|
};
|
|
2075
2127
|
function newDraggable(els, opts) {
|
|
@@ -2298,9 +2350,6 @@ function bindHandle(uiik, handle, el, opts) {
|
|
|
2298
2350
|
el.classList.toggle(CLASS_ROTATABLE_ACTIVE, false);
|
|
2299
2351
|
onEnd && onEnd({ deg }, ev);
|
|
2300
2352
|
});
|
|
2301
|
-
}, {
|
|
2302
|
-
threshold: THRESHOLD,
|
|
2303
|
-
lockPage: true,
|
|
2304
2353
|
});
|
|
2305
2354
|
}
|
|
2306
2355
|
function newRotatable(els, opts) {
|
|
@@ -2601,9 +2650,6 @@ _Selectable__detector = new WeakMap(), _Selectable__lastSelected = new WeakMap()
|
|
|
2601
2650
|
if (onEnd)
|
|
2602
2651
|
onEnd({ selection, selectable: con }, ev);
|
|
2603
2652
|
});
|
|
2604
|
-
}, {
|
|
2605
|
-
threshold: THRESHOLD,
|
|
2606
|
-
lockPage: true
|
|
2607
2653
|
});
|
|
2608
2654
|
};
|
|
2609
2655
|
function newSelectable(container, opts) {
|
|
@@ -3000,7 +3046,7 @@ function newSortable(container, opts) {
|
|
|
3000
3046
|
return new Sortable(container, opts);
|
|
3001
3047
|
}
|
|
3002
3048
|
|
|
3003
|
-
var version = "1.4.
|
|
3049
|
+
var version = "1.4.1";
|
|
3004
3050
|
var repository = {
|
|
3005
3051
|
type: "git",
|
|
3006
3052
|
url: "https://github.com/holyhigh2/uiik"
|
|
@@ -3033,4 +3079,4 @@ var index = {
|
|
|
3033
3079
|
newSortable
|
|
3034
3080
|
};
|
|
3035
3081
|
|
|
3036
|
-
export { CollisionDetector, DRAGGING_RULE, Draggable, Droppable, EDGE_THRESHOLD, ONE_ANG, ONE_RAD, Resizable, Rotatable, Selectable, Sortable, Splittable, THRESHOLD, Uii, UiiTransform, VERSION, calcVertex, index as default, getBox, getCenterXy, getCenterXySVG, getMatrixInfo, getPointInContainer, getPointOffset, getRectCenter, getRectInContainer, getStyleSize, getStyleXy, getTranslate, getVertex, isSVGEl, isVisible, lockPage, moveBy, moveTo, newCollisionDetector, newDraggable, newDroppable, newResizable, newRotatable, newSelectable, newSortable, newSplittable, normalizeVector, parseOxy, restoreCursor, rotateTo, saveCursor, setCursor, transformMoveTo, unlockPage, wrapper };
|
|
3082
|
+
export { CollisionDetector, DRAGGING_RULE, Draggable, Droppable, EDGE_THRESHOLD, ONE_ANG, ONE_RAD, Resizable, Rotatable, Selectable, Sortable, Splittable, THRESHOLD, UII_KEY, Uii, UiiTransform, VERSION, calcVertex, index as default, getBox, getCenterXy, getCenterXySVG, getMatrixInfo, getPointInContainer, getPointOffset, getRectCenter, getRectInContainer, getStyleSize, getStyleXy, getTranslate, getVertex, isSVGEl, isVisible, lockPage, moveBy, moveTo, newCollisionDetector, newDraggable, newDroppable, newResizable, newRotatable, newSelectable, newSortable, newSplittable, normalizeVector, parseOxy, restoreCursor, rotateTo, saveCursor, setCursor, transformMoveTo, unlockPage, wrapper };
|
package/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* uiik v1.4.
|
|
2
|
+
* uiik v1.4.1
|
|
3
3
|
* A UI interactions kit includes draggable, splittable, rotatable, selectable, etc.
|
|
4
4
|
* https://github.com/holyhigh2/uiik
|
|
5
5
|
* c) 2021-2025 @holyhigh2 may be freely distributed under the MIT license
|
|
6
6
|
*/
|
|
7
7
|
(function (global, factory) {
|
|
8
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('myfx/collection'), require('myfx/is'), require('myfx/object'), require('myfx'), require('myfx
|
|
9
|
-
typeof define === 'function' && define.amd ? define(['exports', 'myfx/collection', 'myfx/is', 'myfx/object', 'myfx', 'myfx
|
|
10
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.uiik = {}, global.collection, global.is, global.object, global.
|
|
11
|
-
})(this, (function (exports, collection, is, object, myfx, array, string,
|
|
8
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('myfx/collection'), require('myfx/is'), require('myfx/object'), require('myfx/tree'), require('myfx'), require('myfx/array'), require('myfx/string'), require('myfx/utils')) :
|
|
9
|
+
typeof define === 'function' && define.amd ? define(['exports', 'myfx/collection', 'myfx/is', 'myfx/object', 'myfx/tree', 'myfx', 'myfx/array', 'myfx/string', 'myfx/utils'], factory) :
|
|
10
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.uiik = {}, global.collection, global.is, global.object, global.tree, global.myfx, global.array, global.string, global.utils));
|
|
11
|
+
})(this, (function (exports, collection, is, object, tree, myfx, array, string, utils) { 'use strict';
|
|
12
12
|
|
|
13
13
|
/******************************************************************************
|
|
14
14
|
Copyright (c) Microsoft Corporation.
|
|
@@ -494,12 +494,17 @@
|
|
|
494
494
|
}
|
|
495
495
|
|
|
496
496
|
var _Uii_listeners;
|
|
497
|
+
const UII_KEY = '__uii_target_';
|
|
498
|
+
const UII_MAP = {};
|
|
499
|
+
let UiiSn = 0;
|
|
497
500
|
class Uii {
|
|
498
501
|
constructor(ele, opts) {
|
|
502
|
+
var _a;
|
|
499
503
|
this.enabled = true;
|
|
500
504
|
_Uii_listeners.set(this, []);
|
|
501
505
|
this.opts = opts || {};
|
|
502
506
|
this.opts.mouseButton = this.opts.mouseButton || 'left';
|
|
507
|
+
this.opts.eventCapture = (_a = this.opts.eventCapture) !== null && _a !== void 0 ? _a : true;
|
|
503
508
|
if (is.isArrayLike(ele) && !is.isString(ele)) {
|
|
504
509
|
this.ele = collection.map(ele, (el) => {
|
|
505
510
|
let e = is.isString(el) ? document.querySelector(el) : el;
|
|
@@ -523,6 +528,9 @@
|
|
|
523
528
|
? collection.toArray(el)
|
|
524
529
|
: [el];
|
|
525
530
|
}
|
|
531
|
+
let uid = UiiSn++ + '';
|
|
532
|
+
UII_MAP[uid] = this;
|
|
533
|
+
this._bindUiik(uid);
|
|
526
534
|
}
|
|
527
535
|
destroy() {
|
|
528
536
|
collection.each(__classPrivateFieldGet(this, _Uii_listeners, "f"), (ev) => {
|
|
@@ -530,12 +538,13 @@
|
|
|
530
538
|
});
|
|
531
539
|
__classPrivateFieldSet(this, _Uii_listeners, [], "f");
|
|
532
540
|
}
|
|
533
|
-
addPointerDown(el, pointerDown
|
|
541
|
+
addPointerDown(el, pointerDown) {
|
|
534
542
|
const onPointerDown = pointerDown;
|
|
535
|
-
const threshold = opts.threshold || 0;
|
|
536
|
-
const toLockPage = opts.lockPage || false;
|
|
537
543
|
const uiiOptions = this.opts;
|
|
544
|
+
let threshold = 0;
|
|
545
|
+
let toLockPage = true;
|
|
538
546
|
this.registerEvent(el, "mousedown", (e) => {
|
|
547
|
+
var _a;
|
|
539
548
|
if (uiiOptions.mouseButton) {
|
|
540
549
|
switch (uiiOptions.mouseButton) {
|
|
541
550
|
case "left":
|
|
@@ -587,6 +596,12 @@
|
|
|
587
596
|
e.preventDefault();
|
|
588
597
|
return false;
|
|
589
598
|
}
|
|
599
|
+
let target = tree.closest(t, (node) => node && object.get(node, UII_KEY), "parentElement");
|
|
600
|
+
if (target) {
|
|
601
|
+
let uiiInstance = UII_MAP[object.get(target, UII_KEY)];
|
|
602
|
+
threshold = uiiInstance.opts.threshold || 0;
|
|
603
|
+
toLockPage = (_a = uiiInstance.opts.lockPage) !== null && _a !== void 0 ? _a : true;
|
|
604
|
+
}
|
|
590
605
|
let matrixInfo = getMatrixInfo(el, true);
|
|
591
606
|
const pointerMove = (ev) => {
|
|
592
607
|
const offX = (ev.clientX - originPosX) / matrixInfo.scale;
|
|
@@ -637,7 +652,7 @@
|
|
|
637
652
|
window.addEventListener("blur", pointerEnd);
|
|
638
653
|
e.preventDefault();
|
|
639
654
|
return false;
|
|
640
|
-
},
|
|
655
|
+
}, this.opts.eventCapture);
|
|
641
656
|
}
|
|
642
657
|
registerEvent(el, event, hook, useCapture = false) {
|
|
643
658
|
const wrapper = ((ev) => {
|
|
@@ -668,6 +683,11 @@
|
|
|
668
683
|
this.opts[name] = value;
|
|
669
684
|
this.onOptionChanged(this.opts);
|
|
670
685
|
}
|
|
686
|
+
_bindUiik(uid) {
|
|
687
|
+
collection.each(this.ele, el => {
|
|
688
|
+
object.set(el, UII_KEY, uid);
|
|
689
|
+
});
|
|
690
|
+
}
|
|
671
691
|
onOptionChanged(opts) { }
|
|
672
692
|
}
|
|
673
693
|
_Uii_listeners = new WeakMap();
|
|
@@ -734,7 +754,8 @@
|
|
|
734
754
|
}
|
|
735
755
|
else {
|
|
736
756
|
collection.each(handleDoms, (h, i) => {
|
|
737
|
-
|
|
757
|
+
var _a;
|
|
758
|
+
const isRoot = (_a = h.parentElement) === null || _a === void 0 ? void 0 : _a.classList.contains(CLASS_SPLITTABLE);
|
|
738
759
|
let dom1, dom2;
|
|
739
760
|
if (isRoot) {
|
|
740
761
|
dom1 = h.previousElementSibling;
|
|
@@ -770,7 +791,7 @@
|
|
|
770
791
|
const child = container.children[0];
|
|
771
792
|
let lastY = child.offsetTop;
|
|
772
793
|
let lastH = child.offsetHeight;
|
|
773
|
-
collection.each(container.children, c => {
|
|
794
|
+
collection.each(container.children, (c) => {
|
|
774
795
|
if (c.offsetTop > lastH + lastY) {
|
|
775
796
|
dir = 'v';
|
|
776
797
|
return false;
|
|
@@ -963,9 +984,6 @@
|
|
|
963
984
|
}
|
|
964
985
|
onEnd && onEnd({ size1: originSize, size2: originSize1 }, ev);
|
|
965
986
|
});
|
|
966
|
-
}, {
|
|
967
|
-
threshold: THRESHOLD,
|
|
968
|
-
lockPage: true
|
|
969
987
|
});
|
|
970
988
|
};
|
|
971
989
|
function newSplittable(container, opts) {
|
|
@@ -1502,9 +1520,6 @@
|
|
|
1502
1520
|
}
|
|
1503
1521
|
}
|
|
1504
1522
|
});
|
|
1505
|
-
}, {
|
|
1506
|
-
threshold: THRESHOLD,
|
|
1507
|
-
lockPage: true,
|
|
1508
1523
|
});
|
|
1509
1524
|
}
|
|
1510
1525
|
initHandle(panel) {
|
|
@@ -1573,12 +1588,16 @@
|
|
|
1573
1588
|
return new Resizable(els, opts);
|
|
1574
1589
|
}
|
|
1575
1590
|
|
|
1576
|
-
var _Draggable_instances,
|
|
1591
|
+
var _Draggable_instances, _Draggable_container, _Draggable_initHandle, _Draggable_initStyle;
|
|
1577
1592
|
const DRAGGER_GROUPS = {};
|
|
1578
1593
|
const CLASS_DRAGGABLE = "uii-draggable";
|
|
1579
1594
|
const CLASS_DRAGGABLE_HANDLE = "uii-draggable-handle";
|
|
1580
1595
|
const CLASS_DRAGGABLE_ACTIVE = "uii-draggable-active";
|
|
1581
1596
|
const CLASS_DRAGGABLE_GHOST = "uii-draggable-ghost";
|
|
1597
|
+
const HANDLE_MAP = new WeakMap();
|
|
1598
|
+
const OPTION_MAP = new WeakMap();
|
|
1599
|
+
const BINDED_CONTAINER = new WeakSet();
|
|
1600
|
+
const WATCH_MAP = {};
|
|
1582
1601
|
class Draggable extends Uii {
|
|
1583
1602
|
constructor(els, opts) {
|
|
1584
1603
|
super(els, object.assign({
|
|
@@ -1595,17 +1614,9 @@
|
|
|
1595
1614
|
self: false,
|
|
1596
1615
|
}, opts));
|
|
1597
1616
|
_Draggable_instances.add(this);
|
|
1598
|
-
_Draggable_handleMap.set(this, new WeakMap());
|
|
1599
1617
|
_Draggable_container.set(this, null);
|
|
1600
1618
|
if (this.opts.handle) {
|
|
1601
|
-
|
|
1602
|
-
const h = el.querySelector(this.opts.handle);
|
|
1603
|
-
if (!h) {
|
|
1604
|
-
console.error('No handle found "' + this.opts.handle + '"');
|
|
1605
|
-
return false;
|
|
1606
|
-
}
|
|
1607
|
-
__classPrivateFieldGet(this, _Draggable_handleMap, "f").set(el, h);
|
|
1608
|
-
});
|
|
1619
|
+
__classPrivateFieldGet(this, _Draggable_instances, "m", _Draggable_initHandle).call(this, this.ele);
|
|
1609
1620
|
}
|
|
1610
1621
|
this.onOptionChanged(this.opts);
|
|
1611
1622
|
if (this.opts.group) {
|
|
@@ -1634,15 +1645,20 @@
|
|
|
1634
1645
|
else {
|
|
1635
1646
|
con = is.isEmpty(this.ele) ? null : this.ele[0].parentElement;
|
|
1636
1647
|
}
|
|
1637
|
-
|
|
1648
|
+
let bindTarget = con || document.body;
|
|
1649
|
+
if (BINDED_CONTAINER.has(bindTarget))
|
|
1650
|
+
return;
|
|
1651
|
+
WATCH_MAP[this.eleString] = this;
|
|
1652
|
+
this.bindEvent(bindTarget);
|
|
1653
|
+
BINDED_CONTAINER.add(bindTarget);
|
|
1638
1654
|
}
|
|
1639
1655
|
else {
|
|
1640
1656
|
collection.each(this.ele, (el) => {
|
|
1641
|
-
this.bindEvent(el
|
|
1657
|
+
this.bindEvent(el);
|
|
1642
1658
|
});
|
|
1643
1659
|
}
|
|
1644
1660
|
}
|
|
1645
|
-
bindEvent(bindTarget
|
|
1661
|
+
bindEvent(bindTarget) {
|
|
1646
1662
|
const container = __classPrivateFieldGet(this, _Draggable_container, "f");
|
|
1647
1663
|
let draggableList = this.ele;
|
|
1648
1664
|
const eleString = this.eleString;
|
|
@@ -1652,23 +1668,37 @@
|
|
|
1652
1668
|
let t = ev.target;
|
|
1653
1669
|
if (!t)
|
|
1654
1670
|
return true;
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1671
|
+
let opts = {};
|
|
1672
|
+
let findRs = tree.closest(t, (node) => node && object.get(node, UII_KEY), "parentElement");
|
|
1673
|
+
if (!findRs) {
|
|
1674
|
+
let toBreak = true;
|
|
1675
|
+
collection.each(WATCH_MAP, (v, k) => {
|
|
1676
|
+
draggableList = bindTarget.querySelectorAll(eleString);
|
|
1677
|
+
if (!is.isEmpty(draggableList) && (findRs = tree.closest(t, (node) => collection.includes(draggableList, node), "parentNode"))) {
|
|
1678
|
+
initStyle(draggableList);
|
|
1679
|
+
opts = v.opts;
|
|
1680
|
+
__classPrivateFieldGet(v, _Draggable_instances, "m", _Draggable_initHandle).call(v, draggableList);
|
|
1681
|
+
toBreak = false;
|
|
1682
|
+
return false;
|
|
1683
|
+
}
|
|
1684
|
+
});
|
|
1685
|
+
if (toBreak)
|
|
1686
|
+
return true;
|
|
1658
1687
|
}
|
|
1659
|
-
let findRs = tree.closest(t, (node) => collection.includes(draggableList, node), "parentNode");
|
|
1660
|
-
if (!findRs)
|
|
1661
|
-
return true;
|
|
1662
1688
|
const dragDom = findRs;
|
|
1663
|
-
let handle =
|
|
1664
|
-
if (handle && !handle.contains(t)) {
|
|
1689
|
+
let handle = HANDLE_MAP.get(dragDom);
|
|
1690
|
+
if (handle && !myfx.isCustomElement(t) && !handle.contains(t)) {
|
|
1665
1691
|
return true;
|
|
1666
1692
|
}
|
|
1693
|
+
if (is.isEmpty(opts))
|
|
1694
|
+
opts = OPTION_MAP.get(dragDom);
|
|
1695
|
+
if (!opts || is.isEmpty(opts))
|
|
1696
|
+
return true;
|
|
1667
1697
|
if (opts.self && dragDom !== t)
|
|
1668
1698
|
return true;
|
|
1669
1699
|
const onPointerDown = opts.onPointerDown;
|
|
1670
1700
|
if (onPointerDown &&
|
|
1671
|
-
onPointerDown({ draggable: dragDom }, ev) === false)
|
|
1701
|
+
onPointerDown({ draggable: dragDom, handle }, ev) === false)
|
|
1672
1702
|
return true;
|
|
1673
1703
|
const filter = opts.filter;
|
|
1674
1704
|
if (filter) {
|
|
@@ -2009,7 +2039,7 @@
|
|
|
2009
2039
|
let moveToGhost = true;
|
|
2010
2040
|
if (onEnd) {
|
|
2011
2041
|
moveToGhost =
|
|
2012
|
-
onEnd({ draggable: dragDom, x: endX, y: endY, transform }, ev) ===
|
|
2042
|
+
onEnd({ draggable: dragDom, x: endX, y: endY, transform, ghost: ghostNode }, ev) ===
|
|
2013
2043
|
false
|
|
2014
2044
|
? false
|
|
2015
2045
|
: true;
|
|
@@ -2026,13 +2056,19 @@
|
|
|
2026
2056
|
if (ghost) {
|
|
2027
2057
|
(_a = ghostNode.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(ghostNode);
|
|
2028
2058
|
if (moveToGhost !== false) {
|
|
2029
|
-
wrapper(dragDom, opts.useTransform)
|
|
2059
|
+
let transf = wrapper(dragDom, opts.useTransform);
|
|
2060
|
+
if (direction === "v") {
|
|
2061
|
+
transf.moveToY(endY);
|
|
2062
|
+
}
|
|
2063
|
+
else if (direction === "h") {
|
|
2064
|
+
transf.moveToX(endX);
|
|
2065
|
+
}
|
|
2066
|
+
else {
|
|
2067
|
+
transf.moveTo(endX, endY);
|
|
2068
|
+
}
|
|
2030
2069
|
}
|
|
2031
2070
|
}
|
|
2032
2071
|
});
|
|
2033
|
-
}, {
|
|
2034
|
-
threshold: this.opts.threshold || 0,
|
|
2035
|
-
lockPage: true,
|
|
2036
2072
|
});
|
|
2037
2073
|
}
|
|
2038
2074
|
onOptionChanged(opts) {
|
|
@@ -2053,12 +2089,27 @@
|
|
|
2053
2089
|
}
|
|
2054
2090
|
}
|
|
2055
2091
|
}
|
|
2056
|
-
|
|
2092
|
+
_Draggable_container = new WeakMap(), _Draggable_instances = new WeakSet(), _Draggable_initHandle = function _Draggable_initHandle(ele) {
|
|
2093
|
+
collection.each(ele, (el) => {
|
|
2094
|
+
let h;
|
|
2095
|
+
if (is.isString(this.opts.handle)) {
|
|
2096
|
+
h = el.querySelector(this.opts.handle);
|
|
2097
|
+
if (!h) {
|
|
2098
|
+
console.error('No handle found "' + this.opts.handle + '"');
|
|
2099
|
+
return false;
|
|
2100
|
+
}
|
|
2101
|
+
}
|
|
2102
|
+
else if (is.isElement(this.opts.handle)) {
|
|
2103
|
+
h = this.opts.handle;
|
|
2104
|
+
}
|
|
2105
|
+
HANDLE_MAP.set(el, h);
|
|
2106
|
+
});
|
|
2107
|
+
}, _Draggable_initStyle = function _Draggable_initStyle(draggableList) {
|
|
2057
2108
|
collection.each(draggableList, (el) => {
|
|
2058
2109
|
if (is.isDefined(this.opts.type))
|
|
2059
2110
|
el.dataset.dropType = this.opts.type;
|
|
2060
2111
|
el.classList.toggle(CLASS_DRAGGABLE, true);
|
|
2061
|
-
const ee =
|
|
2112
|
+
const ee = HANDLE_MAP.get(el) || el;
|
|
2062
2113
|
ee.classList.toggle(CLASS_DRAGGABLE_HANDLE, true);
|
|
2063
2114
|
if (!is.isUndefined(this.opts.cursor)) {
|
|
2064
2115
|
el.style.cursor = this.opts.cursor.default || "move";
|
|
@@ -2067,6 +2118,7 @@
|
|
|
2067
2118
|
el.dataset.cursorActive = this.opts.cursor.active || "move";
|
|
2068
2119
|
}
|
|
2069
2120
|
}
|
|
2121
|
+
OPTION_MAP.set(el, this.opts);
|
|
2070
2122
|
});
|
|
2071
2123
|
};
|
|
2072
2124
|
function newDraggable(els, opts) {
|
|
@@ -2295,9 +2347,6 @@
|
|
|
2295
2347
|
el.classList.toggle(CLASS_ROTATABLE_ACTIVE, false);
|
|
2296
2348
|
onEnd && onEnd({ deg }, ev);
|
|
2297
2349
|
});
|
|
2298
|
-
}, {
|
|
2299
|
-
threshold: THRESHOLD,
|
|
2300
|
-
lockPage: true,
|
|
2301
2350
|
});
|
|
2302
2351
|
}
|
|
2303
2352
|
function newRotatable(els, opts) {
|
|
@@ -2598,9 +2647,6 @@
|
|
|
2598
2647
|
if (onEnd)
|
|
2599
2648
|
onEnd({ selection, selectable: con }, ev);
|
|
2600
2649
|
});
|
|
2601
|
-
}, {
|
|
2602
|
-
threshold: THRESHOLD,
|
|
2603
|
-
lockPage: true
|
|
2604
2650
|
});
|
|
2605
2651
|
};
|
|
2606
2652
|
function newSelectable(container, opts) {
|
|
@@ -2997,7 +3043,7 @@
|
|
|
2997
3043
|
return new Sortable(container, opts);
|
|
2998
3044
|
}
|
|
2999
3045
|
|
|
3000
|
-
var version = "1.4.
|
|
3046
|
+
var version = "1.4.1";
|
|
3001
3047
|
var repository = {
|
|
3002
3048
|
type: "git",
|
|
3003
3049
|
url: "https://github.com/holyhigh2/uiik"
|
|
@@ -3043,6 +3089,7 @@
|
|
|
3043
3089
|
exports.Sortable = Sortable;
|
|
3044
3090
|
exports.Splittable = Splittable;
|
|
3045
3091
|
exports.THRESHOLD = THRESHOLD;
|
|
3092
|
+
exports.UII_KEY = UII_KEY;
|
|
3046
3093
|
exports.Uii = Uii;
|
|
3047
3094
|
exports.UiiTransform = UiiTransform;
|
|
3048
3095
|
exports.VERSION = VERSION;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uiik",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "A UI interactions kit includes draggable, splittable, rotatable, selectable, etc.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.esm.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"doc": "npx typedoc"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"myfx": ">=1.
|
|
35
|
+
"myfx": ">=1.14.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@babel/core": "^7.12.3",
|
package/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { UiiTransform } from "./transform";
|
|
2
|
+
export declare const UII_KEY = "__uii_target_";
|
|
2
3
|
export declare abstract class Uii {
|
|
3
4
|
#private;
|
|
4
5
|
protected ele: Array<HTMLElement>;
|
|
@@ -7,10 +8,7 @@ export declare abstract class Uii {
|
|
|
7
8
|
protected eleString: string;
|
|
8
9
|
constructor(ele: string | Element | NodeList | HTMLCollection | Array<string | Element>, opts?: Record<string, any>);
|
|
9
10
|
destroy(): void;
|
|
10
|
-
addPointerDown(el: Element, pointerDown: (args: Record<string, any>) => void | boolean
|
|
11
|
-
threshold?: number;
|
|
12
|
-
lockPage?: boolean;
|
|
13
|
-
}): void;
|
|
11
|
+
addPointerDown(el: Element, pointerDown: (args: Record<string, any>) => void | boolean): void;
|
|
14
12
|
registerEvent(el: Element, event: string, hook: Function, useCapture?: boolean): void;
|
|
15
13
|
disable(): void;
|
|
16
14
|
enable(): void;
|
|
@@ -18,6 +16,7 @@ export declare abstract class Uii {
|
|
|
18
16
|
getOption(name: string): any;
|
|
19
17
|
setOptions(options?: Record<string, any>): void;
|
|
20
18
|
setOption(name: string, value: any): void;
|
|
19
|
+
protected _bindUiik(uid: string): void;
|
|
21
20
|
protected onOptionChanged(opts?: Record<string, any>): void;
|
|
22
21
|
}
|
|
23
22
|
export type ResizableOptions = {
|
|
@@ -29,6 +28,7 @@ export type ResizableOptions = {
|
|
|
29
28
|
ghostClass?: string;
|
|
30
29
|
ox?: number | string;
|
|
31
30
|
oy?: number | string;
|
|
31
|
+
eventCapture?: boolean;
|
|
32
32
|
onPointerDown?: (event: MouseEvent) => boolean;
|
|
33
33
|
onStart?: (data: {
|
|
34
34
|
w: number;
|
|
@@ -71,6 +71,7 @@ export type SplittableOptions = {
|
|
|
71
71
|
ghostClass?: string;
|
|
72
72
|
ghostTo?: string | HTMLElement;
|
|
73
73
|
handle?: string | HTMLElement | HTMLElement[];
|
|
74
|
+
eventCapture?: boolean;
|
|
74
75
|
onStart?: (data: {
|
|
75
76
|
size1: number;
|
|
76
77
|
size2: number;
|
|
@@ -99,7 +100,7 @@ export type DraggableOptions = {
|
|
|
99
100
|
containment?: boolean | HTMLElement | string;
|
|
100
101
|
watch?: boolean | string;
|
|
101
102
|
threshold?: number;
|
|
102
|
-
handle?: string;
|
|
103
|
+
handle?: string | HTMLElement | SVGGraphicsElement;
|
|
103
104
|
filter?: string;
|
|
104
105
|
droppable?: (() => NodeList | HTMLCollection | HTMLElement[]) | string | HTMLElement | HTMLElement[];
|
|
105
106
|
ghost?: ((panel: HTMLElement | SVGGraphicsElement) => HTMLElement | SVGGraphicsElement) | boolean;
|
|
@@ -122,8 +123,10 @@ export type DraggableOptions = {
|
|
|
122
123
|
};
|
|
123
124
|
grid?: number | number[];
|
|
124
125
|
type?: string;
|
|
126
|
+
eventCapture?: boolean;
|
|
125
127
|
onPointerDown?: (data: {
|
|
126
128
|
draggable: HTMLElement | SVGGraphicsElement;
|
|
129
|
+
handle: HTMLElement | SVGGraphicsElement;
|
|
127
130
|
}, event: MouseEvent) => boolean;
|
|
128
131
|
onStart?: (data: {
|
|
129
132
|
draggable: HTMLElement | SVGGraphicsElement;
|
|
@@ -144,6 +147,7 @@ export type DraggableOptions = {
|
|
|
144
147
|
x: number;
|
|
145
148
|
y: number;
|
|
146
149
|
transform: UiiTransform;
|
|
150
|
+
ghost: HTMLElement | SVGGraphicsElement;
|
|
147
151
|
}, event: MouseEvent) => boolean | void;
|
|
148
152
|
onClone?: (data: {
|
|
149
153
|
clone: HTMLElement | SVGGraphicsElement;
|
|
@@ -162,6 +166,7 @@ export type DroppableOptions = {
|
|
|
162
166
|
activeClass?: string;
|
|
163
167
|
hoverClass?: string;
|
|
164
168
|
accepts?: ((ele: Array<HTMLElement>, draggable: HTMLElement) => boolean) | string;
|
|
169
|
+
eventCapture?: boolean;
|
|
165
170
|
onActive?: (data: {
|
|
166
171
|
draggable: HTMLElement;
|
|
167
172
|
droppables: Array<HTMLElement>;
|
|
@@ -195,6 +200,7 @@ export type RotatableOptions = {
|
|
|
195
200
|
ox?: number | string;
|
|
196
201
|
oy?: number | string;
|
|
197
202
|
handle?: ((target: HTMLElement | SVGGraphicsElement) => NodeList | HTMLCollection | HTMLElement[] | HTMLElement | SVGGraphicsElement) | string | NodeList | HTMLCollection | HTMLElement[] | HTMLElement | SVGGraphicsElement;
|
|
203
|
+
eventCapture?: boolean;
|
|
198
204
|
onPointerDown?: (event: MouseEvent) => boolean;
|
|
199
205
|
onStart?: (data: {
|
|
200
206
|
deg: number;
|
|
@@ -222,6 +228,7 @@ export type SelectableOptions = {
|
|
|
222
228
|
scroll?: boolean;
|
|
223
229
|
scrollSpeed?: number;
|
|
224
230
|
filter?: ((el: HTMLElement) => boolean) | string;
|
|
231
|
+
eventCapture?: boolean;
|
|
225
232
|
onPointerDown?: (event: MouseEvent) => boolean;
|
|
226
233
|
onStart?: (data: {
|
|
227
234
|
selection: Array<HTMLElement>;
|
|
@@ -251,6 +258,7 @@ export type SortableOptions = {
|
|
|
251
258
|
};
|
|
252
259
|
spill?: "remove" | "revert";
|
|
253
260
|
sort?: boolean;
|
|
261
|
+
eventCapture?: boolean;
|
|
254
262
|
onActive?: (data: {
|
|
255
263
|
item: HTMLElement;
|
|
256
264
|
from: HTMLElement;
|