@lvce-editor/virtual-dom 2.10.0 → 2.12.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.js +23 -2
- package/package.json +1 -1
- package/src/parts/CreateEventListenerFunction/CreateEventListenerFunction.ts +16 -1
- package/src/parts/DomEventType/DomEventType.ts +2 -0
- package/src/parts/RegisterEventListeners/RegisterEventListeners.ts +1 -1
- package/src/parts/RenderInternal/RenderInternal.ts +2 -1
- package/src/parts/VirtualDomElement/VirtualDomElement.ts +3 -2
package/dist/index.js
CHANGED
|
@@ -614,6 +614,9 @@ const applyDragInfoMaybe = event => {
|
|
|
614
614
|
}
|
|
615
615
|
};
|
|
616
616
|
|
|
617
|
+
const PointerMove = 'pointermove';
|
|
618
|
+
const PointerUp = 'pointerup';
|
|
619
|
+
|
|
617
620
|
let ignore = false;
|
|
618
621
|
const startIgnore = () => {
|
|
619
622
|
ignore = true;
|
|
@@ -717,7 +720,24 @@ const preventEventsMaybe = (info, event) => {
|
|
|
717
720
|
}
|
|
718
721
|
};
|
|
719
722
|
|
|
720
|
-
const
|
|
723
|
+
const applyPointerTrackMaybe = (info, map, event) => {
|
|
724
|
+
const {
|
|
725
|
+
trackPointerEvents
|
|
726
|
+
} = info;
|
|
727
|
+
if (!trackPointerEvents) {
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
730
|
+
const {
|
|
731
|
+
target,
|
|
732
|
+
pointerId
|
|
733
|
+
} = event;
|
|
734
|
+
target.setPointerCapture(pointerId);
|
|
735
|
+
const [pointerMoveKey, pointerUpKey] = trackPointerEvents;
|
|
736
|
+
target.addEventListener(PointerMove, map[pointerMoveKey]);
|
|
737
|
+
// TODO use pointerlost event instead
|
|
738
|
+
target.addEventListener(PointerUp, map[pointerUpKey]);
|
|
739
|
+
};
|
|
740
|
+
const createFn = (info, map) => {
|
|
721
741
|
const fn = event => {
|
|
722
742
|
if (enabled()) {
|
|
723
743
|
return;
|
|
@@ -726,6 +746,7 @@ const createFn = info => {
|
|
|
726
746
|
const args = getEventListenerArgs(info.params, event);
|
|
727
747
|
preventEventsMaybe(info, event);
|
|
728
748
|
applyDragInfoMaybe(event);
|
|
749
|
+
applyPointerTrackMaybe(info, map, event);
|
|
729
750
|
if (args.length === 0) {
|
|
730
751
|
return;
|
|
731
752
|
}
|
|
@@ -744,7 +765,7 @@ const listeners = Object.create(null);
|
|
|
744
765
|
const registerEventListeners = (id, eventListeners) => {
|
|
745
766
|
const map = Object.create(null);
|
|
746
767
|
for (const info of eventListeners) {
|
|
747
|
-
const fn = createFn(info);
|
|
768
|
+
const fn = createFn(info, map);
|
|
748
769
|
map[info.name] = fn;
|
|
749
770
|
}
|
|
750
771
|
listeners[id] = map;
|
package/package.json
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
import { applyDragInfoMaybe } from '../ApplyDragInfoMaybe/ApplyDragInfoMaybe.ts'
|
|
2
2
|
import * as ComponentUid from '../ComponentUid/ComponentUid.ts'
|
|
3
|
+
import * as DomEventType from '../DomEventType/DomEventType.ts'
|
|
3
4
|
import * as EventState from '../EventState/EventState.ts'
|
|
4
5
|
import * as GetEventListenerArgs from '../GetEventListenerArgs/GetEventListenerArgs.ts'
|
|
5
6
|
import * as IpcState from '../IpcState/IpcState.ts'
|
|
6
7
|
import * as NameAnonymousFunction from '../NameAnonymousFunction/NameAnonymousFunction.ts'
|
|
7
8
|
import { preventEventsMaybe } from '../PreventEventsMaybe/PreventEventsMaybe.ts'
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
const applyPointerTrackMaybe = (info, map, event): void => {
|
|
11
|
+
const { trackPointerEvents } = info
|
|
12
|
+
if (!trackPointerEvents) {
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
const { target, pointerId } = event
|
|
16
|
+
target.setPointerCapture(pointerId)
|
|
17
|
+
const [pointerMoveKey, pointerUpKey] = trackPointerEvents
|
|
18
|
+
target.addEventListener(DomEventType.PointerMove, map[pointerMoveKey])
|
|
19
|
+
// TODO use pointerlost event instead
|
|
20
|
+
target.addEventListener(DomEventType.PointerUp, map[pointerUpKey])
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const createFn = (info, map): any => {
|
|
10
24
|
const fn = (event): void => {
|
|
11
25
|
if (EventState.enabled()) {
|
|
12
26
|
return
|
|
@@ -15,6 +29,7 @@ export const createFn = (info): any => {
|
|
|
15
29
|
const args = GetEventListenerArgs.getEventListenerArgs(info.params, event)
|
|
16
30
|
preventEventsMaybe(info, event)
|
|
17
31
|
applyDragInfoMaybe(event)
|
|
32
|
+
applyPointerTrackMaybe(info, map, event)
|
|
18
33
|
if (args.length === 0) {
|
|
19
34
|
return
|
|
20
35
|
}
|
|
@@ -5,7 +5,7 @@ const listeners = Object.create(null)
|
|
|
5
5
|
export const registerEventListeners = (id, eventListeners): void => {
|
|
6
6
|
const map = Object.create(null)
|
|
7
7
|
for (const info of eventListeners) {
|
|
8
|
-
const fn = CreateEventListenerFunction.createFn(info)
|
|
8
|
+
const fn = CreateEventListenerFunction.createFn(info, map)
|
|
9
9
|
map[info.name] = fn
|
|
10
10
|
}
|
|
11
11
|
listeners[id] = map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { VirtualDomNode } from '../VirtualDomNode/VirtualDomNode.ts'
|
|
1
2
|
import * as VirtualDomElement from '../VirtualDomElement/VirtualDomElement.ts'
|
|
2
3
|
|
|
3
4
|
export const renderInternal = (
|
|
4
5
|
$Parent: HTMLElement,
|
|
5
|
-
elements: readonly
|
|
6
|
+
elements: readonly VirtualDomNode[],
|
|
6
7
|
eventMap: any,
|
|
7
8
|
newEventMap?: any,
|
|
8
9
|
): void => {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { VirtualDomNode } from '../VirtualDomNode/VirtualDomNode.ts'
|
|
1
2
|
import * as ElementTagMap from '../ElementTagMap/ElementTagMap.ts'
|
|
2
3
|
import * as VirtualDomElementProps from '../VirtualDomElementProps/VirtualDomElementProps.ts'
|
|
3
4
|
import * as VirtualDomElements from '../VirtualDomElements/VirtualDomElements.ts'
|
|
@@ -7,7 +8,7 @@ const renderDomTextNode = (element: any): Text => {
|
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
const renderDomElement = (
|
|
10
|
-
element:
|
|
11
|
+
element: VirtualDomNode,
|
|
11
12
|
eventMap: any,
|
|
12
13
|
newEventMap: any,
|
|
13
14
|
): HTMLElement => {
|
|
@@ -18,7 +19,7 @@ const renderDomElement = (
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export const render = (
|
|
21
|
-
element:
|
|
22
|
+
element: VirtualDomNode,
|
|
22
23
|
eventMap: any,
|
|
23
24
|
newEventMap?: any,
|
|
24
25
|
): Node => {
|