NAME Datastar::SSE - Module for creating Datastar Server Events DESCRIPTION An implementation of the Datastar Server Sent Event SDK in Perl SYNOPSIS use Datastar::SSE :merge_modes; my @events; push @events, Datastar::SSE->merge_fragments( $html_fragment, +{ selector => '#name-selector', merge_mode => FRAGMENT_MERGEMODE_OUTER, }); # $event is a multiline string which should be sent as part of # the http response body. Multiple event strings can be sent in the same response. for my $evt (@events) { $cgi->print( $evt ); # CGI $psgi_writer->write( $evt ); # PSGI delayed response "writer" $c->write( $evt ); # Mojolicious controller } EXPORT TAGS The following tags can be specified to export constants related to the Datastar SSE events The Datastar SSE Event names: * DATASTAR_MERGE_FRAGMENTS datastar-merge-fragments * DATASTAR_REMOVE_FRAGMENTS datastar-remove-fragments * DATASTAR_MERGE_SIGNALS datastar-merge-signals * DATASTAR_REMOVE_SIGNALS datastar-remove-signals * DATASTAR_EXECUTE_SCRIPT datastar-execute-script fragment_merge_modes The Merge Modes for the "merge_fragments" event: * FRAGMENT_MERGEMODEMORPH morph Merges the fragment using Idiomorph . This is the default merge strategy. * FRAGMENT_MERGEMODE_INNER inner Replaces the target’s innerHTML with the fragment. * FRAGMENT_MERGEMODE_OUTER outer Replaces the target’s outerHTML with the fragment. * FRAGMENT_MERGEMODE_PREPEND prepend Prepends the fragment to the target’s children. * FRAGMENT_MERGEMODE_APPEND append Appends the fragment to the target’s children. * FRAGMENT_MERGEMODE_BEFORE before Inserts the fragment before the target as a sibling. * FRAGMENT_MERGEMODE_AFTER after Inserts the fragment after the target as a sibling. * FRAGMENT_MERGEMODE_UPSERTATTRIBUTES upsertAttributes Merges attributes from the fragment into the target – useful for updating a signal. METHODS headers ->headers(); Returns an Array Ref of the recommended headers to sent for Datastar SSE responses. Content-Type: text/event-stream Cache-Control: no-cache Connection: keep-alive Keep-Alive: timeout=300, max=100000 EVENTS Each Datastar SSE event is implements as a class method on Datastar::SSE. Each method accepts, but does not require, an options hashref as the last parameter, the options are documented per event, additionally all options from HTTP::ServerEvent are supported. * id The event id. If you send this, a client will send the "Last-Event-Id" header when reconnecting, allowing you to send the events missed while offline. Newlines or null characters in the event id are treated as a fatal error. * retry the amount of miliseconds to wait before reconnecting if the connection is lost. Newlines or null characters in the retry interval are treated as a fatal error. merge_fragments ->merge_fragments( $html_fragment, $options_hashref ); ->merge_fragments( $html_fragment_arrayref, $options_hashref ); datastar-merge-fragments Merges one or more fragments into the DOM. By default, Datastar merges fragments using Idiomorph , which matches top level elements based on their ID. OPTIONS * selector Str Selects the target element of the merge process using a CSS selector. * use_view_transition Bool Default: 0 Sends As: useViewTransition Whether to use view transitions when merging into the DOM. * merge_mode Str|MERGEMODE Default: FRAGMENT_MERGEMODE_MORPH Sends As: mergeMode The mode to use when merging into the DOM. See merge modes merge_signals ->merge_signals( $signals_hashref, $options_hashref ); datastar-merge-signals Updates the signals with new values. The only_if_missing option determines whether to update the signals with new values only if the key does not exist. The signals line should be a valid data-signals attribute. This will get merged into the signals. OPTIONS * only_if_missing Bool Default: 0 Sends As: onlyIfMissing Only update the signals with new values if the key does not exist. remove_fragments ->remove_fragments( $selector, $options_hashref ) datastar-remove-fragments Removes one or more HTML fragments that match the provided selector ($selector) from the DOM. remove_signals ->remove_signals( @paths, $options_hashref ) ->remove_signals( $paths_arrayref, $options_hashref ) datastar-remove-signals Removes signals that match one or more provided paths (@paths). execute_script ->execute_script( $script, $options_hashref ) ->execute_script( $script_arrayref, $options_hashref ) datastar-execute-script Executes JavaScript ($script or @$script_arrayref) in the browser. OPTIONS * auto_remove Bool Default: 1 Sends As: autoRemove Determines whether to remove the script element after execution. * attributes Map[Name,Value] CycleTuple[ Str | Map[Name,Value] ] Default: [{ type => 'module' }] Each attribute adds an HTML attribute to the