Skip to content

Commit 6c2d26a

Browse files
feat(overmind-components): refactor devtools client and fix issues
1 parent efc76ce commit 6c2d26a

File tree

25 files changed

+1291
-555
lines changed

25 files changed

+1291
-555
lines changed

package-lock.json

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

package.json

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@
2727
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
2828
"@babel/plugin-transform-runtime": "^7.2.0",
2929
"@babel/preset-env": "^7.2.0",
30+
"@fortawesome/fontawesome-free": "5.11.2",
3031
"axios": "0.19.0",
3132
"color": "3.0.0",
3233
"color-hash": "1.0.3",
33-
"electron": "2.0.8",
34+
"electron": "7.0.1",
3435
"electron-json-storage": "4.1.0",
3536
"electron-prompt": "1.3.1",
3637
"emotion": "9.2.12",
@@ -50,15 +51,15 @@
5051
"react-dom": "16.9.0",
5152
"react-hot-loader": "^4.3.4",
5253
"react-icons": "^3.5.0",
54+
"react-split-pane": "0.1.87",
55+
"snabbdom": "0.7.3",
5356
"styled-components": "3.3.3",
5457
"tslib": "1.10.0",
5558
"vscode": "^1.1.36",
5659
"vue": "2.6.10",
5760
"vue-hot-reload-api": "2.3.0",
5861
"vue-styled-components": "1.3.0",
59-
"ws": "7.0.0",
60-
"react-split-pane": "0.1.87",
61-
"snabbdom": "0.7.3"
62+
"ws": "7.2.0"
6263
},
6364
"devDependencies": {
6465
"@babel/core": "7.4.5",
@@ -104,6 +105,8 @@
104105
"repo-cooker": "^6.3.0",
105106
"rimraf": "2.6.2",
106107
"source-map-loader": "0.2.4",
108+
"svg-snabbdom-loader": "^1.0.0",
109+
"svg-url-loader": "3.0.2",
107110
"terser-webpack-plugin": "1.3.0",
108111
"ts-jest": "23.10.4",
109112
"ts-loader": "4.4.2",
@@ -117,7 +120,7 @@
117120
"vue-template-compiler": "2.6.10",
118121
"webpack": "4.35.0",
119122
"webpack-cli": "3.1.2",
120-
"webpack-dev-server": "3.1.11",
123+
"webpack-dev-server": "3.9.0",
121124
"webpack-merge": "4.2.1"
122125
},
123126
"lint-staged": {

packages/node_modules/overmind-components/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"snabbdom": "^0.7.3"
3737
},
3838
"devDependencies": {
39-
"@types/node": "^10.12.21",
40-
"tslib": "^1.9.3"
39+
"@types/node": "^12.11.6",
40+
"tslib": "^1.10.0"
4141
}
4242
}

