@@ -70,7 +70,7 @@ class StyledRangeContainer {
7070 }
7171 }
7272
73- var _storage : [ ProviderID : RangeStore < StyleElement > ] = [ : ]
73+ var _storage : [ ProviderID : ( store : RangeStore < StyleElement > , priority : Int ) ] = [ : ]
7474 weak var delegate : StyledRangeContainerDelegate ?
7575
7676 /// Initialize the container with a list of provider identifiers. Each provider is given an id, they should be
@@ -80,17 +80,21 @@ class StyledRangeContainer {
8080 /// - providers: An array of identifiers given to providers.
8181 init ( documentLength: Int , providers: [ ProviderID ] ) {
8282 for provider in providers {
83- _storage [ provider] = RangeStore < StyleElement > ( documentLength: documentLength)
83+ _storage [ provider] = ( store : RangeStore < StyleElement > ( documentLength: documentLength) , priority : provider )
8484 }
8585 }
8686
87- func addProvider( _ id: ProviderID , documentLength: Int ) {
87+ func addProvider( _ id: ProviderID , priority : Int , documentLength: Int ) {
8888 assert ( !_storage. keys. contains ( id) , " Provider already exists " )
89- _storage [ id] = RangeStore < StyleElement > ( documentLength: documentLength)
89+ _storage [ id] = ( store: RangeStore < StyleElement > ( documentLength: documentLength) , priority: priority)
90+ }
91+
92+ func setPriority( providerId: ProviderID , priority: Int ) {
93+ _storage [ providerId] ? . priority = priority
9094 }
9195
9296 func removeProvider( _ id: ProviderID ) {
93- guard let provider = _storage [ id] else { return }
97+ guard let provider = _storage [ id] ? . store else { return }
9498 applyHighlightResult (
9599 provider: id,
96100 highlights: [ ] ,
@@ -101,7 +105,7 @@ class StyledRangeContainer {
101105
102106 func storageUpdated( editedRange: NSRange , changeInLength delta: Int ) {
103107 for key in _storage. keys {
104- _storage [ key] ? . storageUpdated ( editedRange: editedRange, changeInLength: delta)
108+ _storage [ key] ? . store . storageUpdated ( editedRange: editedRange, changeInLength: delta)
105109 }
106110 }
107111}
@@ -116,7 +120,7 @@ extension StyledRangeContainer: HighlightProviderStateDelegate {
116120 /// - rangeToHighlight: The range to apply the highlights to.
117121 func applyHighlightResult( provider: ProviderID , highlights: [ HighlightRange ] , rangeToHighlight: NSRange ) {
118122 assert ( rangeToHighlight != . notFound, " NSNotFound is an invalid highlight range " )
119- guard var storage = _storage [ provider] else {
123+ guard var storage = _storage [ provider] ? . store else {
120124 assertionFailure ( " No storage found for the given provider: \( provider) " )
121125 return
122126 }
@@ -143,7 +147,7 @@ extension StyledRangeContainer: HighlightProviderStateDelegate {
143147 }
144148
145149 storage. set ( runs: runs, for: rangeToHighlight. intRange)
146- _storage [ provider] = storage
150+ _storage [ provider] ? . store = storage
147151 delegate? . styleContainerDidUpdate ( in: rangeToHighlight)
148152 }
149153}
0 commit comments