starting map

This commit is contained in:
2024-01-29 18:01:22 +05:00
parent 5c20268ecf
commit 888d965a5b
25 changed files with 483 additions and 52 deletions
+1
View File
@@ -10,6 +10,7 @@
"preview": "vite preview"
},
"dependencies": {
"@arcgis/core": "^4.28.10",
"react": "^18.2.0",
"react-device-detect": "^2.2.3",
"react-dom": "^18.2.0",
+9 -2
View File
@@ -1,10 +1,17 @@
import { isMobile } from "react-device-detect";
import "./App.css";
import Desktop from "./pages/Desktop/Desktop";
import Apartment from "./pages/Mobile/Apartment";
import { isMobile } from "react-device-detect";
import MapComponent from "./components/Map";
function App() {
return <>{isMobile ? <Apartment /> : <Desktop />}</>;
// return <>{isMobile ? <Apartment /> : <Desktop />}</>;
return (
<>
<MapComponent />
</>
);
}
export default App;
+1 -1
View File
@@ -7,7 +7,7 @@ type HelpButtonProps = {
const HelpButton = ({ handleOnHelpClick }: HelpButtonProps) => {
return (
<button
className="bg-white border-[#C7BDBA] p-[6px] rounded-full"
className="bg-white border-[#C7BDBA] p-[6px] rounded-full h-8 w-8"
onClick={handleOnHelpClick}
>
<HelpIcon />
+56
View File
@@ -0,0 +1,56 @@
import Color from "@arcgis/core/Color";
import { useRef, useEffect } from "react";
import Graphic from "@arcgis/core/Graphic";
import Mesh from "@arcgis/core/geometry/Mesh";
import Point from "@arcgis/core/geometry/Point";
import MapView from "@arcgis/core/views/MapView";
import Map from "@arcgis/core/Map";
const MapComponent = () => {
const mapRef = useRef(null);
const point = new Point({
longitude: 55,
latitude: 25,
});
const mesh = Mesh.createBox(point, {
size: {
width: 100,
height: 50,
depth: 50,
},
});
const markerSymbol = {
type: "simple-marker",
color: [226, 119, 40],
};
const pointGraphic = new Graphic({
geometry: mesh,
symbol: markerSymbol,
});
useEffect(() => {
if (!mapRef?.current) return;
const map = new Map({
basemap: "osm",
});
const view = new MapView({
map: map,
container: mapRef.current,
center: [55, 25],
zoom: 13,
});
view.graphics.add(pointGraphic);
return () => view && view.destroy();
}, []);
return <div ref={mapRef} className="w-[500px] h-[500px] bg-slate-50"></div>;
};
export default MapComponent;
+1 -1
View File
@@ -7,7 +7,7 @@ type ResizeButtonProps = {
const ResizeButton = ({ handleOnHelpClick }: ResizeButtonProps) => {
return (
<button
className="bg-white border-[#C7BDBA] p-[6px] rounded-full"
className="bg-white border-[#C7BDBA] p-[6px] rounded-full w-8 h-8"
onClick={handleOnHelpClick}
>
<ResizeIcon />
@@ -1,5 +1,4 @@
import { useState } from "react";
import useStore from "../../../store/store";
import useStore from "../store/store";
type ViewSwitcherProps = {
offset?: number;
@@ -7,25 +6,24 @@ type ViewSwitcherProps = {
};
const ViewToggle = ({ offset, isDesktop }: ViewSwitcherProps) => {
const [selectedViewId, setSelectedViewId] = useState(1);
const { sendMessageToUnity } = useStore();
const { sendMessageToUnity, setCurrentView, currentView } = useStore();
const handleOnFirstClick = () => {
setSelectedViewId(1);
setCurrentView(1);
if (sendMessageToUnity) {
sendMessageToUnity("LevelSwitcher", "LoadSceneSingle", "Outdoor/A1");
}
};
const handleOnSecondClick = () => {
setSelectedViewId(2);
setCurrentView(2);
if (sendMessageToUnity) {
sendMessageToUnity("LevelSwitcher", "LoadSceneSingle", "Indoor/A1F1");
}
};
const handleOnThirdClick = () => {
setSelectedViewId(3);
setCurrentView(3);
if (sendMessageToUnity) {
sendMessageToUnity("LevelSwitcher", "LoadSceneSingle", "Indoor/A1F2");
}
@@ -38,7 +36,9 @@ const ViewToggle = ({ offset, isDesktop }: ViewSwitcherProps) => {
} h-9 px-6 `}
>
<div
className={`even bg-white rounded-[32px] flex text-sm justify-center w-fit border-2 transition-all duration-300 ease-in-out select-none cursor-pointer`}
className={`${
isDesktop ? "" : "border-2"
} even bg-white rounded-[32px] flex text-sm justify-center w-fit transition-all duration-300 ease-in-out select-none cursor-pointer`}
style={{
opacity: offset ? offset : 1,
pointerEvents: `${offset === 0 ? "none" : "auto"}`,
@@ -47,7 +47,7 @@ const ViewToggle = ({ offset, isDesktop }: ViewSwitcherProps) => {
<div
onClick={handleOnFirstClick}
className={`${
selectedViewId === 1 ? "bg-black text-white" : ""
currentView === 1 ? "bg-black text-white" : ""
} py-2 px-4 w-fit rounded-[32px] `}
>
{" "}
@@ -56,7 +56,7 @@ const ViewToggle = ({ offset, isDesktop }: ViewSwitcherProps) => {
<div
onClick={handleOnSecondClick}
className={`${
selectedViewId === 2 ? "bg-black text-white" : ""
currentView === 2 ? "bg-black text-white" : ""
} py-2 px-4 w-fit rounded-[32px] `}
>
{" "}
@@ -65,7 +65,7 @@ const ViewToggle = ({ offset, isDesktop }: ViewSwitcherProps) => {
<div
onClick={handleOnThirdClick}
className={`${
selectedViewId === 3 ? "bg-black text-white" : ""
currentView === 3 ? "bg-black text-white" : ""
} py-2 px-4 w-fit rounded-[32px] `}
>
{" "}
@@ -1,13 +1,12 @@
import HelpButton from "../../components/HelpButton";
import ResizeButton from "../../components/ResizeButton";
import ViewToggle from "../../components/mobile/Appartment/ViewToggle";
import HelpButton from "../HelpButton";
import ResizeButton from "../ResizeButton";
import ViewToggle from "../ViewToggle";
const ButtonPanel = () => {
return (
<div className="absolute top-0 w-full p-4 flex justify-between">
<div className="absolute top-0 w-full p-4 flex justify-between h-10">
<div />
<ViewToggle isDesktop />
{/* <div /> */}
<div className="flex gap-2 w-fit">
<HelpButton
handleOnHelpClick={function (): void {
+19
View File
@@ -0,0 +1,19 @@
import ImagesIcon from "../../icons/ImagesIcon";
type ImagesButtonProps = {
onClick: () => void;
};
const ImagesButton = ({ onClick }: ImagesButtonProps) => {
return (
<button
onClick={onClick}
className="bg-white py-[6px] pr-5 pl-4 rounded-full border-[#C7BDBA] flex gap-1"
>
<ImagesIcon />
Images
</button>
);
};
export default ImagesButton;
+19
View File
@@ -0,0 +1,19 @@
import LayoutIcon from "../../icons/LayoutIcon";
type LayoutButtonProps = {
onClick: () => void;
};
const LayoutButton = ({ onClick }: LayoutButtonProps) => {
return (
<button
onClick={onClick}
className="bg-white py-[6px] pr-5 pl-4 rounded-full border-[#C7BDBA] flex gap-1"
>
<LayoutIcon />
Layout
</button>
);
};
export default LayoutButton;
@@ -0,0 +1,23 @@
import ImagesButton from "./ImagesButton";
import LayoutButton from "./LayoutButton";
const LayoutsButtonContainer = () => {
return (
<div className="absolute w-full bottom-0 flex justify-end py-5">
<div className=" flex gap-2 items-center px-4 font-medium text-sm text-[#050409]">
<LayoutButton
onClick={function (): void {
throw new Error("Function not implemented.");
}}
/>
<ImagesButton
onClick={function (): void {
throw new Error("Function not implemented.");
}}
/>
</div>
</div>
);
};
export default LayoutsButtonContainer;
@@ -0,0 +1,37 @@
import { Parameters } from "../../types/appartment";
type ParameterDescriptionProps = {
params: Parameters;
};
const ParameterDescription = ({ params }: ParameterDescriptionProps) => {
return (
<div className="flex py-6 gap-6 items-center justify-center border">
<h2 className="text-[#050409] font-medium text-2xl">{params.type}</h2>
<div className="h-8 bg-[#DDD7D6] w-[1px]" />
<div className="flex flex-col">
<div className="flex gap-4 justify-between">
<div className="text-[#666668]">Villa Theme</div>
<div>{params.villaTheme}</div>
</div>
<div className="flex gap-4">
<div className="text-[#666668]">Total no. of Bedrooms</div>
<div>{params.totalCountBedroms}</div>
</div>
</div>
<div className="h-8 bg-[#DDD7D6] w-[1px]" />
<div className="flex flex-col">
<div className="flex gap-4 justify-between">
<div className="text-[#666668]">Plot area</div>
<div>{params.plotArea}</div>
</div>
<div className="flex gap-4">
<div className="text-[#666668]">Total Build up Area</div>
<div>{params.totalBuildUpArea}</div>
</div>
</div>
</div>
);
};
export default ParameterDescription;
@@ -0,0 +1,14 @@
import BackIcon from "../../../icons/BackIcon";
const BackButton = () => {
return (
<button className="flex w-fit items-center gap-1 py-[6px] pl-2 pr-4 bg-white rounded-full text-sm font-medium border border-[#C7BDBA]">
<div className="w-5 h-5 flex items-center justify-center">
<BackIcon className="w-[5px] h-[10px]" />
</div>
Back
</button>
);
};
export default BackButton;
@@ -1,9 +1,8 @@
import BackIcon from "../../../icons/BackIcon";
import HelpIcon from "../../../icons/HelpIcon";
import useStore from "../../../store/store";
import PopupModal from "./PopupModal";
import HelpPanel from "./HelpPanel";
import HelpButton from "../../HelpButton";
import BackButton from "./BackButton";
const ButtonPanel = () => {
const { setModal, setPanel } = useStore();
@@ -17,19 +16,8 @@ const ButtonPanel = () => {
<>
{
<div className="flex w-full absolute p-4 justify-between top-0 left-0">
<button className="flex w-fit items-center gap-1 py-[6px] pl-2 pr-4 bg-white rounded-full text-sm font-medium border border-[#C7BDBA]">
<div className="w-5 h-5 flex items-center justify-center">
<BackIcon className="w-[5px] h-[10px]" />
</div>
Back
</button>
<BackButton />
<HelpButton handleOnHelpClick={handleOnHelpClick} />
{/* <button
className="bg-white border-[#C7BDBA] p-[6px] rounded-full"
onClick={handleOnHelpClick}
>
<HelpIcon />
</button> */}
</div>
}
</>
@@ -2,11 +2,11 @@ import { useState } from "react";
import { useSwipeable } from "react-swipeable";
import { SliderType } from "../../../types/appartment";
type SliderProps = {
type LayoutSliderProps = {
sliders: SliderType[];
};
const Slider = ({ sliders }: SliderProps) => {
const LayoutSlider = ({ sliders }: LayoutSliderProps) => {
const [offset, setOffset] = useState(0);
const handleOnRight = () => {
@@ -74,4 +74,4 @@ const Slider = ({ sliders }: SliderProps) => {
);
};
export default Slider;
export default LayoutSlider;
@@ -32,7 +32,7 @@ const Parameters = ({ parameters }: ParametersProps) => {
Total no. of Bedrooms
</div>
<div className="w-1/2 text-sm font-medium">
{parameters.TotalCountBedroms}
{parameters.totalCountBedroms}
</div>
</div>
<div className="flex justify-between gap-4">
@@ -3,9 +3,11 @@ import { SwipeEventData, useSwipeable } from "react-swipeable";
import ButtonSwipperIcon from "../../../icons/ButtonSwipperIcon";
import { Parameters as ParametersType } from "../../../types/appartment";
import Parameters from "./Parameters";
import Slider from "./Slider";
// import LayoutSlider from "./LayoutSlider";
// import LayoutSlider from "./ImageSlider";
import LayoutSlider from "./LayoutSlider";
import ImageSlider from "./ImageSlider";
import ViewToggle from "./ViewToggle";
import ViewToggle from "../../ViewToggle";
type ViewControllerModalProps = {
parameters: ParametersType;
@@ -67,7 +69,7 @@ const ViewControllerModal = ({ parameters }: ViewControllerModalProps) => {
className="h-[calc(100vh-110px)] overflow-y-scroll relative"
onScroll={handleOnScroll}
>
<Slider sliders={sliders} />
<LayoutSlider sliders={sliders} />
<Parameters parameters={parameters} />
<ImageSlider parameters={parameters} />
</div>
+2 -2
View File
@@ -1,10 +1,10 @@
import Parameters from "../components/mobile/Appartment/Parameters";
import { Parameters } from "../types/appartment";
const A1MViewParams: Parameters = {
type: "A1M",
plotArea: "1080 Sq.m",
totalBuildUpArea: "472 Sq.m",
TotalCountBedroms: 5,
totalCountBedroms: 5,
villaTheme: "Modern",
sliders: [
{
+27
View File
@@ -0,0 +1,27 @@
const ImagesIcon = () => {
return (
<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M11.3886 13.3334H5.83301L7.74273 8.829L9.7219 11.1711M11.3886 13.3334L9.7219 11.1711M11.3886 13.3334L14.1663 13.3334L11.7358 6.66675L9.7219 11.1711"
stroke="#050409"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M3.33301 5.33325L3.33301 14.6666C3.33301 15.7712 4.22844 16.6666 5.33301 16.6666L12.8568 16.6666L14.6663 16.6666C15.7709 16.6666 16.6663 15.7712 16.6663 14.6666L16.6663 5.33325C16.6663 4.22868 15.7709 3.33325 14.6663 3.33325L5.33301 3.33325C4.22844 3.33325 3.33301 4.22868 3.33301 5.33325Z"
stroke="#050409"
strokeWidth="1.5"
strokeLinejoin="round"
/>
</svg>
);
};
export default ImagesIcon;
+18
View File
@@ -0,0 +1,18 @@
const LayoutIcon = () => {
return (
<svg
width="20"
height="20"
viewBox="0 0 20 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.33301 15.238L4.08301 15.238L3.33301 15.238ZM3.33301 4.76182L2.58301 4.76182V4.76182L3.33301 4.76182ZM16.6663 4.72518L15.9163 4.72518V4.72518L16.6663 4.72518ZM15.9163 16.6666C15.9163 17.0808 16.2521 17.4166 16.6663 17.4166C17.0806 17.4166 17.4163 17.0808 17.4163 16.6666L15.9163 16.6666ZM12.8568 16.6666L12.8568 17.4166C13.271 17.4166 13.6068 17.0808 13.6068 16.6666L12.8568 16.6666ZM4.76158 16.6666L4.76158 17.4166H4.76158L4.76158 16.6666ZM12.8568 12.8571L13.6068 12.8571C13.6068 12.4428 13.271 12.1071 12.8568 12.1071L12.8568 12.8571ZM10.4527 12.1071C10.0385 12.1071 9.70272 12.4428 9.70272 12.8571C9.70272 13.2713 10.0385 13.6071 10.4527 13.6071L10.4527 12.1071ZM4.72489 3.33325L4.72489 4.08325H4.72489L4.72489 3.33325ZM13.333 3.33325L13.333 2.58325L13.333 3.33325ZM15.2378 3.33325L15.2378 4.08325L15.2378 3.33325ZM7.14253 10.4761L7.14253 11.2261C7.55675 11.2261 7.89253 10.8903 7.89253 10.4761L7.14253 10.4761ZM7.89253 7.234C7.89253 6.81979 7.55675 6.484 7.14253 6.484C6.72832 6.484 6.39253 6.81979 6.39253 7.234L7.89253 7.234ZM13.333 8.57135L13.333 9.32135C13.7472 9.32135 14.083 8.98556 14.083 8.57135L13.333 8.57135ZM11.9044 7.82135C11.4902 7.82135 11.1544 8.15713 11.1544 8.57135C11.1544 8.98556 11.4902 9.32135 11.9044 9.32135L11.9044 7.82135ZM4.08301 15.238L4.08301 4.76182L2.58301 4.76182L2.58301 15.238L4.08301 15.238ZM15.9163 4.72518L15.9163 16.6666L17.4163 16.6666L17.4163 4.72518L15.9163 4.72518ZM12.8568 15.9166L4.76158 15.9166L4.76158 17.4166L12.8568 17.4166L12.8568 15.9166ZM13.6068 16.6666L13.6068 12.8571L12.1068 12.8571L12.1068 16.6666L13.6068 16.6666ZM4.72489 4.08325L13.333 4.08325L13.333 2.58325L4.72489 2.58325L4.72489 4.08325ZM13.333 4.08325L15.2378 4.08325L15.2378 2.58325L13.333 2.58325L13.333 4.08325ZM17.4163 4.72518C17.4163 3.49055 16.4212 2.58325 15.2378 2.58325L15.2378 4.08325C15.6444 4.08325 15.9163 4.36968 15.9163 4.72518L17.4163 4.72518ZM4.08301 4.76182C4.08301 4.35513 4.36942 4.08325 4.72489 4.08325L4.72489 2.58325C3.49023 2.58325 2.58301 3.57839 2.58301 4.76182L4.08301 4.76182ZM2.58301 15.238C2.58301 16.4473 3.5523 17.4166 4.76158 17.4166L4.76158 15.9166C4.38073 15.9166 4.08301 15.6189 4.08301 15.238L2.58301 15.238ZM3.33301 11.2261L7.14253 11.2261L7.14253 9.72611L3.33301 9.72611L3.33301 11.2261ZM7.89253 10.4761L7.89253 7.234L6.39253 7.234L6.39253 10.4761L7.89253 10.4761ZM12.8568 12.1071L10.4527 12.1071L10.4527 13.6071L12.8568 13.6071L12.8568 12.1071ZM12.583 3.33325L12.583 8.57135L14.083 8.57135L14.083 3.33325L12.583 3.33325ZM13.333 7.82135L11.9044 7.82135L11.9044 9.32135L13.333 9.32135L13.333 7.82135Z"
fill="#050409"
/>
</svg>
);
};
export default LayoutIcon;
+2 -1
View File
@@ -1,5 +1,6 @@
@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;600&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Noto+Sans:wght@500&display=swap");
@import "https://js.arcgis.com/4.28/@arcgis/core/assets/esri/themes/light/main.css";
@tailwind base;
@tailwind components;
@@ -8,5 +9,5 @@
body {
font-family: "Montserrat", sans-serif;
font-family: "Noto Sans", sans-serif;
background-color: #c7bdba;
background-color: #f3f2f0;
}
+8 -3
View File
@@ -1,9 +1,12 @@
import { Unity, useUnityContext } from "react-unity-webgl";
import useStore from "../../store/store";
import { useEffect } from "react";
import LoaderModal from "../../components/LoaderModal";
import ButtonPanel from "./ButtonPanel";
import { ReactUnityEventParameter } from "react-unity-webgl/distribution/types/react-unity-event-parameters";
import useStore from "../../store/store";
import LoaderModal from "../../components/LoaderModal";
import ButtonPanel from "../../components/desktop/ButtonPanel";
import ParameterDescription from "../../components/desktop/ParameterDescription";
import { A1MViewParams } from "../../consts/viewParams";
import LayoutsButtonContainer from "../../components/desktop/LayoutsButtonContainer";
const Apartment = () => {
const { loader, setLoader, setSendMessageToUnity } = useStore();
@@ -58,7 +61,9 @@ const Apartment = () => {
unityProvider={unityProvider}
style={{ width: "100%", height: "100%" }}
/>
<LayoutsButtonContainer />
</div>
<ParameterDescription params={A1MViewParams} />
</div>
</>
);
+18 -3
View File
@@ -1,22 +1,24 @@
import { useEffect } from "react";
import useStore from "../../store/store";
import { ReactUnityEventParameter } from "react-unity-webgl/distribution/types/react-unity-event-parameters";
import { Unity, useUnityContext } from "react-unity-webgl";
import useStore from "../../store/store";
import LoaderModal from "../../components/LoaderModal";
import ButtonPanel from "../../components/mobile/Appartment/ButtonPanel";
import ViewControllerModal from "../../components/mobile/Appartment/ViewControllerModal";
import { A1MViewParams } from "../../consts/viewParams";
import { ReactUnityEventParameter } from "react-unity-webgl/distribution/types/react-unity-event-parameters";
const Apartment = () => {
const {
modal,
loader,
panel,
setCurrentView,
setModal,
setPanel,
setSendMessageToUnity,
setLoader,
} = useStore();
const {
unityProvider,
isLoaded,
@@ -40,11 +42,17 @@ const Apartment = () => {
}
};
const handleSetView = (view: ReactUnityEventParameter) => {
setCurrentView(view as number);
};
useEffect(() => {
addEventListener("SetLoaded", handleSetLoaded);
addEventListener("SetView", handleSetView);
return () => {
removeEventListener("SetLoaded", handleSetLoaded);
removeEventListener("SetView", handleSetView);
};
}, []);
@@ -58,7 +66,14 @@ const Apartment = () => {
setModal(<ViewControllerModal parameters={A1MViewParams} />);
setPanel(<ButtonPanel />);
}
}, [isLoaded]);
}, [
isLoaded,
sendMessage,
setLoader,
setModal,
setPanel,
setSendMessageToUnity,
]);
return (
<>
+6
View File
@@ -7,6 +7,9 @@ interface StoreType {
panel: React.ReactNode | null;
modal: React.ReactNode | null;
sendMessageToUnity: ((gameObjectName: string, methodName: string, parameter?: ReactUnityEventParameter) => void) | null;
currentView: number;
setCurrentView: (view: number) => void;
setModal: (modal: React.ReactNode | null) => void;
setPanel: (panel: React.ReactNode | null) => void;
setLoader: (loader: React.ReactNode | null) => void;
@@ -18,6 +21,9 @@ const useStore = create<StoreType>((set) => ({
panel: null,
sendMessageToUnity: null,
loader: null,
currentView: 1,
setCurrentView: (view) => set(() => ({currentView: view})),
setModal: (modal) => set(() => ({ modal: modal })),
setPanel: (panel) => set(() => ({ panel: panel })),
setSendMessageToUnity: (sendMessageToUnity) => set(() => ({ sendMessageToUnity: sendMessageToUnity })),
+1 -1
View File
@@ -7,7 +7,7 @@ type Parameters = {
type: string;
plotArea: string;
totalBuildUpArea: string;
TotalCountBedroms: number;
totalCountBedroms: number;
villaTheme: string;
sliders: Slider[];
perspectiveWorkings: string[]
+195 -1
View File
@@ -12,6 +12,20 @@
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
"@arcgis/core@^4.28.10":
version "4.28.10"
resolved "https://registry.yarnpkg.com/@arcgis/core/-/core-4.28.10.tgz#777f699f50cb6955702cdbcd32b1015e19b1cb00"
integrity sha512-FKvicMVDwFuKX8JKLqAfukzQU2F3AG7s3tDigTcIC4ApGRbj7Nc/F9dRfPZo+aY1Vl7Sa1FjYlo6tfV93LJ2Eg==
dependencies:
"@esri/arcgis-html-sanitizer" "~3.0.1"
"@esri/calcite-colors" "~6.1.0"
"@esri/calcite-components" "^1.9.2"
"@popperjs/core" "~2.11.8"
"@zip.js/zip.js" "~2.7.29"
focus-trap "~7.5.3"
luxon "~3.4.3"
sortablejs "~1.15.0"
"@esbuild/android-arm64@0.18.20":
version "0.18.20"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
@@ -154,6 +168,59 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b"
integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==
"@esri/arcgis-html-sanitizer@~3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-3.0.1.tgz#a4feaf3744bdd532012593fdb929b376a22c39cd"
integrity sha512-cwZJwsYCJZwtBQU2AmaiIVFg5nZcVwInPYja1/OgC9iKYO+ytZRoc5h+0S9/ygbFNoS8Nd0RX9A85stLX/BgiA==
dependencies:
xss "1.0.13"
"@esri/calcite-colors@~6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@esri/calcite-colors/-/calcite-colors-6.1.0.tgz#2d75e859a88772d8de91ccae40cbe29b8a4d27b8"
integrity sha512-wHQYWFtDa6c328EraXEVZvgOiaQyYr0yuaaZ0G3cB4C3lSkWefW34L/e5TLAhtuG3zJ/wR6pl5X1YYNfBc0/4Q==
"@esri/calcite-components@^1.9.2":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@esri/calcite-components/-/calcite-components-1.11.0.tgz#7e7721f31b6a41761a15d30a8a7b646ed728fd33"
integrity sha512-H0ZqX3fEv4i0JCBEZ5SarPpd1KeXvqlEpLTtforfifIYbFAQOshP5fC2tFSL7j5pECyhBuB7rRhBiFeFejpRDw==
dependencies:
"@floating-ui/dom" "1.5.3"
"@stencil/core" "2.22.3"
"@types/color" "3.0.5"
color "4.2.3"
composed-offset-position "0.0.4"
dayjs "1.11.10"
focus-trap "7.5.4"
lodash-es "4.17.21"
sortablejs "1.15.0"
timezone-groups "0.8.0"
"@floating-ui/core@^1.4.2":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1"
integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==
dependencies:
"@floating-ui/utils" "^0.2.1"
"@floating-ui/dom@1.5.3":
version "1.5.3"
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa"
integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==
dependencies:
"@floating-ui/core" "^1.4.2"
"@floating-ui/utils" "^0.1.3"
"@floating-ui/utils@^0.1.3":
version "0.1.6"
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9"
integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==
"@floating-ui/utils@^0.2.1":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2"
integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==
"@humanwhocodes/config-array@^0.11.13":
version "0.11.14"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
@@ -243,11 +310,21 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
"@popperjs/core@~2.11.8":
version "2.11.8"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@remix-run/router@1.14.2":
version "1.14.2"
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17"
integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==
"@stencil/core@2.22.3":
version "2.22.3"
resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.22.3.tgz#83987e20bba855c450f6d6780e3a20192603f13f"
integrity sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng==
"@swc/core-darwin-arm64@1.3.105":
version "1.3.105"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.105.tgz#2960f8a87aed01b3850d5c37f05b51d9d3747141"
@@ -327,6 +404,25 @@
resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a"
integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==
"@types/color-convert@*":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.3.tgz#e93f5c991eda87a945058b47044f5f0008b0dce9"
integrity sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==
dependencies:
"@types/color-name" "*"
"@types/color-name@*":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.3.tgz#c488ac2e519c9795faa0d54e8156d54e66adc4e6"
integrity sha512-87W6MJCKZYDhLAx/J1ikW8niMvmGRyY+rpUxWpL1cO7F8Uu5CHuQoFv+R0/L5pgNdW4jTyda42kv60uwVIPjLw==
"@types/color@3.0.5":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/color/-/color-3.0.5.tgz#658fd9286a44c21dabaa56c2e2f63da3ac15f063"
integrity sha512-T9yHCNtd8ap9L/r8KEESu5RDMLkoWXHo7dTureNoI1dbp25NsCN054vOu09iniIjR21MXUL+LU9bkIWrbyg8gg==
dependencies:
"@types/color-convert" "*"
"@types/json-schema@^7.0.12":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
@@ -461,6 +557,11 @@
dependencies:
"@swc/core" "^1.3.96"
"@zip.js/zip.js@~2.7.29":
version "2.7.33"
resolved "https://registry.yarnpkg.com/@zip.js/zip.js/-/zip.js-2.7.33.tgz#daeb0ab451b360f4584f5f4259ea822d56eaff02"
integrity sha512-3Ct8eoIkvkflNEyL3wD3GwJ2ORMobGTGO4v9giq6a4vCBcVmk1qFXtfDN2P9hJ9Eibd4zPKMiRCca4lVu+56Ig==
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -630,16 +731,42 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
color@4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
dependencies:
color-convert "^2.0.1"
color-string "^1.9.0"
commander@^2.20.3:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
commander@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
composed-offset-position@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/composed-offset-position/-/composed-offset-position-0.0.4.tgz#ca8854abf15e3c235ecf4df125a27fe88af76ea4"
integrity sha512-vMlvu1RuNegVE0YsCDSV/X4X10j56mq7PCIyOKK74FxkXzGLwhOUmdkJLSdOBOMwWycobGUMgft2lp+YgTe8hw==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -659,11 +786,21 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssfilter@0.0.10:
version "0.0.10"
resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
csstype@^3.0.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
dayjs@1.11.10:
version "1.11.10"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
@@ -927,6 +1064,13 @@ flatted@^3.2.9:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
focus-trap@7.5.4, focus-trap@~7.5.3:
version "7.5.4"
resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2"
integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==
dependencies:
tabbable "^6.2.0"
foreground-child@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d"
@@ -1059,6 +1203,11 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -1183,6 +1332,11 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
lodash-es@4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
@@ -1207,6 +1361,11 @@ lru-cache@^6.0.0:
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484"
integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==
luxon@~3.4.3:
version "3.4.4"
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af"
integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
@@ -1581,11 +1740,28 @@ signal-exit@^4.0.1:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
dependencies:
is-arrayish "^0.3.1"
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
sortablejs@1.15.0:
version "1.15.0"
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a"
integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
sortablejs@~1.15.0:
version "1.15.2"
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.2.tgz#4e9f7bda4718bd1838add9f1866ec77169149809"
integrity sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==
source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
@@ -1654,6 +1830,11 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tabbable@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
tailwindcss@^3.3.5:
version "3.4.1"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d"
@@ -1701,6 +1882,11 @@ thenify-all@^1.0.0:
dependencies:
any-promise "^1.0.0"
timezone-groups@0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/timezone-groups/-/timezone-groups-0.8.0.tgz#b7bd35322939bed7cfbf0624cc3eeefd0910800d"
integrity sha512-t7E/9sPfCU0m0ZbS7Cqw52D6CB/UyeaiIBmyJCokI1SyOyOgA/ESiQ/fbreeFaUG9QSenGlZSSk/7rEbkipbOA==
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -1806,6 +1992,14 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
xss@1.0.13:
version "1.0.13"
resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.13.tgz#6e48f616128b39f366dfadc57411e1eb5b341c6c"
integrity sha512-clu7dxTm1e8Mo5fz3n/oW3UCXBfV89xZ72jM8yzo1vR/pIS0w3sgB3XV2H8Vm6zfGnHL0FzvLJPJEBhd86/z4Q==
dependencies:
commander "^2.20.3"
cssfilter "0.0.10"
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"