     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 {

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

public class SheetViewModel: ISheetViewModel {

    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
