Update .gitignore to include .env files, change page title to 'IRTH projects', add new floor plan images, and enhance DocumentTitle component for dynamic title management based on route. Refactor FloorPopup and FloorSelect components for improved functionality and maintainability.
@@ -13,6 +13,8 @@ dist
|
||||
dist-ssr
|
||||
dist.zip
|
||||
*.local
|
||||
.env
|
||||
*.env
|
||||
|
||||
public/virtual-tours
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/irth.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<title>Rove Home</title>
|
||||
<title>IRTH projects</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 467 KiB |
|
After Width: | Height: | Size: 471 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 463 KiB |
|
After Width: | Height: | Size: 450 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 318 KiB |
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 145 KiB |
@@ -0,0 +1,37 @@
|
||||
import { useEffect } from "react";
|
||||
import { useLocation, useParams } from "react-router";
|
||||
|
||||
const TITLES: Record<string, string> = {
|
||||
"dubai-marina": "Rove Home Dubai Marina",
|
||||
"marasi-drive": "Rove Home Marasi Drive",
|
||||
hq: "HQ by Rove",
|
||||
};
|
||||
|
||||
const DEFAULT_TITLE = "IRTH projects";
|
||||
|
||||
function getTitleForComplex(complexName: string | undefined): string {
|
||||
if (!complexName) return DEFAULT_TITLE;
|
||||
return TITLES[complexName] ?? DEFAULT_TITLE;
|
||||
}
|
||||
|
||||
function DocumentTitle() {
|
||||
const { pathname } = useLocation();
|
||||
const params = useParams();
|
||||
|
||||
useEffect(() => {
|
||||
const complexName = params.complexName ?? params.complexSlug;
|
||||
|
||||
const isInBuilding =
|
||||
pathname.startsWith("/complex/") ||
|
||||
pathname.startsWith("/unit-types/") ||
|
||||
pathname.startsWith("/virtual-tour/");
|
||||
|
||||
document.title = isInBuilding
|
||||
? getTitleForComplex(complexName)
|
||||
: DEFAULT_TITLE;
|
||||
}, [pathname, params.complexName, params.complexSlug]);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
export default DocumentTitle;
|
||||
@@ -23,14 +23,12 @@ function getAmenitiesCount(complexName: string, title: string) {
|
||||
|
||||
function FloorPopup({ title, complexName, data, onSelect }: FloorPopupProps) {
|
||||
const { setPopup } = usePopupStore();
|
||||
const amenitiesCount = useMemo(
|
||||
() => {
|
||||
// Check if title is in SPECIAL_FLOORS or try to get amenities count
|
||||
const amenities = getAmenitiesCount(complexName, title);
|
||||
return amenities || null;
|
||||
},
|
||||
[title, complexName]
|
||||
);
|
||||
|
||||
const amenitiesCount = useMemo(() => {
|
||||
// Check if title is in SPECIAL_FLOORS or try to get amenities count
|
||||
const amenities = getAmenitiesCount(complexName, title);
|
||||
return amenities || null;
|
||||
}, [title, complexName]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col 2xl:gap-y-[0.556vw] gap-y-2">
|
||||
@@ -43,21 +41,23 @@ function FloorPopup({ title, complexName, data, onSelect }: FloorPopupProps) {
|
||||
)}
|
||||
</div>
|
||||
<div className="flex 2xl:gap-[0.278vw] gap-1">
|
||||
<p className="2xl:px-[0.556vw] 2xl:py-[0.278vw] px-2 py-0.5 bg-[#F3F3F2] 2xl:rounded-[0.278vw] rounded text-caption-s opacity-70">
|
||||
{amenitiesCount !== null
|
||||
? `${amenitiesCount?.total} Amenities`
|
||||
: `${
|
||||
complexName === "marasi-drive" && data
|
||||
? data[
|
||||
title.split(" ")[0] === "East"
|
||||
? "East"
|
||||
: title.split(" ")[0] === "West"
|
||||
? "West"
|
||||
: "others"
|
||||
]?.totalUnits
|
||||
: data?.others.totalUnits
|
||||
} apartments`}
|
||||
</p>
|
||||
{(data || amenitiesCount) && (
|
||||
<p className="2xl:px-[0.556vw] 2xl:py-[0.278vw] px-2 py-0.5 bg-[#F3F3F2] 2xl:rounded-[0.278vw] rounded text-caption-s opacity-70">
|
||||
{amenitiesCount !== null
|
||||
? `${amenitiesCount?.total} Amenities`
|
||||
: `${
|
||||
complexName === "marasi-drive"
|
||||
? data[
|
||||
title.split(" ")[0] === "East"
|
||||
? "East"
|
||||
: title.split(" ")[0] === "West"
|
||||
? "West"
|
||||
: "others"
|
||||
]?.totalUnits
|
||||
: data?.others.totalUnits
|
||||
} apartments`}
|
||||
</p>
|
||||
)}
|
||||
{!amenitiesCount && (
|
||||
<div className="2xl:px-[0.556vw] 2xl:py-[0.278vw] px-2 py-0.5 bg-[#30B216] bg-opacity-[8%] 2xl:rounded-[0.278vw] rounded flex 2xl:gap-[0.278vw] gap-1">
|
||||
<span className="2xl:size-[0.833vw] size-3 text-[#30B216]">
|
||||
@@ -68,50 +68,52 @@ function FloorPopup({ title, complexName, data, onSelect }: FloorPopupProps) {
|
||||
)}
|
||||
</div>
|
||||
{((amenitiesCount?.indoor && amenitiesCount?.outdoor) ||
|
||||
!amenitiesCount) && (
|
||||
<hr className="border-[#E2E2DC] 2xl:h-[0.069vw] h-px" />
|
||||
!amenitiesCount) &&
|
||||
data && <hr className="border-[#E2E2DC] 2xl:h-[0.069vw] h-px" />}
|
||||
{data && (
|
||||
<div className="flex flex-col 2xl:gap-y-[0.556vw] gap-y-2">
|
||||
{!amenitiesCount ? (
|
||||
Object.entries(
|
||||
data[
|
||||
title.split(" ")[0] === "East"
|
||||
? "East"
|
||||
: title.split(" ")[0] === "West"
|
||||
? "West"
|
||||
: "others"
|
||||
].types
|
||||
).map(([unitType, count]) => (
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2" key={unitType}>
|
||||
<p className="bg-[#00BED7] rounded-full flex justify-center items-center font-mono text-caption-s text-white 2xl:size-[1.111vw] size-4">
|
||||
{count}
|
||||
</p>
|
||||
<p className="text-caption-m opacity-70">
|
||||
{formattedUnitTypes.get(unitType) || unitType}
|
||||
</p>
|
||||
</div>
|
||||
))
|
||||
) : (
|
||||
<>
|
||||
{amenitiesCount?.indoor && (
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2">
|
||||
<p className="bg-[#00BED7] rounded-full flex justify-center items-center font-mono text-caption-s text-white 2xl:size-[1.111vw] size-4">
|
||||
{amenitiesCount.indoor}
|
||||
</p>
|
||||
<p className="text-caption-m opacity-70">Indoor Amenities</p>
|
||||
</div>
|
||||
)}
|
||||
{amenitiesCount?.outdoor && (
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2">
|
||||
<p className="bg-[#00BED7] rounded-full flex justify-center items-center font-mono text-caption-s text-white 2xl:size-[1.111vw] size-4">
|
||||
{amenitiesCount.outdoor}
|
||||
</p>
|
||||
<p className="text-caption-m opacity-70">Outdoor Amenities</p>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<div className="flex flex-col 2xl:gap-y-[0.556vw] gap-y-2">
|
||||
{!amenitiesCount && data ? (
|
||||
Object.entries(
|
||||
data[
|
||||
title.split(" ")[0] === "East"
|
||||
? "East"
|
||||
: title.split(" ")[0] === "West"
|
||||
? "West"
|
||||
: "others"
|
||||
].types
|
||||
).map(([unitType, count]) => (
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2" key={unitType}>
|
||||
<p className="bg-[#00BED7] rounded-full flex justify-center items-center font-mono text-caption-s text-white 2xl:size-[1.111vw] size-4">
|
||||
{count}
|
||||
</p>
|
||||
<p className="text-caption-m opacity-70">
|
||||
{formattedUnitTypes.get(unitType) || unitType}
|
||||
</p>
|
||||
</div>
|
||||
))
|
||||
) : (
|
||||
<>
|
||||
{amenitiesCount?.indoor && (
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2">
|
||||
<p className="bg-[#00BED7] rounded-full flex justify-center items-center font-mono text-caption-s text-white 2xl:size-[1.111vw] size-4">
|
||||
{amenitiesCount.indoor}
|
||||
</p>
|
||||
<p className="text-caption-m opacity-70">Indoor Amenities</p>
|
||||
</div>
|
||||
)}
|
||||
{amenitiesCount?.outdoor && (
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2">
|
||||
<p className="bg-[#00BED7] rounded-full flex justify-center items-center font-mono text-caption-s text-white 2xl:size-[1.111vw] size-4">
|
||||
{amenitiesCount.outdoor}
|
||||
</p>
|
||||
<p className="text-caption-m opacity-70">Outdoor Amenities</p>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<Button
|
||||
variant="cta"
|
||||
size="small"
|
||||
|
||||
@@ -604,7 +604,8 @@ function FloorSelect({
|
||||
floorData.floor === +floor!.split(" ").at(-1)! ||
|
||||
floorData.floor === +floor!.split(" ").at(-1)!.split("-")[0]
|
||||
) ||
|
||||
SPECIAL_FLOORS.includes(floor)
|
||||
SPECIAL_FLOORS.includes(floor) ||
|
||||
(["19-20", "23-24", "27-28"].includes(floor) && complexName === "hq")
|
||||
)
|
||||
setPopup(
|
||||
<FloorPopup
|
||||
@@ -697,6 +698,91 @@ function FloorSelect({
|
||||
className="pointer-events-none"
|
||||
/>
|
||||
<g ref={ref}>
|
||||
{Object.entries(
|
||||
floorsMasks[complexName as keyof typeof floorsMasks]
|
||||
).map(([floorTitle, d]) => (
|
||||
<path
|
||||
onMouseMove={!isMobile ? handleFloorMouseMove : undefined}
|
||||
onClick={() => {
|
||||
if (!isMobile && !hasMoved && !hasZoomed) {
|
||||
handleFloorClick(floorTitle);
|
||||
}
|
||||
}}
|
||||
// onTouchStart={(e) => {
|
||||
// // e.stopPropagation();
|
||||
// setPosition({
|
||||
// x: e.touches[0].clientX,
|
||||
// y: e.touches[0].clientY,
|
||||
// });
|
||||
// }}
|
||||
onTouchEnd={(e) => {
|
||||
if (isMobile && !hasMoved && !hasZoomed) {
|
||||
e.stopPropagation();
|
||||
|
||||
setHoveredFloor(
|
||||
SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!
|
||||
);
|
||||
|
||||
openPopup(
|
||||
floorTitle,
|
||||
!SPECIAL_FLOORS.includes(floorTitle) &&
|
||||
complexName === "marasi-drive"
|
||||
? (floorTitle.split(" ")[0] as "West" | "East")
|
||||
: undefined
|
||||
);
|
||||
}
|
||||
}}
|
||||
onMouseEnter={() => {
|
||||
setHoveredFloor(
|
||||
SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!
|
||||
);
|
||||
if (!isMobile)
|
||||
openPopup(
|
||||
floorTitle,
|
||||
!SPECIAL_FLOORS.includes(floorTitle) &&
|
||||
complexName === "marasi-drive"
|
||||
? (floorTitle.split(" ")[0] as "West" | "East")
|
||||
: undefined
|
||||
);
|
||||
}}
|
||||
onMouseLeave={(e) => {
|
||||
if (!isMobile) {
|
||||
const relatedTarget = (e.nativeEvent as MouseEvent)
|
||||
.relatedTarget;
|
||||
const movingToAnotherFloor =
|
||||
relatedTarget instanceof SVGPathElement &&
|
||||
ref.current?.contains(relatedTarget);
|
||||
if (!movingToAnotherFloor) {
|
||||
setPopup(null);
|
||||
setHoveredFloor(null);
|
||||
}
|
||||
}
|
||||
}}
|
||||
key={floorTitle}
|
||||
d={d}
|
||||
className={clsx(
|
||||
`fill-[#00BED7] cursor-pointer transition-opacity duration-300 hover:opacity-60 pointer-events-auto`,
|
||||
selectedFloor ===
|
||||
(SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!) ||
|
||||
hoveredFloor ===
|
||||
(SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!)
|
||||
? "opacity-60"
|
||||
: "opacity-20"
|
||||
)}
|
||||
/>
|
||||
))}
|
||||
{Object.entries(enumerationMasks[complexName]).map(
|
||||
([floorTitle, mask]) =>
|
||||
Array.isArray(mask) ? (
|
||||
@@ -777,84 +863,6 @@ function FloorSelect({
|
||||
</Fragment>
|
||||
)
|
||||
)}
|
||||
{Object.entries(
|
||||
floorsMasks[complexName as keyof typeof floorsMasks]
|
||||
).map(([floorTitle, d]) => (
|
||||
<path
|
||||
onMouseMove={!isMobile ? handleFloorMouseMove : undefined}
|
||||
onClick={() => {
|
||||
if (!isMobile && !hasMoved && !hasZoomed) {
|
||||
handleFloorClick(floorTitle);
|
||||
}
|
||||
}}
|
||||
// onTouchStart={(e) => {
|
||||
// // e.stopPropagation();
|
||||
// setPosition({
|
||||
// x: e.touches[0].clientX,
|
||||
// y: e.touches[0].clientY,
|
||||
// });
|
||||
// }}
|
||||
onTouchEnd={(e) => {
|
||||
if (isMobile && !hasMoved && !hasZoomed) {
|
||||
e.stopPropagation();
|
||||
|
||||
setHoveredFloor(
|
||||
SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!
|
||||
);
|
||||
|
||||
openPopup(
|
||||
floorTitle,
|
||||
!SPECIAL_FLOORS.includes(floorTitle) &&
|
||||
complexName === "marasi-drive"
|
||||
? (floorTitle.split(" ")[0] as "West" | "East")
|
||||
: undefined
|
||||
);
|
||||
}
|
||||
}}
|
||||
onMouseEnter={() => {
|
||||
setHoveredFloor(
|
||||
SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!
|
||||
);
|
||||
if (!isMobile)
|
||||
openPopup(
|
||||
floorTitle,
|
||||
!SPECIAL_FLOORS.includes(floorTitle) &&
|
||||
complexName === "marasi-drive"
|
||||
? (floorTitle.split(" ")[0] as "West" | "East")
|
||||
: undefined
|
||||
);
|
||||
}}
|
||||
onMouseLeave={() => {
|
||||
if (!isMobile) {
|
||||
setPopup(null);
|
||||
setHoveredFloor(null);
|
||||
}
|
||||
}}
|
||||
key={floorTitle}
|
||||
d={d}
|
||||
className={clsx(
|
||||
`fill-[#00BED7] cursor-pointer transition-opacity duration-300 hover:opacity-60 pointer-events-auto`,
|
||||
selectedFloor ===
|
||||
(SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!) ||
|
||||
hoveredFloor ===
|
||||
(SPECIAL_FLOORS.includes(floorTitle) ||
|
||||
complexName === "marasi-drive"
|
||||
? floorTitle
|
||||
: floorTitle.split(" ").at(-1)!)
|
||||
? "opacity-60"
|
||||
: "opacity-20"
|
||||
)}
|
||||
/>
|
||||
))}
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
@@ -10,6 +10,7 @@ import Logo from "./header/Logo";
|
||||
import NavItem from "./header/NavItem";
|
||||
import BrochuresDropdown from "./header/BrochuresDropdown";
|
||||
import MobileMenu from "./header/MobileMenu";
|
||||
import clsx from "clsx";
|
||||
|
||||
function Header() {
|
||||
function handleLogoClick() {
|
||||
@@ -31,14 +32,19 @@ function Header() {
|
||||
|
||||
return (
|
||||
<>
|
||||
<header className="sticky top-0 left-0 w-full h-14 md:max-2xl:h-16 2xl:h-[4.444vw] flex items-center justify-center bg-white ring-[0.069vw] ring-[#E2E2DC] z-20">
|
||||
<header
|
||||
className={clsx(
|
||||
"sticky top-0 left-0 w-full h-14 md:max-2xl:h-16 2xl:h-[4.444vw] flex items-center justify-center bg-white ring-[0.069vw] ring-[#E2E2DC] z-20",
|
||||
modal && "max-md:border-b border-[#E2E2DC]"
|
||||
)}
|
||||
>
|
||||
<div className="flex 2xl:gap-[1.111vw] gap-4 flex-1">
|
||||
<Logo onClick={handleLogoClick} />
|
||||
<div className="flex 2xl:gap-[0.278vw] gap-1 items-center max-md:hidden">
|
||||
<span className="2xl:size-[1.389vw] size-5 opacity-40">
|
||||
<LocationIcon />
|
||||
</span>
|
||||
<p className="opacity-40 text-s">Dubai</p>
|
||||
<p className="text-s opacity-40">Dubai</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="max-2xl:order-2">
|
||||
@@ -68,7 +74,11 @@ function Header() {
|
||||
</div>
|
||||
<div className="flex flex-1 justify-end">{/* <ProfileBar /> */}</div>
|
||||
</header>
|
||||
<MobileMenu opened={opened} onClose={() => setOpened(false)} menuRef={menuRef} />
|
||||
<MobileMenu
|
||||
opened={opened}
|
||||
onClose={() => setOpened(false)}
|
||||
menuRef={menuRef}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -7,20 +7,36 @@ import { motion } from "motion/react";
|
||||
import { useSwipeable } from "react-swipeable";
|
||||
|
||||
export interface InteriorSliderProps {
|
||||
unitTypeSlug: string;
|
||||
projectSlug: string;
|
||||
unitTypeSlug?: string;
|
||||
projectSlug?: string;
|
||||
mockImages?: string[];
|
||||
}
|
||||
|
||||
function InteriorSlider({ unitTypeSlug, projectSlug }: InteriorSliderProps) {
|
||||
const images = projects
|
||||
?.find((project) => project.slug === projectSlug)
|
||||
?.types.find((type) => type.slug === unitTypeSlug)?.interiors;
|
||||
function InteriorSlider({
|
||||
unitTypeSlug,
|
||||
projectSlug,
|
||||
mockImages,
|
||||
}: InteriorSliderProps) {
|
||||
const images =
|
||||
mockImages ||
|
||||
projects
|
||||
?.find((project) => project.slug === projectSlug)
|
||||
?.types.find((type) => type.slug === unitTypeSlug)?.interiors;
|
||||
|
||||
const [currentIndex, setCurrentIndex] = useState(0);
|
||||
|
||||
const handlers = useSwipeable({
|
||||
onSwipedLeft: () =>
|
||||
images && setCurrentIndex(Math.min(currentIndex + 1, images.length - 1)),
|
||||
onTouchStartOrOnMouseDown: ({ event }) => {
|
||||
// После первого кадра гасим всплытие, иначе вложенные trackMouse оба ловят жест; на первом кадре всплытие нужно внешнему слайдеру
|
||||
if (currentIndex > 0) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
},
|
||||
onSwipedLeft: () => {
|
||||
if (images) {
|
||||
setCurrentIndex(Math.min(currentIndex + 1, images.length - 1));
|
||||
}
|
||||
},
|
||||
onSwipedRight: () => setCurrentIndex(Math.max(currentIndex - 1, 0)),
|
||||
preventScrollOnSwipe: true,
|
||||
touchEventOptions: {
|
||||
@@ -46,7 +62,7 @@ function InteriorSlider({ unitTypeSlug, projectSlug }: InteriorSliderProps) {
|
||||
<img
|
||||
src={src}
|
||||
alt=""
|
||||
className="object-cover object-center flex-shrink-0 h-full pointer-events-none"
|
||||
className="size-full object-cover object-center flex-shrink-0 pointer-events-none"
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
|
||||
@@ -61,10 +61,7 @@ function ModalContainer() {
|
||||
className="absolute inset-0 cursor-pointer"
|
||||
onClick={() => setModal(null)}
|
||||
/>
|
||||
<div
|
||||
ref={containerRef}
|
||||
className="relative w-full max-md:border-t border-[#E2E2DC]"
|
||||
>
|
||||
<div ref={containerRef} className="relative w-full">
|
||||
{modal}
|
||||
<Button
|
||||
onlyIcon
|
||||
|
||||
@@ -52,9 +52,12 @@ function NewUnitSlider({ children }: PropsWithChildren) {
|
||||
});
|
||||
|
||||
const handlers = useSwipeable({
|
||||
onSwipedLeft: () =>
|
||||
slides[currentSlide].text !== "Interior" &&
|
||||
setCurrentSlide(Math.min(currentSlide + 1, slides.length - 1)),
|
||||
onSwipedLeft: () => {
|
||||
const slideText = slides[currentSlide]?.text;
|
||||
if (slideText !== "Interior") {
|
||||
setCurrentSlide(Math.min(currentSlide + 1, slides.length - 1));
|
||||
}
|
||||
},
|
||||
onSwipedRight: () => setCurrentSlide(Math.max(currentSlide - 1, 0)),
|
||||
preventScrollOnSwipe: true,
|
||||
touchEventOptions: {
|
||||
|
||||
@@ -3,15 +3,21 @@ import { api } from "../api/ky";
|
||||
import { Unit } from "../types/IUnit";
|
||||
import GenericFloorPlan from "./floor-plans/GenericFloorPlan";
|
||||
import { getFloorPlanConfigForUnit } from "../data/floor-plan-config";
|
||||
import { getSlugFromProjectName } from "../data/complex-config";
|
||||
import { ComplexName } from "../types/ComplexName";
|
||||
import { mergeHqLoungeVirtualUnits } from "../utils/hqLoungeVirtualUnits";
|
||||
|
||||
// ─── Helpers ─────────────────────────────────────────────
|
||||
|
||||
function getFloorParam(complexName: ComplexName, unit: Unit): string {
|
||||
if (complexName === "dubai-marina" && (unit.floor === 39 || unit.floor === 40))
|
||||
if (
|
||||
complexName === "dubai-marina" &&
|
||||
(unit.floor === 39 || unit.floor === 40)
|
||||
)
|
||||
return "39";
|
||||
if (complexName === "dubai-marina" && (unit.floor === 41 || unit.floor === 42))
|
||||
if (
|
||||
complexName === "dubai-marina" &&
|
||||
(unit.floor === 41 || unit.floor === 42)
|
||||
)
|
||||
return "41";
|
||||
if (complexName === "hq" && (unit.floor === 29 || unit.floor === 30))
|
||||
return "29";
|
||||
@@ -21,13 +27,17 @@ function getFloorParam(complexName: ComplexName, unit: Unit): string {
|
||||
// ─── Component ───────────────────────────────────────────
|
||||
|
||||
function OnFloorMask({ unit }: { unit: Unit }) {
|
||||
const complexName = getSlugFromProjectName(unit.project);
|
||||
const complexName = unit.projectSlug;
|
||||
const config = complexName
|
||||
? getFloorPlanConfigForUnit(complexName, unit)
|
||||
: null;
|
||||
const floorParam = complexName ? getFloorParam(complexName, unit) : "";
|
||||
|
||||
const { data: unitsOnFloor } = useQuery({
|
||||
enabled:
|
||||
!(
|
||||
complexName === "hq" && [19, 20, 23, 24, 27, 28].includes(unit.floor)
|
||||
) && !config,
|
||||
queryKey: ["units-on-floor", complexName, floorParam, unit.wing],
|
||||
queryFn: () =>
|
||||
api
|
||||
@@ -39,12 +49,20 @@ function OnFloorMask({ unit }: { unit: Unit }) {
|
||||
}`
|
||||
)
|
||||
.json<Unit[]>(),
|
||||
enabled: !!complexName && !!config,
|
||||
});
|
||||
|
||||
if (!complexName || !config) return null;
|
||||
|
||||
const units = unitsOnFloor ?? [unit];
|
||||
const baseUnits = unitsOnFloor ?? [unit];
|
||||
const units =
|
||||
complexName === "hq"
|
||||
? mergeHqLoungeVirtualUnits(
|
||||
baseUnits,
|
||||
unit.floor,
|
||||
config.masks,
|
||||
config.getMaskKey
|
||||
)
|
||||
: baseUnits;
|
||||
|
||||
// Marasi Drive uses component-based rendering (inline SVG)
|
||||
if (config.component) {
|
||||
|
||||
@@ -8,7 +8,6 @@ import { api } from "../api/ky";
|
||||
import IMarker from "../types/IMarker";
|
||||
import { formattedUnitTypes } from "../data/formattedUnitTypes";
|
||||
import { useNavigate } from "react-router";
|
||||
import { useEffect } from "react";
|
||||
|
||||
function SelectedComplexCard({
|
||||
marker,
|
||||
@@ -27,10 +26,6 @@ function SelectedComplexCard({
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
console.log(marker);
|
||||
}, [marker]);
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
key={marker.name}
|
||||
|
||||
@@ -14,6 +14,8 @@ interface UnitPopupProps {
|
||||
balconyArea: number;
|
||||
price: number;
|
||||
complexName: string;
|
||||
/** HQ shared lounge (unit number …00); popup shows title + floor only */
|
||||
isLounge?: boolean;
|
||||
}
|
||||
|
||||
function UnitPopup({
|
||||
@@ -23,6 +25,7 @@ function UnitPopup({
|
||||
unitNumber,
|
||||
squareFt,
|
||||
complexName,
|
||||
isLounge,
|
||||
}: UnitPopupProps) {
|
||||
const { setPopup } = usePopupStore();
|
||||
|
||||
@@ -31,48 +34,44 @@ function UnitPopup({
|
||||
<div className="2xl:space-y-[0.833vw] space-y-3">
|
||||
<div className="2xl:space-y-[0.556vw] space-y-2">
|
||||
<p className="text-h5 font-medium">
|
||||
{formattedUnitTypes.get(unitType) || unitType}
|
||||
{isLounge ? "Lounge" : formattedUnitTypes.get(unitType) || unitType}
|
||||
</p>
|
||||
<div className="flex items-center 2xl:gap-[0.556vw] gap-2">
|
||||
{wing && (
|
||||
{!isLounge && !!wing && (
|
||||
<>
|
||||
<p className="text-caption-s opacity-70">{wing} Wing</p>
|
||||
<div className="2xl:size-[0.278vw] size-1 rounded-full bg-[#E2E2DC]" />
|
||||
</>
|
||||
)}
|
||||
<p className="text-caption-s opacity-70">Floor {floor}</p>
|
||||
<div className="2xl:size-[0.278vw] size-1 rounded-full bg-[#E2E2DC]" />
|
||||
<p className="text-caption-s opacity-70">{unitNumber}</p>
|
||||
</div>
|
||||
<div className="2xl:p-[0.208vw] p-[3px] 2xl:rounded-[0.278vw] rounded bg-[#30B216] bg-opacity-[8%] flex 2xl:gap-[0.278vw] gap-1 w-fit">
|
||||
<span className="2xl:size-[0.833vw] size-3 text-[#30B216]">
|
||||
<HumanIcon />
|
||||
</span>
|
||||
<p className="text-caption-s text-[#30B216]">Virtual Tour</p>
|
||||
{!isLounge && (
|
||||
<>
|
||||
<div className="2xl:size-[0.278vw] size-1 rounded-full bg-[#E2E2DC]" />
|
||||
<p className="text-caption-s opacity-70">{unitNumber}</p>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
{!isLounge && (
|
||||
<div className="2xl:p-[0.208vw] p-[3px] 2xl:rounded-[0.278vw] rounded bg-[#30B216] bg-opacity-[8%] flex 2xl:gap-[0.278vw] gap-1 w-fit">
|
||||
<span className="2xl:size-[0.833vw] size-3 text-[#30B216]">
|
||||
<HumanIcon />
|
||||
</span>
|
||||
<p className="text-caption-s text-[#30B216]">Virtual Tour</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<hr className="2xl:h-[0.069vw] h-px border-[#E2E2DC]" />
|
||||
<div className="flex flex-col 2xl:gap-[0.556vw] gap-2">
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2 justify-between">
|
||||
<p className="text-caption-m opacity-70">Total Area</p>
|
||||
<p className="text-caption-m">{squareFt.toFixed(2)} Sqft</p>
|
||||
</div>
|
||||
{/* <div className="flex 2xl:gap-[0.556vw] gap-2 justify-between">
|
||||
<p className="text-caption-m opacity-70">Suites Area</p>
|
||||
<p className="text-caption-m">{suitesArea.toFixed(2)} Sqft</p>
|
||||
</div>
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2 justify-between">
|
||||
<p className="text-caption-m opacity-70">Balcony Area</p>
|
||||
<p className="text-caption-m">{balconyArea.toFixed(2)} Sqft</p>
|
||||
</div> */}
|
||||
</div>
|
||||
{/* <p className="text-h5 font-medium text-[#00BED7]">
|
||||
{`AED ${Intl.NumberFormat("ar-AE", {
|
||||
currency: "AED",
|
||||
minimumFractionDigits: 0,
|
||||
}).format(price)}`}
|
||||
</p> */}
|
||||
{!isLounge && !!squareFt && (
|
||||
<>
|
||||
<hr className="2xl:h-[0.069vw] h-px border-[#E2E2DC]" />
|
||||
<div className="flex flex-col 2xl:gap-[0.556vw] gap-2">
|
||||
<div className="flex 2xl:gap-[0.556vw] gap-2 justify-between">
|
||||
<p className="text-caption-m opacity-70">Total Area</p>
|
||||
<p className="text-caption-m">{squareFt.toFixed(2)} Sqft</p>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
<Button
|
||||
variant="cta"
|
||||
size="small"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
function VideoModal({ src }: { src: string }) {
|
||||
return (
|
||||
<div className="h-dvh flex z-10 justify-center items-center w-full">
|
||||
<div className="max-h-[95dvh] aspect-video flex z-10 justify-center items-center w-full">
|
||||
<video
|
||||
src={src}
|
||||
className="object-cover max-w-[95%] 2xl:rounded-[0.833vw] rounded-xl max-2xl:landscape:h-[calc(100dvh-56px)]"
|
||||
|
||||
@@ -31,7 +31,7 @@ interface GenericFloorPlanProps {
|
||||
children?: React.ReactNode;
|
||||
}
|
||||
|
||||
const defaultGetMaskKey = (unitNo: string) => unitNo.slice(-2);
|
||||
const defaultGetMaskKey = (unitNo: string) => unitNo.slice(0, 2);
|
||||
|
||||
// ─── Main component ──────────────────────────────────────
|
||||
|
||||
@@ -82,6 +82,7 @@ function GenericFloorPlan({
|
||||
{/* Unit overlays */}
|
||||
{units.map((unit) => {
|
||||
const maskKey = getMaskKey(unit.unitNo);
|
||||
|
||||
const maskData = masks.get(maskKey);
|
||||
|
||||
if (!maskData) return <Fragment key={unit.unitNo} />;
|
||||
@@ -161,6 +162,7 @@ function GenericFloorPlanUnit({
|
||||
suitesArea={u.suitsArea}
|
||||
balconyArea={u.balconyArea}
|
||||
price={u.salesPrice}
|
||||
isLounge={formattedUnitType === "Lounge"}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -175,21 +177,37 @@ function GenericFloorPlanUnit({
|
||||
|
||||
return (
|
||||
<g>
|
||||
<text
|
||||
transform={textTransform}
|
||||
className={clsx(
|
||||
"text-[8px] select-none",
|
||||
isUnitPage && !isOtherUnit ? "fill-[#374151]" : "fill-white"
|
||||
{!(
|
||||
complexName === "hq" &&
|
||||
[
|
||||
"19-20",
|
||||
"23-24",
|
||||
"27-28",
|
||||
"19",
|
||||
"20",
|
||||
"23",
|
||||
"24",
|
||||
"27",
|
||||
"28",
|
||||
].includes(floor || "")
|
||||
) &&
|
||||
formattedUnitType !== "Lounge" && (
|
||||
<text
|
||||
transform={textTransform}
|
||||
className={clsx(
|
||||
"text-[8px] select-none",
|
||||
isUnitPage && !isOtherUnit ? "fill-[#374151]" : "fill-white"
|
||||
)}
|
||||
textAnchor="middle"
|
||||
>
|
||||
<tspan x={0} y={0}>
|
||||
{unit.unitNo}
|
||||
</tspan>
|
||||
<tspan x={0} y={15}>
|
||||
{formattedUnitType}
|
||||
</tspan>
|
||||
</text>
|
||||
)}
|
||||
textAnchor="middle"
|
||||
>
|
||||
<tspan x={0} y={0}>
|
||||
{unit.unitNo}
|
||||
</tspan>
|
||||
<tspan x={0} y={15}>
|
||||
{formattedUnitType}
|
||||
</tspan>
|
||||
</text>
|
||||
<path
|
||||
onClick={
|
||||
!isUnitPage && !isMobile && !selectedUnit
|
||||
|
||||
@@ -12,6 +12,8 @@ import { isMobile } from "react-device-detect";
|
||||
import GenericFloorPlan from "./GenericFloorPlan";
|
||||
import { getFloorPlanConfig } from "../../data/floor-plan-config";
|
||||
import { getComplexConfig } from "../../data/complex-config";
|
||||
import { hqMockUnits } from "../../data/hq192327mockUnits";
|
||||
import { mergeHqLoungeVirtualUnits } from "../../utils/hqLoungeVirtualUnits";
|
||||
|
||||
// ─── Props ───────────────────────────────────────────────
|
||||
|
||||
@@ -36,6 +38,8 @@ function ResidentialFloorView({
|
||||
}: ResidentialFloorViewProps) {
|
||||
const { setPopup, setPosition } = usePopupStore();
|
||||
const [isCombinable, setIsCombinable] = useState(false);
|
||||
const [isLower, setIsLower] = useState(false);
|
||||
const [option, setOption] = useState<"1" | "2">("1");
|
||||
|
||||
const complexConfig = getComplexConfig(complexName);
|
||||
const floorNumber = floor.floorNumber;
|
||||
@@ -49,6 +53,8 @@ function ResidentialFloorView({
|
||||
const config = getFloorPlanConfig(complexName, selectedFloor, {
|
||||
isCombinable,
|
||||
wing: wing as "East" | "West",
|
||||
isLower,
|
||||
option,
|
||||
});
|
||||
|
||||
// ── Floor display name ─────────────────────────────────
|
||||
@@ -63,8 +69,7 @@ function ResidentialFloorView({
|
||||
: currentFloorData?.others?.totalUnits || 0;
|
||||
|
||||
// ── Special floor check (Dubai Marina: 39-40, 41-42) ──
|
||||
const isSpecialFloor =
|
||||
selectedFloor === "39-40" || selectedFloor === "41-42";
|
||||
const isSpecialFloor = selectedFloor === "39-40" || selectedFloor === "41-42";
|
||||
|
||||
// ── Select options ─────────────────────────────────────
|
||||
const selectOptions = getSelectOptions(complexName, floorsData);
|
||||
@@ -76,9 +81,12 @@ function ResidentialFloorView({
|
||||
>
|
||||
{/* ── Header ──────────────────────────────────────── */}
|
||||
<div className="2xl:space-y-[0.556vw] space-y-2 border-b border-[#E2E2DC] 2xl:pb-[1.667vw] pb-4">
|
||||
<p className="font-medium text-h4">{floorTitle}</p>
|
||||
<p className="text-h4 font-medium">{floorTitle}</p>
|
||||
<div className="flex items-center 2xl:gap-[0.278vw] gap-1">
|
||||
<Badge variant="secondary" text={`${totalUnits} Apartments`} />
|
||||
{!(
|
||||
complexName === "hq" &&
|
||||
[19, 20, 23, 24, 27, 28].includes(floor.floorNumber)
|
||||
) && <Badge variant="secondary" text={`${totalUnits} Apartments`} />}
|
||||
{complexConfig.hasCombinable && !isSpecialFloor && (
|
||||
<Badge variant="primary" text="Combinable" />
|
||||
)}
|
||||
@@ -122,6 +130,43 @@ function ResidentialFloorView({
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* HQ: 29-30 floor toggle (kostyl ebuchii) */}
|
||||
{complexName === "hq" &&
|
||||
[19, 23, 27, 29].includes(floor.floorNumber) && (
|
||||
<div className="flex gap-2 justify-center items-center">
|
||||
<Button
|
||||
variant={isLower ? "cta" : "primary"}
|
||||
onClick={() => setIsLower(true)}
|
||||
>
|
||||
Lower
|
||||
</Button>
|
||||
<Button
|
||||
variant={!isLower ? "cta" : "primary"}
|
||||
onClick={() => setIsLower(false)}
|
||||
>
|
||||
Upper
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* HQ: 19-23-27 floor toggle (kostyl ebuchii) */}
|
||||
{complexName === "hq" && [19, 23, 27].includes(floor.floorNumber) && (
|
||||
<div className="flex gap-2 justify-center items-center">
|
||||
<Button
|
||||
variant={option === "1" ? "cta" : "primary"}
|
||||
onClick={() => setOption("1")}
|
||||
>
|
||||
Option 1
|
||||
</Button>
|
||||
<Button
|
||||
variant={option === "2" ? "cta" : "primary"}
|
||||
onClick={() => setOption("2")}
|
||||
>
|
||||
Option 2
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* ── Floor plan ──────────────────────────────────── */}
|
||||
<div
|
||||
className="2xl:py-[1.667vw] 2xl:px-[1.111vw] max-2xl:p-4 border border-[#E2E2DC] 2xl:rounded-[0.833vw] rounded-lg relative 2xl:space-y-[2.222vw] space-y-8"
|
||||
@@ -133,7 +178,13 @@ function ResidentialFloorView({
|
||||
complexName={complexName}
|
||||
config={config}
|
||||
selectedFloor={selectedFloor}
|
||||
unitsOnFloor={unitsOnFloor}
|
||||
unitsOnFloor={
|
||||
complexName === "hq" && [19, 23, 27].includes(floor.floorNumber)
|
||||
? hqMockUnits[floor.floorNumber as keyof typeof hqMockUnits][
|
||||
isLower ? 0 : 1
|
||||
][option === "1" ? 0 : 1]
|
||||
: unitsOnFloor
|
||||
}
|
||||
floorNumber={floorNumber}
|
||||
/>
|
||||
</div>
|
||||
@@ -180,14 +231,33 @@ function getSelectOptions(
|
||||
|
||||
if (complexName === "hq") {
|
||||
if (!floorsData) return [];
|
||||
// Exclude floors 19, 20, 23, 24, 27, 28
|
||||
const excludedFloors = [19, 20, 23, 24, 27, 28];
|
||||
return floorsData
|
||||
.filter((item) => !excludedFloors.includes(item.floor))
|
||||
.map((item) => {
|
||||
if (item.floor === 29) return "29-30";
|
||||
return item.floor.toString();
|
||||
});
|
||||
return [
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"11",
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"17",
|
||||
"18",
|
||||
"19-20",
|
||||
"21",
|
||||
"22",
|
||||
"23-24",
|
||||
"25",
|
||||
"26",
|
||||
"27-28",
|
||||
"29-30",
|
||||
];
|
||||
// if (!floorsData) return [];
|
||||
// return floorsData.map((item) => {
|
||||
// if (item.floor === 29) return "29-30";
|
||||
// return item.floor.toString();
|
||||
// });
|
||||
}
|
||||
|
||||
// Default
|
||||
@@ -211,8 +281,7 @@ function UnitTypeBadges({
|
||||
wing: string;
|
||||
}) {
|
||||
if (complexName === "marasi-drive") {
|
||||
const wingData =
|
||||
currentFloorData?.[wing as "West" | "East"];
|
||||
const wingData = currentFloorData?.[wing as "West" | "East"];
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -309,6 +378,16 @@ function FloorPlanRenderer({
|
||||
}
|
||||
|
||||
// Image-based rendering (Dubai Marina, HQ)
|
||||
const units =
|
||||
complexName === "hq"
|
||||
? mergeHqLoungeVirtualUnits(
|
||||
unitsOnFloor,
|
||||
floorNumber,
|
||||
config.masks,
|
||||
config.getMaskKey
|
||||
)
|
||||
: unitsOnFloor;
|
||||
|
||||
return (
|
||||
<GenericFloorPlan
|
||||
complexName={complexName}
|
||||
@@ -318,7 +397,7 @@ function FloorPlanRenderer({
|
||||
getMaskKey={config.getMaskKey}
|
||||
filterUnits={config.filterUnits}
|
||||
selectedFloor={selectedFloor}
|
||||
unitsOnFloor={unitsOnFloor}
|
||||
unitsOnFloor={units}
|
||||
wing={config.wing}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -1,26 +1,33 @@
|
||||
// ─── Marasi Drive ────────────────────────────────────────
|
||||
|
||||
/** Marasi Drive East Wing lower: floors 5–21 */
|
||||
export const MARASI_EAST_LOWER_FLOORS = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21];
|
||||
export const MARASI_EAST_LOWER_FLOORS = [
|
||||
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
||||
];
|
||||
|
||||
/** Marasi Drive East Wing upper: floors 24–31 */
|
||||
export const MARASI_EAST_UPPER_FLOORS = [24, 25, 26, 27, 28, 29, 30, 31];
|
||||
|
||||
/** Marasi Drive West Wing lower: floors 5–21 */
|
||||
export const MARASI_WEST_LOWER_FLOORS = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21];
|
||||
export const MARASI_WEST_LOWER_FLOORS = [
|
||||
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
|
||||
];
|
||||
|
||||
/** Marasi Drive West Wing upper: floors 24–31 */
|
||||
export const MARASI_WEST_UPPER_FLOORS = [24, 25, 26, 27, 28, 29, 30, 31];
|
||||
|
||||
/** Legacy: Marasi Drive East Wing (all floors) */
|
||||
export const MARASI_EAST_FLOORS = [...MARASI_EAST_LOWER_FLOORS, ...MARASI_EAST_UPPER_FLOORS];
|
||||
export const MARASI_EAST_FLOORS = [
|
||||
...MARASI_EAST_LOWER_FLOORS,
|
||||
...MARASI_EAST_UPPER_FLOORS,
|
||||
];
|
||||
|
||||
// ─── Dubai Marina ────────────────────────────────────────
|
||||
|
||||
/** Dubai Marina: standard floors (7–38, excluding 21) */
|
||||
export const DUBAI_MARINA_STANDARD_FLOORS = [
|
||||
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
||||
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
|
||||
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27,
|
||||
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
|
||||
];
|
||||
|
||||
// ─── HQ ──────────────────────────────────────────────────
|
||||
@@ -45,3 +52,16 @@ export const HQ_18_22_26_FLOORS = [18, 22, 26];
|
||||
|
||||
/** HQ: floors 29-30 (combined) */
|
||||
export const HQ_29_30_FLOORS = [29, 30];
|
||||
|
||||
/** HQ: floors 19-27 (combined) */
|
||||
export const HQ_19_23_27_FLOORS = [
|
||||
"19-20",
|
||||
"23-24",
|
||||
"27-28",
|
||||
"19",
|
||||
"20",
|
||||
"23",
|
||||
"24",
|
||||
"27",
|
||||
"28",
|
||||
];
|
||||
|
||||
@@ -63,7 +63,9 @@ export function getProjectName(complexName: ComplexName): string {
|
||||
}
|
||||
|
||||
/** Resolve a slug from the full project name (e.g. "Rove Home Dubai Marina" → "dubai-marina") */
|
||||
export function getSlugFromProjectName(projectName: string): ComplexName | null {
|
||||
export function getSlugFromProjectName(
|
||||
projectName: string
|
||||
): ComplexName | null {
|
||||
const entry = Object.values(complexConfigs).find(
|
||||
(c) => c.projectName === projectName
|
||||
);
|
||||
|
||||
@@ -6,11 +6,9 @@ import { dubaiMarinaMasks as dubaiMarina3940Masks } from "./floor-plan-masks/dub
|
||||
import { dubaiMarinaMasks as dubaiMarina4142Masks } from "./floor-plan-masks/dubai-marina_41-42";
|
||||
import { hq5_9_13Masks } from "./floor-plan-masks/hq_5_9_13";
|
||||
import { hq6_10_14Masks } from "./floor-plan-masks/hq_6_10_14";
|
||||
import { hq7_11Masks } from "./floor-plan-masks/hq_7_11";
|
||||
import { hq8_12Masks } from "./floor-plan-masks/hq_8_12";
|
||||
import { hq17_21_25Masks } from "./floor-plan-masks/hq_17_21_25";
|
||||
import { hq18_22_26Masks } from "./floor-plan-masks/hq_18_22_26";
|
||||
import { hq29_30Masks } from "./floor-plan-masks/hq_29_30";
|
||||
import { hq29_30MasksLower } from "./floor-plan-masks/hq_29_30_lower";
|
||||
import { Unit } from "../types/IUnit";
|
||||
import { filterDuplicateUnits } from "../utils/filterDuplicateUnits";
|
||||
import {
|
||||
@@ -25,6 +23,8 @@ import {
|
||||
MARASI_EAST_FLOORS,
|
||||
MARASI_WEST_LOWER_FLOORS,
|
||||
MARASI_WEST_UPPER_FLOORS,
|
||||
HQ_19_23_27_FLOORS,
|
||||
// HQ_19_23_27_FLOORS,
|
||||
} from "../constants/floor-ranges";
|
||||
import {
|
||||
floorPlanMarasiDriveEastMasks,
|
||||
@@ -34,6 +34,13 @@ import {
|
||||
import FloorPlanMarasiDriveEast from "../components/FloorPlanMarasiDriveEast";
|
||||
import FloorPlanMarasiDriveWestLower from "../components/FloorPlanMarasiDriveWestLower";
|
||||
import FloorPlanMarasiDriveWestUpper from "../components/FloorPlanMarasiDriveWestUpper";
|
||||
import { hq7_11Masks } from "./floor-plan-masks/hq_7_11";
|
||||
import { hq8_12Masks } from "./floor-plan-masks/hq_8_12";
|
||||
import { hq29_30MasksUpper } from "./floor-plan-masks/hq_29_30_upper";
|
||||
import { hq_19_23_27_1Masks } from "./floor-plan-masks/hq_19_23_27_1";
|
||||
import { hq_19_23_27_2Masks } from "./floor-plan-masks/hq_19_23_27_2";
|
||||
import { hq_19_23_27_1_upperMasks } from "./floor-plan-masks/hq_19_23_27_1_upper";
|
||||
import { hq_19_23_27_2_upperMasks } from "./floor-plan-masks/hq_19_23_27_2_upper";
|
||||
|
||||
// ─── Types ───────────────────────────────────────────────
|
||||
|
||||
@@ -127,10 +134,45 @@ const hq182226: FloorPlanLayoutConfig = {
|
||||
getMaskKey: (unitNo) => unitNo.slice(-2),
|
||||
};
|
||||
|
||||
const hq2930: FloorPlanLayoutConfig = {
|
||||
const hq192327_1_lower: FloorPlanLayoutConfig = {
|
||||
viewBox: "0 0 752 668",
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_29-30.jpg",
|
||||
masks: hq29_30Masks,
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_19_23_27_1.jpg",
|
||||
masks: hq_19_23_27_1Masks,
|
||||
getMaskKey: (unitNo) => unitNo.slice(-2),
|
||||
};
|
||||
|
||||
const hq192327_1_upper: FloorPlanLayoutConfig = {
|
||||
viewBox: "0 0 752 668",
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_20_24_28_1.jpg",
|
||||
masks: hq_19_23_27_1_upperMasks,
|
||||
getMaskKey: (unitNo) => unitNo.slice(-2),
|
||||
};
|
||||
|
||||
const hq192327_2_lower: FloorPlanLayoutConfig = {
|
||||
viewBox: "0 0 752 668",
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_19_23_27_2.jpg",
|
||||
masks: hq_19_23_27_2Masks,
|
||||
getMaskKey: (unitNo) => unitNo.slice(-3),
|
||||
};
|
||||
|
||||
const hq192327_2_upper: FloorPlanLayoutConfig = {
|
||||
viewBox: "0 0 752 668",
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_20_24_28_2.jpg",
|
||||
masks: hq_19_23_27_2_upperMasks,
|
||||
getMaskKey: (unitNo) => unitNo.slice(-3),
|
||||
};
|
||||
|
||||
const hq2930Lower: FloorPlanLayoutConfig = {
|
||||
viewBox: "0 0 752 668",
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_29-30_lower.jpg",
|
||||
masks: hq29_30MasksLower,
|
||||
getMaskKey: (unitNo) => unitNo.slice(-2),
|
||||
};
|
||||
|
||||
const hq2930Upper: FloorPlanLayoutConfig = {
|
||||
viewBox: "0 0 752 668",
|
||||
imagePath: "/images/floor-plans/hq/floor-plan_29-30_upper.jpg",
|
||||
masks: hq29_30MasksUpper,
|
||||
getMaskKey: (unitNo) => unitNo.slice(-2),
|
||||
};
|
||||
|
||||
@@ -169,14 +211,25 @@ const marasiDriveWestUpper: FloorPlanLayoutConfig = {
|
||||
export function getFloorPlanConfig(
|
||||
complexName: ComplexName,
|
||||
floorStr: string,
|
||||
options?: { isCombinable?: boolean; wing?: "East" | "West" }
|
||||
options?: {
|
||||
isCombinable?: boolean;
|
||||
wing?: "East" | "West";
|
||||
isLower?: boolean;
|
||||
option?: "1" | "2";
|
||||
}
|
||||
): FloorPlanLayoutConfig | null {
|
||||
const floorNum = parseInt(floorStr);
|
||||
|
||||
// ── Marasi Drive ──────────────────────────────────────
|
||||
if (complexName === "marasi-drive") {
|
||||
// Wing can be passed explicitly or parsed from "East 5" / "West 5"
|
||||
const wing = options?.wing || (floorStr.startsWith("East") ? "East" : floorStr.startsWith("West") ? "West" : null);
|
||||
const wing =
|
||||
options?.wing ||
|
||||
(floorStr.startsWith("East")
|
||||
? "East"
|
||||
: floorStr.startsWith("West")
|
||||
? "West"
|
||||
: null);
|
||||
const num = wing ? parseInt(floorStr.split(" ").at(-1) || "") : floorNum;
|
||||
|
||||
if (wing === "East" && MARASI_EAST_FLOORS.includes(num)) {
|
||||
@@ -192,7 +245,9 @@ export function getFloorPlanConfig(
|
||||
// ── Dubai Marina ──────────────────────────────────────
|
||||
if (complexName === "dubai-marina") {
|
||||
if (DUBAI_MARINA_STANDARD_FLOORS.includes(floorNum)) {
|
||||
return options?.isCombinable ? dubaiMarinaStandardComb : dubaiMarinaStandard;
|
||||
return options?.isCombinable
|
||||
? dubaiMarinaStandardComb
|
||||
: dubaiMarinaStandard;
|
||||
}
|
||||
if (floorStr === "39-40" || floorNum === 39 || floorNum === 40) {
|
||||
return dubaiMarina3940;
|
||||
@@ -223,7 +278,16 @@ export function getFloorPlanConfig(
|
||||
return hq182226;
|
||||
}
|
||||
if (HQ_29_30_FLOORS.includes(floorNum)) {
|
||||
return hq2930;
|
||||
return options?.isLower ? hq2930Lower : hq2930Upper;
|
||||
}
|
||||
if (HQ_19_23_27_FLOORS.includes(floorStr)) {
|
||||
return options?.option === "1"
|
||||
? options?.isLower
|
||||
? hq192327_1_lower
|
||||
: hq192327_1_upper
|
||||
: options?.isLower
|
||||
? hq192327_2_lower
|
||||
: hq192327_2_upper;
|
||||
}
|
||||
// Other HQ floor layouts can be added here as mask data becomes available
|
||||
}
|
||||
@@ -243,5 +307,13 @@ export function getFloorPlanConfigForUnit(
|
||||
return getFloorPlanConfig(complexName, floorStr, {
|
||||
isCombinable: unit.unitNo.endsWith("-C"),
|
||||
wing: unit.wing as "East" | "West" | undefined,
|
||||
isLower:
|
||||
complexName === "hq" ? [19, 23, 27, 29].includes(unit.floor) : undefined,
|
||||
option:
|
||||
complexName === "hq"
|
||||
? unit.unitNo.endsWith("F")
|
||||
? "2"
|
||||
: "1"
|
||||
: undefined,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq17_21_25Masks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"00",
|
||||
{
|
||||
d: "M363.787 358.605h-18.621v20.689h18.641v28.984h6.215v1.168h-6.215v22.372h23.515v-22.372h-6.065v-1.168h9.148v33.01h41.394v-15.334h-2.934v-5.903h2.934v-29.584h-2.43v-5.25h-.502v-5.957h2.932v-16.847h-2.988v-5.061h-65.024z",
|
||||
textTransform: [364, 359],
|
||||
formattedUnitType: "Lounge",
|
||||
},
|
||||
],
|
||||
[
|
||||
"01",
|
||||
{
|
||||
@@ -86,7 +94,7 @@ export const hq17_21_25Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M298.303 297.5H304.803V259H316.303V254H334.303V259H362.803V230.5H360.803L360.803 210.625H319.836L319.836 230.725H317V217H284.351V219.5H263.678V218.54C259.996 218.518 257 221.496 257 225.178V241H251.803C248.489 241 246.303 243.686 246.303 247V272C246.303 275.314 248.489 278 251.803 278H256.879V299.923H261.73V299.308H263.528V298.5H270.537V300H298.303V297.5Z",
|
||||
textTransform: [298, 240],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
|
||||
@@ -86,7 +86,7 @@ export const hq18_22_26Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M298.303 297.5H304.803V259H316.303V254H334.303V259H362.803V230.5H360.803L360.803 210.625H319.836L319.836 230.725H317V217H284.351V219.5H263.678V218.54C259.996 218.518 257 221.496 257 225.178V241H251.803C248.489 241 246.303 243.686 246.303 247V272C246.303 275.314 248.489 278 251.803 278H256.879V299.923H261.73V299.308H263.528V298.5H270.537V300H298.303V297.5Z",
|
||||
textTransform: [298, 240],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq_19_23_27_1Masks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"01",
|
||||
{
|
||||
d: "M495.001 363.946c.302.004.919.011.962 0l-.003 24.328c0 1.847-.133 4.509-.333 5.557-.199 1.048-.449 2.163-.965 3.245-.515 1.081-1.797 3.361-2.695 4.659-.899 1.297-18.011 24.749-19.137 26.233-1.125 1.484-3.479 3.683-6.65 5.627-2.538 1.555-6.787 2.012-8.595 2.045h-22.76l-.26-.97H431.7v8.696h-41.791v-32.57h-29.75v11.92H349.33v-11.92h-32.741v-23.471h4.668v-5.745h-4.668v-20.892h112.162v3.754h4.799v1.401h54.754v-.865h1.866v-.509h4.831z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [465, 364],
|
||||
},
|
||||
],
|
||||
[
|
||||
"02",
|
||||
{
|
||||
d: "M385.103 114.146v84.533l60.415.21v-2.583h7.551v5.879h-6.516v158.647h6.545v3.984h28.094v-2.987h7.021v.924h1.94v.462h5.805V112.861c.005-15.827.013-47.829 0-49.223-.016-1.742-.22-7.816-1.836-10.594s-5.148-6.529-7.628-7.69a18.9 18.9 0 0 0-10.045-1.664c-4.097.44-6.859 2.464-8.114 3.406S418.718 86.1 416.851 87.692c-1.866 1.591-4.165 4.381-5.56 6.994-1.116 2.09-1.362 5.348-1.346 6.715v12.745z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [414, 154],
|
||||
},
|
||||
],
|
||||
[
|
||||
"03",
|
||||
{
|
||||
d: "M259.951 342.653h-4.843l.02-117.844c.302-1.709.453-1.977 1.844-3.603 1.113-1.3 3.654-1.554 4.786-1.518v.739h20.759v-2.441h35.939v-7.397h41.72l-.082 21.216h1.831v28.605h-28.59v-4.802h-17.98v87.045h-46.417v-1.399h-7.088v.886h-1.899z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [286, 343],
|
||||
},
|
||||
],
|
||||
[
|
||||
"04",
|
||||
{
|
||||
d: "M365.025 551.953v-84.559l-60.339.074v2.277h-7.832v-5.874h6.544V387.45h-6.547v-6.012h6.547v-37.574h-34.494l.053 1.56h-7.114v-.847h-1.916v-.695h-4.779c-.09 0-.018 201.331 0 202.45s.21 1.697 1.451 3.376 2.554 1.958 3.533 2.116c.784.126 1.423.052 1.644 0v-.869h20.849v3.479h-2.752c-.033 10.869-.078 33.125 0 35.193.098 2.584.88 3.436 1.634 5.043.755 1.607 1.915 3.162 2.696 4.077s16.278 20.702 17.504 22.213 2.43 2.846 3.897 3.81c1.467.963 2.365 1.511 3.657 2.124s4.576 1.423 6.568 1.467h.024c1.983.044 3.858.085 5.603-.482 1.752-.569 3.963-1.62 5.627-2.693s3.503-2.868 4.795-4.576c1.033-1.366 13.546-18.548 19.673-26.968 2.058-2.857 6.709-9.287 8.849-12.156 2.676-3.585 4.457-7.559 4.959-8.931.402-1.099.524-4.907.536-6.674v-13.258h-.87z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [414, 503],
|
||||
},
|
||||
],
|
||||
]);
|
||||
@@ -0,0 +1,52 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq_19_23_27_1_upperMasks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"01",
|
||||
{
|
||||
d: "M488.304 365.222h1.462s.607 5.544 0 14.201c-.13 1.857-1.937 5.237-5.108 7.181-2.538 1.555-15.519.952-17.327.986h-32.766v47.324H431.7v8.696h-41.791v-32.57h-29.75v11.92H349.33v-11.92h-32.741v-23.471h4.668v-5.745h-4.668v-20.891h112.162v3.754h4.799v1.4h54.754z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [465, 364],
|
||||
},
|
||||
],
|
||||
[
|
||||
"02",
|
||||
{
|
||||
d: "M490.153 363.459h5.805V200.5H490v.5h-2v1h-7v-2h-27.931v2.429h-6.516v158.647h6.545v3.984h28.094v-2.987h7.021v.924h1.94z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [414, 154],
|
||||
},
|
||||
],
|
||||
[
|
||||
"03",
|
||||
{
|
||||
d: "M385.103 198.923V114.39h49.713v-12.745c-.016-1.367-.374-5.9.742-7.99 1.395-2.613 3.686-4.336 5.991-5.488h42.476a9 9 0 0 1 9 9v15.348h1.846v.59h1.087V199H490v-.5h-2v-1h-7v1.5h-27.931v-2.45h-7.551v2.583z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [286, 343],
|
||||
},
|
||||
],
|
||||
[
|
||||
"04",
|
||||
{
|
||||
d: "M259.951 342.897h-4.843l.02-117.844c.302-1.709.453-1.977 1.844-3.603 1.113-1.3 3.655-1.554 4.786-1.518v.739h20.759v-2.441h35.939v-7.397h41.721l-.083 21.216h1.831v28.605h-28.59v-4.802h-17.98v87.045h-46.417v-1.399h-7.087v.886h-1.9z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [414, 503],
|
||||
},
|
||||
],
|
||||
[
|
||||
"05",
|
||||
{
|
||||
d: "M259.927 344.126h-4.779c-.051 0-.05 65.55-.036 122.052H260v-.678h1.5v-.5h7.5v1.178h27.854v-2.063h6.544v-76.421h-6.547v-6.012h6.547v-37.574h-34.494l.054 1.56h-7.114v-.846h-1.917z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [414, 503],
|
||||
},
|
||||
],
|
||||
[
|
||||
"06",
|
||||
{
|
||||
d: "m365.025 467.639-60.339.073v2.277h-7.832V467.5H269v1.5h-7.5v-1H260v-.5h-4.887c.01 41.971.028 78.601.035 79.076.018 1.12.21 1.697 1.452 3.376s2.553 1.959 3.533 2.116c.783.126 1.422.052 1.644 0v-.869h20.848v18.123a9 9 0 0 0 9 9h40.182a9 9 0 0 0 9-9v-14.796h17.428v-.581h1.889v-.524h4.901z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [414, 503],
|
||||
},
|
||||
],
|
||||
]);
|
||||
@@ -0,0 +1,12 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq_19_23_27_2Masks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"01F",
|
||||
{
|
||||
d: "M385.103 114.146v84.533h41.89v-2.373h7.694v5.994l10.831-.068v-5.926h7.551v5.879l-18.382.115v146.511h-14.063l8.127 11.877v-1.293h3.696v5.047l1.102.032 11.754.342-.174-3.869 7.969-.115v3.984h28.094v-2.987h7.021v.924h1.94v.462h5.805V112.861c.005-15.827.012-47.829 0-49.223-.016-1.742-.22-7.816-1.836-10.594s-5.148-6.529-7.628-7.69a18.9 18.9 0 0 0-10.045-1.664c-4.097.44-6.859 2.464-8.115 3.406-1.255.942-49.616 39.004-51.483 40.596s-4.165 4.381-5.56 6.994c-1.116 2.09-1.363 5.348-1.346 6.715v12.745zm-20.078 353.249h-4.866l-55.473.073v2.277h-7.832v-5.874h7.832l.112-76.421h-7.947v-6.012h18.47l.019-21.995.015-16.79h-46.417l.019 2.771h-7.114v-.847h-1.916v-.695h-4.779c-.09 0-.018 201.331 0 202.45s.21 1.697 1.451 3.376 2.554 1.958 3.533 2.116c.784.126 1.423.052 1.644 0v-.869h20.849v3.479h-2.752c-.033 10.869-.078 33.125 0 35.193.098 2.584.88 3.436 1.634 5.043.755 1.607 1.915 3.162 2.696 4.077s16.278 20.702 17.504 22.213 2.43 2.846 3.897 3.81c1.467.963 2.365 1.511 3.657 2.124s4.576 1.423 6.568 1.467h.024c1.983.044 3.858.085 5.603-.482 1.752-.569 3.963-1.62 5.627-2.693s3.503-2.868 4.795-4.576c1.033-1.366 13.546-18.548 19.673-26.969 2.058-2.856 6.709-9.287 8.849-12.155 2.676-3.585 4.457-7.559 4.959-8.931.402-1.099.524-4.907.535-6.674v-13.258h-.869zm130.938-103.449c-.044.011-.66.004-.962 0v.523h-4.831v.509h-1.866v.865h-54.755v-1.369l-1.102-.032h-3.696v-3.754l-8.127-11.877h14.063V224.109l-74.558-1.187.047-12.333h-41.72v7.397h-35.94v2.441h-20.758v-.739c-1.132-.036-3.674.218-4.786 1.518-1.391 1.626-1.542 1.894-1.844 3.603l-.044 119.073h4.843l.024-1.742h1.899v-.886h7.088v1.399h46.205l-1.022-87.045 1.234 87.045-.015 16.79.015 1.245v20.892h5.902v5.745h-5.918l.016-5.745-10.527-.142-.03 6.012-.112 76.421v3.597l55.473-.073v-56.599h29.749v32.57H431.7v-8.696h2.865l.26.97h22.76c1.808-.033 6.057-.49 8.595-2.045 3.171-1.944 5.525-4.143 6.65-5.627s18.238-24.936 19.137-26.233c.898-1.298 2.179-3.578 2.695-4.659.516-1.082.766-2.197.965-3.245.2-1.048.333-3.71.333-5.557z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [385, 114],
|
||||
},
|
||||
],
|
||||
]);
|
||||
@@ -0,0 +1,12 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq_19_23_27_2_upperMasks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"01F",
|
||||
{
|
||||
d: "M484.025 88.167a9 9 0 0 1 9 9v15.348h1.846v.589h1.087v250.355h-5.805v-.462h-.228c.125 4.271.221 11.002-.159 16.426-.131 1.857-1.937 5.237-5.109 7.181-2.537 1.555-15.518.952-17.326.986h-32.767v47.324H431.7v8.696h-41.792v-32.57h-29.749v11.92H349.33v-11.92h-6.924l.007.111v11.9h-12.494v22.607h-13.934v21.556l49.039-.06v86.267h-4.9v.523h-1.889v.582h-17.428v14.796a9 9 0 0 1-9 9h-40.182a9 9 0 0 1-9-9v-18.123h-20.849v.869c-.222.053-.86.126-1.643 0-.98-.157-2.292-.437-3.533-2.116s-1.434-2.256-1.452-3.376c-.017-1.11-.086-198.709-.001-202.397h-.039l.021-119.125.063-.367c.247-1.434.351-2.034 1.637-3.538 1.113-1.3 3.962-2.011 5.094-1.975v1.206h20.759v-2.441h35.774v-7.511h44.543v11.064l23.983 1.3.16-23.019h-2.038V114.39h49.712v-12.744c-.016-1.368-.373-5.9.743-7.99 1.395-2.614 3.686-4.337 5.991-5.489zM296.854 469.989h7.833v-5.875h-7.833zm18.501-197.5v71.323h.065v4.731h20.879v-76.054zm-53.504 69.009v.887h-1.9v1.794h-.024v.346h1.917v.848h7.114l-.054-1.561h.033v-2.314zm53.504-85.646v5.754h18.54v-5.754z",
|
||||
formattedUnitType: "",
|
||||
textTransform: [385, 114],
|
||||
},
|
||||
],
|
||||
]);
|
||||
@@ -1,6 +1,6 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq29_30Masks: FloorPlanMasks = new Map([
|
||||
export const hq29_30MasksLower: FloorPlanMasks = new Map([
|
||||
[
|
||||
"05",
|
||||
{
|
||||
@@ -0,0 +1,100 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq29_30MasksUpper: FloorPlanMasks = new Map([
|
||||
[
|
||||
"05",
|
||||
{
|
||||
d: "M494.688 84.623v27.457H492.8v-.5h-35.769v-4.731h-3.548v4.731H428.69V84.623z",
|
||||
textTransform: [465, 85],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"03",
|
||||
{
|
||||
d: "M453.046 199.145h9.967l-.002 12.303h5.52v67.905h-15.505v-2.288h-7.672v2.32h-10.617l-.044-80.316 10.688.063v2.327h7.665z",
|
||||
textTransform: [465, 235],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"06",
|
||||
{
|
||||
d: "M392.358 115.212v-1.052l-6.417.101-.256 21.817h13.549v23.553h12.171v26.009h5.643c.047 4.035.113 12.137 0 12.263s6.561.053 9.911 0v-2.365h6.815v-34.831h-4.696v-5.911h4.696v-37.221h-6.558v-2.363c0-.023-23.261-.01-34.858 0",
|
||||
textTransform: [414, 154],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"02",
|
||||
{
|
||||
d: "M430.229 356.829V346.34h4.695v-65.981l10.649.153v2.313h7.676v-2.466h9.912v12.327c1.829.009 5.52.021 5.643 0 .123-.02.052 45.367 0 68.063h-15.551v-2.304h-7.689v2.304h-12.945v-3.92z",
|
||||
textTransform: [465, 315],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"04",
|
||||
{
|
||||
d: "M453.045 197.896h9.968l-.002-12.303h5.871v-70.395h-15.856v2.288h-7.672v-2.32h-10.617l-.045 82.806 10.689-.063v-2.328h7.664z",
|
||||
textTransform: [465, 154],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"10",
|
||||
{
|
||||
d: "M306.213 546.442h10.671l-.03-82.63h-10.601v2.358h-7.667l-.059-2.358h-9.928v12.18h-5.556v70.45h15.507v-2.349h7.663z",
|
||||
textTransform: [286, 503],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"09",
|
||||
{
|
||||
d: "M298.543 462.552h-9.967l.002-12.303h-5.52v-67.905h15.504v2.288h7.673v-2.32h10.617l.044 80.315-10.688-.063v-2.327h-7.665z",
|
||||
textTransform: [286, 421],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"08",
|
||||
{
|
||||
d: "M298.543 300.62h-9.967l.002 12.303h-5.52v67.905h15.504v-2.288h7.673v2.32h10.617l.044-80.316-10.688.064v2.327h-7.665z",
|
||||
textTransform: [286, 339],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"12",
|
||||
{
|
||||
d: "M361.166 547.627h4.701l-.031-22.018h-13.549v-23.552h-12.171v-26.009h-5.643c-.047-4.035-.113-12.137 0-12.263.113-.127-6.56-.053-9.911 0v2.365h-6.508v34.83h4.695v5.912h-4.695v37.22h6.506v2.364c0 .023 23.195.009 34.793 0v.507h1.813z",
|
||||
textTransform: [338, 503],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"11",
|
||||
{
|
||||
d: "m301.599 577.739.097-27.757 57.696.042v-.537h1.836v-.65h4.703c.022 1.665.054 6.382 0 11.936s-1.515 9.823-2.239 11.264l-6.719 9.316-5.038-3.614z",
|
||||
textTransform: [327, 567],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"07",
|
||||
{
|
||||
d: "M306.248 299.666h10.637l-.031-28.944h46.039v-32.461h-79.942l.14 49.014h5.492v12.391h9.968v-2.36h7.697z",
|
||||
textTransform: [298, 239],
|
||||
formattedUnitType: "PL",
|
||||
},
|
||||
],
|
||||
[
|
||||
"01",
|
||||
{
|
||||
d: "M318.049 378.756v-32.445l111.002-.061v15.736h5.642v16.767h-5.642v5.91h5.642v7.997h-88.008v-8.099h-23.943v-5.805z",
|
||||
textTransform: [405, 380],
|
||||
formattedUnitType: "PR",
|
||||
},
|
||||
],
|
||||
]);
|
||||
@@ -1,6 +1,14 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq5_9_13Masks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"00",
|
||||
{
|
||||
d: "M364.237 358.485h-18.622v20.689h18.642v28.984h6.214v1.168h-6.214v22.371h23.515v-22.371h-6.066v-1.168h9.148v33.01h41.394v-15.334h-2.933v-5.903h2.933v-29.585h-2.43v-5.249h-.502v-5.957h2.932v-16.847h-2.988v-5.062h-65.023z",
|
||||
textTransform: [364, 358],
|
||||
formattedUnitType: "Lounge",
|
||||
},
|
||||
],
|
||||
[
|
||||
"01",
|
||||
{
|
||||
@@ -86,7 +94,7 @@ export const hq5_9_13Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M298.303 297.5h6.5V259h11.5v-5h18v5h28.5v-28.5h-2v-19.875h-40.967v20.1H317V217h-32.649v2.5h-20.673v-.96a6.64 6.64 0 0 0-6.678 6.638V241h-5.197c-3.314 0-5.5 2.686-5.5 6v25c0 3.314 2.186 6 5.5 6h5.076v21.923h4.851v-.615h1.798v-.808h7.009v1.5h27.766z",
|
||||
textTransform: [298, 240],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
|
||||
@@ -86,7 +86,7 @@ export const hq6_10_14Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M298.303 297.5h6.5V259h11.5v-5h18v5h28.5v-28.5h-2v-19.875h-40.967v20.1H317V217h-32.649v2.5h-20.673v-.96L257 218.5V241h-5.197c-3.314 0-5.5 2.686-5.5 6v25c0 3.314 2.186 6 5.5 6h5.076v21.923h4.851v-.615h1.798v-.808h7.009v1.5h27.766z",
|
||||
textTransform: [298, 240],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
import { FloorPlanMasks } from "../../types/FloorPlanMasks";
|
||||
|
||||
export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
[
|
||||
"00",
|
||||
{
|
||||
d: "M363.787 358.605h-18.621v20.689h18.641v28.984h6.215v1.168h-6.215v22.372h23.515v-22.372h-6.065v-1.168h9.148v33.01h41.394v-15.334h-2.934v-5.903h2.934v-29.584h-2.43v-5.25h-.502v-5.957h2.932v-16.847h-2.988v-5.061h-65.024z",
|
||||
textTransform: [364, 359],
|
||||
formattedUnitType: "Lounge",
|
||||
},
|
||||
],
|
||||
[
|
||||
"08",
|
||||
{
|
||||
@@ -9,36 +17,52 @@ export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
formattedUnitType: "LE",
|
||||
},
|
||||
],
|
||||
// [
|
||||
// "09",
|
||||
// {
|
||||
// d: "M429.279 154.76v2.451h-29.478v-1.449h-7.126v.738H391v1h-15.879v-12.176c0-3.313 2.265-6 5.579-6h5.3l-.3-19a6 6 0 0 1 6-6h.8v3.176h35v2.324h6.5v34.936z",
|
||||
// textTransform: [413, 134],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "10",
|
||||
// {
|
||||
// d: "M429.279 160.74v-2.451h-29.478v1.449h-7.126V159H391v-1h-15.879v12.176c0 3.313 2.265 6 5.579 6h5.3V198h41.5v-2.324h6.5V160.74z",
|
||||
// textTransform: [413, 173],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
[
|
||||
"09",
|
||||
"09", // 09 + 10
|
||||
{
|
||||
d: "M429.279 154.76v2.451h-29.478v-1.449h-7.126v.738H391v1h-15.879v-12.176c0-3.313 2.265-6 5.579-6h5.3l-.3-19a6 6 0 0 1 6-6h.8v3.176h35v2.324h6.5v34.936z",
|
||||
textTransform: [413, 134],
|
||||
formattedUnitType: "ST",
|
||||
d: "M429.279 154.76v2.451h-29.478v-1.449h-7.126v.738H391v1h-15.879v-12.176c0-3.313 2.265-6 5.579-6h5.3l-.3-19a6 6 0 0 1 6-6h.8v3.176h35v2.324h6.5v34.936zm0 5.98v-3.529h-29.478v2.527h-7.126V159H391v-1.5h-15.879v12.676c0 3.313 2.265 6 5.579 6h5.3V198h41.5v-2.324h6.5V160.74z",
|
||||
textTransform: [413, 153],
|
||||
formattedUnitType: "DE",
|
||||
},
|
||||
],
|
||||
// [
|
||||
// "21",
|
||||
// {
|
||||
// d: "M324.666 542.5H318.2l-.2-35h4.773V505H352.5v1.5h7v-.866h1.728V505H376.5l.132 11.933a6 6 0 0 1-5.999 6.067H365.7v25.156h-4.423v-.594h-1.862V544.5h-34.749z",
|
||||
// textTransform: [334, 525],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "22",
|
||||
// {
|
||||
// d: "M324.681 466.656h-6.452l-.118 34.844h4.662l-.001 2.415h29.689v-1.419l7.039.004v.818h1.809v.838H376.7l.132-11.933a6 6 0 0 0-6-6.067h-4.933v-21.791h-41.218z",
|
||||
// textTransform: [334, 480],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
[
|
||||
"10",
|
||||
"21", // 21 + 22
|
||||
{
|
||||
d: "M429.279 160.74v-2.451h-29.478v1.449h-7.126V159H391v-1h-15.879v12.176c0 3.313 2.265 6 5.579 6h5.3V198h41.5v-2.324h6.5V160.74z",
|
||||
textTransform: [413, 173],
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
[
|
||||
"21",
|
||||
{
|
||||
d: "M324.666 542.5H318.2l-.2-35h4.773V505H352.5v1.5h7v-.866h1.728V505H376.5l.132 11.933a6 6 0 0 1-5.999 6.067H365.7v25.156h-4.423v-.594h-1.862V544.5h-34.749z",
|
||||
textTransform: [334, 525],
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
[
|
||||
"22",
|
||||
{
|
||||
d: "M324.681 466.656h-6.452l-.118 34.844h4.662l-.001 2.415h29.689v-1.419l7.039.004v.818h1.809v.838H376.7l.132-11.933a6 6 0 0 0-6-6.067h-4.933v-21.791h-41.218z",
|
||||
textTransform: [334, 480],
|
||||
formattedUnitType: "ST",
|
||||
d: "M324.666 542.5H318.2l-.2-35h4.773l-.001-3.586h29.726l.002 2.586h7v-.866h1.728l.081-1.478h15.272l.051 12.777a6 6 0 0 1-5.999 6.067H365.7v25.156h-4.423v-.594h-1.862V544.5h-34.749zm.015-75.844h-6.452l-.118 34.844h4.662l-.001 2.414h29.689v-1.418l7.039.004v.817h1.809v.839H376.7l.132-11.934a6 6 0 0 0-6-6.066h-4.933v-21.792h-41.218z",
|
||||
textTransform: [334, 503],
|
||||
formattedUnitType: "DE",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -62,7 +86,7 @@ export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M492.703 114.526h1.885l.09 65.512h4.933a6 6 0 0 1 6 6v24.79a6 6 0 0 1-6 6h-5.033v21.886h-4.744v-.492h-1.835v-.94h-7.027v1.544h-34.319v-37.312h6.489v-5.974h-6.36l-.137-75.726h6.46v-2.38h39.598z",
|
||||
textTransform: [468, 168],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -70,7 +94,7 @@ export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M492.703 364.09h1.885l.09-65.511h4.933a6 6 0 0 0 6-6v-24.791a6 6 0 0 0-6-6h-5.033v-21.886h-4.744v.493h-1.835v.939h-7.027v-1.544h-34.319v37.312h6.489v5.975h-6.36l-.137 75.726h6.46v2.379h39.598z",
|
||||
textTransform: [468, 302],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -78,7 +102,7 @@ export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M261.382 340.845h-4.769v-21.736h-4.933a6 6 0 0 1-6-6v-25.407c0-3.314 2.384-5.502 5.698-5.502h5.089v-63.6h6.664v.9h20.73v-2.386h20.91l-.129 80.492h-6.522v5.902h6.522v37.316h-34.403v-1.459h-7.067v.874h-1.79z",
|
||||
textTransform: [286, 265],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -86,7 +110,7 @@ export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M261.382 423.622h-4.769v21.736h-4.933a6 6 0 0 0-6 6v25.407c0 3.313 2.384 5.501 5.698 5.501h5.089v66.089h6.664v-3.388h20.73v2.386h14.207v-4.652h6.574v-75.84h-6.522v-5.903h6.522v-37.315h-34.403v1.459h-7.067v-.874h-1.79z",
|
||||
textTransform: [286, 477],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -97,20 +121,28 @@ export const hq7_11Masks: FloorPlanMasks = new Map([
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
// [
|
||||
// "15",
|
||||
// {
|
||||
// d: "M304.72 341.971v37.417h-6.574v2.438h-27.862v-1.568h-7.139v.899h-1.783v.709h-15.6l-.118-12.03c-.037-3.34 1.732-6.079 6.377-5.906h4.933v-3.319l-.363-.5v-18.187h4.863v.555h1.672v.976h7.23v-1.484z",
|
||||
// textTransform: [286, 359],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "16",
|
||||
// {
|
||||
// d: "M304.72 422.449v-37.417h-6.574v-2.438h-27.862v1.567h-7.139v-.898h-1.783v-.709h-15.6l-.118 12.03c-.037 3.339 1.732 6.079 6.377 5.906h4.933v3.319l-.363.5v18.187h4.863v-.555h1.672v-.976h7.23v1.484z",
|
||||
// textTransform: [286, 400],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
[
|
||||
"16",
|
||||
"15", // 15 + 16
|
||||
{
|
||||
d: "M304.72 422.449v-37.417h-6.574v-2.438h-27.862v1.567h-7.139v-.898h-1.783v-.709h-15.6l-.118 12.03c-.037 3.339 1.732 6.079 6.377 5.906h4.933v3.319l-.363.5v18.187h4.863v-.555h1.672v-.976h7.23v1.484z",
|
||||
textTransform: [286, 400],
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
[
|
||||
"15",
|
||||
{
|
||||
d: "M304.72 341.971v37.417h-6.574v2.438h-27.862v-1.568h-7.139v.899h-1.783v.709h-15.6l-.118-12.03c-.037-3.34 1.732-6.079 6.377-5.906h4.933v-3.319l-.363-.5v-18.187h4.863v.555h1.672v.976h7.23v-1.484z",
|
||||
textTransform: [286, 359],
|
||||
formattedUnitType: "ST",
|
||||
d: "M304.72 422.449v-37.418h-6.574v-3.205h-27.862v2.335h-7.139v-.898h-1.783v-1.397h-15.6l-.118 12.718c-.037 3.339 1.732 6.079 6.377 5.906h4.933v3.318l-.363.5v18.188h4.863v-.555h1.672v-.976h7.23v1.484zm0-80.478v37.417h-6.574v2.438h-27.862v-1.568h-7.139v.899h-1.783v.709h-15.6l-.118-12.03c-.037-3.34 1.732-6.079 6.377-5.906h4.933v-3.319l-.363-.5v-18.187h4.863v.555h1.672v.976h7.23v-1.484z",
|
||||
textTransform: [286, 379],
|
||||
formattedUnitType: "DE",
|
||||
},
|
||||
],
|
||||
]);
|
||||
|
||||
@@ -9,36 +9,53 @@ export const hq8_12Masks: FloorPlanMasks = new Map([
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "09",
|
||||
// {
|
||||
// d: "M429.279 154.76v2.451h-29.478v-1.449h-7.126v.738H391v1h-15.879v-12.176c0-3.313 2.265-6 5.579-6h5.3l-.3-19a6 6 0 0 1 6-6h.8v3.176h35v2.324h6.5v34.936z",
|
||||
// textTransform: [415, 133],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "10",
|
||||
// {
|
||||
// d: "M429.279 160.74v-2.451h-29.478v1.449h-7.126V159H391v-1h-15.879v12.176c0 3.313 2.265 6 5.579 6h5.3V198h41.5v-2.324h6.5V160.74z",
|
||||
// textTransform: [415, 173],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
[
|
||||
"09",
|
||||
// 09 + 10
|
||||
{
|
||||
d: "M429.279 154.76v2.451h-29.478v-1.449h-7.126v.738H391v1h-15.879v-12.176c0-3.313 2.265-6 5.579-6h5.3l-.3-19a6 6 0 0 1 6-6h.8v3.176h35v2.324h6.5v34.936z",
|
||||
textTransform: [415, 133],
|
||||
formattedUnitType: "ST",
|
||||
d: "M429.279 154.76v2.451h-29.478v-1.449h-7.126v.738H391v1h-15.879v-12.176c0-3.313 2.265-6 5.579-6h5.3l-.3-19a6 6 0 0 1 6-6h.8v3.176h35v2.324h6.5v34.936z M429.279 160.74v-3.529h-29.478v2.527h-7.126V159H391v-1.5h-15.879v12.676c0 3.313 2.265 6 5.579 6h5.3V198h41.5v-2.324h6.5V160.74z",
|
||||
textTransform: [415, 153],
|
||||
formattedUnitType: "DE",
|
||||
},
|
||||
],
|
||||
// [
|
||||
// "21",
|
||||
// {
|
||||
// d: "M324.666 542.5H318.2l-.2-35h4.773V505H352.5v1.5h7v-.866h1.728V505H376.5l.132 11.933a6 6 0 0 1-5.999 6.067H365.7v25.156h-4.423v-.594h-1.862V544.5h-34.749z",
|
||||
// textTransform: [339, 522],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "22",
|
||||
// {
|
||||
// d: "M324.681 466.656h-6.452l-.118 34.844h4.662l-.001 2.415h29.689v-1.419l7.039.004v.818h1.809v.838H376.7l.132-11.933a6 6 0 0 0-6-6.067h-4.933v-21.791h-41.218z",
|
||||
// textTransform: [339, 480],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
[
|
||||
"10",
|
||||
"21", // 21 + 22
|
||||
{
|
||||
d: "M429.279 160.74v-2.451h-29.478v1.449h-7.126V159H391v-1h-15.879v12.176c0 3.313 2.265 6 5.579 6h5.3V198h41.5v-2.324h6.5V160.74z",
|
||||
textTransform: [415, 173],
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
[
|
||||
"21",
|
||||
{
|
||||
d: "M324.666 542.5H318.2l-.2-35h4.773V505H352.5v1.5h7v-.866h1.728V505H376.5l.132 11.933a6 6 0 0 1-5.999 6.067H365.7v25.156h-4.423v-.594h-1.862V544.5h-34.749z",
|
||||
textTransform: [339, 522],
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
[
|
||||
"22",
|
||||
{
|
||||
d: "M324.681 466.656h-6.452l-.118 34.844h4.662l-.001 2.415h29.689v-1.419l7.039.004v.818h1.809v.838H376.7l.132-11.933a6 6 0 0 0-6-6.067h-4.933v-21.791h-41.218z",
|
||||
textTransform: [339, 480],
|
||||
formattedUnitType: "ST",
|
||||
d: "M324.666 542.5H318.2l-.2-35h4.773l-.001-3.586h29.726l.002 2.586h7v-.866h1.728l.081-1.478h15.272l.051 12.777a6 6 0 0 1-5.999 6.067H365.7v25.156h-4.423v-.594h-1.862V544.5h-34.749zm.015-75.844h-6.452l-.118 34.844h4.662l-.001 2.414h29.689v-1.418l7.039.004v.817h1.809v.839H376.7l.132-11.934a6 6 0 0 0-6-6.066h-4.933v-21.792h-41.218z",
|
||||
textTransform: [339, 501],
|
||||
formattedUnitType: "DE",
|
||||
},
|
||||
],
|
||||
// [
|
||||
@@ -62,7 +79,7 @@ export const hq8_12Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M492.703 114.526h1.885l.09 65.512h4.933a6 6 0 0 1 6 6v24.79a6 6 0 0 1-6 6h-5.033v21.886h-4.744v-.492h-1.835v-.94h-7.027v1.544h-34.319v-37.312h6.489v-5.974h-6.36l-.137-75.726h6.46v-2.38h39.598z",
|
||||
textTransform: [466, 173],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -70,7 +87,7 @@ export const hq8_12Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M492.703 364.09h1.885l.09-65.511h4.933a6 6 0 0 0 6-6v-24.791a6 6 0 0 0-6-6h-5.033v-21.886h-4.744v.493h-1.835v.939h-7.027v-1.544h-34.319v37.312h6.489v5.975h-6.36l-.137 75.726h6.46v2.379h39.598z",
|
||||
textTransform: [466, 296],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -78,7 +95,7 @@ export const hq8_12Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M261.382 340.845h-4.769v-21.736h-4.933a6 6 0 0 1-6-6v-25.407c0-3.314 2.384-5.502 5.698-5.502h5.089v-63.6h6.664v.9h20.73v-2.386h20.91l-.129 80.492h-6.522v5.902h6.522v37.316h-34.403v-1.459h-7.067v.874h-1.79z",
|
||||
textTransform: [288, 278],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -86,7 +103,7 @@ export const hq8_12Masks: FloorPlanMasks = new Map([
|
||||
{
|
||||
d: "M261.382 423.622h-4.769v21.736h-4.933a6 6 0 0 0-6 6v25.407c0 3.313 2.384 5.501 5.698 5.501h5.089v66.089h6.664v-3.388h20.73v2.386h14.207v-4.652h6.574v-75.84h-6.522v-5.903h6.522v-37.315h-34.403v1.459h-7.067v-.874h-1.79z",
|
||||
textTransform: [288, 480],
|
||||
formattedUnitType: "ST",
|
||||
formattedUnitType: "EX",
|
||||
},
|
||||
],
|
||||
[
|
||||
@@ -97,20 +114,28 @@ export const hq8_12Masks: FloorPlanMasks = new Map([
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
// [
|
||||
// "16",
|
||||
// {
|
||||
// d: "M304.72 422.449v-37.417h-6.574v-2.438h-27.862v1.567h-7.139v-.898h-1.783v-.709h-15.6l-.118 12.03c-.037 3.339 1.732 6.079 6.377 5.906h4.933v3.319l-.363.5v18.187h4.863v-.555h1.672v-.976h7.23v1.484z",
|
||||
// textTransform: [288, 400],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// "15",
|
||||
// {
|
||||
// d: "M304.72 341.971v37.417h-6.574v2.438h-27.862v-1.568h-7.139v.899h-1.783v.709h-15.6l-.118-12.03c-.037-3.34 1.732-6.079 6.377-5.906h4.933v-3.319l-.363-.5v-18.187h4.863v.555h1.672v.976h7.23v-1.484z",
|
||||
// textTransform: [288, 359],
|
||||
// formattedUnitType: "ST",
|
||||
// },
|
||||
// ],
|
||||
[
|
||||
"16",
|
||||
"15", // 15 + 16
|
||||
{
|
||||
d: "M304.72 422.449v-37.417h-6.574v-2.438h-27.862v1.567h-7.139v-.898h-1.783v-.709h-15.6l-.118 12.03c-.037 3.339 1.732 6.079 6.377 5.906h4.933v3.319l-.363.5v18.187h4.863v-.555h1.672v-.976h7.23v1.484z",
|
||||
textTransform: [288, 400],
|
||||
formattedUnitType: "ST",
|
||||
},
|
||||
],
|
||||
[
|
||||
"15",
|
||||
{
|
||||
d: "M304.72 341.971v37.417h-6.574v2.438h-27.862v-1.568h-7.139v.899h-1.783v.709h-15.6l-.118-12.03c-.037-3.34 1.732-6.079 6.377-5.906h4.933v-3.319l-.363-.5v-18.187h4.863v.555h1.672v.976h7.23v-1.484z",
|
||||
textTransform: [288, 359],
|
||||
formattedUnitType: "ST",
|
||||
d: "M304.72 422.449v-37.418h-6.574v-3.205h-27.862v2.335h-7.139v-.898h-1.783v-1.397h-15.6l-.118 12.718c-.037 3.339 1.732 6.079 6.377 5.906h4.933v3.318l-.363.5v18.188h4.863v-.555h1.672v-.976h7.23v1.484zm0-80.478v37.417h-6.574v2.438h-27.862v-1.568h-7.139v.899h-1.783v.709h-15.6l-.118-12.03c-.037-3.34 1.732-6.079 6.377-5.906h4.933v-3.319l-.363-.5v-18.187h4.863v.555h1.672v.976h7.23v-1.484z",
|
||||
textTransform: [288, 380],
|
||||
formattedUnitType: "DE",
|
||||
},
|
||||
],
|
||||
]);
|
||||
|
||||
@@ -184,18 +184,40 @@ export const hqFloors: FloorData[] = [
|
||||
main: "/images/floor-plans/hq/arcade.jpg",
|
||||
content: [],
|
||||
},
|
||||
video: "/videos/hq/arcade.mp4",
|
||||
},
|
||||
|
||||
// Residential floor 29-30 (combined)
|
||||
{
|
||||
id: "floor-19-20",
|
||||
name: "19-20",
|
||||
displayName: "19-20",
|
||||
type: "residential",
|
||||
floorNumber: 19,
|
||||
},
|
||||
{
|
||||
id: "floor-23-24",
|
||||
name: "23-24",
|
||||
displayName: "23-24",
|
||||
type: "residential",
|
||||
floorNumber: 23,
|
||||
},
|
||||
{
|
||||
id: "floor-27-28",
|
||||
name: "27-28",
|
||||
displayName: "27-28",
|
||||
type: "residential",
|
||||
floorNumber: 27,
|
||||
},
|
||||
{
|
||||
id: "floor-29-30",
|
||||
name: "29-30",
|
||||
displayName: "29-30",
|
||||
displayName: "29",
|
||||
type: "residential",
|
||||
floorNumber: 29,
|
||||
},
|
||||
|
||||
// Residential floors (excluding 19, 20, 23, 24, 27, 28)
|
||||
// Residential floors (excluding 20, 24, 28)
|
||||
...[26, 25, 22, 21, 18, 17].map((floor) => ({
|
||||
id: `floor-${floor}`,
|
||||
name: `${floor}`,
|
||||
|
||||
@@ -0,0 +1,729 @@
|
||||
import { Unit } from "../types/IUnit";
|
||||
|
||||
export const hq19mockUnits: [Unit[], Unit[]] = [
|
||||
[
|
||||
{
|
||||
id: "1901",
|
||||
unitNo: "1901",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 19,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "1902",
|
||||
unitNo: "1902",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 19,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "1903",
|
||||
unitNo: "1903",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 19,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "1904",
|
||||
unitNo: "1904",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 19,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
id: "1901F",
|
||||
unitNo: "1901F",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 19,
|
||||
unitType: "Full floor",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export const hq20mockUnits: [Unit[], Unit[]] = [
|
||||
[
|
||||
{
|
||||
id: "2001",
|
||||
unitNo: "2001",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2002",
|
||||
unitNo: "2002",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2003",
|
||||
unitNo: "2003",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2004",
|
||||
unitNo: "2004",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2005",
|
||||
unitNo: "2005",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2006",
|
||||
unitNo: "2006",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
id: "2001F",
|
||||
unitNo: "2001F",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 20,
|
||||
unitType: "Full floor",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export const hq23mockUnits: [Unit[], Unit[]] = [
|
||||
[
|
||||
{
|
||||
id: "2301",
|
||||
unitNo: "2301",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 23,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2302",
|
||||
unitNo: "2302",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 23,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2303",
|
||||
unitNo: "2303",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 23,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2304",
|
||||
unitNo: "2304",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 23,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
id: "2301F",
|
||||
unitNo: "2301F",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 23,
|
||||
unitType: "Full floor",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export const hq24mockUnits: [Unit[], Unit[]] = [
|
||||
[
|
||||
{
|
||||
id: "2401",
|
||||
unitNo: "2401",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2402",
|
||||
unitNo: "2402",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2403",
|
||||
unitNo: "2403",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2404",
|
||||
unitNo: "2404",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2405",
|
||||
unitNo: "2405",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2406",
|
||||
unitNo: "2406",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
id: "2401F",
|
||||
unitNo: "2401F",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 24,
|
||||
unitType: "Full floor",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export const hq27mockUnits: [Unit[], Unit[]] = [
|
||||
[
|
||||
{
|
||||
id: "2701",
|
||||
unitNo: "2701",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 27,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2702",
|
||||
unitNo: "2702",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 27,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2703",
|
||||
unitNo: "2703",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 27,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2704",
|
||||
unitNo: "2704",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 27,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
id: "2701F",
|
||||
unitNo: "2701F",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 27,
|
||||
unitType: "Full floor",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export const hq28mockUnits: [Unit[], Unit[]] = [
|
||||
[
|
||||
{
|
||||
id: "2801",
|
||||
unitNo: "2801",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2802",
|
||||
unitNo: "2802",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2803",
|
||||
unitNo: "2803",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2804",
|
||||
unitNo: "2804",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2805",
|
||||
unitNo: "2805",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
{
|
||||
id: "2806",
|
||||
unitNo: "2806",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Simplex office",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
id: "2801",
|
||||
unitNo: "2801F",
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor: 28,
|
||||
unitType: "Full floor",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: true,
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export const hqMockUnits = {
|
||||
19: [hq19mockUnits, hq20mockUnits],
|
||||
23: [hq23mockUnits, hq24mockUnits],
|
||||
27: [hq27mockUnits, hq28mockUnits],
|
||||
};
|
||||
|
||||
export function getHQMockUnit(unitNumber: string) {
|
||||
const floor = +unitNumber.slice(0, 2);
|
||||
const isFullFloor = unitNumber.endsWith("F");
|
||||
|
||||
if (floor === 19) {
|
||||
return hq19mockUnits[isFullFloor ? 1 : 0][
|
||||
isFullFloor ? 0 : (+unitNumber.slice(-2) - 1)!
|
||||
];
|
||||
} else if (floor === 20) {
|
||||
return hq20mockUnits[isFullFloor ? 1 : 0][
|
||||
isFullFloor ? 0 : (+unitNumber.slice(-2) - 1)!
|
||||
];
|
||||
} else if (floor === 23) {
|
||||
return hq23mockUnits[isFullFloor ? 1 : 0][
|
||||
isFullFloor ? 0 : (+unitNumber.slice(-2) - 1)!
|
||||
];
|
||||
} else if (floor === 24) {
|
||||
return hq24mockUnits[isFullFloor ? 1 : 0][
|
||||
isFullFloor ? 0 : (+unitNumber.slice(-2) - 1)!
|
||||
];
|
||||
} else if (floor === 27) {
|
||||
return hq27mockUnits[isFullFloor ? 1 : 0][
|
||||
isFullFloor ? 0 : (+unitNumber.slice(-2) - 1)!
|
||||
];
|
||||
} else if (floor === 28) {
|
||||
return hq28mockUnits[isFullFloor ? 1 : 0][
|
||||
isFullFloor ? 0 : (+unitNumber.slice(-2) - 1)!
|
||||
];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -167,35 +167,28 @@ export const floorsMasks = {
|
||||
"36": "m2038.5 532-160.68 14.832a2.003 2.003 0 0 0-1.82 1.992v19.496c0 1.173 1 2.094 2.17 1.993L2038.5 556.5h55.5l122.88 7.373a2 2 0 0 0 2.12-1.997v-20.492c0-1.058-.82-1.933-1.88-1.997L2094 532z",
|
||||
"37": "m2038.5 504-160.7 16.317c-1.02.104-1.8.964-1.8 1.99v19.5c0 1.177 1.01 2.1 2.18 1.991L2038.5 529h55.5l122.88 7.373a2 2 0 0 0 2.12-1.997v-20.992c0-1.058-.82-1.933-1.88-1.997L2094 504z",
|
||||
"38": "M1876 496.78v18.5a2 2 0 0 0 2.21 1.989L2038.5 500.5h55.5l122.87 7.864a2.003 2.003 0 0 0 2.13-1.996v-19.999c0-1.052-.81-1.924-1.86-1.996L2094 476h-55.5l-160.73 18.793a2 2 0 0 0-1.77 1.987",
|
||||
// "39": "M1869 470.768v17.515a2.003 2.003 0 0 0 2.21 1.989L2038.5 473h55.5l122.86 8.846a2 2 0 0 0 2.14-1.995v-20.005c0-1.042-.8-1.91-1.84-1.993L2094 448h-55.5l-167.75 20.783c-1 .124-1.75.975-1.75 1.985",
|
||||
"39-40":
|
||||
"M1869,470.77v17.51c0,1.19,1.03,2.11,2.21,1.99l167.29-17.27h55.5l122.86,8.85c1.15.08,2.14-.83,2.14-1.99v-20.01c-.04-1.78-.1-5.48,0-6.03v-20c0-1.03-.78-1.89-1.81-1.99l-123.19-11.83h-55.5l-167.77,22.77c-.99.13-1.73.98-1.73,1.98v19.48c.02,2.02.05,6.16,0,6.54Z",
|
||||
// "40": "M1869 444.747v19.483a2 2 0 0 0 2.25 1.984L2038.5 445h55.5l122.82 10.809a2.004 2.004 0 0 0 2.18-1.993v-19.999c0-1.03-.78-1.892-1.81-1.991L2094 420h-55.5l-167.77 22.765a2 2 0 0 0-1.73 1.982",
|
||||
"41-42":
|
||||
"M1869,420.21v17.5c0,1.21,1.07,2.15,2.27,1.98l167.23-22.69h55.5l122.81,11.79c1.17.11,2.19-.81,2.19-1.99v-46.03c0-1.01-.76-1.86-1.76-1.98l-123.24-14.79h-55.33c-.11,0-.23.01-.34.03l-167.67,29.18c-.96.17-1.66,1-1.66,1.97v25.03Z",
|
||||
// "41": "M1869 420.212v17.498a2 2 0 0 0 2.27 1.982L2038.5 417h55.5l122.81 11.79a2 2 0 0 0 2.19-1.991v-19.996c0-1.025-.77-1.884-1.79-1.989L2094 392h-55.34c-.11 0-.21.008-.31.024l-167.66 26.212c-.97.152-1.69.99-1.69 1.976",
|
||||
// "42": "M1869 395.182v18.474c0 1.23 1.1 2.169 2.31 1.975l167.03-26.606c.11-.017.21-.025.32-.025H2094l122.79 12.77a2 2 0 0 0 2.21-1.989v-19.007c0-1.012-.76-1.865-1.76-1.985L2094 364h-55.33c-.11 0-.23.01-.34.03l-167.67 29.182a2 2 0 0 0-1.66 1.97",
|
||||
Rooftop:
|
||||
"M1869 347.274v41.343a2 2 0 0 0 2.35 1.97l167.98-29.557c.11-.02.23-.03.34-.03H2094l117.5 14.5 13.39 3.472a.89.89 0 0 0 1.11-.859v-18.927c0-.444-.15-.876-.42-1.228l-2.52-3.242a2.02 2.02 0 0 0-1.46-.769l-5.72-.336a2.003 2.003 0 0 1-1.88-1.997V272.2a2 2 0 0 0-1.68-1.974l-21.14-3.452a2 2 0 0 1-1.68-1.974v-32.569c0-.994-.73-1.837-1.71-1.98l-55.64-8.084a1.34 1.34 0 0 1-1.15-1.327c0-.74-.6-1.34-1.34-1.34h-1.77c-.77 0-1.39.624-1.39 1.395 0 .847-.75 1.499-1.59 1.38l-46.3-6.547a1.88 1.88 0 0 1-1.61-1.855v-.373a1.5 1.5 0 0 0-1.5-1.5h-1.04c-.25 0-.46.206-.46.46 0 .283-.25.499-.53.453l-61.65-10.035a1.997 1.997 0 0 0-2.32 1.974v4.534c0 .942-.66 1.756-1.58 1.955l-16.54 3.577c-.25.054-.51.06-.76.017l-17.78-3.036a2.004 2.004 0 0 0-2.34 1.972v4.068c0 .917-.62 1.717-1.51 1.94l-8.13 2.031c-.24.06-.48.075-.73.045l-17.89-2.181a1.998 1.998 0 0 0-2.24 1.985v3.111c0 .949-.67 1.767-1.6 1.959l-15.1 3.11q-.3.06-.6.031l-17.5-1.75a2 2 0 0 0-2.2 1.99v46.708c0 .927-.64 1.733-1.54 1.947l-15.92 3.771a2 2 0 0 0-1.54 1.946v53.144c0 .777-.45 1.484-1.15 1.813l-12.7 5.922a2 2 0 0 0-1.15 1.813",
|
||||
},
|
||||
hq: {
|
||||
"Roof Level":
|
||||
"M1628.34 295.302c-.4 10.458 3.96 18.094 6.18 20.604l.18 79.548c.64-1.031 2.71-3.258 5.91-3.913 4.01-.818 74.13 3.6 83.13 4.337 7.21.589 29.73 12.464 40.1 18.328l-4.05 3.803 96.2 57.429 31.74 4.385 35.34-33.022h4.9l.59-8.958h10.42c4.93-5.825 16.13-17.881 21.53-19.503 6.76-2.028 60.09 0 64.45 0 3.5 0 26.72 17.386 37.9 26.079l-5.73 4.051 22.45 15.332h6.57l34.13 24.095v4.016l31.04 23.912 5.29-2.556 31.21 25.19v5.111l29.57 22.451h4.75l27.93 19.166v3.651l10 7.185 3.71-3.374 37.96 26.886-.44-23.635c4.09-1.312 6.34-5.028 6.85-10.857.41-4.663-4.39-10.298-6.85-12.532-83.11-64.82-250.44-195.35-254.87-198.912-5.54-4.451-11.68-10.585-20.19-11.476-8.5-.89-49.36-3.166-57.77-2.968-6.73.159-25.16 19.127-33.54 28.592v25.34l-3.17-.692v-1.385l-186.82-125.793-15.46-7.108c-25.8-1.587-78.97-4.805-85.22-4.976-7.82-.213-15.42 9.095-15.92 22.169",
|
||||
// "30": "M2306.48 629.883c-.12-4.43-3.21-8.743-4.74-10.346l-37.96-26.886-3.71 3.374-10-7.185v-3.651l-27.93-19.166h-4.75l-29.57-22.452v-5.111l-31.21-25.189-5.3 2.555-31.03-23.912v-4.015l-34.13-24.095h-6.57l-22.45-15.333 5.73-4.05c-11.18-8.693-34.4-26.079-37.9-26.079-4.37 0-57.69-2.028-64.45 0-5.4 1.622-16.6 13.678-21.53 19.503h-10.42l-.59 8.958h-4.9l-35.34 33.022-31.74-4.386-96.2-57.428 4.05-3.803c-10.37-5.864-32.89-17.739-40.1-18.328-9-.737-79.12-5.155-83.13-4.337-3.2.655-5.27 2.881-5.91 3.913-2.27.66-6.81 4.179-6.81 12.976s10.7 25.146 16.05 32.221v10.776h30.6l18.5-19.707 28.76 1.807c3.14-.162 10.84.097 16.55 2.433s80.81 47.585 117.64 69.917h37.58l28.57-26.054h18.17l23.72-27.164c2.7-3.162 55.36-6.834 60.93-2.783l271.9 199.66v-6.248c3.25-2.623 9.73-8.977 9.62-13.407",
|
||||
// "29": "M1643.94 451.428c-5.35 1.686-33.71 21.737 0 48.36.07.055 0-5.57 0-5.57-7.22-8.621-8.44-13.81-5.87-21.053 3.36-9.473 16.72-8.086 24.37-7.602 15.49.978 54.16 4.62 71.55 6.319 5.81 2.446 18.26 8.113 21.61 11.212s9.55 2.378 12.23 1.631l22.67 15.063c-.1.69-.1 2.258.73 3.004.83.745 28.24 16.677 41.85 24.55l5.38-1.865 17.53 12.431h37.58l27.45-25.172h7.54l5.62-.621v-7.252l7.15 7.252c5.87-6.665 19-20.2 24.55-21.029 6.94-1.036 56.97 1.865 60.29 1.865 2.65 0 21.47 13.546 30.55 20.319h8.81v2.555l9.32 6.234 3.6 2.076v3.293c0 .595 119.03 83.07 178.55 124.233 2.34-1.84 7.35-5.706 8.68-6.444 1.66-.923 2.77-.369 5.26 1.292 1.99 1.33 18.11 12.834 25.92 18.42v-15.392l-271.9-199.66c-5.57-4.051-58.22-.379-60.93 2.782l-23.72 27.165h-18.17l-28.57 26.054h-37.58c-36.83-22.333-111.93-67.581-117.64-69.917s-13.41-2.596-16.55-2.433l-28.76-1.807-18.5 19.707z",
|
||||
"29-30":
|
||||
"M1640.61 391.543c4.01-.818 74.13 3.601 83.13 4.337 7.21.589 29.73 12.464 40.1 18.328l-4.05 3.803 96.2 57.428 31.74 4.386 35.34-33.022h4.9l.59-8.958h10.42c4.93-5.825 16.13-17.881 21.53-19.503 6.76-2.028 60.08 0 64.45 0 3.5 0 26.72 17.386 37.9 26.079l-5.73 4.051 22.45 15.333h6.57l34.13 24.093v4.016l31.03 23.912 5.3-2.555 31.21 25.19v5.11l29.57 22.452h4.75l27.92 19.166v3.651l10.01 7.185 3.71-3.375 37.96 26.887c1.53 1.603 4.62 5.917 4.74 10.347.11 4.43-6.37 10.783-9.62 13.406v21.639c-7.81-5.586-23.93-17.089-25.92-18.419-2.49-1.662-3.6-2.216-5.26-1.293-1.33.738-6.34 4.604-8.68 6.444-59.52-41.163-178.55-123.638-178.55-124.233v-3.293l-3.6-2.076-9.32-6.234v-2.555h-8.81c-9.08-6.773-27.9-20.319-30.55-20.319-3.32 0-53.35-2.901-60.29-1.865-5.55.829-18.68 14.364-24.55 21.028l-7.15-7.251v7.251l-5.62.622h-7.54l-27.45 25.172h-37.58l-17.53-12.43-5.38 1.864c-13.61-7.873-41.02-23.804-41.85-24.55s-.83-2.313-.73-3.004l-22.67-15.063c-2.68.747-8.88 1.467-12.23-1.631-3.35-3.099-15.8-8.766-21.61-11.212-17.39-1.699-56.06-5.341-71.55-6.319-7.65-.484-21.01-1.871-24.37 7.602-2.57 7.243-1.35 12.432 5.87 21.053 0 .042.07 5.609 0 5.57-33.18-26.207-6.22-46.045-.27-48.267l.27-.093v-10.776c-5.35-7.074-16.05-23.423-16.05-32.22s4.54-12.316 6.81-12.976c.64-1.031 2.71-3.258 5.91-3.913",
|
||||
|
||||
// "28": "M2308.01 678.627c.11-6.353-7.39-11.779-11.15-13.698-7.81-5.586-23.93-17.09-25.92-18.42-2.49-1.661-3.6-2.215-5.26-1.292-1.33.739-6.34 4.604-8.68 6.444-59.52-41.163-178.55-123.638-178.55-124.233v-3.293l-3.6-2.076-9.32-6.234v-2.555h-8.81c-9.08-6.773-27.9-20.319-30.55-20.319-3.32 0-53.35-2.901-60.29-1.865-5.55.829-18.68 14.364-24.55 21.029l-7.15-7.252v7.252l-5.62.621h-7.54l-27.45 25.172h-37.58l-17.53-12.431-5.38 1.865c-13.61-7.873-41.02-23.804-41.85-24.55s-.83-2.314-.73-3.004l-22.67-15.063c-2.68.747-8.88 1.468-12.23-1.631s-15.8-8.766-21.61-11.212c-17.39-1.699-56.06-5.341-71.55-6.319-15.49-.979-21.55.001-24.42 7.512-3.83 10.026.57 15.312 5.92 21.104v25.429l80.9 2.031v-16.776l32.46 14.745 10.53-1.395 90.1 51.209h35.64l27.45-24.703h18.7c7.02-7.554 22.09-22.66 26.16-22.66h60.29c2.29 0 23.02 11.981 33.09 17.972h6.27v7.573l12.92 9.376 7.88-5.639 35.34 24.243v8.169l29.14 19.92 7.66-3.939 30.61 20.37v9.229l26 17.894 6.75-4.502 28.25 18.119v8.779l6.92 4.614 8.68-5.568-.96 31.872c.21 1.062 6.22 6.773 6.22 6.773s15.8 9.212 25.92 14.371v-30.234c3.67-1.627 11.03-6.47 11.15-12.824",
|
||||
// "27": "M2308.01 734.658c0-4.954-7.43-10.326-11.15-12.973-10.12-5.159-25.92-14.371-25.92-14.371s-6.01-5.711-6.22-6.773l.96-31.872-8.68 5.568-6.92-4.615v-8.778l-28.25-18.119-6.75 4.502-26-17.895v-9.228l-30.61-20.37-7.66 3.939-29.14-19.92v-8.169l-35.34-24.243-7.88 5.639-12.92-9.376v-7.574h-6.27c-10.07-5.99-30.8-17.971-33.09-17.971h-60.29c-4.07 0-19.14 15.106-26.16 22.66h-18.7l-27.45 24.703h-35.64l-90.1-51.21-10.53 1.396-32.46-14.745v16.775l-80.9-2.03c-5.45.703-7.48 6.598-7.81 9.457-2.74 1.649-8.24 6.576-8.24 13.086 0 5.511 3.94 10.991 6.82 14.011-.3-4.839 1.08-15.263 8.9-18.254 7.83-2.991 63.52-1.246 90.38 0l25.45 13.078 4.35-1.187 24.54 14.048 69.6 38.076h35.64l27.45-23.577h7.54v-8.161h3.96l7.2 4.627c7.07-6.084 22.2-18.458 26.16-19.281 4.95-1.028 57.91 2.442 60.29 2.442 1.9 0 19.68 11.741 28.34 17.611l4.75-1.8 194.72 128.184c.09 2.096.61 6.529 2.01 7.492 1.39.964 29.87 19.223 43.93 28.232v8.406c2.7-1.749 8.09-6.485 8.09-11.44",
|
||||
"27-28":
|
||||
"M2308.01 734.658c0-4.954-7.43-10.326-11.15-12.973-10.12-5.159-25.92-14.371-25.92-14.371s-6.01-5.711-6.22-6.773l.96-31.872-8.68 5.568-6.92-4.615v-8.778l-28.25-18.119-6.75 4.502-26-17.895v-9.228l-30.61-20.37-7.66 3.939-29.14-19.92v-8.169l-35.34-24.243-7.88 5.639-12.92-9.376v-7.574h-6.27c-10.07-5.99-30.8-17.971-33.09-17.971h-60.29c-4.07 0-19.14 15.106-26.16 22.66h-18.7l-27.45 24.703h-35.64l-90.1-51.21-10.53 1.396-32.46-14.745v16.775l-80.9-2.03c-5.45.703-7.48 6.598-7.81 9.457-2.74 1.649-8.24 6.576-8.24 13.086 0 5.511 3.94 10.991 6.82 14.011-.3-4.839 1.08-15.263 8.9-18.254 7.83-2.991 63.52-1.246 90.38 0l25.45 13.078 4.35-1.187 24.54 14.048 69.6 38.076h35.64l27.45-23.577h7.54v-8.161h3.96l7.2 4.627c7.07-6.084 22.2-18.458 26.16-19.281 4.95-1.028 57.91 2.442 60.29 2.442 1.9 0 19.68 11.741 28.34 17.611l4.75-1.8 194.72 128.184c.09 2.096.61 6.529 2.01 7.492 1.39.964 29.87 19.223 43.93 28.232v8.406c2.7-1.749 8.09-6.485 8.09-11.44m0-56.031c.11-6.353-7.39-11.779-11.15-13.698-7.81-5.586-23.93-17.09-25.92-18.42-2.49-1.661-3.6-2.215-5.26-1.292-1.33.739-6.34 4.604-8.68 6.444-59.52-41.163-178.55-123.638-178.55-124.233v-3.293l-3.6-2.076-9.32-6.234v-2.555h-8.81c-9.08-6.773-27.9-20.319-30.55-20.319-3.32 0-53.35-2.901-60.29-1.865-5.55.829-18.68 14.364-24.55 21.029l-7.15-7.252v7.252l-5.62.621h-7.54l-27.45 25.172h-37.58l-17.53-12.431-5.38 1.865c-13.61-7.873-41.02-23.804-41.85-24.55s-.83-2.314-.73-3.004l-22.67-15.063c-2.68.747-8.88 1.468-12.23-1.631s-15.8-8.766-21.61-11.212c-17.39-1.699-56.06-5.341-71.55-6.319-15.49-.979-21.55.001-24.42 7.512-3.83 10.026.57 15.312 5.92 21.104v25.429l80.9 2.031v-16.776l32.46 14.745 10.53-1.395 90.1 51.209h35.64l27.45-24.703h18.7c7.02-7.554 22.09-22.66 26.16-22.66h60.29c2.29 0 23.02 11.981 33.09 17.972h6.27v7.573l12.92 9.376 7.88-5.639 35.34 24.243v8.169l29.14 19.92 7.66-3.939 30.61 20.37v9.229l26 17.894 6.75-4.502 28.25 18.119v8.779l6.92 4.614 8.68-5.568-.96 31.872c.21 1.062 6.22 6.773 6.22 6.773s15.8 9.212 25.92 14.371v-30.234c3.67-1.627 11.03-6.47 11.15-12.824",
|
||||
"26": "M1634.71 556.162c.52.547 1 1.014 1.43 1.385v13.554c1.04-3.223 4.8-9.635 11.47-9.49 8.35.182 84.64 5.171 88.52 5.971 3.11.64 82.49 42.935 121.8 64.003h35.64l27.46-21.821h7.53l32.3-10.305 32.65-.939v-8.074l7.72-4.016c8.33.432 25.48 1.296 27.41 1.296 1.92 0 181.66 111.25 271.28 166.875v-16.908c-14.06-9.009-42.54-27.269-43.93-28.232s-1.92-5.397-2.01-7.493l-194.71-128.183-4.76 1.799c-8.66-5.87-26.44-17.61-28.34-17.61-2.38 0-55.34-3.471-60.29-2.442-3.96.822-19.09 13.197-26.16 19.281l-7.2-4.628h-3.96v8.161h-7.53l-27.46 23.578h-35.64l-69.6-38.077-24.53-14.047-4.36 1.187-25.45-13.079c-26.86-1.246-82.55-2.991-90.38 0-7.82 2.991-9.19 13.416-8.9 18.254",
|
||||
"25": "M1627.89 604.065c0 6.158 6.67 17.321 16.38 24.962l-.66-5.074c-2.68-2.064-7.73-7.562-6.5-13.041 1.54-6.847 5.03-11.18 24-10.667 15.18.41 55.91 3.453 74.37 4.923l21.74 11.899 8.08-4.593 23.03 12.482v5.031l47.21 22.793 2.93-1.928 17.52 10.433h37.58l27.45-21.424h7.54c9.98-8.683 30.43-26.351 32.3-27.559 2.33-1.509 65.31 1.509 67.78 1.509s34.3 19.347 35.67 19.896c1.1.439 1.37 6.403 1.37 9.33l14.68 9.056c.13 1.26.69 3.902 1.9 4.387s22.33 12.733 32.74 18.796l2.73-1.718 33.75 19.706c-.13 1.482.44 4.85 3.84 6.467s19.07 10.577 26.48 14.855l4.24-1.415 29 18.291c-.5.955-.22 3.539 4.95 6.232 5.18 2.694 17.45 9.835 22.94 13.069h3.54l14.05 7.983 5.66-4.143c9.69 5.066 30 15.851 33.74 18.456v-18.456c-89.63-55.625-269.36-166.875-271.28-166.875-1.93 0-19.08-.865-27.41-1.297l-7.72 4.017v8.074l-32.65.939-32.3 10.304h-7.54l-27.45 21.822h-35.64c-39.31-21.068-118.69-63.364-121.8-64.004-3.88-.8-80.18-5.789-88.52-5.97-6.67-.145-10.43 6.266-11.48 9.49v21.415c-2.74 1.283-8.24 5.389-8.24 11.547",
|
||||
// "24": "M2308.01 783.187c0-5.072-5.39-8.865-8.09-10.128-3.74-2.606-24.05-13.39-33.74-18.457l-5.66 4.144-14.05-7.984h-3.54c-5.49-3.233-17.76-10.374-22.94-13.068-5.17-2.694-5.45-5.278-4.95-6.233l-29-18.29-4.24 1.414c-7.41-4.278-23.08-13.238-26.48-14.855-3.4-1.616-3.98-4.985-3.84-6.467l-33.75-19.705-2.73 1.718c-10.41-6.064-31.53-18.311-32.74-18.796s-1.77-3.127-1.9-4.388l-14.68-9.055c0-2.927-.27-8.892-1.37-9.331-1.37-.548-33.2-19.895-35.67-19.895s-65.45-3.019-67.78-1.509c-1.87 1.207-22.32 18.875-32.3 27.558h-7.54l-27.45 21.425h-37.58l-17.53-10.433-2.92 1.928-47.21-22.794v-5.03l-23.03-12.482-8.08 4.592-21.74-11.898c-18.46-1.47-59.19-4.514-74.37-4.924-18.97-.513-22.46 3.82-24 10.668-1.23 5.478 3.82 10.976 6.5 13.041l.66 5.074-.66 23.753 80.58 3.019v-14.686l7.24-2.555 25.79 11.281h10.18l22.99 11.446c1.2-1.829 3.95-5.486 5.32-5.486 1.7 0 41.03 20.647 42.75 20.86 1.39.17 1.45 4.895 1.31 7.237l18.16 9.578h39.73l23.36-20.544h7.54c9.9-6.488 30.23-19.6 32.3-20.15 2.57-.688 65.08-.688 67.78-.688 2.15 0 25.59 13.892 37.04 20.838v3.523l13.39 6.271c2.09-1.516 6.52-4.578 7.53-4.703 1.25-.157 33.86 19.282 34.95 19.909.88.501.37 6.375 0 9.249l30.73 16.46c1.15-1.254 3.73-3.857 4.86-4.233 1.41-.47 30.73 15.259 31.35 16.774.5 1.211.21 5.834 0 7.995l26.55 16.616c1.55-.94 4.9-2.915 5.9-3.292 1.26-.47 27.75 13.912 28.53 14.736.63.659.26 5.291 0 7.525l5.02 3.427h9.56v15.698l32.96 13.301v-17.269c3.66-1.797 11-6.659 11-11.73",
|
||||
// "23": "M2308.01 840.453c-.53-5.712-7.55-9.715-11-11.002v-17.269l-32.96-13.301v-15.698h-9.56l-5.02-3.427c.26-2.234.63-6.866 0-7.525-.78-.823-27.27-15.206-28.53-14.735-1 .376-4.35 2.351-5.9 3.292l-26.55-16.617c.21-2.16.5-6.784 0-7.995-.62-1.514-29.94-17.244-31.35-16.774-1.13.377-3.71 2.979-4.86 4.233l-30.72-16.46c.36-2.874.87-8.747 0-9.249-1.1-.627-33.71-20.066-34.96-19.909-1.01.126-5.44 3.188-7.53 4.703l-13.39-6.271v-3.522c-11.45-6.946-34.89-20.838-37.04-20.838-2.7 0-65.21 0-67.78.687-2.07.55-22.4 13.663-32.3 20.151h-7.53l-23.37 20.543h-39.73l-18.16-9.578c.14-2.341.08-7.067-1.3-7.237-1.73-.213-41.06-20.859-42.76-20.859-1.36 0-4.12 3.657-5.32 5.485l-22.99-11.445h-10.18l-25.79-11.281-7.24 2.554v14.687l-80.58-3.02c-3.69 1.056-6.52 4.399-7.47 5.938v4.949c-2.97 1.466-8.78 5.872-8.25 11.766s5.72 11.4 8.25 13.416c-.26-3.549.31-11.352 4.61-14.162 5.36-3.513 90.26-1.952 94.65-1.756 3.51.156 16.49 6.179 22.54 9.172l6.44-1.464 21.66 11.222h7.91l63.98 32.844h35.64l27.46-19.555h7.53l6.76-4.855 6.67 3.091c6.35-4.61 19.89-14.092 23.27-15.134 4.23-1.302 61.17 1.953 63.38 2.604 1.76.521 19.02 9.747 27.43 14.294l3.58-1.764 196.34 108.871c-.57 1.844-.83 5.988 2.69 7.811 4.39 2.278 38.82 17.576 40.03 21.318.97 2.995 1.21 6.652 1.21 8.106 2.92-.632 8.61-3.323 8.09-9.035",
|
||||
"23-24":
|
||||
"M2308.01 840.453c-.53-5.712-7.55-9.715-11-11.002v-17.269l-32.96-13.301v-15.698h-9.56l-5.02-3.427c.26-2.234.63-6.866 0-7.525-.78-.823-27.27-15.206-28.53-14.735-1 .376-4.35 2.351-5.9 3.292l-26.55-16.617c.21-2.16.5-6.784 0-7.995-.62-1.514-29.94-17.244-31.35-16.774-1.13.377-3.71 2.979-4.86 4.233l-30.72-16.46c.36-2.874.87-8.747 0-9.249-1.1-.627-33.71-20.066-34.96-19.909-1.01.126-5.44 3.188-7.53 4.703l-13.39-6.271v-3.522c-11.45-6.946-34.89-20.838-37.04-20.838-2.7 0-65.21 0-67.78.687-2.07.55-22.4 13.663-32.3 20.151h-7.53l-23.37 20.543h-39.73l-18.16-9.578c.14-2.341.08-7.067-1.3-7.237-1.73-.213-41.06-20.859-42.76-20.859-1.36 0-4.12 3.657-5.32 5.485l-22.99-11.445h-10.18l-25.79-11.281-7.24 2.554v14.687l-80.58-3.02c-3.69 1.056-6.52 4.399-7.47 5.938v4.949c-2.97 1.466-8.78 5.872-8.25 11.766s5.72 11.4 8.25 13.416c-.26-3.549.31-11.352 4.61-14.162 5.36-3.513 90.26-1.952 94.65-1.756 3.51.156 16.49 6.179 22.54 9.172l6.44-1.464 21.66 11.222h7.91l63.98 32.844h35.64l27.46-19.555h7.53l6.76-4.855 6.67 3.091c6.35-4.61 19.89-14.092 23.27-15.134 4.23-1.302 61.17 1.953 63.38 2.604 1.76.521 19.02 9.747 27.43 14.294l3.58-1.764 196.34 108.871c-.57 1.844-.83 5.988 2.69 7.811 4.39 2.278 38.82 17.576 40.03 21.318.97 2.995 1.21 6.652 1.21 8.106 2.92-.632 8.61-3.323 8.09-9.035m0-57.266c0-5.072-5.39-8.865-8.09-10.128-3.74-2.606-24.05-13.39-33.74-18.457l-5.66 4.144-14.05-7.984h-3.54c-5.49-3.233-17.76-10.374-22.94-13.068-5.17-2.694-5.45-5.278-4.95-6.233l-29-18.29-4.24 1.414c-7.41-4.278-23.08-13.238-26.48-14.855-3.4-1.616-3.98-4.985-3.84-6.467l-33.75-19.705-2.73 1.718c-10.41-6.064-31.53-18.311-32.74-18.796s-1.77-3.127-1.9-4.388l-14.68-9.055c0-2.927-.27-8.892-1.37-9.331-1.37-.548-33.2-19.895-35.67-19.895s-65.45-3.019-67.78-1.509c-1.87 1.207-22.32 18.875-32.3 27.558h-7.54l-27.45 21.425h-37.58l-17.53-10.433-2.92 1.928-47.21-22.794v-5.03l-23.03-12.482-8.08 4.592-21.74-11.898c-18.46-1.47-59.19-4.514-74.37-4.924-18.97-.513-22.46 3.82-24 10.668-1.23 5.478 3.82 10.976 6.5 13.041l.66 5.074-.66 23.753 80.58 3.019v-14.686l7.24-2.555 25.79 11.281h10.18l22.99 11.446c1.2-1.829 3.95-5.486 5.32-5.486 1.7 0 41.03 20.647 42.75 20.86 1.39.17 1.45 4.895 1.31 7.237l18.16 9.578h39.73l23.36-20.544h7.54c9.9-6.488 30.23-19.6 32.3-20.15 2.57-.688 65.08-.688 67.78-.688 2.15 0 25.59 13.892 37.04 20.838v3.523l13.39 6.271c2.09-1.516 6.52-4.578 7.53-4.703 1.25-.157 33.86 19.282 34.95 19.909.88.501.37 6.375 0 9.249l30.73 16.46c1.15-1.254 3.73-3.857 4.86-4.233 1.41-.47 30.73 15.259 31.35 16.774.5 1.211.21 5.834 0 7.995l26.55 16.616c1.55-.94 4.9-2.915 5.9-3.292 1.26-.47 27.75 13.912 28.53 14.736.63.659.26 5.291 0 7.525l5.02 3.427h9.56v15.698l32.96 13.301v-17.269c3.66-1.797 11-6.659 11-11.73",
|
||||
"22": "M1640.75 674.687c-4.3 2.81-4.87 10.612-4.62 14.162v14.537c.9-1.999 4.15-6.087 10-6.442 7.31-.443 85.97 3.35 91.06 3.35 4.08 0 34.27 15.196 48.85 22.794h9.2l62.69 29.938h35.64l27.45-15.093h7.54c11.37-6.942 34.64-20.96 36.7-21.492 2.58-.664 60.37 3.102 63.38 3.102 2.4 0 148.35 73.411 221.02 110.116v5.539l50.26 26.469v-12.175c0-1.455-.24-5.111-1.21-8.106-1.22-3.743-35.64-19.04-40.04-21.318-3.51-1.823-3.25-5.967-2.69-7.811l-196.33-108.871-3.58 1.764c-8.41-4.548-25.67-13.774-27.43-14.294-2.21-.651-59.15-3.906-63.38-2.604-3.38 1.041-16.92 10.523-23.27 15.134l-6.67-3.092-6.76 4.856h-7.54l-27.45 19.555h-35.64l-63.99-32.845h-7.9l-21.66-11.221-6.44 1.464c-6.05-2.993-19.03-9.017-22.54-9.173-4.39-.195-89.29-1.756-94.65 1.757",
|
||||
"21": "M2308.01 888.834c0-3.848-5.39-7.481-8.09-8.817v-18.354l-50.26-26.469v-5.539c-72.67-36.705-218.62-110.116-221.02-110.116-3.01 0-60.8-3.766-63.38-3.101-2.06.531-25.33 14.549-36.7 21.491h-7.54l-27.45 15.093h-35.64l-62.69-29.938h-9.2c-14.58-7.598-44.77-22.794-48.85-22.794-5.09 0-83.75-3.793-91.06-3.35-5.85.355-9.1 4.443-10 6.442v22.522c-2.93.807-8.68 4.091-8.24 10.777s10.59 17.595 15.61 22.214l.11-3.596c-2.98-3.058-8.22-10.277-5.31-14.691 3.64-5.517 20.69-4.765 38.88-4.639 18.18.125 54.67 2.131 58.93 3.385 4.27 1.254 17.18 5.643 20.69 10.032l10.54-1.881 23.32 11.411c-.13.752.08 2.383 1.88 2.884 1.81.502 27.67 11.829 40.38 17.43l6.9-1.254 17.43 9.154h38.24l25.53-18.308h7.54l5.05-4.263 7.53 2.006c7.05-4.221 21.76-12.84 24.12-13.543 2.96-.877 57.26.502 60.77 1.505 2.81.803 22.23 10.784 31.6 15.675l7.15-3.637 193.89 99.502 5.29 2.209c.04 1.545.93 4.824 4.12 5.578 3.97.942 30.08 13.086 31.84 16.227 1.41 2.513-1.45 6.141-3.06 7.642 3.13.146 11.15-4.08 11.15-8.889",
|
||||
// "20": "M1643.5 758.896v28.482l80.82 1.295v-14.7l6.64-2.416 26.77 10.27 9.61-1.41 23.32 9.062c1.45-1.343 4.62-4.068 5.75-4.229 1.41-.201 42.11 17.117 43.41 17.52 1.03.322.43 6.309 0 9.263l17.43 5.236h38.24l26.46-16.513h6.61l5.05-3.021 7.53 1.41c5.39-3.377 17.46-10.508 22.61-12.013 6.45-1.882 57.19 0 59.21 0 1.61 0 23.78 9.082 34.67 13.624l7.15-1.611 14.76 9.062c1.32-.802 4.64-2.348 7.38-2.12 3.42.285 31.77 14.585 32.62 15.485.69.72.29 4.415 0 6.172l144.42 67.678v6.839l32.9 15.173v-19.71c1.61-1.5 4.47-5.129 3.06-7.641-1.76-3.141-27.87-15.286-31.84-16.228-3.19-.754-4.08-4.032-4.12-5.577l-5.29-2.209-193.89-99.502-7.15 3.636c-9.37-4.89-28.79-14.872-31.6-15.674-3.51-1.003-57.81-2.383-60.77-1.505-2.36.702-17.07 9.321-24.12 13.543l-7.53-2.007-5.05 4.264h-7.54l-25.53 18.308h-38.24l-17.43-9.154-6.9 1.254c-12.71-5.601-38.57-16.929-40.38-17.43-1.8-.502-2.01-2.132-1.88-2.884l-23.32-11.411-10.54 1.88c-3.51-4.388-16.42-8.777-20.69-10.031-4.26-1.254-40.75-3.261-58.93-3.386-1.72-.012-3.42-.029-5.11-.046-16.17-.165-30.47-.311-33.77 4.686-2.91 4.414 2.33 11.632 5.31 14.69z",
|
||||
// "19": "M2308.01 945.597c.29-3.847-7.31-7.238-11.15-8.452v-19.709l-32.9-15.173v-6.839l-144.42-67.678c.29-1.757.69-5.452 0-6.172-.85-.9-29.21-15.2-32.62-15.485-2.74-.228-6.06 1.318-7.38 2.12l-14.77-9.062-7.14 1.611c-10.89-4.542-33.06-13.624-34.67-13.624-2.02 0-52.76-1.882-59.21 0-5.15 1.505-17.22 8.636-22.62 12.013l-7.52-1.41-5.06 3.021h-6.6l-26.46 16.513h-38.25l-17.43-5.236c.44-2.954 1.04-8.941 0-9.263-1.3-.403-41.99-17.721-43.4-17.52-1.13.161-4.3 2.886-5.75 4.229l-23.32-9.062-9.61 1.41-26.77-10.27-6.64 2.416v14.7l-80.82-1.295c-3.34.703-6.3 3.958-7.37 5.498v4.839c-2.75 1.686-8.24 5.982-8.24 9.677s5.49 9.09 8.24 11.326c-.39-3.191 1.39-10.302 8.51-13.211 3.38-.383 12.34-1.129 21.14-1.052 8.81.076 49.66 1.371 68.99 2.009l22.96 9.089 6.99-2.296 92.52 36.621h36.64l28.07-16.388h6.6l5.89-4.813 6.69 2.98c5.99-3.858 18.23-11.712 19.33-12.262 1.03-.516 37.94.966 57.22 1.739l.01.001c6.43.258 10.9.437 11.41.437 1.65 0 14.67 7.334 20.97 11.002l9.29-1.719 195.23 91.353c-.05 1.155.1 3.626 1.14 4.274s29.84 14.109 44.12 20.758v5.933c2.6-.923 7.87-3.731 8.16-7.578",
|
||||
"19-20":
|
||||
"M2308.01 945.597c.29-3.847-7.31-7.238-11.15-8.452v-19.709l-32.9-15.173v-6.839l-144.42-67.678c.29-1.757.69-5.452 0-6.172-.85-.9-29.21-15.2-32.62-15.485-2.74-.228-6.06 1.318-7.38 2.12l-14.77-9.062-7.14 1.611c-10.89-4.542-33.06-13.624-34.67-13.624-2.02 0-52.76-1.882-59.21 0-5.15 1.505-17.22 8.636-22.62 12.013l-7.52-1.41-5.06 3.021h-6.6l-26.46 16.513h-38.25l-17.43-5.236c.44-2.954 1.04-8.941 0-9.263-1.3-.403-41.99-17.721-43.4-17.52-1.13.161-4.3 2.886-5.75 4.229l-23.32-9.062-9.61 1.41-26.77-10.27-6.64 2.416v14.7l-80.82-1.295c-3.34.703-6.3 3.958-7.37 5.498v4.839c-2.75 1.686-8.24 5.982-8.24 9.677s5.49 9.09 8.24 11.326c-.39-3.191 1.39-10.302 8.51-13.211 3.38-.383 12.34-1.129 21.14-1.052 8.81.076 49.66 1.371 68.99 2.009l22.96 9.089 6.99-2.296 92.52 36.621h36.64l28.07-16.388h6.6l5.89-4.813 6.69 2.98c5.99-3.858 18.23-11.712 19.33-12.262 1.03-.516 37.94.966 57.22 1.739l.01.001c6.43.258 10.9.437 11.41.437 1.65 0 14.67 7.334 20.97 11.002l9.29-1.719 195.23 91.353c-.05 1.155.1 3.626 1.14 4.274s29.84 14.109 44.12 20.758v5.933c2.6-.923 7.87-3.731 8.16-7.578M1643.5 758.896v28.482l80.82 1.295v-14.7l6.64-2.416 26.77 10.27 9.61-1.41 23.32 9.062c1.45-1.343 4.62-4.068 5.75-4.229 1.41-.201 42.11 17.117 43.41 17.52 1.03.322.43 6.309 0 9.263l17.43 5.236h38.24l26.46-16.513h6.61l5.05-3.021 7.53 1.41c5.39-3.377 17.46-10.508 22.61-12.013 6.45-1.882 57.19 0 59.21 0 1.61 0 23.78 9.082 34.67 13.624l7.15-1.611 14.76 9.062c1.32-.802 4.64-2.348 7.38-2.12 3.42.285 31.77 14.585 32.62 15.485.69.72.29 4.415 0 6.172l144.42 67.678v6.839l32.9 15.173v-19.71c1.61-1.5 4.47-5.129 3.06-7.641-1.76-3.141-27.87-15.286-31.84-16.228-3.19-.754-4.08-4.032-4.12-5.577l-5.29-2.209-193.89-99.502-7.15 3.636c-9.37-4.89-28.79-14.872-31.6-15.674-3.51-1.003-57.81-2.383-60.77-1.505-2.36.702-17.07 9.321-24.12 13.543l-7.53-2.007-5.05 4.264h-7.54l-25.53 18.308h-38.24l-17.43-9.154-6.9 1.254c-12.71-5.601-38.57-16.929-40.38-17.43-1.8-.502-2.01-2.132-1.88-2.884l-23.32-11.411-10.54 1.88c-3.51-4.388-16.42-8.777-20.69-10.031-4.26-1.254-40.75-3.261-58.93-3.386-1.72-.012-3.42-.029-5.11-.046-16.17-.165-30.47-.311-33.77 4.686-2.91 4.414 2.33 11.632 5.31 14.69z",
|
||||
"18": "M1644.64 805.505c-7.12 2.909-8.9 10.02-8.51 13.211v21.664c1.28-3.215 5.82-9.532 13.8-9.076 9.97.57 81.2 3.135 84.84 3.42 2.91.227 82.86 30.205 122.48 45.166l36.63.855 28.07-13.963h6.61l31.9-14.961c21.47-.237 65.25-.741 68.64-.855 3.4-.114 147.96 59.13 219.82 88.766l.71 5.861 50.22 20.497v-18.852c-14.28-6.649-43.08-20.109-44.12-20.758s-1.19-3.119-1.14-4.274l-195.23-91.353-9.28 1.719c-6.31-3.668-19.33-11.002-20.98-11.002-.51 0-4.98-.179-11.42-.438-19.28-.773-56.19-2.255-57.22-1.739-1.1.55-13.34 8.404-19.32 12.262l-6.7-2.98-5.88 4.813h-6.61l-28.07 16.388h-36.63l-92.53-36.621-6.99 2.296-22.96-9.089c-19.33-.638-60.18-1.933-68.98-2.009-8.81-.077-17.77.669-21.15 1.052",
|
||||
"17": "M1643.86 887.229c-5.07-3.996-15.36-13.042-15.97-17.265-.62-4.223 5.24-7.038 8.24-7.918v-21.663c1.28-3.216 5.82-9.532 13.8-9.076 9.97.57 81.2 3.134 84.84 3.419 2.91.228 82.86 30.206 122.47 45.166l36.64.855 28.07-13.963h6.6l31.91-14.96c21.47-.238 65.25-.741 68.64-.855s147.96 59.129 219.82 88.765l.71 5.862 50.22 20.497v18.339c-50.46-21.266-153.48-64.547-161.92-67.551-8.44-3.003-12.11-1.898-12.89-.971l-16.93 5.912c-10.24-3.671-30.71-11.282-30.71-12.359v-7.955l-13.49-5.49h-10.58c-1.56-2.385-19.71-10.578-21.68-10.682s-61.29-2.593-67.51-1.556c-4.98.83-17.84 10.509-23.65 15.245l-6.63-.622-5.31 3.76-34.67 16.674-5.09-1.879-31.55-3.053-90.41-32.033h-9.57c-1.06-1.789-19.8-9.728-23.9-9.728-.66 0-3.46-.08-7.7-.202-22.15-.638-83.77-2.411-86.9.202-2.98 2.492 2.16 11.095 5.1 15.085",
|
||||
"Reset 16":
|
||||
@@ -967,20 +960,6 @@ export const enumerationMasks: Record<
|
||||
height: 20,
|
||||
d: "M2253.51 462.734c-1.43 0-2.48-.6-2.94-1.404l.9-.636c.42.66 1.05 1.02 2.02 1.02 1.28 0 2.01-.624 2.01-1.56 0-.924-.77-1.56-1.98-1.56h-.85v-1.008h.85c1.09 0 1.8-.6 1.8-1.452 0-.864-.67-1.452-1.83-1.452-.9 0-1.48.348-1.84.936l-.88-.624c.46-.744 1.43-1.332 2.76-1.332 1.82 0 2.98 1.008 2.98 2.4 0 .936-.53 1.62-1.42 1.956v.024c1.04.372 1.6 1.128 1.6 2.148 0 1.476-1.22 2.544-3.18 2.544m5.12-.396.42-.984c.41.228.89.36 1.43.36 1.9 0 2.68-1.596 2.79-3.624h-.02c-.52.732-1.41 1.116-2.38 1.116-1.61 0-2.77-1.08-2.77-2.724 0-1.668 1.2-2.82 3.06-2.82 2.5 0 3.24 2.088 3.24 4.164 0 2.328-.94 4.908-3.91 4.908-.73 0-1.36-.156-1.86-.396m2.47-4.128c.89 0 1.94-.432 1.94-1.608 0-.876-.6-1.932-1.95-1.932-1.12 0-1.83.696-1.83 1.764 0 1.02.66 1.776 1.84 1.776m4.58 1.344v-1.056h2.86v1.056zm10.9.024v1.008h-1.61v2.016h-1.18v-2.016h-4.44v-.876l4.13-5.916h1.49v5.784zm-5.94 0h3.15v-4.476h-.02zm9.85 3.156c-2.59 0-3.18-2.196-3.18-4.524 0-2.316.57-4.548 3.18-4.548 2.59 0 3.18 2.196 3.18 4.524 0 2.316-.58 4.548-3.18 4.548m0-1.02c1.81 0 1.99-1.8 1.99-3.516s-.18-3.516-1.99-3.516-1.99 1.8-1.99 3.516.18 3.516 1.99 3.516",
|
||||
},
|
||||
// "39": {
|
||||
// x: 2251,
|
||||
// y: 463.402,
|
||||
// width: 33,
|
||||
// height: 20,
|
||||
// d: "M2263.03 478.534c-1.43 0-2.47-.6-2.94-1.404l.9-.636c.42.66 1.05 1.02 2.03 1.02 1.27 0 2-.624 2-1.56 0-.924-.77-1.56-1.98-1.56h-.85v-1.008h.85c1.09 0 1.8-.6 1.8-1.452 0-.864-.67-1.452-1.82-1.452-.9 0-1.49.348-1.85.936l-.88-.624c.46-.744 1.43-1.332 2.76-1.332 1.83 0 2.98 1.008 2.98 2.4 0 .936-.53 1.62-1.42 1.956v.024c1.05.372 1.6 1.128 1.6 2.148 0 1.476-1.21 2.544-3.18 2.544m5.12-.396.42-.984c.41.228.89.36 1.43.36 1.91 0 2.69-1.596 2.8-3.624h-.03c-.51.732-1.4 1.116-2.37 1.116-1.61 0-2.78-1.08-2.78-2.724 0-1.668 1.2-2.82 3.06-2.82 2.5 0 3.24 2.088 3.24 4.164 0 2.328-.93 4.908-3.91 4.908-.73 0-1.35-.156-1.86-.396m2.47-4.128c.89 0 1.95-.432 1.95-1.608 0-.876-.6-1.932-1.96-1.932-1.11 0-1.82.696-1.82 1.764 0 1.02.66 1.776 1.83 1.776",
|
||||
// },
|
||||
// "40": {
|
||||
// x: 2251,
|
||||
// y: 436.602,
|
||||
// width: 33,
|
||||
// height: 20,
|
||||
// d: "M2266.89 448.578v1.008h-1.61v2.016h-1.17v-2.016h-4.44v-.876l4.13-5.916h1.48v5.784zm-5.94 0h3.16v-4.476h-.03zm9.85 3.156c-2.59 0-3.18-2.196-3.18-4.524 0-2.316.58-4.548 3.18-4.548s3.18 2.196 3.18 4.524c0 2.316-.57 4.548-3.18 4.548m0-1.02c1.82 0 2-1.8 2-3.516s-.18-3.516-2-3.516c-1.81 0-1.99 1.8-1.99 3.516s.18 3.516 1.99 3.516",
|
||||
// },
|
||||
"41-42": {
|
||||
x: 2241,
|
||||
y: 396,
|
||||
@@ -988,20 +967,6 @@ export const enumerationMasks: Record<
|
||||
height: 20,
|
||||
d: "M2257.37 407.976v1.008h-1.61V411h-1.17v-2.016h-4.44v-.876l4.12-5.916h1.49v5.784zm-5.94 0h3.16V403.5h-.03zm7.28 3.024v-1.044h2.15v-6.3c-.66.396-1.4.636-2.15.828v-1.044c1-.3 1.84-.696 2.52-1.248h.82v7.764h2.13V411zm6.97-3.048v-1.056h2.86v1.056zm10.9.024v1.008h-1.61V411h-1.18v-2.016h-4.44v-.876l4.13-5.916h1.49v5.784zm-5.94 0h3.15V403.5h-.02zm6.91 3.024v-.852l3.07-3.072c.86-.852 1.42-1.62 1.42-2.472 0-.888-.59-1.5-1.72-1.5-.9 0-1.45.384-1.94 1.068l-.86-.66c.65-.9 1.56-1.452 2.88-1.452 1.78 0 2.82.996 2.82 2.46 0 .948-.44 1.884-1.4 2.844l-2.58 2.568v.024h4.16V411z",
|
||||
},
|
||||
// "41": {
|
||||
// x: 2251,
|
||||
// y: 409.801,
|
||||
// width: 33,
|
||||
// height: 20,
|
||||
// d: "M2266.89 421.777v1.008h-1.61v2.016h-1.17v-2.016h-4.44v-.876l4.13-5.916h1.48v5.784zm-5.94 0h3.16v-4.476h-.03zm7.29 3.024v-1.044h2.14v-6.3c-.66.396-1.4.636-2.14.828v-1.044c.99-.3 1.83-.696 2.52-1.248h.81v7.764h2.14v1.044z",
|
||||
// },
|
||||
// "42": {
|
||||
// x: 2251,
|
||||
// y: 383,
|
||||
// width: 33,
|
||||
// height: 20,
|
||||
// d: "M2266.89 394.976v1.008h-1.61V398h-1.17v-2.016h-4.44v-.876l4.13-5.916h1.48v5.784zm-5.94 0h3.16V390.5h-.03zm6.91 3.024v-.852l3.08-3.072c.86-.852 1.41-1.62 1.41-2.472 0-.888-.59-1.5-1.71-1.5-.9 0-1.46.384-1.95 1.068l-.85-.66c.65-.9 1.56-1.452 2.88-1.452 1.78 0 2.82.996 2.82 2.46 0 .948-.44 1.884-1.4 2.844l-2.58 2.568v.024h4.16V398z",
|
||||
// },
|
||||
"Sky 44": {
|
||||
x: 2240,
|
||||
y: 313,
|
||||
@@ -1011,7 +976,6 @@ export const enumerationMasks: Record<
|
||||
},
|
||||
},
|
||||
hq: {
|
||||
// x="2232.72" y="1291.62" width="44.976" height="27.25"
|
||||
"5": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1020,15 +984,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "m1578.09 1261.38-.28 3.7c.5-.22 1.11-.36 1.91-.36 2.67 0 4.58 1.63 4.58 4.18 0 2.51-1.86 4.24-4.83 4.24-1.97 0-3.41-.77-4.22-1.8l1.25-1.13c.7.91 1.65 1.41 3.01 1.41 1.89 0 3.02-1.04 3.02-2.68 0-1.61-1.18-2.72-3.13-2.72-.91 0-1.56.25-2.11.57h-1.34l.55-6.97h7.05v1.56z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1291.62,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "m2253.32 1301.48-.26 3.38c.45-.19 1.01-.32 1.75-.32 2.43 0 4.18 1.49 4.18 3.82 0 2.29-1.7 3.88-4.41 3.88-1.8 0-3.13-.7-3.86-1.65l1.14-1.03c.64.83 1.51 1.29 2.75 1.29 1.73 0 2.76-.95 2.76-2.45 0-1.47-1.07-2.49-2.86-2.49-.83 0-1.42.23-1.93.53h-1.22l.5-6.38h6.45v1.42z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1263.91" width="44.976" height="27.25"
|
||||
"6": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1037,15 +993,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "m1583.99 1227.29-.64 1.43c-.66-.39-1.47-.57-2.27-.57-2.75 0-3.97 2.16-4.17 5.15h.04c.79-1.06 2.18-1.57 3.56-1.57 2.59 0 4.24 1.78 4.24 4.16 0 2.5-1.81 4.26-4.67 4.26-3.74 0-4.9-3.02-4.9-6.21 0-3.63 1.52-7.31 5.94-7.31 1.14 0 2.09.25 2.87.66m-3.82 11.36c1.79 0 2.82-1.13 2.82-2.7 0-1.52-.96-2.74-2.86-2.74-1.53 0-2.97.82-2.97 2.47 0 1.23.81 2.97 3.01 2.97",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1263.91,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "m2258.72 1272.76-.59 1.31c-.61-.36-1.34-.52-2.08-.52-2.52 0-3.63 1.98-3.81 4.71h.03c.72-.97 2-1.44 3.26-1.44 2.37 0 3.87 1.64 3.87 3.81 0 2.29-1.65 3.89-4.27 3.89-3.41 0-4.48-2.76-4.48-5.67 0-3.32 1.39-6.69 5.43-6.69 1.05 0 1.92.23 2.64.6m-3.5 10.39c1.63 0 2.58-1.03 2.58-2.47 0-1.39-.88-2.5-2.62-2.5-1.4 0-2.71.75-2.71 2.25 0 1.13.73 2.72 2.75 2.72",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1235.66" width="44.976" height="27.25"
|
||||
"7": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1054,15 +1002,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "m1577.34 1206.95 4.99-11.57h-7.02v-1.55h8.9v1.3l-5.01 11.82z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1235.66,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "m2252.63 1256.09 4.56-10.58h-6.42v-1.42h8.14v1.19l-4.58 10.81z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1207.6" width="44.976" height="27.25"
|
||||
"8": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1071,15 +1011,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1579.79 1174.15c-2.89 0-4.73-1.52-4.73-3.72 0-1.51.85-2.59 2.43-3.2v-.03c-1.34-.56-2.15-1.63-2.15-3.02 0-2.08 1.77-3.54 4.45-3.54 2.72 0 4.47 1.46 4.47 3.54 0 1.39-.82 2.43-2.14 2.95v.03c1.55.63 2.43 1.76 2.43 3.27 0 2.2-1.86 3.72-4.76 3.72m0-7.65c1.58 0 2.7-.95 2.7-2.22 0-1.23-.98-2.14-2.7-2.14-1.71 0-2.68.91-2.68 2.14 0 1.27 1.13 2.22 2.68 2.22m0 1.45c-1.75 0-2.96 1-2.96 2.41 0 1.33 1.07 2.29 2.96 2.29 1.92 0 2.99-.96 2.99-2.29 0-1.41-1.23-2.41-2.99-2.41",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1207.6,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2254.87 1228.21c-2.65 0-4.33-1.39-4.33-3.4 0-1.39.78-2.37 2.22-2.92v-.04c-1.22-.5-1.96-1.49-1.96-2.76 0-1.9 1.62-3.24 4.07-3.24 2.49 0 4.09 1.34 4.09 3.24 0 1.27-.75 2.22-1.96 2.7v.03c1.42.57 2.22 1.6 2.22 2.99 0 2.01-1.7 3.4-4.35 3.4m0-7c1.44 0 2.47-.86 2.47-2.02 0-1.13-.9-1.97-2.47-1.97s-2.45.84-2.45 1.97c0 1.16 1.03 2.02 2.45 2.02m0 1.33c-1.6 0-2.71.92-2.71 2.21 0 1.21.98 2.09 2.71 2.09 1.75 0 2.73-.88 2.73-2.09 0-1.29-1.12-2.21-2.73-2.21",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1179.61" width="44.976" height="27.25"
|
||||
"9": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1088,15 +1020,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "m1575.86 1140.57.63-1.47c.6.34 1.32.54 2.12.54 2.85 0 4.01-2.38 4.17-5.4h-.04c-.77 1.09-2.09 1.66-3.54 1.66-2.39 0-4.13-1.61-4.13-4.06 0-2.48 1.79-4.2 4.56-4.2 3.72 0 4.83 3.11 4.83 6.21 0 3.47-1.4 7.31-5.83 7.31-1.09 0-2.02-.23-2.77-.59m3.68-6.15c1.33 0 2.9-.64 2.9-2.4 0-1.3-.89-2.88-2.92-2.88-1.66 0-2.71 1.04-2.71 2.63 0 1.52.98 2.65 2.73 2.65",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1179.61,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "m2251.27 1199.69.58-1.34c.55.31 1.21.49 1.94.49 2.6 0 3.67-2.18 3.81-4.94h-.03c-.7 1-1.91 1.52-3.24 1.52-2.19 0-3.78-1.47-3.78-3.71 0-2.27 1.64-3.84 4.18-3.84 3.4 0 4.41 2.84 4.41 5.67 0 3.17-1.27 6.69-5.33 6.69-1 0-1.85-.21-2.54-.54m3.37-5.63c1.21 0 2.65-.59 2.65-2.19 0-1.19-.81-2.63-2.66-2.63-1.52 0-2.49.95-2.49 2.4 0 1.39.9 2.42 2.5 2.42",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1151.96" width="44.976" height="27.25"
|
||||
"10": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1105,15 +1029,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1570.3 1107.97v-1.56h3.2v-9.39c-.99.59-2.1.95-3.2 1.24v-1.56c1.48-.44 2.73-1.03 3.75-1.86h1.22v11.57h3.18v1.56zm15.05.19c-3.86 0-4.74-3.27-4.74-6.74 0-3.45.86-6.77 4.74-6.77 3.86 0 4.74 3.27 4.74 6.74 0 3.45-.86 6.77-4.74 6.77m0-1.52c2.7 0 2.97-2.68 2.97-5.23 0-2.56-.27-5.24-2.97-5.24s-2.97 2.68-2.97 5.24c0 2.55.27 5.23 2.97 5.23",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1151.96,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.94 1172.4v-1.42h2.93v-8.59c-.9.54-1.92.87-2.93 1.13v-1.43c1.36-.4 2.5-.94 3.43-1.7h1.12v10.59h2.91v1.42zm13.77.18c-3.53 0-4.34-2.99-4.34-6.17 0-3.15.79-6.2 4.34-6.2 3.53 0 4.33 3 4.33 6.17 0 3.16-.78 6.2-4.33 6.2m0-1.39c2.47 0 2.71-2.46 2.71-4.79 0-2.34-.24-4.8-2.71-4.8s-2.72 2.46-2.72 4.8c0 2.33.25 4.79 2.72 4.79",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1123.9" width="44.976" height="27.25"
|
||||
"11": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1122,15 +1038,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1570.3 1074.97v-1.55h3.2v-9.39c-.99.59-2.1.95-3.2 1.23v-1.55c1.48-.45 2.73-1.04 3.75-1.86h1.22v11.57h3.18v1.55zm11.22 0v-1.55h3.2v-9.39c-.98.59-2.09.95-3.2 1.23v-1.55c1.49-.45 2.74-1.04 3.76-1.86h1.21v11.57h3.19v1.55z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1123.9,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.94 1144.34v-1.42h2.93v-8.59c-.9.54-1.92.87-2.93 1.13v-1.42c1.36-.41 2.5-.95 3.43-1.71h1.12v10.59h2.91v1.42zm10.27 0v-1.42h2.93v-8.59c-.9.54-1.92.87-2.93 1.13v-1.42c1.36-.41 2.5-.95 3.43-1.71h1.12v10.59h2.91v1.42z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1095.84" width="44.976" height="27.25"
|
||||
"12": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1139,15 +1047,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1570.3 1041.98v-1.56h3.2v-9.39c-.99.59-2.1.95-3.2 1.24v-1.56c1.48-.45 2.73-1.04 3.75-1.86h1.22v11.57h3.18v1.56zm10.67 0v-1.27l4.58-4.58c1.28-1.27 2.11-2.41 2.11-3.68 0-1.33-.88-2.24-2.56-2.24-1.34 0-2.16.57-2.9 1.59l-1.27-.98c.97-1.34 2.33-2.16 4.29-2.16 2.65 0 4.21 1.48 4.21 3.66 0 1.41-.67 2.81-2.1 4.24l-3.84 3.82v.04h6.2v1.56z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1095.84,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.94 1116.28v-1.42h2.93v-8.59c-.9.54-1.92.87-2.93 1.13v-1.42c1.36-.41 2.5-.95 3.43-1.7h1.12v10.58h2.91v1.42zm9.76 0v-1.16l4.19-4.19c1.18-1.16 1.93-2.2 1.93-3.37 0-1.21-.8-2.04-2.34-2.04-1.23 0-1.98.52-2.65 1.46l-1.16-.9c.88-1.23 2.13-1.98 3.92-1.98 2.42 0 3.85 1.35 3.85 3.35 0 1.29-.61 2.57-1.92 3.88l-3.51 3.5v.03h5.67v1.42z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1067.64" width="44.976" height="27.25"
|
||||
"13": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1156,32 +1056,16 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1570.3 1008.98v-1.56h3.2v-9.383c-.99.59-2.1.948-3.2 1.234v-1.556c1.48-.446 2.73-1.037 3.75-1.859h1.22v11.564h3.18v1.56zm14.55.2c-2.13 0-3.68-.9-4.38-2.1l1.34-.94c.63.98 1.58 1.52 3.02 1.52 1.9 0 2.99-.93 2.99-2.33 0-1.37-1.14-2.32-2.95-2.32h-1.27v-1.5h1.27c1.63 0 2.68-.9 2.68-2.167 0-1.288-1-2.164-2.72-2.164-1.34 0-2.21.519-2.75 1.395l-1.3-.93c.67-1.109 2.12-1.985 4.11-1.985 2.72 0 4.43 1.502 4.43 3.576 0 1.395-.79 2.415-2.11 2.915v.04c1.56.55 2.38 1.68 2.38 3.2 0 2.19-1.81 3.79-4.74 3.79",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1067.64,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2246.62 1088.08v-1.42h2.93v-8.59c-.9.54-1.92.87-2.93 1.13v-1.42c1.36-.41 2.5-.95 3.43-1.71h1.12v10.59h2.91v1.42zm13.32.18c-1.95 0-3.37-.82-4.01-1.91l1.22-.87c.58.9 1.44 1.39 2.77 1.39 1.73 0 2.73-.85 2.73-2.13 0-1.26-1.05-2.12-2.7-2.12h-1.16v-1.38h1.16c1.49 0 2.45-.82 2.45-1.98 0-1.17-.91-1.98-2.48-1.98-1.23 0-2.03.48-2.52 1.28l-1.19-.85c.62-1.01 1.94-1.82 3.76-1.82 2.48 0 4.05 1.38 4.05 3.28 0 1.27-.72 2.2-1.93 2.66v.03c1.43.51 2.18 1.54 2.18 2.93 0 2.01-1.65 3.47-4.33 3.47",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1039.66" width="44.976" height="27.25"
|
||||
"14": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 955.359,
|
||||
width: 38.006,
|
||||
height: 32.502,
|
||||
height: 27.251,
|
||||
d: "M1570.3 975.984v-1.555h3.2v-9.387c-.99.59-2.1.948-3.2 1.234v-1.556c1.48-.447 2.73-1.037 3.75-1.859h1.22v11.568h3.18v1.555zm20.45-4.505v1.502h-2.4v3.003h-1.75v-3.003h-6.61v-1.306l6.15-8.814h2.21v8.618zm-8.85 0h4.7v-6.669h-.04z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1039.66,
|
||||
// width: 44.976,
|
||||
// height: 27.25,
|
||||
// d: "M2245.94 1060.09v-1.42h2.93v-8.59c-.9.54-1.92.87-2.93 1.13v-1.42c1.36-.41 2.5-.95 3.43-1.7h1.12v10.58h2.91v1.42zm18.71-4.12v1.38h-2.19v2.74h-1.61v-2.74h-6.05v-1.2l5.63-8.06h2.03v7.88zm-8.1 0h4.3v-6.1h-.03z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="985.001" width="93.954" height="27.25"
|
||||
"Reset 16": [
|
||||
{
|
||||
x: 1500.24,
|
||||
@@ -1190,15 +1074,7 @@ export const enumerationMasks: Record<
|
||||
height: 32.502,
|
||||
d: "m1523.04 920.722-2.79-5.775h-3.64v5.775h-1.81V906.99h5.6c2.54 0 4.41 1.449 4.41 3.934 0 1.841-1.11 3.075-2.75 3.611l3.02 6.187zm-6.43-12.158v4.809h3.75c1.47 0 2.63-.786 2.63-2.396 0-1.627-1.13-2.413-2.61-2.413zm10.99 6.615h5.33c-.11-1.573-.89-2.825-2.59-2.825-1.68 0-2.58 1.216-2.74 2.825m5.47 3.129 1.18 1.055c-.85 1.001-2.09 1.555-3.63 1.555-3.02 0-4.73-1.984-4.73-5.006 0-2.896 1.71-4.988 4.48-4.988 2.76 0 4.24 2.056 4.24 4.684 0 .286-.02.733-.05.984h-6.94c.18 1.823 1.23 2.878 3.02 2.878 1.06 0 1.86-.393 2.43-1.162m6.8 2.61c-1.7 0-3.02-.5-4.02-1.448l1.04-1.162c.84.805 1.89 1.18 3.04 1.18 1.52 0 2.25-.554 2.25-1.377 0-.912-.97-1.126-2.58-1.466-1.8-.393-3.41-.947-3.41-2.807 0-1.645 1.29-2.914 3.79-2.914 1.54 0 2.74.465 3.74 1.376l-1.02 1.163c-.82-.751-1.74-1.109-2.77-1.109-1.34 0-2.02.572-2.02 1.305 0 .894.85 1.091 2.52 1.449 1.77.393 3.47.894 3.47 2.807 0 1.752-1.4 3.003-4.03 3.003m7.17-5.739h5.32c-.1-1.573-.89-2.825-2.59-2.825-1.68 0-2.57 1.216-2.73 2.825m5.47 3.129 1.18 1.055c-.86 1.001-2.09 1.555-3.63 1.555-3.02 0-4.74-1.984-4.74-5.006 0-2.896 1.72-4.988 4.49-4.988 2.75 0 4.24 2.056 4.24 4.684 0 .286-.02.733-.06.984h-6.94c.18 1.823 1.24 2.878 3.03 2.878 1.05 0 1.86-.393 2.43-1.162m2.29-5.775v-1.413h1.92v-3.039h1.7v3.039h2.3v1.413h-2.3v5.256c0 1.145.3 1.663 1.55 1.663.32 0 .56-.036.75-.071v1.376c-.37.09-.8.161-1.34.161-1.82 0-2.66-1.001-2.66-2.699v-5.686zm12.56 8.189v-1.556h3.2v-9.386c-.98.59-2.09.947-3.2 1.233v-1.555c1.48-.447 2.74-1.037 3.76-1.86h1.21v11.568h3.18v1.556zm19.24-12.659-.65 1.43c-.66-.393-1.46-.572-2.27-.572-2.75 0-3.97 2.164-4.16 5.15h.03c.79-1.055 2.18-1.574 3.56-1.574 2.59 0 4.24 1.788 4.24 4.166 0 2.503-1.81 4.255-4.67 4.255-3.73 0-4.9-3.021-4.9-6.204 0-3.629 1.52-7.312 5.94-7.312 1.14 0 2.09.25 2.88.661m-3.83 11.353c1.79 0 2.83-1.126 2.83-2.699 0-1.52-.97-2.736-2.86-2.736-1.54 0-2.97.823-2.97 2.468 0 1.233.8 2.967 3 2.967",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 985.001,
|
||||
// width: 93.954,
|
||||
// height: 27.25,
|
||||
// d: "m2253.91 1005.44-2.55-5.29h-3.33v5.29h-1.66v-12.563h5.12c2.33 0 4.04 1.325 4.04 3.598 0 1.685-1.01 2.813-2.52 3.304l2.77 5.661zm-5.88-11.124v4.4h3.43c1.34 0 2.4-.72 2.4-2.192 0-1.488-1.03-2.208-2.38-2.208zm10.06 6.054h4.87c-.1-1.442-.82-2.587-2.37-2.587-1.54 0-2.36 1.113-2.5 2.587m5 2.86 1.08.96c-.79.92-1.91 1.43-3.32 1.43-2.76 0-4.33-1.82-4.33-4.58 0-2.651 1.57-4.565 4.1-4.565 2.52 0 3.88 1.881 3.88 4.285 0 .26-.02.67-.05.9h-6.35c.17 1.67 1.13 2.63 2.77 2.63.96 0 1.7-.36 2.22-1.06m6.22 2.39c-1.55 0-2.77-.46-3.68-1.33l.95-1.06c.77.74 1.73 1.08 2.78 1.08 1.39 0 2.06-.51 2.06-1.26 0-.83-.88-1.03-2.36-1.34-1.65-.36-3.12-.87-3.12-2.569 0-1.505 1.18-2.666 3.47-2.666 1.4 0 2.5.425 3.42 1.259l-.94 1.063c-.75-.687-1.58-1.014-2.53-1.014-1.23 0-1.85.524-1.85 1.194 0 .818.78.998 2.31 1.323 1.62.36 3.17.82 3.17 2.57 0 1.6-1.28 2.75-3.68 2.75m6.55-5.25h4.88c-.1-1.442-.82-2.587-2.38-2.587-1.53 0-2.35 1.113-2.5 2.587m5.01 2.86 1.08.96c-.79.92-1.92 1.43-3.32 1.43-2.77 0-4.34-1.82-4.34-4.58 0-2.651 1.57-4.565 4.11-4.565 2.52 0 3.87 1.881 3.87 4.285 0 .26-.01.67-.05.9h-6.34c.16 1.67 1.13 2.63 2.76 2.63.97 0 1.7-.36 2.23-1.06m2.1-5.283v-1.292h1.75v-2.78h1.55v2.78h2.11v1.292h-2.11v4.813c0 1.04.28 1.52 1.42 1.52.3 0 .51-.04.69-.07v1.26c-.34.08-.74.15-1.23.15-1.66 0-2.43-.92-2.43-2.47v-5.203zm11.48 7.493v-1.43h2.93v-8.582c-.9.54-1.91.867-2.93 1.129v-1.423c1.36-.409 2.51-.949 3.44-1.701h1.11v10.577h2.91v1.43zm17.6-11.582-.59 1.309c-.6-.36-1.34-.524-2.08-.524-2.51 0-3.63 1.979-3.81 4.71h.04c.72-.964 1.99-1.439 3.25-1.439 2.37 0 3.88 1.636 3.88 3.806 0 2.29-1.66 3.9-4.27 3.9-3.42 0-4.48-2.77-4.48-5.678 0-3.32 1.39-6.689 5.43-6.689 1.04 0 1.91.229 2.63.605m-3.5 10.382c1.64 0 2.58-1.03 2.58-2.47 0-1.39-.88-2.498-2.61-2.498-1.41 0-2.72.748-2.72 2.258 0 1.13.74 2.71 2.75 2.71",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="942.313" width="44.976" height="27.25"
|
||||
"17": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1207,15 +1083,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1570.3 857.168v-1.556h3.2v-9.386c-.99.59-2.1.947-3.2 1.233v-1.555c1.48-.447 2.73-1.037 3.75-1.859h1.22v11.567h3.18v1.556zm10.94 0 4.99-11.568h-7.03v-1.555h8.91v1.305l-5.01 11.818z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 942.313,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2247.3 962.751v-1.423h2.93v-8.587c-.9.54-1.91.867-2.93 1.129v-1.423c1.36-.409 2.5-.949 3.44-1.701h1.11v10.582h2.91v1.423zm10.01 0 4.57-10.582h-6.43v-1.423h8.14v1.194l-4.58 10.811z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="914.421" width="44.976" height="27.25"
|
||||
"18": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1224,49 +1092,16 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1570.3 824.172v-1.556h3.2v-9.386c-.99.59-2.1.947-3.2 1.233v-1.555c1.48-.447 2.73-1.037 3.75-1.86h1.22v11.568h3.18v1.556zm15.03.197c-2.9 0-4.74-1.52-4.74-3.719 0-1.52.86-2.593 2.43-3.201v-.036c-1.34-.554-2.14-1.627-2.14-3.021 0-2.074 1.77-3.54 4.45-3.54 2.72 0 4.47 1.466 4.47 3.54 0 1.394-.82 2.431-2.14 2.95v.036c1.55.625 2.43 1.752 2.43 3.272 0 2.199-1.86 3.719-4.76 3.719m0-7.653c1.57 0 2.7-.947 2.7-2.217 0-1.234-.98-2.145-2.7-2.145s-2.68.911-2.68 2.145c0 1.27 1.13 2.217 2.68 2.217m0 1.448c-1.75 0-2.97 1.002-2.97 2.414 0 1.323 1.08 2.289 2.97 2.289 1.91 0 2.99-.966 2.99-2.289 0-1.412-1.24-2.414-2.99-2.414",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 914.421,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.94 934.858v-1.423h2.93v-8.586c-.9.54-1.92.867-2.93 1.128v-1.422c1.36-.409 2.5-.949 3.43-1.701h1.12v10.581h2.91v1.423zm13.75.18c-2.65 0-4.33-1.39-4.33-3.402 0-1.39.78-2.371 2.22-2.927v-.033c-1.22-.507-1.96-1.488-1.96-2.764 0-1.897 1.62-3.238 4.07-3.238 2.49 0 4.09 1.341 4.09 3.238 0 1.276-.75 2.224-1.96 2.699v.032c1.42.573 2.22 1.603 2.22 2.993 0 2.012-1.7 3.402-4.35 3.402m0-7c1.44 0 2.47-.867 2.47-2.028 0-1.128-.9-1.962-2.47-1.962s-2.45.834-2.45 1.962c0 1.161 1.03 2.028 2.45 2.028m0 1.325c-1.6 0-2.71.916-2.71 2.208 0 1.21.98 2.093 2.71 2.093 1.75 0 2.73-.883 2.73-2.093 0-1.292-1.12-2.208-2.73-2.208",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="886.528" width="44.976" height="27.25"
|
||||
"19": [
|
||||
"19-20": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 770.552,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1570.3 791.177v-1.556h3.2v-9.386c-.99.59-2.1.947-3.2 1.233v-1.555c1.48-.447 2.73-1.037 3.75-1.86h1.22v11.568h3.18v1.556zm11.1-.394.62-1.466c.61.34 1.33.537 2.13.537 2.84 0 4.01-2.378 4.17-5.4h-.04c-.77 1.091-2.09 1.663-3.54 1.663-2.39 0-4.13-1.609-4.13-4.059 0-2.485 1.79-4.201 4.56-4.201 3.72 0 4.83 3.111 4.83 6.204 0 3.468-1.4 7.312-5.83 7.312-1.09 0-2.02-.232-2.77-.59m3.68-6.15c1.32 0 2.9-.644 2.9-2.396 0-1.305-.9-2.879-2.92-2.879-1.66 0-2.71 1.037-2.71 2.629 0 1.52.98 2.646 2.73 2.646",
|
||||
d: "M1545.94 774.726v-1.571h3.23v-9.482c-.99.596-2.11.958-3.23 1.247v-1.572c1.49-.451 2.76-1.047 3.79-1.878h1.23v11.685h3.21v1.571zm11.21-.397.63-1.481a4.4 4.4 0 0 0 2.15.541c2.87 0 4.05-2.401 4.21-5.454h-.04c-.77 1.102-2.11 1.68-3.57 1.68-2.42 0-4.17-1.625-4.17-4.1 0-2.51 1.8-4.244 4.6-4.244 3.76 0 4.88 3.143 4.88 6.267 0 3.504-1.41 7.386-5.89 7.386-1.1 0-2.04-.234-2.8-.595m3.72-6.213c1.34 0 2.93-.65 2.93-2.42 0-1.318-.91-2.908-2.95-2.908-1.68 0-2.74 1.048-2.74 2.655 0 1.535.99 2.673 2.76 2.673m6.9 2.023v-1.59h4.3v1.59zm6.51 4.587v-1.282l4.63-4.624c1.3-1.282 2.13-2.438 2.13-3.72 0-1.336-.89-2.257-2.59-2.257-1.35 0-2.18.578-2.92 1.607l-1.28-.993c.97-1.355 2.34-2.186 4.33-2.186 2.67 0 4.24 1.499 4.24 3.703 0 1.426-.66 2.835-2.11 4.28l-3.88 3.865v.036h6.26v1.571zm15.77.198c-3.9 0-4.79-3.304-4.79-6.808 0-3.485.87-6.845 4.79-6.845 3.9 0 4.78 3.305 4.78 6.809 0 3.485-.86 6.844-4.78 6.844m0-1.535c2.72 0 2.99-2.709 2.99-5.291s-.27-5.291-2.99-5.291c-2.73 0-3 2.708-3 5.291 0 2.582.27 5.291 3 5.291",
|
||||
x: 1535,
|
||||
y: 754.084,
|
||||
width: 70.26,
|
||||
height: 27.25,
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 886.528,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.94 906.966v-1.423h2.93v-8.587c-.9.54-1.92.867-2.93 1.129v-1.423c1.36-.409 2.5-.949 3.43-1.701h1.12v10.582h2.91v1.423zm10.15-.36.58-1.341c.55.31 1.21.49 1.94.49 2.6 0 3.67-2.175 3.81-4.939h-.03c-.7.998-1.91 1.521-3.24 1.521-2.19 0-3.78-1.472-3.78-3.712 0-2.274 1.64-3.844 4.18-3.844 3.4 0 4.41 2.846 4.41 5.675 0 3.173-1.27 6.689-5.33 6.689-1 0-1.85-.212-2.54-.539m3.37-5.626c1.21 0 2.65-.589 2.65-2.192 0-1.194-.81-2.633-2.66-2.633-1.52 0-2.49.949-2.49 2.404 0 1.39.9 2.421 2.5 2.421",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="858.386" width="44.976" height="27.25"
|
||||
"20": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 737.556,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1569.74 758.181v-1.27l4.58-4.577c1.29-1.269 2.11-2.414 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.163 4.29-2.163 2.64 0 4.2 1.484 4.2 3.665 0 1.412-.66 2.807-2.09 4.237l-3.85 3.826v.036h6.21v1.556zm15.61.196c-3.86 0-4.74-3.272-4.74-6.74 0-3.451.86-6.776 4.74-6.776 3.86 0 4.74 3.271 4.74 6.74 0 3.451-.86 6.776-4.74 6.776m0-1.519c2.7 0 2.97-2.682 2.97-5.239s-.27-5.239-2.97-5.239-2.97 2.682-2.97 5.239.27 5.239 2.97 5.239",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 858.386,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 878.823v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.357 3.85 3.352 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.423zm14.28.18c-3.53 0-4.34-2.993-4.34-6.166 0-3.156.79-6.198 4.34-6.198 3.53 0 4.33 2.993 4.33 6.165 0 3.157-.78 6.199-4.33 6.199m0-1.39c2.47 0 2.71-2.453 2.71-4.792s-.24-4.792-2.71-4.792-2.72 2.453-2.72 4.792.25 4.792 2.72 4.792",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="830.512" width="44.976" height="27.25"
|
||||
"21": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1275,15 +1110,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1569.74 725.186v-1.27l4.58-4.577c1.29-1.269 2.11-2.414 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.164 4.29-2.164 2.64 0 4.2 1.484 4.2 3.666 0 1.412-.66 2.807-2.09 4.237l-3.85 3.826v.036h6.21v1.556zm11.78 0v-1.556h3.2v-9.387c-.98.59-2.09.948-3.2 1.234v-1.555c1.49-.447 2.74-1.037 3.76-1.86h1.21v11.568h3.19v1.556z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 830.512,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 850.949v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.357 3.85 3.352 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.423zm10.78 0v-1.423h2.93v-8.586c-.9.54-1.92.867-2.93 1.128v-1.423c1.36-.408 2.5-.948 3.43-1.7h1.12v10.581h2.91v1.423z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="801.952" width="44.976" height="27.25"
|
||||
"22": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1292,49 +1119,16 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1569.74 692.191v-1.269l4.58-4.577c1.29-1.27 2.11-2.414 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.164 4.29-2.164 2.64 0 4.2 1.484 4.2 3.666 0 1.412-.66 2.807-2.09 4.237l-3.85 3.826v.036h6.21v1.555zm11.23 0v-1.269l4.58-4.577c1.28-1.27 2.11-2.414 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.9 1.591l-1.27-.983c.97-1.341 2.33-2.164 4.29-2.164 2.65 0 4.21 1.484 4.21 3.666 0 1.412-.67 2.807-2.1 4.237l-3.84 3.826v.036h6.2v1.555z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 801.952,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 822.389v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.456l-1.16-.9c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.358 3.85 3.353 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.422zm10.27 0v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.456l-1.16-.9c.88-1.227 2.13-1.979 3.92-1.979 2.42 0 3.85 1.358 3.85 3.353 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.422z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="773.636" width="44.976" height="27.25"
|
||||
"23": [
|
||||
"23-24": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 638.568,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1569.74 659.193v-1.269l4.58-4.577c1.29-1.27 2.11-2.414 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.164 4.29-2.164 2.64 0 4.2 1.484 4.2 3.666 0 1.412-.66 2.807-2.09 4.237l-3.85 3.826v.036h6.21v1.555zm15.11.197c-2.13 0-3.68-.894-4.38-2.092l1.34-.947c.63.983 1.58 1.519 3.02 1.519 1.9 0 2.99-.929 2.99-2.324 0-1.377-1.14-2.324-2.95-2.324h-1.27v-1.502h1.27c1.63 0 2.68-.894 2.68-2.164 0-1.287-1-2.163-2.72-2.163-1.34 0-2.21.518-2.75 1.395l-1.3-.93c.67-1.109 2.12-1.985 4.11-1.985 2.72 0 4.43 1.502 4.43 3.576 0 1.395-.79 2.414-2.11 2.914v.036c1.56.554 2.38 1.681 2.38 3.201 0 2.199-1.81 3.79-4.74 3.79",
|
||||
d: "M1545.38 644.726v-1.282l4.62-4.624c1.3-1.282 2.13-2.438 2.13-3.72 0-1.336-.88-2.257-2.58-2.257-1.36 0-2.19.578-2.93 1.607l-1.28-.993c.98-1.355 2.35-2.186 4.33-2.186 2.68 0 4.25 1.499 4.25 3.703 0 1.426-.67 2.835-2.11 4.28l-3.89 3.865v.036h6.27v1.571zm15.26.198c-2.15 0-3.72-.902-4.43-2.112l1.36-.958c.63.994 1.59 1.535 3.05 1.535 1.91 0 3.02-.939 3.02-2.347 0-1.391-1.16-2.348-2.98-2.348h-1.29v-1.517h1.29c1.64 0 2.71-.903 2.71-2.185 0-1.301-1.02-2.185-2.75-2.185-1.35 0-2.24.523-2.78 1.408l-1.32-.939c.69-1.12 2.15-2.005 4.15-2.005 2.75 0 4.48 1.517 4.48 3.612 0 1.409-.79 2.438-2.13 2.944v.036c1.57.56 2.4 1.698 2.4 3.233 0 2.221-1.82 3.828-4.78 3.828m6.99-4.785v-1.59h4.29v1.59zm6.51 4.587v-1.282l4.62-4.624c1.3-1.282 2.14-2.438 2.14-3.72 0-1.336-.89-2.257-2.59-2.257-1.35 0-2.18.578-2.92 1.607l-1.29-.993c.98-1.355 2.35-2.186 4.34-2.186 2.67 0 4.24 1.499 4.24 3.703 0 1.426-.67 2.835-2.11 4.28l-3.88 3.865v.036h6.26v1.571zm20.99-4.551v1.517h-2.42v3.034h-1.77v-3.034h-6.68v-1.319l6.21-8.903h2.24v8.705zm-8.94 0h4.75v-6.736h-.04z",
|
||||
x: 1535,
|
||||
y: 624.084,
|
||||
width: 70.26,
|
||||
height: 27.25,
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 773.636,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2246.11 794.073v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.93-1.979 2.42 0 3.84 1.357 3.84 3.352 0 1.292-.61 2.568-1.91 3.876l-3.52 3.5v.033h5.67v1.423zm13.83.18c-1.95 0-3.37-.818-4.01-1.914l1.22-.866c.58.899 1.44 1.39 2.77 1.39 1.73 0 2.73-.851 2.73-2.126 0-1.26-1.05-2.127-2.7-2.127h-1.16v-1.373h1.16c1.49 0 2.45-.818 2.45-1.979 0-1.178-.91-1.979-2.48-1.979-1.23 0-2.03.474-2.52 1.276l-1.19-.851c.62-1.014 1.94-1.815 3.76-1.815 2.48 0 4.05 1.373 4.05 3.271 0 1.275-.72 2.208-1.93 2.665v.033c1.43.507 2.18 1.538 2.18 2.928 0 2.011-1.65 3.467-4.33 3.467",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="745.537" width="44.976" height="27.25"
|
||||
"24": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 605.573,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1569.74 626.198v-1.269l4.58-4.577c1.29-1.27 2.11-2.414 2.11-3.683 0-1.324-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.164 4.29-2.164 2.64 0 4.2 1.484 4.2 3.665 0 1.413-.66 2.807-2.09 4.238l-3.85 3.826v.036h6.21v1.555zm20.78-4.505v1.502h-2.39v3.003h-1.76v-3.003h-6.61v-1.306l6.15-8.814h2.22v8.618zm-8.85 0h4.7v-6.669h-.03z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 745.537,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2246.11 765.974v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.93-1.979 2.42 0 3.84 1.357 3.84 3.353 0 1.292-.61 2.567-1.91 3.876l-3.52 3.5v.032h5.67v1.423zm19.01-4.121v1.374h-2.19v2.747h-1.6v-2.747h-6.05v-1.194l5.62-8.063h2.03v7.883zm-8.09 0h4.3v-6.1h-.04z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="717.386" width="44.976" height="27.25"
|
||||
"25": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1343,15 +1137,7 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1569.74 593.204v-1.269l4.58-4.577c1.29-1.27 2.11-2.414 2.11-3.684 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.573-2.89 1.592l-1.27-.984c.96-1.341 2.32-2.163 4.29-2.163 2.64 0 4.2 1.484 4.2 3.665 0 1.413-.66 2.807-2.09 4.238l-3.85 3.826v.036h6.21v1.555zm13.89-11.568-.28 3.701c.5-.214 1.11-.357 1.91-.357 2.66 0 4.58 1.627 4.58 4.183 0 2.503-1.86 4.238-4.83 4.238-1.97 0-3.42-.769-4.22-1.806l1.25-1.126c.7.911 1.65 1.412 3.01 1.412 1.89 0 3.02-1.037 3.02-2.682 0-1.609-1.18-2.718-3.13-2.718-.91 0-1.56.251-2.11.573h-1.34l.55-6.973h7.05v1.555z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 717.386,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 737.823v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.357 3.85 3.352 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.423zm12.71-10.582-.26 3.386c.45-.196 1.01-.327 1.75-.327 2.43 0 4.18 1.488 4.18 3.827 0 2.289-1.7 3.876-4.41 3.876-1.8 0-3.13-.703-3.86-1.652l1.14-1.03c.64.834 1.51 1.292 2.75 1.292 1.73 0 2.76-.949 2.76-2.453 0-1.472-1.07-2.486-2.86-2.486-.83 0-1.42.229-1.93.523h-1.22l.5-6.378h6.45v1.422z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="688.841" width="44.976" height="27.25"
|
||||
"26": [
|
||||
{
|
||||
x: 1561.19,
|
||||
@@ -1360,83 +1146,25 @@ export const enumerationMasks: Record<
|
||||
height: 27.251,
|
||||
d: "M1569.74 560.208v-1.269l4.58-4.578c1.29-1.269 2.11-2.413 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.573-2.89 1.592l-1.27-.984c.96-1.341 2.32-2.163 4.29-2.163 2.64 0 4.2 1.484 4.2 3.665 0 1.413-.66 2.807-2.09 4.238l-3.85 3.826v.036h6.21v1.555zm19.79-12.659-.64 1.431c-.66-.394-1.47-.572-2.27-.572-2.75 0-3.97 2.163-4.17 5.149h.04c.79-1.055 2.18-1.574 3.56-1.574 2.59 0 4.23 1.788 4.23 4.166 0 2.504-1.8 4.256-4.66 4.256-3.74 0-4.9-3.022-4.9-6.204 0-3.63 1.52-7.313 5.93-7.313 1.15 0 2.1.25 2.88.661m-3.82 11.354c1.78 0 2.82-1.127 2.82-2.7 0-1.52-.96-2.736-2.86-2.736-1.54 0-2.97.823-2.97 2.468 0 1.234.81 2.968 3.01 2.968",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 688.841,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 709.276v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.357 3.85 3.353 0 1.292-.61 2.567-1.92 3.876l-3.51 3.5v.032h5.67v1.423zm18.11-11.579-.59 1.308c-.61-.359-1.34-.523-2.08-.523-2.52 0-3.63 1.979-3.81 4.71h.03c.72-.965 2-1.439 3.26-1.439 2.37 0 3.87 1.635 3.87 3.811 0 2.289-1.65 3.892-4.27 3.892-3.41 0-4.48-2.764-4.48-5.675 0-3.32 1.39-6.689 5.43-6.689 1.05 0 1.92.229 2.64.605m-3.5 10.385c1.63 0 2.58-1.03 2.58-2.469 0-1.391-.88-2.503-2.62-2.503-1.4 0-2.71.753-2.71 2.257 0 1.129.73 2.715 2.75 2.715",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="661.096" width="44.976" height="27.25"
|
||||
"27": [
|
||||
"27-28": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 506.588,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1569.74 527.213v-1.27l4.58-4.577c1.29-1.269 2.11-2.413 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.592l-1.27-.984c.96-1.341 2.32-2.163 4.29-2.163 2.64 0 4.2 1.484 4.2 3.665 0 1.413-.66 2.807-2.09 4.237l-3.85 3.827v.035h6.21v1.556zm13.14 0 4.99-11.568h-7.03v-1.556h8.91v1.306l-5.01 11.818z",
|
||||
x: 1535,
|
||||
y: 491.084,
|
||||
width: 70.26,
|
||||
height: 27.25,
|
||||
d: "M1545.38 511.726v-1.282l4.62-4.624c1.3-1.282 2.13-2.438 2.13-3.72 0-1.336-.88-2.257-2.58-2.257-1.36 0-2.19.578-2.93 1.607l-1.28-.993c.98-1.355 2.35-2.186 4.33-2.186 2.68 0 4.25 1.499 4.25 3.703 0 1.426-.67 2.835-2.11 4.28l-3.89 3.865v.036h6.27v1.571zm13.27 0 5.04-11.685h-7.1v-1.571h8.99v1.318l-5.05 11.938zm9.12-4.587v-1.59h4.3v1.59zm6.51 4.587v-1.282l4.63-4.624c1.3-1.282 2.13-2.438 2.13-3.72 0-1.336-.89-2.257-2.59-2.257-1.35 0-2.18.578-2.92 1.607l-1.28-.993c.97-1.355 2.34-2.186 4.33-2.186 2.67 0 4.24 1.499 4.24 3.703 0 1.426-.66 2.835-2.11 4.28l-3.88 3.865v.036h6.26v1.571zm15.75.198c-2.93 0-4.79-1.535-4.79-3.756 0-1.535.87-2.619 2.46-3.233v-.036c-1.36-.56-2.17-1.643-2.17-3.052 0-2.095 1.79-3.576 4.5-3.576 2.74 0 4.51 1.481 4.51 3.576 0 1.409-.83 2.456-2.16 2.98v.036c1.57.632 2.45 1.77 2.45 3.305 0 2.221-1.88 3.756-4.8 3.756m0-7.729c1.59 0 2.73-.957 2.73-2.239 0-1.246-1-2.168-2.73-2.168-1.74 0-2.71.922-2.71 2.168 0 1.282 1.14 2.239 2.71 2.239m0 1.463c-1.77 0-3 1.011-3 2.438 0 1.336 1.08 2.311 3 2.311 1.93 0 3.01-.975 3.01-2.311 0-1.427-1.24-2.438-3.01-2.438",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 661.096,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 681.533v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.357 3.85 3.352 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.423zm12.02 0 4.56-10.582h-6.42v-1.422h8.14v1.193l-4.58 10.811z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="633.218" width="44.976" height="27.25"
|
||||
"28": [
|
||||
"29-30": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 473.591,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1569.74 494.217v-1.27l4.58-4.577c1.29-1.269 2.11-2.413 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.163 4.29-2.163 2.64 0 4.2 1.484 4.2 3.665 0 1.412-.66 2.807-2.09 4.237l-3.85 3.827v.035h6.21v1.556zm15.59.196c-2.9 0-4.74-1.519-4.74-3.718 0-1.52.86-2.593 2.43-3.201v-.036c-1.34-.554-2.14-1.627-2.14-3.021 0-2.074 1.77-3.54 4.45-3.54 2.72 0 4.47 1.466 4.47 3.54 0 1.394-.82 2.431-2.14 2.95v.036c1.55.625 2.43 1.752 2.43 3.272 0 2.199-1.86 3.718-4.76 3.718m0-7.652c1.57 0 2.7-.948 2.7-2.217 0-1.234-.98-2.145-2.7-2.145s-2.68.911-2.68 2.145c0 1.269 1.13 2.217 2.68 2.217m0 1.448c-1.75 0-2.97 1.002-2.97 2.414 0 1.323 1.08 2.289 2.97 2.289 1.91 0 2.99-.966 2.99-2.289 0-1.412-1.24-2.414-2.99-2.414",
|
||||
d: "M1546 444.684v-1.249l4.51-4.504c1.26-1.249 2.07-2.375 2.07-3.624 0-1.302-.86-2.199-2.51-2.199-1.32 0-2.13.563-2.85 1.565l-1.25-.967c.95-1.32 2.29-2.129 4.22-2.129 2.6 0 4.14 1.46 4.14 3.607 0 1.389-.66 2.762-2.06 4.169l-3.79 3.765v.035h6.11v1.531zm11.47-.387.62-1.443c.6.334 1.3.528 2.09.528 2.8 0 3.94-2.34 4.1-5.313h-.03c-.76 1.073-2.06 1.636-3.49 1.636-2.35 0-4.06-1.583-4.06-3.994 0-2.445 1.76-4.134 4.49-4.134 3.65 0 4.75 3.061 4.75 6.105 0 3.413-1.38 7.195-5.74 7.195-1.07 0-1.99-.229-2.73-.58m3.63-6.052c1.3 0 2.85-.634 2.85-2.358 0-1.284-.88-2.832-2.87-2.832-1.64 0-2.67 1.02-2.67 2.586 0 1.495.96 2.604 2.69 2.604m6.72 1.97v-1.548h4.18v1.548zm10.3 4.662c-2.09 0-3.62-.88-4.31-2.058l1.32-.933c.62.968 1.55 1.496 2.97 1.496 1.87 0 2.94-.915 2.94-2.287 0-1.355-1.12-2.287-2.9-2.287h-1.25v-1.478h1.25c1.6 0 2.64-.88 2.64-2.129 0-1.266-.99-2.128-2.68-2.128-1.32 0-2.18.51-2.71 1.372l-1.28-.915c.67-1.091 2.09-1.953 4.05-1.953 2.67 0 4.36 1.478 4.36 3.519 0 1.372-.78 2.375-2.08 2.867v.035c1.53.546 2.34 1.654 2.34 3.149 0 2.164-1.77 3.73-4.66 3.73m11.4 0c-3.8 0-4.66-3.219-4.66-6.632 0-3.396.84-6.668 4.66-6.668 3.8 0 4.66 3.22 4.66 6.633 0 3.395-.84 6.667-4.66 6.667m0-1.495c2.66 0 2.92-2.639 2.92-5.155s-.26-5.154-2.92-5.154-2.92 2.638-2.92 5.154.26 5.155 2.92 5.155",
|
||||
x: 1535,
|
||||
y: 424.084,
|
||||
width: 70.26,
|
||||
height: 27.1986,
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 633.218,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 653.655v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.21-.8-2.044-2.34-2.044-1.23 0-1.98.523-2.65 1.455l-1.16-.899c.88-1.227 2.13-1.979 3.92-1.979 2.43 0 3.85 1.357 3.85 3.352 0 1.292-.61 2.568-1.92 3.877l-3.51 3.499v.033h5.67v1.423zm14.26.18c-2.65 0-4.33-1.39-4.33-3.402 0-1.39.78-2.371 2.22-2.927v-.033c-1.22-.507-1.96-1.488-1.96-2.764 0-1.897 1.62-3.238 4.07-3.238 2.49 0 4.09 1.341 4.09 3.238 0 1.276-.75 2.224-1.96 2.698v.033c1.42.573 2.22 1.603 2.22 2.993 0 2.012-1.7 3.402-4.35 3.402m0-7c1.44 0 2.47-.867 2.47-2.028 0-1.128-.9-1.962-2.47-1.962s-2.45.834-2.45 1.962c0 1.161 1.03 2.028 2.45 2.028m0 1.325c-1.6 0-2.71.916-2.71 2.208 0 1.21.98 2.093 2.71 2.093 1.75 0 2.73-.883 2.73-2.093 0-1.292-1.12-2.208-2.73-2.208",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="604.812" width="44.976" height="27.25"
|
||||
"29": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 440.596,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1569.74 461.222v-1.27l4.58-4.577c1.29-1.269 2.11-2.414 2.11-3.683 0-1.323-.88-2.235-2.56-2.235-1.34 0-2.16.572-2.89 1.591l-1.27-.983c.96-1.341 2.32-2.163 4.29-2.163 2.64 0 4.2 1.484 4.2 3.665 0 1.412-.66 2.807-2.09 4.237l-3.85 3.826v.036h6.21v1.556zm11.66-.394.62-1.466c.61.34 1.33.537 2.13.537 2.84 0 4.01-2.378 4.17-5.4h-.04c-.77 1.091-2.09 1.663-3.54 1.663-2.39 0-4.13-1.609-4.13-4.059 0-2.485 1.79-4.201 4.56-4.201 3.72 0 4.83 3.111 4.83 6.204 0 3.468-1.4 7.312-5.83 7.312-1.09 0-2.02-.232-2.77-.59m3.68-6.15c1.32 0 2.9-.644 2.9-2.396 0-1.305-.9-2.879-2.92-2.879-1.66 0-2.71 1.037-2.71 2.629 0 1.519.98 2.646 2.73 2.646",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 604.812,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2245.43 625.249v-1.161l4.19-4.187c1.18-1.161 1.93-2.208 1.93-3.369 0-1.211-.8-2.045-2.34-2.045-1.23 0-1.98.524-2.65 1.456l-1.16-.9c.88-1.226 2.13-1.979 3.92-1.979 2.43 0 3.85 1.358 3.85 3.353 0 1.292-.61 2.568-1.92 3.876l-3.51 3.5v.033h5.67v1.423zm10.66-.36.58-1.341c.55.311 1.21.491 1.94.491 2.6 0 3.67-2.176 3.81-4.94h-.03c-.7.998-1.91 1.521-3.24 1.521-2.19 0-3.78-1.472-3.78-3.712 0-2.273 1.64-3.844 4.18-3.844 3.4 0 4.41 2.846 4.41 5.676 0 3.172-1.27 6.689-5.33 6.689-1 0-1.85-.213-2.54-.54m3.37-5.626c1.21 0 2.65-.589 2.65-2.192 0-1.194-.81-2.633-2.66-2.633-1.52 0-2.49.949-2.49 2.404 0 1.391.9 2.421 2.5 2.421",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="576.978" width="44.976" height="27.25"
|
||||
"30": [
|
||||
{
|
||||
x: 1561.19,
|
||||
y: 407.701,
|
||||
width: 38.006,
|
||||
height: 27.251,
|
||||
d: "M1573.76 428.422c-2.12 0-3.68-.894-4.38-2.092l1.34-.947c.63.983 1.58 1.52 3.03 1.52 1.89 0 2.98-.93 2.98-2.325 0-1.377-1.14-2.324-2.95-2.324h-1.27v-1.502h1.27c1.63 0 2.68-.894 2.68-2.163 0-1.288-1-2.164-2.71-2.164-1.34 0-2.22.519-2.76 1.395l-1.3-.93c.68-1.108 2.13-1.985 4.11-1.985 2.72 0 4.43 1.502 4.43 3.576 0 1.395-.78 2.414-2.11 2.915v.035c1.56.555 2.38 1.681 2.38 3.201 0 2.199-1.8 3.79-4.74 3.79m11.59 0c-3.86 0-4.74-3.272-4.74-6.74 0-3.451.86-6.777 4.74-6.777 3.86 0 4.74 3.272 4.74 6.741 0 3.451-.86 6.776-4.74 6.776m0-1.519c2.7 0 2.97-2.682 2.97-5.239s-.27-5.239-2.97-5.239-2.97 2.682-2.97 5.239.27 5.239 2.97 5.239",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 576.978,
|
||||
// width: 44.976,
|
||||
// height: 27.251,
|
||||
// d: "M2249.11 597.595c-1.94 0-3.37-.818-4-1.914l1.22-.867c.57.9 1.44 1.391 2.77 1.391 1.73 0 2.73-.851 2.73-2.127 0-1.259-1.05-2.126-2.7-2.126h-1.16v-1.374h1.16c1.49 0 2.45-.817 2.45-1.978 0-1.178-.91-1.979-2.48-1.979-1.23 0-2.03.474-2.52 1.275l-1.2-.85c.62-1.014 1.95-1.816 3.76-1.816 2.49 0 4.06 1.374 4.06 3.271 0 1.276-.72 2.208-1.93 2.666v.033c1.42.507 2.18 1.537 2.18 2.927 0 2.012-1.66 3.468-4.34 3.468m10.6 0c-3.53 0-4.34-2.993-4.34-6.166 0-3.157.79-6.199 4.34-6.199 3.53 0 4.33 2.993 4.33 6.166 0 3.157-.78 6.199-4.33 6.199m0-1.39c2.47 0 2.71-2.454 2.71-4.792 0-2.339-.24-4.792-2.71-4.792s-2.72 2.453-2.72 4.792.25 4.792 2.72 4.792",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="537.653" width="102.129" height="27.25"
|
||||
"Roof Level": [
|
||||
{
|
||||
x: 1492.11,
|
||||
@@ -1445,15 +1173,7 @@ export const enumerationMasks: Record<
|
||||
height: 32.502,
|
||||
d: "m1514.92 353.458-2.79-5.775h-3.65v5.775h-1.81v-13.731h5.6c2.54 0 4.42 1.448 4.42 3.933 0 1.842-1.11 3.075-2.76 3.612l3.02 6.186zm-6.44-12.158v4.81h3.75c1.47 0 2.63-.787 2.63-2.396 0-1.627-1.12-2.414-2.61-2.414zm14 12.355c-3 0-4.72-2.217-4.72-4.989 0-2.789 1.72-5.006 4.72-5.006 3.02 0 4.7 2.253 4.7 5.006 0 2.736-1.68 4.989-4.7 4.989m-.02-8.547c-1.98 0-2.98 1.645-2.98 3.558 0 1.896 1 3.54 2.98 3.54 1.99 0 3.01-1.644 3.01-3.54 0-1.913-1.02-3.558-3.01-3.558m11.02 8.547c-3 0-4.72-2.217-4.72-4.989 0-2.789 1.72-5.006 4.72-5.006 3.02 0 4.7 2.253 4.7 5.006 0 2.736-1.68 4.989-4.7 4.989m-.02-8.547c-1.98 0-2.98 1.645-2.98 3.558 0 1.896 1 3.54 2.98 3.54 1.99 0 3.01-1.644 3.01-3.54 0-1.913-1.02-3.558-3.01-3.558m7.64 8.35v-8.189h-1.91v-1.412h1.91v-1.609c0-1.77 1.06-2.718 2.88-2.718.43 0 .79.054 1.13.143v1.412a3.2 3.2 0 0 0-.79-.089c-1.11 0-1.52.447-1.52 1.466v1.395h2.31v1.412h-2.31v8.189zm11.84 0h-1.69v-13.731h1.69zm3.92-5.543h5.33c-.11-1.573-.9-2.825-2.6-2.825-1.68 0-2.57 1.216-2.73 2.825m5.47 3.129 1.18 1.055c-.86 1.001-2.09 1.556-3.63 1.556-3.02 0-4.74-1.985-4.74-5.007 0-2.896 1.72-4.988 4.49-4.988 2.75 0 4.24 2.056 4.24 4.685 0 .286-.02.733-.06.983h-6.93c.18 1.824 1.23 2.878 3.02 2.878 1.05 0 1.86-.393 2.43-1.162m9.93-7.187h1.79l-3.79 9.601h-1.81l-3.77-9.601h1.86l2.82 7.652h.04zm4.38 4.058h5.33c-.11-1.573-.89-2.825-2.59-2.825-1.68 0-2.58 1.216-2.74 2.825m5.47 3.129 1.18 1.055c-.86 1.001-2.09 1.556-3.63 1.556-3.02 0-4.74-1.985-4.74-5.007 0-2.896 1.72-4.988 4.49-4.988 2.76 0 4.24 2.056 4.24 4.685 0 .286-.02.733-.05.983h-6.94c.18 1.824 1.23 2.878 3.02 2.878 1.06 0 1.86-.393 2.43-1.162m5.37 2.414h-1.7v-13.731h1.7z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 537.653,
|
||||
// width: 102.129,
|
||||
// height: 27.25,
|
||||
// d: "m2253.91 558.09-2.55-5.283h-3.33v5.283h-1.66v-12.56h5.12c2.33 0 4.04 1.324 4.04 3.598 0 1.684-1.01 2.813-2.52 3.303l2.77 5.659zm-5.88-11.121v4.399h3.43c1.34 0 2.4-.719 2.4-2.191 0-1.489-1.03-2.208-2.38-2.208zm12.8 11.301c-2.74 0-4.31-2.028-4.31-4.563 0-2.551 1.57-4.579 4.31-4.579 2.77 0 4.3 2.06 4.3 4.579 0 2.502-1.53 4.563-4.3 4.563m-.01-7.818c-1.82 0-2.73 1.505-2.73 3.255 0 1.734.91 3.238 2.73 3.238 1.81 0 2.74-1.504 2.74-3.238 0-1.75-.93-3.255-2.74-3.255m10.08 7.818c-2.75 0-4.32-2.028-4.32-4.563 0-2.551 1.57-4.579 4.32-4.579 2.76 0 4.3 2.06 4.3 4.579 0 2.502-1.54 4.563-4.3 4.563m-.02-7.818c-1.82 0-2.73 1.505-2.73 3.255 0 1.734.91 3.238 2.73 3.238 1.81 0 2.75-1.504 2.75-3.238 0-1.75-.94-3.255-2.75-3.255m6.99 7.638v-7.491h-1.75v-1.292h1.75v-1.471c0-1.62.96-2.486 2.63-2.486.39 0 .72.049 1.03.13v1.292a2.8 2.8 0 0 0-.72-.081c-1.01 0-1.39.409-1.39 1.341v1.275h2.11v1.292h-2.11v7.491zm10.83 0h-1.55v-12.56h1.55zm3.58-5.07h4.87c-.09-1.439-.81-2.584-2.37-2.584-1.53 0-2.35 1.112-2.5 2.584m5 2.862 1.08.965c-.78.916-1.91 1.423-3.32 1.423-2.76 0-4.33-1.815-4.33-4.579 0-2.65 1.57-4.563 4.11-4.563 2.51 0 3.87 1.88 3.87 4.285 0 .261-.01.67-.05.899h-6.34c.16 1.668 1.13 2.633 2.76 2.633.97 0 1.7-.36 2.22-1.063m9.09-6.575h1.63l-3.46 8.783h-1.65l-3.46-8.783h1.71l2.58 7h.03zm4.01 3.713h4.87c-.1-1.439-.82-2.584-2.37-2.584-1.54 0-2.36 1.112-2.5 2.584m5 2.862 1.08.965c-.79.916-1.91 1.423-3.32 1.423-2.76 0-4.33-1.815-4.33-4.579 0-2.65 1.57-4.563 4.1-4.563 2.52 0 3.88 1.88 3.88 4.285 0 .261-.02.67-.05.899h-6.35c.17 1.668 1.13 2.633 2.77 2.633.96 0 1.7-.36 2.22-1.063m4.91 2.208h-1.55v-12.56h1.55z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1443" width="122.624" height="27.25"
|
||||
"Ground Level": [
|
||||
{
|
||||
x: 1451.48,
|
||||
@@ -1462,15 +1182,7 @@ export const enumerationMasks: Record<
|
||||
height: 32.502,
|
||||
d: "M1472.89 1454.53h5.69v7.82h-1.83l-.02-2.08h-.04c-.74 1.32-2.32 2.3-4.48 2.3-4.2 0-6.67-3.32-6.67-7.59 0-4.33 2.49-7.82 7.02-7.82 2.61 0 4.62 1.17 5.87 3.12l-1.6 1.01c-.88-1.5-2.3-2.43-4.25-2.43-3.22 0-5.04 2.55-5.04 6.06 0 3.61 1.84 5.95 4.98 5.95 2.51 0 4.15-1.52 4.15-4.06 0-.23 0-.44-.04-.62h-3.74zm8.7 7.82v-10.47h1.79l.04 1.58h.04c.7-1.31 1.68-1.8 2.69-1.8.37 0 .64.06.88.14v1.82c-.18-.06-.55-.14-.98-.14-1.73 0-2.61 1.23-2.61 2.51v6.36zm11.72.22c-3.28 0-5.15-2.42-5.15-5.44 0-3.05 1.87-5.47 5.15-5.47 3.3 0 5.13 2.46 5.13 5.47 0 2.98-1.83 5.44-5.13 5.44m-.02-9.33c-2.17 0-3.26 1.8-3.26 3.89 0 2.06 1.09 3.86 3.26 3.86 2.16 0 3.28-1.8 3.28-3.86 0-2.09-1.12-3.89-3.28-3.89m16.47-1.36v10.47h-1.82l-.02-1.54h-.04c-.68 1.04-1.87 1.76-3.39 1.76-2.26 0-3.69-1.46-3.69-3.67v-7.02h1.86v6.65c0 1.37.76 2.44 2.38 2.44 1.75 0 2.86-1.21 2.86-2.85v-6.24zm3.08 10.47v-10.47h1.8l.04 1.54h.03c.67-1.05 1.84-1.76 3.4-1.76 2.26 0 3.69 1.47 3.69 3.67v7.02h-1.86v-6.65c0-1.36-.8-2.44-2.38-2.44-1.75 0-2.86 1.21-2.86 2.85v6.24zm16.04.22c-2.95 0-4.66-2.44-4.66-5.37 0-3.08 1.81-5.54 4.76-5.54 1.38 0 2.59.61 3.41 1.74h.04v-6.03h1.85v14.98h-1.81l-.02-1.69h-.04c-.88 1.26-2.13 1.91-3.53 1.91m.33-1.62c2.07 0 3.28-1.62 3.28-3.84 0-2.3-1.21-3.83-3.22-3.83-2.18 0-3.18 1.86-3.18 3.87 0 1.95 1 3.8 3.12 3.8m13.08 1.4v-14.98h1.97v13.27h7.63v1.71zm12.35-6.04h5.81c-.11-1.72-.97-3.08-2.82-3.08-1.84 0-2.81 1.32-2.99 3.08m5.97 3.41 1.29 1.15c-.94 1.09-2.28 1.7-3.96 1.7-3.3 0-5.17-2.17-5.17-5.46 0-3.16 1.87-5.45 4.89-5.45 3.01 0 4.63 2.25 4.63 5.12 0 .31-.02.79-.06 1.07h-7.57c.2 1.99 1.35 3.14 3.3 3.14 1.15 0 2.03-.43 2.65-1.27m10.83-7.84h1.95l-4.13 10.47h-1.97l-4.12-10.47h2.03l3.08 8.35h.04zm4.78 4.43h5.82c-.12-1.72-.98-3.08-2.83-3.08-1.84 0-2.81 1.32-2.99 3.08m5.97 3.41 1.29 1.15c-.94 1.09-2.28 1.7-3.96 1.7-3.3 0-5.17-2.17-5.17-5.46 0-3.16 1.87-5.45 4.9-5.45 3 0 4.62 2.25 4.62 5.12 0 .31-.02.79-.06 1.07h-7.57c.2 1.99 1.35 3.14 3.3 3.14 1.15 0 2.03-.43 2.65-1.27m5.86 2.63h-1.86v-14.98h1.86z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1443,
|
||||
// width: 122.624,
|
||||
// height: 27.25,
|
||||
// d: "M2250.67 1456.88h4.77v6.56h-1.53l-.02-1.75h-.03c-.63 1.11-1.95 1.93-3.77 1.93-3.51 0-5.59-2.78-5.59-6.37 0-3.63 2.09-6.55 5.89-6.55 2.19 0 3.88.98 4.92 2.61l-1.34.85c-.74-1.26-1.93-2.04-3.56-2.04-2.7 0-4.22 2.14-4.22 5.09 0 3.02 1.53 4.98 4.17 4.98 2.11 0 3.48-1.27 3.48-3.4 0-.19 0-.37-.03-.52h-3.14zm7.29 6.56v-8.79h1.5l.04 1.33h.03c.59-1.1 1.41-1.51 2.26-1.51.31 0 .54.05.73.12v1.52c-.15-.05-.46-.11-.82-.11-1.45 0-2.19 1.03-2.19 2.11v5.33zm9.83.18c-2.75 0-4.32-2.03-4.32-4.57 0-2.55 1.57-4.58 4.32-4.58 2.76 0 4.3 2.06 4.3 4.58 0 2.51-1.54 4.57-4.3 4.57m-.02-7.82c-1.81 0-2.73 1.5-2.73 3.25 0 1.74.92 3.24 2.73 3.24 1.82 0 2.75-1.5 2.75-3.24 0-1.75-.93-3.25-2.75-3.25m13.81-1.15v8.79h-1.52l-.02-1.3h-.03c-.57.87-1.57 1.48-2.85 1.48-1.89 0-3.09-1.23-3.09-3.08v-5.89h1.56v5.58c0 1.15.64 2.05 1.99 2.05 1.47 0 2.41-1.02 2.41-2.39v-5.24zm2.59 8.79v-8.79h1.5l.04 1.3h.03c.55-.89 1.54-1.48 2.84-1.48 1.9 0 3.1 1.23 3.1 3.08v5.89h-1.56v-5.58c0-1.15-.67-2.04-1.99-2.04-1.48 0-2.41 1.01-2.41 2.38v5.24zm13.45.18c-2.47 0-3.91-2.05-3.91-4.5 0-2.59 1.52-4.65 3.99-4.65 1.16 0 2.17.51 2.86 1.46h.03v-5.05h1.56v12.56h-1.53l-.01-1.43h-.03c-.74 1.07-1.79 1.61-2.96 1.61m.27-1.36c1.74 0 2.75-1.36 2.75-3.22 0-1.93-1.01-3.21-2.7-3.21-1.83 0-2.66 1.56-2.66 3.24 0 1.64.83 3.19 2.61 3.19m12.4 1.18h-1.56v-12.56h1.56zm3.58-5.07h4.87c-.1-1.44-.82-2.59-2.37-2.59-1.54 0-2.36 1.11-2.5 2.59m5 2.86 1.08.96c-.78.92-1.91 1.43-3.32 1.43-2.76 0-4.33-1.82-4.33-4.58 0-2.65 1.57-4.57 4.1-4.57 2.52 0 3.88 1.89 3.88 4.29 0 .26-.02.67-.05.9h-6.35c.17 1.67 1.13 2.63 2.77 2.63.96 0 1.7-.36 2.22-1.06m9.09-6.58h1.63l-3.47 8.79h-1.65l-3.45-8.79h1.7l2.59 7h.03zm4 3.72h4.88c-.1-1.44-.82-2.59-2.38-2.59-1.53 0-2.35 1.11-2.5 2.59m5.01 2.86 1.08.96c-.79.92-1.92 1.43-3.32 1.43-2.77 0-4.34-1.82-4.34-4.58 0-2.65 1.57-4.57 4.11-4.57 2.52 0 3.87 1.89 3.87 4.29 0 .26-.01.67-.05.9h-6.34c.16 1.67 1.13 2.63 2.76 2.63.97 0 1.7-.36 2.23-1.06m4.91 2.21h-1.56v-12.56h1.56z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1497.73" width="118.537" height="27.25"
|
||||
"Arcade Level": [
|
||||
{
|
||||
x: 1454.73,
|
||||
@@ -1479,15 +1191,7 @@ export const enumerationMasks: Record<
|
||||
height: 32.502,
|
||||
d: "m1479.79 1523.98-1.62-4.2h-6.67l-1.6 4.2h-2.07l5.89-14.98h2.32l5.89 14.98zm-7.65-5.89h5.37l-2.68-6.97h-.04zm11.44 5.89v-10.48h1.79l.04 1.58h.04c.7-1.31 1.68-1.79 2.69-1.79.37 0 .65.06.88.13v1.82c-.17-.06-.55-.14-.97-.14-1.74 0-2.62 1.23-2.62 2.52v6.36zm11.68.21c-3.21 0-5.09-2.32-5.09-5.4 0-3.1 1.86-5.5 5.07-5.5 1.99 0 3.4.95 4.2 2.45l-1.54.88c-.53-1.01-1.37-1.75-2.69-1.75-2.05 0-3.16 1.71-3.16 3.88 0 2.1 1.07 3.86 3.27 3.86 1.39 0 2.23-.7 2.73-1.7l1.47.84c-.75 1.46-2.23 2.44-4.26 2.44m13.89-.21h-1.81l-.04-1.53h-.04c-.58 1.04-1.66 1.74-3.16 1.74-2.05 0-3.37-1.31-3.37-3.16 0-1.36.7-2.28 2.03-2.71 1.15-.37 2.84-.45 4.56-.51v-.93c0-1.08-.74-2.03-2.32-2.03-1.33 0-2.09.62-2.42 1.58l-1.54-.74c.6-1.58 2.11-2.4 4.02-2.4 2.49 0 4.09 1.3 4.09 3.59zm-4.62-1.35c1.7 0 2.79-1.29 2.79-2.79v-.6c-.7.02-1.79.09-2.67.21-1.19.16-2.07.49-2.07 1.56 0 .98.74 1.62 1.95 1.62m11.7 1.56c-2.95 0-4.67-2.44-4.67-5.36 0-3.09 1.82-5.54 4.76-5.54 1.39 0 2.6.6 3.42 1.73h.04V1509h1.85v14.98h-1.82l-.01-1.7h-.04c-.88 1.27-2.13 1.91-3.53 1.91m.33-1.62c2.07 0 3.27-1.62 3.27-3.84 0-2.3-1.2-3.82-3.21-3.82-2.19 0-3.18 1.85-3.18 3.86 0 1.95.99 3.8 3.12 3.8m9.33-4.64h5.81c-.11-1.72-.97-3.08-2.82-3.08-1.84 0-2.81 1.32-2.99 3.08m5.97 3.41 1.29 1.15c-.94 1.1-2.28 1.7-3.96 1.7-3.3 0-5.17-2.16-5.17-5.46 0-3.16 1.87-5.44 4.9-5.44 3 0 4.62 2.24 4.62 5.11 0 .31-.02.8-.06 1.07h-7.57c.2 1.99 1.35 3.14 3.3 3.14 1.15 0 2.03-.43 2.65-1.27m8.94 2.64V1509h1.97v13.26h7.63v1.72zm12.35-6.05h5.81c-.11-1.72-.97-3.08-2.83-3.08-1.83 0-2.8 1.32-2.98 3.08m5.97 3.41 1.29 1.15c-.94 1.1-2.29 1.7-3.96 1.7-3.3 0-5.17-2.16-5.17-5.46 0-3.16 1.87-5.44 4.89-5.44 3.01 0 4.63 2.24 4.63 5.11 0 .31-.02.8-.06 1.07h-7.57c.19 1.99 1.35 3.14 3.3 3.14 1.15 0 2.02-.43 2.65-1.27m10.83-7.84h1.95l-4.13 10.48h-1.97l-4.12-10.48h2.03l3.08 8.35h.04zm4.78 4.43h5.81c-.11-1.72-.97-3.08-2.83-3.08-1.83 0-2.8 1.32-2.98 3.08m5.97 3.41 1.29 1.15c-.94 1.1-2.29 1.7-3.96 1.7-3.3 0-5.17-2.16-5.17-5.46 0-3.16 1.87-5.44 4.89-5.44 3.01 0 4.63 2.24 4.63 5.11 0 .31-.02.8-.06 1.07h-7.57c.2 1.99 1.35 3.14 3.3 3.14 1.15 0 2.02-.43 2.65-1.27m5.86 2.64h-1.86V1509h1.86z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1497.73,
|
||||
// width: 118.537,
|
||||
// height: 27.25,
|
||||
// d: "m2253.73 1518.16-1.36-3.51h-5.6l-1.34 3.51h-1.73l4.94-12.56h1.95l4.93 12.56zm-6.42-4.94h4.5l-2.24-5.84h-.03zm9.59 4.94v-8.78h1.51l.03 1.32h.03c.59-1.09 1.41-1.5 2.26-1.5.31 0 .54.05.74.11v1.53c-.15-.05-.46-.12-.82-.12-1.46 0-2.19 1.03-2.19 2.11v5.33zm9.8.18c-2.7 0-4.27-1.94-4.27-4.53 0-2.6 1.56-4.61 4.26-4.61 1.66 0 2.84.8 3.51 2.06l-1.29.74c-.44-.85-1.14-1.48-2.26-1.48-1.71 0-2.65 1.44-2.65 3.26 0 1.77.9 3.24 2.75 3.24 1.16 0 1.87-.59 2.29-1.43l1.23.71c-.62 1.22-1.87 2.04-3.57 2.04m11.65-.18h-1.52l-.03-1.27h-.04c-.49.86-1.39 1.45-2.65 1.45-1.71 0-2.83-1.09-2.83-2.65 0-1.14.59-1.91 1.7-2.27.97-.31 2.39-.38 3.83-.43v-.78c0-.9-.62-1.7-1.94-1.7-1.12 0-1.75.52-2.03 1.32l-1.29-.62c.5-1.32 1.76-2.01 3.36-2.01 2.1 0 3.44 1.1 3.44 3.01zm-3.88-1.13c1.43 0 2.34-1.08 2.34-2.34v-.5c-.59.01-1.5.08-2.24.18-1 .13-1.73.41-1.73 1.31 0 .81.62 1.35 1.63 1.35m9.81 1.31c-2.47 0-3.91-2.04-3.91-4.5 0-2.58 1.52-4.64 3.99-4.64 1.16 0 2.18.51 2.86 1.46h.04v-5.06h1.55v12.56h-1.52l-.02-1.42h-.03c-.74 1.06-1.78 1.6-2.96 1.6m.28-1.36c1.73 0 2.75-1.35 2.75-3.22 0-1.93-1.02-3.2-2.7-3.2-1.84 0-2.67 1.55-2.67 3.24 0 1.63.83 3.18 2.62 3.18m7.82-3.89h4.88c-.1-1.44-.82-2.58-2.37-2.58-1.54 0-2.36 1.11-2.51 2.58m5.01 2.86 1.08.97c-.79.91-1.91 1.42-3.32 1.42-2.77 0-4.34-1.81-4.34-4.58 0-2.65 1.57-4.56 4.11-4.56 2.52 0 3.88 1.88 3.88 4.28 0 .27-.02.68-.05.9h-6.35c.16 1.67 1.13 2.64 2.77 2.64.96 0 1.7-.36 2.22-1.07m8.92 2.21h-1.55v-12.56h1.55zm3.58-5.07h4.87c-.09-1.44-.81-2.58-2.37-2.58-1.54 0-2.35 1.11-2.5 2.58m5 2.86 1.08.97c-.78.91-1.91 1.42-3.32 1.42-2.76 0-4.33-1.81-4.33-4.58 0-2.65 1.57-4.56 4.1-4.56 2.52 0 3.88 1.88 3.88 4.28 0 .27-.02.68-.05.9h-6.34c.16 1.67 1.12 2.64 2.76 2.64.96 0 1.7-.36 2.22-1.07m9.09-6.57h1.63l-3.46 8.78h-1.66l-3.45-8.78h1.71l2.58 7h.03zm4.01 3.71h4.87c-.1-1.44-.82-2.58-2.37-2.58-1.54 0-2.36 1.11-2.5 2.58m5 2.86 1.08.97c-.79.91-1.91 1.42-3.32 1.42-2.76 0-4.33-1.81-4.33-4.58 0-2.65 1.57-4.56 4.1-4.56 2.52 0 3.88 1.88 3.88 4.28 0 .27-.02.68-.05.9H2328c.17 1.67 1.13 2.64 2.77 2.64.96 0 1.7-.36 2.22-1.07m4.91 2.21h-1.55v-12.56h1.55z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1381.67" width="121.262" height="27.25"
|
||||
"Parking Levels": [
|
||||
{
|
||||
x: 1440.1,
|
||||
@@ -1496,15 +1200,7 @@ export const enumerationMasks: Record<
|
||||
height: 32.502,
|
||||
d: "M1454.8 1387.23h5.91c3.06 0 5.38 1.74 5.38 4.82s-2.37 4.88-5.44 4.88h-3.88v5.28h-1.97zm1.97 7.98h4.02c1.89 0 3.3-1.05 3.3-3.12 0-2.11-1.45-3.14-3.3-3.14h-4.02zm18.99 7h-1.81l-.04-1.52h-.04c-.58 1.04-1.66 1.74-3.16 1.74-2.05 0-3.37-1.31-3.37-3.16 0-1.37.7-2.28 2.03-2.71 1.15-.37 2.84-.45 4.56-.51v-.94c0-1.07-.74-2.02-2.32-2.02-1.33 0-2.09.62-2.42 1.58l-1.54-.75c.6-1.58 2.11-2.39 4.02-2.39 2.49 0 4.09 1.3 4.09 3.58zm-4.62-1.34c1.7 0 2.79-1.29 2.79-2.79v-.61c-.7.02-1.8.1-2.67.22-1.19.15-2.07.49-2.07 1.56 0 .97.74 1.62 1.95 1.62m7.66 1.34v-10.47h1.79l.04 1.58h.04c.7-1.31 1.68-1.79 2.69-1.79.37 0 .65.05.88.13v1.82c-.18-.06-.55-.14-.98-.14-1.73 0-2.61 1.23-2.61 2.52v6.35zm13.88 0-3.12-4.68h-1.5v4.68h-1.85v-14.98h1.85v8.76h1.6l2.89-4.25h2.2l-3.57 5.03 3.75 5.44zm3.93-12.97v-2.01h2v2.01zm1.93 12.97h-1.86v-10.47h1.86zm3.08 0v-10.47h1.79l.04 1.54h.04c.66-1.05 1.83-1.75 3.39-1.75 2.27 0 3.69 1.46 3.69 3.66v7.02h-1.85v-6.65c0-1.36-.8-2.44-2.38-2.44-1.76 0-2.87 1.21-2.87 2.85v6.24zm21.16-10.47v9.32c0 3.34-2.14 4.94-5.3 4.94-1.66 0-2.99-.47-3.92-1.09l.84-1.47c.76.51 1.67.98 3.06.98 1.95 0 3.49-.88 3.49-3.36v-.89h-.04c-.8 1.24-2.07 1.87-3.49 1.87-2.77 0-4.47-2.34-4.47-5.19 0-2.87 1.72-5.32 4.61-5.32 1.52 0 2.65.68 3.39 1.71h.04l.06-1.5zm-4.89 8.68c2.01 0 3.1-1.64 3.1-3.67 0-2.01-1.11-3.61-3.08-3.61-2.05 0-3.08 1.68-3.08 3.65 0 1.89.95 3.63 3.06 3.63m12.91 1.79v-14.98h1.97v13.27h7.63v1.71zm12.35-6.04h5.81c-.11-1.72-.97-3.08-2.83-3.08-1.83 0-2.8 1.32-2.98 3.08m5.97 3.41 1.29 1.15c-.94 1.09-2.29 1.7-3.96 1.7-3.3 0-5.17-2.17-5.17-5.46 0-3.16 1.87-5.44 4.89-5.44 3.01 0 4.63 2.24 4.63 5.11 0 .31-.02.8-.06 1.07h-7.57c.19 1.99 1.35 3.14 3.3 3.14 1.15 0 2.02-.43 2.65-1.27m10.83-7.84h1.95l-4.13 10.47h-1.97l-4.12-10.47h2.03l3.08 8.35h.04zm4.78 4.43h5.81c-.11-1.72-.97-3.08-2.83-3.08-1.83 0-2.8 1.32-2.98 3.08m5.97 3.41 1.29 1.15c-.94 1.09-2.29 1.7-3.96 1.7-3.3 0-5.17-2.17-5.17-5.46 0-3.16 1.87-5.44 4.89-5.44 3.01 0 4.63 2.24 4.63 5.11 0 .31-.02.8-.06 1.07h-7.57c.2 1.99 1.35 3.14 3.3 3.14 1.15 0 2.02-.43 2.65-1.27m5.86 2.63h-1.86v-14.98h1.86zm6.49.22c-1.85 0-3.3-.55-4.39-1.58l1.13-1.27c.92.88 2.07 1.29 3.32 1.29 1.66 0 2.46-.61 2.46-1.5 0-1-1.06-1.23-2.81-1.6-1.97-.43-3.73-1.04-3.73-3.07 0-1.79 1.41-3.17 4.14-3.17 1.67 0 2.98.5 4.07 1.5l-1.11 1.26c-.9-.81-1.89-1.2-3.02-1.2-1.46 0-2.21.62-2.21 1.42 0 .97.94 1.19 2.75 1.58 1.94.43 3.79.97 3.79 3.06 0 1.91-1.52 3.28-4.39 3.28",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1381.67,
|
||||
// width: 121.262,
|
||||
// height: 27.25,
|
||||
// d: "M2245.04 1389.54h4.96c2.56 0 4.51 1.46 4.51 4.04 0 2.59-1.99 4.09-4.56 4.09h-3.26v4.43h-1.65zm1.65 6.69h3.37c1.59 0 2.77-.88 2.77-2.62 0-1.76-1.21-2.63-2.77-2.63h-3.37zm15.93 5.87h-1.52l-.04-1.27h-.03c-.49.86-1.39 1.45-2.65 1.45-1.72 0-2.83-1.09-2.83-2.65 0-1.14.59-1.91 1.7-2.27.97-.31 2.39-.38 3.83-.43v-.78c0-.9-.62-1.7-1.95-1.7-1.11 0-1.75.52-2.02 1.32l-1.3-.62c.51-1.32 1.77-2.01 3.37-2.01 2.1 0 3.44 1.1 3.44 3.01zm-3.88-1.13c1.42 0 2.34-1.08 2.34-2.33v-.51c-.59.01-1.5.08-2.24.18-1 .13-1.73.41-1.73 1.31 0 .81.62 1.35 1.63 1.35m6.42 1.13v-8.78h1.51l.03 1.32h.03c.59-1.09 1.41-1.5 2.26-1.5.31 0 .54.05.74.11v1.53c-.15-.05-.46-.12-.82-.12-1.46 0-2.19 1.03-2.19 2.11v5.33zm11.64 0-2.61-3.92h-1.26v3.92h-1.55v-12.56h1.55v7.35h1.34l2.42-3.57h1.85l-2.99 4.22 3.14 4.56zm3.29-10.87v-1.69h1.69v1.69zm1.62 10.87h-1.55v-8.78h1.55zm2.59 0v-8.78h1.5l.03 1.29h.04c.55-.88 1.53-1.47 2.84-1.47 1.9 0 3.09 1.23 3.09 3.07v5.89h-1.55v-5.57c0-1.15-.67-2.05-2-2.05-1.47 0-2.4 1.02-2.4 2.39v5.23zm17.74-8.78v7.82c0 2.79-1.79 4.14-4.44 4.14-1.39 0-2.51-.4-3.29-.92l.7-1.23c.64.43 1.41.82 2.57.82 1.64 0 2.93-.74 2.93-2.81v-.75h-.04c-.67 1.04-1.73 1.57-2.92 1.57-2.33 0-3.75-1.97-3.75-4.36 0-2.4 1.44-4.46 3.86-4.46 1.28 0 2.23.57 2.85 1.44h.03l.05-1.26zm-4.1 7.28c1.68 0 2.6-1.38 2.6-3.08 0-1.68-.93-3.02-2.58-3.02-1.72 0-2.59 1.4-2.59 3.06 0 1.58.8 3.04 2.57 3.04m12.25 1.5h-1.55v-12.56h1.55zm3.58-5.07h4.87c-.09-1.44-.81-2.58-2.37-2.58-1.53 0-2.35 1.11-2.5 2.58m5.01 2.86 1.07.97c-.78.92-1.91 1.42-3.32 1.42-2.76 0-4.33-1.81-4.33-4.58 0-2.65 1.57-4.56 4.11-4.56 2.51 0 3.87 1.88 3.87 4.29 0 .26-.01.67-.05.89h-6.34c.16 1.67 1.13 2.64 2.76 2.64.97 0 1.7-.36 2.23-1.07m9.08-6.57h1.64l-3.47 8.78h-1.65l-3.45-8.78h1.7l2.58 7h.03zm4.01 3.71h4.87c-.1-1.44-.82-2.58-2.37-2.58-1.54 0-2.36 1.11-2.5 2.58m5 2.86 1.08.97c-.78.92-1.91 1.42-3.32 1.42-2.76 0-4.33-1.81-4.33-4.58 0-2.65 1.57-4.56 4.1-4.56 2.52 0 3.88 1.88 3.88 4.29 0 .26-.02.67-.05.89h-6.35c.17 1.67 1.13 2.64 2.77 2.64.96 0 1.7-.36 2.22-1.07m4.91 2.21h-1.55v-12.56h1.55z",
|
||||
// },
|
||||
],
|
||||
// x="2232.72" y="1321.13" width="123.986" height="27.25"
|
||||
"Podium Level": [
|
||||
{
|
||||
x: 1449.85,
|
||||
@@ -1513,13 +1209,6 @@ export const enumerationMasks: Record<
|
||||
height: 32.502,
|
||||
d: "M1464.55 1310.84h5.91c3.07 0 5.39 1.74 5.39 4.82s-2.38 4.87-5.44 4.87h-3.89v5.29h-1.97zm1.97 7.98h4.02c1.89 0 3.3-1.06 3.3-3.12 0-2.11-1.45-3.14-3.3-3.14h-4.02zm15.72 7.21c-3.28 0-5.15-2.41-5.15-5.44 0-3.04 1.87-5.46 5.15-5.46 3.29 0 5.13 2.46 5.13 5.46 0 2.99-1.84 5.44-5.13 5.44m-.02-9.32c-2.17 0-3.26 1.8-3.26 3.88 0 2.07 1.09 3.86 3.26 3.86 2.16 0 3.27-1.79 3.27-3.86 0-2.08-1.11-3.88-3.27-3.88m11.59 9.32c-2.95 0-4.66-2.43-4.66-5.36 0-3.08 1.81-5.54 4.75-5.54 1.39 0 2.6.61 3.42 1.74h.04v-6.03h1.85v14.98h-1.81l-.02-1.7h-.04c-.88 1.27-2.13 1.91-3.53 1.91m.33-1.62c2.07 0 3.28-1.61 3.28-3.84 0-2.3-1.21-3.82-3.22-3.82-2.19 0-3.18 1.85-3.18 3.86 0 1.95.99 3.8 3.12 3.8m8.07-11.56v-2.01h2v2.01zm1.93 12.97h-1.86v-10.47h1.86zm11.99-10.47v10.47h-1.81l-.02-1.54h-.04c-.68 1.03-1.87 1.75-3.4 1.75-2.26 0-3.68-1.46-3.68-3.66v-7.02h1.85v6.65c0 1.36.76 2.43 2.38 2.43 1.76 0 2.87-1.2 2.87-2.84v-6.24zm4.92 1.4h.04c.64-1 1.64-1.62 3.08-1.62 1.5 0 2.63.68 3.16 1.8.76-1.23 1.97-1.8 3.39-1.8 2.11 0 3.5 1.33 3.5 3.32v7.37h-1.86v-6.94c0-1.21-.7-2.15-2.16-2.15-1.56 0-2.56 1.05-2.56 2.5v6.59h-1.85v-6.94c0-1.21-.72-2.15-2.15-2.15-1.56 0-2.57 1.05-2.57 2.5v6.59h-1.85v-10.47h1.79zm21.14 9.07v-14.98h1.97v13.26h7.63v1.72zm12.35-6.05h5.81c-.11-1.71-.97-3.08-2.83-3.08-1.83 0-2.8 1.33-2.98 3.08m5.97 3.42 1.29 1.15c-.94 1.09-2.29 1.69-3.96 1.69-3.3 0-5.17-2.16-5.17-5.46 0-3.16 1.87-5.44 4.89-5.44 3.01 0 4.63 2.24 4.63 5.11 0 .31-.02.8-.06 1.07h-7.57c.19 1.99 1.35 3.14 3.3 3.14 1.15 0 2.02-.43 2.65-1.26m10.83-7.84h1.95l-4.13 10.47h-1.97l-4.12-10.47h2.03l3.08 8.34h.04zm4.78 4.42h5.81c-.11-1.71-.97-3.08-2.82-3.08-1.84 0-2.81 1.33-2.99 3.08m5.97 3.42 1.29 1.15c-.94 1.09-2.29 1.69-3.96 1.69-3.3 0-5.17-2.16-5.17-5.46 0-3.16 1.87-5.44 4.89-5.44 3.01 0 4.63 2.24 4.63 5.11 0 .31-.02.8-.06 1.07h-7.57c.2 1.99 1.35 3.14 3.3 3.14 1.15 0 2.03-.43 2.65-1.26m5.86 2.63h-1.86v-14.98h1.86z",
|
||||
},
|
||||
// {
|
||||
// x: 2232.72,
|
||||
// y: 1321.13,
|
||||
// width: 123.986,
|
||||
// height: 27.25,
|
||||
// d: "M2245.04 1329.01h4.96c2.56 0 4.51 1.46 4.51 4.04s-1.99 4.09-4.56 4.09h-3.26v4.43h-1.65zm1.65 6.69h3.37c1.59 0 2.77-.88 2.77-2.62 0-1.76-1.21-2.63-2.77-2.63h-3.37zm13.18 6.05c-2.75 0-4.32-2.03-4.32-4.56 0-2.55 1.57-4.58 4.32-4.58 2.76 0 4.3 2.06 4.3 4.58 0 2.5-1.54 4.56-4.3 4.56m-.02-7.82c-1.81 0-2.73 1.51-2.73 3.26 0 1.73.92 3.24 2.73 3.24 1.82 0 2.75-1.51 2.75-3.24 0-1.75-.93-3.26-2.75-3.26m9.72 7.82c-2.47 0-3.91-2.04-3.91-4.5 0-2.58 1.52-4.64 3.99-4.64 1.16 0 2.18.5 2.86 1.45h.04v-5.05h1.55v12.56h-1.52l-.02-1.42h-.03c-.74 1.06-1.78 1.6-2.96 1.6m.28-1.36c1.73 0 2.75-1.35 2.75-3.22 0-1.93-1.02-3.2-2.7-3.2-1.83 0-2.67 1.55-2.67 3.23 0 1.64.84 3.19 2.62 3.19m6.76-9.7v-1.68h1.69v1.68zm1.62 10.88h-1.55v-8.78h1.55zm10.06-8.78v8.78h-1.52l-.02-1.29h-.03c-.57.87-1.57 1.47-2.85 1.47-1.89 0-3.09-1.23-3.09-3.07v-5.89h1.56v5.57c0 1.15.63 2.05 1.99 2.05 1.47 0 2.4-1.01 2.4-2.39v-5.23zm4.12 1.18h.04c.54-.84 1.37-1.36 2.58-1.36 1.26 0 2.21.57 2.65 1.5.64-1.03 1.65-1.5 2.85-1.5 1.76 0 2.92 1.11 2.92 2.78v6.18h-1.55v-5.82c0-1.02-.59-1.8-1.82-1.8-1.3 0-2.14.88-2.14 2.09v5.53h-1.55v-5.82c0-1.02-.61-1.8-1.8-1.8-1.31 0-2.16.88-2.16 2.09v5.53h-1.55v-8.78h1.5zm19.15 7.6h-1.55v-12.56h1.55zm3.58-5.07h4.88c-.1-1.44-.82-2.58-2.37-2.58-1.54 0-2.36 1.11-2.51 2.58m5.01 2.86 1.08.97c-.79.91-1.92 1.42-3.32 1.42-2.77 0-4.34-1.82-4.34-4.58 0-2.65 1.57-4.56 4.11-4.56 2.52 0 3.88 1.88 3.88 4.28 0 .26-.02.67-.05.9h-6.35c.16 1.67 1.13 2.64 2.76 2.64.97 0 1.71-.36 2.23-1.07m9.08-6.57h1.64l-3.47 8.78h-1.65l-3.45-8.78h1.7l2.58 7h.04zm4.01 3.71h4.87c-.09-1.44-.81-2.58-2.37-2.58-1.54 0-2.35 1.11-2.5 2.58m5 2.86 1.08.97c-.78.91-1.91 1.42-3.32 1.42-2.76 0-4.33-1.82-4.33-4.58 0-2.65 1.57-4.56 4.1-4.56 2.52 0 3.88 1.88 3.88 4.28 0 .26-.02.67-.05.9h-6.34c.16 1.67 1.12 2.64 2.76 2.64.97 0 1.7-.36 2.22-1.07m4.92 2.21h-1.56v-12.56h1.56z",
|
||||
// },
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2053,6 +2053,44 @@ export const projects: Project[] = [
|
||||
],
|
||||
tourAvailable: false,
|
||||
},
|
||||
{
|
||||
name: "Deluxe office",
|
||||
slug: "deluxe",
|
||||
floors: "Floor 5-14 / 17-18 / 21-22 / 25-26",
|
||||
area: "1360-1446 Sqft",
|
||||
desc: [
|
||||
`Double the size, enjoy dedicated meeting
|
||||
rooms, upgraded furnishings, and the
|
||||
option to tailor your space with open or
|
||||
closed layouts.`,
|
||||
],
|
||||
interiors: [
|
||||
// "/images/interiors/hq/deluxe/1.jpg",
|
||||
"/images/interiors/hq/deluxe/2.jpg",
|
||||
"/images/interiors/hq/deluxe/3.jpg",
|
||||
],
|
||||
legend: [],
|
||||
tourAvailable: false,
|
||||
},
|
||||
{
|
||||
name: "Executive office",
|
||||
slug: "executive",
|
||||
floors: "Floor 5-14 / 17-18 / 21-22 / 25-26",
|
||||
area: "1986-2264 Sqft",
|
||||
desc: [
|
||||
`Triple-sized with expanded seating,
|
||||
generous storage, and versatile layouts,
|
||||
available in open, semi-open, or closed
|
||||
configurations to suit growing teams.`,
|
||||
],
|
||||
interiors: [
|
||||
// "/images/interiors/hq/executive/1.jpg",
|
||||
"/images/interiors/hq/executive/2.jpg",
|
||||
"/images/interiors/hq/executive/3.jpg",
|
||||
],
|
||||
legend: [],
|
||||
tourAvailable: false,
|
||||
},
|
||||
{
|
||||
name: "Simplex Edge office",
|
||||
slug: "simplex-edge",
|
||||
@@ -2417,7 +2455,7 @@ export const projects: Project[] = [
|
||||
],
|
||||
interiors: [
|
||||
"/images/interiors/hq/presidential-loft/2.jpg",
|
||||
"/images/interiors/hq/presidential-loft/1.jpg",
|
||||
// "/images/interiors/hq/presidential-loft/1.jpg",
|
||||
"/images/interiors/hq/presidential-loft/3.jpg",
|
||||
],
|
||||
legend: [
|
||||
|
||||
@@ -3,6 +3,7 @@ import { Outlet, useLocation } from "react-router";
|
||||
import Footer from "../components/Footer";
|
||||
import clsx from "clsx";
|
||||
import { useEffect } from "react";
|
||||
import DocumentTitle from "../components/DocumentTitle";
|
||||
|
||||
function DefaultLayout() {
|
||||
const { pathname } = useLocation();
|
||||
@@ -12,18 +13,21 @@ function DefaultLayout() {
|
||||
}, [pathname]);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={clsx(
|
||||
"min-h-dvh flex flex-col select-none",
|
||||
pathname.endsWith("/about") ? "bg-white" : "bg-[#F3F3F2]"
|
||||
)}
|
||||
>
|
||||
<Header />
|
||||
<div className="flex-1 flex flex-col justify-between">
|
||||
<Outlet />
|
||||
<>
|
||||
<DocumentTitle />
|
||||
<div
|
||||
className={clsx(
|
||||
"min-h-dvh flex flex-col select-none",
|
||||
pathname.endsWith("/about") ? "bg-white" : "bg-[#F3F3F2]"
|
||||
)}
|
||||
>
|
||||
<Header />
|
||||
<div className="flex flex-col flex-1 justify-between">
|
||||
<Outlet />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
<Footer />
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import Header from "../components/Header";
|
||||
import { Outlet, useLocation } from "react-router";
|
||||
import { useEffect } from "react";
|
||||
import DocumentTitle from "../components/DocumentTitle";
|
||||
|
||||
function LayoutWithoutFooter() {
|
||||
const { pathname } = useLocation();
|
||||
@@ -10,12 +11,15 @@ function LayoutWithoutFooter() {
|
||||
}, [pathname]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<DocumentTitle />
|
||||
<div className="flex flex-col select-none min-h-dvh">
|
||||
<Header />
|
||||
<div className="2xl:h-[calc(100dvh-4.444vw)] md:max-2xl:h-[calc(100dvh-64px)] h-[calc(100dvh-56px)]">
|
||||
<Outlet />
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import FloorSelect, { FloorsData } from "../components/FloorSelect";
|
||||
import { useParams } from "react-router";
|
||||
import FloorSidebar from "../components/FloorSidebar";
|
||||
|
||||
import { useState, useMemo, useEffect } from "react";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { api } from "../api/ky";
|
||||
@@ -13,6 +12,7 @@ import { getComplexFloors } from "../data/complex-config";
|
||||
|
||||
function FloorsPage() {
|
||||
const [selectedFloor, setSelectedFloor] = useState<string | null>(null);
|
||||
|
||||
const { complexName } = useParams<{
|
||||
complexName: ComplexName;
|
||||
}>();
|
||||
@@ -25,11 +25,7 @@ function FloorsPage() {
|
||||
const { data: floorsData } = useQuery({
|
||||
queryKey: ["floors-data", complexName],
|
||||
queryFn: () =>
|
||||
api
|
||||
.get(
|
||||
`units/get-floors-data/${complexName}`,
|
||||
)
|
||||
.json<FloorsData[]>(),
|
||||
api.get(`units/get-floors-data/${complexName}`).json<FloorsData[]>(),
|
||||
});
|
||||
|
||||
const { data: unitsOnFloor } = useQuery({
|
||||
@@ -44,7 +40,7 @@ function FloorsPage() {
|
||||
complexName === "marasi-drive"
|
||||
? `&wing=${selectedFloor?.split(" ")[0]}`
|
||||
: ""
|
||||
}`,
|
||||
}`
|
||||
)
|
||||
.json<Unit[]>(),
|
||||
});
|
||||
|
||||
@@ -1,353 +0,0 @@
|
||||
function TestPage() {
|
||||
return (
|
||||
<div className="relative h-screen">
|
||||
<div className="h-screen left-0 top-0 absolute overflow-hidden">
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Sapiente
|
||||
explicabo aut tenetur, minima, at ratione molestias maxime harum nulla,
|
||||
perspiciatis voluptatibus quas? Earum, ab quam totam quasi explicabo
|
||||
temporibus ex. Voluptas obcaecati suscipit eius pariatur soluta! Id
|
||||
voluptate ducimus harum itaque laudantium aliquam voluptatem nulla
|
||||
repudiandae magni officiis voluptatibus sed autem corrupti natus
|
||||
impedit, blanditiis labore praesentium ab. Molestias, velit. Laudantium
|
||||
ducimus reprehenderit ab, est reiciendis nisi suscipit minus natus,
|
||||
quibusdam expedita nulla quis inventore officia hic ipsum sit ad, quam
|
||||
facilis doloribus. Accusamus repellat dolores eaque incidunt ab numquam.
|
||||
Reprehenderit corrupti excepturi iure molestiae perferendis, distinctio
|
||||
ad? Culpa cum quaerat ipsa tempora totam delectus in, assumenda
|
||||
laudantium ea provident explicabo cumque minus quos iste, asperiores
|
||||
tenetur eaque. Quo, enim? Asperiores officiis cupiditate aut ea at
|
||||
minus, voluptate assumenda, aliquid illo pariatur inventore dolorum
|
||||
impedit magni dolorem earum, officia ipsa? Non esse culpa illum possimus
|
||||
recusandae consequatur perspiciatis iure architecto. Sit, voluptas
|
||||
molestiae dolor fuga nostrum, asperiores doloremque debitis enim
|
||||
assumenda excepturi cum facilis ipsum illum animi repellendus ducimus ea
|
||||
adipisci, numquam corrupti consequatur? Dolorum vel nisi vitae facilis
|
||||
unde! Voluptates non cum autem eius qui deleniti, voluptatem accusamus
|
||||
ex illum! Error neque ex placeat, ea distinctio ab, dolore officiis at
|
||||
voluptates saepe reprehenderit odio temporibus quibusdam ipsum, sunt
|
||||
non. Error soluta aliquid totam iure praesentium pariatur a consequatur
|
||||
minus recusandae aut et doloribus, necessitatibus officiis cupiditate
|
||||
dolorum, officia doloremque molestiae, dolores autem voluptates eveniet
|
||||
quod voluptatibus. Unde, quaerat aliquid! Excepturi hic qui repellendus
|
||||
rerum necessitatibus ducimus repellat minima rem doloremque impedit
|
||||
voluptate perferendis, et quo dolores? Labore, commodi! Nobis unde
|
||||
aperiam quos aspernatur placeat numquam laboriosam mollitia rem odit.
|
||||
Natus ipsum architecto perferendis voluptatum aspernatur at,
|
||||
necessitatibus quia. Sed ea aut quas, quaerat odit temporibus nemo
|
||||
quibusdam voluptate, pariatur doloribus quisquam qui eos sint dolor
|
||||
laudantium molestias repellat minima! Dolorum, quaerat? Aliquid
|
||||
asperiores porro alias rem nihil necessitatibus aut eligendi
|
||||
voluptatibus consectetur optio. Aliquam quidem laudantium cumque ullam
|
||||
laboriosam? Quisquam recusandae rem repellat! Beatae suscipit quasi sint
|
||||
eum fuga. Cumque rerum quod cupiditate voluptatum quia, perferendis
|
||||
doloribus distinctio sapiente quas, accusantium rem dolor adipisci
|
||||
deleniti unde officiis suscipit nulla eveniet ipsum. Quia et iusto
|
||||
accusamus provident aperiam aut temporibus. Debitis consequuntur dolores
|
||||
eveniet eligendi perferendis, ratione sint unde magnam accusamus culpa
|
||||
laborum illum eius officiis cum deserunt alias, qui, ab voluptatibus
|
||||
dolor ducimus nulla dignissimos. Quasi perspiciatis nihil rem? At, omnis
|
||||
enim nobis illo earum magni porro magnam corporis repellendus beatae
|
||||
saepe, adipisci voluptas dicta quia iure dolor minima exercitationem
|
||||
dolores placeat reiciendis! Cupiditate molestiae assumenda libero
|
||||
pariatur dolorum! Quasi eos minus, nostrum tempore aut delectus ad
|
||||
exercitationem natus maiores sed voluptatem, hic, recusandae consequatur
|
||||
asperiores possimus sapiente nihil a facilis aliquid velit rem! Illo,
|
||||
distinctio. Magni, et aliquid! Molestiae eveniet repellat rem
|
||||
consequuntur nesciunt, impedit ea nam commodi, itaque officia fuga nobis
|
||||
a ad dolorum nisi omnis quos iusto. Quibusdam accusamus nam laboriosam
|
||||
culpa exercitationem earum nihil! Ratione. Eaque odit, sed voluptatem
|
||||
deserunt et reiciendis ducimus voluptatibus in magnam magni. Quis
|
||||
architecto ab repellat commodi rem incidunt ullam, inventore, laudantium
|
||||
est vel et voluptate assumenda fugit veritatis similique? Ipsa aperiam
|
||||
cupiditate odit doloribus ex autem. Adipisci odio nam consequatur
|
||||
reiciendis dolorem, in doloremque nihil, architecto necessitatibus
|
||||
beatae incidunt expedita. Dolore sit eveniet tenetur dolores mollitia
|
||||
totam qui reiciendis. Nemo exercitationem eaque voluptatibus amet facere
|
||||
autem odio perferendis deserunt, eveniet modi id sit vero nisi
|
||||
reiciendis, explicabo fugit cupiditate non quam adipisci excepturi
|
||||
accusantium possimus soluta laboriosam nesciunt? Consectetur. Possimus
|
||||
explicabo officia aliquid. Cumque perspiciatis animi enim nam minima!
|
||||
Fuga eaque assumenda dicta obcaecati dolorum vero delectus, repellat
|
||||
quae. At deleniti repudiandae facere optio quibusdam, saepe alias modi
|
||||
minima. Iste cumque quasi, fuga, recusandae vel molestiae praesentium
|
||||
adipisci, hic ipsa enim doloremque minima eaque. Autem modi iusto
|
||||
accusamus reiciendis! Incidunt, expedita et neque quas sapiente magni ut
|
||||
at? Quos! Similique voluptatum quam, dolore quae fugiat porro quos
|
||||
provident dolor magnam natus in consequuntur doloribus tenetur veniam
|
||||
ipsum eaque eligendi vero placeat ducimus odit esse. Maxime ab
|
||||
asperiores rerum excepturi. Nisi soluta est veniam sapiente consectetur
|
||||
iste laboriosam voluptates corrupti minus totam. Commodi quos laborum
|
||||
earum maiores ipsam itaque, exercitationem reiciendis, enim sequi alias
|
||||
molestiae modi? Hic veritatis eveniet quod. Iste laudantium incidunt
|
||||
dicta autem sequi placeat, sit beatae quo, eum facere veniam laboriosam
|
||||
labore obcaecati? Voluptas aspernatur eos corporis dolores neque
|
||||
excepturi quas sit ex reiciendis, quis dolorum quo! Eum harum distinctio
|
||||
hic officiis labore deserunt sint quod dicta odio quae ut incidunt,
|
||||
temporibus doloremque totam ratione. Obcaecati impedit voluptatibus
|
||||
quisquam tenetur eius sint officia accusamus natus ut atque! Placeat
|
||||
necessitatibus doloribus alias non ut vel sit similique eveniet, soluta
|
||||
nostrum delectus dignissimos saepe culpa exercitationem harum iure
|
||||
accusamus molestiae eius inventore laborum! Quaerat rem alias aliquid
|
||||
fugit nisi. Dignissimos natus veritatis consequuntur molestiae enim aut
|
||||
cumque explicabo odio non quibusdam fugit quisquam, aspernatur nobis,
|
||||
quasi quidem labore vero animi porro impedit! Tempore assumenda optio
|
||||
minus iste excepturi nemo? Alias ad non consectetur modi doloremque
|
||||
possimus! Voluptate delectus unde reiciendis necessitatibus at alias
|
||||
deleniti non? Sint ex accusantium quae soluta labore quod exercitationem
|
||||
doloremque tempora, optio id non sit! Recusandae explicabo aspernatur
|
||||
quibusdam illo commodi error sed dicta deserunt vel expedita laborum
|
||||
soluta nam iusto quo, debitis eligendi reiciendis dolore velit?
|
||||
Blanditiis deleniti ex doloremque quis nihil odit quasi! Sequi,
|
||||
voluptatibus repudiandae sapiente, officia illo unde optio ducimus
|
||||
officiis exercitationem obcaecati quasi. Corrupti soluta et asperiores
|
||||
totam ad consequatur ut tenetur, modi rerum iure, ipsam doloremque
|
||||
ratione animi culpa? Excepturi ullam voluptate soluta saepe ratione
|
||||
magni sit nulla cum corrupti ad iste illo tempora molestias maxime
|
||||
omnis, magnam et rerum in animi tenetur quae! Eum animi perferendis
|
||||
laboriosam dolores? Veritatis possimus qui exercitationem quas quam
|
||||
corporis aliquid, fugiat, assumenda alias doloremque odit iste, fuga
|
||||
officiis ducimus laborum vel a? Dolore facere dolor quos, similique nemo
|
||||
velit nulla ullam repudiandae. Vel, culpa, aliquam pariatur id expedita
|
||||
numquam iure quisquam repudiandae nisi at temporibus explicabo dolores
|
||||
reprehenderit. Quae soluta incidunt maiores omnis blanditiis nisi
|
||||
numquam similique quibusdam vero quaerat, et dignissimos? Consequatur
|
||||
minima saepe accusamus totam explicabo eius soluta! Fuga earum molestiae
|
||||
neque eum perferendis reprehenderit voluptatibus velit? Rerum dolorem
|
||||
nostrum tempore veritatis fugit aut illum doloremque? Error beatae ipsam
|
||||
nemo! Praesentium atque rerum fuga aperiam asperiores. Animi porro
|
||||
sequi, voluptate numquam placeat voluptates corrupti consectetur? Eum
|
||||
quae reiciendis quos quod, deserunt voluptas aut facere at aliquid ullam
|
||||
excepturi velit dolor. Porro nisi deserunt id quam a suscipit corrupti
|
||||
soluta? Debitis maiores officia accusantium enim deleniti fugiat rerum
|
||||
ab necessitatibus laborum, asperiores amet, corporis, ea id officiis
|
||||
labore veniam! Sit, optio. Nemo nam error, esse ratione doloremque
|
||||
itaque tempore impedit, dolore, repellendus ea possimus dolor assumenda
|
||||
officiis expedita dolorum tenetur minus amet? Possimus aliquam veritatis
|
||||
beatae deleniti odit necessitatibus harum eum? Repellendus error iste
|
||||
voluptate qui aperiam distinctio perferendis facere corrupti porro,
|
||||
dolor vel possimus voluptatem laudantium a, esse fugit assumenda amet
|
||||
autem numquam doloribus accusamus asperiores! Labore, accusantium?
|
||||
Debitis, accusamus. Temporibus dolores nam nulla eaque dolorem. Ipsum
|
||||
ipsam, ab aspernatur, commodi reiciendis dolore iure ut eligendi nulla
|
||||
atque architecto, debitis omnis vero velit eveniet quisquam voluptatibus
|
||||
voluptate cumque ullam dolores. Deserunt accusantium molestiae
|
||||
voluptates deleniti minus distinctio maxime ullam magni placeat?
|
||||
Nesciunt nobis eum quibusdam laboriosam, fugiat quia sapiente quos
|
||||
voluptatibus possimus? Reiciendis molestias at fuga labore itaque quod
|
||||
quidem. Adipisci provident animi dolorem! Vitae architecto eum enim
|
||||
optio fugiat, aliquid quis voluptatibus veritatis corrupti sequi,
|
||||
asperiores perferendis! Cumque quae aliquam aliquid corporis odio itaque
|
||||
ipsum tenetur totam quisquam amet! Dolorem vitae beatae voluptatem
|
||||
cupiditate inventore tempore rem, explicabo repellat veniam corrupti
|
||||
nesciunt possimus impedit dolor ullam aspernatur earum atque minima. Ea
|
||||
optio cumque porro veniam error odit assumenda quae! Commodi, nisi velit
|
||||
perspiciatis aliquid ut quidem accusantium! Cupiditate doloribus id
|
||||
vitae, facilis, illo tempora fugiat sit quis reiciendis, quod a.
|
||||
Provident reiciendis maiores, hic ducimus aperiam repellendus officia
|
||||
sit. Aperiam laboriosam voluptates dolorum labore ab molestiae
|
||||
praesentium veniam odit sed blanditiis. Quo alias nam facilis, veritatis
|
||||
voluptatem mollitia eveniet magnam totam doloremque architecto quisquam
|
||||
quasi tempore voluptatum adipisci saepe. Eos iste tenetur, laboriosam
|
||||
dolore dolores ullam! Quae adipisci porro quia hic, impedit eligendi
|
||||
modi accusantium? Adipisci sunt eaque, voluptatibus quos velit quam
|
||||
beatae aliquam, deleniti ipsum, vel molestias quidem. Voluptas sed dolor
|
||||
perferendis, expedita ea aliquam blanditiis molestiae incidunt fugit
|
||||
minima mollitia nihil? Doloremque hic repellat neque voluptates corrupti
|
||||
facere doloribus, rem architecto labore itaque porro tempora, nisi
|
||||
harum! Dicta ducimus ipsum, iure recusandae nemo aspernatur. Deleniti
|
||||
suscipit quia deserunt autem odit nihil iste quae tempore, cupiditate
|
||||
eius totam corporis adipisci culpa numquam repudiandae veritatis,
|
||||
laborum aliquid maiores maxime? Porro facilis, ex harum laborum
|
||||
consectetur non autem commodi aliquid ullam ea distinctio accusantium
|
||||
praesentium ratione ut error, delectus, magnam inventore excepturi eius?
|
||||
Amet nihil earum cum facilis hic veritatis. Accusamus obcaecati totam
|
||||
ipsa facilis sequi ipsam, odit harum delectus explicabo ut, recusandae
|
||||
quia dolorem unde sapiente! Accusantium tenetur provident earum ducimus
|
||||
nobis. Voluptatem dolore beatae ea veritatis similique sed. Dolores
|
||||
accusamus qui, nam minus optio aliquid. Ipsa vitae magnam fuga ex
|
||||
perspiciatis deleniti laboriosam totam ducimus quis, unde eius
|
||||
doloremque et repudiandae ea libero incidunt quidem eos magni? Minima!
|
||||
Soluta libero voluptas itaque aspernatur recusandae doloribus nisi
|
||||
consequuntur, doloremque fugiat magni, repellat alias voluptatum
|
||||
assumenda nesciunt nobis, ex eveniet nulla esse? Ex, suscipit. Quos quam
|
||||
expedita nemo aperiam consectetur! Perspiciatis facere aperiam vitae,
|
||||
inventore quibusdam esse deserunt accusamus suscipit nemo cupiditate,
|
||||
repellat quis veniam dolorem sequi nostrum laborum. Nemo tempore quasi
|
||||
aliquam possimus quae iste reprehenderit quo maiores voluptatem.
|
||||
Laborum, voluptas id! Similique, recusandae? Laboriosam soluta
|
||||
doloremque reprehenderit temporibus porro quaerat ipsa excepturi ad.
|
||||
Maxime eveniet dolor quibusdam, molestias at, officiis blanditiis
|
||||
aliquam consectetur eligendi, debitis quia porro eaque? Aperiam fuga
|
||||
architecto eligendi in eum recusandae odio adipisci pariatur repudiandae
|
||||
corporis sequi nam, vitae soluta vero sapiente facilis sed quos quasi
|
||||
excepturi distinctio? Natus animi enim facere dolor. Nesciunt.
|
||||
Laboriosam rerum recusandae ad eius hic earum vitae magni nam.
|
||||
Blanditiis consequatur illum laborum totam nostrum perferendis esse
|
||||
officiis sapiente dolorum assumenda! Laudantium laborum distinctio quae
|
||||
perspiciatis error maxime voluptatem! Corrupti, minus illo id magnam
|
||||
error, exercitationem voluptate aut laudantium assumenda qui nobis,
|
||||
eaque consectetur eius. Incidunt dolor, reprehenderit, accusamus quaerat
|
||||
magnam ab excepturi odio quam ea fugiat ad rerum! Quasi qui aut
|
||||
quibusdam consequatur. Repellendus magnam consequatur dolores voluptate
|
||||
eaque corporis minima numquam? Vel quisquam rerum iusto laborum
|
||||
voluptatibus nisi nobis animi? Beatae ipsa hic exercitationem officia
|
||||
dignissimos voluptatum. Odio placeat et totam quisquam, rerum delectus,
|
||||
voluptas vitae nemo velit neque quas iusto! Itaque incidunt praesentium
|
||||
atque quidem magni voluptatibus voluptas quam possimus. Expedita
|
||||
distinctio illo quos sit consequuntur? Ratione, eos praesentium iusto
|
||||
accusantium repellendus debitis, consequuntur asperiores consequatur
|
||||
illo a autem quo perferendis molestias culpa tenetur ipsum ab
|
||||
voluptatibus nulla. Aperiam, quas ex delectus quos nulla corporis magni?
|
||||
Laboriosam voluptates vero corrupti pariatur. Modi quos a exercitationem
|
||||
culpa. Atque ducimus perspiciatis temporibus? Numquam illum, sapiente
|
||||
impedit corporis optio aut. A voluptatibus officiis quibusdam maiores
|
||||
unde animi sint magnam! Repellendus modi at quas error praesentium aut
|
||||
sed eligendi voluptatibus, sapiente provident eius asperiores, odit eum,
|
||||
iure maiores quo. Dolor architecto quos repellat repudiandae animi
|
||||
deserunt reprehenderit voluptates officiis minus. Aliquid, ut!
|
||||
Asperiores suscipit quasi unde repellat voluptatem optio dolorum, ab
|
||||
blanditiis porro dolor perferendis illum commodi tenetur alias
|
||||
recusandae eius ipsum maxime sequi vitae obcaecati deleniti animi
|
||||
officia. Voluptatem! Assumenda necessitatibus totam possimus ex non
|
||||
inventore quis dolorum unde dolorem obcaecati esse fuga, omnis quibusdam
|
||||
consequuntur itaque nam commodi distinctio repellat saepe explicabo
|
||||
sapiente quam exercitationem quaerat eligendi. Atque? Necessitatibus,
|
||||
nihil modi possimus qui excepturi, commodi odit quae autem est hic,
|
||||
dolorem quo maiores consequatur recusandae dolores neque consectetur eum
|
||||
numquam atque iure! Eius debitis veritatis repellat saepe dolore? Vero
|
||||
eos, sapiente quas veritatis consequuntur quisquam doloribus
|
||||
exercitationem vitae laboriosam ipsam repellendus ex nobis placeat
|
||||
voluptas! At iusto doloremque eos magni eius, odio corrupti! Suscipit
|
||||
alias fuga tenetur quidem! Ut atque sapiente nobis. Obcaecati earum
|
||||
debitis amet, libero aspernatur placeat deleniti praesentium officia!
|
||||
Blanditiis ratione ipsam architecto minus reprehenderit possimus natus
|
||||
fuga optio dolorem. Soluta eligendi asperiores sapiente veniam.
|
||||
Consequuntur, quae deserunt harum ut asperiores, maxime necessitatibus
|
||||
corrupti molestiae eveniet nam tempora unde commodi recusandae optio
|
||||
odio quos doloremque culpa nesciunt, at et! Alias corporis voluptates
|
||||
sit exercitationem ipsa? Modi hic accusantium esse dolor porro nostrum
|
||||
maxime ipsum fuga beatae dolores nulla natus mollitia veniam veritatis
|
||||
totam, corrupti dolorum repudiandae at. Ea incidunt dolore, distinctio
|
||||
illo unde debitis libero. Ea sit expedita qui perferendis fugit natus
|
||||
id! Exercitationem vero facere facilis error natus quod enim odio
|
||||
aliquid iure, doloremque similique quaerat architecto neque accusamus
|
||||
porro asperiores ex? Omnis, dolor! Placeat perspiciatis, nesciunt earum
|
||||
totam esse similique consectetur. Tenetur omnis aliquam dolor deserunt
|
||||
corrupti excepturi, ab aperiam error molestias asperiores blanditiis
|
||||
totam enim, officiis ipsa architecto magni neque ut velit! Perspiciatis
|
||||
quo numquam nisi a quaerat ipsam quod ipsa, aspernatur expedita ducimus
|
||||
magni molestiae est eius odit, animi ipsum quis modi sapiente obcaecati
|
||||
vitae consequatur maxime! Quaerat natus repellendus ipsam. Quidem enim
|
||||
amet modi iste mollitia doloremque architecto. Ratione illo consequuntur
|
||||
eos error eius esse ea in modi reprehenderit deleniti nostrum reiciendis
|
||||
exercitationem id, at similique voluptatibus, commodi omnis beatae.
|
||||
Fugiat fuga alias eum quia natus accusantium dicta ab minus harum
|
||||
libero. Maiores laboriosam explicabo vel quasi voluptates necessitatibus
|
||||
ea sit, aspernatur, alias suscipit magni error ad nihil nulla ipsa!
|
||||
Provident tempora odit exercitationem architecto. Quae qui dolor ex in
|
||||
nam. Obcaecati esse unde ratione debitis aperiam at eveniet? Facere
|
||||
repudiandae deserunt ut vel odio, architecto iste sunt optio reiciendis!
|
||||
Inventore voluptates quam libero modi eligendi. Adipisci, vel? Sit iure
|
||||
officiis optio dignissimos ratione, quam magnam rem autem at excepturi
|
||||
perspiciatis voluptate rerum id hic, modi sed nostrum. Libero, quidem?
|
||||
Odio blanditiis error tempore recusandae deserunt quod odit dolorum eos
|
||||
voluptatum repudiandae cupiditate vero fugit ullam eius temporibus dicta
|
||||
cum veritatis, dolore labore eum accusamus maiores repellendus? Quasi,
|
||||
accusantium accusamus? Rem explicabo, doloremque nostrum quo alias
|
||||
exercitationem perspiciatis ratione ex aspernatur asperiores rerum
|
||||
natus, debitis quia ad delectus tempora accusantium temporibus incidunt
|
||||
dignissimos porro commodi! Odio voluptatum et possimus minus. Quisquam
|
||||
quibusdam recusandae atque eos repellat quis expedita cum. Facere ex,
|
||||
blanditiis mollitia voluptatibus error commodi saepe at consectetur,
|
||||
quaerat fugit aliquid aperiam culpa, repellendus similique dolore ut
|
||||
ducimus corporis. Incidunt ipsam error quisquam, temporibus, ipsum
|
||||
accusamus odio asperiores dolore praesentium excepturi repudiandae
|
||||
libero porro non, molestias iusto obcaecati quod. Cupiditate labore
|
||||
placeat ex maxime natus, fugiat saepe officiis voluptatibus! Commodi,
|
||||
quisquam? Consequatur porro cumque assumenda enim accusamus architecto
|
||||
quaerat cupiditate nisi eum ipsam. Perferendis animi numquam excepturi
|
||||
tempore, nobis temporibus? Sapiente ratione vitae accusamus atque illo
|
||||
expedita vero debitis! Nam, doloremque cum, fuga nostrum qui voluptatem
|
||||
autem eligendi repellendus delectus sit, adipisci cumque debitis labore
|
||||
tempora optio. A animi odio facilis quibusdam quasi. Assumenda nostrum
|
||||
quibusdam deserunt sapiente aliquid? Inventore deleniti, sit ipsa
|
||||
consectetur excepturi voluptatum. Ipsam veniam sunt ad odio, rem sint
|
||||
eveniet corporis sit impedit voluptates modi earum repellendus nobis
|
||||
facere, dolorum quae laborum consequatur nisi consequuntur. Alias ex vel
|
||||
tempore doloribus quae. Culpa quidem magnam dolor voluptatum neque
|
||||
assumenda, laudantium tenetur placeat facere officia esse! Ad totam quis
|
||||
sed ipsam cum nesciunt odit provident veniam est. Facere commodi minima
|
||||
aut quos magnam nam et, assumenda, fuga, perspiciatis aliquam nulla
|
||||
distinctio quia impedit illum sequi esse similique optio fugiat suscipit
|
||||
eum labore iure repudiandae unde! Ratione, dolore. Recusandae cum amet
|
||||
quibusdam reprehenderit sapiente laboriosam, dolores unde facilis,
|
||||
sequi, eos minima ipsam laudantium enim ullam? Tenetur quasi provident
|
||||
eius tempore aperiam, libero aliquid mollitia illum ipsa, ex natus. Odio
|
||||
quas atque reiciendis laudantium. Rerum, consequatur aliquam illum
|
||||
corporis nulla accusantium consequuntur, voluptas aut inventore
|
||||
molestias nobis sit perspiciatis ullam fugit tempora dolore itaque nam
|
||||
perferendis veniam magnam fugiat? Impedit et accusantium esse illo
|
||||
nostrum optio sapiente, nam unde quam doloremque culpa ipsa blanditiis
|
||||
numquam nulla modi, dolore voluptas. Assumenda omnis aut aliquam, dolor
|
||||
fugiat sapiente sit animi distinctio. Aliquam qui molestias dolore
|
||||
vitae! Quasi fuga nisi vel voluptatem sit quaerat error sunt odit
|
||||
deleniti quibusdam rem esse, optio tenetur in voluptatum at excepturi
|
||||
doloribus fugit nesciunt ut voluptatibus. Id sapiente repudiandae nisi
|
||||
ullam saepe adipisci ipsam molestias impedit? Nulla quod sequi fuga rem
|
||||
accusamus fugit voluptas voluptatem delectus ipsam dicta id quis
|
||||
aspernatur, accusantium incidunt ducimus! Molestias, adipisci!
|
||||
Repudiandae accusamus, repellendus possimus facilis minus adipisci
|
||||
reprehenderit dignissimos repellat laboriosam alias vero a assumenda in
|
||||
vel! Atque quam, quos omnis obcaecati accusantium ad facilis culpa eaque
|
||||
officia natus amet. Adipisci, odio voluptatum nulla tempore corporis
|
||||
nisi iste dolores quos rerum fugiat ratione necessitatibus veniam qui!
|
||||
Deleniti dolor, maxime illo at nemo quibusdam facilis doloremque, itaque
|
||||
molestiae placeat iusto labore! Doloremque, optio, odit error debitis
|
||||
esse sequi incidunt eaque reiciendis distinctio possimus nesciunt
|
||||
blanditiis facere! Enim maiores voluptate ea eius saepe libero tempora
|
||||
laboriosam, reprehenderit illo quisquam sequi consequuntur ex? Hic,
|
||||
quod. Corrupti numquam voluptas deserunt totam unde consequatur,
|
||||
voluptatem est, similique dolores, asperiores cumque. Ab iste, repellat
|
||||
possimus quod magni cum veritatis molestias corporis quam, sed
|
||||
voluptatibus? Ullam, temporibus! Quam beatae, facilis atque ducimus
|
||||
eaque veniam dolore fugiat magnam, odit architecto accusantium, ab
|
||||
tenetur! Officiis reiciendis aut magnam veniam optio suscipit totam
|
||||
atque dicta inventore! Ab repudiandae vero facilis? Neque consectetur,
|
||||
qui nemo commodi quod et atque nesciunt voluptatem quaerat quas error
|
||||
officia eveniet ipsam iste iusto saepe, illo dolore ab recusandae!
|
||||
Tempore maiores quas numquam distinctio debitis dicta? Soluta saepe
|
||||
similique quod cupiditate blanditiis sint earum nobis officia assumenda,
|
||||
sit ipsam officiis laudantium alias labore modi fugit. Dolor amet
|
||||
eligendi fugit sunt magni officia reiciendis cum. Corporis, molestias!
|
||||
Possimus voluptatibus recusandae non similique beatae obcaecati
|
||||
perferendis sed provident doloribus laboriosam? Beatae blanditiis ea
|
||||
tempora aliquam quos dicta, inventore sint magnam ipsa et nisi maxime
|
||||
voluptates delectus aperiam id? Cumque maxime magni, ipsam dignissimos
|
||||
nesciunt modi libero optio, ad quisquam molestiae quidem autem error.
|
||||
Recusandae assumenda maxime culpa, ratione quo, sapiente aspernatur
|
||||
consequatur possimus deleniti asperiores hic, corrupti sit. Blanditiis
|
||||
possimus vero aliquid, aspernatur magnam, tenetur incidunt deleniti ea
|
||||
veritatis dolorum atque sapiente adipisci! Qui pariatur praesentium
|
||||
officia laudantium vel modi expedita quis, sequi voluptate nihil
|
||||
placeat, omnis neque? Eos pariatur quam maxime quos culpa consequatur
|
||||
voluptates eveniet, soluta, exercitationem, adipisci incidunt natus
|
||||
necessitatibus dolorem minus autem facilis nihil temporibus odio labore
|
||||
magni laboriosam rem ad. Assumenda, quibusdam quisquam?
|
||||
</div>
|
||||
<div className="max-h-screen w-1/2 right-0 top-0 absolute overflow-y-auto">
|
||||
<div className="min-h-screen bg-neutral-200 p-8 gap-8 flex flex-col justify-between">
|
||||
<div className="">
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Magni ex
|
||||
labore fuga delectus, quae dolores neque iure culpa architecto,
|
||||
maiores error provident amet doloremque voluptas laboriosam
|
||||
aliquid quasi in aperiam!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default TestPage;
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect } from "react";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useParams } from "react-router";
|
||||
import { useMemo } from "react";
|
||||
import { api } from "../api/ky";
|
||||
import { Unit } from "../types/IUnit";
|
||||
import ShareIcon from "../components/icons/ShareIcon";
|
||||
@@ -18,11 +18,54 @@ import UnitSliderItem from "../components/UnitSliderItem";
|
||||
import UnitTypeImageWithMarkers from "../components/UnitTypeImageWithMarkers";
|
||||
import OnFloorMask from "../components/OnFloorMask";
|
||||
import InteriorSlider from "../components/InteriorSlider";
|
||||
import { getHQMockUnit } from "../data/hq192327mockUnits";
|
||||
import { ComplexName } from "../types/ComplexName";
|
||||
import {
|
||||
createHqLoungeVirtualUnit,
|
||||
isHqLoungeUnitNo,
|
||||
} from "../utils/hqLoungeVirtualUnits";
|
||||
|
||||
const mockInteriors = [
|
||||
"/images/interiors/hq/studio/2.jpg",
|
||||
"/images/interiors/hq/simplex-edge/2.jpg",
|
||||
"/images/interiors/hq/deluxe/2.jpg",
|
||||
"/images/interiors/hq/deluxe/3.jpg",
|
||||
"/images/interiors/hq/executive/2.jpg",
|
||||
"/images/interiors/hq/executive/3.jpg",
|
||||
];
|
||||
|
||||
const HQ_LOUNGE_INTERIOR_IMAGES = [
|
||||
"/images/interiors/hq/lounge/1.jpg",
|
||||
"/images/interiors/hq/lounge/2.jpg",
|
||||
"/images/interiors/hq/lounge/3.jpg",
|
||||
];
|
||||
|
||||
function UnitPage() {
|
||||
const params = useParams<{ complexName: string; unitNumber: string }>();
|
||||
const params = useParams<{ complexName: ComplexName; unitNumber: string }>();
|
||||
|
||||
const { data: unit } = useQuery({
|
||||
const hqLoungeVirtual = useMemo(() => {
|
||||
if (
|
||||
params.complexName !== "hq" ||
|
||||
!params.unitNumber ||
|
||||
!isHqLoungeUnitNo(params.unitNumber)
|
||||
)
|
||||
return null;
|
||||
const floor = parseInt(params.unitNumber.slice(0, -2), 10);
|
||||
return createHqLoungeVirtualUnit(floor, params.unitNumber);
|
||||
}, [params.complexName, params.unitNumber]);
|
||||
|
||||
const { data: fetchedUnit, isFetching } = useQuery({
|
||||
enabled:
|
||||
!hqLoungeVirtual &&
|
||||
!(
|
||||
params.complexName === "hq" &&
|
||||
(params.unitNumber?.startsWith("19") ||
|
||||
params.unitNumber?.startsWith("20") ||
|
||||
params.unitNumber?.startsWith("23") ||
|
||||
params.unitNumber?.startsWith("24") ||
|
||||
params.unitNumber?.startsWith("27") ||
|
||||
params.unitNumber?.startsWith("28"))
|
||||
),
|
||||
queryKey: ["unit", params.complexName, params.unitNumber],
|
||||
queryFn: () =>
|
||||
api
|
||||
@@ -30,6 +73,8 @@ function UnitPage() {
|
||||
.json<Unit>(),
|
||||
});
|
||||
|
||||
const unit = fetchedUnit ?? hqLoungeVirtual ?? undefined;
|
||||
|
||||
const { favoriteUnits, setFavoriteUnits } = useFavoritesUnitsStore();
|
||||
|
||||
function handleFavorite() {
|
||||
@@ -43,22 +88,158 @@ function UnitPage() {
|
||||
|
||||
const { setModal } = useModalStore();
|
||||
|
||||
const displayUnitType = unit
|
||||
? formattedUnitTypes.get(unit.unitType) || unit.unitType
|
||||
: "Rove Home";
|
||||
if (isFetching && !hqLoungeVirtual) return <div>Loading...</div>;
|
||||
|
||||
useEffect(() => {
|
||||
document.title = displayUnitType;
|
||||
return () => {
|
||||
document.title = "Rove Home";
|
||||
};
|
||||
}, [displayUnitType]);
|
||||
if (!unit)
|
||||
return (
|
||||
<div className="2xl:p-[2.222vw] md:max-2xl:p-6 p-4 max-2xl:pb-0 bg-white flex 2xl:gap-[2.222vw] md:max-2xl:gap-8 gap-6 max-2xl:flex-col 2xl:items-start">
|
||||
<div className="max-md:aspect-square relative">
|
||||
<NewUnitSlider>
|
||||
<UnitSliderItem text="On the floor">
|
||||
<svg className="2xl:py-[2.222vw] py-8 size-full">
|
||||
<OnFloorMask unit={getHQMockUnit(params.unitNumber!)!} />
|
||||
</svg>
|
||||
</UnitSliderItem>
|
||||
{innerWidth >= 768 ? (
|
||||
<UnitSliderItem text="Interior">
|
||||
<InteriorSlider mockImages={mockInteriors} />
|
||||
</UnitSliderItem>
|
||||
) : (
|
||||
mockInteriors.map((interior, index) => (
|
||||
<UnitSliderItem text={`interior ${index + 1}`} key={index}>
|
||||
<img
|
||||
src={interior}
|
||||
alt=""
|
||||
className="size-full object-cover pointer-events-none"
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
))
|
||||
)}
|
||||
</NewUnitSlider>
|
||||
</div>
|
||||
<div className="2xl:w-[21.944vw] flex-shrink-0 py-4">
|
||||
{/* <div className="2xl:space-y-[1.667vw] space-y-6"> */}
|
||||
<div className="flex justify-between items-start">
|
||||
<div className="2xl:space-y-[1.111vw] space-y-4">
|
||||
<h3 className="text-h3 font-medium">
|
||||
{params.unitNumber?.endsWith("F")
|
||||
? "Full floor"
|
||||
: "Simplex office"}
|
||||
</h3>
|
||||
<div className="2xl:space-y-[0.556vw] space-y-2">
|
||||
<p className="text-s text-[#00BED7]">HQ by Rove</p>
|
||||
<div className="flex items-center 2xl:gap-[0.556vw]">
|
||||
<p className="text-s opacity-70">
|
||||
Floor {params.unitNumber?.slice(0, 2)}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<Button variant="tertiary" onlyIcon onClick={handleShare}>
|
||||
<span className="2xl:size-[1.389vw] size-5">
|
||||
<ShareIcon />
|
||||
</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
{/* </div> */}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
if (!unit) return null;
|
||||
if (unit.unitType === "Lounge" && unit.projectSlug === "hq") {
|
||||
return (
|
||||
<div className="2xl:p-[2.222vw] md:max-2xl:p-6 p-4 bg-white flex 2xl:gap-[2.222vw] md:max-2xl:gap-8 gap-6 max-2xl:flex-col 2xl:items-start">
|
||||
<div className="max-md:aspect-square md:aspect-video md:min-h-0 md:overflow-hidden relative w-full">
|
||||
<NewUnitSlider>
|
||||
<UnitSliderItem text="Layout">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName="hq"
|
||||
unitTypeVariant="lounge"
|
||||
legend={[]}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
<UnitSliderItem text="On the floor">
|
||||
<svg className="2xl:py-[2.222vw] py-8 size-full">
|
||||
<OnFloorMask unit={unit} />
|
||||
</svg>
|
||||
</UnitSliderItem>
|
||||
{innerWidth >= 768 ? (
|
||||
<UnitSliderItem text="Interior">
|
||||
<InteriorSlider mockImages={HQ_LOUNGE_INTERIOR_IMAGES} />
|
||||
</UnitSliderItem>
|
||||
) : (
|
||||
HQ_LOUNGE_INTERIOR_IMAGES.map((src, index) => (
|
||||
<UnitSliderItem text={`interior ${index + 1}`} key={src}>
|
||||
<img
|
||||
src={src}
|
||||
alt=""
|
||||
className="size-full object-cover pointer-events-none"
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
))
|
||||
)}
|
||||
</NewUnitSlider>
|
||||
<Button
|
||||
variant="cta"
|
||||
onlyIcon={innerWidth < 768}
|
||||
size="large"
|
||||
className="absolute 2xl:right-[1.667vw] 2xl:top-[1.667vw] right-6 top-6 max-md:hidden"
|
||||
onClick={() =>
|
||||
setModal(<VideoModal src={`/videos/hq/lounge.mp4`} />)
|
||||
}
|
||||
>
|
||||
<div className="2xl:size-[1.389vw] size-5">
|
||||
<PlayIcon />
|
||||
</div>
|
||||
Video tour
|
||||
</Button>
|
||||
</div>
|
||||
<div className="flex flex-col justify-between md:max-2xl:gap-6 gap-4 2xl:w-[21.944vw] flex-shrink-0">
|
||||
<div className="flex justify-between items-start">
|
||||
<div className="2xl:space-y-[1.111vw] space-y-4">
|
||||
<h3 className="text-h3 font-medium">Lounge</h3>
|
||||
<div className="2xl:space-y-[0.556vw] space-y-2">
|
||||
<p className="text-s text-[#00BED7]">HQ by Rove</p>
|
||||
<p className="text-s opacity-70">Floor {unit.floor}</p>
|
||||
</div>
|
||||
</div>
|
||||
<Button
|
||||
variant="tertiary"
|
||||
onlyIcon
|
||||
onClick={() =>
|
||||
navigator.share({
|
||||
title: `Lounge — Floor ${unit.floor}`,
|
||||
url: window.location.href,
|
||||
})
|
||||
}
|
||||
>
|
||||
<span className="2xl:size-[1.389vw] size-5">
|
||||
<ShareIcon />
|
||||
</span>
|
||||
</Button>
|
||||
</div>
|
||||
<Button
|
||||
variant="cta"
|
||||
size="large"
|
||||
className="md:hidden w-full"
|
||||
onClick={() =>
|
||||
setModal(<VideoModal src={`/videos/hq/lounge.mp4`} />)
|
||||
}
|
||||
>
|
||||
Video tour
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function handleShare() {
|
||||
navigator.share({
|
||||
title: `${unit!.unitType} - ${unit!.unitNo}`,
|
||||
title: `${
|
||||
params.unitNumber?.endsWith("F") ? "Full floor" : "Deluxe office"
|
||||
} - ${params.unitNumber}`,
|
||||
url: window.location.href,
|
||||
});
|
||||
}
|
||||
@@ -67,98 +248,150 @@ function UnitPage() {
|
||||
.find((project) => project.slug === unit.projectSlug)
|
||||
?.types.find((type) => type.slug === unit.unitTypeVariantSlug);
|
||||
|
||||
const virtualTourAvailable = projects
|
||||
.find((project) => project.slug === params.complexName)
|
||||
?.types.find(
|
||||
(type) => type.slug === unit.unitTypeVariantSlug
|
||||
)?.tourAvailable;
|
||||
|
||||
const videoTourAvailable =
|
||||
unit.projectSlug === "hq" &&
|
||||
[
|
||||
"loft-edge",
|
||||
"penthouse-loft",
|
||||
"presidential-loft",
|
||||
"studio",
|
||||
"deluxe",
|
||||
"executive",
|
||||
].includes(unit.unitTypeVariantSlug);
|
||||
|
||||
return (
|
||||
<div className="2xl:p-[2.222vw] md:max-2xl:p-6 p-4 max-2xl:pb-0 bg-white flex 2xl:gap-[2.222vw] md:max-2xl:gap-8 gap-6 max-2xl:flex-col">
|
||||
<div className="max-md:aspect-square relative">
|
||||
<NewUnitSlider>
|
||||
{unit.isLoft ? (
|
||||
<>
|
||||
<UnitSliderItem text="Lower">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName={unit.projectSlug}
|
||||
unitTypeVariant={
|
||||
unit.unitTypeVariantSlug +
|
||||
"-lower" +
|
||||
(unit.side ? `-${unit.side}` : "")
|
||||
}
|
||||
floor="lower"
|
||||
legend={unitType?.legend || []}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
<UnitSliderItem text="Upper">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName={unit.projectSlug}
|
||||
unitTypeVariant={
|
||||
unit.unitTypeVariantSlug +
|
||||
"-upper" +
|
||||
(unit.side ? `-${unit.side}` : "")
|
||||
}
|
||||
floor="upper"
|
||||
legend={unitType?.legend || []}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
</>
|
||||
) : (
|
||||
<UnitSliderItem text="Layout">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName={unit.projectSlug}
|
||||
unitTypeVariant={
|
||||
unit.unitTypeVariantSlug + (unit.side ? `-${unit.side}` : "")
|
||||
}
|
||||
legend={unitType?.legend || []}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
)}
|
||||
<UnitSliderItem text="On the floor">
|
||||
<svg className="2xl:py-[2.222vw] py-8 size-full">
|
||||
<OnFloorMask unit={unit} />
|
||||
</svg>
|
||||
</UnitSliderItem>
|
||||
{innerWidth >= 768 ? (
|
||||
<UnitSliderItem text="Interior">
|
||||
<InteriorSlider
|
||||
unitTypeSlug={unit.unitTypeVariantSlug}
|
||||
projectSlug={unit.projectSlug}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
) : (
|
||||
unitType?.interiors.map((interior, index) => (
|
||||
<UnitSliderItem text={`interior ${index + 1}`} key={index}>
|
||||
<img
|
||||
src={interior}
|
||||
alt=""
|
||||
className="size-full object-cover pointer-events-none"
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
))
|
||||
)}
|
||||
</NewUnitSlider>
|
||||
<div className="2xl:p-[2.222vw] md:max-2xl:p-6 p-4 max-2xl:pb-0 bg-white flex 2xl:gap-[2.222vw] md:max-2xl:gap-8 gap-6 max-2xl:flex-col 2xl:items-start">
|
||||
<div className="max-md:aspect-square md:aspect-video md:min-h-0 md:overflow-hidden relative w-full">
|
||||
{unit.projectSlug === "hq" &&
|
||||
[
|
||||
"loft-edge",
|
||||
"penthouse-loft",
|
||||
"presidential-loft",
|
||||
"studio",
|
||||
].includes(unit.unitTypeVariantSlug) && (
|
||||
<Button
|
||||
variant="cta"
|
||||
onlyIcon={innerWidth < 768}
|
||||
size="large"
|
||||
className="absolute 2xl:right-[1.667vw] 2xl:top-[1.667vw] right-6 top-6 max-md:hidden"
|
||||
onClick={() =>
|
||||
setModal(
|
||||
<VideoModal
|
||||
src={`/videos/unit-types/hq/${unit.unitTypeVariantSlug}.mp4`}
|
||||
unit.unitTypeVariantSlug === "executive" &&
|
||||
params.unitNumber?.endsWith("11") ? (
|
||||
<NewUnitSlider>
|
||||
<UnitSliderItem text="On the floor">
|
||||
<svg className="2xl:py-[2.222vw] py-8 size-full">
|
||||
<OnFloorMask unit={unit} />
|
||||
</svg>
|
||||
</UnitSliderItem>
|
||||
{innerWidth >= 768 ? (
|
||||
<UnitSliderItem text="Interior">
|
||||
<InteriorSlider
|
||||
unitTypeSlug={unit.unitTypeVariantSlug}
|
||||
projectSlug={unit.projectSlug}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
) : (
|
||||
unitType?.interiors.map((interior, index) => (
|
||||
<UnitSliderItem text={`interior ${index + 1}`} key={index}>
|
||||
<img
|
||||
src={interior}
|
||||
alt=""
|
||||
className="size-full object-cover pointer-events-none"
|
||||
/>
|
||||
)
|
||||
}
|
||||
>
|
||||
<div className="2xl:size-[1.389vw] size-5">
|
||||
<PlayIcon />
|
||||
</div>
|
||||
Video tour
|
||||
</Button>
|
||||
)}
|
||||
</UnitSliderItem>
|
||||
))
|
||||
)}
|
||||
</NewUnitSlider>
|
||||
) : (
|
||||
<NewUnitSlider>
|
||||
{unit.isLoft ? (
|
||||
<>
|
||||
<UnitSliderItem text="Lower">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName={unit.projectSlug}
|
||||
unitTypeVariant={
|
||||
unit.unitTypeVariantSlug +
|
||||
"-lower" +
|
||||
(unit.side ? `-${unit.side}` : "")
|
||||
}
|
||||
floor="lower"
|
||||
legend={unitType?.legend || []}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
<UnitSliderItem text="Upper">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName={unit.projectSlug}
|
||||
unitTypeVariant={
|
||||
unit.unitTypeVariantSlug +
|
||||
"-upper" +
|
||||
(unit.side ? `-${unit.side}` : "")
|
||||
}
|
||||
floor="upper"
|
||||
legend={unitType?.legend || []}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
</>
|
||||
) : params.complexName === "hq" &&
|
||||
params.unitNumber?.endsWith("01") ? (
|
||||
<></>
|
||||
) : (
|
||||
<UnitSliderItem text="Layout">
|
||||
<UnitTypeImageWithMarkers
|
||||
complexName={unit.projectSlug}
|
||||
unitTypeVariant={
|
||||
unit.unitTypeVariantSlug +
|
||||
(unit.side ? `-${unit.side}` : "")
|
||||
}
|
||||
legend={unitType?.legend || []}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
)}
|
||||
<UnitSliderItem text="On the floor">
|
||||
<svg className="2xl:py-[2.222vw] py-8 size-full">
|
||||
<OnFloorMask unit={unit} />
|
||||
</svg>
|
||||
</UnitSliderItem>
|
||||
{innerWidth >= 768 ? (
|
||||
<UnitSliderItem text="Interior">
|
||||
<InteriorSlider
|
||||
unitTypeSlug={unit.unitTypeVariantSlug}
|
||||
projectSlug={unit.projectSlug}
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
) : (
|
||||
unitType?.interiors.map((interior, index) => (
|
||||
<UnitSliderItem text={`interior ${index + 1}`} key={index}>
|
||||
<img
|
||||
src={interior}
|
||||
alt=""
|
||||
className="size-full object-cover pointer-events-none"
|
||||
/>
|
||||
</UnitSliderItem>
|
||||
))
|
||||
)}
|
||||
</NewUnitSlider>
|
||||
)}
|
||||
|
||||
{videoTourAvailable && (
|
||||
<Button
|
||||
variant="cta"
|
||||
onlyIcon={innerWidth < 768}
|
||||
size="large"
|
||||
className="absolute 2xl:right-[1.667vw] 2xl:top-[1.667vw] right-6 top-6 max-md:hidden"
|
||||
onClick={() =>
|
||||
setModal(
|
||||
<VideoModal
|
||||
src={`/videos/unit-types/hq/${
|
||||
["studio", "deluxe", "executive"].includes(
|
||||
unit.unitTypeVariantSlug
|
||||
)
|
||||
? "studio"
|
||||
: unit.unitTypeVariantSlug
|
||||
}.mp4`}
|
||||
/>
|
||||
)
|
||||
}
|
||||
>
|
||||
<div className="2xl:size-[1.389vw] size-5">
|
||||
<PlayIcon />
|
||||
</div>
|
||||
Video tour
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
<div className="flex flex-col justify-between md:max-2xl:gap-6 gap-4 2xl:w-[21.944vw] flex-shrink-0">
|
||||
<div className="2xl:space-y-[1.667vw] space-y-6">
|
||||
@@ -169,7 +402,7 @@ function UnitPage() {
|
||||
</h3>
|
||||
<div className="2xl:space-y-[0.556vw] space-y-2">
|
||||
<p className="text-s text-[#00BED7]">{unit.project}</p>
|
||||
<div className="flex items-center 2xl:gap-[0.556vw]">
|
||||
<div className="flex items-center 2xl:gap-[0.556vw] gap-2">
|
||||
{unit.wing && (
|
||||
<>
|
||||
<p className="text-s opacity-70">{unit.wing}</p>
|
||||
@@ -218,7 +451,7 @@ function UnitPage() {
|
||||
</div>
|
||||
</button>
|
||||
)}
|
||||
<div className="flex flex-col 2xl:gap-y-[0.556vw]">
|
||||
<div className="flex flex-col 2xl:gap-y-[0.556vw] gap-y-2 pb-4">
|
||||
<div className="flex justify-between">
|
||||
<p className="text-s opacity-70">Total Area</p>
|
||||
<p className="text-s">{unit.squareFt.toFixed(2)} Sqft</p>
|
||||
@@ -275,36 +508,28 @@ function UnitPage() {
|
||||
Book
|
||||
</Button>
|
||||
</div> */}
|
||||
<div className="flex 2xl:flex-col 2xl:gap-[0.556vw] gap-2 2xl:bottom-[2.222vw] bottom-0 bg-white md:max-2xl:-mx-[3.125vw] md:max-2xl:p-[3.125vw] max-md:-mx-4 max-md:p-4 max-2xl:rounded-t-2xl max-2xl:shadow-[0_-4px_20px_0_rgba(0,0,0,0.05)]">
|
||||
{projects
|
||||
.find((project) => project.slug === params.complexName)
|
||||
?.types.find((type) => type.slug === unit.unitTypeVariantSlug)
|
||||
?.tourAvailable && (
|
||||
<Button
|
||||
variant="cta"
|
||||
size="large"
|
||||
onClick={() =>
|
||||
window.open(
|
||||
`/virtual-tour/${params.complexName}/${unit.unitTypeVariantSlug}`,
|
||||
"_blank"
|
||||
)
|
||||
}
|
||||
>
|
||||
Virtual tour
|
||||
</Button>
|
||||
)}
|
||||
{/* <Button disabled variant="cta" size="large">
|
||||
{(virtualTourAvailable || videoTourAvailable) && (
|
||||
<div className="flex 2xl:flex-col 2xl:gap-[0.556vw] gap-2 2xl:bottom-[2.222vw] bottom-0 bg-white md:max-2xl:-mx-[3.125vw] md:max-2xl:p-[3.125vw] max-md:-mx-4 max-md:p-4 max-2xl:rounded-t-2xl max-2xl:shadow-[0_-4px_20px_0_rgba(0,0,0,0.05)]">
|
||||
{virtualTourAvailable && (
|
||||
<Button
|
||||
variant="cta"
|
||||
size="large"
|
||||
onClick={() =>
|
||||
window.open(
|
||||
`/virtual-tour/${params.complexName}/${unit.unitTypeVariantSlug}`,
|
||||
"_blank"
|
||||
)
|
||||
}
|
||||
>
|
||||
Virtual tour
|
||||
</Button>
|
||||
)}
|
||||
{/* <Button disabled variant="cta" size="large">
|
||||
Book
|
||||
</Button> */}
|
||||
|
||||
{/* videos for hq units */}
|
||||
{unit.projectSlug === "hq" &&
|
||||
[
|
||||
"loft-edge",
|
||||
"penthouse-loft",
|
||||
"presidential-loft",
|
||||
"studio",
|
||||
].includes(unit.unitTypeVariantSlug) && (
|
||||
{/* videos for hq units */}
|
||||
{videoTourAvailable && (
|
||||
<Button
|
||||
variant="cta"
|
||||
size="large"
|
||||
@@ -312,7 +537,13 @@ function UnitPage() {
|
||||
onClick={() =>
|
||||
setModal(
|
||||
<VideoModal
|
||||
src={`/videos/unit-types/hq/${unit.unitTypeVariantSlug}.mp4`}
|
||||
src={`/videos/unit-types/hq/${
|
||||
["studio", "deluxe", "executive"].includes(
|
||||
unit.unitTypeVariantSlug
|
||||
)
|
||||
? "studio"
|
||||
: unit.unitTypeVariantSlug
|
||||
}.mp4`}
|
||||
/>
|
||||
)
|
||||
}
|
||||
@@ -320,7 +551,8 @@ function UnitPage() {
|
||||
Video tour
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { ComplexName } from "./ComplexName";
|
||||
|
||||
export interface Unit {
|
||||
id: string;
|
||||
unitNo: string;
|
||||
project: string;
|
||||
projectSlug: string;
|
||||
projectSlug: ComplexName;
|
||||
floor: number;
|
||||
unitType: string;
|
||||
unitView: string;
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
import { Unit } from "../types/IUnit";
|
||||
import { FloorPlanMasks } from "../types/FloorPlanMasks";
|
||||
|
||||
/** HQ lounge uses suffix 00 (e.g. floor 5 → unitNo "500"). */
|
||||
export function isHqLoungeUnitNo(unitNo: string): boolean {
|
||||
return /^\d+00$/.test(unitNo) && parseInt(unitNo.slice(0, -2), 10) >= 1;
|
||||
}
|
||||
|
||||
export function createHqLoungeVirtualUnit(floor: number, unitNo: string): Unit {
|
||||
return {
|
||||
id: `hq-lounge-${unitNo}`,
|
||||
unitNo,
|
||||
project: "HQ by Rove",
|
||||
projectSlug: "hq",
|
||||
floor,
|
||||
unitType: "Lounge",
|
||||
unitView: "",
|
||||
state: "",
|
||||
noOfBathrooms: 0,
|
||||
suitsArea: 0,
|
||||
squareFt: 0,
|
||||
noOfParkingSpace: 0,
|
||||
salesPrice: 0,
|
||||
balconyArea: 0,
|
||||
unitTypeVariantSlug: "",
|
||||
isLoft: false,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Masks may define Lounge zones (e.g. key "00") that are not returned by the API.
|
||||
* Adds a synthetic unit so hover/click work; unitNo is `${floor}${maskKey}` (e.g. 5 + "00" → "500").
|
||||
*/
|
||||
export function mergeHqLoungeVirtualUnits(
|
||||
units: Unit[],
|
||||
floor: number,
|
||||
masks: FloorPlanMasks,
|
||||
getMaskKey: (unitNo: string) => string
|
||||
): Unit[] {
|
||||
const seen = new Set(units.map((u) => u.unitNo));
|
||||
const extra: Unit[] = [];
|
||||
|
||||
for (const [maskKey, maskData] of masks) {
|
||||
if (maskData.formattedUnitType !== "Lounge") continue;
|
||||
|
||||
const unitNo = `${floor}${maskKey}`;
|
||||
if (getMaskKey(unitNo) !== maskKey) continue;
|
||||
if (seen.has(unitNo)) continue;
|
||||
|
||||
seen.add(unitNo);
|
||||
extra.push(createHqLoungeVirtualUnit(floor, unitNo));
|
||||
}
|
||||
|
||||
return extra.length ? [...units, ...extra] : units;
|
||||
}
|
||||