Current File : /home/resuelf/www/wp-content/plugins/q2w3-fixed-widget/js/frontend.js |
'use strict';
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var reactive = function (getter, interval) {
if (interval === void 0) { interval = 300; }
var subs = [];
var v = getter();
var interval_id = setInterval(check, interval);
function check() {
if (subs.length === 0) {
return;
}
var new_v = getter();
if (v === new_v ||
typeof v === 'object' && JSON.stringify(v) === JSON.stringify(new_v)) {
return;
}
v = new_v;
for (var _i = 0, subs_1 = subs; _i < subs_1.length; _i++) {
var update = subs_1[_i];
update(new_v);
}
}
return {
get val() {
return v;
},
on_change: function (update) {
update(v);
subs.push(update);
},
clear: function () {
clearInterval(interval_id);
}
};
};
var StaticOffsets = (function () {
function StaticOffsets(el, get_root_offset, need_to_calc_offset, get_prev_sibling) {
if (el === void 0) { el = null; }
if (get_root_offset === void 0) { get_root_offset = function () { return Math.round(scrollY + (_this.el ? _this.el.getBoundingClientRect().top : 0)); }; }
if (need_to_calc_offset === void 0) { need_to_calc_offset = function () { return false; }; }
if (get_prev_sibling === void 0) { get_prev_sibling = function () { return null; }; }
var _this = this;
this.el = el;
this.get_root_offset = get_root_offset;
this.need_to_calc_offset = need_to_calc_offset;
this.get_prev_sibling = get_prev_sibling;
this.user_margins = {};
this.root = 0;
this.top = 0;
this.get_top_offset = function () {
return _this.get_sibilings_offset(_this.get_prev_sibling, _this.get_prev_sibling(_this.el), _this.user_margins.margin_top);
};
}
StaticOffsets.prototype.init = function (user_margins) {
var _this = this;
this.user_margins = user_margins;
this.top_watcher = reactive(this.get_top_offset);
this.top_watcher.on_change(function (top) {
_this.top = top;
});
this.root_watcher = reactive(this.get_root_offset);
this.root_watcher.on_change(function (root) {
_this.root = root;
});
};
StaticOffsets.prototype.clear = function () {
this.top_watcher && this.top_watcher.clear();
this.root_watcher && this.root_watcher.clear();
};
StaticOffsets.prototype.update = function () { };
StaticOffsets.prototype.get_sibilings_offset = function (next, el, offset) {
if (offset === void 0) { offset = 0; }
if (!el) {
return offset;
}
if (!this.need_to_calc_offset(el)) {
return this.get_sibilings_offset(next, next(el), offset);
}
var _a = getComputedStyle(el), marginTop = _a.marginTop, marginBottom = _a.marginBottom;
return this.get_sibilings_offset(next, next(el), offset + el.getBoundingClientRect().height + parseInt(marginTop || '0') + parseInt(marginBottom || '0'));
};
return StaticOffsets;
}());
var DynamicOffsets = (function (_super) {
__extends(DynamicOffsets, _super);
function DynamicOffsets(el, get_root_offset, need_to_calc_offset, get_prev_sibling, get_next_sibling) {
if (el === void 0) { el = null; }
if (need_to_calc_offset === void 0) { need_to_calc_offset = function () { return false; }; }
if (get_prev_sibling === void 0) { get_prev_sibling = function () { return null; }; }
if (get_next_sibling === void 0) { get_next_sibling = function () { return null; }; }
var _this = _super.call(this, el, get_root_offset, need_to_calc_offset, get_prev_sibling) || this;
_this.get_next_sibling = get_next_sibling;
_this.bottom = 0;
_this.max_top_offset = 0;
_this.relative_top = 0;
_this.height = 0;
_this.position = { top: 0, bottom: 0 };
_this.border_box = 0;
_this.get_height = function () {
return !_this.el ? 0 :
Math.round(Math.max(_this.el.clientHeight, _this.el.getBoundingClientRect().height));
};
_this.get_bottom_offset = function () {
return _this.get_sibilings_offset(_this.get_next_sibling, _this.get_next_sibling(_this.el), _this.user_margins.margin_bottom);
};
return _this;
}
DynamicOffsets.prototype.init = function (user_margins) {
var _this = this;
_super.prototype.init.call(this, user_margins);
this.height_watcher = reactive(this.get_height);
this.height_watcher.on_change(function (height) {
_this.height = height;
_this.border_box = _this.get_border_box();
_this.relative_top = _this.get_relative_top();
});
this.bottom_offset = reactive(this.get_bottom_offset);
this.bottom_offset.on_change(function (bottom) {
_this.bottom = bottom;
_this.relative_top = _this.get_relative_top();
});
};
DynamicOffsets.prototype.clear = function () {
_super.prototype.clear.call(this);
this.height_watcher && this.height_watcher.clear();
this.bottom_offset && this.bottom_offset.clear();
};
DynamicOffsets.prototype.update = function () {
this.position = this.get_position();
};
DynamicOffsets.prototype.set_max_offset = function (max_top_offset) {
this.max_top_offset = max_top_offset;
this.relative_top = this.get_relative_top();
};
DynamicOffsets.prototype.get_position = function () {
if (!this.el || !this.el.parentElement) {
return { top: 0, bottom: 0 };
}
return {
top: this.el.offsetTop,
bottom: this.el.parentElement.clientHeight - this.el.offsetTop - this.border_box
};
};
DynamicOffsets.prototype.get_border_box = function () {
if (!this.el) {
return 0;
}
var _a = getComputedStyle(this.el), marginTop = _a.marginTop, marginBottom = _a.marginBottom;
return this.height + parseInt(marginTop) + parseInt(marginBottom);
};
DynamicOffsets.prototype.get_relative_top = function () {
return this.max_top_offset - this.border_box - this.bottom;
};
return DynamicOffsets;
}(StaticOffsets));
var StopWidgetClassName = 'FixedWidget__stop_widget';
var FixedWidgetClassName = 'FixedWidget__fixed_widget';
var FixedWidgetPinnedClassName = 'FixedWidget__fixed_widget__pinned';
var BaseWidget = (function () {
function BaseWidget(el) {
var _this = this;
this.el = el;
this.get_root_offset = function () { return Math.round(scrollY + (_this.el ? _this.el.getBoundingClientRect().top : 0)); };
this.need_to_calc_el_offset = function (_) { return false; };
this.offsets = new StaticOffsets(this.el, this.get_root_offset);
}
BaseWidget.prototype.mount = function (user_margins) {
if (user_margins === void 0) { user_margins = {}; }
this.offsets.init(user_margins);
};
BaseWidget.prototype.render = function (_reject) {
this.offsets.update();
};
BaseWidget.prototype.unmount = function () {
this.offsets.clear();
};
BaseWidget.prototype.getElement = function () {
return this.el;
};
BaseWidget.prototype.toString = function () {
var _a;
return "".concat((_a = this.el) === null || _a === void 0 ? void 0 : _a.innerHTML);
};
BaseWidget.queryAllWidgetsContainers = function (className) {
return []
.concat(Array.from(document.querySelectorAll(".".concat(className))), Array.from(document.querySelectorAll("[data-fixed_widget=".concat(className))))
.map(function (el) {
el.classList.remove(className);
el.removeAttribute('data-fixed_widget');
var container = getWidgetContainer(el);
container.classList.remove(FixedWidgetClassName);
container.classList.remove(StopWidgetClassName);
return container;
});
};
BaseWidget.from = function (root, className) {
var _this = this;
var elements = [];
try {
elements = Array.from(root.querySelectorAll(":scope > .".concat(className)));
}
catch (_e) {
elements = Array.from(root.children).filter(function (e) { return e.classList.contains(className); });
}
return elements
.filter(function (el) { return el !== null; })
.map(function (e) { return new _this(e); });
};
return BaseWidget;
}());
var getWidgetContainer = function (el) {
if (!el.parentElement) {
return el;
}
var parentClassNames = el.parentElement.classList.toString();
if (parentClassNames.includes('sidebar')) {
return el;
}
return (parentClassNames.includes('wp-block-group') ||
parentClassNames.includes('wp-block-column') ||
el.parentElement.classList.contains('widget')) ? getWidgetContainer(el.parentElement) : el;
};
var findIntersections = function (arr1, arr2) {
return [
arr2.filter(function (e) { return !arr1.includes(e); }),
arr1.filter(function (e) { return arr2.includes(e); }),
];
};
var splitSelectors = function (s) {
if (s === void 0) { s = ''; }
return s.replace(/[\r\n]|[\r]/gi, '\n')
.split('\n')
.map(function (s) { return s.trim(); })
.filter(function (s) { return s !== ''; });
};
var compatabilty_FW_v5 = function (selectors) {
if (selectors === void 0) { selectors = []; }
if (selectors.some(function (s) { return !/^[a-z]/i.test(s); })) {
return selectors;
}
return selectors.concat(selectors.map(function (s) { return "#".concat(s); }));
};
var queryElements = function (selectors) {
if (selectors === void 0) { selectors = []; }
return Array.from((selectors)
.map(function (selector) { return Array.from(document.querySelectorAll(selector)); }))
.reduce(function (all, elements) { return all.concat(elements); }, [])
.filter(function (e) { return e instanceof HTMLElement; });
};
function findWithProperty(el, predicate) {
if (!el || el === document.body) {
return null;
}
if (predicate(getComputedStyle(el))) {
return el;
}
return findWithProperty(el.parentElement, predicate);
}
var PositionWidget = (function (_super) {
__extends(PositionWidget, _super);
function PositionWidget(el) {
var _this = _super.call(this, el) || this;
_this.is_pinned = false;
_this.init_rect = {
height: 0,
width: 0,
};
_this.init_style = {
position: 'static',
marginBottom: '',
transition: '',
transform: '',
marginTop: '',
padding: '',
width: '',
top: ''
};
_this.get_prev_sibling = function (el) {
return el
&& !el.classList.contains(StopWidgetClassName)
&& el.previousElementSibling
|| null;
};
_this.get_next_sibling = function (el) { return el && !el.classList.contains(StopWidgetClassName) ? el.nextElementSibling : null; };
_this.need_to_calc_el_offset = function (el) {
return el.classList.contains(FixedWidgetClassName);
};
_this.offsets = new DynamicOffsets(_this.el, _this.get_root_offset, _this.need_to_calc_el_offset, _this.get_prev_sibling, _this.get_next_sibling);
return _this;
}
PositionWidget.prototype.mount = function (user_margins) {
var _this = this;
_super.prototype.mount.call(this, user_margins);
if (!this.el || !this.el.parentElement) {
return;
}
this.store_style(getComputedStyle(this.el));
this.store_rect(this.el);
this.height_watcher = reactive(function () { return _this.el ? _this.el.getBoundingClientRect().height : 0; });
};
PositionWidget.prototype.unmount = function () {
var _a;
_super.prototype.unmount.call(this);
this.unpin();
(_a = this.height_watcher) === null || _a === void 0 ? void 0 : _a.clear();
this.reset_style();
this.reset_rect();
};
PositionWidget.prototype.reset_style = function () {
if (!this.el) {
return;
}
for (var prop in this.init_style) {
this.el.style[prop] = '';
}
this.init_style = {
position: 'static',
marginBottom: '',
transition: '',
transform: '',
marginTop: '',
padding: '',
width: '',
top: '',
};
};
PositionWidget.prototype.reset_rect = function () {
if (!this.el) {
return;
}
for (var prop in this.init_rect) {
this.el.style[prop] = '';
}
this.init_rect = {
height: 0,
width: 0,
};
};
PositionWidget.prototype.render = function (reject) {
_super.prototype.render.call(this, reject);
this.on_scroll(Math.round(scrollY), reject);
};
PositionWidget.from = function (root) {
return _super.from.call(this, root, FixedWidgetClassName);
};
PositionWidget.prototype.on_scroll = function (_scroll_top, _reject) {
throw new Error('Method is not overridden!');
};
PositionWidget.prototype.pin = function () {
if (this.is_pinned || !this.el) {
return;
}
this.is_pinned = true;
this.el.classList.add(FixedWidgetPinnedClassName);
};
PositionWidget.prototype.unpin = function () {
if (!this.is_pinned || !this.el) {
return;
}
this.is_pinned = false;
this.el.classList.remove(FixedWidgetPinnedClassName);
};
PositionWidget.prototype.store_style = function (style) {
for (var prop in this.init_style) {
this.init_style[prop] = style[prop];
}
if (this.init_style.position === 'relative') {
this.init_style.position = 'static';
}
};
PositionWidget.prototype.set_style = function (style) {
var _this = this;
Object.entries(style).forEach(function (_a) {
var prop = _a[0], rule = _a[1];
if (_this.el) {
_this.el.style[prop] = rule;
}
});
};
PositionWidget.prototype.store_rect = function (el) {
if (!el) {
return;
}
var r = el.getBoundingClientRect();
var style = getComputedStyle(el);
if (style.boxSizing == 'content-box') {
r.height = r.height
- parseInt(style.paddingTop, 10)
- parseInt(style.paddingBottom, 10)
- parseInt(style.borderTopWidth, 10)
- parseInt(style.borderBottomWidth, 10);
r.width = r.width
- parseInt(style.paddingLeft, 10)
- parseInt(style.paddingRight, 10)
- parseInt(style.borderLeftWidth, 10)
- parseInt(style.borderRightWidth, 10);
}
var rect = {
height: r.height,
width: r.width,
};
for (var prop in this.init_rect) {
this.init_rect[prop] = rect[prop];
}
};
PositionWidget.prototype.restore_style = function () {
if (!this.el) {
return;
}
for (var prop in this.init_style) {
this.el.style[prop] = this.init_style[prop];
}
};
PositionWidget.prototype.restore_rect = function () {
if (!this.el) {
return;
}
for (var prop in this.init_rect) {
this.el.style[prop] = "".concat(this.init_rect[prop], "px");
}
};
return PositionWidget;
}(BaseWidget));
var FixedWidget = (function (_super) {
__extends(FixedWidget, _super);
function FixedWidget(el) {
var _this = _super.call(this, el) || this;
_this.get_root_offset = function () {
if (!_this.el) {
return Number.MAX_VALUE;
}
var top = _this.el.getBoundingClientRect().top;
var new_root_offset = Math.round(scrollY + top);
if (scrollY == 0) {
return new_root_offset;
}
return (_this.is_pinned ? Math.min : Math.max)(_this.offsets.root, new_root_offset);
};
_this.need_to_calc_el_offset = function (el) {
return el.classList.contains(FixedWidgetClassName) &&
el !== _this.el;
};
if (!_this.el || !_this.el.parentElement) {
return _this;
}
_this.el.classList.add(FixedWidgetClassName);
return _this;
}
FixedWidget.prototype.mount = function (margins) {
var _this = this;
_super.prototype.mount.call(this, margins);
if (!this.el) {
return;
}
this.clone();
this.offsets.clear();
this.offsets = new DynamicOffsets(this.clone_el, this.get_root_offset, this.need_to_calc_el_offset, this.get_prev_sibling, this.get_next_sibling);
this.offsets.init(margins);
this.height_watcher && this.height_watcher.on_change(function () {
_this.store_rect(_this.el);
if (_this.clone_el && _this.el) {
_this.clone_el.style.height = "".concat(_this.init_rect.height, "px");
}
});
};
FixedWidget.prototype.unmount = function () {
var _a;
_super.prototype.unmount.call(this);
(_a = this.clone_el) === null || _a === void 0 ? void 0 : _a.remove();
this.clone_el = void 0;
};
FixedWidget.prototype.set_max_offset = function (max_top_offsets) {
var _this = this;
var max_top_offset = max_top_offsets.find(function (offset) {
return offset !== 0 && offset > _this.offsets.root;
});
if (!max_top_offset) {
return;
}
this.offsets.set_max_offset(max_top_offset);
};
FixedWidget.prototype.on_scroll = function (scroll_top) {
if (!this.el) {
return;
}
var need_to_fix = scroll_top > 0 && (scroll_top > this.offsets.root - this.offsets.top);
var limited_by_stop_element = this.offsets.max_top_offset !== 0 && scroll_top > this.offsets.relative_top - this.offsets.top;
var top = limited_by_stop_element ? this.offsets.relative_top - scroll_top : this.offsets.top;
if (need_to_fix) {
this.fix(top);
return;
}
if (!this.is_pinned) {
return;
}
this.unpin();
this.restore_style();
if (this.clone_el) {
this.clone_el.style.display = 'none';
}
};
FixedWidget.prototype.clone = function () {
var _this = this;
if (!this.el || !this.el.parentElement || this.clone_el) {
return;
}
this.clone_el = this.el.cloneNode(false);
this.clone_el.getAttributeNames().forEach(function (attr) {
_this.clone_el.removeAttribute(attr);
});
for (var prop in this.init_style) {
this.clone_el.style[prop] = this.init_style[prop];
}
this.clone_el.style.display = 'none';
this.el.parentElement.insertBefore(this.clone_el, this.el);
};
FixedWidget.prototype.fix = function (top) {
if (!this.el) {
return;
}
if (this.is_pinned) {
this.el.style.top = "".concat(top, "px");
return;
}
this.pin();
this.restore_style();
this.restore_rect();
this.set_style({
top: "".concat(top, "px"),
position: 'fixed'
});
if (!this.clone_el) {
return;
}
this.clone_el.style.display = 'block';
};
FixedWidget.new = function (selector) {
return new FixedWidget(document.querySelector(selector));
};
FixedWidget.is = function (selector) {
var el = document.querySelector(selector);
return !!el && el.classList.contains(FixedWidgetClassName);
};
return FixedWidget;
}(PositionWidget));
var StickyWidget = (function (_super) {
__extends(StickyWidget, _super);
function StickyWidget(el) {
var _this = _super.call(this, el) || this;
_this.borderBox = 0;
_this.margins = 0;
if (!_this.el || !_this.el.parentElement) {
return _this;
}
_this.el.classList.add(FixedWidgetClassName);
return _this;
}
StickyWidget.prototype.mount = function (margins) {
_super.prototype.mount.call(this, margins);
if (!this.el) {
return;
}
this.el.style.position = 'sticky';
this.el.style.position = '-webkit-sticky';
this.el.style.transition = /all|transform/.test(this.init_style.transition) ? this.init_style.transition : 'transform 0s';
this.el.style.boxSizing = 'border-box';
};
StickyWidget.prototype.set_max_offset = function (max_top_offsets) {
var _this = this;
if (!this.el || !this.el.parentElement) {
return;
}
var max_top_offset = max_top_offsets.find(function (offset) {
return _this.el && (offset > _this.el.offsetTop);
});
if (!max_top_offset) {
return;
}
this.offsets.set_max_offset(max_top_offset);
};
StickyWidget.prototype.on_scroll = function (_scroll_top, _reject) {
if (!this.el || !this.el.parentElement) {
return;
}
(this.offsets.position.top > this.offsets.top) ? this.pin() : this.unpin();
var actual_bottom = this.offsets.position.bottom;
var expected_bottom = this.offsets.max_top_offset ?
Math.min(this.offsets.max_top_offset - (this.el.parentElement.clientHeight - actual_bottom), actual_bottom)
: this.offsets.bottom;
this.el.style.top = "".concat(this.offsets.top, "px");
if (expected_bottom >= this.offsets.bottom) {
this.el.style.transform = "translateY(0px)";
return;
}
this.el.style.transform = "translateY(".concat(expected_bottom - this.offsets.bottom, "px)");
};
StickyWidget.new = function (selector) {
return new StickyWidget(document.querySelector(selector));
};
StickyWidget.is = function (selector) {
var el = document.querySelector(selector);
return !!el && el.classList.contains(FixedWidgetClassName);
};
return StickyWidget;
}(PositionWidget));
var StopWidget = (function (_super) {
__extends(StopWidget, _super);
function StopWidget(el) {
var _this = _super.call(this, el) || this;
_this.need_to_calc_el_offset = function () { return true; };
if (!_this.el || !_this.el.parentElement) {
return _this;
}
_this.el.classList.add(StopWidgetClassName);
return _this;
}
StopWidget.new = function (selector) {
return new StopWidget(document.querySelector(selector));
};
StopWidget.is = function (selector) {
var el = document.querySelector(selector);
return !!el && el.classList.contains(StopWidgetClassName);
};
StopWidget.from = function (root) {
return _super.from.call(this, root, StopWidgetClassName);
};
return StopWidget;
}(BaseWidget));
var Sidebar = (function () {
function Sidebar(el, margins, use_sticky_position) {
if (use_sticky_position === void 0) { use_sticky_position = false; }
var _this = this;
this.el = el;
this.margins = margins;
this.widgets = [];
this.stop_widgets = [];
this.isSticky = false;
this.setWidgetsMaxOffset = function (max_offsets) {
for (var _i = 0, _a = _this.widgets; _i < _a.length; _i++) {
var widget = _a[_i];
widget.set_max_offset(max_offsets);
}
_this.render();
};
this.logWidgetRenderError = function () {
console.log("Fixed Widget: fallback to position sticky");
};
this.onWidgetRenderError = function (w) {
_this.logWidgetRenderError();
if (!(w instanceof StickyWidget)) {
return;
}
w.unmount();
var i = _this.widgets.findIndex(function (widget) { return w === widget; });
var widget = new FixedWidget(w.getElement());
widget.mount(_this.margins);
widget.render(_this.logWidgetRenderError);
_this.widgets[i] = widget;
};
var isDeprecatedFloatMarkup = !!findWithProperty(this.el, function (style) { return style.float !== 'none'; });
var isOverflowHiddenMarkup = !!findWithProperty(this.el, function (style) { return style.overflow === 'hidden'; });
var isFallbackToSticky = (isDeprecatedFloatMarkup || isOverflowHiddenMarkup) && use_sticky_position;
isFallbackToSticky && console.log('Fixed Widget: fallback to position sticky');
this.isSticky =
!isDeprecatedFloatMarkup &&
!isOverflowHiddenMarkup &&
use_sticky_position;
var WidgetContructor = this.isSticky ? StickyWidget : FixedWidget;
this.stop_widgets = StopWidget.from(this.el);
this.widgets = WidgetContructor.from(this.el);
this.offsets = new DynamicOffsets(this.el);
if (!this.isSticky) {
return;
}
this.el.style.position = 'relative';
if (this.stop_widgets.length !== 0) {
return;
}
this.el.style.minHeight = '100%';
}
Sidebar.prototype.mount = function () {
var _this = this;
this.offsets.clear();
this.max_offset_watcher && this.max_offset_watcher.clear();
this.offsets.init(this.margins);
this.stop_widgets.forEach(function (widget) { widget.mount(); });
this.widgets.forEach(function (widget) { widget.mount(_this.margins); });
this.widgets = this.widgets.sort(function (a, b) { return a.offsets.root - b.offsets.root; });
};
Sidebar.prototype.set_max_offset = function (general_stop_widgets) {
var is_local_stop_widgets = this.stop_widgets.length != 0;
var use_top_offset = this.isSticky && is_local_stop_widgets;
var stop_widgets = is_local_stop_widgets ? this.stop_widgets : general_stop_widgets;
this.max_offset_watcher = reactive(function () {
if (stop_widgets.length === 0) {
return [Math.round(document.body.scrollHeight)];
}
return stop_widgets
.map(function (widget) { return Math.round(use_top_offset ? widget.offsets.top : widget.offsets.root); })
.sort();
});
this.max_offset_watcher.on_change(this.setWidgetsMaxOffset);
};
Sidebar.prototype.render = function () {
for (var _i = 0, _a = this.stop_widgets; _i < _a.length; _i++) {
var stop_widget = _a[_i];
stop_widget.render(this.logWidgetRenderError);
}
for (var _b = 0, _c = this.widgets; _b < _c.length; _b++) {
var widget = _c[_b];
widget.render(this.onWidgetRenderError);
}
};
Sidebar.prototype.unmount = function () {
for (var _i = 0, _a = this.stop_widgets; _i < _a.length; _i++) {
var stop_widget = _a[_i];
stop_widget.unmount();
}
for (var _b = 0, _c = this.widgets; _b < _c.length; _b++) {
var widget = _c[_b];
widget.unmount();
}
};
return Sidebar;
}());
var Sidebars = (function () {
function Sidebars(elements, options) {
var _this = this;
this.data = [];
this.render = function () {
for (var _i = 0, _a = _this.data; _i < _a.length; _i++) {
var sidebar = _a[_i];
sidebar.render();
}
};
this.data = Array.from(new Set(elements.map(function (widget) { return widget.parentElement; })))
.filter(function (sidebar_el) { return sidebar_el !== null; })
.map(function (sidebar_el) { return new Sidebar(sidebar_el, { margin_bottom: options.margin_bottom, margin_top: options.margin_top }, options.use_sticky_position); });
}
Sidebars.prototype.mount = function () {
this.data.forEach(function (sidebar) { sidebar.mount(); });
this.set_max_offset();
};
Sidebars.prototype.unmonut = function () {
this.data.forEach(function (sidebar) { sidebar.unmount(); });
};
Sidebars.prototype.set_max_offset = function () {
var general_stop_widgets = this.getGeneralStopElements();
for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
var sidebar = _a[_i];
sidebar.set_max_offset(general_stop_widgets);
}
};
Sidebars.prototype.getGeneralStopElements = function () {
return this.data.filter(function (sidebar) {
return sidebar.isSticky ?
sidebar.widgets.length === 0 :
true;
})
.map(function (sidebar) { return sidebar.stop_widgets; })
.reduce(function (all, widgets) { return all.concat(widgets); }, []);
};
Sidebars.new = function (options) {
var fixedWidgetsContainers = Array.from(new Set(BaseWidget
.queryAllWidgetsContainers(FixedWidgetClassName)
.concat(queryElements(compatabilty_FW_v5(options.widgets)))));
var stopWidgetsSelectors = compatabilty_FW_v5(splitSelectors(options.stop_elements_selectors || options.stop_id));
var stopWidgetsContainers = Array.from(new Set(BaseWidget
.queryAllWidgetsContainers(StopWidgetClassName)
.concat(queryElements(stopWidgetsSelectors))));
var _a = findIntersections(fixedWidgetsContainers, stopWidgetsContainers), stopWidgetsUniqContainers = _a[0], duplicates = _a[1];
duplicates.forEach(function (w) {
console.error("The Widget is detected as fixed block and stop block!\n".concat(w.innerHTML));
});
fixedWidgetsContainers.forEach(function (c) { c.classList.add(FixedWidgetClassName); });
stopWidgetsUniqContainers.forEach(function (c) { c.classList.add(StopWidgetClassName); });
var widgetContainers = fixedWidgetsContainers.concat(stopWidgetsUniqContainers)
.filter(function (container) {
var hasNestedWidget = container.innerHTML.includes(FixedWidgetClassName) ||
container.innerHTML.includes(StopWidgetClassName);
hasNestedWidget && console.warn('Fixed Widget: Detected nested widget in ', container);
return !hasNestedWidget;
});
return new Sidebars(widgetContainers, options);
};
return Sidebars;
}());
var Plugin = (function () {
function Plugin(options, version) {
if (options === void 0) { options = []; }
Plugin.version = version;
if (Plugin.sidebars) {
Plugin.sidebars.render();
return;
}
Plugin.sidebars = Sidebars.new(options.reduce(function (prev, cur) { return (__assign(__assign(__assign({}, prev), cur), { stop_elements_selectors: "".concat(prev.stop_elements_selectors, "\n").concat(cur.stop_elements_selectors), widgets: (prev.widgets || []).concat(cur.widgets || []) })); }));
document.addEventListener('scroll', Plugin.sidebars.render);
window.addEventListener('resize', function () {
Plugin.sidebars.unmonut();
setTimeout(function () {
Plugin.sidebars.mount();
Plugin.sidebars.render();
});
});
Plugin.sidebars.mount();
}
return Plugin;
}());
document.addEventListener("DOMContentLoaded", onDocumentLoaded);
document.readyState === "complete" && onDocumentLoaded();
function onDocumentLoaded() {
var admin_panel = document.querySelector('#wpadminbar');
var user_options = window['q2w3_sidebar_options'] || [{}];
var options = user_options.map(function (option) {
option.margin_top = (option.margin_top || 0) + (admin_panel && admin_panel.clientHeight || 0);
return option;
});
if (options.some(function (option) {
return option.screen_max_width && document.body.clientWidth < option.screen_max_width ||
option.screen_max_height && document.body.clientHeight < option.screen_max_height;
})) {
return;
}
new Plugin(options, '6.0.7-20');
}