@lvce-editor/renderer-process 30.44.3 → 30.44.4

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.
@@ -8647,7 +8647,7 @@ const ViewletTerminals = {
8647
8647
  setTabsDom
8648
8648
  };
8649
8649
 
8650
- const isInsideTitleBarMenu = $Element => {
8650
+ const isInsideTitleBarMenu$1 = $Element => {
8651
8651
  return $Element.classList.contains('MenuItem') || $Element.classList.contains('Menu') || $Element.classList.contains('TitleBarTopLevelEntry') || $Element.classList.contains('TitleBarMenuBar');
8652
8652
  };
8653
8653
  const handleFocusOut = event => {
@@ -8655,16 +8655,16 @@ const handleFocusOut = event => {
8655
8655
  relatedTarget,
8656
8656
  target
8657
8657
  } = event;
8658
- if (relatedTarget && isInsideTitleBarMenu(relatedTarget)) {
8658
+ if (relatedTarget && isInsideTitleBarMenu$1(relatedTarget)) {
8659
8659
  return;
8660
8660
  }
8661
8661
  const uid = fromEvent(event);
8662
- if (!relatedTarget && target && isInsideTitleBarMenu(target)) {
8662
+ if (!relatedTarget && target && isInsideTitleBarMenu$1(target)) {
8663
8663
  queueMicrotask(() => {
8664
8664
  const {
8665
8665
  activeElement
8666
8666
  } = document;
8667
- if (!activeElement || !isInsideTitleBarMenu(activeElement)) {
8667
+ if (!activeElement || !isInsideTitleBarMenu$1(activeElement)) {
8668
8668
  closeMenu$1(uid);
8669
8669
  }
8670
8670
  });
@@ -8752,7 +8752,35 @@ const ViewletTitleBarMenuBarEvents = {
8752
8752
  };
8753
8753
 
8754
8754
  const activeId = 'TitleBarEntryActive';
8755
- const dispose$4 = state => {};
8755
+ const removeDocumentClickListener = state => {
8756
+ const {
8757
+ documentClickListener
8758
+ } = state;
8759
+ if (!documentClickListener) {
8760
+ return;
8761
+ }
8762
+ document.removeEventListener(Click, documentClickListener);
8763
+ state.documentClickListener = undefined;
8764
+ };
8765
+ const isInsideTitleBarMenu = target => {
8766
+ return target instanceof Element && (target.closest('.Menu') || target.closest('.TitleBarMenuBar'));
8767
+ };
8768
+ const addDocumentClickListener = (state, uid) => {
8769
+ if (state.documentClickListener) {
8770
+ return;
8771
+ }
8772
+ const documentClickListener = event => {
8773
+ if (isInsideTitleBarMenu(event.target)) {
8774
+ return;
8775
+ }
8776
+ closeMenu$1(uid);
8777
+ };
8778
+ state.documentClickListener = documentClickListener;
8779
+ document.addEventListener(Click, documentClickListener);
8780
+ };
8781
+ const dispose$4 = state => {
8782
+ removeDocumentClickListener(state);
8783
+ };
8756
8784
  const focus$2 = state => {
8757
8785
  const {
8758
8786
  $TitleBarMenuBar
@@ -8976,6 +9004,7 @@ const setMenus = (state, changes, uid) => {
8976
9004
  const {
8977
9005
  $$Menus
8978
9006
  } = state;
9007
+ const wasMenuOpen = $$Menus.length > 0;
8979
9008
  for (const change of changes) {
8980
9009
  const type = change[0];
8981
9010
  const handler = menuHandlers[type];
@@ -8983,6 +9012,12 @@ const setMenus = (state, changes, uid) => {
8983
9012
  handler($$Menus, change, uid);
8984
9013
  }
8985
9014
  }
9015
+ const isMenuOpen = $$Menus.length > 0;
9016
+ if (!wasMenuOpen && isMenuOpen) {
9017
+ addDocumentClickListener(state, uid);
9018
+ } else if (wasMenuOpen && !isMenuOpen) {
9019
+ removeDocumentClickListener(state);
9020
+ }
8986
9021
  };
8987
9022
 
8988
9023
  const ViewletTitleBarMenuBar = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/renderer-process",
3
- "version": "30.44.3",
3
+ "version": "30.44.4",
4
4
  "keywords": [
5
5
  "lvce-editor",
6
6
  "renderer-process"