dirvi-lib 0.9.1 → 0.10.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.
@@ -1,6 +1,6 @@
1
1
  export * from './app-api.js';
2
- export * from './effect-to-action.js';
3
- export * from './reducer.js';
4
- export * from './reducer-action.js';
2
+ export * from './reducer/effect-to-action.js';
3
+ export * from './reducer/reducer.js';
4
+ export * from './reducer/reducer-action.js';
5
5
  export * from './view-api.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC"}
package/dist/app/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export * from './app-api.js';
2
- export * from './effect-to-action.js';
3
- export * from './reducer.js';
4
- export * from './reducer-action.js';
2
+ export * from './reducer/effect-to-action.js';
3
+ export * from './reducer/reducer.js';
4
+ export * from './reducer/reducer-action.js';
5
5
  export * from './view-api.js';
@@ -0,0 +1,15 @@
1
+ import type { CursorApi, FoldsApi, NavBranch, NavNodeApi, SerializableKey, State } from '../../trees/index.js';
2
+ import type { EffectAction } from '../../input/domain/index.js';
3
+ import type { ReducerAction } from './reducer-action.js';
4
+ export type EffectToActionResult<Id extends SerializableKey, Value> = Readonly<{
5
+ kind: 'action';
6
+ action: ReducerAction<Id, Value>;
7
+ }> | Readonly<{
8
+ kind: 'rejected';
9
+ message: string;
10
+ }> | Readonly<{
11
+ kind: 'ignored';
12
+ }>;
13
+ export type EffectToAction<Id extends SerializableKey, Value> = (effectAction: EffectAction<Id, Value>, navigation: NavBranch<Id>, state: State<Id, Value>) => EffectToActionResult<Id, Value>;
14
+ export declare function createEffectToAction<Id extends SerializableKey, Value>(foldsApi: FoldsApi<Id>, cursorApi: CursorApi<Id>, navNodeApi: NavNodeApi<Id, Value>): EffectToAction<Id, Value>;
15
+ //# sourceMappingURL=effect-to-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-to-action.d.ts","sourceRoot":"","sources":["../../../src/app/reducer/effect-to-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAGT,QAAQ,EACR,SAAS,EACT,UAAU,EACV,eAAe,EACf,KAAK,EACN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,oBAAoB,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAC9D,QAAQ,CAAC;IACP,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAClC,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC,CAAC;AAEP,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,CAC9D,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,EACrC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EACzB,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KACpB,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAoDrC,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EACpE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EACtB,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,EACxB,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,GAChC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAsO3B"}
@@ -0,0 +1,185 @@
1
+ function resolveFoldTreeIndex(foldsApi, folds, foldTree) {
2
+ switch (foldTree.foldTreeReferenceType) {
3
+ case 'index':
4
+ return foldsApi.hasAtIndex(folds, foldTree.index)
5
+ ? {
6
+ kind: 'found',
7
+ index: foldTree.index,
8
+ }
9
+ : {
10
+ kind: 'notFound',
11
+ message: `Fold tree at index ${foldTree.index} not found.`,
12
+ };
13
+ case 'name':
14
+ const index = foldsApi.getIndexByName(folds, foldTree.name);
15
+ return index === undefined
16
+ ? {
17
+ kind: 'notFound',
18
+ message: `Fold tree named "${foldTree.name}" not found.`,
19
+ }
20
+ : {
21
+ kind: 'found',
22
+ index,
23
+ };
24
+ default: {
25
+ const _exhaustive = foldTree;
26
+ throw new Error(`Unhandled fold tree reference: ${JSON.stringify(_exhaustive)}`);
27
+ }
28
+ }
29
+ }
30
+ export function createEffectToAction(foldsApi, cursorApi, navNodeApi) {
31
+ function action(reducerAction) {
32
+ return {
33
+ kind: 'action',
34
+ action: reducerAction,
35
+ };
36
+ }
37
+ function rejected(message) {
38
+ return {
39
+ kind: 'rejected',
40
+ message,
41
+ };
42
+ }
43
+ function ignored() {
44
+ return {
45
+ kind: 'ignored',
46
+ };
47
+ }
48
+ function effectToAction(effectAction, navigation, state) {
49
+ switch (effectAction.effectActionType) {
50
+ case 'nextEntry': {
51
+ const cursor = navNodeApi.nextCursor(navigation, state.cursor);
52
+ return cursor === undefined
53
+ ? ignored()
54
+ : action({
55
+ kind: 'changeCursor',
56
+ cursor,
57
+ });
58
+ }
59
+ case 'prevEntry': {
60
+ const cursor = navNodeApi.previousCursor(navigation, state.cursor);
61
+ return cursor === undefined
62
+ ? ignored()
63
+ : action({
64
+ kind: 'changeCursor',
65
+ cursor,
66
+ });
67
+ }
68
+ case 'setBranchEntries':
69
+ return action({
70
+ kind: 'updateBranch',
71
+ path: effectAction.path,
72
+ entries: effectAction.entries,
73
+ });
74
+ case 'navigateToParent': {
75
+ // TODO: navigation should be Loaded Branch instead to encode invariant
76
+ // in state
77
+ const navNode = navigation.children;
78
+ if (navNode === null) {
79
+ return ignored();
80
+ }
81
+ const cursor = navNodeApi.parentCursor(navNode, state.cursor);
82
+ return cursor === undefined
83
+ ? ignored()
84
+ : action({
85
+ kind: 'changeCursor',
86
+ cursor,
87
+ });
88
+ }
89
+ case 'addToFoldTree': {
90
+ const foldTree = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
91
+ if (foldTree.kind === 'notFound') {
92
+ return rejected(foldTree.message);
93
+ }
94
+ if (state.cursor.length === 0) {
95
+ return ignored();
96
+ }
97
+ const cursor = navNodeApi.cursorAfterFold(navigation, state.cursor);
98
+ if (cursor === undefined) {
99
+ return ignored();
100
+ }
101
+ return action({
102
+ kind: 'addToFoldTree',
103
+ path: state.cursor,
104
+ cursor,
105
+ foldTreeIndex: foldTree.index,
106
+ });
107
+ }
108
+ case 'removeFromFoldTree': {
109
+ const foldTree = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
110
+ if (foldTree.kind === 'notFound') {
111
+ return rejected(foldTree.message);
112
+ }
113
+ const currentPath = cursorApi.getPath(state.cursor);
114
+ const navNode = navigation.children;
115
+ // TODO: Should not be possible with update type
116
+ if (navNode === null) {
117
+ return ignored();
118
+ }
119
+ const node = navNodeApi.getNodeAtPath(navNode, currentPath);
120
+ if (node === undefined || node.folded?.entries.length === 0) {
121
+ return ignored();
122
+ }
123
+ return action({
124
+ kind: 'removeFromFoldTree',
125
+ path: currentPath,
126
+ cursor: state.cursor,
127
+ foldTreeIndex: foldTree.index,
128
+ });
129
+ }
130
+ case 'fold': {
131
+ const foldTree = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
132
+ return foldTree.kind === 'notFound'
133
+ ? rejected(foldTree.message)
134
+ : action({
135
+ kind: 'fold',
136
+ foldTreeIndex: foldTree.index,
137
+ });
138
+ }
139
+ case 'unfold': {
140
+ const foldTree = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
141
+ return foldTree.kind === 'notFound'
142
+ ? rejected(foldTree.message)
143
+ : action({
144
+ kind: 'unfold',
145
+ foldTreeIndex: foldTree.index,
146
+ });
147
+ }
148
+ case 'toggleFold': {
149
+ const foldTree = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
150
+ return foldTree.kind === 'notFound'
151
+ ? rejected(foldTree.message)
152
+ : action({
153
+ kind: 'toggleFold',
154
+ foldTreeIndex: foldTree.index,
155
+ });
156
+ }
157
+ case 'createFoldTree': {
158
+ const existingIndex = foldsApi.getIndexByName(state.folds, effectAction.name);
159
+ return existingIndex === undefined
160
+ ? action({
161
+ kind: 'createFoldTree',
162
+ name: effectAction.name,
163
+ })
164
+ : rejected(`Fold tree named "${effectAction.name}" already exists.`);
165
+ }
166
+ case 'deleteFoldTree': {
167
+ const foldTreeIndex = foldsApi.getIndexByName(state.folds, effectAction.name);
168
+ if (foldTreeIndex === undefined) {
169
+ return rejected(`Fold tree named "${effectAction.name}" not found.`);
170
+ }
171
+ if (foldTreeIndex === 0) {
172
+ return rejected('The primary fold tree at index 0 cannot be deleted.');
173
+ }
174
+ return action({
175
+ kind: 'deleteFoldTree',
176
+ name: effectAction.name,
177
+ });
178
+ }
179
+ default:
180
+ const _exhaustive = effectAction;
181
+ throw new Error(`Unhandled effect action: ${JSON.stringify(_exhaustive)}`);
182
+ }
183
+ }
184
+ return effectToAction;
185
+ }
@@ -1,4 +1,4 @@
1
- import type { Cursor, SerializableKey, State, TreeNode } from '../trees/index.js';
1
+ import type { Cursor, SerializableKey, State, TreeNode } from '../../trees/index.js';
2
2
  export type ReducerAction<Id extends SerializableKey, Value> = {
3
3
  kind: 'changeCursor';
4
4
  cursor: Cursor<Id>;
@@ -33,8 +33,17 @@ export type ReducerAction<Id extends SerializableKey, Value> = {
33
33
  */
34
34
  kind: 'unfold';
35
35
  foldTreeIndex: number;
36
+ } | {
37
+ /**
38
+ * Inverts whether a fold tree contributes to hiding entries.
39
+ */
40
+ kind: 'toggleFold';
41
+ foldTreeIndex: number;
36
42
  } | {
37
43
  kind: 'createFoldTree';
38
44
  name: string;
45
+ } | {
46
+ kind: 'deleteFoldTree';
47
+ name: string;
39
48
  };
40
49
  //# sourceMappingURL=reducer-action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer-action.d.ts","sourceRoot":"","sources":["../../../src/app/reducer/reducer-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,KAAK,EACL,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IACvD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;CACpB,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;CAChD,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { FoldsApi, SerializableKey, State, TreeNodeApi } from '../trees/index.js';
1
+ import type { FoldsApi, SerializableKey, State, TreeNodeApi } from '../../trees/index.js';
2
2
  import type { ReducerAction } from './reducer-action.js';
3
3
  export type Reducer<Id extends SerializableKey, Value> = (state: State<Id, Value>, action: ReducerAction<Id, Value>) => State<Id, Value>;
4
4
  export declare function createReducer<Id extends SerializableKey, Value>(treeNodeApi: TreeNodeApi<Id, Value>, foldsApi: FoldsApi<Id>): Reducer<Id, Value>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../src/app/reducer/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,KAAK,EACL,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAezD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,CACvD,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EACvB,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,KAC7B,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAEtB,wBAAgB,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EAC7D,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EACnC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,GACrB,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CA+LpB"}
@@ -95,6 +95,15 @@ export function createReducer(treeNodeApi, foldsApi) {
95
95
  folds,
96
96
  };
97
97
  }
