@lvce-editor/virtual-dom 1.40.0 → 1.42.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
@@ -409,6 +409,8 @@ const setProp = ($Element, key, value, eventMap, newEventMap) => {
409
409
  case 'onInput':
410
410
  case 'onKeyDown':
411
411
  case 'onMouseDown':
412
+ case 'onMouseOver':
413
+ case 'onMouseOut':
412
414
  case 'onPointerDown':
413
415
  case 'onPointerOut':
414
416
  case 'onPointerOver':
@@ -641,8 +643,15 @@ const getEventListenerArgs = (params, event) => {
641
643
  return serialized;
642
644
  };
643
645
 
646
+ const isInputElement = element => {
647
+ return element instanceof HTMLInputElement;
648
+ };
644
649
  const preventEventsMaybe = (info, event) => {
645
- if (info.preventDefault) {
650
+ if (info.preventDefault === 2) {
651
+ if (!isInputElement(event.target)) {
652
+ event.preventDefault();
653
+ }
654
+ } else if (info.preventDefault) {
646
655
  event.preventDefault();
647
656
  }
648
657
  if (info.stopPropagation) {
@@ -686,6 +695,20 @@ const getEventListenerMap = id => {
686
695
  return map;
687
696
  };
688
697
 
698
+ const getActiveElementInside = $Viewlet => {
699
+ if (!$Viewlet) {
700
+ return undefined;
701
+ }
702
+ const $ActiveElement = document.activeElement;
703
+ if (!$ActiveElement) {
704
+ return undefined;
705
+ }
706
+ if (!$Viewlet.contains($ActiveElement)) {
707
+ return undefined;
708
+ }
709
+ return $ActiveElement;
710
+ };
711
+
689
712
  const queryInputs = $Viewlet => {
690
713
  return [...$Viewlet.querySelectorAll('input, textarea')];
691
714
  };
@@ -716,9 +739,7 @@ const rememberFocus = ($Viewlet, dom, eventMap, uid = 0) => {
716
739
  const oldTop = $Viewlet.style.top;
717
740
  const oldWidth = $Viewlet.style.width;
718
741
  const oldHeight = $Viewlet.style.height;
719
- const {
720
- activeElement
721
- } = document;
742
+ const activeElement = getActiveElementInside($Viewlet);
722
743
  const isTreeFocused = activeElement?.getAttribute('role') === 'tree';
723
744
  const isRootTree = $Viewlet.getAttribute('role') === 'tree' && activeElement === $Viewlet;
724
745
  const focused = activeElement?.getAttribute('name');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/virtual-dom",
3
- "version": "1.40.0",
3
+ "version": "1.42.0",
4
4
  "main": "dist/index.js",
5
5
  "type": "module",
6
6
  "keywords": [],
@@ -0,0 +1,15 @@
1
+ export const getActiveElementInside = (
2
+ $Viewlet: HTMLElement | undefined,
3
+ ): HTMLElement | undefined => {
4
+ if (!$Viewlet) {
5
+ return undefined
6
+ }
7
+ const $ActiveElement = document.activeElement as HTMLElement
8
+ if (!$ActiveElement) {
9
+ return undefined
10
+ }
11
+ if (!$Viewlet.contains($ActiveElement)) {
12
+ return undefined
13
+ }
14
+ return $ActiveElement
15
+ }
@@ -1,5 +1,13 @@
1
+ const isInputElement = (element: HTMLElement): boolean => {
2
+ return element instanceof HTMLInputElement
3
+ }
4
+
1
5
  export const preventEventsMaybe = (info: any, event: any): void => {
2
- if (info.preventDefault) {
6
+ if (info.preventDefault === 2) {
7
+ if (!isInputElement(event.target)) {
8
+ event.preventDefault()
9
+ }
10
+ } else if (info.preventDefault) {
3
11
  event.preventDefault()
4
12
  }
5
13
  if (info.stopPropagation) {
@@ -1,5 +1,6 @@
1
1
  import * as ComponentUid from '../ComponentUid/ComponentUid.ts'
2
2
  import * as EventState from '../EventState/EventState.ts'
3
+ import { getActiveElementInside } from '../GetActiveElementInside/GetActiveElementInside.ts'
3
4
  import * as QueryInputs from '../QueryInputs/QueryInputs.ts'
4
5
  import * as RegisterEventListeners from '../RegisterEventListeners/RegisterEventListeners.ts'
5
6
  import * as VirtualDom from '../VirtualDom/VirtualDom.ts'
@@ -15,7 +16,7 @@ export const rememberFocus = (
15
16
  const oldTop = $Viewlet.style.top
16
17
  const oldWidth = $Viewlet.style.width
17
18
  const oldHeight = $Viewlet.style.height
18
- const { activeElement } = document
19
+ const activeElement = getActiveElementInside($Viewlet)
19
20
  const isTreeFocused = activeElement?.getAttribute('role') === 'tree'
20
21
  const isRootTree =
21
22
  $Viewlet.getAttribute('role') === 'tree' && activeElement === $Viewlet
@@ -78,6 +78,8 @@ export const setProp = (
78
78
  case 'onInput':
79
79
  case 'onKeyDown':
80
80
  case 'onMouseDown':
81
+ case 'onMouseOver':
82
+ case 'onMouseOut':
81
83
  case 'onPointerDown':
82
84
  case 'onPointerOut':
83
85
  case 'onPointerOver':