@@ -7,21 +7,21 @@ import { isFutureSinkAttributeValue, isPresentSinkAttributeValue, isSinkBindingC
7
7
8
8
import { currentValue } from "../lib/current-value" ;
9
9
import { state , waitingElementHanlders } from "../internal-state" ;
10
- import { takeFirstSync } from "../utils/take-first-sync" ;
11
10
import { BOOLEAN_ATTRIBUTES } from "../definitions/boolean-attributes" ;
12
11
import { INTERACTIVE_NODE_START , INTERACTIVE_NODE_END , REF_TAG , RESOLVE_ATTRIBUTE , RML_DEBUG } from "../constants" ;
13
12
14
13
import { PreSink } from "../sinks/index" ;
15
14
import { sinkByAttributeName } from '../parser/sink-map' ;
16
- import { DatasetItemPreSink } from '../sinks/dataset-sink' ;
17
15
import { DOMAttributePreSink , FixedAttributePreSink , WritableElementAttribute } from "../sinks/attribute-sink" ;
18
16
import { Mixin } from "../sinks/mixin-sink" ;
19
17
20
18
import { InnerHTML } from "../sinks/inner-html-sink" ;
21
19
import { TextContent } from "../sinks/text-content-sink" ;
22
20
import { StyleObjectSink , StylePreSink , STYLE_OBJECT_SINK_TAG } from "../sinks/style-sink" ;
23
- import { toListener } from "../utils/to-listener " ;
21
+ import { isFunction } from "../utils/is-function " ;
24
22
import { isObservable , isPromise } from "../types/futures"
23
+ import { isRMLEventListener } from "../types/event-listener" ;
24
+ import { toListener } from "../utils/to-listener" ;
25
25
26
26
export const addRef = ( ref : string , data : BindingConfiguration ) => {
27
27
waitingElementHanlders . get ( ref ) ?. push ( data ) ?? waitingElementHanlders . set ( ref , [ data ] ) ;
@@ -258,7 +258,7 @@ export function rml(strings: TemplateStringsArray, ...expressions: RMLTemplateEx
258
258
// Merge static (string, number) properties of the mixin inline in the rendered HTML
259
259
// and pass the rest as a future sink
260
260
const [ staticAttributes , deferredAttributes ] = Object . entries ( expression as AttributeObject || { } )
261
- . reduce ( ( acc , [ k , v ] ) => ( acc [ + isFutureSinkAttributeValue ( v ) ] . push ( [ k , v ] ) , acc ) , [ [ ] as [ HTMLAttributeName , PresentSinkAttributeValue ] [ ] , [ ] as [ HTMLAttributeName , FutureSinkAttributeValue ] [ ] ] )
261
+ . reduce ( ( acc , [ k , v ] ) => ( acc [ + ( isFutureSinkAttributeValue ( v ) || isRMLEventListener ( k , v ) && isFunction ( v ) ) ] . push ( [ k , v ] ) , acc ) , [ [ ] as [ HTMLAttributeName , PresentSinkAttributeValue ] [ ] , [ ] as [ HTMLAttributeName , FutureSinkAttributeValue ] [ ] ] )
262
262
;
263
263
264
264
acc += staticAttributes . map ( ( [ k , v ] ) => `${ k } ="${ v } "` ) . join ( ' ' ) ;
0 commit comments