packages/node_modules/overmind-components/src/component.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,17 @@ function init(componentNode: VNode): void {
3737
const tree = (component.tree = getApp().proxyStateTree.getTrackStateTree())
3838

3939
component.currentNode = componentNode
40-
41-
const update = (flushId?) => {
40+
component.changeState = (newState) => {
41+
component.state = newState
4242
patch(component.currentNode, {
4343
...component.currentNode,
44-
flushId: flushId,
44+
forceUpdate: true,
4545
})
4646
}
4747

4848
const createSelfNode = () => {
4949
const node = (component.fn as any)(component.props, {
50-
changeState: (newState) => {
51-
component.state = newState
52-
update()
53-
},
50+
changeState: component.changeState,
5451
state: component.state,
5552
appState: tree.state,
5653
actions: getApp().actions,
@@ -67,7 +64,10 @@ function init(componentNode: VNode): void {
6764
}
6865
component.onFlush = (_, __, flushId) => {
6966
component.currentFlushId = flushId
70-
update(flushId)
67+
patch(component.currentNode, {
68+
...component.currentNode,
69+
flushId: flushId,
70+
})
7171
}
7272
tree.track(component.onFlush)
7373
const newNode = createSelfNode()
@@ -122,14 +122,14 @@ function prepatch(oldVnode: VNode, vnode: VNode): void {
122122

123123
if (
124124
(vnode as any).flushId ||
125+
(vnode as any).forceUpdate ||
125126
oldComponent.fn !== newComponent.fn ||
126127
oldPropsKeys.length !== propsKeys.length
127128
) {
128129
oldComponent.tree.track(oldComponent.onFlush)
129130
const newNode = (newComponent.fn as any)(props, overmind)
130131
oldComponent.tree.stopTracking()
131132
copyToComponent(newNode, vnode, Object.assign(oldComponent, newComponent))
132-
133133
return
134134
}
135135

@@ -141,7 +141,6 @@ function prepatch(oldVnode: VNode, vnode: VNode): void {
141141
const newNode = (newComponent.fn as any)(props, overmind)
142142
oldComponent.tree.stopTracking()
143143
copyToComponent(newNode, vnode, Object.assign(oldComponent, newComponent))
144-
145144
return
146145
}
147146
}

packages/node_modules/overmind-components/src/index.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { patch, setApp } from './utils'
66
export interface IComponent<
77
Config extends IConfiguration,
88
Props = {},
9-
State = {}
9+
State = undefined
1010
> {
1111
(
1212
props: Props,
@@ -21,15 +21,7 @@ export interface IComponent<
2121
): any
2222
}
2323

24-
export type Child<P = any> =
25-
| {
26-
[K in keyof JSX.IntrinsicElements]: P extends JSX.IntrinsicElements[K]
27-
? K
28-
: never
29-
}[keyof JSX.IntrinsicElements]
30-
| IComponent<any, any, any>
31-
| null
32-
| string
24+
export type Child = React.ReactNode
3325

3426
declare global {
3527
// @ts-ignore

packages/node_modules/overmind-devtools-client/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,22 @@
1717
"devtool"
1818
],
1919
"dependencies": {
20+
"@fortawesome/fontawesome-free": "^5.11.2",
2021
"emotion": "^9.2.12",
2122
"lodash.throttle": "^4.1.1",
23+
"overmind-components": "next",
2224
"overmind-react": "next",
2325
"overmind-themes": "next",
2426
"react": "16.9.0",
2527
"react-dom": "16.9.0",
2628
"react-split-pane": "^0.1.87",
27-
"overmind-components": "next",
28-
"ws": "^7.0.0"
29+
"ws": "^7.2.0"
2930
},
3031
"devDependencies": {
3132
"@babel/plugin-proposal-class-properties": "^7.3.4",
3233
"@types/node": "^12.11.6",
3334
"@types/ws": "6.0.1",
35+
"svg-url-loader": "^3.0.2",
3436
"terser-webpack-plugin": "^1.3.0",
3537
"tslib": "^1.10.0",
3638
"webpack-merge": "^4.2.1"

packages/node_modules/overmind-devtools-client/src/components/ActionFlush/index.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { css } from 'emotion'
22
import { createElement } from 'overmind-components'
3-
3+
import linkSvg from '@fortawesome/fontawesome-free/svgs/solid/link.svg'
4+
import codeSvg from '@fortawesome/fontawesome-free/svgs/solid/code.svg'
45
import { Component } from '../../overmind'
56
import { Flush as FlushType } from '../../overmind/types'
67
import * as textStyles from '../../styles/text'
7-
import * as actionStyles from '../Action/styles'
88
import * as styles from './styles'
99

1010
type Props = {
@@ -14,23 +14,27 @@ type Props = {
1414
const ActionFlush: Component<Props> = ({ flush }, { appState }) => (
1515
<self className={styles.flush}>
1616
<div className={styles.flushHeader}>
17-
<span>{flush.components.length} ?</span>
18-
<span>{flush.derived.length} ?</span>
17+
<span>
18+
{flush.components.length} {codeSvg}
19+
</span>
20+
<span>
21+
{flush.derived.length} {linkSvg}
22+
</span>
1923
</div>
2024
{flush.components.length || flush.derived.length ? (
2125
<div className={styles.flushBody}>
2226
{flush.components.map((componentId) => (
2327
<div key={componentId}>
2428
<span className={css(textStyles.description, styles.flushItem)}>
25-
<span className={styles.icon}>?</span>{' '}
29+
<span className={styles.icon}>{codeSvg}</span>{' '}
2630
{appState.currentApp.components[componentId].name}
2731
</span>
2832
</div>
2933
))}
3034
{flush.derived.map((derivedPath, index) => (
3135
<div key={derivedPath + '_' + index}>
3236
<span className={css(textStyles.description, styles.flushItem)}>
33-
<span className={styles.icon}>?</span> {derivedPath}
37+
<span className={styles.icon}>{linkSvg}</span> {derivedPath}
3438
</span>
3539
</div>
3640
))}

packages/node_modules/overmind-devtools-client/src/components/ActionFlush/styles.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export const flushHeader = css({
3232
},
3333
'> span svg': {
3434
marginLeft: 3,
35+
width: 10,
3536
},
3637
'> span:last-child': {
3738
marginLeft: '0.5rem',
@@ -59,6 +60,10 @@ export const flushItem = css({
5960
'> :first-child': {
6061
marginRight: 3,
6162
},
63+
svg: {
64+
width: 10,
65+
fill: colors.text,
66+
},
6267
})
6368

6469
export const icon = css({

packages/node_modules/overmind-devtools-client/src/components/ActionPayload/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const ActionPayload: Component = (_, { appState, actions, reaction }) => {
2727
placeholder={
2828
appState.currentApp.selectedActionQuery
2929
? 'Add some JSON payload...'
30-
: null
30+
: ''
3131
}
3232
onKeyDown={(event) => {
3333
if (event.keyCode === 13) {

packages/node_modules/overmind-devtools-client/src/components/ActionsTools/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const ActionsTools: Component = (_, { appState, actions }) => (
3030
: colors.highlight,
3131
}}
3232
>
33-
!
33+
execute
3434
</div>
3535
</form>
3636
</self>

0 commit comments

Comments
 (0)