deeply compare old and new params
This commit is contained in:
@@ -22,7 +22,7 @@ const Customizer = () => {
|
|||||||
currentParameters || {},
|
currentParameters || {},
|
||||||
(values, source) => {
|
(values, source) => {
|
||||||
thunkDispatch({ type: 'setCurrentCustomizerParams', payload: values })
|
thunkDispatch({ type: 'setCurrentCustomizerParams', payload: values })
|
||||||
if (shouldLiveUpdate && source !== 'group') {
|
if (shouldLiveUpdate) {
|
||||||
handleRender()
|
handleRender()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ export const makeStlDownloadHandler =
|
|||||||
camera: state.camera,
|
camera: state.camera,
|
||||||
quality: 'high',
|
quality: 'high',
|
||||||
specialCadProcess,
|
specialCadProcess,
|
||||||
|
parameters: state.currentParameters,
|
||||||
}).then((result) => result && saveFile(result.data))
|
}).then((result) => result && saveFile(result.data))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ const IdeEditor = ({ Loading }) => {
|
|||||||
code: state.code,
|
code: state.code,
|
||||||
viewerSize: state.viewerSize,
|
viewerSize: state.viewerSize,
|
||||||
camera: state.camera,
|
camera: state.camera,
|
||||||
|
parameters: state.currentParameters,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
localStorage.setItem(makeCodeStoreKey(state.ideType), state.code)
|
localStorage.setItem(makeCodeStoreKey(state.ideType), state.code)
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ const IdeViewer = ({ Loading }) => {
|
|||||||
code: state.code,
|
code: state.code,
|
||||||
viewerSize: state.viewerSize,
|
viewerSize: state.viewerSize,
|
||||||
camera,
|
camera,
|
||||||
|
parameters: state.currentParameters,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export const stlToGeometry = (url) =>
|
|||||||
|
|
||||||
export interface RenderArgs {
|
export interface RenderArgs {
|
||||||
code: State['code']
|
code: State['code']
|
||||||
parameters: any
|
parameters?: RawCustomizerParams
|
||||||
settings: {
|
settings: {
|
||||||
camera: State['camera']
|
camera: State['camera']
|
||||||
viewerSize: State['viewerSize']
|
viewerSize: State['viewerSize']
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ export const render: DefaultKernelExport['render'] = async ({
|
|||||||
scriptWorker.postMessage({ action: 'init', baseURI, alias: [] })
|
scriptWorker.postMessage({ action: 'init', baseURI, alias: [] })
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parameters) {
|
if (parameters && currentParameters && JSON.stringify(parameters) !== JSON.stringify(currentParameters)) {
|
||||||
// we are not evaluating code, but reacting to parameters change
|
// we are not evaluating code, but reacting to parameters change
|
||||||
scriptWorker.postMessage({
|
scriptWorker.postMessage({
|
||||||
action: 'updateParams',
|
action: 'updateParams',
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ export const use3dViewerResize = () => {
|
|||||||
code: state.code,
|
code: state.code,
|
||||||
viewerSize: { width, height },
|
viewerSize: { width, height },
|
||||||
camera: state.camera,
|
camera: state.camera,
|
||||||
|
parameters: state.currentParameters,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ export const useIdeState = (): [State, (actionOrThunk: any) => any] => {
|
|||||||
data: payload.objectData?.data,
|
data: payload.objectData?.data,
|
||||||
},
|
},
|
||||||
customizerParams: payload.customizerParams || state.customizerParams,
|
customizerParams: payload.customizerParams || state.customizerParams,
|
||||||
currentParameters: payload.currentParameters,
|
currentParameters: Object.keys(payload.currentParameters).length ? payload.currentParameters : state.currentParameters,
|
||||||
consoleMessages: payload.message
|
consoleMessages: payload.message
|
||||||
? [...state.consoleMessages, payload.message]
|
? [...state.consoleMessages, payload.message]
|
||||||
: payload.message,
|
: payload.message,
|
||||||
@@ -198,6 +198,7 @@ export const useIdeState = (): [State, (actionOrThunk: any) => any] => {
|
|||||||
isLoading: false,
|
isLoading: false,
|
||||||
}
|
}
|
||||||
case 'setCurrentCustomizerParams':
|
case 'setCurrentCustomizerParams':
|
||||||
|
if (!Object.keys(payload).length) return state
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
currentParameters: payload,
|
currentParameters: payload,
|
||||||
|
|||||||
Reference in New Issue
Block a user