@@ -129,8 +129,6 @@ extension LoroMovableList: ContainerLike{
129129 return typedResult
130130 }
131131}
132- extension LoroCounter : ContainerLike { }
133- extension LoroUnknown : ContainerLike { }
134132
135133
136134extension LoroList : ContainerLike {
@@ -163,5 +161,50 @@ extension LoroList: ContainerLike{
163161 }
164162}
165163
164+ extension LoroCounter : ContainerLike { }
165+ extension LoroUnknown : ContainerLike { }
166+
167+ // Extension for handling nil input
168+ // Although we extend Optional, we still need to specify the type explicitly
169+ // e.g. `nil as String?`. This is not convenient in some scenarios.
170+ extension LoroList {
171+ public func insert( pos: UInt32 , v: LoroValueLike ? ) throws {
172+ try self . insert ( pos: pos, v: v? . asLoroValue ( ) ?? . null)
173+ }
174+
175+ public func push( v: LoroValueLike ? ) throws {
176+ try self . push ( v: v? . asLoroValue ( ) ?? . null)
177+ }
178+ }
166179
180+ extension LoroMap {
181+ public func insert( key: String , v: LoroValueLike ? ) throws {
182+ try self . insert ( key: key, v: v? . asLoroValue ( ) ?? . null)
183+ }
184+ }
167185
186+ extension LoroMovableList {
187+ public func insert( pos: UInt32 , v: LoroValueLike ? ) throws {
188+ try self . insert ( pos: pos, v: v? . asLoroValue ( ) ?? . null)
189+ }
190+
191+ public func push( v: LoroValueLike ? ) throws {
192+ try self . push ( v: v? . asLoroValue ( ) ?? . null)
193+ }
194+
195+ public func set( pos: UInt32 , v: LoroValueLike ? ) throws {
196+ try self . set ( pos: pos, value: v? . asLoroValue ( ) ?? . null)
197+ }
198+ }
199+
200+ extension LoroText {
201+ public func mark( from: UInt32 , to: UInt32 , key: String , value: LoroValueLike ? ) throws {
202+ try self . mark ( from: from, to: to, key: key, value: value? . asLoroValue ( ) ?? . null)
203+ }
204+ }
205+
206+ extension Awareness {
207+ public func setLocalState( value: LoroValueLike ? ) {
208+ self . setLocalState ( value: value? . asLoroValue ( ) ?? . null)
209+ }
210+ }
0 commit comments