98
+ case 'toggleFold': {
99
+ const folds = foldsApi.toggleActiveAtIndex(state.folds, action.foldTreeIndex);
100
+ return folds === undefined
101
+ ? state
102
+ : {
103
+ ...state,
104
+ folds,
105
+ };
106
+ }
98
107
  case 'createFoldTree': {
99
108
  const index = firstAvailableAdditionalFoldIndex(foldsApi, state);
100
109
  const folds = foldsApi.setAdditionalFoldAtIndex(state.folds, index,
@@ -110,6 +119,23 @@ export function createReducer(treeNodeApi, foldsApi) {
110
119
  folds,
111
120
  };
112
121
  }
122
+ case 'deleteFoldTree': {
123
+ const index = foldsApi.getIndexByName(state.folds, action.name);
124
+ if (index === undefined || index === 0) {
125
+ return state;
126
+ }
127
+ const folds = foldsApi.removeAdditionalFoldAtIndex(state.folds, index);
128
+ return folds === undefined
129
+ ? state
130
+ : {
131
+ ...state,
132
+ folds,
133
+ };
134
+ }
135
+ default: {
136
+ const _exhaustive = action;
137
+ throw new Error(`Unhandled reducer action: ${JSON.stringify(_exhaustive)}`);
138
+ }
113
139
  }
