--- regenerate: true --- {%- capture cache -%} {% comment %} # ----------------------------------------------------------------------------- # ~/assets/theme/j1/adapter/js/attic.js # Liquid template to adapt Backstretch Core functions for # all attics (top page headers) # # Product/Info: # https://jekyll.one # # Copyright (C) 2023, 2024 Juergen Adams # # J1 Template is licensed under the MIT License. # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE # ----------------------------------------------------------------------------- # Test data: # {{ liquid_var | debug }} # ----------------------------------------------------------------------------- {% endcomment %} {% comment %} Liquid procedures -------------------------------------------------------------------------------- {% endcomment %} {% comment %} Set global settings -------------------------------------------------------------------------------- {% endcomment %} {% assign environment = site.environment %} {% assign template_version = site.version %} {% comment %} Process YML config data ================================================================================ {% endcomment %} {% comment %} Set config files -------------------------------------------------------------------------------- {% endcomment %} {% assign template_config = site.data.j1_config %} {% assign blocks = site.data.blocks %} {% assign modules = site.data.modules %} {% comment %} Set config data -------------------------------------------------------------------------------- {% endcomment %} {% assign attic_defaults = modules.defaults.attics.defaults %} {% assign attic_settings = modules.attics.settings %} {% comment %} Set config options -------------------------------------------------------------------------------- {% endcomment %} {% assign attic_options = attic_defaults | merge: attic_settings %} {% comment %} Detect prod mode -------------------------------------------------------------------------------- {% endcomment %} {% assign production = false %} {% if environment == 'prod' or environment == 'production' %} {% assign production = true %} {% endif %} /* # ----------------------------------------------------------------------------- # ~/assets/theme/j1/adapter/js/attic.js # JS Adapter for J1 Master Header # # Product/Info: # https://jekyll.one # http://www.jquery-backstretch.com/ # # Copyright (C) 2023, 2024 Juergen Adams # Copyright (C) 2012 Scott Robbin # # J1 Template is licensed under the MIT License. # For details, see: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE # Backstretch is licensed under the MIT License. # For details, see https://github.com/jquery-backstretch/jquery-backstretch # ----------------------------------------------------------------------------- # Adapter generated: {{site.time}} # ----------------------------------------------------------------------------- */ // ----------------------------------------------------------------------------- // ESLint shimming // ----------------------------------------------------------------------------- /* eslint indent: "off" */ // ----------------------------------------------------------------------------- "use strict"; j1.adapter.attic = ((j1, window) => { {% comment %} Set global variables ------------------------------------------------------------------------------ {% endcomment %} var environment = '{{environment}}'; var state = 'not_started'; var moduleOptions = {}; var atticFilters; var filterArray; var filterStr; var _this; var logger; var logText; // date|time var startTime; var endTime; var startTimeModule; var endTimeModule; var timeSeconds; // --------------------------------------------------------------------------- // main // --------------------------------------------------------------------------- return { // ------------------------------------------------------------------------- // adapter initializer // ------------------------------------------------------------------------- init: (options) => { // ----------------------------------------------------------------------- // default module settings // ----------------------------------------------------------------------- var settings = $.extend({ module_name: 'j1.adapter.attic', generated: '{{site.time}}' }, options); // ----------------------------------------------------------------------- // global variable settings // ----------------------------------------------------------------------- _this = j1.adapter.attic; logger = log4javascript.getLogger('j1.adapter.attic'); // initialize state flag _this.state = 'pending'; // create settings object from frontmatter var frontmatterOptions = options != null ? $.extend({}, options) : {}; // create settings object from attic options var atticDefaults = $.extend({}, {{attic_defaults | replace: 'nil', 'null' | replace: '=>', ':' }}); var atticSettings = $.extend({}, {{attic_settings | replace: 'nil', 'null' | replace: '=>', ':' }}); var atticOptions = $.extend(true, {}, atticDefaults, atticSettings, frontmatterOptions); // save frontmatterOptions and atticOptions in the j1 namespace // to be used later by j1.template.init() to load the header // _this['frontmatterOptions'] = frontmatterOptions; _this['atticOptions'] = atticOptions; // ----------------------------------------------------------------------- // adapter initializer // ----------------------------------------------------------------------- var dependencies_met_page_ready = setInterval (() => { var pageState = $('#no_flicker').css("display"); var pageVisible = (pageState === 'block') ? true: false; if (pageVisible) { startTimeModule = Date.now(); _this.setState('started'); logger.debug('\n' + 'state: ' + _this.getState()); logger.info('\n' + 'module is being initialized'); {% if attic_options.enabled %} logger.info('\n' + 'module initializaton: started'); if (atticOptions.hide_page_oninit) { // hide whole page while attic is being created // jadams, 2023-05-12: page visible while loading the attic // cause high numbers for cumulative layout shift (CLS) // // logger.debug('\n' + 'hide attic on initialization'); // $('#no_flicker').css('display', 'none'); } _this.createAllAttics(); clearInterval(dependencies_met_page_ready); {% else %} logger.warn('\n' + 'found module attics disabled'); // add additional top space if attics are disabled $('#no_flicker').addClass('mt-5'); clearInterval(dependencies_met_page_ready); {% endif %} } }, 10); }, // END init // ------------------------------------------------------------------------- // createAllAttics() // initialize all header supported // ------------------------------------------------------------------------- createAllAttics: () => { var frontmatterOptions = _this.frontmatterOptions; // merge all attic options var atticOptions = $.extend(true, {}, _this.atticOptions, _this.frontmatterOptions); {% comment %} Load data from attic config (yaml data files) -------------------------------------------------------------------------- {% endcomment %} {% for item in attic_options.attics %} {% if item.attic.enabled %} {% assign attic_id = item.attic.id %} // create RUNNER for id: {{attic_id}} function {{attic_id}}_runner (atticOptions) { var atticOptionsFilters = {}; var atticItemFilters = {}; var atticFilters = {}; var my_attic = $.extend({}, {{item.attic | replace: 'nil', 'null' | replace: '=>', ':' }}); // collect attic filter settings to object to array to string // {% if item.attic.filters %} atticItemFilters = $.extend({}, {{item.attic.filters | replace: 'nil', 'null' | replace: '=>', ':' }}); {% endif %} atticOptionsFilters = atticOptions.filters; atticFilters = $.extend(true, {}, atticOptionsFilters, atticItemFilters); filterArray = []; $.each(atticFilters, (idx2, val2) => { var str = idx2 + '(' + val2 + ')'; filterArray.push(str); }); filterStr = filterArray.join(' '); // fire backstretch for all slides on attic_id if ($('#{{attic_id}}').length) { $('#{{attic_id}}').backstretch( atticOptions.slides, { debug: atticOptions.debug, spinner: atticOptions.spinner, alignX: atticOptions.alignX, alignY: atticOptions.alignY, scale: atticOptions.scale, transition: atticOptions.transition, transitionDuration: atticOptions.transitionDuration, animateFirst: atticOptions.animateFirst, duration: atticOptions.duration, paused: atticOptions.paused, start: atticOptions.start, preload: atticOptions.preload, preloadSize: atticOptions.preloadSize, bypassCss: atticOptions.bypassCss, alwaysTestWindowResolution: atticOptions.alwaysTestWindowResolution, resolutionRefreshRate: atticOptions.resolutionRefreshRate, resolutionChangeRatioThreshold: atticOptions.transition, isVideo: atticOptions.isVideo, loop: atticOptions.loop, mute: atticOptions.mute }); } else { logger.warn('\n' + 'no attic container found on id: {{attic_id}}'); } {% comment %} Add a spinner if configured -------------------------------------------------------------------- {% endcomment %} if (atticOptions.spinner) { $('.backstretch').addClass(atticOptions.spinner); } // collect backstretch instance data for Backstretch callbacks var backstretch_instance_data = $('#{{attic_id}}').data('backstretch'); // add event for pauseOnHover if (atticOptions.pauseOnHover) { $('#attic_id').hover ( () => { $('#{{attic_id}}').backstretch('pause'); }, () => { $('#{{attic_id}}').backstretch('resume'); } ); } // run callback backstretch before $(window).on('backstretch.before', (e, instance, index) => { var evt = e; var inst = instance; var idx = index; var atticOptions = _this.atticOptions; var textOverlayTitle = instance.images[index].title var textOverlayTagline = instance.images[index].tagline; var textOverlayHTML; // console.log('module attic - set state: backstretch_before'); _this.setState('backstretch_before'); if (index === backstretch_instance_data.images.length -1) { if (atticOptions.circuit === false) { // Stop the slideshow after reached the last image $('#{{attic_id}}').backstretch('pause'); } // remove class for the backstretch_intro background $('.backstretch').removeClass(atticOptions.spinner); } // Add collected CSS filters $('.backstretch').css('filter', filterStr); // mute the overlay content while sliding $('.textOverlay').css('opacity', '0'); // mute the badge while sliding $('.attic-caption').css('opacity', '0'); // re-initialze particles on a slideshow if exists if ($('.particles-js-canvas-el').length > 0) { j1.adapter.particles.init(); } }); // // END callback backstretch.before // run callback backstretch.after // NOTE: add a 'caption' or 'badge' if configured // SEE: https://github.com/jquery-backstretch/jquery-backstretch/issues/194 // $(window).on('backstretch.after', (e, instance, index) => { var textOverlayTitle = instance.images[index].title var textOverlayTagline = instance.images[index].tagline; var atticOptions = _this.atticOptions; var frontmatterOptions = _this.frontmatterOptions; var textOverlayHTML; // apply FRONTMATTER settings for title|tagline if // NOT set with the FIRST backstretch (image) instance // if (index === 0) { if (typeof instance.images[index].title === 'undefined') { textOverlayTitle = frontmatterOptions.title; } if (typeof instance.images[index].tagline === 'undefined') { textOverlayTagline = frontmatterOptions.tagline; } } if (typeof instance.images[index].badge != 'undefined') { var bType = instance.images[index].badge.type; var bAuthor = instance.images[index].badge.author; var bLink = instance.images[index].badge.href; } _this.setState('backstretch_after'); if (typeof instance.images[index].caption != 'undefined') { var cText = instance.images[index].caption.text; var cLink = instance.images[index].caption.href; if (cLink) { $('.attic-caption').html(''+cText+'').show(); } else { $('.attic-caption').text(cText).show(); } } else if (typeof instance.images[index].badge != 'undefined') { if (bType === 'unsplash') { var badgeHTML = '' + '
' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' +bAuthor+ '' + ' ' + '
'; $('.attic-caption').html(badgeHTML).hide(); } } // TODO: Add additional styles to head-title-text|head-tagline (e.g. text-center) textOverlayHTML = '' + '
' + '

