diff --git a/.gitignore b/.gitignore index 15bf7bc..a9c1391 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ dist dist-ssr dist.zip *.local +.env +*.env public/virtual-tours diff --git a/index.html b/index.html index d06d2f6..28980ce 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Rove Home + IRTH projects
diff --git a/public/images/floor-plans/hq/floor-plan_17_21_25.jpg b/public/images/floor-plans/hq/floor-plan_17_21_25.jpg index ec11fa6..8a685c0 100644 Binary files a/public/images/floor-plans/hq/floor-plan_17_21_25.jpg and b/public/images/floor-plans/hq/floor-plan_17_21_25.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_18_22_26.jpg b/public/images/floor-plans/hq/floor-plan_18_22_26.jpg index d6e1a29..b17bdb8 100644 Binary files a/public/images/floor-plans/hq/floor-plan_18_22_26.jpg and b/public/images/floor-plans/hq/floor-plan_18_22_26.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_19_23_27_1.jpg b/public/images/floor-plans/hq/floor-plan_19_23_27_1.jpg new file mode 100644 index 0000000..8c892e6 Binary files /dev/null and b/public/images/floor-plans/hq/floor-plan_19_23_27_1.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_19_23_27_2.jpg b/public/images/floor-plans/hq/floor-plan_19_23_27_2.jpg new file mode 100644 index 0000000..f2925e0 Binary files /dev/null and b/public/images/floor-plans/hq/floor-plan_19_23_27_2.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_20_24_28_1.jpg b/public/images/floor-plans/hq/floor-plan_20_24_28_1.jpg new file mode 100644 index 0000000..c6f5521 Binary files /dev/null and b/public/images/floor-plans/hq/floor-plan_20_24_28_1.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_20_24_28_2.jpg b/public/images/floor-plans/hq/floor-plan_20_24_28_2.jpg new file mode 100644 index 0000000..d6802d8 Binary files /dev/null and b/public/images/floor-plans/hq/floor-plan_20_24_28_2.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_29-30.jpg b/public/images/floor-plans/hq/floor-plan_29-30.jpg deleted file mode 100644 index 30d9ae1..0000000 Binary files a/public/images/floor-plans/hq/floor-plan_29-30.jpg and /dev/null differ diff --git a/public/images/floor-plans/hq/floor-plan_29-30_lower.jpg b/public/images/floor-plans/hq/floor-plan_29-30_lower.jpg new file mode 100644 index 0000000..8d0168f Binary files /dev/null and b/public/images/floor-plans/hq/floor-plan_29-30_lower.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_29-30_upper.jpg b/public/images/floor-plans/hq/floor-plan_29-30_upper.jpg new file mode 100644 index 0000000..ee32909 Binary files /dev/null and b/public/images/floor-plans/hq/floor-plan_29-30_upper.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_5_9_13.jpg b/public/images/floor-plans/hq/floor-plan_5_9_13.jpg index b062679..2703bf4 100644 Binary files a/public/images/floor-plans/hq/floor-plan_5_9_13.jpg and b/public/images/floor-plans/hq/floor-plan_5_9_13.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_6_10_14.jpg b/public/images/floor-plans/hq/floor-plan_6_10_14.jpg index 370b844..fe165df 100644 Binary files a/public/images/floor-plans/hq/floor-plan_6_10_14.jpg and b/public/images/floor-plans/hq/floor-plan_6_10_14.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_7_11.jpg b/public/images/floor-plans/hq/floor-plan_7_11.jpg index 36004b8..5e45470 100644 Binary files a/public/images/floor-plans/hq/floor-plan_7_11.jpg and b/public/images/floor-plans/hq/floor-plan_7_11.jpg differ diff --git a/public/images/floor-plans/hq/floor-plan_8_12.jpg b/public/images/floor-plans/hq/floor-plan_8_12.jpg index 6e55f96..4046def 100644 Binary files a/public/images/floor-plans/hq/floor-plan_8_12.jpg and b/public/images/floor-plans/hq/floor-plan_8_12.jpg differ diff --git a/public/images/interiors/hq/deluxe/1.jpg b/public/images/interiors/hq/deluxe/1.jpg new file mode 100644 index 0000000..1e55bce Binary files /dev/null and b/public/images/interiors/hq/deluxe/1.jpg differ diff --git a/public/images/interiors/hq/deluxe/2.jpg b/public/images/interiors/hq/deluxe/2.jpg new file mode 100644 index 0000000..d100e40 Binary files /dev/null and b/public/images/interiors/hq/deluxe/2.jpg differ diff --git a/public/images/interiors/hq/deluxe/3.jpg b/public/images/interiors/hq/deluxe/3.jpg new file mode 100644 index 0000000..cf7cc71 Binary files /dev/null and b/public/images/interiors/hq/deluxe/3.jpg differ diff --git a/public/images/interiors/hq/executive/1.jpg b/public/images/interiors/hq/executive/1.jpg new file mode 100644 index 0000000..f87d382 Binary files /dev/null and b/public/images/interiors/hq/executive/1.jpg differ diff --git a/public/images/interiors/hq/executive/2.jpg b/public/images/interiors/hq/executive/2.jpg new file mode 100644 index 0000000..e2a71b4 Binary files /dev/null and b/public/images/interiors/hq/executive/2.jpg differ diff --git a/public/images/interiors/hq/executive/3.jpg b/public/images/interiors/hq/executive/3.jpg new file mode 100644 index 0000000..0f0cdd9 Binary files /dev/null and b/public/images/interiors/hq/executive/3.jpg differ diff --git a/public/images/interiors/hq/lounge/1.jpg b/public/images/interiors/hq/lounge/1.jpg new file mode 100644 index 0000000..d6b2511 Binary files /dev/null and b/public/images/interiors/hq/lounge/1.jpg differ diff --git a/public/images/interiors/hq/lounge/2.jpg b/public/images/interiors/hq/lounge/2.jpg new file mode 100644 index 0000000..6d98972 Binary files /dev/null and b/public/images/interiors/hq/lounge/2.jpg differ diff --git a/public/images/interiors/hq/lounge/3.jpg b/public/images/interiors/hq/lounge/3.jpg new file mode 100644 index 0000000..66490a0 Binary files /dev/null and b/public/images/interiors/hq/lounge/3.jpg differ diff --git a/public/images/unit-types/hq/deluxe.jpg b/public/images/unit-types/hq/deluxe.jpg new file mode 100644 index 0000000..afcdaee Binary files /dev/null and b/public/images/unit-types/hq/deluxe.jpg differ diff --git a/public/images/unit-types/hq/executive.jpg b/public/images/unit-types/hq/executive.jpg new file mode 100644 index 0000000..cd4fae9 Binary files /dev/null and b/public/images/unit-types/hq/executive.jpg differ diff --git a/public/images/unit-types/hq/lounge.jpg b/public/images/unit-types/hq/lounge.jpg new file mode 100644 index 0000000..a8aec2b Binary files /dev/null and b/public/images/unit-types/hq/lounge.jpg differ diff --git a/public/videos/hq/arcade.mp4 b/public/videos/hq/arcade.mp4 new file mode 100644 index 0000000..b0cc537 Binary files /dev/null and b/public/videos/hq/arcade.mp4 differ diff --git a/public/videos/hq/ground.mp4 b/public/videos/hq/ground.mp4 index 5516911..d556d92 100644 Binary files a/public/videos/hq/ground.mp4 and b/public/videos/hq/ground.mp4 differ diff --git a/public/videos/hq/lounge.mp4 b/public/videos/hq/lounge.mp4 new file mode 100644 index 0000000..4566dd1 Binary files /dev/null and b/public/videos/hq/lounge.mp4 differ diff --git a/public/videos/hq/podium.mp4 b/public/videos/hq/podium.mp4 index 4165db6..b5421bf 100644 Binary files a/public/videos/hq/podium.mp4 and b/public/videos/hq/podium.mp4 differ diff --git a/public/videos/hq/reset16.mp4 b/public/videos/hq/reset16.mp4 index 279c99e..84f6e24 100644 Binary files a/public/videos/hq/reset16.mp4 and b/public/videos/hq/reset16.mp4 differ diff --git a/public/videos/unit-types/hq/studio.mp4 b/public/videos/unit-types/hq/studio.mp4 index 7961c30..aee7787 100644 Binary files a/public/videos/unit-types/hq/studio.mp4 and b/public/videos/unit-types/hq/studio.mp4 differ diff --git a/src/components/DocumentTitle.tsx b/src/components/DocumentTitle.tsx new file mode 100644 index 0000000..bc20b7e --- /dev/null +++ b/src/components/DocumentTitle.tsx @@ -0,0 +1,37 @@ +import { useEffect } from "react"; +import { useLocation, useParams } from "react-router"; + +const TITLES: Record = { + "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; diff --git a/src/components/FloorPopup.tsx b/src/components/FloorPopup.tsx index 8a40ef1..88fe30b 100644 --- a/src/components/FloorPopup.tsx +++ b/src/components/FloorPopup.tsx @@ -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 (
@@ -43,21 +41,23 @@ function FloorPopup({ title, complexName, data, onSelect }: FloorPopupProps) { )}
-

