diff --git a/cypress/integration/rendering/packet.spec.ts b/cypress/integration/rendering/packet.spec.ts index 990ce092c..89dce609b 100644 --- a/cypress/integration/rendering/packet.spec.ts +++ b/cypress/integration/rendering/packet.spec.ts @@ -1,4 +1,4 @@ -import { imgSnapshotTest, renderGraph } from '../../helpers/util'; +import { imgSnapshotTest } from '../../helpers/util'; describe('packet structure', () => { it('should render a simple packet diagram', () => { diff --git a/docs/config/setup/modules/defaultConfig.md b/docs/config/setup/modules/defaultConfig.md index 7a9b891c4..d3495bc0c 100644 --- a/docs/config/setup/modules/defaultConfig.md +++ b/docs/config/setup/modules/defaultConfig.md @@ -14,7 +14,7 @@ #### Defined in -[defaultConfig.ts:272](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L272) +[defaultConfig.ts:275](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L275) --- diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 343d667af..76a8152b7 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -259,10 +259,6 @@ const config: RequiredDeep = { }, packet: { ...defaultConfigJson.packet, - useWidth: undefined, - // this is false, unlike every other diagram (other than gitGraph) - // TODO: can we make this default to `true` instead? - useMaxWidth: false, }, }; diff --git a/packages/mermaid/src/diagrams/packet/db.ts b/packages/mermaid/src/diagrams/packet/db.ts index d766765fc..385246d7a 100644 --- a/packages/mermaid/src/diagrams/packet/db.ts +++ b/packages/mermaid/src/diagrams/packet/db.ts @@ -1,13 +1,9 @@ -import type { Block, PacketDB, Row } from './types.js'; +import type { Block, PacketDB, PacketData, Row } from './types.js'; import type { PacketDiagramConfig } from '../../config.type.js'; - import { log } from '../../logger.js'; import DEFAULT_CONFIG from '../../defaultConfig.js'; import { getConfig as commonGetConfig } from '../../config.js'; - -interface PacketData { - packet: Row[]; -} +import { cleanAndMerge } from '../../utils.js'; const defaultPacketData: PacketData = { packet: [], @@ -17,7 +13,7 @@ let data: PacketData = structuredClone(defaultPacketData); export const DEFAULT_PACKET_CONFIG: Required = DEFAULT_CONFIG.packet; export const getConfig = (): Required => { - const config = structuredClone({ + const config = cleanAndMerge({ ...DEFAULT_PACKET_CONFIG, ...commonGetConfig().packet, }); @@ -61,9 +57,9 @@ export const getNextFittingBlock = ( }; export const populate = ({ blocks }: { blocks: Block[] }) => { + clear(); let lastByte = -1; let word: Row = []; - data.packet = []; let row = 1; const { bitsPerRow } = getConfig(); for (let { start, end, label } of blocks) { @@ -97,7 +93,6 @@ export const populate = ({ blocks }: { blocks: Block[] }) => { if (word.length > 0) { data.packet.push(word); } - log.debug(data); }; export const clear = () => { @@ -107,4 +102,5 @@ export const clear = () => { export const db: PacketDB = { getPacket, getConfig, + clear, }; diff --git a/packages/mermaid/src/diagrams/packet/styles.ts b/packages/mermaid/src/diagrams/packet/styles.ts index d6f738a13..28292a027 100644 --- a/packages/mermaid/src/diagrams/packet/styles.ts +++ b/packages/mermaid/src/diagrams/packet/styles.ts @@ -1,6 +1,8 @@ +import type { DiagramStylesProvider } from '../../diagram-api/types.js'; import { log } from '../../logger.js'; +import type { PacketStyleOptions } from './types.js'; -export const styles = (options: any = {}) => { +export const styles: DiagramStylesProvider = (options: { packet?: PacketStyleOptions } = {}) => { log.debug({ options }); return ` .byte { diff --git a/packages/mermaid/src/diagrams/packet/types.ts b/packages/mermaid/src/diagrams/packet/types.ts index 1ec25c040..6dc92215a 100644 --- a/packages/mermaid/src/diagrams/packet/types.ts +++ b/packages/mermaid/src/diagrams/packet/types.ts @@ -9,4 +9,20 @@ export type Row = Required[]; export interface PacketDB extends DiagramDB { getPacket: () => Row[]; getConfig: () => Required; + clear: () => void; +} + +export interface PacketStyleOptions { + byteFontSize?: string; + startByteColor?: string; + endByteColor?: string; + labelColor?: string; + labelFontSize?: string; + blockStrokeColor?: string; + blockStrokeWidth?: string; + blockFillColor?: string; +} + +export interface PacketData { + packet: Row[]; } diff --git a/packages/parser/src/language/packet/packet.langium b/packages/parser/src/language/packet/packet.langium index 33adf4932..6565578dd 100644 --- a/packages/parser/src/language/packet/packet.langium +++ b/packages/parser/src/language/packet/packet.langium @@ -2,13 +2,19 @@ grammar Packet import "../common/common"; entry Packet: - "packet-beta" NEWLINE* - TitleAndAccessibilities? - (blocks+=Block)*; + NEWLINE* + "packet-beta" + ( + NEWLINE* TitleAndAccessibilities blocks+=PacketBlock* + | NEWLINE+ blocks+=PacketBlock+ + | NEWLINE* + ) +; -Block: - start=INT ('-' end=INT)? ':' label=STRING; +PacketBlock: + start=INT('-' end=INT)? ':' label=STRING NEWLINE+ +; hidden terminal WS: /\s+/; -terminal INT returns number: /[0-9]+/; +terminal INT returns number: /0|[1-9][0-9]*/; terminal STRING: /"[^"]*"|'[^']*'/;