toolshed-8.x-1.x-dev/js/screen-events.js
js/screen-events.js
"use strict";
(({
Toolshed: ts
}, {
Toolshed: settings
}) => {
const defaultOpts = {
autoListen: true,
// Register and deregister the event automatically.
debounce: settings.eventDebounce,
passive: true
};
// Initialize the Toolshed global listeners and window objects.
ts.winOffset = {
top: 0,
left: 0
};
ts.winRect = new ts.Geom.Rect(0, 0, window.innerWidth, window.innerHeight);
ts.events = {};
/**
* Create a global event listener for window scroll events.
*
* Toolshed JS scroll event does additional calculations to maintain the
* visibile window space still available to listener items. This helps for
* layouts, dockers and other screen elements that need to know their
* workable space taken by other Toolshed JS libraries.
*
* @type {EventListener}
*/
ts.events.scroll = new ts.EventListener(window, 'scroll', defaultOpts);
ts.events.scroll._run = function _run(e) {
const rect = new ts.Geom.Rect(ts.winRect);
const scroll = {
left: document.documentElement.scrollLeft || document.body.scrollLeft,
top: document.documentElement.scrollTop || document.body.scrollTop
};
this.listeners.call(e, rect, scroll);
};
/**
* Create a global event listener for window resize events.
*
* The global resize event listener is overridden to pass the available
* window size and position to
*
* @type {EventListener}
*/
ts.events.resize = new ts.EventListener(window, 'resize', defaultOpts);
ts.events.resize._run = function _run(e, force = false) {
const right = window.innerWidth || window.clientWidth;
const bottom = window.innerHeight || window.clientHeight;
// Only trigger if the size has changed in some way.
if (ts.winRect.bottom !== bottom || ts.winRect.top !== ts.winOffset.top || ts.winRect.right !== right || ts.winRect.left !== ts.winOffset.left || force) {
ts.winRect.top = ts.winOffset.top;
ts.winRect.left = ts.winOffset.left;
ts.winRect.right = right;
ts.winRect.bottom = bottom;
const rect = new ts.Geom.Rect(ts.winRect);
this.listeners.call(e, rect);
}
};
// Defer creating and using this mql until after the document is ready.
if (settings && settings.breakpoints) {
ts.events.mediaQueries = new ts.MediaQueryListener(settings.breakpoints, defaultOpts);
ts.events.mediaQueries.listen();
}
/**
* When the DOM is ready, start listening for the MediaQuery events
* and keep track of the offset created by the admin too bar.
*/
document.addEventListener('drupalViewportOffsetChange.toolbar', () => {
const toolbar = document.getElementById('toolbar-bar');
if (toolbar) {
const tooltray = toolbar.querySelector('.toolbar-tray.is-active');
ts.winOffset.top = document.body.classList.contains('toolbar-fixed') ? toolbar.clientHeight : 0;
if (tooltray) {
if (tooltray.classList.contains('toolbar-tray-horizontal')) ts.winOffset.top += tooltray.clientHeight;else if (tooltray.classList.contains('toolbar-tray-vertical')) ts.winOffset.left = tooltray.clientWidth;
}
}
ts.events.resize.trigger();
});
// Run the initial resize callback if the toolbar has already loaded.
const toolbar = document.getElementById('toolbar-bar');
if (toolbar && toolbar.clientHeight) {
document.dispatchEvent(new Event('drupalViewportOffsetChange.toolbar'));
}
})(Drupal, drupalSettings);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLWV2ZW50cy5qcyIsIm5hbWVzIjpbIlRvb2xzaGVkIiwidHMiLCJzZXR0aW5ncyIsImRlZmF1bHRPcHRzIiwiYXV0b0xpc3RlbiIsImRlYm91bmNlIiwiZXZlbnREZWJvdW5jZSIsInBhc3NpdmUiLCJ3aW5PZmZzZXQiLCJ0b3AiLCJsZWZ0Iiwid2luUmVjdCIsIkdlb20iLCJSZWN0Iiwid2luZG93IiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwiZXZlbnRzIiwic2Nyb2xsIiwiRXZlbnRMaXN0ZW5lciIsIl9ydW4iLCJlIiwicmVjdCIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsTGVmdCIsImJvZHkiLCJzY3JvbGxUb3AiLCJsaXN0ZW5lcnMiLCJjYWxsIiwicmVzaXplIiwiZm9yY2UiLCJyaWdodCIsImNsaWVudFdpZHRoIiwiYm90dG9tIiwiY2xpZW50SGVpZ2h0IiwiYnJlYWtwb2ludHMiLCJtZWRpYVF1ZXJpZXMiLCJNZWRpYVF1ZXJ5TGlzdGVuZXIiLCJsaXN0ZW4iLCJhZGRFdmVudExpc3RlbmVyIiwidG9vbGJhciIsImdldEVsZW1lbnRCeUlkIiwidG9vbHRyYXkiLCJxdWVyeVNlbGVjdG9yIiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJ0cmlnZ2VyIiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50IiwiRHJ1cGFsIiwiZHJ1cGFsU2V0dGluZ3MiXSwic291cmNlcyI6WyJzY3JlZW4tZXZlbnRzLmVzNi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoKHsgVG9vbHNoZWQ6IHRzIH0sIHsgVG9vbHNoZWQ6IHNldHRpbmdzIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdHMgPSB7XG4gICAgYXV0b0xpc3RlbjogdHJ1ZSwgLy8gUmVnaXN0ZXIgYW5kIGRlcmVnaXN0ZXIgdGhlIGV2ZW50IGF1dG9tYXRpY2FsbHkuXG4gICAgZGVib3VuY2U6IHNldHRpbmdzLmV2ZW50RGVib3VuY2UsXG4gICAgcGFzc2l2ZTogdHJ1ZSxcbiAgfTtcblxuICAvLyBJbml0aWFsaXplIHRoZSBUb29sc2hlZCBnbG9iYWwgbGlzdGVuZXJzIGFuZCB3aW5kb3cgb2JqZWN0cy5cbiAgdHMud2luT2Zmc2V0ID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcbiAgdHMud2luUmVjdCA9IG5ldyB0cy5HZW9tLlJlY3QoMCwgMCwgd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCk7XG4gIHRzLmV2ZW50cyA9IHt9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBnbG9iYWwgZXZlbnQgbGlzdGVuZXIgZm9yIHdpbmRvdyBzY3JvbGwgZXZlbnRzLlxuICAgKlxuICAgKiBUb29sc2hlZCBKUyBzY3JvbGwgZXZlbnQgZG9lcyBhZGRpdGlvbmFsIGNhbGN1bGF0aW9ucyB0byBtYWludGFpbiB0aGVcbiAgICogdmlzaWJpbGUgd2luZG93IHNwYWNlIHN0aWxsIGF2YWlsYWJsZSB0byBsaXN0ZW5lciBpdGVtcy4gVGhpcyBoZWxwcyBmb3JcbiAgICogbGF5b3V0cywgZG9ja2VycyBhbmQgb3RoZXIgc2NyZWVuIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBrbm93IHRoZWlyXG4gICAqIHdvcmthYmxlIHNwYWNlIHRha2VuIGJ5IG90aGVyIFRvb2xzaGVkIEpTIGxpYnJhcmllcy5cbiAgICpcbiAgICogQHR5cGUge0V2ZW50TGlzdGVuZXJ9XG4gICAqL1xuICB0cy5ldmVudHMuc2Nyb2xsID0gbmV3IHRzLkV2ZW50TGlzdGVuZXIod2luZG93LCAnc2Nyb2xsJywgZGVmYXVsdE9wdHMpO1xuICB0cy5ldmVudHMuc2Nyb2xsLl9ydW4gPSBmdW5jdGlvbiBfcnVuKGUpIHtcbiAgICBjb25zdCByZWN0ID0gbmV3IHRzLkdlb20uUmVjdCh0cy53aW5SZWN0KTtcbiAgICBjb25zdCBzY3JvbGwgPSB7XG4gICAgICBsZWZ0OiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsXG4gICAgICB0b3A6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AsXG4gICAgfTtcblxuICAgIHRoaXMubGlzdGVuZXJzLmNhbGwoZSwgcmVjdCwgc2Nyb2xsKTtcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgZ2xvYmFsIGV2ZW50IGxpc3RlbmVyIGZvciB3aW5kb3cgcmVzaXplIGV2ZW50cy5cbiAgICpcbiAgICogVGhlIGdsb2JhbCByZXNpemUgZXZlbnQgbGlzdGVuZXIgaXMgb3ZlcnJpZGRlbiB0byBwYXNzIHRoZSBhdmFpbGFibGVcbiAgICogd2luZG93IHNpemUgYW5kIHBvc2l0aW9uIHRvXG4gICAqXG4gICAqIEB0eXBlIHtFdmVudExpc3RlbmVyfVxuICAgKi9cbiAgdHMuZXZlbnRzLnJlc2l6ZSA9IG5ldyB0cy5FdmVudExpc3RlbmVyKHdpbmRvdywgJ3Jlc2l6ZScsIGRlZmF1bHRPcHRzKTtcbiAgdHMuZXZlbnRzLnJlc2l6ZS5fcnVuID0gZnVuY3Rpb24gX3J1bihlLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgcmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCB3aW5kb3cuY2xpZW50V2lkdGg7XG4gICAgY29uc3QgYm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IHx8IHdpbmRvdy5jbGllbnRIZWlnaHQ7XG5cbiAgICAvLyBPbmx5IHRyaWdnZXIgaWYgdGhlIHNpemUgaGFzIGNoYW5nZWQgaW4gc29tZSB3YXkuXG4gICAgaWYgKHRzLndpblJlY3QuYm90dG9tICE9PSBib3R0b21cbiAgICAgIHx8IHRzLndpblJlY3QudG9wICE9PSB0cy53aW5PZmZzZXQudG9wXG4gICAgICB8fCB0cy53aW5SZWN0LnJpZ2h0ICE9PSByaWdodFxuICAgICAgfHwgdHMud2luUmVjdC5sZWZ0ICE9PSB0cy53aW5PZmZzZXQubGVmdFxuICAgICAgfHwgZm9yY2VcbiAgICApIHtcbiAgICAgIHRzLndpblJlY3QudG9wID0gdHMud2luT2Zmc2V0LnRvcDtcbiAgICAgIHRzLndpblJlY3QubGVmdCA9IHRzLndpbk9mZnNldC5sZWZ0O1xuICAgICAgdHMud2luUmVjdC5yaWdodCA9IHJpZ2h0O1xuICAgICAgdHMud2luUmVjdC5ib3R0b20gPSBib3R0b207XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBuZXcgdHMuR2VvbS5SZWN0KHRzLndpblJlY3QpO1xuICAgICAgdGhpcy5saXN0ZW5lcnMuY2FsbChlLCByZWN0KTtcbiAgICB9XG4gIH07XG5cbiAgLy8gRGVmZXIgY3JlYXRpbmcgYW5kIHVzaW5nIHRoaXMgbXFsIHVudGlsIGFmdGVyIHRoZSBkb2N1bWVudCBpcyByZWFkeS5cbiAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLmJyZWFrcG9pbnRzKSB7XG4gICAgdHMuZXZlbnRzLm1lZGlhUXVlcmllcyA9IG5ldyB0cy5NZWRpYVF1ZXJ5TGlzdGVuZXIoXG4gICAgICBzZXR0aW5ncy5icmVha3BvaW50cyxcbiAgICAgIGRlZmF1bHRPcHRzLFxuICAgICk7XG5cbiAgICB0cy5ldmVudHMubWVkaWFRdWVyaWVzLmxpc3RlbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gdGhlIERPTSBpcyByZWFkeSwgc3RhcnQgbGlzdGVuaW5nIGZvciB0aGUgTWVkaWFRdWVyeSBldmVudHNcbiAgICogYW5kIGtlZXAgdHJhY2sgb2YgdGhlIG9mZnNldCBjcmVhdGVkIGJ5IHRoZSBhZG1pbiB0b28gYmFyLlxuICAgKi9cbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJ1cGFsVmlld3BvcnRPZmZzZXRDaGFuZ2UudG9vbGJhcicsICgpID0+IHtcbiAgICBjb25zdCB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xiYXItYmFyJyk7XG5cbiAgICBpZiAodG9vbGJhcikge1xuICAgICAgY29uc3QgdG9vbHRyYXkgPSB0b29sYmFyLnF1ZXJ5U2VsZWN0b3IoJy50b29sYmFyLXRyYXkuaXMtYWN0aXZlJyk7XG5cbiAgICAgIHRzLndpbk9mZnNldC50b3AgPSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygndG9vbGJhci1maXhlZCcpID8gdG9vbGJhci5jbGllbnRIZWlnaHQgOiAwO1xuXG4gICAgICBpZiAodG9vbHRyYXkpIHtcbiAgICAgICAgaWYgKHRvb2x0cmF5LmNsYXNzTGlzdC5jb250YWlucygndG9vbGJhci10cmF5LWhvcml6b250YWwnKSkgdHMud2luT2Zmc2V0LnRvcCArPSB0b29sdHJheS5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGVsc2UgaWYgKHRvb2x0cmF5LmNsYXNzTGlzdC5jb250YWlucygndG9vbGJhci10cmF5LXZlcnRpY2FsJykpIHRzLndpbk9mZnNldC5sZWZ0ID0gdG9vbHRyYXkuY2xpZW50V2lkdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHMuZXZlbnRzLnJlc2l6ZS50cmlnZ2VyKCk7XG4gIH0pO1xuXG4gIC8vIFJ1biB0aGUgaW5pdGlhbCByZXNpemUgY2FsbGJhY2sgaWYgdGhlIHRvb2xiYXIgaGFzIGFscmVhZHkgbG9hZGVkLlxuICBjb25zdCB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xiYXItYmFyJyk7XG4gIGlmICh0b29sYmFyICYmIHRvb2xiYXIuY2xpZW50SGVpZ2h0KSB7XG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2RydXBhbFZpZXdwb3J0T2Zmc2V0Q2hhbmdlLnRvb2xiYXInKSk7XG4gIH1cbn0pKERydXBhbCwgZHJ1cGFsU2V0dGluZ3MpO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLENBQUMsQ0FBQztFQUFFQSxRQUFRLEVBQUVDO0FBQUcsQ0FBQyxFQUFFO0VBQUVELFFBQVEsRUFBRUU7QUFBUyxDQUFDLEtBQUs7RUFDN0MsTUFBTUMsV0FBVyxHQUFHO0lBQ2xCQyxVQUFVLEVBQUUsSUFBSTtJQUFFO0lBQ2xCQyxRQUFRLEVBQUVILFFBQVEsQ0FBQ0ksYUFBYTtJQUNoQ0MsT0FBTyxFQUFFO0VBQ1gsQ0FBQzs7RUFFRDtFQUNBTixF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
