From 9e82c85849f6c55c4ea905f766dc3af620e0e1b3 Mon Sep 17 00:00:00 2001 From: Nathan Marrs Date: Fri, 31 May 2024 14:33:31 -0600 Subject: [PATCH] Canvas: Chore fix *remaining* betterer issues (#88491) --- .betterer.results | 15 -------------- public/app/features/canvas/element.ts | 3 ++- public/app/features/canvas/elements/icon.tsx | 2 +- public/app/features/canvas/index.ts | 4 ---- public/app/features/canvas/runtime/ables.tsx | 2 +- .../app/features/canvas/runtime/element.tsx | 17 ++++++++-------- public/app/features/canvas/runtime/frame.tsx | 6 +++--- public/app/features/canvas/runtime/root.tsx | 2 +- public/app/features/canvas/runtime/scene.tsx | 5 +++-- public/app/features/canvas/types.ts | 20 +------------------ .../editors/BackgroundSizeEditor.tsx | 2 +- .../app/plugins/panel/canvas/CanvasPanel.tsx | 2 +- .../connections/ConnectionAnchors.tsx | 2 +- .../components/connections/ConnectionSVG.tsx | 2 +- .../components/connections/Connections.tsx | 2 +- .../panel/canvas/editor/connectionEditor.tsx | 2 +- .../editor/element/ConstraintSelectionBox.tsx | 3 ++- .../canvas/editor/element/PlacementEditor.tsx | 3 +-- .../editor/element/QuickPositioning.tsx | 4 +++- .../canvas/editor/element/elementEditor.tsx | 6 +++--- .../plugins/panel/canvas/editor/options.ts | 3 ++- public/app/plugins/panel/canvas/types.ts | 3 +-- public/app/plugins/panel/canvas/utils.ts | 10 ++++------ 23 files changed, 43 insertions(+), 77 deletions(-) delete mode 100644 public/app/features/canvas/index.ts diff --git a/.betterer.results b/.betterer.results index ddfdb3e0563..1406670859c 100644 --- a/.betterer.results +++ b/.betterer.results @@ -2704,12 +2704,6 @@ exports[`better eslint`] = { "public/app/features/canvas/elements/notFound.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/canvas/index.ts:5381": [ - [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"], - [0, 0, 0, "Do not use export all (\`export * from ...\`)", "1"], - [0, 0, 0, "Do not re-export imported variable (\`./frame\`)", "2"], - [0, 0, 0, "Do not use export all (\`export * from ...\`)", "3"] - ], "public/app/features/canvas/runtime/ables.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] @@ -2717,15 +2711,6 @@ exports[`better eslint`] = { "public/app/features/canvas/runtime/frame.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/canvas/types.ts:5381": [ - [0, 0, 0, "Do not re-export imported variable (\`Placement\`)", "0"], - [0, 0, 0, "Do not re-export imported variable (\`Constraint\`)", "1"], - [0, 0, 0, "Do not re-export imported variable (\`HorizontalConstraint\`)", "2"], - [0, 0, 0, "Do not re-export imported variable (\`VerticalConstraint\`)", "3"], - [0, 0, 0, "Do not re-export imported variable (\`BackgroundImageSize\`)", "4"], - [0, 0, 0, "Do not re-export imported variable (\`LineConfig\`)", "5"], - [0, 0, 0, "Do not re-export imported variable (\`BackgroundConfig\`)", "6"] - ], "public/app/features/commandPalette/ResultItem.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], diff --git a/public/app/features/canvas/element.ts b/public/app/features/canvas/element.ts index 0f9ee6abba9..2ebef7266ec 100644 --- a/public/app/features/canvas/element.ts +++ b/public/app/features/canvas/element.ts @@ -4,11 +4,12 @@ import { RegistryItem } from '@grafana/data'; import { PanelOptionsSupplier } from '@grafana/data/src/panel/PanelPlugin'; import { ColorDimensionConfig, ScaleDimensionConfig } from '@grafana/schema'; import { config } from 'app/core/config'; +import { BackgroundConfig, Constraint, LineConfig, Placement } from 'app/plugins/panel/canvas/panelcfg.gen'; import { LineStyleConfig } from '../../plugins/panel/canvas/editor/LineStyleEditor'; import { DimensionContext } from '../dimensions'; -import { BackgroundConfig, Constraint, LineConfig, Placement, StandardEditorConfig } from './types'; +import { StandardEditorConfig } from './types'; /** * This gets saved in panel json diff --git a/public/app/features/canvas/elements/icon.tsx b/public/app/features/canvas/elements/icon.tsx index 6c70d1e2131..0bf7642206f 100644 --- a/public/app/features/canvas/elements/icon.tsx +++ b/public/app/features/canvas/elements/icon.tsx @@ -8,10 +8,10 @@ import { SanitizedSVG } from 'app/core/components/SVG/SanitizedSVG'; import { getPublicOrAbsoluteUrl } from 'app/features/dimensions'; import { DimensionContext } from 'app/features/dimensions/context'; import { ColorDimensionEditor, ResourceDimensionEditor } from 'app/features/dimensions/editors'; +import { LineConfig } from 'app/plugins/panel/canvas/panelcfg.gen'; import { getDataLinks } from 'app/plugins/panel/canvas/utils'; import { CanvasElementItem, CanvasElementOptions, CanvasElementProps, defaultBgColor } from '../element'; -import { LineConfig } from '../types'; export interface IconConfig { path?: ResourceDimensionConfig; diff --git a/public/app/features/canvas/index.ts b/public/app/features/canvas/index.ts deleted file mode 100644 index fce59d9b00e..00000000000 --- a/public/app/features/canvas/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './types'; -export * from './element'; -export { CanvasFrameOptions } from './frame'; -export * from './registry'; diff --git a/public/app/features/canvas/runtime/ables.tsx b/public/app/features/canvas/runtime/ables.tsx index 6130f0eadb9..60689852b33 100644 --- a/public/app/features/canvas/runtime/ables.tsx +++ b/public/app/features/canvas/runtime/ables.tsx @@ -1,6 +1,6 @@ import { MoveableManagerInterface, Renderer } from 'moveable'; -import { HorizontalConstraint, VerticalConstraint } from '../types'; +import { VerticalConstraint, HorizontalConstraint } from 'app/plugins/panel/canvas/panelcfg.gen'; import { Scene } from './scene'; diff --git a/public/app/features/canvas/runtime/element.tsx b/public/app/features/canvas/runtime/element.tsx index 3cb68e29af7..30dfcf01f01 100644 --- a/public/app/features/canvas/runtime/element.tsx +++ b/public/app/features/canvas/runtime/element.tsx @@ -2,17 +2,19 @@ import React, { CSSProperties } from 'react'; import { OnDrag, OnResize, OnRotate } from 'react-moveable/declaration/types'; import { LayerElement } from 'app/core/components/Layers/types'; -import { - BackgroundImageSize, - CanvasElementItem, - CanvasElementOptions, - canvasElementRegistry, -} from 'app/features/canvas'; import { notFoundItem } from 'app/features/canvas/elements/notFound'; import { DimensionContext } from 'app/features/dimensions'; +import { + BackgroundImageSize, + Constraint, + HorizontalConstraint, + Placement, + VerticalConstraint, +} from 'app/plugins/panel/canvas/panelcfg.gen'; import { getConnectionsByTarget, isConnectionTarget } from 'app/plugins/panel/canvas/utils'; -import { Constraint, HorizontalConstraint, Placement, VerticalConstraint } from '../types'; +import { CanvasElementItem, CanvasElementOptions } from '../element'; +import { canvasElementRegistry } from '../registry'; import { FrameState } from './frame'; import { RootElement } from './root'; @@ -604,7 +606,6 @@ export class ElementState implements LayerElement { render() { const { item, div } = this; const scene = this.getScene(); - // TODO: Rethink selected state handling const isSelected = div && scene && scene.selecto && scene.selecto.getSelectedTargets().includes(div); return ( diff --git a/public/app/features/canvas/runtime/frame.tsx b/public/app/features/canvas/runtime/frame.tsx index 786234f644b..99cdb1abe80 100644 --- a/public/app/features/canvas/runtime/frame.tsx +++ b/public/app/features/canvas/runtime/frame.tsx @@ -1,14 +1,15 @@ import { cloneDeep } from 'lodash'; import React from 'react'; -import { canvasElementRegistry, CanvasFrameOptions } from 'app/features/canvas'; import { notFoundItem } from 'app/features/canvas/elements/notFound'; import { DimensionContext } from 'app/features/dimensions'; +import { HorizontalConstraint, Placement, VerticalConstraint } from 'app/plugins/panel/canvas/panelcfg.gen'; import { LayerActionID } from 'app/plugins/panel/canvas/types'; import { updateConnectionsForSource } from '../../../plugins/panel/canvas/utils'; import { CanvasElementItem } from '../element'; -import { HorizontalConstraint, Placement, VerticalConstraint } from '../types'; +import { CanvasFrameOptions } from '../frame'; +import { canvasElementRegistry } from '../registry'; import { ElementState } from './element'; import { RootElement } from './root'; @@ -26,7 +27,6 @@ export const frameItemDummy: CanvasElementItem = { config: {}, }), - // eslint-disable-next-line react/display-name display: () => { return
FRAME!
; }, diff --git a/public/app/features/canvas/runtime/root.tsx b/public/app/features/canvas/runtime/root.tsx index f1ec9d802d1..33e3551b8c8 100644 --- a/public/app/features/canvas/runtime/root.tsx +++ b/public/app/features/canvas/runtime/root.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { CanvasFrameOptions } from 'app/features/canvas'; +import { CanvasFrameOptions } from '../frame'; import { FrameState } from './frame'; import { Scene } from './scene'; diff --git a/public/app/features/canvas/runtime/scene.tsx b/public/app/features/canvas/runtime/scene.tsx index 1af97123aca..77ab717f611 100644 --- a/public/app/features/canvas/runtime/scene.tsx +++ b/public/app/features/canvas/runtime/scene.tsx @@ -17,7 +17,6 @@ import { } from '@grafana/schema'; import { Portal } from '@grafana/ui'; import { config } from 'app/core/config'; -import { CanvasFrameOptions, DEFAULT_CANVAS_ELEMENT_CONFIG } from 'app/features/canvas'; import { DimensionContext } from 'app/features/dimensions'; import { getColorDimensionFromData, @@ -34,12 +33,14 @@ import { CONNECTION_VERTEX_ADD_ID, CONNECTION_VERTEX_ID, } from 'app/plugins/panel/canvas/components/connections/Connections'; +import { HorizontalConstraint, Placement, VerticalConstraint } from 'app/plugins/panel/canvas/panelcfg.gen'; import { AnchorPoint, CanvasTooltipPayload, LayerActionID } from 'app/plugins/panel/canvas/types'; import { getParent, getTransformInstance } from 'app/plugins/panel/canvas/utils'; import appEvents from '../../../core/app_events'; import { CanvasPanel } from '../../../plugins/panel/canvas/CanvasPanel'; -import { HorizontalConstraint, Placement, VerticalConstraint } from '../types'; +import { CanvasFrameOptions } from '../frame'; +import { DEFAULT_CANVAS_ELEMENT_CONFIG } from '../registry'; import { SceneTransformWrapper } from './SceneTransformWrapper'; import { constraintViewable, dimensionViewable, settingsViewable } from './ables'; diff --git a/public/app/features/canvas/types.ts b/public/app/features/canvas/types.ts index ff378e6d35e..07a144a4798 100644 --- a/public/app/features/canvas/types.ts +++ b/public/app/features/canvas/types.ts @@ -1,14 +1,6 @@ import { LinkModel } from '@grafana/data/src'; import { ColorDimensionConfig, ResourceDimensionConfig, TextDimensionConfig } from '@grafana/schema'; -import { - BackgroundImageSize, - Constraint, - HorizontalConstraint, - Placement, - VerticalConstraint, - LineConfig, - BackgroundConfig, -} from 'app/plugins/panel/canvas/panelcfg.gen'; +import { BackgroundImageSize } from 'app/plugins/panel/canvas/panelcfg.gen'; export enum QuickPlacement { Top = 'top', @@ -69,13 +61,3 @@ export interface StandardEditorConfig { background?: boolean; border?: boolean; } - -export { - Placement, - Constraint, - HorizontalConstraint, - VerticalConstraint, - BackgroundImageSize, - LineConfig, - BackgroundConfig, -}; diff --git a/public/app/features/dimensions/editors/BackgroundSizeEditor.tsx b/public/app/features/dimensions/editors/BackgroundSizeEditor.tsx index e5094ec3ed9..8d51bb2bdf5 100644 --- a/public/app/features/dimensions/editors/BackgroundSizeEditor.tsx +++ b/public/app/features/dimensions/editors/BackgroundSizeEditor.tsx @@ -2,7 +2,7 @@ import React, { useCallback } from 'react'; import { SelectableValue, StandardEditorProps } from '@grafana/data'; import { InlineField, InlineFieldRow, RadioButtonGroup } from '@grafana/ui/src'; -import { BackgroundImageSize } from 'app/features/canvas'; +import { BackgroundImageSize } from 'app/plugins/panel/canvas/panelcfg.gen'; const options: Array> = [ { value: BackgroundImageSize.Original, label: 'Original' }, diff --git a/public/app/plugins/panel/canvas/CanvasPanel.tsx b/public/app/plugins/panel/canvas/CanvasPanel.tsx index c5f534a0823..0a30af8d86c 100644 --- a/public/app/plugins/panel/canvas/CanvasPanel.tsx +++ b/public/app/plugins/panel/canvas/CanvasPanel.tsx @@ -4,7 +4,7 @@ import { ReplaySubject, Subscription } from 'rxjs'; import { PanelProps } from '@grafana/data'; import { locationService } from '@grafana/runtime/src'; import { PanelContext, PanelContextRoot } from '@grafana/ui'; -import { CanvasFrameOptions } from 'app/features/canvas'; +import { CanvasFrameOptions } from 'app/features/canvas/frame'; import { ElementState } from 'app/features/canvas/runtime/element'; import { Scene } from 'app/features/canvas/runtime/scene'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; diff --git a/public/app/plugins/panel/canvas/components/connections/ConnectionAnchors.tsx b/public/app/plugins/panel/canvas/components/connections/ConnectionAnchors.tsx index ed9903b30c0..f8c0535e893 100644 --- a/public/app/plugins/panel/canvas/components/connections/ConnectionAnchors.tsx +++ b/public/app/plugins/panel/canvas/components/connections/ConnectionAnchors.tsx @@ -3,7 +3,7 @@ import React, { useRef } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; -import { ConnectionCoordinates } from 'app/features/canvas'; +import { ConnectionCoordinates } from 'app/features/canvas/element'; type Props = { setRef: (anchorElement: HTMLDivElement) => void; diff --git a/public/app/plugins/panel/canvas/components/connections/ConnectionSVG.tsx b/public/app/plugins/panel/canvas/components/connections/ConnectionSVG.tsx index 0850b62cd4f..e1c2dc37a00 100644 --- a/public/app/plugins/panel/canvas/components/connections/ConnectionSVG.tsx +++ b/public/app/plugins/panel/canvas/components/connections/ConnectionSVG.tsx @@ -4,7 +4,7 @@ import React, { useEffect, useMemo, useRef, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; import { config } from 'app/core/config'; -import { ConnectionDirection } from 'app/features/canvas'; +import { ConnectionDirection } from 'app/features/canvas/element'; import { Scene } from 'app/features/canvas/runtime/scene'; import { ConnectionCoordinates } from '../../panelcfg.gen'; diff --git a/public/app/plugins/panel/canvas/components/connections/Connections.tsx b/public/app/plugins/panel/canvas/components/connections/Connections.tsx index 2c066bcea63..26460a819c6 100644 --- a/public/app/plugins/panel/canvas/components/connections/Connections.tsx +++ b/public/app/plugins/panel/canvas/components/connections/Connections.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { BehaviorSubject } from 'rxjs'; import { config } from '@grafana/runtime'; -import { CanvasConnection, ConnectionCoordinates, ConnectionPath } from 'app/features/canvas'; +import { CanvasConnection, ConnectionCoordinates, ConnectionPath } from 'app/features/canvas/element'; import { ElementState } from 'app/features/canvas/runtime/element'; import { Scene } from 'app/features/canvas/runtime/scene'; diff --git a/public/app/plugins/panel/canvas/editor/connectionEditor.tsx b/public/app/plugins/panel/canvas/editor/connectionEditor.tsx index 8640bfe41ca..96e8a21b331 100644 --- a/public/app/plugins/panel/canvas/editor/connectionEditor.tsx +++ b/public/app/plugins/panel/canvas/editor/connectionEditor.tsx @@ -1,10 +1,10 @@ import { get as lodashGet } from 'lodash'; import { NestedPanelOptions, NestedValueAccess } from '@grafana/data/src/utils/OptionsUIBuilders'; -import { CanvasConnection } from 'app/features/canvas'; import { Scene } from 'app/features/canvas/runtime/scene'; import { setOptionImmutably } from 'app/features/dashboard/components/PanelEditor/utils'; +import { CanvasConnection } from '../panelcfg.gen'; import { ConnectionState } from '../types'; import { optionBuilder } from './options'; diff --git a/public/app/plugins/panel/canvas/editor/element/ConstraintSelectionBox.tsx b/public/app/plugins/panel/canvas/editor/element/ConstraintSelectionBox.tsx index 50a895cbae1..7a534bf7d53 100644 --- a/public/app/plugins/panel/canvas/editor/element/ConstraintSelectionBox.tsx +++ b/public/app/plugins/panel/canvas/editor/element/ConstraintSelectionBox.tsx @@ -3,7 +3,8 @@ import React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; -import { Constraint, HorizontalConstraint, VerticalConstraint } from 'app/features/canvas'; + +import { VerticalConstraint, HorizontalConstraint, Constraint } from '../../panelcfg.gen'; interface Props { onVerticalConstraintChange: (v: VerticalConstraint) => void; diff --git a/public/app/plugins/panel/canvas/editor/element/PlacementEditor.tsx b/public/app/plugins/panel/canvas/editor/element/PlacementEditor.tsx index e9611fbab5d..568eeb41fcf 100644 --- a/public/app/plugins/panel/canvas/editor/element/PlacementEditor.tsx +++ b/public/app/plugins/panel/canvas/editor/element/PlacementEditor.tsx @@ -5,9 +5,8 @@ import { Subject } from 'rxjs'; import { SelectableValue, StandardEditorProps } from '@grafana/data'; import { Field, Icon, InlineField, InlineFieldRow, Select, Stack } from '@grafana/ui'; import { NumberInput } from 'app/core/components/OptionsUI/NumberInput'; -import { HorizontalConstraint, Placement, VerticalConstraint } from 'app/features/canvas'; -import { Options } from '../../panelcfg.gen'; +import { HorizontalConstraint, Options, Placement, VerticalConstraint } from '../../panelcfg.gen'; import { ConstraintSelectionBox } from './ConstraintSelectionBox'; import { QuickPositioning } from './QuickPositioning'; diff --git a/public/app/plugins/panel/canvas/editor/element/QuickPositioning.tsx b/public/app/plugins/panel/canvas/editor/element/QuickPositioning.tsx index b5772abcc41..52a14a1ef26 100644 --- a/public/app/plugins/panel/canvas/editor/element/QuickPositioning.tsx +++ b/public/app/plugins/panel/canvas/editor/element/QuickPositioning.tsx @@ -3,8 +3,10 @@ import React from 'react'; import { GrafanaTheme2 } from '@grafana/data/src'; import { IconButton, useStyles2 } from '@grafana/ui/src'; -import { HorizontalConstraint, Placement, QuickPlacement, VerticalConstraint } from 'app/features/canvas'; import { ElementState } from 'app/features/canvas/runtime/element'; +import { QuickPlacement } from 'app/features/canvas/types'; + +import { HorizontalConstraint, VerticalConstraint, Placement } from '../../panelcfg.gen'; import { CanvasEditorOptions } from './elementEditor'; diff --git a/public/app/plugins/panel/canvas/editor/element/elementEditor.tsx b/public/app/plugins/panel/canvas/editor/element/elementEditor.tsx index 407a98a0516..09d602c4639 100644 --- a/public/app/plugins/panel/canvas/editor/element/elementEditor.tsx +++ b/public/app/plugins/panel/canvas/editor/element/elementEditor.tsx @@ -1,12 +1,12 @@ import { get as lodashGet } from 'lodash'; import { NestedPanelOptions, NestedValueAccess } from '@grafana/data/src/utils/OptionsUIBuilders'; +import { CanvasElementOptions } from 'app/features/canvas/element'; import { - CanvasElementOptions, - canvasElementRegistry, DEFAULT_CANVAS_ELEMENT_CONFIG, + canvasElementRegistry, defaultElementItems, -} from 'app/features/canvas'; +} from 'app/features/canvas/registry'; import { ElementState } from 'app/features/canvas/runtime/element'; import { FrameState } from 'app/features/canvas/runtime/frame'; import { Scene } from 'app/features/canvas/runtime/scene'; diff --git a/public/app/plugins/panel/canvas/editor/options.ts b/public/app/plugins/panel/canvas/editor/options.ts index 29c1997e905..0baa970f0e6 100644 --- a/public/app/plugins/panel/canvas/editor/options.ts +++ b/public/app/plugins/panel/canvas/editor/options.ts @@ -2,11 +2,12 @@ import { capitalize } from 'lodash'; import { FieldType } from '@grafana/data'; import { PanelOptionsSupplier } from '@grafana/data/src/panel/PanelPlugin'; -import { CanvasConnection, CanvasElementOptions, ConnectionDirection } from 'app/features/canvas'; +import { ConnectionDirection } from 'app/features/canvas/element'; import { SVGElements } from 'app/features/canvas/runtime/element'; import { ColorDimensionEditor, ResourceDimensionEditor, ScaleDimensionEditor } from 'app/features/dimensions/editors'; import { BackgroundSizeEditor } from 'app/features/dimensions/editors/BackgroundSizeEditor'; +import { CanvasConnection, CanvasElementOptions } from '../panelcfg.gen'; import { LineStyle } from '../types'; import { LineStyleEditor } from './LineStyleEditor'; diff --git a/public/app/plugins/panel/canvas/types.ts b/public/app/plugins/panel/canvas/types.ts index 5acb3e5b189..3c30e3a35c8 100644 --- a/public/app/plugins/panel/canvas/types.ts +++ b/public/app/plugins/panel/canvas/types.ts @@ -1,7 +1,6 @@ -import { CanvasConnection } from '../../../features/canvas'; import { ElementState } from '../../../features/canvas/runtime/element'; -import { ConnectionCoordinates } from './panelcfg.gen'; +import { CanvasConnection, ConnectionCoordinates } from './panelcfg.gen'; export enum LayerActionID { Delete = 'delete', diff --git a/public/app/plugins/panel/canvas/utils.ts b/public/app/plugins/panel/canvas/utils.ts index dfabad08313..964f3ce2011 100644 --- a/public/app/plugins/panel/canvas/utils.ts +++ b/public/app/plugins/panel/canvas/utils.ts @@ -4,15 +4,13 @@ import { AppEvents, Field, getFieldDisplayName, LinkModel, PluginState, Selectab import appEvents from 'app/core/app_events'; import { hasAlphaPanels, config } from 'app/core/config'; import { - defaultElementItems, - advancedElementItems, - CanvasElementItem, - canvasElementRegistry, - CanvasElementOptions, CanvasConnection, + CanvasElementItem, + CanvasElementOptions, ConnectionDirection, -} from 'app/features/canvas'; +} from 'app/features/canvas/element'; import { notFoundItem } from 'app/features/canvas/elements/notFound'; +import { advancedElementItems, canvasElementRegistry, defaultElementItems } from 'app/features/canvas/registry'; import { ElementState } from 'app/features/canvas/runtime/element'; import { FrameState } from 'app/features/canvas/runtime/frame'; import { Scene, SelectionParams } from 'app/features/canvas/runtime/scene';