- {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`} -

+ {(data || amenitiesCount) && ( +

+ {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`} +

+ )} {!amenitiesCount && (
@@ -68,50 +68,52 @@ function FloorPopup({ title, complexName, data, onSelect }: FloorPopupProps) { )}
{((amenitiesCount?.indoor && amenitiesCount?.outdoor) || - !amenitiesCount) && ( -
+ !amenitiesCount) && + data &&
} + {data && ( +
+ {!amenitiesCount ? ( + Object.entries( + data[ + title.split(" ")[0] === "East" + ? "East" + : title.split(" ")[0] === "West" + ? "West" + : "others" + ].types + ).map(([unitType, count]) => ( +
+

+ {count} +

+

+ {formattedUnitTypes.get(unitType) || unitType} +

+
+ )) + ) : ( + <> + {amenitiesCount?.indoor && ( +
+

+ {amenitiesCount.indoor} +

+

Indoor Amenities

+
+ )} + {amenitiesCount?.outdoor && ( +
+

+ {amenitiesCount.outdoor} +

+

Outdoor Amenities

+
+ )} + + )} +
)} -
- {!amenitiesCount && data ? ( - Object.entries( - data[ - title.split(" ")[0] === "East" - ? "East" - : title.split(" ")[0] === "West" - ? "West" - : "others" - ].types - ).map(([unitType, count]) => ( -
-

- {count} -

-

- {formattedUnitTypes.get(unitType) || unitType} -

-
- )) - ) : ( - <> - {amenitiesCount?.indoor && ( -
-

- {amenitiesCount.indoor} -

-

Indoor Amenities

-
- )} - {amenitiesCount?.outdoor && ( -
-

- {amenitiesCount.outdoor} -

-

Outdoor Amenities

-
- )} - - )} -
+
diff --git a/src/components/Header.tsx b/src/components/Header.tsx index b164c6f..2d911cd 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -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 ( <> -
+
-

Dubai

+

Dubai

@@ -68,7 +74,11 @@ function Header() {
{/* */}
- setOpened(false)} menuRef={menuRef} /> + setOpened(false)} + menuRef={menuRef} + /> ); } diff --git a/src/components/InteriorSlider.tsx b/src/components/InteriorSlider.tsx index f047ea7..2bae9fa 100644 --- a/src/components/InteriorSlider.tsx +++ b/src/components/InteriorSlider.tsx @@ -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) { ))} diff --git a/src/components/ModalContainer.tsx b/src/components/ModalContainer.tsx index 1603d44..ff1a8dd 100644 --- a/src/components/ModalContainer.tsx +++ b/src/components/ModalContainer.tsx @@ -61,10 +61,7 @@ function ModalContainer() { className="absolute inset-0 cursor-pointer" onClick={() => setModal(null)} /> -
+
{modal} + +
+ )} + + {/* HQ: 19-23-27 floor toggle (kostyl ebuchii) */} + {complexName === "hq" && [19, 23, 27].includes(floor.floorNumber) && ( +
+ + +
+ )} + {/* ── Floor plan ──────────────────────────────────── */}
@@ -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 ( ); diff --git a/src/constants/floor-ranges.ts b/src/constants/floor-ranges.ts index 94cd593..51601e9 100644 --- a/src/constants/floor-ranges.ts +++ b/src/constants/floor-ranges.ts @@ -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", +]; diff --git a/src/data/complex-config.ts b/src/data/complex-config.ts index feb5e8b..3d32fed 100644 --- a/src/data/complex-config.ts +++ b/src/data/complex-config.ts @@ -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 ); diff --git a/src/data/floor-plan-config.ts b/src/data/floor-plan-config.ts index 7432feb..766830d 100644 --- a/src/data/floor-plan-config.ts +++ b/src/data/floor-plan-config.ts @@ -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, }); } diff --git a/src/data/floor-plan-masks/hq_17_21_25.ts b/src/data/floor-plan-masks/hq_17_21_25.ts index 9512bd1..ad66095 100644 --- a/src/data/floor-plan-masks/hq_17_21_25.ts +++ b/src/data/floor-plan-masks/hq_17_21_25.ts @@ -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", }, ], [ diff --git a/src/data/floor-plan-masks/hq_18_22_26.ts b/src/data/floor-plan-masks/hq_18_22_26.ts index 0128afd..b393c66 100644 --- a/src/data/floor-plan-masks/hq_18_22_26.ts +++ b/src/data/floor-plan-masks/hq_18_22_26.ts @@ -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", }, ], [ diff --git a/src/data/floor-plan-masks/hq_19_23_27_1.ts b/src/data/floor-plan-masks/hq_19_23_27_1.ts new file mode 100644 index 0000000..d3c65ba --- /dev/null +++ b/src/data/floor-plan-masks/hq_19_23_27_1.ts @@ -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], + }, + ], +]); diff --git a/src/data/floor-plan-masks/hq_19_23_27_1_upper.ts b/src/data/floor-plan-masks/hq_19_23_27_1_upper.ts new file mode 100644 index 0000000..ef0bc7e --- /dev/null +++ b/src/data/floor-plan-masks/hq_19_23_27_1_upper.ts @@ -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], + }, + ], +]); diff --git a/src/data/floor-plan-masks/hq_19_23_27_2.ts b/src/data/floor-plan-masks/hq_19_23_27_2.ts new file mode 100644 index 0000000..81c3c54 --- /dev/null +++ b/src/data/floor-plan-masks/hq_19_23_27_2.ts @@ -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], + }, + ], +]); diff --git a/src/data/floor-plan-masks/hq_19_23_27_2_upper.ts b/src/data/floor-plan-masks/hq_19_23_27_2_upper.ts new file mode 100644 index 0000000..c0d0834 --- /dev/null +++ b/src/data/floor-plan-masks/hq_19_23_27_2_upper.ts @@ -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], + }, + ], +]); diff --git a/src/data/floor-plan-masks/hq_29_30.ts b/src/data/floor-plan-masks/hq_29_30_lower.ts similarity index 98% rename from src/data/floor-plan-masks/hq_29_30.ts rename to src/data/floor-plan-masks/hq_29_30_lower.ts index 76c1c04..4e60d52 100644 --- a/src/data/floor-plan-masks/hq_29_30.ts +++ b/src/data/floor-plan-masks/hq_29_30_lower.ts @@ -1,6 +1,6 @@ import { FloorPlanMasks } from "../../types/FloorPlanMasks"; -export const hq29_30Masks: FloorPlanMasks = new Map([ +export const hq29_30MasksLower: FloorPlanMasks = new Map([ [ "05", { diff --git a/src/data/floor-plan-masks/hq_29_30_upper.ts b/src/data/floor-plan-masks/hq_29_30_upper.ts new file mode 100644 index 0000000..d9242dd --- /dev/null +++ b/src/data/floor-plan-masks/hq_29_30_upper.ts @@ -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", + }, + ], +]); diff --git a/src/data/floor-plan-masks/hq_5_9_13.ts b/src/data/floor-plan-masks/hq_5_9_13.ts index 96cd6db..587a792 100644 --- a/src/data/floor-plan-masks/hq_5_9_13.ts +++ b/src/data/floor-plan-masks/hq_5_9_13.ts @@ -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", }, ], [ diff --git a/src/data/floor-plan-masks/hq_6_10_14.ts b/src/data/floor-plan-masks/hq_6_10_14.ts index 789c282..1d7ebe6 100644 --- a/src/data/floor-plan-masks/hq_6_10_14.ts +++ b/src/data/floor-plan-masks/hq_6_10_14.ts @@ -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", }, ], [ diff --git a/src/data/floor-plan-masks/hq_7_11.ts b/src/data/floor-plan-masks/hq_7_11.ts index 80b82c5..dbc45fd 100644 --- a/src/data/floor-plan-masks/hq_7_11.ts +++ b/src/data/floor-plan-masks/hq_7_11.ts @@ -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", }, ], ]); diff --git a/src/data/floor-plan-masks/hq_8_12.ts b/src/data/floor-plan-masks/hq_8_12.ts index d03d508..f1e90ce 100644 --- a/src/data/floor-plan-masks/hq_8_12.ts +++ b/src/data/floor-plan-masks/hq_8_12.ts @@ -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", }, ], ]); diff --git a/src/data/floors/hq.ts b/src/data/floors/hq.ts index 8cffd20..b0f628b 100644 --- a/src/data/floors/hq.ts +++ b/src/data/floors/hq.ts @@ -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}`, diff --git a/src/data/hq192327mockUnits.ts b/src/data/hq192327mockUnits.ts new file mode 100644 index 0000000..01d98a3 --- /dev/null +++ b/src/data/hq192327mockUnits.ts @@ -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; +} diff --git a/src/data/masks.ts b/src/data/masks.ts index 5f76263..a99b9d4 100644 --- a/src/data/masks.ts +++ b/src/data/masks.ts @@ -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", - // }, ], }, }; diff --git a/src/data/projects.ts b/src/data/projects.ts index 8982fd2..1aa0aa0 100644 --- a/src/data/projects.ts +++ b/src/data/projects.ts @@ -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: [ diff --git a/src/layout/DefaultLayout.tsx b/src/layout/DefaultLayout.tsx index 0bd83bd..e8fa085 100644 --- a/src/layout/DefaultLayout.tsx +++ b/src/layout/DefaultLayout.tsx @@ -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 ( -
-
-
- + <> + +
+
+
+ +
+
-
-
+ ); } diff --git a/src/layout/LayoutWithoutFooter.tsx b/src/layout/LayoutWithoutFooter.tsx index 21a18ae..a8a7883 100644 --- a/src/layout/LayoutWithoutFooter.tsx +++ b/src/layout/LayoutWithoutFooter.tsx @@ -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 ( + <> +
+ ); } diff --git a/src/pages/FloorsPage.tsx b/src/pages/FloorsPage.tsx index 0a07278..67169ae 100644 --- a/src/pages/FloorsPage.tsx +++ b/src/pages/FloorsPage.tsx @@ -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(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(), + api.get(`units/get-floors-data/${complexName}`).json(), }); const { data: unitsOnFloor } = useQuery({ @@ -44,7 +40,7 @@ function FloorsPage() { complexName === "marasi-drive" ? `&wing=${selectedFloor?.split(" ")[0]}` : "" - }`, + }` ) .json(), }); diff --git a/src/pages/TestPage.tsx b/src/pages/TestPage.tsx deleted file mode 100644 index 603270b..0000000 --- a/src/pages/TestPage.tsx +++ /dev/null @@ -1,353 +0,0 @@ -function TestPage() { - return ( -
-
- 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? -
-
-
-
-

- 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! -

-
-
-
-
- ); -} - -export default TestPage; diff --git a/src/pages/UnitPage.tsx b/src/pages/UnitPage.tsx index 102321a..83a25a8 100644 --- a/src/pages/UnitPage.tsx +++ b/src/pages/UnitPage.tsx @@ -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(), }); + 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
Loading...
; - useEffect(() => { - document.title = displayUnitType; - return () => { - document.title = "Rove Home"; - }; - }, [displayUnitType]); + if (!unit) + return ( +
+
+ + + + + + + {innerWidth >= 768 ? ( + + + + ) : ( + mockInteriors.map((interior, index) => ( + + + + )) + )} + +
+
+ {/*
*/} +
+
+

+ {params.unitNumber?.endsWith("F") + ? "Full floor" + : "Simplex office"} +

+
+

HQ by Rove

+
+

+ Floor {params.unitNumber?.slice(0, 2)} +

+
+
+
+
+ +
+
+ {/*
*/} +
+
+ ); - if (!unit) return null; + if (unit.unitType === "Lounge" && unit.projectSlug === "hq") { + return ( +
+
+ + + + + + + + + + {innerWidth >= 768 ? ( + + + + ) : ( + HQ_LOUNGE_INTERIOR_IMAGES.map((src, index) => ( + + + + )) + )} + + +
+
+
+
+

Lounge

+
+

HQ by Rove

+

Floor {unit.floor}

+
+
+ +
+ +
+
+ ); + } 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 ( -
-
- - {unit.isLoft ? ( - <> - - - - - - - - ) : ( - - - - )} - - - - - - {innerWidth >= 768 ? ( - - - - ) : ( - unitType?.interiors.map((interior, index) => ( - - - - )) - )} - +
+
{unit.projectSlug === "hq" && - [ - "loft-edge", - "penthouse-loft", - "presidential-loft", - "studio", - ].includes(unit.unitTypeVariantSlug) && ( - - )} + + )) + )} + + ) : ( + + {unit.isLoft ? ( + <> + + + + + + + + ) : params.complexName === "hq" && + params.unitNumber?.endsWith("01") ? ( + <> + ) : ( + + + + )} + + + + + + {innerWidth >= 768 ? ( + + + + ) : ( + unitType?.interiors.map((interior, index) => ( + + + + )) + )} + + )} + + {videoTourAvailable && ( + + )}
@@ -169,7 +402,7 @@ function UnitPage() {

{unit.project}

-
+
{unit.wing && ( <>

{unit.wing}

@@ -218,7 +451,7 @@ function UnitPage() {
)} -
+

Total Area

{unit.squareFt.toFixed(2)} Sqft

@@ -275,36 +508,28 @@ function UnitPage() { Book
*/} -
- {projects - .find((project) => project.slug === params.complexName) - ?.types.find((type) => type.slug === unit.unitTypeVariantSlug) - ?.tourAvailable && ( - - )} - {/* + )} + {/* */} - {/* videos for hq units */} - {unit.projectSlug === "hq" && - [ - "loft-edge", - "penthouse-loft", - "presidential-loft", - "studio", - ].includes(unit.unitTypeVariantSlug) && ( + {/* videos for hq units */} + {videoTourAvailable && ( )} -
+
+ )}
); diff --git a/src/types/IUnit.ts b/src/types/IUnit.ts index eb7a819..3282ca6 100644 --- a/src/types/IUnit.ts +++ b/src/types/IUnit.ts @@ -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; diff --git a/src/utils/hqLoungeVirtualUnits.ts b/src/utils/hqLoungeVirtualUnits.ts new file mode 100644 index 0000000..bc6aa8d --- /dev/null +++ b/src/utils/hqLoungeVirtualUnits.ts @@ -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; +}