Skip to content

Commit 70f3422

Browse files
feat(overmind-devtools): add actions, operators and flushes
1 parent 00ce2d5 commit 70f3422

File tree

35 files changed

+1022
-158
lines changed

35 files changed

+1022
-158
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"styled-components": "3.3.3",
3232
"ws": "5.2.1",
3333
"color": "3.0.0",
34-
"tslib": "1.9.3"
34+
"tslib": "1.9.3",
35+
"color-hash": "1.0.3"
3536
},
3637
"devDependencies": {
3738
"@types/jest": "23.1.4",
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
export const getEventValue = (_, event: React.ChangeEvent<HTMLInputElement>) =>
2-
event.currentTarget.value
1+
export function getEventValue(_, event: React.ChangeEvent<HTMLInputElement>) {
2+
return Promise.resolve(event.currentTarget.value)
3+
}
34

4-
export const preventEventDefault = (_, event: React.FormEvent) =>
5+
export function preventEventDefault(_, event: React.FormEvent) {
56
event.preventDefault()
7+
}

packages/demos/todomvc/src/app/mutations.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@ import { State, Todo } from './state'
22

33
let nextTodoId = 0
44

5-
export const setNewTodoTitle = (state: State, value: string) =>
6-
(state.newTodoTitle = value)
5+
export function setNewTodoTitle(state: State, value: string) {
6+
state.newTodoTitle = value
7+
}
78

8-
export const addTodo = (state: State) =>
9+
export function addTodo(state: State) {
910
state.todos.unshift({
1011
id: String(nextTodoId++),
1112
title: state.newTodoTitle,
1213
completed: false,
1314
})
15+
}
1416

15-
export const clearNewTodoTitle = (state: State) => (state.newTodoTitle = '')
17+
export function clearNewTodoTitle(state: State) {
18+
state.newTodoTitle = ''
19+
}
1620

17-
export const toggleCompleted = (_, todo: Todo) =>
18-
(todo.completed = !todo.completed)
21+
export function toggleCompleted(_, todo: Todo) {
22+
todo.completed = !todo.completed
23+
}

packages/node_modules/betsy/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,7 @@
3333
"@types/node": "^10.5.1",
3434
"tslib": "^1.9.3"
3535
},
36-
"devDependencies": {}
36+
"devDependencies": {
37+
"typescript": "^2.9.2"
38+
}
3739
}

packages/node_modules/overmind-devtools/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"overmind-devtools": "bin.js"
1010
},
1111
"scripts": {
12-
"start": "concurrently \"electron ./backend/main\" \"webpack-dev-server --port 3000\"",
13-
"build": "webpack",
12+
"start": "concurrently \"electron ./backend/main\" \"webpack-dev-server --port 3000\"",
13+
"build": "webpack",
1414
"typecheck": "tsc --noEmit",
1515
"test": "jest",
1616
"test:watch": "jest --watch --updateSnapshot --coverage false",
@@ -23,10 +23,11 @@
2323
],
2424
"dependencies": {
2525
"@types/node": "^10.5.1",
26-
"overmind": "next",
2726
"color": "^3.0.0",
27+
"color-hash": "^1.0.3",
2828
"electron": "^2.0.4",
2929
"electron-json-storage": "^4.1.0",
30+
"overmind": "next",
3031
"react": "^16.4.1",
3132
"react-dom": "^16.4.1",
3233
"styled-components": "^3.3.3",

packages/node_modules/overmind-devtools/src/app/actions.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default (action: Action) => {
99
.mutation(mutations.performMutationsByMessageType)
1010

1111
const loadDevtools = action()
12-
// .do((_, { storage }) => storage.clear())
12+
// .do(({ storage }) => storage.clear())
1313
.map(helpers.getAppsFromStorage)
1414
.mutation(mutations.setApps)
1515
.map(helpers.getCurrentPortFromStorage)
@@ -38,6 +38,14 @@ export default (action: Action) => {
3838
mutations.toggleExpandStatePath
3939
)
4040

41+
const selectAction = action<string>()
42+
.mutation(mutations.toggleActionItemCollapse)
43+
.mutation(mutations.selectAction)
44+
45+
const toggleCollapsed = action<{ isCollapsed: boolean }>().mutation(
46+
mutations.toggleCollapsed
47+
)
48+
4149
return {
4250
loadDevtools,
4351
setError,
@@ -46,5 +54,7 @@ export default (action: Action) => {
4654
changeTab,
4755
openApp,
4856
toggleExpandState,
57+
selectAction,
58+
toggleCollapsed,
4959
}
5060
}

packages/node_modules/overmind-devtools/src/app/derived.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,13 @@ export const componentsStatePathCount = derived((state: State) =>
3333
)
3434

3535
export const flushes = derived((state: State) =>
36-
state.currentApp.flushes.slice(1).reverse()
36+
Object.keys(state.currentApp.flushes)
37+
.sort(
38+
(idA, idB) =>
39+
state.currentApp.flushes[idA].flushId -
40+
state.currentApp.flushes[idB].flushId
41+
)
42+
.map((id) => state.currentApp.flushes[id])
3743
)
3844

3945
export const flushesMutationsCount = derived((state: State) =>
@@ -50,3 +56,7 @@ export const flushesStatePathCount = derived(
5056
)
5157
}, []).length
5258
)
59+
60+
export const currentAction = derived(
61+
(state: State) => state.currentApp.actions[state.currentApp.currentActionId]
62+
)
Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
import { Context } from './'
22

3-
export const getAppsFromStorage = ({ storage }: Context) => storage.get('apps')
3+
export function getAppsFromStorage({ storage }: Context) {
4+
return storage.get('apps')
5+
}
46

5-
export const getCurrentPortFromStorage = ({ storage }: Context) =>
6-
storage.get('currentPort')
7+
export function getCurrentPortFromStorage({ storage }: Context) {
8+
return storage.get('currentPort')
9+
}
710

8-
export const getNewPortFromState = ({ state }: Context) => state.newPortValue
11+
export function getNewPortFromState({ state }: Context) {
12+
return state.newPortValue
13+
}
914

10-
export const storeApps = ({ storage, state }: Context) =>
15+
export function storeApps({ storage, state }: Context) {
1116
storage.set('apps', state.apps)
17+
}
1218

13-
export const toNumber = (_, value: string) => String(Number(value))
19+
export function toNumber(_, value: string) {
20+
return String(Number(value))
21+
}
1422

15-
export const connectCurrentPort = (action: (message: any) => void) => ({
16-
state,
17-
connector,
18-
}: Context) => connector.addPort(state.currentPort, action)
23+
export function connectCurrentPort(action: (message: any) => void) {
24+
return function connectCurrentPort({ state, connector }: Context) {
25+
connector.addPort(state.currentPort, action)
26+
}
27+
}

0 commit comments

Comments
 (0)