114
140
  };
115
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-command.d.ts","sourceRoot":"","sources":["../../../src/input/application/parse-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA0CjD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EAC5D,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,SAAS,CAyD/B"}
1
+ {"version":3,"file":"parse-command.d.ts","sourceRoot":"","sources":["../../../src/input/application/parse-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA8GjD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EAC5D,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,SAAS,CAyD/B"}
@@ -1,4 +1,5 @@
1
1
  const DEFAULT_VIEW_NAME = 'default';
2
+ const DEFAULT_FOLD_TREE_NAME = 'default';
2
3
  function parseFoldCommand(commandArgs) {
3
4
  const [subcommand, name] = commandArgs;
4
5
  switch (subcommand) {
@@ -24,6 +25,69 @@ function parseFoldCommand(commandArgs) {
24
25
  name,
25
26
  },
26
27
  };
28
+ case 'delete':
29
+ return name === undefined || commandArgs.length !== 2
30
+ ? {
31
+ effectType: 'unrecognizedCommand',
32
+ commandLine: `fold ${commandArgs.join(' ')}`,
33
+ }
34
+ : {
35
+ effectType: 'dispatchEffectAction',
36
+ action: {
37
+ effectActionType: 'deleteFoldTree',
38
+ name,
39
+ },
40
+ };
41
+ case 'enable':
42
+ case 'close':
43
+ return commandArgs.length > 2
44
+ ? {
45
+ effectType: 'unrecognizedCommand',
46
+ commandLine: `fold ${commandArgs.join(' ')}`,
47
+ }
48
+ : {
49
+ effectType: 'dispatchEffectAction',
50
+ action: {
51
+ effectActionType: 'fold',
52
+ foldTree: {
53
+ foldTreeReferenceType: 'name',
54
+ name: name ?? DEFAULT_FOLD_TREE_NAME,
55
+ },
56
+ },
57
+ };
58
+ case 'disable':
59
+ case 'open':
60
+ return commandArgs.length > 2
61
+ ? {
62
+ effectType: 'unrecognizedCommand',
63
+ commandLine: `fold ${commandArgs.join(' ')}`,
64
+ }
65
+ : {
66
+ effectType: 'dispatchEffectAction',
67
+ action: {
68
+ effectActionType: 'unfold',
69
+ foldTree: {
70
+ foldTreeReferenceType: 'name',
71
+ name: name ?? DEFAULT_FOLD_TREE_NAME,
72
+ },
73
+ },
74
+ };
75
+ case 'toggle':
76
+ return commandArgs.length > 2
77
+ ? {
78
+ effectType: 'unrecognizedCommand',
79
+ commandLine: `fold ${commandArgs.join(' ')}`,
80
+ }
81
+ : {
82
+ effectType: 'dispatchEffectAction',
83
+ action: {
84
+ effectActionType: 'toggleFold',
85
+ foldTree: {
86
+ foldTreeReferenceType: 'name',
87
+ name: name ?? DEFAULT_FOLD_TREE_NAME,
88
+ },
89
+ },
90
+ };
27
91
  default:
28
92
  return {
29
93
  effectType: 'unrecognizedCommand',
@@ -80,5 +80,8 @@ export type EffectAction<Id extends SerializableKey, Value> = Readonly<{
80
80
  }> | Readonly<{
81
81
  effectActionType: 'createFoldTree';
82
82
  name: string;
83
+ }> | Readonly<{
84
+ effectActionType: 'deleteFoldTree';
85
+ name: string;
83
86
  }>;
84
87
  //# sourceMappingURL=effect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../../../src/input/domain/effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAChD,QAAQ,CAAC;IACP,UAAU,EAAE,sBAAsB,CAAC;IACnC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CACjC,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,mBAAmB,CAAC;IAChC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;CACrB,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,wBAAwB,CAAC;CACtC,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,WAAW,CAAC;CACzB,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC,GACF,QAAQ,CAAC;IACP,UAAU,EAAE,qBAAqB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEP;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,CAAC;IACP,qBAAqB,EAAE,OAAO,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,GACF,QAAQ,CAAC;IACP,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEP;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IACtD,QAAQ,CAAC;IACP,gBAAgB,EAAE,WAAW,CAAC;CAC/B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,WAAW,CAAC;CAC/B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;CAChD,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,kBAAkB,CAAC;CACtC,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,YAAY,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACP,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC"}
1
+ {"version":3,"file":"effect.d.ts","sourceRoot":"","sources":["../../../src/input/domain/effect.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,11 @@ export type NavNodeApi<Id extends SerializableKey, Value> = {
96
96
  nextCursor(rootNode: NavBranch<Id>, cursor: Cursor<Id>): Cursor<Id> | undefined;
97
97
  previousCursor(rootNode: NavBranch<Id>, cursor: Cursor<Id>): Cursor<Id> | undefined;
98
98
  cursorAfterFold(rootNode: NavBranch<Id>, cursor: Cursor<Id>): Cursor<Id> | undefined;
99
+ /**
100
+ * Returns undefined if at the root already, i.e. cursor is [].
101
+ * @param navigation
102
+ * @param cursor
103
+ */
99
104
  parentCursor(navigation: NavNode<Id>, cursor: Cursor<Id>): Cursor<Id> | undefined;
100
105
  cursors(navigation: NavNode<Id>, parentPath?: readonly Id[]): Cursor<Id>[];
101
106
  visibleLeavesPaths(navigation: NavNode<Id>, parentPath?: readonly Id[]): Id[][];
@@ -1 +1 @@
1
- {"version":3,"file":"nav-node.types.d.ts","sourceRoot":"","sources":["../../../src/trees/nav-node/nav-node.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav-node.types.d.ts","sourceRoot":"","sources":["../../../src/trees/nav-node/nav-node.types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dirvi-lib",
3
- "version": "0.9.1",
3
+ "version": "0.10.0",
4
4
  "description": "Dependency for dirvi apps.",
5
5
  "license": "LGPL-3.0-or-later",
6
6
  "type": "module",
@@ -1,6 +0,0 @@
1
- import type { CursorApi, FoldsApi, NavBranch, NavNodeApi, SerializableKey, State } from '../trees/index.js';
2
- import type { EffectAction } from '../input/domain/index.js';
3
- import type { ReducerAction } from './reducer-action.js';
4
- export type EffectToAction<Id extends SerializableKey, Value> = (effectAction: EffectAction<Id, Value>, navigation: NavBranch<Id>, state: State<Id, Value>) => ReducerAction<Id, Value> | undefined;
5
- export declare function createEffectToAction<Id extends SerializableKey, Value>(foldsApi: FoldsApi<Id>, cursorApi: CursorApi<Id>, navNodeApi: NavNodeApi<Id, Value>): EffectToAction<Id, Value>;
6
- //# sourceMappingURL=effect-to-action.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"effect-to-action.d.ts","sourceRoot":"","sources":["../../src/app/effect-to-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAGT,QAAQ,EACR,SAAS,EACT,UAAU,EACV,eAAe,EACf,KAAK,EACN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,CAC9D,YAAY,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,EACrC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EACzB,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KACpB,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;AAkB1C,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EACpE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EACtB,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,EACxB,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,GAChC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CA4J3B"}
@@ -1,120 +0,0 @@
1
- function resolveFoldTreeIndex(foldsApi, folds, foldTree) {
2
- switch (foldTree.foldTreeReferenceType) {
3
- case 'index':
4
- return foldsApi.hasAtIndex(folds, foldTree.index)
5
- ? foldTree.index
6
- : undefined;
7
- case 'name':
8
- return foldsApi.getIndexByName(folds, foldTree.name);
9
- }
10
- }
11
- export function createEffectToAction(foldsApi, cursorApi, navNodeApi) {
12
- function effectToAction(effectAction, navigation, state) {
13
- switch (effectAction.effectActionType) {
14
- case 'nextEntry': {
15
- const cursor = navNodeApi.nextCursor(navigation, state.cursor);
16
- return cursor === undefined
17
- ? undefined
18
- : {
19
- kind: 'changeCursor',
20
- cursor,
21
- };
22
- }
23
- case 'prevEntry': {
24
- const cursor = navNodeApi.previousCursor(navigation, state.cursor);
25
- return cursor === undefined
26
- ? undefined
27
- : {
28
- kind: 'changeCursor',
29
- cursor,
30
- };
31
- }
32
- case 'setBranchEntries':
33
- return {
34
- kind: 'updateBranch',
35
- path: effectAction.path,
36
- entries: effectAction.entries,
37
- };
38
- case 'navigateToParent': {
39
- const navNode = navigation.children;
40
- if (navNode === null) {
41
- return undefined;
42
- }
43
- const cursor = navNodeApi.parentCursor(navNode, state.cursor);
44
- return cursor === undefined
45
- ? undefined
46
- : {
47
- kind: 'changeCursor',
48
- cursor,
49
- };
50
- }
51
- case 'addToFoldTree': {
52
- if (state.cursor.length === 0) {
53
- return undefined;
54
- }
55
- const cursor = navNodeApi.cursorAfterFold(navigation, state.cursor);
56
- if (cursor === undefined) {
57
- return undefined;
58
- }
59
- const foldTreeIndex = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
60
- if (foldTreeIndex === undefined) {
61
- return undefined;
62
- }
63
- return {
64
- kind: 'addToFoldTree',
65
- path: state.cursor,
66
- cursor,
67
- foldTreeIndex,
68
- };
69
- }
70
- case 'removeFromFoldTree': {
71
- const currentPath = cursorApi.getPath(state.cursor);
72
- const navNode = navigation.children;
73
- if (navNode === null) {
74
- return undefined;
75
- }
76
- const node = navNodeApi.getNodeAtPath(navNode, currentPath);
77
- if (node === undefined || node.folded?.entries.length === 0) {
78
- return undefined;
79
- }
80
- const foldTreeIndex = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
81
- if (foldTreeIndex === undefined) {
82
- return undefined;
83
- }
84
- return {
85
- kind: 'removeFromFoldTree',
86
- path: currentPath,
87
- cursor: state.cursor,
88
- foldTreeIndex,
89
- };
90
- }
91
- case 'fold': {
92
- const foldTreeIndex = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
93
- return foldTreeIndex === undefined
94
- ? undefined
95
- : {
96
- kind: 'fold',
97
- foldTreeIndex,
98
- };
99
- }
100
- case 'unfold': {
101
- const foldTreeIndex = resolveFoldTreeIndex(foldsApi, state.folds, effectAction.foldTree);
102
- return foldTreeIndex === undefined
103
- ? undefined
104
- : {
105
- kind: 'unfold',
106
- foldTreeIndex,
107
- };
108
- }
109
- case 'createFoldTree':
110
- return foldsApi.getIndexByName(state.folds, effectAction.name) ===
111
- undefined
112
- ? {
113
- kind: 'createFoldTree',
114
- name: effectAction.name,
115
- }
116
- : undefined;
117
- }
118
- }
119
- return effectToAction;
120
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"reducer-action.d.ts","sourceRoot":"","sources":["../../src/app/reducer-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,KAAK,EACL,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IACvD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;CACpB,GACD;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;CAChD,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/app/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,KAAK,EACL,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAezD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,CACvD,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EACvB,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,KAC7B,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAEtB,wBAAgB,aAAa,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,EAC7D,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EACnC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,GACrB,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAwJpB"}