(function (){
'use strict';
const configNode=document.querySelector('[data-rb-collection-picker-config]');
if(! configNode){
return;
}
let configuration={};
try {
configuration=JSON.parse(configNode.dataset.rbCollectionPickerConfig||'{}');
} catch(error){
return;
}
const i18n=configuration.i18n||{};
const state={
trigger: null,
item: null,
collections: [],
search: '',
searchTimer: 0,
controller: null,
panel: null,
body: null,
guestModal: null,
guestTrigger: null,
lazyObserver: null,
lazyTimers: new WeakMap(),
};
function element(tag, className='', text=''){
const node=document.createElement(tag);
if(className){
node.className=className;
}
if(text){
node.textContent=text;
}
return node;
}
function prepareLazyImage(image, source){
const url=String(source||'');
image.classList.add('js-lazy');
image.classList.remove('loading', 'loaded', 'error', 'entered', 'exited');
state.lazyObserver?.unobserve(image);
window.clearTimeout(state.lazyTimers.get(image) );
state.lazyTimers.delete(image);
delete image.dataset.rbLazyScheduled;
image.removeAttribute('data-was-processed');
image.dataset.src=url;
image.src=configuration.lazyPlaceholderUrl||url;
return image;
}
function refreshLazyImages(root=document){
const images=[];
if(root.matches?.('img.js-lazy[data-src]') ){
images.push(root);
}
images.push(...(root.querySelectorAll?.('img.js-lazy[data-src]')||[]) );
if(! images.length){
return;
}
try {
if(typeof lazyLoadInstance!=='undefined'&&typeof lazyLoadInstance?.update==='function'){
lazyLoadInstance.update();
return;
}} catch(error){
}
if(!('IntersectionObserver' in window) ){
images.forEach(loadLazyImage);
return;
}
if(! state.lazyObserver){
state.lazyObserver=new IntersectionObserver(( entries)=> {
entries.forEach(( entry)=> {
if(! entry.isIntersecting){
entry.target.classList.remove('entered');
entry.target.classList.add('exited');
window.clearTimeout(state.lazyTimers.get(entry.target) );
state.lazyTimers.delete(entry.target);
delete entry.target.dataset.rbLazyScheduled;
return;
}
entry.target.classList.add('entered');
entry.target.classList.remove('exited');
if(state.lazyTimers.has(entry.target) ){
return;
}
entry.target.dataset.rbLazyScheduled='true';
const timer=window.setTimeout(()=> loadLazyImage(entry.target), 1000);
state.lazyTimers.set(entry.target, timer);
});
}, { rootMargin: '200px' });
}
images.forEach(( image)=> {
if(image.dataset.wasProcessed!=='true'&&image.dataset.rbLazyScheduled!=='true'){
state.lazyObserver.observe(image);
}});
}
function loadLazyImage(image){
const source=image.dataset.src;
if(! source||image.dataset.wasProcessed==='true'){
return;
}
state.lazyObserver?.unobserve(image);
state.lazyTimers.delete(image);
delete image.dataset.rbLazyScheduled;
image.dataset.wasProcessed='true';
image.classList.add('loading');
image.addEventListener('load', ()=> {
image.classList.remove('loading');
image.classList.add('loaded');
}, { once: true });
image.addEventListener('error', ()=> {
image.classList.remove('loading');
image.classList.add('error');
}, { once: true });
image.src=source;
}
function normalizeItem(item={}){
return {
id: Number.parseInt(item.id ?? item.itemId ?? item.item_id, 10),
type: String(item.type||item.collectionType||item.collection_type||configuration.defaultType||'photos'),
url: String(item.url||item.itemUrl||item.item_url||''),
name: String(item.name||item.itemName||item.item_name||''),
thumbnailUrl: String(item.thumbnailUrl||item.thumbnail_url||''),
};}
function itemFromTrigger(trigger){
return normalizeItem( {
id: trigger.dataset.rbItemId,
type: trigger.dataset.rbCollectionType,
url: trigger.dataset.rbItemUrl,
name: trigger.dataset.rbItemName,
thumbnailUrl: trigger.dataset.rbThumbnailUrl,
});
}
function validItem(item){
return Number.isInteger(item.id)
&& item.id > 0
&& item.url
&& item.name
&& item.thumbnailUrl;
}
async function request(path, options={}){
if(! configuration.root||! configuration.restNonce){
throw new Error(i18n.genericError||'Something went wrong. Please try again.');
}
const { headers={}, ...requestOptions }=options;
const response=await fetch(configuration.root + path, {
credentials: 'same-origin',
...requestOptions,
headers: {
'Accept': 'application/json',
...(requestOptions.body ? { 'Content-Type': 'application/json' }:{}),
'X-WP-Nonce': configuration.restNonce,
...headers,
},
});
const payload=await response.json().catch(()=> ( {}) );
if(! response.ok||! payload.success){
throw new Error(payload.message||i18n.genericError||'Something went wrong. Please try again.');
}
return payload.data;
}
function ensurePanel(){
if(state.panel){
return state.panel;
}
const panel=element('section', 'rb-picker');
panel.hidden=true;
panel.setAttribute('role', 'dialog');
panel.setAttribute('aria-modal', 'false');
panel.setAttribute('aria-label', i18n.find||'Find a collection');
panel.tabIndex=-1;
const body=element('div', 'rb-picker__body');
panel.append(body);
document.body.append(panel);
state.panel=panel;
state.body=body;
return panel;
}
function announce(message, error=false){
if(! state.panel){
return;
}
let status=state.panel.querySelector('[data-rb-picker-status]');
if(! status){
status=element('div', 'rb-picker__status');
status.dataset.rbPickerStatus='';
status.setAttribute('role', error ? 'alert':'status');
status.setAttribute('aria-live', 'polite');
const create=state.body?.querySelector('.rb-picker__create');
if(create){
create.before(status);
}else{
state.body?.append(status);
}}
status.setAttribute('role', error ? 'alert':'status');
status.textContent=message;
status.classList.toggle('is-error', error);
status.classList.toggle('is-visible', Boolean(message) );
window.clearTimeout(Number(status.dataset.timer||0) );
status.dataset.timer=String(window.setTimeout(()=> {
status.classList.remove('is-visible');
}, 2200) );
}
function positionPanel(){
if(! state.panel||state.panel.hidden){
return;
}
const gap=8;
const edge=12;
const panelRect=state.panel.getBoundingClientRect();
const width=Math.min(356, window.innerWidth - edge * 2);
if(! state.trigger){
state.panel.style.width=`${ width }px`;
state.panel.style.left=`${ Math.max(edge,(window.innerWidth - width) / 2) }px`;
state.panel.style.top=`${ Math.max(edge,(window.innerHeight - panelRect.height) / 2) }px`;
return;
}
const rect=state.trigger.getBoundingClientRect();
let left=rect.right - width;
left=Math.max(edge, Math.min(left, window.innerWidth - width - edge) );
const spaceBelow=window.innerHeight - rect.bottom - edge;
const openAbove=spaceBelow < Math.min(panelRect.height, 430)&&rect.top > spaceBelow;
const top=openAbove
? Math.max(edge, rect.top - panelRect.height - gap)
: Math.min(window.innerHeight - panelRect.height - edge, rect.bottom + gap);
state.panel.style.width=`${ width }px`;
state.panel.style.left=`${ left }px`;
state.panel.style.top=`${ Math.max(edge, top) }px`;
}
function close(){
if(! state.panel||state.panel.hidden){
return;
}
state.controller?.abort();
state.panel.hidden=true;
state.panel.classList.remove('is-open');
state.trigger?.setAttribute('aria-expanded', 'false');
state.trigger?.focus({ preventScroll: true });
state.trigger=null;
state.item=null;
}
function loading(){
state.body.replaceChildren();
const wrapper=element('div', 'rb-picker__loading');
wrapper.setAttribute('role', 'status');
wrapper.append(element('span', 'rb-picker__spinner'),
element('span', '', i18n.loading||'Loading collections…')
);
state.body.append(wrapper);
positionPanel();
}
function countLabel(count){
return count===1 ?(i18n.oneItem||'1 item'):`${ count } ${ i18n.items||'items' }`;
}
function lockIcon(className=''){
const svg=document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('viewBox', '0 0 24 24');
svg.setAttribute('aria-hidden', 'true');
if(className){
svg.setAttribute('class', className);
}
const path=document.createElementNS('http://www.w3.org/2000/svg', 'path');
path.setAttribute('d', 'M17 9h-1V7a4 4 0 0 0-8 0v2H7a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2Zm-7-2a2 2 0 0 1 4 0v2h-4V7Z');
svg.append(path);
return svg;
}
function renderList(){
const previousSearch=state.body.querySelector('.rb-picker__search input');
const restoreSearchFocus=previousSearch===document.activeElement;
const selectionStart=restoreSearchFocus ? previousSearch.selectionStart:null;
const selectionEnd=restoreSearchFocus ? previousSearch.selectionEnd:null;
state.body.replaceChildren();
const searchWrap=element('label', 'rb-picker__search');
const searchIcon=element('span', 'rb-picker__search-icon', '⌕');
searchIcon.setAttribute('aria-hidden', 'true');
const search=element('input');
search.type='search';
search.autocomplete='off';
search.placeholder=i18n.find||'Find a collection';
search.setAttribute('aria-label', i18n.find||'Find a collection');
search.value=state.search;
searchWrap.append(searchIcon, search);
const label=element('div', 'rb-picker__eyebrow', i18n.recent||'Recent');
const list=element('div', 'rb-picker__list');
list.setAttribute('role', 'list');
if(! state.collections.length){
list.append(element('p', 'rb-picker__empty', i18n.empty||'No collections found.') );
}else{
state.collections.forEach(( collection)=> list.append(collectionRow(collection) ));
}
const create=element('button', 'rb-picker__create');
create.type='button';
create.append(element('span', 'rb-picker__create-icon', '+'),
element('span', '', i18n.createNew||'Create a new collection')
);
create.addEventListener('click', renderCreate);
state.body.append(searchWrap, label, list, create);
refreshLazyImages(state.body);
search.addEventListener('input', ()=> {
state.search=search.value.trim();
window.clearTimeout(state.searchTimer);
state.searchTimer=window.setTimeout(loadCollections, 220);
});
if(restoreSearchFocus){
search.focus({ preventScroll: true });
if(null!==selectionStart&&null!==selectionEnd){
search.setSelectionRange(selectionStart, selectionEnd);
}}
window.requestAnimationFrame(positionPanel);
}
function collectionRow(collection){
const row=element('button', 'rb-picker__row');
row.type='button';
row.dataset.collectionId=String(collection.id);
row.setAttribute('role', 'listitem');
row.setAttribute('aria-label',
`${ collection.contains_item ?(i18n.remove||'Remove from collection'):(i18n.add||'Add to collection') }: ${ collection.name }`
);
const thumb=element('span', 'rb-picker__thumb');
if(collection.thumbnail_url){
const image=element('img');
image.alt='';
prepareLazyImage(image, collection.thumbnail_url);
thumb.append(image);
}else{
thumb.append(element('span', '', collection.name.slice(0, 1).toUpperCase()) );
}
const details=element('span', 'rb-picker__details');
const meta=element('span', 'rb-picker__meta');
if(! collection.is_shared){
const visibility=lockIcon('rb-picker__visibility');
visibility.removeAttribute('aria-hidden');
visibility.setAttribute('role', 'img');
visibility.setAttribute('aria-label', i18n.private||'Private');
visibility.setAttribute('title', i18n.private||'Private');
meta.append(visibility);
}
meta.append(element('small', '', countLabel(collection.item_count) ));
details.append(element('strong', '', collection.name), meta);
const action=element('span', 'rb-picker__action', collection.contains_item ? '✓':'+');
action.classList.toggle('is-selected', collection.contains_item);
action.setAttribute('aria-hidden', 'true');
row.append(thumb, details, action);
row.addEventListener('click', ()=> toggleCollection(collection, row) );
return row;
}
async function toggleCollection(collection, row){
if(row.disabled){
return;
}
row.disabled=true;
row.classList.add('is-busy');
const wasSelected=Boolean(collection.contains_item);
try {
let mutation;
if(wasSelected){
mutation=await request(`collections/${ collection.id }/items/${ state.item.id }`, { method: 'DELETE' });
}else{
mutation=await request(`collections/${ collection.id }/items`, {
method: 'POST',
body: JSON.stringify(itemPayload()),
});
}
applyCollectionSnapshot(collection, mutation?.collection);
collection.contains_item = ! wasSelected;
syncTrigger();
updateCollectionRow(collection, row);
announce(wasSelected ?(i18n.removed||'Removed from collection.'):(i18n.added||'Added to collection.') );
dispatchChange(collection, wasSelected ? 'removed':'added');
} catch(error){
row.disabled=false;
row.classList.remove('is-busy');
announce(error.message||i18n.genericError, true);
}}
function updateCollectionRow(collection, row){
const thumb=row.querySelector('.rb-picker__thumb');
if(thumb){
thumb.replaceChildren();
if(collection.thumbnail_url){
const image=element('img');
image.alt='';
prepareLazyImage(image, collection.thumbnail_url);
thumb.append(image);
refreshLazyImages(image);
}else{
thumb.append(element('span', '', collection.name.slice(0, 1).toUpperCase()) );
}}
const count=row.querySelector('.rb-picker__details small');
if(count){
count.textContent=countLabel(collection.item_count);
}
const action=row.querySelector('.rb-picker__action');
if(action){
action.textContent=collection.contains_item ? '✓':'+';
action.classList.toggle('is-selected', collection.contains_item);
}
row.setAttribute('aria-label',
`${ collection.contains_item ?(i18n.remove||'Remove from collection'):(i18n.add||'Add to collection') }: ${ collection.name }`
);
row.disabled=false;
row.classList.remove('is-busy');
}
function applyCollectionSnapshot(collection, snapshot){
if(! snapshot||Number(snapshot.id)!==Number(collection.id) ){
return;
}
collection.item_count=Number(snapshot.item_count||0);
collection.thumbnail_url=String(snapshot.thumbnail_url||'');
collection.is_shared=Boolean(snapshot.is_shared);
collection.updated_at=snapshot.updated_at||collection.updated_at;
}
function itemPayload(){
return {
item_id: state.item.id,
item_url: state.item.url,
item_name: state.item.name,
thumbnail_url: state.item.thumbnailUrl,
};}
function syncTrigger(){
if(! state.trigger){
return;
}
const selected=state.collections.some(( collection)=> collection.contains_item);
state.trigger.classList.toggle('is-collected', selected);
state.trigger.dataset.rbCollected=String(selected);
}
function dispatchChange(collection, action){
document.dispatchEvent(new CustomEvent('resourceboy:collection-change', {
detail: {
action,
item: { ...state.item },
collection: { ...collection },
},
}) );
}
function renderCreate(){
state.body.replaceChildren();
const header=element('div', 'rb-picker__create-header');
const back=element('button', 'rb-picker__back', '‹');
back.type='button';
back.setAttribute('aria-label', i18n.back||'Back to collections');
back.addEventListener('click', renderList);
header.append(back, element('strong', '', i18n.createTitle||'Create a new collection') );
const form=element('form', 'rb-picker__form');
const nameLabel=element('label');
nameLabel.append(element('span', '', i18n.name||'Name') );
const name=element('input');
name.type='text';
name.maxLength=80;
name.required=true;
name.autocomplete='off';
nameLabel.append(name);
const descriptionLabel=element('label');
descriptionLabel.append(element('span', '', i18n.description||'Description (optional)') );
const description=element('textarea');
description.maxLength=250;
description.rows=3;
descriptionLabel.append(description);
const privacyLabel=element('label', 'rb-picker__privacy');
const privacy=element('input');
privacy.type='checkbox';
privacy.checked=true;
const lock=element('span', 'rb-picker__lock');
lock.setAttribute('aria-hidden', 'true');
privacyLabel.append(privacy, element('span', '', i18n.private||'Private'), lock);
const actions=element('div', 'rb-picker__form-actions');
const cancel=element('button', 'rb-picker__cancel', i18n.cancel||'Cancel');
cancel.type='button';
cancel.addEventListener('click', renderList);
const submit=element('button', 'rb-picker__submit', i18n.create||'Create collection');
submit.type='submit';
actions.append(cancel, submit);
form.append(nameLabel, descriptionLabel, privacyLabel, actions);
form.addEventListener('submit',(event)=> createCollection(event, name, description, privacy, submit) );
state.body.append(header, form);
window.requestAnimationFrame(()=> {
positionPanel();
name.focus();
});
}
async function createCollection(event, name, description, privacy, submit){
event.preventDefault();
const collectionName=name.value.trim();
if(! collectionName){
name.focus();
announce(i18n.nameRequired||'Enter a collection name.', true);
return;
}
const restingWidth=Math.ceil(submit.getBoundingClientRect().width);
const fontSize=parseFloat(window.getComputedStyle(submit).fontSize)||12;
const loadingOffset=Math.max(0,(restingWidth -(3 * fontSize) ) / 2);
submit.style.setProperty('--rb-picker-resting-width', `${ restingWidth }px`);
submit.style.setProperty('--rb-picker-loading-offset', `${ loadingOffset }px`);
submit.dataset.rbLoading='';
submit.disabled=true;
void submit.offsetWidth;
submit.classList.add('is-busy');
try {
const collection=await request('collections', {
method: 'POST',
body: JSON.stringify({
name: collectionName,
description: description.value.trim(),
private: privacy.checked,
type: state.item.type,
}),
});
const mutation=await request(`collections/${ collection.id }/items`, {
method: 'POST',
body: JSON.stringify(itemPayload()),
});
state.search='';
await loadCollections();
announce(i18n.created||'Collection created and resource added.');
dispatchChange(
{
...(mutation?.collection||collection),
contains_item: true,
},
'created'
);
} catch(error){
submit.disabled=false;
submit.classList.remove('is-busy');
window.setTimeout(()=> {
delete submit.dataset.rbLoading;
submit.style.removeProperty('--rb-picker-resting-width');
submit.style.removeProperty('--rb-picker-loading-offset');
}, 220);
announce(error.message||i18n.genericError, true);
}}
async function loadCollections(){
if(! state.item){
return;
}
state.controller?.abort();
const controller=new AbortController();
state.controller=controller;
const existingSearch=state.body?.querySelector('.rb-picker__search input');
if(! state.collections.length&&! existingSearch){
loading();
}
try {
const query=new URLSearchParams( {
type: state.item.type,
item_id: String(state.item.id),
});
if(state.search){
query.set('search', state.search);
}
const data=await request(`collections/picker?${ query.toString() }`, { signal: controller.signal });
if(controller.signal.aborted){
return;
}
state.collections=Array.isArray(data.collections) ? data.collections:[];
renderList();
syncTrigger();
} catch(error){
if(error.name==='AbortError'){
return;
}
if(state.body?.querySelector('.rb-picker__search input') ){
state.collections=[];
renderList();
announce(error.message||i18n.genericError, true);
}else{
state.body.replaceChildren(element('p', 'rb-picker__error', error.message||i18n.genericError) );
positionPanel();
}}
}
function open(item, trigger=null){
const normalized=normalizeItem(item);
if(! configuration.isAuthenticated){
openGuestModal(normalized, trigger);
return true;
}
if(! validItem(normalized) ){
if(trigger){
trigger.setAttribute('data-rb-collection-error', i18n.missingItem||'Missing collection data.');
}
return false;
}
const panel=ensurePanel();
if(! panel.hidden&&state.trigger===trigger&&state.item?.id===normalized.id){
close();
return true;
}
state.trigger?.setAttribute('aria-expanded', 'false');
state.trigger=trigger;
state.item=normalized;
state.collections=[];
state.search='';
if(trigger){
trigger.setAttribute('aria-haspopup', 'dialog');
trigger.setAttribute('aria-expanded', 'true');
}
panel.hidden=false;
panel.classList.add('is-open');
loading();
positionPanel();
loadCollections();
return true;
}
function openGuestModal(item, trigger=null){
close();
const modal=ensureGuestModal();
state.guestTrigger=trigger;
modal.querySelectorAll('[data-rb-guest-image]').forEach(( image)=> {
state.lazyObserver?.unobserve(image);
window.clearTimeout(state.lazyTimers.get(image) );
state.lazyTimers.delete(image);
image.classList.remove('js-lazy', 'loading', 'loaded', 'error', 'entered', 'exited');
image.removeAttribute('data-src');
image.removeAttribute('data-was-processed');
delete image.dataset.rbLazyScheduled;
if(item.thumbnailUrl){
image.alt='';
image.hidden=false;
image.src=item.thumbnailUrl;
}else{
image.removeAttribute('src');
image.hidden=true;
}});
modal.hidden=false;
document.documentElement.classList.add('rb-picker-modal-open');
window.requestAnimationFrame(()=> {
modal.classList.add('is-open');
modal.querySelector('.rb-picker-guest__primary' )?.focus();
});
}
function ensureGuestModal(){
if(state.guestModal){
return state.guestModal;
}
const overlay=element('div', 'rb-picker-guest');
overlay.hidden=true;
overlay.setAttribute('role', 'dialog');
overlay.setAttribute('aria-modal', 'true');
overlay.setAttribute('aria-labelledby', 'rb-picker-guest-title');
const dialog=element('div', 'rb-picker-guest__dialog');
const closeButton=element('button', 'rb-picker-guest__close', '×');
closeButton.type='button';
closeButton.setAttribute('aria-label', i18n.close||'Close collection picker');
closeButton.addEventListener('click', closeGuestModal);
const preview=element('div', 'rb-picker-guest__preview');
const card=element('div', 'rb-picker-guest__card');
const mosaic=element('div', 'rb-picker-guest__mosaic');
const mainImage=element('img', 'rb-picker-guest__main-image');
mainImage.dataset.rbGuestImage='';
const side=element('div', 'rb-picker-guest__side');
const sideImageOne=element('img');
sideImageOne.dataset.rbGuestImage='';
const sideImageTwo=element('img');
sideImageTwo.dataset.rbGuestImage='';
side.append(sideImageOne, sideImageTwo);
mosaic.append(mainImage, side);
const previewLabel=element('div', 'rb-picker-guest__preview-label');
previewLabel.append(lockIcon(), element('span', '', i18n.guestPreview||'Your first collection') );
card.append(mosaic, previewLabel);
preview.append(card);
const content=element('div', 'rb-picker-guest__content');
const title=element('h2', '', i18n.guestTitle||'Collect this resource');
title.id='rb-picker-guest-title';
content.append(title,
element('p', 'rb-picker-guest__copy', i18n.guestCopy||'Save and organize resources into collections.')
);
const benefits=element('ul', 'rb-picker-guest__benefits');
[
i18n.guestGroup||'Group resources by theme, mood, or project',
i18n.guestPrivacy||'Public or private, your choice',
i18n.guestAccess||'Access your collections whenever you need them',
].forEach(( benefit)=> {
benefits.append(element('li', '', benefit) );
});
const primary=element('a', 'rb-picker-guest__primary', i18n.guestCreate||'Create free account');
primary.href=configuration.registerUrl||configuration.authUrl||'#';
const existing=element('p', 'rb-picker-guest__existing');
const signIn=element('a', '', i18n.guestSignIn||'Sign in');
signIn.href=configuration.authUrl||'#';
existing.append(document.createTextNode(`${ i18n.guestExisting||'Already have an account?' } `),
signIn
);
content.append(benefits, primary, existing);
dialog.append(closeButton, preview, content);
overlay.append(dialog);
overlay.addEventListener('click',(event)=> {
if(event.target===overlay){
closeGuestModal();
}});
document.body.append(overlay);
state.guestModal=overlay;
return overlay;
}
function closeGuestModal(){
if(! state.guestModal||state.guestModal.hidden){
return;
}
const trigger=state.guestTrigger;
state.guestModal.classList.remove('is-open');
document.documentElement.classList.remove('rb-picker-modal-open');
state.guestModal.hidden=true;
state.guestTrigger=null;
trigger?.focus({ preventScroll: true });
}
document.addEventListener('click',(event)=> {
const trigger=event.target.closest?.('[data-rb-collection-picker]');
if(trigger){
event.preventDefault();
event.stopPropagation();
open(itemFromTrigger(trigger), trigger);
return;
}
const eventPath=typeof event.composedPath==='function' ? event.composedPath():[];
if(state.panel
&& ! state.panel.hidden
&& ! eventPath.includes(state.panel)
&& ! state.panel.contains(event.target)
){
close();
}});
document.addEventListener('keydown',(event)=> {
if(event.key==='Escape'&&state.guestModal&&! state.guestModal.hidden){
event.preventDefault();
closeGuestModal();
return;
}
if(event.key==='Escape'&&state.panel&&! state.panel.hidden){
event.preventDefault();
close();
}});
window.addEventListener('resize', positionPanel, { passive: true });
window.addEventListener('scroll',(event)=> {
if(state.panel?.contains(event.target) ){
return;
}
positionPanel();
}, { passive: true, capture: true });
window.ResourceBoyCollections=Object.freeze({
open,
close,
refresh: loadCollections,
});
window.ResourceBoyLazyImages=Object.freeze({
prepare: prepareLazyImage,
refresh: refreshLazyImages,
});
if(document.readyState==='complete'){
refreshLazyImages(document);
}else{
window.addEventListener('load', ()=> refreshLazyImages(document), { once: true });
}}());
(function(){
const siteNavigation=document.getElementById('site-navigation');
if(! siteNavigation){
return;
}
const button=siteNavigation.getElementsByTagName('button')[ 0 ];
if('undefined'===typeof button){
return;
}
const menu=siteNavigation.getElementsByTagName('ul')[ 0 ];
if('undefined'===typeof menu){
button.style.display='none';
return;
}
if(! menu.classList.contains('nav-menu') ){
menu.classList.add('nav-menu');
}
button.addEventListener('click', function(){
siteNavigation.classList.toggle('toggled');
if(button.getAttribute('aria-expanded')==='true'){
button.setAttribute('aria-expanded', 'false');
}else{
button.setAttribute('aria-expanded', 'true');
}});
document.addEventListener('click', function(event){
const isClickInside=siteNavigation.contains(event.target);
if(! isClickInside){
siteNavigation.classList.remove('toggled');
button.setAttribute('aria-expanded', 'false');
}});
const links=menu.getElementsByTagName('a');
const linksWithChildren=menu.querySelectorAll('.menu-item-has-children > a, .page_item_has_children > a');
for(const link of links){
link.addEventListener('focus', toggleFocus, true);
link.addEventListener('blur', toggleFocus, true);
}
for(const link of linksWithChildren){
link.addEventListener('touchstart', toggleFocus, false);
}
function toggleFocus(){
if(event.type==='focus'||event.type==='blur'){
let self=this;
while(! self.classList.contains('nav-menu') ){
if('li'===self.tagName.toLowerCase()){
self.classList.toggle('focus');
}
self=self.parentNode;
}}
if(event.type==='touchstart'){
const menuItem=this.parentNode;
event.preventDefault();
for(const link of menuItem.parentNode.children){
if(menuItem!==link){
link.classList.remove('focus');
}}
menuItem.classList.toggle('focus');
}}
}());
(function(){
const accounts=document.querySelectorAll('[data-rb-header-account]');
accounts.forEach(( account)=> {
const trigger=account.querySelector('[data-rb-header-account-trigger]');
const dropdown=account.querySelector('[data-rb-header-account-dropdown]');
if(! trigger||! dropdown){
return;
}
const close=()=> {
trigger.setAttribute('aria-expanded', 'false');
dropdown.hidden=true;
};
trigger.addEventListener('click', ()=> {
const isOpen='true'===trigger.getAttribute('aria-expanded');
accounts.forEach(( item)=> {
const otherTrigger=item.querySelector('[data-rb-header-account-trigger]');
const otherDropdown=item.querySelector('[data-rb-header-account-dropdown]');
if(otherTrigger&&otherDropdown){
otherTrigger.setAttribute('aria-expanded', 'false');
otherDropdown.hidden=true;
}});
trigger.setAttribute('aria-expanded', String(! isOpen) );
dropdown.hidden=isOpen;
});
document.addEventListener('click',(event)=> {
if(! account.contains(event.target) ){
close();
}});
});
document.querySelectorAll('[data-rb-header-logout]').forEach(( form)=> {
form.addEventListener('submit', async(event)=> {
event.preventDefault();
const button=form.querySelector('button[type="submit"]');
if(button){
button.disabled=true;
}
try {
const response=await fetch(form.getAttribute('action'), {
method: 'POST',
credentials: 'same-origin',
headers: {
'Accept': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
},
body: new FormData(form),
});
const payload=await response.json().catch(()=> ( {}) );
if(! response.ok||! payload.success||! payload.data?.redirect){
throw new Error(payload.data?.message||'Unable to sign out. Please try again.');
}
window.location.assign(payload.data.redirect);
} catch(error){
window.alert(error.message||'Unable to sign out. Please try again.');
if(button){
button.disabled=false;
}}
});
});
}());
window.addComment=function(v){var I,C,h,E=v.document,b={commentReplyClass:"comment-reply-link",commentReplyTitleId:"reply-title",cancelReplyId:"cancel-comment-reply-link",commentFormId:"commentform",temporaryFormId:"wp-temp-form-div",parentIdFieldId:"comment_parent",postIdFieldId:"comment_post_ID"},e=v.MutationObserver||v.WebKitMutationObserver||v.MozMutationObserver,r="querySelector"in E&&"addEventListener"in v,n=!!E.documentElement.dataset;function t(){d(),e&&new e(o).observe(E.body,{childList:!0,subtree:!0})}function d(e){if(r&&(I=g(b.cancelReplyId),C=g(b.commentFormId),I)){I.addEventListener("touchstart",l),I.addEventListener("click",l);function t(e){if((e.metaKey||e.ctrlKey)&&13===e.keyCode&&"a"!==E.activeElement.tagName.toLowerCase())return C.removeEventListener("keydown",t),e.preventDefault(),C.submit.click(),!1}C&&C.addEventListener("keydown",t);for(var n,d=function(e){var t=b.commentReplyClass;e&&e.childNodes||(e=E);e=E.getElementsByClassName?e.getElementsByClassName(t):e.querySelectorAll("."+t);return e}(e),o=0,i=d.length;o<i;o++)(n=d[o]).addEventListener("touchstart",a),n.addEventListener("click",a)}}function l(e){var t,n,d=g(b.temporaryFormId);d&&h&&(g(b.parentIdFieldId).value="0",t=d.textContent,d.parentNode.replaceChild(h,d),this.style.display="none",n=(d=(d=g(b.commentReplyTitleId))&&d.firstChild)&&d.nextSibling,d&&d.nodeType===Node.TEXT_NODE&&t&&(n&&"A"===n.nodeName&&n.id!==b.cancelReplyId&&(n.style.display=""),d.textContent=t),e.preventDefault())}function a(e){var t=g(b.commentReplyTitleId),t=t&&t.firstChild.textContent,n=this,d=m(n,"belowelement"),o=m(n,"commentid"),i=m(n,"respondelement"),r=m(n,"postid"),n=m(n,"replyto")||t;d&&o&&i&&r&&!1===v.addComment.moveForm(d,o,i,r,n)&&e.preventDefault()}function o(e){for(var t=e.length;t--;)if(e[t].addedNodes.length)return void d()}function m(e,t){return n?e.dataset[t]:e.getAttribute("data-"+t)}function g(e){return E.getElementById(e)}return r&&"loading"!==E.readyState?t():r&&v.addEventListener("DOMContentLoaded",t,!1),{init:d,moveForm:function(e,t,n,d,o){var i,r,l,a,m,c,s,e=g(e),n=(h=g(n),g(b.parentIdFieldId)),y=g(b.postIdFieldId),p=g(b.commentReplyTitleId),u=(p=p&&p.firstChild)&&p.nextSibling;if(e&&h&&n){void 0===o&&(o=p&&p.textContent),a=h,m=b.temporaryFormId,c=g(m),s=(s=g(b.commentReplyTitleId))?s.firstChild.textContent:"",c||((c=E.createElement("div")).id=m,c.style.display="none",c.textContent=s,a.parentNode.insertBefore(c,a)),d&&y&&(y.value=d),n.value=t,I.style.display="",e.parentNode.insertBefore(h,e.nextSibling),p&&p.nodeType===Node.TEXT_NODE&&(u&&"A"===u.nodeName&&u.id!==b.cancelReplyId&&(u.style.display="none"),p.textContent=o),I.onclick=function(){return!1};try{for(var f=0;f<C.elements.length;f++)if(i=C.elements[f],r=!1,"getComputedStyle"in v?l=v.getComputedStyle(i):E.documentElement.currentStyle&&(l=i.currentStyle),(i.offsetWidth<=0&&i.offsetHeight<=0||"hidden"===l.visibility)&&(r=!0),"hidden"!==i.type&&!i.disabled&&!r){i.focus();break}}catch(e){}return!1}}}}(window);
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).LazyLoad=t()}(this,function(){"use strict";function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,o=arguments[t];for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}function i(e){return t({},J,e)}function r(e,t){var n,t=new e(t);try{n=new CustomEvent("LazyLoad::Initialized",{detail:{instance:t}})}catch(e){(n=document.createEvent("CustomEvent")).initCustomEvent("LazyLoad::Initialized",!1,!1,{instance:t})}window.dispatchEvent(n)}function s(e,t){return e.getAttribute("data-"+t)}function a(e,t,n){t="data-"+t,null!==n?e.setAttribute(t,n):e.removeAttribute(t)}function d(e){return s(e,"ll-status")}function f(e,t){return a(e,"ll-status",t)}function m(e){return f(e,null),0}function h(e){return null===d(e)}function c(e){return"native"===d(e)}function p(e,t,n,o){e&&(void 0===o?void 0===n?e(t):e(t,n):e(t,n,o))}function u(e,t){X?e.classList.add(t):e.className+=(e.className?" ":"")+t}function y(e,t){X?e.classList.remove(t):e.className=e.className.replace(new RegExp("(^|\\s+)"+t+"(\\s+|$)")," ").replace(/^\s+/,"").replace(/\s+$/,"")}function g(e){return e.llTempImage}function b(e,t){!t||(t=t._observer)&&t.unobserve(e)}function v(e,t){e&&(e.loadingCount+=t)}function _(e,t){e&&(e.toLoadCount=t)}function n(e){for(var t,n=[],o=0;t=e.children[o];o+=1)"SOURCE"===t.tagName&&n.push(t);return n}function o(e,t,n){n&&e.setAttribute(t,n)}function l(e,t){e.removeAttribute(t)}function S(e){return!!e.llOriginalAttrs}function L(e){var t;S(e)||((t={}).src=e.getAttribute("src"),t.srcset=e.getAttribute("srcset"),t.sizes=e.getAttribute("sizes"),e.llOriginalAttrs=t)}function q(e){var t;S(e)&&(t=e.llOriginalAttrs,o(e,"src",t.src),o(e,"srcset",t.srcset),o(e,"sizes",t.sizes))}function w(e,t){o(e,"sizes",s(e,t.data_sizes)),o(e,"srcset",s(e,t.data_srcset)),o(e,"src",s(e,t.data_src))}function E(e){l(e,"src"),l(e,"srcset"),l(e,"sizes")}function x(e,t){(e=e.parentNode)&&"PICTURE"===e.tagName&&n(e).forEach(t)}function k(e,t){n(e).forEach(t)}function A(e,t){var n=Q[e.tagName];n&&n(e,t)}function j(e,t,n){v(n,1),u(e,t.class_loading),f(e,"loading"),p(t.callback_loading,e,n)}function O(e,t){var n=Z[e.tagName];n?n(e,t):(a(e=e,(t=t).data_bg,null),a(e,t.data_bg_hidpi,null))}function T(e,t){!t||0<t.loadingCount||0<t.toLoadCount||p(e.callback_finish,t)}function C(e,t,n){e.addEventListener(t,n),e.llEvLisnrs[t]=n}function M(e){return!!e.llEvLisnrs}function z(e){if(M(e)){var t,n=e.llEvLisnrs;for(t in n){var o=n[t];r=t,e.removeEventListener(r,o)}delete e.llEvLisnrs}var r}function I(e,t,n){delete e.llTempImage,v(n,-1),n&&--n.toLoadCount,y(e,t.class_loading),t.unobserve_completed&&b(e,n)}function H(n,o,r){var l=g(n)||n;M(l)||function(e){M(e)||(e.llEvLisnrs={});var t="VIDEO"===e.tagName?"loadeddata":"load";C(e,t,function(e){!function(e,t,n,o){var r=c(t);I(t,n,o),u(t,n.class_loaded),f(t,"loaded"),O(t,n),p(n.callback_loaded,t,o),r||T(n,o)}(0,n,o,r),z(l)}),C(e,"error",function(e){!function(e,t,n,o){var r=c(t);I(t,n,o),u(t,n.class_error),f(t,"error"),p(n.callback_error,t,o),r||T(n,o)}(0,n,o,r),z(l)})}(l)}function N(e,t,n){var o,r,l,i,c;e.llTempImage=document.createElement("IMG"),H(e,t,n),l=n,i=s(o=e,(r=t).data_bg),c=s(o,r.data_bg_hidpi),(i=$&&c?c:i)&&(o.style.backgroundImage='url("'.concat(i,'")'),g(o).setAttribute("src",i),j(o,r,l)),r=n,e=s(l=e,(n=t).data_bg_multi),t=s(l,n.data_bg_multi_hidpi),(t=$&&t?t:e)&&(l.style.backgroundImage=t,e=r,u(t=l,(r=n).class_applied),f(t,"applied"),a(l=t,(n=r).data_bg_multi,null),a(l,n.data_bg_multi_hidpi,null),r.unobserve_completed&&b(t,r),p(r.callback_applied,t,e))}function P(e,t,n){var o,r,l;-1<ee.indexOf(e.tagName)?(H(o=e,r=t,l=n),A(o,r),j(o,r,l)):N(e,t,n)}function R(e){return e.use_native&&"loading"in HTMLImageElement.prototype}function W(e,a,u){e.forEach(function(e){return e.isIntersecting||0<e.intersectionRatio?(l=e.target,i=e,c=a,s=u,f(l,"entered"),c.unobserve_entered&&b(l,s),p(c.callback_enter,l,i,s),void(0<=K.indexOf(d(l))||P(l,c,s))):(t=e.target,n=e,o=a,r=u,void(h(t)||(i=t,l=n,c=r,(s=o).cancel_on_exit&&"loading"===d(i)&&"IMG"===i.tagName&&(z(i),x(e=i,function(e){E(e)}),E(e),x(e=i,function(e){q(e)}),q(e),y(i,s.class_loading),v(c,-1),m(i),p(s.callback_cancel,i,l,c)),p(o.callback_exit,t,n,r))));var t,n,o,r,l,i,c,s})}function B(e){return Array.prototype.slice.call(e)}function D(e){return e.container.querySelectorAll(e.elements_selector)}function G(e){return"error"===d(e)}function V(e,t){return t=e||D(t),B(t).filter(h)}function e(e,t){var o,r,n,l,e=i(e);this._settings=e,this.loadingCount=0,n=e,l=this,U&&!R(n)&&(l._observer=new IntersectionObserver(function(e){W(e,n,l)},{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+"px"})),o=e,r=this,F&&window.addEventListener("online",function(){var t,e,n;e=r,n=D(t=o),B(n).filter(G).forEach(function(e){y(e,t.class_error),m(e)}),e.update()}),this.update(t)}var F="undefined"!=typeof window,Y=F&&!("onscroll"in window)||"undefined"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),U=F&&"IntersectionObserver"in window,X=F&&"classList"in document.createElement("p"),$=F&&1<window.devicePixelRatio,J={elements_selector:".lazy",container:Y||F?document:null,threshold:300,thresholds:null,data_src:"src",data_srcset:"srcset",data_sizes:"sizes",data_bg:"bg",data_bg_hidpi:"bg-hidpi",data_bg_multi:"bg-multi",data_bg_multi_hidpi:"bg-multi-hidpi",data_poster:"poster",class_applied:"applied",class_loading:"loading",class_loaded:"loaded",class_error:"error",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1},K=["loading","loaded","applied","error"],Q={IMG:function(e,t){x(e,function(e){L(e),w(e,t)}),L(e),w(e,t)},IFRAME:function(e,t){o(e,"src",s(e,t.data_src))},VIDEO:function(e,t){k(e,function(e){o(e,"src",s(e,t.data_src))}),o(e,"poster",s(e,t.data_poster)),o(e,"src",s(e,t.data_src)),e.load()}},Z={IMG:function(e,t){a(e,t.data_src,null),a(e,t.data_srcset,null),a(e,t.data_sizes,null),x(e,function(e){a(e,t.data_srcset,null),a(e,t.data_sizes,null)})},IFRAME:function(e,t){a(e,t.data_src,null)},VIDEO:function(e,t){a(e,t.data_src,null),a(e,t.data_poster,null),k(e,function(e){a(e,t.data_src,null)})}},ee=["IMG","IFRAME","VIDEO"],te=["IMG","IFRAME"];return e.prototype={update:function(e){var t,n,o,r=this._settings,l=V(e,r);_(this,l.length),!Y&&U?R(r)?(n=r,o=this,l.forEach(function(e){var t;-1!==te.indexOf(e.tagName)&&(e.setAttribute("loading","lazy"),H(t=e,e=n,o),A(t,e),O(t,e),f(t,"native"))}),_(o,0)):(e=l,(r=this._observer).disconnect(),t=r,e.forEach(function(e){t.observe(e)})):this.loadAll(l)},destroy:function(){this._observer&&this._observer.disconnect(),D(this._settings).forEach(function(e){delete e.llOriginalAttrs}),delete this._observer,delete this._settings,delete this.loadingCount,delete this.toLoadCount},loadAll:function(e){var t=this,n=this._settings;V(e,n).forEach(function(e){b(e,t),P(e,n,t)})}},e.load=function(e,t){t=i(t);P(e,t)},e.resetStatus=function(e){m(e)},F&&function(e,t){if(t)if(t.length)for(var n,o=0;n=t[o];o+=1)r(e,n);else r(e,t)}(e,window.lazyLoadOptions),e}),function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Readmore",[],t):"object"==typeof exports?exports.Readmore=t():e.Readmore=t()}(window,function(){return n={"./node_modules/@babel/runtime/helpers/classCallCheck.js":function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"./node_modules/@babel/runtime/helpers/createClass.js":function(e,t){function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}e.exports=function(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}},"./node_modules/@babel/runtime/helpers/typeof.js":function(t,e){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e){return"function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?t.exports=o=function(e){return n(e)}:t.exports=o=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":n(e)},o(e)}t.exports=o},"./src/readmore.js":function(e,t,n){"use strict";n.r(t);var o=n("./node_modules/@babel/runtime/helpers/classCallCheck.js"),s=n.n(o),o=n("./node_modules/@babel/runtime/helpers/createClass.js"),r=n.n(o),o=n("./node_modules/@babel/runtime/helpers/typeof.js"),u=n.n(o),l=0,i=[];function a(e,t,n){for(var o=0;o<e.length;o+=1)t.call(n,e[o],o)}function d(){return l+=1,"rmjs-".concat(l)}function f(e){e.style.height="auto";var t=parseInt(e.getBoundingClientRect().height,10),n=parseInt(e.maxHeight,10),o=(parseInt(e.readmore.defaultHeight,10),740);window.matchMedia("(max-width: 768px)").matches&&(o=350),e.readmore.expandedHeight=t,e.readmore.maxHeight=n,e.readmore.collapsedHeight=o,e.style.maxHeight="none"}function m(e,t){var n,o;i[e]||(o="",t.embedCSS&&""!==t.blockCSS&&(o+="".concat(e," + [data-readmore-toggle], ").concat(e,"[data-readmore] {\n        ").concat(t.blockCSS,"\n      }")),o+="".concat(e,"[data-readmore] {\n      transition: height ").concat(t.speed,"ms;\n      overflow: hidden;\n    }"),n=document,t=o,(o=n.createElement("style")).type="text/css",o.styleSheet?o.styleSheet.cssText=t:o.appendChild(n.createTextNode(t)),n.getElementsByTagName("head")[0].appendChild(o),i[e]=!0)}function h(e,t,n){var o=e;"function"==typeof e&&(o=e(t));e=o,(o=document.createElement("div")).innerHTML=e,o=o.firstChild;return o.setAttribute("data-readmore-toggle",t.id),o.setAttribute("aria-controls",t.id),o.addEventListener("click",function(e){this.toggle(t,e)}.bind(n)),o}[Element.prototype,CharacterData.prototype,DocumentType.prototype].forEach(function(e){Object.prototype.hasOwnProperty.call(e,"remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){null!==this.parentNode&&this.parentNode.removeChild(this)}})});var c,p,y,g,b=function(){for(var e=this,t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];var r=y&&!g;clearTimeout(g),g=setTimeout(function(){g=null,y||c.apply(e,n)},p),r&&c.apply(this,n)},v={speed:p=100,collapsedHeight:200,heightMargin:16,moreLink:'<button class="show-more"><span class="text">Show More</span>\n                    <span class="arrow-up"></span></button>',lessLink:'<a href="#"><button class="show-more"><span class="text">Show Less</span>\n                    <span class="arrow-up rotate"></span></button></a>',embedCSS:!0,blockCSS:"display: block; width: 100%;",startOpen:!(c=function(){a(document.querySelectorAll("[data-readmore]"),function(e){var t="true"===e.getAttribute("aria-expanded");f(e),e.style.height="".concat(t?e.readmore.expandedHeight:e.readmore.collapsedHeight,"px")})}),sourceOrder:"after",blockProcessed:function(){},beforeToggle:function(){},afterToggle:function(){}},o=function(){function c(){var o=this;if(s()(this,c),"undefined"!=typeof window&&"undefined"!=typeof document&&document.querySelectorAll&&window.addEventListener){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t[0],l=t[1],i="string"==typeof r?document.querySelectorAll(r):r.nodeName?[r]:r;i.length&&(this.options=function t(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];var r={}.hasOwnProperty,l=n[0],i=n[1];if(2<n.length){var c=[];for(Object.keys(n).forEach(function(e){c.push(n[e])});2<c.length;){var s=c.shift(),a=c.shift();c.unshift(t(s,a))}l=c.shift(),i=c.shift()}return i&&Object.keys(i).forEach(function(e){r.call(i,e)&&("object"===u()(i[e])?(l[e]=l[e]||{},l[e]=t(l[e],i[e])):l[e]=i[e])}),l}({},v,l),"string"==typeof r?m(r,this.options):(this.instanceSelector=".".concat(d()),m(this.instanceSelector,this.options)),window.addEventListener("load",b),window.addEventListener("resize",b),this.elements=[],a(i,function(e){o.instanceSelector&&e.classList.add(o.instanceSelector.substr(1));var t=o.options.startOpen;e.readmore={defaultHeight:o.options.collapsedHeight,heightMargin:o.options.heightMargin},f(e);var n=e.readmore.heightMargin;e.getBoundingClientRect().height<=e.readmore.collapsedHeight+n?"function"==typeof o.options.blockProcessed&&o.options.blockProcessed(e,!1):(e.setAttribute("data-readmore",""),e.setAttribute("aria-expanded",t),e.id=e.id||d(),n=h(t?o.options.lessLink:o.options.moreLink,e,o),e.parentNode.insertBefore(n,"before"===o.options.sourceOrder?e:e.nextSibling),e.style.height="".concat(t?e.readmore.expandedHeight:e.readmore.collapsedHeight,"px"),"function"==typeof o.options.blockProcessed&&o.options.blockProcessed(e,!0),o.elements.push(e))}))}}return r()(c,[{key:"toggle",value:function(){function e(n){var o=document.querySelector('[aria-controls="'.concat(n.id,'"]')),r=n.getBoundingClientRect().height<=n.readmore.collapsedHeight,e=r?n.readmore.expandedHeight:n.readmore.collapsedHeight;"function"==typeof l.options.beforeToggle&&!1===l.options.beforeToggle(o,n,!r)||(n.style.height="".concat(e,"px"),e=function e(t){"function"==typeof l.options.afterToggle&&l.options.afterToggle(o,n,r),t.stopPropagation(),n.setAttribute("aria-expanded",r),n.removeEventListener("transitionend",e,!1)},n.addEventListener("transitionend",e,!1),l.options.speed<1&&e.call(l,{target:n}),(e=r?l.options.lessLink:l.options.moreLink)?o&&o.parentNode&&o.parentNode.replaceChild(h(e,n,l),o):o.remove())}var l=this,t=arguments.length<=0?void 0:arguments[0];if(!(t="string"==typeof t?document.querySelectorAll(t):t))throw new Error("Element MUST be either an HTML node or querySelector string");var n=arguments.length<=1?void 0:arguments[1];n&&(n.preventDefault(),n.stopPropagation()),"object"!==u()(t)||t.nodeName?e(t):a(t,e)}},{key:"destroy",value:function(e){var n=this,e=e?"string"==typeof e?document.querySelectorAll(e):e.nodeName?[e]:e:this.elements;a(e,function(t){var e;-1!==n.elements.indexOf(t)&&(n.elements=n.elements.filter(function(e){return e!==t}),n.instanceSelector&&t.classList.remove(n.instanceSelector.substr(1)),delete t.readmore,t.style.height="initial",t.style.maxHeight="initial",t.removeAttribute("data-readmore"),t.removeAttribute("aria-expanded"),(e=document.querySelector('[aria-controls="'.concat(t.id,'"]')))&&e.remove(),-1!==t.id.indexOf("rmjs-")&&t.removeAttribute("id"))})}}]),c}();o.VERSION="3.0.0-beta-1",t.default=o},0:function(e,t,n){e.exports=n("./src/readmore.js")}},o={},r.m=n,r.c=o,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0).default;function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}var n,o}),document.querySelector(".js-header-search-input")&&(document.querySelector(".js-header-search-input").addEventListener("focus",function(){document.querySelector(".js-header-label").classList.add("bg-white")}),document.querySelector(".js-header-search-input").addEventListener("focusout",function(){document.querySelector(".js-header-label").classList.remove("bg-white")})),document.querySelector(".menu-item-has-children")&&(document.querySelector(".menu-item-has-children").addEventListener("mouseenter",function(){this.querySelector(".sub-menu").classList.add("show"),this.style.overflow="visible",this.querySelector(".sub-menu").style.transform="translateY(0)",this.querySelector(".header-dark .sub-menu")&&(this.querySelector(".header-dark .sub-menu").style.transform="translateY(16px)"),this.querySelector(".sub-menu").style.opacity="1"}),document.querySelector(".menu-item-has-children").addEventListener("mouseleave",function(){this.querySelector(".sub-menu").style.transform="translateY(100px)",setTimeout(()=>{this.style.overflow="hidden",this.querySelector(".sub-menu").classList.remove("show")},200),this.querySelector(".sub-menu").style.opacity="0"})),document.querySelector(".js-search-close-container")&&document.querySelector(".js-search-close-container").addEventListener("click",function(){const e=document.querySelector(".js-header-mobile__search"),t=document.querySelector(".js-header-mobile__search form"),n=[...this.children];document.querySelector(".js-mobile-header-search-input").focus(),e.classList.toggle("hide"),t.classList.toggle("hide"),n.forEach(e=>e.classList.toggle("d-none"))}),document.querySelector(".header-mobile__menu-icon").addEventListener("click",function(){const e=[...this.children];document.querySelector(".js-header-mobile__menu");e.forEach(e=>e.classList.toggle("d-none")),document.querySelector(".js-header-mobile__menu").classList.toggle("hide")});const lazyLoadInstance=new LazyLoad({elements_selector:".js-lazy",load_delay:1e3,threshold:200});document.querySelector(".js-header-mobile__menu")&&document.querySelectorAll(".js-header-mobile__menu>ul>li.menu-item-has-children").forEach(e=>{e.addEventListener("click",function(){e.style.maxHeight=e.scrollHeight+"px",this.classList.toggle("is-open")})});let counter=0,readMore;function registerShowMoreAction(){document.querySelectorAll(".single__main__header__desc")&&(document.querySelectorAll(".single__main__header__desc").forEach(function(o,e){o.getAttribute("data-rendered")||(readMore=new Readmore(o,{speed:100,afterToggle:function(e,t,n){},beforeToggle:function(e,t,n){n&&(o.dataset.resize=!0,"block"===document.querySelector(".popup-container").style.display?document.querySelector(".popup-container").scrollTop=0:(document.body.scrollTop=0,document.documentElement.scrollTop=0))}}),o.dataset.rendered=!0)}),document.querySelectorAll(".popup-container .single__main__header__desc").forEach(function(o,e){readMore&&readMore.destroy(),readMore=new Readmore(o,{speed:100,afterToggle:function(e,t,n){},beforeToggle:function(e,t,n){n&&(o.dataset.resize=!0,"block"===document.querySelector(".popup-container").style.display?document.querySelector(".popup-container").scrollTop=0:(document.body.scrollTop=0,document.documentElement.scrollTop=0))}})}),window.dispatchEvent(new Event("resize")))}function registerShowAllAction(){document.querySelector(".single__main__article__left-side__table-container")&&document.querySelectorAll(".show-all").forEach(t=>{t.addEventListener("click",function(){let e=this.closest("td").querySelector("a");e&&(e.style.overflow="unset",e.style.whiteSpace="unset"),this.style.display="none",t.parentElement.parentElement.parentElement.querySelectorAll(".collapsable").forEach(e=>{e.classList.add("show")})})})}if(registerShowMoreAction(),registerShowAllAction(),document.querySelector(".resource__other")){let o=0;function mockupsController(n){document.querySelectorAll(".resource__card").forEach((e,t)=>{t<n?document.getElementsByClassName("resource__card")[t].classList.remove("d-none"):o++}),o?document.querySelector(".resource__other .number-of-hiddens").innerHTML=o:document.querySelector(".resource__other").classList.add("d-none")}let e=parseInt(document.querySelector("#catsnumbertodisplay").value);mockupsController(e),document.querySelector(".resource__other").addEventListener("click",function(){document.querySelectorAll(".resource__card").forEach(e=>{e.classList.remove("d-none"),document.querySelector(".resource__other").classList.add("d-none")})})}if(document.querySelector(".index__header")){let e=document.querySelector(".menu-item-has-children");e&&(document.querySelector(".menu-item-has-children .sub-menu"),window.addEventListener("resize",function(){window.innerWidth<1244?(document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px",window.addEventListener("resize",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px"}),document.querySelector(".header-light").addEventListener("scroll",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px"}),e.addEventListener("mouseenter",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px"})):(document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-50+"px",window.addEventListener("resize",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-50+"px"}),document.querySelector(".header-light").addEventListener("scroll",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-50+"px"}),e.addEventListener("mouseenter",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-50+"px"}))})),document.querySelector(".menu-item-has-children .sub-menu")&&(window.innerWidth<1244?(document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px",window.addEventListener("resize",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px"}),document.querySelector(".header-light").addEventListener("scroll",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px"}),e.addEventListener("mouseenter",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+130-document.querySelector(".header-light").scrollLeft+"px"})):(document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-45+"px",window.addEventListener("resize",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-45+"px"}),document.querySelector(".header-light").addEventListener("scroll",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-45+"px"}),e.addEventListener("mouseenter",function(){document.querySelector(".menu-item-has-children .sub-menu").style.left=e.offsetLeft+document.querySelector(".header-light").offsetLeft-45+"px"})))}if(document.querySelector(".popup-container .close-btn")&&document.querySelector(".popup-container .close-btn").addEventListener("click",function(){document.querySelector("body").style.overflowY="auto",document.querySelector(".popup-container").style.display="none",document.querySelector(".popup-container #popup").innerHTML=""}),document.querySelector(".header-scroll-btn")){let e=0,t;document.querySelector(".right").addEventListener("click",function(){e<document.querySelector(".header-light__navigation").clientWidth-document.querySelector(".header-light").clientWidth?(e+=100,document.querySelector(".header-light").scroll(e,0)):document.querySelector(".header-light").scroll(document.querySelector(".header-light__navigation").clientWidth-document.querySelector(".header-light").clientWidth+e,0)}),document.querySelector(".left").addEventListener("click",function(){0<e&&(e-=100,document.querySelector(".header-light").scroll(e,0))}),scrollBarTopHeaderLight()}function scrollBarTopHeaderLight(){document.querySelector(".index__header .header-dark .header-light")&&(window.innerWidth-200<document.querySelector(".header-light__navigation").clientWidth?(document.querySelector(".index__header .header-dark .header-light").style.overflowX="scroll",document.querySelector(".header-scroll-btn.right").style.display="block",document.querySelector(".header-scroll-btn.left").style.display="block"):(document.querySelector(".index__header .header-dark .header-light").style.overflowX="hidden",document.querySelector(".header-scroll-btn.right").style.display="none",document.querySelector(".header-scroll-btn.left").style.display="none"))}window.addEventListener("resize",scrollBarTopHeaderLight),document.querySelector("#popup")&&(window.innerWidth<768&&document.querySelector(".next-btn")?(document.querySelector(".next-btn").classList.add("display-none"),document.querySelector(".prev-btn").classList.add("display-none")):(document.querySelector(".next-btn").classList.remove("display-none"),document.querySelector(".prev-btn").classList.remove("display-none")),window.addEventListener("resize",function(){window.innerWidth<768?(document.querySelector(".next-btn").classList.add("display-none"),document.querySelector(".prev-btn").classList.add("display-none")):(document.querySelector(".next-btn").classList.remove("display-none"),document.querySelector(".prev-btn").classList.remove("display-none"))})),window.addEventListener("click",function(e){e.target.classList.contains("popup-container")&&document.querySelector(".popup-container .close-btn").click()});
if(document.querySelector('#popup')){
if(window.innerWidth < 768&&document.querySelector('.next-btn')){
document.querySelector('.next-btn').classList.add('display-none')
document.querySelector('.prev-btn').classList.add('display-none')
}else{
document.querySelector('.next-btn').classList.remove('display-none')
document.querySelector('.prev-btn').classList.remove('display-none')
}
window.addEventListener('resize', function (){
if(window.innerWidth < 768){
document.querySelector('.next-btn').classList.add('display-none')
document.querySelector('.prev-btn').classList.add('display-none')
}else{
document.querySelector('.next-btn').classList.remove('display-none')
document.querySelector('.prev-btn').classList.remove('display-none')
}})
const articlesNumber=document.querySelectorAll('.articles article').length;
function ajaxRequestPopupProducts(method, url, args, async=true){
let popupContainer=document.querySelector('.popup-container');
popupContainer.querySelector('.popup-container #popup').innerHTML='<div class="popup-loading-container"><div class="popup-loading"></div></div>'
var xhttp=new XMLHttpRequest();
xhttp.open(method, url, async);
xhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhttp.send(args);
xhttp.onreadystatechange=function (){
if(this.readyState==4&&this.status==200){
popupContainer.querySelector("#popup").innerHTML +=`<div id="the_content" style="display: none">` + this.responseText + `</div>`;
lazyLoadInstance.update();
registerLoadMoreAction();
registerShowAllAction();
downloadCounterAjax();
let currentCats=document.querySelector("#LoadMorecats").value;
let loadMorePostPerPage=document.querySelector("#LoadMorePostPerPage").value;
let loadMoreCounter=parseInt(document.querySelector("#cntr").value);
let loadMoreCats=rbStringifyJsonValue(currentCats);
let loadMoreOrderBy=document.querySelector("#LoadMoreorderby").value;
let loadMoreOrder=document.querySelector("#LoadMoreorder").value;
let loadMoreCurrentProductID=document.querySelector("#LoadMoreCurrentProduct").value;
loadMoreAjax(loadMorePostPerPage, loadMoreCounter, loadMoreCats, loadMoreOrderBy, loadMoreOrder, loadMoreCurrentProductID);
popupContainer.querySelector(".popup-loading-container").style.display='none';
popupContainer.querySelector("#the_content").style.display='block';
registerShowMoreAction();
}};}}
function callPopupBlock(){
if(!document.querySelector('.tax-software')){
document.querySelectorAll('.article__img, .articleLink').forEach(item=> {
item.addEventListener('click', function (e){
e.preventDefault();
document.querySelector('body').style.overflowY='hidden'
let article=this.closest('article');
if(article.querySelector('.articleLink')){
const currentUrl=window.location.href;
let aTag=article.querySelector('.articleLink');
let newUrl=aTag.getAttribute('href');
window.history.replaceState({}, "", newUrl);
if(document.querySelector(".close-btn")){
document.querySelector(".close-btn").addEventListener('click', function (e){
window.history.replaceState({}, "", currentUrl);
});
}}
let currentId=article.dataset.currentid;
let prevID=article.dataset.previd;
let nextID=article.dataset.nextid;
let popupContainer=document.querySelector('.popup-container');
let prevBtn=document.querySelector('.prev-btn');
let nextBtn=document.querySelector('.next-btn');
let type=document.querySelector('.typeofpopup').value;
let args={
'id': currentId,
'type': type,
'nonce': resourceboy_LoadPopup_ajax.nonce
}
let url=resourceboy_LoadPopup_ajax.ajaxurl + '?action=LoadPopup';
args=JSON.stringify(args);
ajaxRequestPopupProducts('POST', url, args, true);
if(prevID!=0){
prevBtn.style.display='block'
}else{
prevBtn.style.display='none'
}
if(nextID!=0){
nextBtn.style.display='block'
}else{
nextBtn.style.display='none'
}
document.querySelector('.prev-btn').addEventListener('click', function (){
let type=document.querySelector('.typeofpopup').value;
let args1={
'id': prevID,
'type': type,
'nonce': resourceboy_LoadPopup_ajax.nonce
}
let url=resourceboy_LoadPopup_ajax.ajaxurl + '?action=LoadPopup';
args1=JSON.stringify(args1);
ajaxRequestPopupProducts('POST', url, args1, true);
article=document.querySelector(`article[data-currentid="${+prevID}"]`)
currentId=article.dataset.currentid
let aTag=article.querySelector('.articleLink');
let newUrl=aTag.getAttribute('href')
window.history.replaceState({}, "", newUrl);
prevID=article.dataset.previd
nextID=article.dataset.nextid
if(prevID!=0){
prevBtn.style.display='block'
}else{
prevBtn.style.display='none'
}
if(nextID!=0){
nextBtn.style.display='block'
}else{
nextBtn.style.display='none'
}})
document.querySelector('.next-btn').addEventListener('click', function (){
let type=document.querySelector('.typeofpopup').value;
let args2={
'id': nextID,
'type': type,
'nonce': resourceboy_LoadPopup_ajax.nonce
}
let url=resourceboy_LoadPopup_ajax.ajaxurl + '?action=LoadPopup';
args2=JSON.stringify(args2);
ajaxRequestPopupProducts('POST', url, args2, true);
article=document.querySelector(`article[data-currentid="${+nextID}"]`)
let aTag=article.querySelector('.articleLink');
let newUrl=aTag.getAttribute('href')
window.history.replaceState({}, "", newUrl);
currentId=article.dataset.currentid
prevID=article.dataset.previd
nextID=article.dataset.nextid
if(prevID!=0){
prevBtn.style.display='block'
}else{
prevBtn.style.display='none'
}
if(nextID!=0){
nextBtn.style.display='block'
}else{
nextBtn.style.display='none'
}})
document.querySelector('.popup-container').style.display="block"
})
})
}}
function downloadCounterAjax(){
if(document.querySelector('.free-download')){
document.querySelectorAll('.free-download').forEach(item=> {
item.addEventListener('click', function (){
let productid=item.dataset.productid;
let argumants={
'id': productid,
'nonce': resourceboy_counter_ajax.nonce
};
let url=resourceboy_counter_ajax.ajaxurl + '?action=edit_Product_download_counter';
let params=JSON.stringify(argumants);
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (e){
if(this.readyState==4&&this.status==200){
item.closest('div').querySelector('#downloads').innerHTML=xhttp.responseText;
}};
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhttp.send(params);
});
});
}}
downloadCounterAjax();
function loadMoreAjax(postPerPagae, page, cats, orderby, order, currentProductID){
if(document.querySelector("#LoadMoreAjaxbtn")&&document.querySelector("#popupAjaxMain")){
document.querySelector("#LoadMoreAjaxbtn").addEventListener('click', function (e){
let products_current_page=parseInt(document.querySelector(".popup  #cntr").value);
let el=document.querySelector(".popup #cntr");
el.parentNode.removeChild(el);
let rem=document.querySelector(".popup #lastpagerem");
rem.parentNode.removeChild(rem);
let args={
posts_per_page: postPerPagae,
page: products_current_page,
cats: cats,
current_product_id: currentProductID,
orderby: orderby,
order: order,
type: 'popup',
nonce: resourceboy_LoadMore_ajax.nonce
}
let url=resourceboy_LoadMore_ajax.ajaxurl + '?action=loadmore_products';
let params=JSON.stringify(args);
var xhttp=new XMLHttpRequest();
xhttp.onreadystatechange=function (e){
if(this.readyState==4&&this.status==200){
if(xhttp.responseText==''){
let elm=document.querySelector("#LoadMoreAjaxbtn");
elm.style.display='none';
}
document.querySelector(".popup #articles-container-ajax").innerHTML +=xhttp.responseText;
lazyLoadInstance.update();
if(document.querySelector(".popup #lastpagerem")){
if(document.querySelector(".popup #lastpagerem").value==1){
let elm=document.querySelector("#LoadMoreAjaxbtn");
elm.style.display='none';
}}
document.querySelector("#LoadMoreAjaxbtn").classList.remove("load-more--loading");
}};
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhttp.send(params);
});
}}
function registerLoadMoreAction(){
if(document.querySelector("#LoadMoreAjaxbtn")){
document.querySelector("#LoadMoreAjaxbtn").addEventListener('click', function (e){
document.querySelector("#LoadMoreAjaxbtn").classList.add("load-more--loading");
})
}}
function rbStringifyJsonValue(data){
try {
return JSON.parse(data);
} catch (ex){
return [];
}};