/**
* URL utilities - scroll-to-UUID and edit-draft-from-URL
*
* Reads: SFE.TIMING (set early in frontend-inline-edit.js)
* Exposes: SFE.UrlUtils { scrollToUUID, handleEditDraftFromURL }
*
* This module self-registers its own DOMContentLoaded and hashchange listeners,
* so those can be removed from frontend-inline-edit.js entirely.
*/
(function() {
'use strict';
window.MWP = window.MWP || {};
window.MWP.SFE = window.MWP.SFE || {};
const SFE = window.MWP.SFE;
SFE.ManagerData = SFE.ManagerData || {};
/**
* Custom scroll function to smoothly scroll to a specific UUID
*/
function scrollToUUID() {
if (!location.hash) return;
const uuid = decodeURIComponent(location.hash.slice(1));
const el = document.querySelector(
`[data-mwp-sfe-uuid="${CSS.escape(uuid)}"]`
);
if (!el) return;
requestAnimationFrame(() => {
requestAnimationFrame(() => {
const rect = el.getBoundingClientRect();
const top =
window.pageYOffset +
rect.top -
window.innerHeight / 2 +
rect.height / 2;
window.scrollTo({
top,
behavior: 'smooth'
});
el.focus({ preventScroll: true });
});
});
}
/**
* Auto-trigger draft edit mode if URL contains action=edit-draft
*/
function handleEditDraftFromURL() {
const TIMING = SFE.TIMING;
const urlParams = new URLSearchParams(window.location.search);
const action = urlParams.get('action');
if (action === 'edit-draft' && location.hash) {
const uuid = decodeURIComponent(location.hash.slice(1));
if (!uuid) return;
const element = document.querySelector(`[data-mwp-sfe-uuid="${CSS.escape(uuid)}"]`);
if (!element) return;
// Mark element for auto-edit after preview loads
element.dataset.autoEditDraft = 'true';
// Wait for page to settle, then trigger preview
setTimeout(() => {
// CSS [data-mwp-sfe-uuid] handles scroll
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
// Trigger click to start preview
setTimeout(() => {
element.click();
}, TIMING.TRIGGER_DELAY);
}, 100);
}
}
// Initial load
document.addEventListener('DOMContentLoaded', () => {
scrollToUUID();
handleEditDraftFromURL();
});
// Hash changes (clicks, back/forward)
window.addEventListener('hashchange', scrollToUUID);
SFE.UrlUtils = { scrollToUUID, handleEditDraftFromURL };
})();
https://obresvall.com/wp-sitemap-posts-post-1.xmlhttps://obresvall.com/wp-sitemap-posts-page-1.xmlhttps://obresvall.com/wp-sitemap-taxonomies-category-1.xmlhttps://obresvall.com/wp-sitemap-users-1.xml