aleman 1.16.2 → 1.16.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.
- package/ChangeLog +17 -1
- package/menu/addons/click/click.js +4 -4
- package/menu/addons/item-click/item-click.js +4 -1
- package/menu/addons/j/j.js +1 -0
- package/menu/rules/build-menu/fixture/build-menu-fix.js +2 -2
- package/menu/rules/build-menu/fixture/icon-fix.js +2 -2
- package/menu/rules/build-menu/fixture/nested-fix.js +2 -2
- package/menu/rules/build-menu/index.js +2 -1
- package/nemo/README.md +28 -0
- package/nemo/addons/click/click.js +37 -0
- package/nemo/addons/click/fixture/click-fix.js +8 -0
- package/nemo/addons/click/fixture/click.js +8 -0
- package/nemo/addons/click/fixture/not-fn.js +8 -0
- package/nemo/addons/context-menu.js +50 -0
- package/nemo/addons/down/down.js +44 -0
- package/nemo/addons/down/fixture/down-fix.js +16 -0
- package/nemo/addons/down/fixture/down.js +16 -0
- package/nemo/addons/down/fixture/infinite-scroll-fix.js +16 -0
- package/nemo/addons/down/fixture/infinite-scroll.js +16 -0
- package/nemo/addons/enter/enter.js +30 -0
- package/nemo/addons/enter/fixture/enter-fix.js +8 -0
- package/nemo/addons/enter/fixture/enter.js +8 -0
- package/nemo/addons/escape/escape.js +11 -0
- package/nemo/addons/escape/fixture/escape-fix.js +8 -0
- package/nemo/addons/escape/fixture/escape.js +8 -0
- package/nemo/addons/gg/fixture/gg-fix.js +8 -0
- package/nemo/addons/gg/fixture/gg.js +8 -0
- package/nemo/addons/gg/fixture/hide.js +8 -0
- package/nemo/addons/gg/fixture/submenu-fix.js +17 -0
- package/nemo/addons/gg/fixture/submenu.js +18 -0
- package/nemo/addons/gg/gg.js +26 -0
- package/nemo/addons/index.js +25 -0
- package/nemo/addons/item-click/fixture/item-click-fix.js +8 -0
- package/nemo/addons/item-click/fixture/item-click.js +8 -0
- package/nemo/addons/item-click/fixture/no-click.js +8 -0
- package/nemo/addons/item-click/fixture/not-fn.js +8 -0
- package/nemo/addons/item-click/fixture/run-fix.js +8 -0
- package/nemo/addons/item-click/fixture/run.js +8 -0
- package/nemo/addons/item-click/item-click.js +43 -0
- package/nemo/addons/j/fixture/infinite-scroll-fix.js +8 -0
- package/nemo/addons/j/fixture/infinite-scroll.js +8 -0
- package/nemo/addons/j/fixture/j-fix.js +8 -0
- package/nemo/addons/j/fixture/j.js +8 -0
- package/nemo/addons/j/fixture/m.js +8 -0
- package/nemo/addons/j/fixture/submenu-fix.js +8 -0
- package/nemo/addons/j/fixture/submenu-infinite-scroll-fix.js +16 -0
- package/nemo/addons/j/fixture/submenu-infinite-scroll.js +16 -0
- package/nemo/addons/j/fixture/submenu.js +8 -0
- package/nemo/addons/j/j.js +10 -0
- package/nemo/addons/k/fixture/infinite-scroll-fix.js +8 -0
- package/nemo/addons/k/fixture/infinite-scroll.js +8 -0
- package/nemo/addons/k/fixture/k-fix.js +8 -0
- package/nemo/addons/k/fixture/k.js +8 -0
- package/nemo/addons/k/fixture/m.js +8 -0
- package/nemo/addons/k/fixture/submenu-fix.js +8 -0
- package/nemo/addons/k/fixture/submenu.js +8 -0
- package/nemo/addons/k/k.js +34 -0
- package/nemo/addons/left.js +11 -0
- package/nemo/addons/menu/get-menu-path.js +12 -0
- package/nemo/addons/mouse-leave/fixture/mouse-enter-fix.js +8 -0
- package/nemo/addons/mouse-leave/fixture/mouse-enter.js +8 -0
- package/nemo/addons/mouse-leave/fixture/unselect-all.js +8 -0
- package/nemo/addons/mouse-leave/index.js +10 -0
- package/nemo/addons/right.js +23 -0
- package/nemo/addons/run/index.js +17 -0
- package/nemo/addons/set-position/calculate.js +28 -0
- package/nemo/addons/set-position/set-position.js +35 -0
- package/nemo/addons/shift-g/fixture/hide.js +8 -0
- package/nemo/addons/shift-g/fixture/shift-g-fix.js +8 -0
- package/nemo/addons/shift-g/fixture/shift-g.js +8 -0
- package/nemo/addons/shift-g/shift-g.js +41 -0
- package/nemo/addons/submenu/index.js +12 -0
- package/nemo/addons/up.js +42 -0
- package/nemo/hydrate-menu.js +47 -0
- package/nemo/importmap.js +8 -0
- package/nemo/menu.css +65 -0
- package/nemo/nemo.js +117 -0
- package/nemo/rules/build-menu/fixture/build-menu-fix.js +16 -0
- package/nemo/rules/build-menu/fixture/build-menu.js +3 -0
- package/nemo/rules/build-menu/index.js +101 -0
- package/nemo/rules/hide-submenu/fixture/hide-submenu-fix.js +17 -0
- package/nemo/rules/hide-submenu/fixture/hide-submenu.js +18 -0
- package/nemo/rules/hide-submenu/fixture/no-menu.js +16 -0
- package/nemo/rules/hide-submenu/fixture/show-submenu.js +18 -0
- package/nemo/rules/hide-submenu/index.js +35 -0
- package/nemo/rules/index.js +21 -0
- package/nemo/rules/menu/fixture/hide-menu-fix.js +3 -0
- package/nemo/rules/menu/fixture/hide-menu.js +3 -0
- package/nemo/rules/menu/fixture/no-menu.js +3 -0
- package/nemo/rules/menu/fixture/show-menu-fix.js +1 -0
- package/nemo/rules/menu/fixture/show-menu.js +1 -0
- package/nemo/rules/menu/index.js +40 -0
- package/nemo/rules/select/fixture/no-current.js +8 -0
- package/nemo/rules/select/fixture/no-data-name.js +4 -0
- package/nemo/rules/select/fixture/no-index.js +8 -0
- package/nemo/rules/select/fixture/no-next.js +5 -0
- package/nemo/rules/select/fixture/no-parent.js +2 -0
- package/nemo/rules/select/fixture/select-fix.js +8 -0
- package/nemo/rules/select/fixture/select.js +8 -0
- package/nemo/rules/select/fixture/submenu-fix.js +17 -0
- package/nemo/rules/select/fixture/submenu.js +18 -0
- package/nemo/rules/select/fixture/wrong-data-name.js +4 -0
- package/nemo/rules/select/index.js +94 -0
- package/nemo/rules/set-position/fixture/no-style-fix.js +2 -0
- package/nemo/rules/set-position/fixture/no-style.js +2 -0
- package/nemo/rules/set-position/fixture/not-menu.js +2 -0
- package/nemo/rules/set-position/fixture/same-position.js +2 -0
- package/nemo/rules/set-position/fixture/set-position-fix.js +2 -0
- package/nemo/rules/set-position/fixture/set-position.js +2 -0
- package/nemo/rules/set-position/index.js +76 -0
- package/nemo/rules/submenu/fixture/last-selected-fix.js +53 -0
- package/nemo/rules/submenu/fixture/last-selected.js +54 -0
- package/nemo/rules/submenu/fixture/li.js +3 -0
- package/nemo/rules/submenu/fixture/no-submenu-selected.js +17 -0
- package/nemo/rules/submenu/fixture/no-submenu.js +54 -0
- package/nemo/rules/submenu/fixture/not-menu.js +17 -0
- package/nemo/rules/submenu/fixture/submenu-fix.js +53 -0
- package/nemo/rules/submenu/fixture/submenu.js +54 -0
- package/nemo/rules/submenu/index.js +76 -0
- package/nemo/rules/unselect-all/fixture/hide.js +8 -0
- package/nemo/rules/unselect-all/fixture/nested-fix.js +17 -0
- package/nemo/rules/unselect-all/fixture/nested.js +18 -0
- package/nemo/rules/unselect-all/fixture/no-data-name.js +4 -0
- package/nemo/rules/unselect-all/fixture/no-parent.js +2 -0
- package/nemo/rules/unselect-all/fixture/unselect-all-fix.js +8 -0
- package/nemo/rules/unselect-all/fixture/unselect-all.js +8 -0
- package/nemo/rules/unselect-all/index.js +51 -0
- package/nemo/rules/unselect-all-submenu-items/fixture/show-submenu-fix.js +33 -0
- package/nemo/rules/unselect-all-submenu-items/fixture/show-submenu.js +34 -0
- package/nemo/rules/unselect-all-submenu-items/fixture/unselect-all-submenu-items-fix.js +33 -0
- package/nemo/rules/unselect-all-submenu-items/fixture/unselect-all-submenu-items.js +33 -0
- package/nemo/rules/unselect-all-submenu-items/index.js +30 -0
- package/nemo/rules/unselect-wrongly-selected/fixture/hide.js +17 -0
- package/nemo/rules/unselect-wrongly-selected/fixture/unselect-wrongly-selected-fix.js +17 -0
- package/nemo/rules/unselect-wrongly-selected/fixture/unselect-wrongly-selected.js +17 -0
- package/nemo/rules/unselect-wrongly-selected/index.js +39 -0
- package/nemo/state/parse-state.js +91 -0
- package/nemo/state/print-state.js +14 -0
- package/nemo/state/state.js +123 -0
- package/package.json +4 -2
package/ChangeLog
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
2025.11.27, v1.16.4
|
|
2
|
+
|
|
3
|
+
fix:
|
|
4
|
+
- eb62430 aleman: click (coderaiser/cloudcmd#449)
|
|
5
|
+
|
|
6
|
+
feature:
|
|
7
|
+
- a79d551 nemo: state: infiniteScroll
|
|
8
|
+
- 2fd1806 nemo: j: updateState
|
|
9
|
+
- 9c2e36a nemo: build-menu: update
|
|
10
|
+
- 4d0e263 nemo: add
|
|
11
|
+
|
|
12
|
+
2025.09.26, v1.16.3
|
|
13
|
+
|
|
14
|
+
fix:
|
|
15
|
+
- b1b6854 aleman: menu: item-click: run listener (coderaiser/cloudcmd#446)
|
|
16
|
+
|
|
1
17
|
2025.09.25, v1.16.2
|
|
2
18
|
|
|
3
19
|
fix:
|
|
@@ -193,7 +209,7 @@ feature:
|
|
|
193
209
|
|
|
194
210
|
feature:
|
|
195
211
|
- f745059 aleman: menu: build-menu: simplify
|
|
196
|
-
- 88f4f81 aleman: menu: rules: hide-submenu:
|
|
212
|
+
- 88f4f81 aleman: menu: rules: hide-submenu: simplify
|
|
197
213
|
- ffe78e2 aleman: menu: jsx-operator: containsClass
|
|
198
214
|
- 779f1e6 aleman: menu: rules: menu: simplify
|
|
199
215
|
- fe341ff menu: set-position: simplify
|
|
@@ -12,6 +12,9 @@ export const filter = ({event, state, options}) => {
|
|
|
12
12
|
getMenuPath = _getMenuPath,
|
|
13
13
|
} = options;
|
|
14
14
|
|
|
15
|
+
if (state.command === 'hide')
|
|
16
|
+
return false;
|
|
17
|
+
|
|
15
18
|
const menuPath = getMenuPath(event);
|
|
16
19
|
|
|
17
20
|
if (!menuPath)
|
|
@@ -19,10 +22,7 @@ export const filter = ({event, state, options}) => {
|
|
|
19
22
|
|
|
20
23
|
const fn = jessy(menuPath, menu);
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
return false;
|
|
24
|
-
|
|
25
|
-
return state.command === 'show';
|
|
25
|
+
return isFn(fn);
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
export const listener = ({options, state}) => {
|
|
@@ -10,7 +10,10 @@ export const createItemClick = (name) => ({
|
|
|
10
10
|
filter,
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
-
const filter = ({event, options}) => {
|
|
13
|
+
const filter = ({event, state, options}) => {
|
|
14
|
+
if (state.command !== 'show')
|
|
15
|
+
return;
|
|
16
|
+
|
|
14
17
|
const {
|
|
15
18
|
getMenuPath = _getMenuPath,
|
|
16
19
|
menu,
|
package/menu/addons/j/j.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<ul data-name="menu" class="menu menu-hidden">
|
|
2
2
|
<li data-name="menu-item" data-menu-index="0" className="menu-item" data-menu-path="hello">
|
|
3
|
-
<label data-menu-path="">hello</label>
|
|
3
|
+
<label data-menu-path="hello">hello</label>
|
|
4
4
|
</li>
|
|
5
5
|
<li data-name="menu-item" data-menu-index="1" className="menu-item" data-menu-path="world">
|
|
6
|
-
<label data-menu-path="">world</label>
|
|
6
|
+
<label data-menu-path="world">world</label>
|
|
7
7
|
</li>
|
|
8
8
|
</ul>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<ul data-name="menu" class="menu menu-hidden">
|
|
2
2
|
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-hello" data-menu-path="hello">
|
|
3
|
-
<label data-menu-path="">hello</label>
|
|
3
|
+
<label data-menu-path="hello">hello</label>
|
|
4
4
|
</li>
|
|
5
5
|
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-world" data-menu-path="world">
|
|
6
|
-
<label data-menu-path="">world</label>
|
|
6
|
+
<label data-menu-path="world">world</label>
|
|
7
7
|
</li>
|
|
8
8
|
</ul>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<ul data-name="menu" class="menu menu-hidden">
|
|
2
2
|
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-hello menu-submenu" data-menu-path="hello">
|
|
3
|
-
<label data-menu-path="">hello</label>
|
|
3
|
+
<label data-menu-path="hello">hello</label>
|
|
4
4
|
<ul data-name="menu" className="menu menu-hidden">
|
|
5
5
|
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-world" data-menu-path="hello.world">
|
|
6
|
-
<label data-menu-path="">world</label>
|
|
6
|
+
<label data-menu-path="hello.world">world</label>
|
|
7
7
|
</li>
|
|
8
8
|
</ul></li>
|
|
9
9
|
</ul>;
|
|
@@ -49,7 +49,8 @@ export const fix = ({path, menu, icon, name = ''}) => {
|
|
|
49
49
|
|
|
50
50
|
setDataMenuIndex(i++, menuItem);
|
|
51
51
|
setDataMenuPath(key, name, menuItem);
|
|
52
|
-
|
|
52
|
+
|
|
53
|
+
setDataMenuPath(key, name, menuItem.children[1]);
|
|
53
54
|
children.push(INDENT, menuItem);
|
|
54
55
|
|
|
55
56
|
if (isObject(value)) {
|
package/nemo/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Nemo
|
|
2
|
+
|
|
3
|
+
## Rules
|
|
4
|
+
|
|
5
|
+
- ✅[`show-menu`](https://putout.cloudcmd.io/#/gist/884fd40c07b94951de1a9ce99afab015/21d4881b44955b1426f80e87c76b7ad86eeea464);
|
|
6
|
+
- ✅[`select`](https://putout.cloudcmd.io/#/gist/10891aa58ff2ecfa1728ed19aeb2e3f2/ce536fb0b414faefbae5d0c8a094517beb1c606e);
|
|
7
|
+
- ✅[`unselect-all`](https://putout.cloudcmd.io/#/gist/ca24f199f508cccb34b11baf726eba83/96f08fa91331ac6265d9f5ff48692c9d4ad1b98b);
|
|
8
|
+
- ✅[`unselect-wrongly-selected`](https://putout.cloudcmd.io/#/gist/bea80410db3824764800d912b2c574df/090445e44dcf211795e408a57a4991c9d4b12693);
|
|
9
|
+
- ✅[`build-menu`](https://putout.cloudcmd.io/#/gist/6b009c71c21b8c098cd99b1fb6fa20ee/e70331819a307e233e522abf392f79312df14017);
|
|
10
|
+
- ✅[`set-position`](https://putout.cloudcmd.io/#/gist/215bb4654a27f15235f3e380a3035138/7f4af88aaa4863be4f1b8a90b9f0f4b1cf4744a0);
|
|
11
|
+
- ✅[`submenu`](https://putout.cloudcmd.io/#/gist/b0a3b64d14f3497869a345e7e438d66e/feb671c4a59a555ff408af92fab602bae3a94e2f);
|
|
12
|
+
- ✅[`hide-submenu`](https://putout.cloudcmd.io/#/gist/fdf6cf60a7fdfa2bae64279eda2ab023/ce0d5e24dc5e0b3436b7e87585c62e8a5132a9ab);
|
|
13
|
+
- ✅[`unsele-all-submenu-items`](https://putout.cloudcmd.io/#/gist/ad9d9c2d6b4f0daded8cdce7fc2e95d8/38c95ec76778bdf9e93bd1d15eef392874fc7c19);
|
|
14
|
+
|
|
15
|
+
## Hot Keys
|
|
16
|
+
|
|
17
|
+
| Key | Operation |
|
|
18
|
+
|:-------------|:------------------------|
|
|
19
|
+
| `Up`, `j` | move cursor up |
|
|
20
|
+
| `Down`, `k` | move cursor down |
|
|
21
|
+
| `Left`, `h` | close submenu |
|
|
22
|
+
| `Right`, `l` | open submenu |
|
|
23
|
+
| `G` or `$` | navigate to bottom file |
|
|
24
|
+
| `gg` or `^` | navigate to top file |
|
|
25
|
+
|
|
26
|
+
## License
|
|
27
|
+
|
|
28
|
+
MIT
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import jessy from 'jessy';
|
|
2
|
+
import {getMenuPath as _getMenuPath} from '../menu/get-menu-path.js';
|
|
3
|
+
|
|
4
|
+
const isFn = (a) => typeof a === 'function';
|
|
5
|
+
|
|
6
|
+
export const events = ['click'];
|
|
7
|
+
export const preventDefault = true;
|
|
8
|
+
|
|
9
|
+
export const filter = ({event, state, options}) => {
|
|
10
|
+
const {
|
|
11
|
+
menu,
|
|
12
|
+
getMenuPath = _getMenuPath,
|
|
13
|
+
} = options;
|
|
14
|
+
|
|
15
|
+
const menuPath = getMenuPath(event);
|
|
16
|
+
|
|
17
|
+
if (!menuPath)
|
|
18
|
+
return true;
|
|
19
|
+
|
|
20
|
+
const fn = jessy(menuPath, menu);
|
|
21
|
+
|
|
22
|
+
if (!isFn(fn))
|
|
23
|
+
return false;
|
|
24
|
+
|
|
25
|
+
return state.command === 'show';
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const listener = ({options, state}) => {
|
|
29
|
+
options.beforeHide?.(state);
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
command: 'hide',
|
|
33
|
+
index: -1,
|
|
34
|
+
showSubmenu: false,
|
|
35
|
+
insideSubmenu: false,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view menu-item-selected">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view menu-item-selected">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view menu-item-selected">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {setPosition} from './set-position/set-position.js';
|
|
2
|
+
|
|
3
|
+
export const createContextMenu = (name) => ({
|
|
4
|
+
name,
|
|
5
|
+
events,
|
|
6
|
+
preventDefault,
|
|
7
|
+
after,
|
|
8
|
+
afterIf,
|
|
9
|
+
listener,
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const events = [
|
|
13
|
+
'contextmenu',
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const preventDefault = true;
|
|
17
|
+
|
|
18
|
+
const listener = ({event, state, options}) => {
|
|
19
|
+
const {beforeShow} = options;
|
|
20
|
+
const {x, y} = {
|
|
21
|
+
x: event.clientX,
|
|
22
|
+
y: event.clientY,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const is = !beforeShow || beforeShow?.({
|
|
26
|
+
...state,
|
|
27
|
+
position: {
|
|
28
|
+
x,
|
|
29
|
+
y,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const command = is ? 'show' : 'hide';
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
command,
|
|
37
|
+
showSubmenu: false,
|
|
38
|
+
position: {
|
|
39
|
+
x,
|
|
40
|
+
y: y - 14,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const after = ({event, options}) => {
|
|
46
|
+
const {name} = options;
|
|
47
|
+
return setPosition(name, event);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const afterIf = ({state}) => state.command === 'show';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import {getSubmenu} from '../submenu/index.js';
|
|
2
|
+
|
|
3
|
+
export const keys = ['ArrowDown'];
|
|
4
|
+
export const preventDefault = true;
|
|
5
|
+
|
|
6
|
+
export const filter = ({state}) => state.command === 'show';
|
|
7
|
+
|
|
8
|
+
export const listener = ({state, options}) => {
|
|
9
|
+
let {
|
|
10
|
+
index,
|
|
11
|
+
insideSubmenu,
|
|
12
|
+
submenuIndex,
|
|
13
|
+
} = state;
|
|
14
|
+
|
|
15
|
+
const {menu, infiniteScroll} = options;
|
|
16
|
+
const n = Object.keys(menu).length - 1;
|
|
17
|
+
|
|
18
|
+
if (!insideSubmenu && (infiniteScroll && index === n || index < n))
|
|
19
|
+
++index;
|
|
20
|
+
|
|
21
|
+
if (!insideSubmenu && infiniteScroll && index > n)
|
|
22
|
+
index -= n + 1;
|
|
23
|
+
|
|
24
|
+
const submenu = getSubmenu({
|
|
25
|
+
index,
|
|
26
|
+
options,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const submenuCount = Object.keys(submenu).length - 1;
|
|
30
|
+
|
|
31
|
+
if (insideSubmenu)
|
|
32
|
+
if (submenuIndex < submenuCount)
|
|
33
|
+
++submenuIndex;
|
|
34
|
+
else if (infiniteScroll && submenuIndex === submenuCount)
|
|
35
|
+
submenuIndex = 0;
|
|
36
|
+
|
|
37
|
+
const showSubmenu = submenuCount > -1;
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
index,
|
|
41
|
+
submenuIndex,
|
|
42
|
+
showSubmenu,
|
|
43
|
+
};
|
|
44
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-menu-path="Upload" data-name="menu-item" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="Upload">Upload</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-menu-path="New" data-name="menu-item" className="menu-item icon icon-edit menu-submenu-show">
|
|
6
|
+
<label data-menu-path="New">New</label>
|
|
7
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
8
|
+
<li data-menu-path="New.File" data-name="menu-item" className="menu-item icon icon-view">
|
|
9
|
+
<label data-menu-path="New.File">File</label>
|
|
10
|
+
</li>
|
|
11
|
+
<li data-menu-path="New.Directory" data-name="menu-item" className="menu-item icon icon-edit menu-item-selected">
|
|
12
|
+
<label data-menu-path="New.Directory">Directory</label>
|
|
13
|
+
</li>
|
|
14
|
+
</ul>
|
|
15
|
+
</li>
|
|
16
|
+
</ul>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu">
|
|
2
|
+
<li data-menu-path="Upload" data-name="menu-item" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="Upload">Upload</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-menu-path="New" data-name="menu-item" className="menu-item icon icon-edit menu-submenu-show">
|
|
6
|
+
<label data-menu-path="New">New</label>
|
|
7
|
+
<ul data-name="menu" className="menu">
|
|
8
|
+
<li data-menu-path="New.File" data-name="menu-item" className="menu-item icon icon-view menu-item-selected">
|
|
9
|
+
<label data-menu-path="New.File">File</label>
|
|
10
|
+
</li>
|
|
11
|
+
<li data-menu-path="New.Directory" data-name="menu-item" className="menu-item icon icon-edit">
|
|
12
|
+
<label data-menu-path="New.Directory">Directory</label>
|
|
13
|
+
</li>
|
|
14
|
+
</ul>
|
|
15
|
+
</li>
|
|
16
|
+
</ul>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-menu-path="Upload" data-name="menu-item" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="Upload">Upload</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-menu-path="New" data-name="menu-item" className="menu-item icon icon-edit menu-submenu-show">
|
|
6
|
+
<label data-menu-path="New">New</label>
|
|
7
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
8
|
+
<li data-menu-path="New.File" data-name="menu-item" className="menu-item icon icon-view">
|
|
9
|
+
<label data-menu-path="New.File">File</label>
|
|
10
|
+
</li>
|
|
11
|
+
<li data-menu-path="New.Directory" data-name="menu-item" className="menu-item icon icon-edit menu-item-selected">
|
|
12
|
+
<label data-menu-path="New.Directory">Directory</label>
|
|
13
|
+
</li>
|
|
14
|
+
</ul>
|
|
15
|
+
</li>
|
|
16
|
+
</ul>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu">
|
|
2
|
+
<li data-menu-path="Upload" data-name="menu-item" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="Upload">Upload</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-menu-path="New" data-name="menu-item" className="menu-item icon icon-edit menu-submenu-show">
|
|
6
|
+
<label data-menu-path="New">New</label>
|
|
7
|
+
<ul data-name="menu" className="menu">
|
|
8
|
+
<li data-menu-path="New.File" data-name="menu-item" className="menu-item icon icon-view">
|
|
9
|
+
<label data-menu-path="New.File">File</label>
|
|
10
|
+
</li>
|
|
11
|
+
<li data-menu-path="New.Directory" data-name="menu-item" className="menu-item icon icon-edit menu-item-selected">
|
|
12
|
+
<label data-menu-path="New.Directory">Directory</label>
|
|
13
|
+
</li>
|
|
14
|
+
</ul>
|
|
15
|
+
</li>
|
|
16
|
+
</ul>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {run} from '../run/index.js';
|
|
2
|
+
import * as right from '../right.js';
|
|
3
|
+
|
|
4
|
+
export const keys = ['Enter'];
|
|
5
|
+
|
|
6
|
+
export const filter = ({state}) => state.command === 'show';
|
|
7
|
+
|
|
8
|
+
export const stopPropagation = true;
|
|
9
|
+
export const preventDefault = true;
|
|
10
|
+
|
|
11
|
+
export const listener = ({options, state}) => {
|
|
12
|
+
const [result] = run({
|
|
13
|
+
options,
|
|
14
|
+
state,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
if (!result)
|
|
18
|
+
return right.listener({
|
|
19
|
+
options,
|
|
20
|
+
state,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
options.beforeHide?.(state);
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
command: 'hide',
|
|
27
|
+
index: -1,
|
|
28
|
+
insideSubmenu: false,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view menu-item-selected">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// second selected
|
|
2
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
3
|
+
<li data-menu-path="Upload" data-name="menu-item" className="menu-item icon icon-view">
|
|
4
|
+
<label data-menu-path="Upload">Upload</label>
|
|
5
|
+
</li>
|
|
6
|
+
<li data-menu-path="New" data-name="menu-item" className="menu-item icon icon-edit menu-submenu menu-submenu-show">
|
|
7
|
+
<label data-menu-path="New">New</label>
|
|
8
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
9
|
+
<li data-menu-path="New.File" data-name="menu-item" className="menu-item icon icon-view">
|
|
10
|
+
<label data-menu-path="New.File">File</label>
|
|
11
|
+
</li>
|
|
12
|
+
<li data-menu-path="New.Directory" data-name="menu-item" className="menu-item-selected menu-item icon icon-edit">
|
|
13
|
+
<label data-menu-path="New.Directory">Directory</label>
|
|
14
|
+
</li>
|
|
15
|
+
</ul>
|
|
16
|
+
</li>
|
|
17
|
+
</ul>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// second selected
|
|
2
|
+
<ul data-name="menu" className="menu">
|
|
3
|
+
<li data-menu-path="Upload" data-name="menu-item" className="menu-item icon icon-view">
|
|
4
|
+
<label data-menu-path="Upload">Upload</label>
|
|
5
|
+
</li>
|
|
6
|
+
<li data-menu-path="New" data-name="menu-item" className="menu-item icon icon-edit menu-item-selected menu-submenu menu-submenu-show">
|
|
7
|
+
<label data-menu-path="New">New</label>
|
|
8
|
+
<ul data-name="menu" className="menu">
|
|
9
|
+
<li data-menu-path="New.File" data-name="menu-item" className="menu-item icon icon-view">
|
|
10
|
+
<label data-menu-path="New.File">File</label>
|
|
11
|
+
</li>
|
|
12
|
+
<li data-menu-path="New.Directory" data-name="menu-item" className="menu-item-selected menu-item icon icon-edit">
|
|
13
|
+
<label data-menu-path="New.Directory">Directory</label>
|
|
14
|
+
</li>
|
|
15
|
+
</ul>
|
|
16
|
+
</li>
|
|
17
|
+
</ul>;
|
|
18
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as up from '../up.js';
|
|
2
|
+
|
|
3
|
+
export const {filter} = up;
|
|
4
|
+
export const commands = [
|
|
5
|
+
'gg',
|
|
6
|
+
'^',
|
|
7
|
+
];
|
|
8
|
+
|
|
9
|
+
export function listener({state, options}) {
|
|
10
|
+
const {
|
|
11
|
+
insideSubmenu,
|
|
12
|
+
index,
|
|
13
|
+
submenuIndex,
|
|
14
|
+
} = state;
|
|
15
|
+
|
|
16
|
+
const newState = {
|
|
17
|
+
...state,
|
|
18
|
+
index: insideSubmenu ? index : 1,
|
|
19
|
+
submenuIndex: insideSubmenu ? 1 : submenuIndex,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
return up.listener({
|
|
23
|
+
state: newState,
|
|
24
|
+
options,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as click from './click/click.js';
|
|
2
|
+
import * as escape from './escape/escape.js';
|
|
3
|
+
import * as down from './down/down.js';
|
|
4
|
+
import * as up from './up.js';
|
|
5
|
+
import * as enter from './enter/enter.js';
|
|
6
|
+
import * as left from './left.js';
|
|
7
|
+
import * as right from './right.js';
|
|
8
|
+
import * as shiftG from './shift-g/shift-g.js';
|
|
9
|
+
import * as gg from './gg/gg.js';
|
|
10
|
+
import * as j from './j/j.js';
|
|
11
|
+
import * as k from './k/k.js';
|
|
12
|
+
|
|
13
|
+
export const addons = [
|
|
14
|
+
click,
|
|
15
|
+
escape,
|
|
16
|
+
down,
|
|
17
|
+
up,
|
|
18
|
+
enter,
|
|
19
|
+
left,
|
|
20
|
+
right,
|
|
21
|
+
shiftG,
|
|
22
|
+
gg,
|
|
23
|
+
j,
|
|
24
|
+
k,
|
|
25
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<ul data-name="menu" className="menu menu-hidden" style="left: 0px; top: 20px;">
|
|
2
|
+
<li data-name="menu-item" data-menu-index="0" className="menu-item icon icon-view">
|
|
3
|
+
<label data-menu-path="View">View</label>
|
|
4
|
+
</li>
|
|
5
|
+
<li data-name="menu-item" data-menu-index="1" className="menu-item icon icon-edit menu-item-selected">
|
|
6
|
+
<label data-menu-path="Edit">Edit</label>
|
|
7
|
+
</li>
|
|
8
|
+
</ul>;
|