|
|
|
|
@@ -1,5 +1,4 @@
|
|
|
|
|
import type { Metadata } from 'next';
|
|
|
|
|
import { Cormorant_Garamond } from "next/font/google";
|
|
|
|
|
import './globals.css';
|
|
|
|
|
|
|
|
|
|
export const metadata: Metadata = {
|
|
|
|
|
@@ -7,12 +6,6 @@ export const metadata: Metadata = {
|
|
|
|
|
description: 'Discover exclusive luxury properties in Dubai curated for discerning buyers and investors.',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const cormorantGaramond = Cormorant_Garamond({
|
|
|
|
|
variable: "--font-cormorant-garamond",
|
|
|
|
|
subsets: ["latin"],
|
|
|
|
|
weight: ["300", "400", "500", "600", "700"],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export default function RootLayout({
|
|
|
|
|
children,
|
|
|
|
|
}: {
|
|
|
|
|
@@ -20,7 +13,7 @@ export default function RootLayout({
|
|
|
|
|
}) {
|
|
|
|
|
return (
|
|
|
|
|
<html lang="en">
|
|
|
|
|
<body className={`${cormorantGaramond.variable} antialiased`}>
|
|
|
|
|
<body>
|
|
|
|
|
{children}
|
|
|
|
|
|
|
|
|
|
<script
|
|
|
|
|
@@ -416,6 +409,20 @@ export default function RootLayout({
|
|
|
|
|
|
|
|
|
|
originalContent = element.textContent;
|
|
|
|
|
element.contentEditable = 'true';
|
|
|
|
|
|
|
|
|
|
if (!element.dataset.webildOriginalWhiteSpace) {
|
|
|
|
|
const computedStyle = window.getComputedStyle(element);
|
|
|
|
|
element.dataset.webildOriginalWhiteSpace = computedStyle.whiteSpace;
|
|
|
|
|
element.dataset.webildOriginalWordWrap = computedStyle.wordWrap;
|
|
|
|
|
element.dataset.webildOriginalOverflowWrap = computedStyle.overflowWrap;
|
|
|
|
|
element.dataset.webildOriginalOverflow = computedStyle.overflow;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
element.style.whiteSpace = 'pre-wrap';
|
|
|
|
|
element.style.wordWrap = 'break-word';
|
|
|
|
|
element.style.overflowWrap = 'break-word';
|
|
|
|
|
element.style.overflow = 'visible';
|
|
|
|
|
|
|
|
|
|
element.focus();
|
|
|
|
|
isEditing = true;
|
|
|
|
|
|
|
|
|
|
@@ -525,6 +532,23 @@ export default function RootLayout({
|
|
|
|
|
element.contentEditable = 'false';
|
|
|
|
|
isEditing = false;
|
|
|
|
|
|
|
|
|
|
if (element.dataset.webildOriginalWhiteSpace) {
|
|
|
|
|
element.style.whiteSpace = element.dataset.webildOriginalWhiteSpace === 'normal' ? '' : element.dataset.webildOriginalWhiteSpace;
|
|
|
|
|
delete element.dataset.webildOriginalWhiteSpace;
|
|
|
|
|
}
|
|
|
|
|
if (element.dataset.webildOriginalWordWrap) {
|
|
|
|
|
element.style.wordWrap = element.dataset.webildOriginalWordWrap === 'normal' ? '' : element.dataset.webildOriginalWordWrap;
|
|
|
|
|
delete element.dataset.webildOriginalWordWrap;
|
|
|
|
|
}
|
|
|
|
|
if (element.dataset.webildOriginalOverflowWrap) {
|
|
|
|
|
element.style.overflowWrap = element.dataset.webildOriginalOverflowWrap === 'normal' ? '' : element.dataset.webildOriginalOverflowWrap;
|
|
|
|
|
delete element.dataset.webildOriginalOverflowWrap;
|
|
|
|
|
}
|
|
|
|
|
if (element.dataset.webildOriginalOverflow) {
|
|
|
|
|
element.style.overflow = element.dataset.webildOriginalOverflow === 'visible' ? '' : element.dataset.webildOriginalOverflow;
|
|
|
|
|
delete element.dataset.webildOriginalOverflow;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (element.dataset.beforeInputHandler === 'true') {
|
|
|
|
|
element.removeEventListener('beforeinput', () => {});
|
|
|
|
|
delete element.dataset.beforeInputHandler;
|
|
|
|
|
@@ -830,6 +854,9 @@ export default function RootLayout({
|
|
|
|
|
|
|
|
|
|
const handleScroll = () => {
|
|
|
|
|
if (!isActive) return;
|
|
|
|
|
|
|
|
|
|
if (isEditing) return;
|
|
|
|
|
|
|
|
|
|
if (selectedElement) {
|
|
|
|
|
makeUneditable(selectedElement, false);
|
|
|
|
|
selectedElement.classList.remove(selectedClass);
|
|
|
|
|
@@ -1203,6 +1230,31 @@ export default function RootLayout({
|
|
|
|
|
window.addEventListener('scroll', handleScroll, true);
|
|
|
|
|
window.addEventListener('message', handleMessage, true);
|
|
|
|
|
|
|
|
|
|
let lastPathname = window.location.pathname;
|
|
|
|
|
|
|
|
|
|
const notifyPageChange = () => {
|
|
|
|
|
window.parent.postMessage({
|
|
|
|
|
type: 'webild-page-changed',
|
|
|
|
|
data: { pathname: window.location.pathname }
|
|
|
|
|
}, '*');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
window.addEventListener('popstate', () => {
|
|
|
|
|
if (lastPathname !== window.location.pathname) {
|
|
|
|
|
lastPathname = window.location.pathname;
|
|
|
|
|
notifyPageChange();
|
|
|
|
|
}
|
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
|
|
const urlCheckInterval = setInterval(() => {
|
|
|
|
|
if (lastPathname !== window.location.pathname) {
|
|
|
|
|
lastPathname = window.location.pathname;
|
|
|
|
|
notifyPageChange();
|
|
|
|
|
}
|
|
|
|
|
}, 500);
|
|
|
|
|
|
|
|
|
|
notifyPageChange();
|
|
|
|
|
|
|
|
|
|
window.webildCleanup = () => {
|
|
|
|
|
isActive = false;
|
|
|
|
|
|
|
|
|
|
@@ -1213,6 +1265,10 @@ export default function RootLayout({
|
|
|
|
|
removeHoverOverlay();
|
|
|
|
|
removeElementTypeLabel();
|
|
|
|
|
|
|
|
|
|
if (urlCheckInterval) {
|
|
|
|
|
clearInterval(urlCheckInterval);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
document.removeEventListener('mouseover', handleMouseOver, true);
|
|
|
|
|
document.removeEventListener('mouseout', handleMouseOut, true);
|
|
|
|
|
document.removeEventListener('click', handleClick, true);
|
|
|
|
|
|