@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 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 createFn = info => {
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/virtual-dom",
3
- "version": "2.10.0",
3
+ "version": "2.12.0",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -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
- export const createFn = (info): any => {
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
  }
@@ -0,0 +1,2 @@
1
+ export const PointerMove = 'pointermove'
2
+ export const PointerUp = 'pointerup'
@@ -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 any[],
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: any,
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: any,
22
+ element: VirtualDomNode,
22
23
  eventMap: any,
23
24
  newEventMap?: any,
24
25
  ): Node => {