lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt [68:87]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - val composeMouseEventMapper = remember { ComposeMouseEventMapper() } // Update density on each recomposition to handle monitor DPI changes (e.g., drag between HIDPI/regular monitor) // Cache processed plot spec to avoid reprocessing the same raw spec on every recomposition. // Note: Use remember(rawSpec.hashCode()), to bypass the equality check and use the content hash directly. // The issue was that remember(rawSpec) uses some kind of comparison (equals()?) which somehow not working for `MutableMap`. val processedPlotSpec = remember(rawSpec.hashCode()) { processRawSpecs(rawSpec, frontendOnly = false) } var panelSize by remember { mutableStateOf(DoubleVector.ZERO) } var plotPosition by remember { mutableStateOf(DoubleVector.ZERO) } var dispatchComputationMessages by remember { mutableStateOf(true) } var specOverrideList by remember { mutableStateOf(emptyList>()) } var plotFigureModel by remember { mutableStateOf(null) } var errorMessage: String? by remember(processedPlotSpec, panelSize) { mutableStateOf(null) } var redrawTrigger by remember { mutableStateOf(0) } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt [67:86]: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - val composeMouseEventMapper = remember { ComposeMouseEventMapper() } // Update density on each recomposition to handle monitor DPI changes (e.g., drag between HIDPI/regular monitor) // Cache processed plot spec to avoid reprocessing the same raw spec on every recomposition. // Note: Use remember(rawSpec.hashCode()), to bypass the equality check and use the content hash directly. // The issue was that remember(rawSpec) uses some kind of comparison (equals()?) which somehow not working for `MutableMap`. val processedPlotSpec = remember(rawSpec.hashCode()) { processRawSpecs(rawSpec, frontendOnly = false) } var panelSize by remember { mutableStateOf(DoubleVector.ZERO) } var plotPosition by remember { mutableStateOf(DoubleVector.ZERO) } var dispatchComputationMessages by remember { mutableStateOf(true) } var specOverrideList by remember { mutableStateOf(emptyList>()) } var plotFigureModel by remember { mutableStateOf(null) } var errorMessage: String? by remember(processedPlotSpec, panelSize) { mutableStateOf(null) } var redrawTrigger by remember { mutableStateOf(0) } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -