* Renders BigPipe placeholders using Drupal's Ajax system.
*/
-(function ($, Drupal, drupalSettings) {
+(function($, Drupal, drupalSettings) {
+ /**
+ * Maps textContent of <script type="application/vnd.drupal-ajax"> to an AJAX response.
+ *
+ * @param {string} content
+ * The text content of a <script type="application/vnd.drupal-ajax"> DOM node.
+ * @return {Array|boolean}
+ * The parsed Ajax response containing an array of Ajax commands, or false in
+ * case the DOM node hasn't fully arrived yet.
+ */
+ function mapTextContentToAjaxResponse(content) {
+ if (content === '') {
+ return false;
+ }
+
+ try {
+ return JSON.parse(content);
+ } catch (e) {
+ return false;
+ }
+ }
+
/**
* Executes Ajax commands in <script type="application/vnd.drupal-ajax"> tag.
*
* Script tag created by BigPipe.
*/
function bigPipeProcessPlaceholderReplacement(index, placeholderReplacement) {
- const placeholderId = placeholderReplacement.getAttribute('data-big-pipe-replacement-for-placeholder-with-id');
+ const placeholderId = placeholderReplacement.getAttribute(
+ 'data-big-pipe-replacement-for-placeholder-with-id',
+ );
const content = this.textContent.trim();
// Ignore any placeholders that are not in the known placeholder list. Used
// to avoid someone trying to XSS the site via the placeholdering mechanism.
- if (typeof drupalSettings.bigPipePlaceholderIds[placeholderId] !== 'undefined') {
+ if (
+ typeof drupalSettings.bigPipePlaceholderIds[placeholderId] !== 'undefined'
+ ) {
const response = mapTextContentToAjaxResponse(content);
// If we try to parse the content too early (when the JSON containing Ajax
// commands is still arriving), textContent will be empty or incomplete.
* @see bigPipeProcessDocument()
*/
$(this).removeOnce('big-pipe');
- }
- else {
+ } else {
// Create a Drupal.Ajax object without associating an element, a
// progress indicator or a URL.
const ajaxObject = Drupal.ajax({
}
}
- /**
- * Maps textContent of <script type="application/vnd.drupal-ajax"> to an AJAX response.
- *
- * @param {string} content
- * The text content of a <script type="application/vnd.drupal-ajax"> DOM node.
- * @return {Array|boolean}
- * The parsed Ajax response containing an array of Ajax commands, or false in
- * case the DOM node hasn't fully arrived yet.
- */
- function mapTextContentToAjaxResponse(content) {
- if (content === '') {
- return false;
- }
+ // The frequency with which to check for newly arrived BigPipe placeholders.
+ // Hence 50 ms means we check 20 times per second. Setting this to 100 ms or
+ // more would cause the user to see content appear noticeably slower.
+ const interval = drupalSettings.bigPipeInterval || 50;
- try {
- return JSON.parse(content);
- }
- catch (e) {
- return false;
- }
- }
+ // The internal ID to contain the watcher service.
+ let timeoutID;
/**
* Processes a streamed HTML document receiving placeholder replacements.
return false;
}
- $(context).find('script[data-big-pipe-replacement-for-placeholder-with-id]')
+ $(context)
+ .find('script[data-big-pipe-replacement-for-placeholder-with-id]')
.once('big-pipe')
.each(bigPipeProcessPlaceholderReplacement);
}, interval);
}
- // The frequency with which to check for newly arrived BigPipe placeholders.
- // Hence 50 ms means we check 20 times per second. Setting this to 100 ms or
- // more would cause the user to see content appear noticeably slower.
- const interval = drupalSettings.bigPipeInterval || 50;
- // The internal ID to contain the watcher service.
- let timeoutID;
-
bigPipeProcess();
// If something goes wrong, make sure everything is cleaned up and has had a
}
bigPipeProcessDocument(document);
});
-}(jQuery, Drupal, drupalSettings));
+})(jQuery, Drupal, drupalSettings);