Code updates

This commit is contained in:
Nathan Bierema 2023-12-15 09:35:27 -05:00
parent 5b7dc66e83
commit a6c6120663
7 changed files with 26 additions and 18 deletions

View File

@ -13,7 +13,7 @@ import RawTab from './RawTab';
import ChartTab from './ChartTab'; import ChartTab from './ChartTab';
import VisualDiffTab from './VisualDiffTab'; import VisualDiffTab from './VisualDiffTab';
import { StoreState } from '../../../reducers'; import { StoreState } from '../../../reducers';
import { Delta } from 'jsondiffpatch'; import type { Delta } from 'jsondiffpatch';
type StateProps = ReturnType<typeof mapStateToProps>; type StateProps = ReturnType<typeof mapStateToProps>;
type DispatchProps = ResolveThunks<typeof actionCreators>; type DispatchProps = ResolveThunks<typeof actionCreators>;

View File

@ -1,5 +1,6 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { Delta, formatters } from 'jsondiffpatch'; import type { Delta } from 'jsondiffpatch';
import * as htmlFormatter from 'jsondiffpatch/formatters/html';
import styled, { ThemedStyledProps } from 'styled-components'; import styled, { ThemedStyledProps } from 'styled-components';
import { effects, Theme } from '@redux-devtools/ui'; import { effects, Theme } from '@redux-devtools/ui';
@ -240,7 +241,7 @@ export default class VisualDiffTab extends Component<Props> {
let __html: string | undefined; let __html: string | undefined;
const data = this.props.data; const data = this.props.data;
if (data) { if (data) {
__html = formatters.html.format(data, undefined); __html = htmlFormatter.format(data, undefined);
} }
return <StyledContainer dangerouslySetInnerHTML={{ __html: __html! }} />; return <StyledContainer dangerouslySetInnerHTML={{ __html: __html! }} />;

View File

@ -3,7 +3,7 @@ import { Base16Theme } from 'redux-devtools-themes';
import { Action } from 'redux'; import { Action } from 'redux';
import type { LabelRenderer } from 'react-json-tree'; import type { LabelRenderer } from 'react-json-tree';
import { PerformAction } from '@redux-devtools/core'; import { PerformAction } from '@redux-devtools/core';
import { Delta } from 'jsondiffpatch'; import type { Delta } from 'jsondiffpatch';
import { DEFAULT_STATE, DevtoolsInspectorState } from './redux'; import { DEFAULT_STATE, DevtoolsInspectorState } from './redux';
import ActionPreviewHeader from './ActionPreviewHeader'; import ActionPreviewHeader from './ActionPreviewHeader';
import DiffTab from './tabs/DiffTab'; import DiffTab from './tabs/DiffTab';

View File

@ -6,7 +6,7 @@ import {
LiftedState, LiftedState,
} from '@redux-devtools/core'; } from '@redux-devtools/core';
import { Action, Dispatch } from 'redux'; import { Action, Dispatch } from 'redux';
import { Delta, DiffContext } from 'jsondiffpatch'; import type { Delta, DiffContext } from 'jsondiffpatch';
import { import {
createInspectorMonitorThemeFromBase16Theme, createInspectorMonitorThemeFromBase16Theme,
resolveBase16Theme, resolveBase16Theme,
@ -160,7 +160,7 @@ export interface DevtoolsInspectorProps<S, A extends Action<string>>
select: (state: S) => unknown; select: (state: S) => unknown;
theme: Base16ThemeName | Base16Theme; theme: Base16ThemeName | Base16Theme;
supportImmutable: boolean; supportImmutable: boolean;
diffObjectHash?: (item: unknown, index: number) => string; diffObjectHash?: (item: unknown, index: number | undefined) => string;
diffPropertyFilter?: (name: string, context: DiffContext) => boolean; diffPropertyFilter?: (name: string, context: DiffContext) => boolean;
hideMainButtons?: boolean; hideMainButtons?: boolean;
hideActionButtons?: boolean; hideActionButtons?: boolean;

View File

@ -1,14 +1,19 @@
import { DiffContext, DiffPatcher } from 'jsondiffpatch'; import { DiffPatcher } from 'jsondiffpatch';
import type { DiffContext } from 'jsondiffpatch';
const defaultObjectHash = (o: any, idx: number) => const defaultObjectHash = (obj: object, idx: number | undefined) => {
const o = obj as Record<string, unknown>;
return (
(o === null && '$$null') || (o === null && '$$null') ||
(o && (o.id || o.id === 0) && `$$id:${JSON.stringify(o.id)}`) || (o && (o.id || o.id === 0) && `$$id:${JSON.stringify(o.id)}`) ||
(o && (o._id || o._id === 0) && `$$_id:${JSON.stringify(o._id)}`) || (o && (o._id || o._id === 0) && `$$_id:${JSON.stringify(o._id)}`) ||
`$$index:${idx}`; `$$index:${idx}`
);
};
const defaultPropertyFilter = (name: string, context: DiffContext) => const defaultPropertyFilter = (name: string, context: DiffContext) =>
typeof context.left[name] !== 'function' && typeof (context.left as Record<string, unknown>)[name] !== 'function' &&
typeof context.right[name] !== 'function'; typeof (context.right as Record<string, unknown>)[name] !== 'function';
const defaultDiffPatcher = new DiffPatcher({ const defaultDiffPatcher = new DiffPatcher({
arrays: { detectMove: false } as { arrays: { detectMove: false } as {
@ -20,7 +25,9 @@ const defaultDiffPatcher = new DiffPatcher({
}); });
export default function createDiffPatcher( export default function createDiffPatcher(
objectHash: ((item: unknown, index: number) => string) | undefined, objectHash:
| ((item: unknown, index: number | undefined) => string)
| undefined,
propertyFilter: ((name: string, context: DiffContext) => boolean) | undefined, propertyFilter: ((name: string, context: DiffContext) => boolean) | undefined,
) { ) {
if (!objectHash && !propertyFilter) { if (!objectHash && !propertyFilter) {

View File

@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { JSONTree } from 'react-json-tree'; import { JSONTree } from 'react-json-tree';
import type { LabelRenderer, ShouldExpandNodeInitially } from 'react-json-tree'; import type { LabelRenderer, ShouldExpandNodeInitially } from 'react-json-tree';
import { stringify } from 'javascript-stringify'; import { stringify } from 'javascript-stringify';
import { Delta } from 'jsondiffpatch'; import type { Delta } from 'jsondiffpatch';
import { Base16Theme } from 'redux-devtools-themes'; import { Base16Theme } from 'redux-devtools-themes';
import { css } from '@emotion/react'; import { css } from '@emotion/react';
import type { Interpolation, Theme } from '@emotion/react'; import type { Interpolation, Theme } from '@emotion/react';

View File

@ -1,7 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "ES2020", "target": "es2020",
"moduleResolution": "Node", "moduleResolution": "bundler",
"declaration": true, "declaration": true,
"strict": true, "strict": true,
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,