+
+
+
diff --git a/monosketch-svelte/src/lib/ui/pannel/shapetool/viewmodel/line-appearance-data-controller.ts b/monosketch-svelte/src/lib/ui/pannel/shapetool/viewmodel/line-appearance-data-controller.ts
new file mode 100644
index 000000000..5abf9a1bf
--- /dev/null
+++ b/monosketch-svelte/src/lib/ui/pannel/shapetool/viewmodel/line-appearance-data-controller.ts
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2024, tuanchauict
+ */
+
+import { Flow } from "$libs/flow";
+import { singleOrNull } from "$libs/sequence";
+import { RetainableActionType } from "$mono/action-manager/retainable-actions";
+import { type ILineExtra, ShapeExtraManager } from "$mono/shape/extra/extra-manager";
+import type { LineExtra } from "$mono/shape/extra/shape-extra";
+import { type StraightStrokeDashPattern } from "$mono/shape/extra/style";
+import type { AbstractShape } from "$mono/shape/shape/abstract-shape";
+import { Line } from "$mono/shape/shape/line";
+import { selectedOrDefault, type CloudItemSelectionState } from "./models";
+
+/**
+ * A class which manages the appearance data of a line related shape.
+ */
+export class LineAppearanceDataController {
+ private singleLineExtraFlow: Flow;
+ private defaultLineExtraFlow: Flow;
+
+ public strokeToolStateFlow: Flow;
+ public strokeDashPatternFlow: Flow;
+ public strokeRoundedCornerFlow: Flow