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