' + textOverlayTitle + '

' + '
' + '
' + '

' + textOverlayTagline + '

' + '
'; // hide textOverlay while animate classes are being applied $('.textOverlay').html(textOverlayHTML).hide(); // collect individual title options var title_animate = !!my_attic.title_animate ? my_attic.title_animate : atticOptions.title_animate; var title_animate_delay = !!my_attic.title_animate_delay ? my_attic.title_animate_delay : atticOptions.title_animate_delay; var title_animate_duration = !!my_attic.title_animate_duration ? my_attic.title_animate_duration : atticOptions.title_animate_duration; $('#head-title').addClass(title_animate); $('#head-title').addClass(title_animate_delay); $('#head-title').addClass(title_animate_duration); // collect individual tagline options var tagline_animate = !!my_attic.tagline_animate ? my_attic.tagline_animate : atticOptions.tagline_animate; var tagline_animate_delay = !!my_attic.tagline_animate_delay ? my_attic.tagline_animate_delay : atticOptions.tagline_animate_delay; var tagline_animate_duration = !!my_attic.tagline_animate_duration ? my_attic.tagline_animate_duration : atticOptions.tagline_animate_duration; $('#head-tagline').addClass(tagline_animate); $('#head-tagline').addClass(tagline_animate_delay); $('#head-tagline').addClass(tagline_animate_duration); // show configured textOverlay $('.textOverlay').show(); $('.textOverlay').css('opacity', '1'); // jadams, 2022-08-19: show a badge only if configured if (typeof instance.images[index].badge != 'undefined') { $('.attic-caption').show(); $('.attic-caption').css('opacity', '1'); } // show page if attic finalized $('#no_flicker').css('display', 'block'); // jadams, 2022-08-09: // resize the (background-)image to make sure the 'attic' // container is changed in size (heigth) if title/tagline // expands 'multiline' on small viewports // e.g. on mobile devices // $('#{{attic_id}}').backstretch('resize'); _this.setState('finished'); logger.debug('\n' + 'state: ' + _this.getState()); logger.info('\n' + 'initialize attic on id {{attic_id}}: finished'); logger.info('\n' + 'module initializaton: finished'); endTimeModule = Date.now(); logger.info('\n' + 'module initializing time: ' + (endTimeModule-startTimeModule) + 'ms'); }); // END callback backstretch.after } // END if attic_id exists // run attic found in page: {{attic_id}} if ($('#{{attic_id}}').length) { // apply CSS styles // NOTE: unclear why title_size|tagline_size evaluated to 1 if NOT set // {% for item in attic_options.attics %} {% if item.attic.id == attic_id %} {% assign raised_level = item.attic.raised_level %} {% assign r_text = item.attic.r_text %} {% assign text_emphasis = item.attic.text_emphasis %} {% assign padding_top = item.attic.padding_top %} {% assign padding_bottom = item.attic.padding_bottom %} {% assign padding_bottom = item.attic.padding_bottom %} {% assign margin_bottom = item.attic.margin_bottom %} {% if item.attic.title.size != 1 %} {% assign title_size = item.attic.title.size %} {% endif %} {% assign title_color = item.attic.title.color %} {% assign title_animate = item.attic.title.animate %} {% assign title_align = item.attic.title.align %} {% assign background_color_1 = item.attic.background_color_1 %} {% assign background_color_2 = item.attic.background_color_2 %} {% assign type = item.attic.type %} {% assign slides = item.attic.slides %} {% assign opacity = item.attic.opacity %} {% assign spinner = item.attic.spinner %} {% assign alignX = item.attic.alignX %} {% assign alignY = item.attic.alignY %} {% assign scale = item.attic.scale %} {% assign animateFirst = item.attic.animateFirst %} {% assign paused = item.attic.paused %} {% assign start = item.attic.start %} {% assign preload = item.attic.preload %} {% assign preloadSize = item.attic.preloadSize %} {% assign bypassCss = item.attic.bypassCss %} {% assign transition = item.attic.transition %} {% assign duration = item.attic.duration %} {% assign transitionDuration = item.attic.transitionDuration %} {% assign animateFirst = item.attic.animateFirst %} {% assign sound = item.attic.sound %} // Create and json object for HEADER options taken from // header config (YAML data file) /* eslint-disable */ var atticOptionsHeader = { {% if opacity %} "opacity": {{ opacity | json }}, {% endif %} {% if raised_level %} "raised_level": {{ raised_level | json }}, {% endif %} {% if r_text %} "r_text": {{ r_text | json }}, {% endif %} {% if text_emphasis %} "text_emphasis": {{ text_emphasis | json }}, {% endif %} {% if padding_top %} "padding_top": {{ padding_top | json }}, {% endif %} {% if padding_bottom %} "padding_bottom": {{ padding_bottom | json }}, {% endif %} {% if margin_bottom %} "margin_bottom": {{ margin_bottom | json }}, {% endif %} {% if title_size %} "title_size": {{ title_size | json }}, {% endif %} {% if title_color %} "title_color": {{ title_color | json }}, {% endif %} {% if title_animate %} "title_animate": {{ title_animate | json }}, {% endif %} {% if title_align %} "title_align": {{ title_align | json }}, {% endif %} {% if tagline_size %} "tagline_size": {{ tagline_size | json }}, {% endif %} {% if tagline_color %} "tagline_color": {{ tagline_color | json }}, {% endif %} {% if tagline_animate %} "tagline_animate": {{ tagline_animate | json }}, {% endif %} {% if tagline_align %} "tagline_align": {{ tagline_align | json }}, {% endif %} {% if background_color_1 %} "background_color_1": {{ background_color_1 | json }}, {% endif %} {% if background_color_2 %} "background_color_2": {{ background_color_2 | json }}, {% endif %} } /* eslint-enable */ {% comment %} trans-script header|backstretch options ---------------------------------------------------------------- {% endcomment %} {% if type == 'video' %} {% assign isVideo = true %} {% if sound %} {% assign mute = false %} {% else %} {% assign mute = true %} {% endif %} {% if loop %} {% assign loop = true %} {% else %} {% assign loop = true %} {% endif %} {% endif %} // Create an json object for BACKSTRETCH options taken from // header config (yaml data file) /* eslint-disable */ var atticOptionsBackstretch = { {% if spinner %} "spinner": {{ spinner | json }}, {% endif %} {% if opacity %} "opacity": {{ opacity | json }}, {% endif %} {% if slides %} "slides": {{ slides | json }}, {% endif %} {% if alignX %} "alignX": {{ alignX | json }}, {% endif %} {% if alignY %} "alignY": {{ alignY | json }}, {% endif %} {% if scale %} "scale": {{ scale | json }}, {% endif %} {% if animateFirst %} "animateFirst": {{ animateFirst | json }}, {% endif %} {% if paused %} "paused": {{ paused | json }}, {% endif %} {% if start %} "start": {{ start | json }}, {% endif %} {% if preload %} "preload": {{ preload | json }}, {% endif %} {% if preloadSize %} "preloadSize": {{ preloadSize | json }}, {% endif %} {% if bypassCss %} "bypassCss": {{ bypassCss | json }}, {% endif %} {% if transition %} "transition": {{ transition | json }}, {% endif %} {% if isVideo %} "isVideo": {{ isVideo | json }}, {% endif %} {% if mute %} "mute": {{ mute | json }}, {% endif %} {% if loop %} "loop": {{ loop | json }}, {% endif %} {% if transitionDuration %} "transitionDuration": {{ transitionDuration | json }}, {% endif %} {% if duration %} "duration": {{ duration | json }}, {% endif %} } /* eslint-enable */ // merge|overload Attic OPTIONS // atticOptions = $.extend({}, atticOptions, atticOptionsHeader, atticOptionsBackstretch); // overload Attic OPTIONS by settings from frontmatterOptions // if (frontmatterOptions.background_color_1) atticOptions.background_color_1 = frontmatterOptions.background_color_1; if (frontmatterOptions.background_color_2) atticOptions.background_color_2 = frontmatterOptions.background_color_2; {% else %} {% continue %} {% endif %} // ENDIF attic_id {% endfor %} // ENDFOR item in header_config.attics // frontmatter takes precedence (over header options) // if (frontmatterOptions) { if (typeof frontmatterOptions.raised_level != 'undefined') { atticOptions.raised_level = frontmatterOptions.raised_level; } if (typeof frontmatterOptions.r_text != 'undefined') { atticOptions.r_text = frontmatterOptions.r_text; } if (typeof frontmatterOptions.text_emphasis != 'undefined') { atticOptions.text_emphasis = frontmatterOptions.text_emphasis; } if (typeof frontmatterOptions.padding_top != 'undefined') { atticOptions.padding_top = frontmatterOptions.padding_top; } if (typeof frontmatterOptions.padding_bottom != 'undefined') { atticOptions.padding_bottom = frontmatterOptions.padding_bottom; } if (typeof frontmatterOptions.margin_bottom != 'undefined') { atticOptions.margin_bottom = frontmatterOptions.margin_bottom; } if (typeof frontmatterOptions.title != 'undefined') { if (typeof frontmatterOptions.title.color != 'undefined') { atticOptions.title_color = frontmatterOptions.title.color; } if (typeof frontmatterOptions.title.size != 'undefined') { atticOptions.title_size = frontmatterOptions.title.size; } if (typeof frontmatterOptions.title.animate != 'undefined') { atticOptions.title_animate = frontmatterOptions.title.animate; } if (typeof frontmatterOptions.title.align != 'undefined') { atticOptions.title_align = frontmatterOptions.title.align; } } if (typeof frontmatterOptions.tagline != 'undefined') { if (typeof frontmatterOptions.tagline.color != 'undefined') { atticOptions.tagline_color = frontmatterOptions.tagline.color; } if (typeof frontmatterOptions.tagline.size != 'undefined') { atticOptions.tagline_size = frontmatterOptions.tagline.size; } if (typeof frontmatterOptions.tagline.animate != 'undefined') { atticOptions.tagline_animate = frontmatterOptions.tagline.animate; } if (typeof frontmatterOptions.tagline.align != 'undefined') { atticOptions.tagline_align = frontmatterOptions.tagline.align; } } if (typeof frontmatterOptions.spinner != 'undefined') { atticOptions.spinner = frontmatterOptions.spinner; } if (typeof frontmatterOptions.opacity != 'undefined') { atticOptions.opacity = frontmatterOptions.opacity; } if (typeof frontmatterOptions.alignX != 'undefined') { atticOptions.alignX = frontmatterOptions.alignX; } if (typeof frontmatterOptions.alignY != 'undefined') { atticOptions.alignY = frontmatterOptions.alignY; } if (typeof frontmatterOptions.scale != 'undefined') { atticOptions.scale = frontmatterOptions.scale; } if (typeof frontmatterOptions.start != 'undefined') { atticOptions.start = frontmatterOptions.start; } if (typeof frontmatterOptions.animateFirst != 'undefined') { atticOptions.animateFirst = frontmatterOptions.animateFirst; } if (typeof frontmatterOptions.preload != 'undefined') { atticOptions.preload = frontmatterOptions.preload; } if (typeof frontmatterOptions.preloadSize != 'undefined') { atticOptions.preloadSize = frontmatterOptions.preloadSize; } if (typeof frontmatterOptions.mute != 'undefined') { atticOptions.mute = frontmatterOptions.mute; } if (typeof frontmatterOptions.bypassCss != 'undefined') { atticOptions.bypassCss = frontmatterOptions.bypassCss; } if (typeof frontmatterOptions.isVideo != 'undefined') { atticOptions.isVideo = frontmatterOptions.isVideo; } if (typeof frontmatterOptions.loop != 'undefined') { atticOptions.loop = frontmatterOptions.loop; } if (typeof frontmatterOptions.paused != 'undefined') { atticOptions.paused = frontmatterOptions.paused; } if (typeof frontmatterOptions.transition != 'undefined') { atticOptions.transition = frontmatterOptions.transition; } if (typeof frontmatterOptions.duration != 'undefined') { atticOptions.duration = frontmatterOptions.duration; } if (typeof frontmatterOptions.transitionDuration != 'undefined') { atticOptions.transitionDuration = frontmatterOptions.transitionDuration; } if (typeof frontmatterOptions.slides != 'undefined') { atticOptions.slides = frontmatterOptions.slides; } } // add r-text|raised_level settings // if (atticOptions.r_text === 'enabled') { $('#{{attic_id}}').addClass('r-text'); } var raised_level = 'raised-z' +atticOptions.raised_level; $('#{{attic_id}}').addClass(raised_level); $('#head-title').addClass(atticOptions.title_animate); $('#head-title').addClass(atticOptions.title_animate_delay); $('#head-title').addClass(atticOptions.title_animate_duration); $('#head-tagline').addClass(atticOptions.tagline_animate); $('#head-tagline').addClass(atticOptions.tagline_animate_duration); var text_emphasis = 'text-emphasis-' +atticOptions.text_emphasis; $('#head-title-text').addClass(text_emphasis); $('#head-tagline-text').addClass(text_emphasis); // check if attic should be translated // if (atticOptions.notranslate) { $('#{{attic_id}}').addClass('notranslate'); } // add header CSS styles to // var attic_style = ''; // initialze header background gradient // attic_style += ''; $('head').append(attic_style); // collect individual (title|tagline) options // var my_attic = $.extend({}, {{item.attic | replace: 'nil', 'null' | replace: '=>', ':' }}); var padding_top = !!my_attic.padding_top ? my_attic.padding_top : atticOptions.padding_top; var padding_bottom = !!my_attic.padding_bottom ? my_attic.padding_bottom : atticOptions.padding_bottom; var margin_bottom = !!my_attic.margin_bottom ? my_attic.margin_bottom : atticOptions.margin_bottom; // frontmatter options takes precedence // if (typeof frontmatterOptions.padding_top != 'undefined') { padding_top = frontmatterOptions.padding_top; } if (typeof frontmatterOptions.padding_bottom != 'undefined') { padding_bottom = frontmatterOptions.padding_bottom; } if (typeof frontmatterOptions.margin_bottom != 'undefined') { margin_bottom = frontmatterOptions.margin_bottom; } attic_style = ''; attic_style = ''; $('head').append(attic_style); $('head').append(''); $('head').append(''); // Add opacity to ALL header (backstretch) images // See: https://tympanus.net/codrops/2013/11/07/css-overlay-techniques/ // var item_opacity = !!my_attic.opacity ? my_attic.opacity : atticOptions.opacity; var backstretch_opacity = ''; $('head').append(backstretch_opacity); _this.setState('initialized'); logger.debug('\n' + 'state: ' + _this.getState()); // start RUNNER on page 'ready'|module state 'initialized' // // $(() => { // var dependencies_met_attic_ready = setInterval (() => { // if (_this.getState() === 'initialized') { // logger.info('\n' + 'initialize attic on id {{attic_id}}: started'); // {{attic_id}}_runner (atticOptions); // clearInterval(dependencies_met_attic_ready); // } // }, 10); // }); logger.info('\n' + 'initialize attic on id {{attic_id}}: started'); {{attic_id}}_runner (atticOptions); } // END apply CSS styles|start ATTIC RUNNER {% else %} {% assign attic_id = item.attic.id %} _this.setState('finished'); logger.debug('\n' + 'state: ' + _this.getState()); logger.info('\n' + 'initialize attic on id {{attic_id}}: finished'); logger.info('\n' + 'module initializaton: finished'); // add additional top space if attic disabled // $('#no_flicker').addClass('mt-3'); logger.warn('\n' + 'attic on id {{attic_id}}: disabled'); $('#no_flicker').css('display', 'block'); {% endif %} // END if header enabled {% endfor %} // END for item in header_config.attics // NO header found in page // if ($('#no_header').length) { // _this.setState('completed'); // logger.debug('\n' + 'state: ' + _this.getState()); // logger.warn('\n' + 'no header configured or found in page'); // } return true; }, // END createAllAttics // ------------------------------------------------------------------------- // messageHandler() // manage messages send from other J1 modules // ------------------------------------------------------------------------- messageHandler: (sender, message) => { var json_message = JSON.stringify(message, undefined, 2); logText = '\n' + 'received message from ' + sender + ': ' + json_message; logger.debug(logText); // ----------------------------------------------------------------------- // process commands|actions // ----------------------------------------------------------------------- if (message.type === 'command' && message.action === 'module_initialized') { // // place handling of command|action here // logger.info('\n' + message.text); } // // place handling of other command|action here // return true; }, // END messageHandler // ------------------------------------------------------------------------- // setState() // sets the current (processing) state of the module // ------------------------------------------------------------------------- setState: (stat) => { _this.state = stat; }, // END setState // ------------------------------------------------------------------------- // getState() // Returns the current (processing) state of the module // ------------------------------------------------------------------------- getState: () => { return _this.state; } // END getState }; // END main (return) })(j1, window); {%- endcapture -%} {%- if production -%} {{ cache|minifyJS }} {%- else -%} {{ cache|strip_empty_lines }} {%- endif -%} {%- assign cache = false -%}