     public let id: String
     public let name: Observable<String?>
     public let value: Observable<String?>
+    public let editingValue: Observable<String?>
+    public let valueLabelHidden: Observable<Bool>
+    public let valueEditHidden: Observable<Bool>
 
     private let _locator: Locator
     private let _sheetItemStore: ISheetItemStore
     
     public let onTapValue: AnyObserver<Void>
+    public let onValueChanged: AnyObserver<String?>
+    public let onValueEditingDidEnd: AnyObserver<Void>
+
+    private let _onValueChanged = ActionObserver<String?>()
+    private let _onValueEditingDidEnd = ActionObserver<Void>()
+    private let _disposeBag = DisposeBag()
+    private let _editingValue = Variable<String?>("")
     
     public init(locator: Locator, id: String, editingItemId: Observable<String?>, onChangeEditingItemId: AnyObserver<String?>) {
         _locator = locator

            }
            .asDriver(onErrorJustReturn: "")
            .asObservable()
        
        onTapValue = onChangeEditingItemId
            .mapObserver { _ in
                return id
            }
    }
}

public class SheetViewModel: ISheetViewModel {

    var id: String { get }
    var name: Observable<String?> { get }
    var value: Observable<String?> { get }
    var editingValue: Observable<String?> { get }
    var valueLabelHidden: Observable<Bool> { get }
    var valueEditHidden: Observable<Bool> { get }
    
    var onTapValue: AnyObserver<Void> { get }
    var onValueChanged: AnyObserver<String?> { get }
    var onValueEditingDidEnd: AnyObserver<Void> { get }
}

public protocol ISheetViewModel: IViewModel {
