Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,24 @@ if (isI18nEnabled()) { ... }
const message = GlobalConfig.i18n.get('key', params, 'default');
```

### Source Folder Naming

When creating new folders in `packages/core/src/`, follow these naming conventions:
- Use **singular** form (e.g., `handler/` not `handlers/`)
- Use **kebab-case** (e.g., `my-feature/` not `myFeature/` or `my_feature/`)

```text
# Good
packages/core/src/view/handler/
packages/core/src/view/cell/
packages/core/src/view/some-feature/

# Bad
packages/core/src/view/handlers/ # plural
packages/core/src/view/someFeature/ # camelCase
packages/core/src/view/some_feature/ # snake_case
```

## Important Patterns

### Using Graph vs BaseGraph
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ limitations under the License.
*/

import { describe, expect, test } from '@jest/globals';
import { convertStyleFromString } from '../../../../src/serialization/codecs/mxGraph/utils';
import { convertStyleFromString } from '../../../../src/serialization/codec/mxGraph/utils';
import type { CellStyle } from '../../../../src';

describe('convertStyleFromString', () => {
Expand Down
18 changes: 9 additions & 9 deletions packages/core/src/editor/Editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ limitations under the License.
*/

import EditorPopupMenu from './EditorPopupMenu.js';
import UndoManager from '../view/undoable_changes/UndoManager.js';
import UndoManager from '../view/undoable-change/UndoManager.js';
import EditorKeyHandler from './EditorKeyHandler.js';
import EventSource from '../view/event/EventSource.js';
import Client from '../Client.js';
Expand All @@ -38,29 +38,29 @@ import type { AbstractGraph } from '../view/AbstractGraph.js';
import { Graph } from '../view/Graph.js';
import SwimlaneManager from '../view/layout/SwimlaneManager.js';
import LayoutManager from '../view/layout/LayoutManager.js';
import RootChange from '../view/undoable_changes/RootChange.js';
import ValueChange from '../view/undoable_changes/ValueChange.js';
import CellAttributeChange from '../view/undoable_changes/CellAttributeChange.js';
import RootChange from '../view/undoable-change/RootChange.js';
import ValueChange from '../view/undoable-change/ValueChange.js';
import CellAttributeChange from '../view/undoable-change/CellAttributeChange.js';
import PrintPreview from '../view/other/PrintPreview.js';
import Clipboard from '../util/Clipboard.js';
import MaxLog from '../gui/MaxLog.js';
import { isNode } from '../util/domUtils.js';
import { getViewXml, getXml } from '../util/xmlUtils.js';
import { load, post, submit } from '../util/requestUtils.js';
import type PopupMenuHandler from '../view/plugins/PopupMenuHandler.js';
import RubberBandHandler from '../view/plugins/RubberBandHandler.js';
import type PopupMenuHandler from '../view/plugin/PopupMenuHandler.js';
import RubberBandHandler from '../view/plugin/RubberBandHandler.js';
import InternalEvent from '../view/event/InternalEvent.js';
import InternalMouseEvent from '../view/event/InternalMouseEvent.js';
import { CellStateStyle, MouseListenerSet } from '../types.js';
import type ConnectionHandler from '../view/plugins/ConnectionHandler.js';
import type ConnectionHandler from '../view/plugin/ConnectionHandler.js';
import { show } from '../util/printUtils.js';
import type PanningHandler from '../view/plugins/PanningHandler.js';
import type PanningHandler from '../view/plugin/PanningHandler.js';
import { cloneCell } from '../util/cellArrayUtils.js';
import type MaxPopupMenu from '../gui/MaxPopupMenu.js';
import { isNullish } from '../internal/utils.js';
import { isI18nEnabled, translate } from '../internal/i18n-utils.js';
import { error } from '../gui/guiUtils.js';
import type { FitPlugin } from '../view/plugins/index.js';
import type { FitPlugin } from '../view/plugin/index.js';

/**
* Extends {@link EventSource} to implement an application wrapper for a graph that
Expand Down
36 changes: 18 additions & 18 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ limitations under the License.
*/

// Contribution of Mixins to the Graph type (no side effects, types only)
import './view/mixins/_graph-mixins-types.js';
import './view/mixin/_graph-mixins-types.js';

export { AbstractGraph } from './view/AbstractGraph.js';
export { BaseGraph } from './view/BaseGraph.js';
export { Graph } from './view/Graph.js';
export * from './view/plugins/index.js';
export * from './view/plugin/index.js';

export { GraphDataModel } from './view/GraphDataModel.js';
export { GraphView } from './view/GraphView.js';
Expand All @@ -30,17 +30,17 @@ export { default as PrintPreview } from './view/other/PrintPreview.js';
export { default as SwimlaneManager } from './view/layout/SwimlaneManager.js';
export { default as Client } from './Client.js';

export { default as CellAttributeChange } from './view/undoable_changes/CellAttributeChange.js';
export { ChildChange } from './view/undoable_changes/ChildChange.js';
export { default as CollapseChange } from './view/undoable_changes/CollapseChange.js';
export { default as CurrentRootChange } from './view/undoable_changes/CurrentRootChange.js';
export { default as GeometryChange } from './view/undoable_changes/GeometryChange.js';
export { RootChange } from './view/undoable_changes/RootChange.js';
export { default as SelectionChange } from './view/undoable_changes/SelectionChange.js';
export { default as StyleChange } from './view/undoable_changes/StyleChange.js';
export { TerminalChange } from './view/undoable_changes/TerminalChange.js';
export { default as ValueChange } from './view/undoable_changes/ValueChange.js';
export { default as VisibleChange } from './view/undoable_changes/VisibleChange.js';
export { default as CellAttributeChange } from './view/undoable-change/CellAttributeChange.js';
export { ChildChange } from './view/undoable-change/ChildChange.js';
export { default as CollapseChange } from './view/undoable-change/CollapseChange.js';
export { default as CurrentRootChange } from './view/undoable-change/CurrentRootChange.js';
export { default as GeometryChange } from './view/undoable-change/GeometryChange.js';
export { RootChange } from './view/undoable-change/RootChange.js';
export { default as SelectionChange } from './view/undoable-change/SelectionChange.js';
export { default as StyleChange } from './view/undoable-change/StyleChange.js';
export { TerminalChange } from './view/undoable-change/TerminalChange.js';
export { default as ValueChange } from './view/undoable-change/ValueChange.js';
export { default as VisibleChange } from './view/undoable-change/VisibleChange.js';

export { EditorKeyHandler } from './editor/EditorKeyHandler.js';
export { EditorPopupMenu } from './editor/EditorPopupMenu.js';
Expand All @@ -49,7 +49,7 @@ export { Editor } from './editor/Editor.js';

export { default as CellHighlight } from './view/cell/CellHighlight.js';
export { default as CellMarker } from './view/cell/CellMarker.js';
export { ConnectionHandlerCellMarker } from './view/plugins/ConnectionHandler.js';
export { ConnectionHandlerCellMarker } from './view/plugin/ConnectionHandler.js';
export { default as CellTracker } from './view/cell/CellTracker.js';
export { default as ConstraintHandler } from './view/handler/ConstraintHandler.js';
export { default as EdgeHandler } from './view/handler/EdgeHandler.js';
Expand Down Expand Up @@ -91,8 +91,8 @@ export { default as Codec } from './serialization/Codec.js';
export { default as CodecRegistry } from './serialization/CodecRegistry.js';
export { default as ObjectCodec } from './serialization/ObjectCodec.js';
export * from './serialization/ModelXmlSerializer.js';
export * from './serialization/codecs/_model-codecs.js';
export * from './serialization/codecs/_other-codecs.js';
export * from './serialization/codec/_model-codecs.js';
export * from './serialization/codec/_other-codecs.js';
export * from './serialization/register-model-codecs.js';
export * from './serialization/register-other-codecs.js';

Expand Down Expand Up @@ -239,8 +239,8 @@ export * as requestUtils from './util/requestUtils.js';
export { default as AutoSaveManager } from './view/other/AutoSaveManager.js';
export { default as Clipboard } from './util/Clipboard.js';

export { default as UndoableEdit } from './view/undoable_changes/UndoableEdit.js';
export { default as UndoManager } from './view/undoable_changes/UndoManager.js';
export { default as UndoableEdit } from './view/undoable-change/UndoableEdit.js';
export { default as UndoManager } from './view/undoable-change/UndoManager.js';

export { Cell } from './view/cell/Cell.js';
export { default as CellOverlay } from './view/cell/CellOverlay.js';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ limitations under the License.
*/

import ObjectCodec from '../ObjectCodec.js';
import ChildChange from '../../view/undoable_changes/ChildChange.js';
import ChildChange from '../../view/undoable-change/ChildChange.js';
import type Codec from '../Codec.js';
import { isElement } from '../../internal/utils.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ limitations under the License.
*/

import ObjectCodec from '../ObjectCodec.js';
import RootChange from '../../view/undoable_changes/RootChange.js';
import RootChange from '../../view/undoable-change/RootChange.js';
import type Codec from '../Codec.js';
import { isElement } from '../../internal/utils.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ limitations under the License.
*/

import ObjectCodec from '../ObjectCodec.js';
import TerminalChange from '../../view/undoable_changes/TerminalChange.js';
import TerminalChange from '../../view/undoable-change/TerminalChange.js';
import type Codec from '../Codec.js';

/**
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/serialization/register-model-codecs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
ModelCodec,
mxCellCodec,
mxGeometryCodec,
} from './codecs/_model-codecs.js';
} from './codec/_model-codecs.js';
import Geometry from '../view/geometry/Geometry.js';
import Point from '../view/geometry/Point.js';
import {
Expand Down
14 changes: 7 additions & 7 deletions packages/core/src/serialization/register-other-codecs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ import {
RootChangeCodec,
StylesheetCodec,
TerminalChangeCodec,
} from './codecs/_other-codecs.js';
} from './codec/_other-codecs.js';
import Rectangle from '../view/geometry/Rectangle.js';
import ImageBox from '../view/image/ImageBox.js';
import CellAttributeChange from '../view/undoable_changes/CellAttributeChange.js';
import CollapseChange from '../view/undoable_changes/CollapseChange.js';
import GeometryChange from '../view/undoable_changes/GeometryChange.js';
import StyleChange from '../view/undoable_changes/StyleChange.js';
import ValueChange from '../view/undoable_changes/ValueChange.js';
import VisibleChange from '../view/undoable_changes/VisibleChange.js';
import CellAttributeChange from '../view/undoable-change/CellAttributeChange.js';
import CollapseChange from '../view/undoable-change/CollapseChange.js';
import GeometryChange from '../view/undoable-change/GeometryChange.js';
import StyleChange from '../view/undoable-change/StyleChange.js';
import ValueChange from '../view/undoable-change/ValueChange.js';
import VisibleChange from '../view/undoable-change/VisibleChange.js';
import {
CodecRegistrationStates,
createObjectCodec,
Expand Down
18 changes: 9 additions & 9 deletions packages/core/src/view/AbstractGraph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import EventSource from './event/EventSource.js';
import InternalEvent from './event/InternalEvent.js';
import Rectangle from './geometry/Rectangle.js';
import Client from '../Client.js';
import type PanningHandler from './plugins/PanningHandler.js';
import type PanningHandler from './plugin/PanningHandler.js';
import GraphView from './GraphView.js';
import CellRenderer from './cell/CellRenderer.js';
import Point from './geometry/Point.js';
Expand All @@ -31,12 +31,12 @@ import Cell from './cell/Cell.js';
import GraphDataModel from './GraphDataModel.js';
import { Stylesheet } from './style/Stylesheet.js';
import { PAGE_FORMAT_A4_PORTRAIT } from '../util/Constants.js';
import ChildChange from './undoable_changes/ChildChange.js';
import GeometryChange from './undoable_changes/GeometryChange.js';
import RootChange from './undoable_changes/RootChange.js';
import StyleChange from './undoable_changes/StyleChange.js';
import TerminalChange from './undoable_changes/TerminalChange.js';
import ValueChange from './undoable_changes/ValueChange.js';
import ChildChange from './undoable-change/ChildChange.js';
import GeometryChange from './undoable-change/GeometryChange.js';
import RootChange from './undoable-change/RootChange.js';
import StyleChange from './undoable-change/StyleChange.js';
import TerminalChange from './undoable-change/TerminalChange.js';
import ValueChange from './undoable-change/ValueChange.js';
import CellState from './cell/CellState.js';
import { isNode } from '../util/domUtils.js';
import { EdgeStyle } from './style/builtin-style-elements.js';
Expand All @@ -58,10 +58,10 @@ import type {
} from '../types.js';
import Multiplicity from './other/Multiplicity.js';
import type ImageBundle from './image/ImageBundle.js';
import { applyGraphMixins } from './mixins/_graph-mixins-apply.js';
import { applyGraphMixins } from './mixin/_graph-mixins-apply.js';
import { isNullish } from '../internal/utils.js';
import { isI18nEnabled } from '../internal/i18n-utils.js';
import type TooltipHandler from './plugins/TooltipHandler.js';
import type TooltipHandler from './plugin/TooltipHandler.js';

/**
* Extends {@link EventSource} to implement a graph component for the browser. This is the entry point class of the package.
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/view/Graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import {
registerDefaultEdgeStyles,
registerDefaultPerimeters,
} from './style/register.js';
import { getDefaultPlugins } from './plugins/index.js';
import { getDefaultPlugins } from './plugin/index.js';

/**
* An implementation of {@link AbstractGraph} that automatically loads some default built-ins (plugins, style elements).
Expand Down
18 changes: 9 additions & 9 deletions packages/core/src/view/GraphDataModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@ limitations under the License.
*/

import EventSource from './event/EventSource.js';
import UndoableEdit from './undoable_changes/UndoableEdit.js';
import UndoableEdit from './undoable-change/UndoableEdit.js';
import CellPath from './cell/CellPath.js';
import Cell from './cell/Cell.js';
import { isNumeric } from '../util/mathUtils.js';
import EventObject from './event/EventObject.js';
import InternalEvent from './event/InternalEvent.js';
import ChildChange from './undoable_changes/ChildChange.js';
import CollapseChange from './undoable_changes/CollapseChange.js';
import GeometryChange from './undoable_changes/GeometryChange.js';
import RootChange from './undoable_changes/RootChange.js';
import StyleChange from './undoable_changes/StyleChange.js';
import TerminalChange from './undoable_changes/TerminalChange.js';
import ValueChange from './undoable_changes/ValueChange.js';
import VisibleChange from './undoable_changes/VisibleChange.js';
import ChildChange from './undoable-change/ChildChange.js';
import CollapseChange from './undoable-change/CollapseChange.js';
import GeometryChange from './undoable-change/GeometryChange.js';
import RootChange from './undoable-change/RootChange.js';
import StyleChange from './undoable-change/StyleChange.js';
import TerminalChange from './undoable-change/TerminalChange.js';
import ValueChange from './undoable-change/ValueChange.js';
import VisibleChange from './undoable-change/VisibleChange.js';
import Geometry from './geometry/Geometry.js';
import type { CellStyle, FilterFunction } from '../types.js';

Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/view/GraphSelectionModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ limitations under the License.
import EventSource from '../view/event/EventSource.js';
import type { AbstractGraph } from './AbstractGraph.js';
import type Cell from './cell/Cell.js';
import SelectionChange from './undoable_changes/SelectionChange.js';
import UndoableEdit from './undoable_changes/UndoableEdit.js';
import SelectionChange from './undoable-change/SelectionChange.js';
import UndoableEdit from './undoable-change/UndoableEdit.js';
import EventObject from './event/EventObject.js';
import InternalEvent from './event/InternalEvent.js';
import { isI18nEnabled } from '../internal/i18n-utils.js';
Expand Down
8 changes: 4 additions & 4 deletions packages/core/src/view/GraphView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,22 @@ import {
toRadians,
} from '../util/mathUtils.js';
import CellState from './cell/CellState.js';
import UndoableEdit from './undoable_changes/UndoableEdit.js';
import UndoableEdit from './undoable-change/UndoableEdit.js';
import ImageShape from './shape/node/ImageShape.js';
import InternalMouseEvent from './event/InternalMouseEvent.js';
import Cell from './cell/Cell.js';
import Image from './image/ImageBox.js';
import CurrentRootChange from './undoable_changes/CurrentRootChange.js';
import CurrentRootChange from './undoable-change/CurrentRootChange.js';
import Shape from './shape/Shape.js';
import Geometry from './geometry/Geometry.js';
import ConnectionConstraint from './other/ConnectionConstraint.js';
import type PopupMenuHandler from './plugins/PopupMenuHandler.js';
import type PopupMenuHandler from './plugin/PopupMenuHandler.js';
import { getClientX, getClientY, getSource, isConsumed } from '../util/EventUtils.js';
import { clone } from '../util/cloneUtils.js';
import type { AbstractGraph } from './AbstractGraph.js';
import { EdgeStyleRegistry } from './style/edge/EdgeStyleRegistry.js';
import { PerimeterRegistry } from './style/perimeter/PerimeterRegistry.js';
import type TooltipHandler from './plugins/TooltipHandler.js';
import type TooltipHandler from './plugin/TooltipHandler.js';
import type { EdgeStyleFunction, MouseEventListener } from '../types.js';
import { doEval, log } from '../internal/utils.js';
import { isI18nEnabled } from '../internal/i18n-utils.js';
Expand Down
10 changes: 5 additions & 5 deletions packages/core/src/view/animate/Effects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ limitations under the License.
*/

import { setOpacity } from '../../util/styleUtils.js';
import GeometryChange from '../undoable_changes/GeometryChange.js';
import TerminalChange from '../undoable_changes/TerminalChange.js';
import ValueChange from '../undoable_changes/ValueChange.js';
import ChildChange from '../undoable_changes/ChildChange.js';
import StyleChange from '../undoable_changes/StyleChange.js';
import GeometryChange from '../undoable-change/GeometryChange.js';
import TerminalChange from '../undoable-change/TerminalChange.js';
import ValueChange from '../undoable-change/ValueChange.js';
import ChildChange from '../undoable-change/ChildChange.js';
import StyleChange from '../undoable-change/StyleChange.js';
import type { AbstractGraph } from '../AbstractGraph.js';
import type Cell from '../../view/cell/Cell.js';
import { UndoableChange } from '../../types.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/view/cell/CellRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import CellOverlay from './CellOverlay.js';
import { getClientX, getClientY, getSource } from '../../util/EventUtils.js';
import { isNode } from '../../util/domUtils.js';
import type { CellStateStyle, ShapeConstructor } from '../../types.js';
import type SelectionCellsHandler from '../plugins/SelectionCellsHandler.js';
import type SelectionCellsHandler from '../plugin/SelectionCellsHandler.js';
import { StyleDefaultsConfig } from '../../util/config.js';

const placeholderStyleValues = ['inherit', 'swimlane', 'indicated'];
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/view/handler/EdgeHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ import InternalMouseEvent from '../event/InternalMouseEvent.js';
import Cell from '../cell/Cell.js';
import ImageBox from '../image/ImageBox.js';
import EventSource from '../event/EventSource.js';
import type SelectionHandler from '../plugins/SelectionHandler.js';
import type SelectionHandler from '../plugin/SelectionHandler.js';
import { equalPoints } from '../../util/arrayUtils.js';
import { EdgeHandlerConfig, HandleConfig } from './config.js';

Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/view/handler/KeyHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import {
isControlDown as _isControlDown,
isShiftDown,
} from '../../util/EventUtils.js';
import type CellEditorHandler from '../plugins/CellEditorHandler.js';
import type CellEditorHandler from '../plugin/CellEditorHandler.js';

/**
* Event handler that listens to keystroke events.
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/view/handler/VertexHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ import Shape from '../shape/Shape.js';
import InternalMouseEvent from '../event/InternalMouseEvent.js';
import EdgeHandler from './EdgeHandler.js';
import EventSource from '../event/EventSource.js';
import type SelectionHandler from '../plugins/SelectionHandler.js';
import type SelectionCellsHandler from '../plugins/SelectionCellsHandler.js';
import type SelectionHandler from '../plugin/SelectionHandler.js';
import type SelectionCellsHandler from '../plugin/SelectionCellsHandler.js';
import { HandleConfig, VertexHandlerConfig } from './config.js';
import { isNullish } from '../../internal/utils.js';

Expand Down
Loading