diff --git a/src/Components/SVG/Elements/DimensionLayer.tsx b/src/Components/SVG/Elements/DimensionLayer.tsx
new file mode 100644
index 0000000..e787bc1
--- /dev/null
+++ b/src/Components/SVG/Elements/DimensionLayer.tsx
@@ -0,0 +1,57 @@
+import * as React from 'react';
+import { ContainerModel } from '../../../Interfaces/IContainerModel';
+import { DIMENSION_MARGIN } from '../../../utils/default';
+import { getAbsolutePosition, MakeBFSIterator } from '../../../utils/itertools';
+import { transformX } from './Container';
+import { Dimension } from './Dimension';
+
+interface IDimensionLayerProps {
+ roots: ContainerModel | ContainerModel[] | null
+}
+
+const getDimensionsNodes = (root: ContainerModel): React.ReactNode[] => {
+ const it = MakeBFSIterator(root);
+ const dimensions: React.ReactNode[] = [];
+ for (const { container, depth } of it) {
+ const width = container.properties.width;
+ const id = `dim-${container.properties.id}`;
+ const xStart = getAbsolutePosition(container)[0];
+ const xEnd = xStart + width;
+ const y = (container.properties.y + container.properties.height) + (DIMENSION_MARGIN * (depth + 1));
+ const strokeWidth = 1;
+ const text = width.toString();
+ dimensions.push(
+
+ );
+ }
+ return dimensions;
+};
+
+/**
+ * A layer containing all dimension
+ * @param props
+ * @returns
+ */
+export const DimensionLayer: React.FC = (props: IDimensionLayerProps) => {
+ let dimensions: React.ReactNode[] = [];
+ if (Array.isArray(props.roots)) {
+ props.roots.forEach(child => {
+ dimensions.concat(getDimensionsNodes(child));
+ });
+ } else if (props.roots !== null) {
+ dimensions = getDimensionsNodes(props.roots);
+ }
+ return (
+
+ { dimensions }
+
+ );
+};
diff --git a/src/Components/SVG/SVG.tsx b/src/Components/SVG/SVG.tsx
index 652258f..56e629d 100644
--- a/src/Components/SVG/SVG.tsx
+++ b/src/Components/SVG/SVG.tsx
@@ -4,6 +4,7 @@ import { Container } from './Elements/Container';
import { ContainerModel } from '../../Interfaces/IContainerModel';
import { Selector } from './Elements/Selector';
import { BAR_WIDTH } from '../Bar/Bar';
+import { DimensionLayer } from './Elements/DimensionLayer';
interface ISVGProps {
width: number
@@ -74,6 +75,7 @@ export const SVG: React.FC = (props: ISVGProps) => {