utopia-ui 3.0.0-alpha.93 β†’ 3.0.0-alpha.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/Components/Map/hooks/useLayers.tsx","../src/Components/Auth/useAuth.tsx","../src/Components/Typography/Subtitle.tsx","../src/Components/Templates/TitleCard.tsx","../src/Components/Templates/CardPage.tsx","../src/Components/Templates/MapOverlayPage.tsx","../src/Components/Templates/CircleLayout.tsx","../src/Utils/Moon.ts","../src/Components/Templates/MoonCalendar.tsx","../src/Utils/GetValue.ts","../src/Components/Templates/ItemsIndexPage.tsx","../src/Components/Templates/ItemViewPage.tsx","../src/Components/Auth/LoginPage.tsx","../src/Components/Auth/SignupPage.tsx","../src/Components/Auth/RequestPasswordPage.tsx","../src/Components/Auth/SetNewPasswordPage.tsx","../src/Components/Map/hooks/usePermissions.tsx","../src/Components/Map/Subcomponents/AddButton.tsx","../src/Components/Map/hooks/useItems.tsx","../src/Utils/HashTagRegex.tsx","../src/Components/Map/hooks/useTags.tsx","../src/Components/Map/hooks/useFilter.tsx","../src/Components/Map/hooks/useWindowDimension.tsx","../src/Components/Map/hooks/useTimeout.tsx","../src/Components/Map/hooks/useDebounce.tsx","../src/Components/Map/hooks/useLeafletRefs.tsx","../node_modules/leaflet.locatecontrol/src/L.Control.Locate.js","../src/Components/Map/Subcomponents/Controls/LocateControl.tsx","../src/Utils/MarkerIconFactory.ts","../src/Utils/FormatTags.ts","../src/Components/Map/Subcomponents/Controls/SearchControl.tsx","../src/Components/Map/Subcomponents/Controls/LayerControl.tsx","../src/Components/Gaming/hooks/useQuests.tsx","../src/Components/Map/Subcomponents/Controls/QuestControl.tsx","../src/Components/Map/Subcomponents/Controls/Control.tsx","../src/Components/Map/Subcomponents/Controls/TagsControl.tsx","../src/Components/Map/UtopiaMap.tsx","../src/Components/AppShell/hooks/useAssets.tsx","../src/Components/Templates/DialogModal.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx","../src/Utils/ReplaceURLs.ts","../src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx","../src/Utils/TimeAgo.ts","../src/Components/Map/Subcomponents/ItemViewPopup.tsx","../src/types.ts","../src/Components/Input/TextAreaInput.tsx","../src/Components/Input/TextInput.tsx","../src/Utils/RandomColor.ts","../src/Components/Map/Subcomponents/ItemFormPopup.tsx","../src/Components/Map/Layer.tsx","../src/Components/Map/Tags.tsx","../src/Components/Map/Permissions.tsx","../src/Components/Map/ItemForm.tsx","../src/Components/Map/ItemView.tsx","../src/Components/Input/SelectBox.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupTextAreaInput.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupStartEndInput.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupTextInput.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/StartEndView.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupButton.tsx","../src/Components/AppShell/NavBar.tsx","../src/Components/AppShell/SetAssetsApi.tsx","../src/Components/AppShell/AppShell.tsx","../src/Components/AppShell/SidebarSubmenu.tsx","../src/Components/AppShell/SideBar.tsx","../src/Components/AppShell/Content.tsx","../src/Components/Profile/UserSettings.tsx","../src/Components/Profile/useClickOutside.tsx","../src/Components/Profile/ColorPicker.tsx","../src/Components/Profile/ProfileSettings.tsx","../src/Components/Templates/TagView.tsx","../src/Components/Profile/OverlayProfile.tsx","../src/Components/Input/Autocomplete.tsx","../src/Components/Profile/TagsWidget.tsx","../src/Components/Profile/OverlayProfileSettings.tsx","../src/Components/Profile/OverlayUserSettings.tsx","../src/Components/Gaming/Modal.tsx","../src/Components/Gaming/Quests.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useCallback, useReducer, createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { LayerProps } from \"../../../types\";\n\ntype ActionType =\n | { type: \"ADD LAYER\"; layer: LayerProps }\n\ntype UseItemManagerResult = ReturnType<typeof useLayerManager>;\n\nconst LayerContext = createContext<UseItemManagerResult>({\n layers: [],\n addLayer: () => { },\n});\n\nfunction useLayerManager(initialLayers: LayerProps[]): {\n layers: LayerProps[];\n addLayer: (layer: LayerProps) => void;\n} {\n const [layers, dispatch] = useReducer((state: LayerProps[], action: ActionType) => {\n switch (action.type) {\n case \"ADD LAYER\":\n const exist = state.find((layer) =>\n layer.name === action.layer.name ? true : false\n );\n if (!exist) return [\n ...state,\n action.layer,\n ];\n else return state;\n default:\n throw new Error();\n }\n }, initialLayers);\n\n const addLayer = useCallback((layer: LayerProps) => {\n dispatch({\n type: \"ADD LAYER\",\n layer\n });\n }, []);\n\n return { layers, addLayer };\n}\n\nexport const LayersProvider: React.FunctionComponent<{\n initialLayers: LayerProps[], children?: React.ReactNode\n}> = ({ initialLayers, children }) => (\n <LayerContext.Provider value={useLayerManager(initialLayers)}>\n {children}\n </LayerContext.Provider>\n);\n\nexport const useLayers = (): LayerProps[] => {\n const { layers } = useContext(LayerContext);\n return layers;\n};\n\nexport const useAddLayer = (): UseItemManagerResult[\"addLayer\"] => {\n const { addLayer } = useContext(LayerContext);\n return addLayer;\n};\n","import { createContext, useState, useContext, useEffect } from \"react\";\nimport * as React from \"react\";\nimport { UserApi, UserItem } from \"../../types\";\n\n\ntype AuthProviderProps = {\n userApi: UserApi,\n children?: React.ReactNode\n}\n\ntype AuthCredentials = {\n email: string;\n password: string;\n otp?: string | undefined;\n}\n\n\n\ntype AuthContextProps = {\n isAuthenticated: boolean,\n user: UserItem | null;\n login: (credentials: AuthCredentials) => Promise<UserItem | undefined>,\n register: (credentials: AuthCredentials, userName: string) => Promise<UserItem | undefined>,\n loading: Boolean,\n logout: () => Promise<any>,\n updateUser: (user: UserItem) => any,\n token: String | null,\n requestPasswordReset: (email:string, reset_url: string) => Promise<any>,\n passwordReset: (token:string, new_password:string) => Promise<any>\n}\n\nconst AuthContext = createContext<AuthContextProps>({\n isAuthenticated: false,\n user: null,\n login: () => Promise.reject(),\n register: () => Promise.reject(),\n loading: false,\n logout: () => Promise.reject(),\n updateUser: () => Promise.reject(),\n token: \"\",\n requestPasswordReset: () => Promise.reject(),\n passwordReset: () => Promise.reject()\n});\n\nexport const AuthProvider = ({ userApi, children }: AuthProviderProps) => {\n const [user, setUser] = useState<UserItem | null>(null);\n const [token, setToken] = useState<String | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const isAuthenticated = !!user;\n\n useEffect(() => {\n setLoading(true);\n loadUser();\n setLoading(false)\n }, []);\n\n async function loadUser(): Promise<UserItem | undefined> {\n try {\n const token = await userApi.getToken(); \n setToken(token);\n if(token){\n const me = await userApi.getUser();\n setUser(me as UserItem);\n setLoading(false);\n return me as UserItem;\n }\n else return undefined;\n\n } catch (error) {\n setLoading(false)\n return undefined;\n }\n }\n \n\n const login = async (credentials: AuthCredentials): Promise<UserItem | undefined> => {\n setLoading(true);\n try {\n const res = await userApi.login(credentials.email, credentials.password);\n setToken(res.access_token);\n return (await loadUser());\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n const register = async (credentials: AuthCredentials, userName): Promise<UserItem | undefined> => {\n setLoading(true);\n try {\n const res = await userApi.register(credentials.email, credentials.password, userName)\n return (await login(credentials));\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n\n const logout = async () => {\n try {\n await userApi.logout();\n setUser(null);\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n const updateUser = async (user: UserItem) => {\n setLoading(true);\n const { id, ...userRest } = user;\n\n try {\n const res = await userApi.updateUser(userRest);\n setUser(res as any);\n setLoading(false);\n return res as any;\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n const requestPasswordReset = async (email: string, reset_url?: string): Promise<any> => {\n setLoading(true);\n try {\n await userApi.requestPasswordReset(email, reset_url);\n return setLoading(false);\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n\n const passwordReset = async (token: string, new_password:string): Promise<any> => {\n setLoading(true);\n try {\n await userApi.passwordReset(token, new_password);\n return setLoading(false);\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n\n\n return (\n <AuthContext.Provider\n value={{ isAuthenticated, user, login, register, loading, logout, updateUser, token, requestPasswordReset, passwordReset }}\n >\n {children}\n </AuthContext.Provider>\n );\n};\nexport const useAuth = () => useContext(AuthContext);","import * as React from \"react\"\n\n function Subtitle({styleClass, children}:{styleClass:string, children: React.ReactNode}){\n return(\n <div className={`tw-text-xl tw-font-semibold ${styleClass}`}>{children}</div>\n )\n}\n\nexport default Subtitle","import Subtitle from \"../Typography/Subtitle\"\nimport * as React from \"react\"\n\ninterface TitleCardProps {\n\n title?: string,\n hideTitle?: boolean,\n children?: React.ReactNode,\n topMargin?: string,\n className?: string,\n TopSideButtons?: any\n}\n\nexport function TitleCard({ title,hideTitle, children, topMargin, TopSideButtons, className }: TitleCardProps) {\n return (\n <div className={\"tw-card tw-w-full tw-p-6 tw-bg-base-100 tw-shadow-xl tw-h-fit tw-mb-4 \" + (className || \"\") + \" \" + (topMargin || \"tw-mt-6\")}>\n\n {!hideTitle &&\n <>\n\n < Subtitle styleClass={TopSideButtons ? \"tw-inline-block\" : \"\"}>\n {title}\n\n {/* Top side button, show only if present */}\n {\n TopSideButtons && <div className=\"tw-inline-block tw-float-right\">{TopSideButtons}</div>\n }\n </Subtitle>\n <div className=\"tw-divider tw-mt-2\"></div>\n </>\n }\n\n\n {/** Card Body */}\n <div className='tw-h-full tw-bg-transparent tw-w-full tw-pb-6 tw-bg-base-100'>\n {children}\n </div>\n </div >\n\n )\n}\n","import { Link } from \"react-router-dom\"\nimport * as React from \"react\"\nimport {TitleCard} from \"./TitleCard\"\n\n\nexport function CardPage({title, hideTitle, children, parents} : { \n title: string,\n hideTitle?: boolean,\n children?: React.ReactNode,\n parents?: Array<{name: string, path: string}>\n}) {\n\n\n return (\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-2 tw-px-6 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className='tw-w-full xl:tw-max-w-6xl '>\n <div className=\"tw-text-sm tw-breadcrumbs\">\n <ul>\n <li><Link to={'/'} >Home</Link></li>\n {parents?.map((b,i) => <li key={i}><Link to={b.path} >{b.name}</Link></li>)}\n <li>{title}</li>\n </ul>\n </div>\n <TitleCard hideTitle={hideTitle} title={title} topMargin=\"tw-my-2\" className=\" tw-mb-4\">\n {children}\n </TitleCard>\n </div>\n </main>\n )\n}\n","\nimport * as L from 'leaflet';\nimport * as React from 'react'\nimport { useNavigate } from 'react-router-dom';\n\nexport function MapOverlayPage({ children, className, backdrop, card = true }: { children: React.ReactNode, className?: string, backdrop?: boolean, card?:boolean }) {\n\n\n const closeScreen = () => {\n navigate(`/`);\n }\n\n const navigate = useNavigate();\n\n const overlayRef = React.createRef<HTMLDivElement>()\n const backdropRef = React.createRef<HTMLDivElement>()\n\n\n\n React.useEffect(() => {\n if (overlayRef.current !== null) {\n L.DomEvent.disableClickPropagation(overlayRef.current)\n L.DomEvent.disableScrollPropagation(overlayRef.current)\n }\n if(backdropRef.current !== null && backdrop) {\n L.DomEvent.disableClickPropagation(backdropRef.current)\n L.DomEvent.disableScrollPropagation(backdropRef.current)\n }\n }, [overlayRef, backdropRef])\n\n\n return (\n <div className={`tw-absolute tw-h-full tw-w-full tw-m-auto ${backdrop && \"tw-z-[2000]\"}`}>\n <div ref={backdropRef} className={`${backdrop && \"tw-backdrop-brightness-75\"} tw-h-full tw-w-full tw-grid tw-place-items-center tw-m-auto`} >\n <div ref={overlayRef} className={`${card && \"tw-card tw-card-body\"} tw-shadow-xl tw-bg-base-100 tw-p-6 ${className && className} ${!backdrop && \"tw-z-[2000]\"} tw-absolute tw-top-0 tw-bottom-0 tw-right-0 tw-left-0 tw-m-auto`}>\n {children}\n <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2\" onClick={() => closeScreen()}>βœ•</button>\n </div>\n </div>\n </div>\n )\n}\n\n","import { useEffect, useRef } from 'react';\n\nexport const CircleLayout = ({ items,radius, fontSize } : {items: any, radius: number, fontSize: any}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n const itemCount = items.length;\n\n if (container) {\n for (let i = 0; i < itemCount; i++) {\n const startAngle = (Math.PI) / 2;\n const angle = startAngle + (i / itemCount) * (2 * Math.PI); \n const x = radius * Math.cos(angle);\n const y = radius * Math.sin(angle);\n const child = container.children[i] as HTMLElement;\n child.style.transform = `translate(${x}px, ${y}px)`;\n }\n }\n }, [items]);\n\n return (\n <div className=\"tw-absolute tw-mx-auto tw-flex tw-justify-center tw-items-center tw-h-full tw-w-full\" ref={containerRef}>\n {items.map((item: any) => (\n <div key={item} className=\"tw-absolute\" style={{fontSize: fontSize}}>\n {item}\n </div>\n ))}\n </div>\n );\n};\n\n","export const LUNAR_MONTH: number = 29.530588853;\n\nexport const getJulianDate = (date: Date = new Date()): number => {\n const time: number = date.getTime();\n const tzoffset: number = date.getTimezoneOffset();\n return (time / 86400000) - (tzoffset / 1440) + 2440587.5;\n};\n\nexport const normalize = (value: number): number => {\n value = value - Math.floor(value);\n if (value < 0) value += 1;\n return value;\n};\n\nexport const getLunarAgePercent = (date: Date = new Date()): number => {\n return normalize((getJulianDate(date) - 2451550.1) / LUNAR_MONTH);\n};\n\nexport const getLunarAge = (date: Date = new Date()): number => {\n const percent: number = getLunarAgePercent(date);\n return percent * LUNAR_MONTH;\n};\n\nexport const getNextNewMoon = (): Date => {\n return new Date(getLastNewMoon().getTime() + LUNAR_MONTH * 86400000);\n}\n\nexport const getLastNewMoon = (date: Date = new Date()):Date => {\n const lunarAge: number = getLunarAge(date);\n return new Date(date.getTime() - lunarAge * 86400000);\n}","import * as React from 'react'\nimport { useState } from 'react'\nimport {\n add,\n format,\n parse,\n startOfToday,\n sub,\n} from \"date-fns\";\nimport { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/outline';\nimport { MapOverlayPage } from './MapOverlayPage';\nimport { CircleLayout } from './CircleLayout';\nimport { LUNAR_MONTH, getLastNewMoon, getNextNewMoon } from '../../Utils/Moon';\n\n\nexport const MoonCalendar = () => {\n const today = startOfToday();\n\n\n const [currMonth, setCurrMonth] = useState(() => format(today, \"MMM-yyyy\"));\n let firstDayOfMonth = parse(currMonth, \"MMM-yyyy\", new Date());\n\n\n const getPrevMonth = (event: React.MouseEvent<SVGSVGElement>) => {\n event.preventDefault();\n const firstDayOfPrevMonth = add(firstDayOfMonth, { months: -1 });\n setCurrMonth(format(firstDayOfPrevMonth, \"MMM-yyyy\"));\n };\n\n const getNextMonth = (event: React.MouseEvent<SVGSVGElement>) => {\n event.preventDefault();\n const firstDayOfNextMonth = add(firstDayOfMonth, { months: 1 });\n setCurrMonth(format(firstDayOfNextMonth, \"MMM-yyyy\"));\n };\n\n return (\n <MapOverlayPage backdrop className='tw-h-96 tw-w-80'>\n <p className='tw-self-center tw-text-lg tw-font-bold'>Moon Cycle</p>\n <div className='tw-relative tw-h-full'>\n <CircleLayout items={[\"πŸŒ‘\", \"πŸŒ’\", \"πŸŒ“\", \"πŸŒ”\", \"πŸŒ•\", \"πŸŒ–\", \"πŸŒ—\", \"🌘\"]} radius={80} fontSize={\"3em\"} />\n <CircleLayout items={ [\n format(getLastNewMoon(), \"dd.MM hh:mm\"),\n format(sub(getNextNewMoon(), {seconds: LUNAR_MONTH*86400/4*3}), \"dd.MM hh:mm\"),\n format(sub(getNextNewMoon(), {seconds: LUNAR_MONTH*86400/2}), \"dd.MM hh:mm\"),\n format(sub(getNextNewMoon(), {seconds: LUNAR_MONTH*86400/4}), \"dd.MM hh:mm\")\n ]} radius={120} fontSize={\"0.8em\"}/>\n </div>\n <div className='tw-flex tw-flex-row'>\n <ChevronLeftIcon\n className=\"tw-w-6 tw-h-6 tw-cursor-pointer\"\n onClick={getPrevMonth}\n />\n <p className='tw-text-center tw-p-1 tw-h-full tw-grow'>from {format(getLastNewMoon(), \"dd.MM\")} - to {format(getNextNewMoon(), \"dd.MM\")}</p>\n\n <ChevronRightIcon\n className=\"tw-w-6 tw-h-6 tw-cursor-pointer\"\n onClick={getNextMonth}\n />\n </div>\n\n\n </MapOverlayPage>\n );\n}","export function getValue(obj, path) {\n if (!obj || typeof path !== 'string') return undefined;\n\n var pathArray = path.split('.'); // Use a different variable for the split path\n for (var i = 0, len = pathArray.length; i < len; i++) {\n if (!obj) return undefined; // Check if obj is falsy at each step\n obj = obj[pathArray[i]]; // Dive one level deeper\n }\n return obj; // Return the final value\n}","import { useEffect, useState } from 'react'\nimport { Link } from 'react-router-dom';\nimport { ItemsApi } from '../../types';\nimport { getValue } from '../../Utils/GetValue';\nimport { TitleCard } from './TitleCard';\n\n\ntype breadcrumb = {\n name: string,\n path: string\n}\n\n\nexport const ItemsIndexPage = ({ api, url, parameterField, breadcrumbs, itemNameField, itemTextField, itemImageField, itemSymbolField }: { api: ItemsApi<any>, url: string, parameterField: string, breadcrumbs: Array<breadcrumb>, itemNameField: string, itemTextField: string, itemImageField: string, itemSymbolField: string }) => {\n\n\n const [items, setItems] = useState<any[]>();\n\n const loadProjects = async () => {\n const items = await api?.getItems();\n setItems(items as any);\n }\n\n\n useEffect(() => {\n loadProjects();\n }, [api])\n\n return (\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-pt-2 tw-px-6 tw-bg-base-200 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className=' tw-w-full xl:tw-max-w-6xl'>\n {breadcrumbs &&\n <div className=\"tw-text-sm tw-breadcrumbs\">\n <ul>\n {breadcrumbs.map((b,i) => <li key={i}><Link to={b.path} >{b.name}</Link></li>)}\n </ul>\n </div>}\n {/**\n <div className=\"grid md:grid-cols-2 lg:grid-cols-3 gap-4 mb-4 mt-2 \">\n <TextInput defaultValue='' placeholder='πŸ” Search' containerStyle='lg:col-span-2' updateFormValue={(val) => { setSearch(val) }}></TextInput>\n <SelectBox updateFormValue={() => { }} placeholder=\"Type\" containerStyle=' hidden md:grid' defaultValue='PLACEHOLDER' options={[{ name: \"local\", value: \"local\" }, { name: \"project\", value: \"project\" }]} />\n </div>\n <div className=\"divider\" ></div>\n\n */}\n\n\n\n <div className=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 tw-gap-6 \">\n {\n items?.map((i, k) => {\n return (\n <Link key={k} to={url + getValue(i, parameterField)}>\n <TitleCard className={\"!tw-h-96 \"} title={getValue(i, itemNameField)} topMargin={\"tw-mt-2\"}>\n {getValue(i,itemImageField) ?\n <div className=' tw-h-36 flex items-center justify-center '>\n <img className='tw-h-24' src={`https://api.utopia-lab.org/assets/${getValue(i, itemImageField)}`}></img> \n </div> :\n <div className=\"tw-h-36 !bg-transparent tw-flex tw-items-center tw-justify-center tw-text-7xl\">\n {getValue(i,itemSymbolField)}\n </div>\n }\n <p className='tw-font-bold tw-text-sm tw-mt-2'>{i.subname}</p>\n\n\n <p className='tw-text-sm tw-mt-2 tw-mb-2'>{getValue(i, itemTextField)}</p>\n {/**\n * <div className='flex justify-between text-gray-500 '>\n <div className='flex'><UsersIcon className=' h-6 w-6' />&nbsp;2</div>\n <div className='flex'><MapPinIcon className='h-6 w-6' />&nbsp;5</div>\n <div className='flex'><CalendarIcon className='h-6 w-6' />&nbsp;9</div>\n </div>\n \n */}\n\n\n </TitleCard>\n </Link>\n )\n\n })\n }\n </div>\n </div>\n </main>\n\n\n )\n}\n","import { useState, useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { CardPage } from \"./CardPage\";\nimport { ItemsApi } from \"../../types\";\nimport { getValue } from \"../../Utils/GetValue\";\n\n\ntype breadcrumb = {\n name: string,\n path: string\n}\n\n\nexport const ItemViewPage = ({ api, parents, itemNameField, itemTextField, itemImageField, itemSymbolField }: { api: ItemsApi<any>, parents: Array<breadcrumb>, itemNameField: string, itemTextField: string, itemImageField: string, itemSymbolField: string }) => {\n\n const [item, setItem] = useState<any>();\n\n let location = useLocation();\n \n\n const loadProject = async () => {\n if (api?.getItem) {\n const project: unknown = await api?.getItem(location.pathname.split(\"/\")[2]);\n setItem(project as any);\n }\n }\n\n\n\n useEffect(() => {\n loadProject();\n }, [api])\n\n return (\n <CardPage title={getValue(item, itemNameField) || \"\"} parents={parents}>\n {item &&\n <>\n {getValue(item, itemImageField) ?\n <div className=' tw-h-36 flex items-center justify-center '>\n <img className='tw-h-24' src={`https://api.utopia-lab.org/assets/${getValue(item, itemImageField)}`}></img>\n </div> :\n <div className=\"tw-h-36 !bg-transparent tw-flex tw-items-center tw-justify-center tw-text-7xl\">\n {getValue(item, itemSymbolField)}\n </div>\n }\n <p className='text-sm mb-2'>{getValue(item, itemTextField)}</p>\n </>\n\n }\n\n </CardPage>\n )\n}\n","import { useRef, useState } from 'react'\nimport { Link, useNavigate } from 'react-router-dom'\nimport ErrorText from '../Typography/ErrorText'\nimport { TextInput } from '../Input/TextInput'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage} from '../Templates'\n\nexport function LoginPage() {\n\n const [email, setEmail] = useState<string>(\"\");\n const [password, setPassword] = useState<string>(\"\");\n\n const { login, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onLogin = async () => {\n await toast.promise(\n login({ email: email, password: password }),\n {\n success: {\n render({ data }) {\n navigate(`/`);\n return `Hi ${data?.first_name}`\n },\n // other options\n icon: \"✌️\",\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'logging in ...'\n });\n }\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Login</h2>\n <input type=\"email\" placeholder=\"E-Mail\" value={email} onChange={e => setEmail(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <input type=\"password\" placeholder=\"Password\" onChange={e => setPassword(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className='tw-text-right tw-text-primary'><Link to=\"/reset-password\"><span className=\"tw-text-sm tw-inline-block hover:tw-text-primary hover:tw-underline hover:tw-cursor-pointer tw-transition tw-duration-200\">Forgot Password?</span></Link>\n </div>\n <div className=\"tw-card-actions\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onLogin()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Login'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useRef, useState } from 'react'\nimport { Link, useNavigate } from 'react-router-dom'\nimport ErrorText from '../Typography/ErrorText'\nimport { TextInput } from '../Input/TextInput'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage } from '../Templates'\n\nexport function SignupPage() {\n\n const [email, setEmail] = useState<string>(\"\");\n const [userName, setUserName] = useState<string>(\"\");\n\n const [password, setPassword] = useState<string>(\"\");\n\n const { register, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onRegister = async () => {\n await toast.promise(\n register({ email: email, password: password }, userName),\n {\n success: {\n render({ data }) {\n navigate(`/`);\n return `Hi ${data?.first_name}`\n },\n // other options\n icon: \"✌️\",\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'creating new user ...'\n });\n }\n\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Sign Up</h2>\n <input type=\"text\" placeholder=\"Name\" value={userName} onChange={e => setUserName(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <input type=\"email\" placeholder=\"E-Mail\" value={email} onChange={e => setEmail(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <input type=\"password\" placeholder=\"Password\" onChange={e => setPassword(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className=\"tw-card-actions tw-mt-4\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onRegister()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Sign Up'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useState } from 'react'\nimport { useNavigate } from 'react-router-dom'\n\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage} from '../Templates'\n\nexport function RequestPasswordPage({reset_url}) {\n\n const [email, setEmail] = useState<string>(\"\");\n\n const { requestPasswordReset, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onReset = async () => {\n await toast.promise(\n requestPasswordReset( email, reset_url),\n {\n success: {\n render() {\n navigate(`/`);\n return `Check your mailbox`\n },\n // other options\n icon: \"πŸ“¬\",\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'sending email ...'\n });\n }\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Reset Password</h2>\n <input type=\"email\" placeholder=\"E-Mail\" value={email} onChange={e => setEmail(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className=\"tw-card-actions tw-mt-4\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onReset()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Send'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useRef, useState } from 'react'\nimport { Link, useNavigate } from 'react-router-dom'\nimport ErrorText from '../Typography/ErrorText'\nimport { TextInput } from '../Input/TextInput'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage} from '../Templates'\n\nexport function SetNewPasswordPage() {\n\n const [password, setPassword] = useState<string>(\"\");\n\n const { passwordReset, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onReset = async () => {\n const token = window.location.search.split(\"token=\")[1];\n console.log(token);\n \n await toast.promise(\n passwordReset(token, password),\n {\n success: {\n render() {\n navigate(`/`);\n return `New password set`\n },\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'setting password ...'\n });\n }\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Set new Password</h2>\n <input type=\"password\" placeholder=\"Password\" onChange={e => setPassword(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className=\"tw-card-actions tw-mt-4\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onReset()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Set'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useCallback, useReducer, createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { ItemsApi, LayerProps, Permission, PermissionAction } from \"../../../types\";\nimport { useAuth } from \"../../Auth\";\n\ntype ActionType =\n | { type: \"ADD\"; permission: Permission }\n | { type: \"REMOVE\"; id: string };\n\ntype UsePermissionManagerResult = ReturnType<typeof usePermissionsManager>;\n\nconst PermissionContext = createContext<UsePermissionManagerResult>({\n permissions: [],\n setPermissionApi: () => { },\n setPermissionData: () => { },\n setAdminRole: () => { },\n hasUserPermission: () => true\n});\n\nfunction usePermissionsManager(initialPermissions: Permission[]): {\n permissions: Permission[];\n setPermissionApi: (api: ItemsApi<any>) => void;\n setPermissionData: (data: Permission[]) => void;\n setAdminRole: (adminRole: string) => void;\n hasUserPermission: (collectionName: string, action: PermissionAction) => boolean;\n} {\n const [permissions, dispatch] = useReducer((state: Permission[], action: ActionType) => {\n switch (action.type) {\n case \"ADD\":\n const exist = state.find((permission) =>\n permission.id === action.permission.id ? true : false\n );\n if (!exist) return [\n ...state,\n action.permission,\n ];\n else return state;\n\n case \"REMOVE\":\n return state.filter(({ id }) => id !== action.id);\n default:\n throw new Error();\n }\n }, initialPermissions);\n\n const [adminRole, setAdminRole] = React.useState<string | null>(null);\n const { user } = useAuth();\n\n\n const setPermissionApi = useCallback(async (api: ItemsApi<Permission>) => { \n const result = await api.getItems();\n if (result) {\n result.map(permission => {\n dispatch({ type: \"ADD\", permission })\n })\n }\n }, [])\n\n const setPermissionData = useCallback((data: Permission[]) => {\n data.map(permission => {\n dispatch({ type: \"ADD\", permission })\n })\n }, []);\n\n const hasUserPermission = useCallback((collectionName: string, action: PermissionAction) => { \n if (permissions.length == 0) return true;\n else if (user && user.role == adminRole) return true;\n else return permissions.some(p => p.action === action && p.collection === collectionName && p.role == user?.role)\n }, [permissions, user]);\n\n\n\n return { permissions, setPermissionApi, setPermissionData, setAdminRole, hasUserPermission };\n}\n\nexport const PermissionsProvider: React.FunctionComponent<{\n initialPermissions: Permission[], children?: React.ReactNode\n}> = ({ initialPermissions, children }) => (\n <PermissionContext.Provider value={usePermissionsManager(initialPermissions)}>\n {children}\n </PermissionContext.Provider>\n);\n\nexport const usePermissions = (): Permission[] => {\n const { permissions } = useContext(PermissionContext);\n return permissions;\n};\n\n\nexport const useSetPermissionApi = (): UsePermissionManagerResult[\"setPermissionApi\"] => {\n const { setPermissionApi } = useContext(PermissionContext);\n return setPermissionApi;\n}\n\nexport const useSetPermissionData = (): UsePermissionManagerResult[\"setPermissionData\"] => {\n const { setPermissionData } = useContext(PermissionContext);\n return setPermissionData;\n}\n\nexport const useHasUserPermission = (): UsePermissionManagerResult[\"hasUserPermission\"] => {\n const { hasUserPermission } = useContext(PermissionContext);\n return hasUserPermission;\n}\n\nexport const useSetAdminRole = (): UsePermissionManagerResult[\"setAdminRole\"] => {\n const { setAdminRole } = useContext(PermissionContext);\n return setAdminRole;\n}","import * as React from 'react'\nimport { useLayers } from '../hooks/useLayers'\nimport { useHasUserPermission } from '../hooks/usePermissions';\n\n\nexport default function AddButton({ setSelectNewItemPosition }: { setSelectNewItemPosition: React.Dispatch<React.SetStateAction<any>> }) {\n\n const layers = useLayers();\n const hasUserPermission = useHasUserPermission();\n\n const canAddItems = () => {\n let canAdd = false;\n layers.map(layer => {\n if(layer.api?.createItem && hasUserPermission(layer.api.collectionName!,\"create\")) canAdd = true;\n })\n return canAdd;\n }\n\n\n return (\n <>{\n canAddItems() ? \n <div className=\"tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-500 tw-absolute tw-right-4 tw-bottom-4\" >\n <label tabIndex={0} className=\"tw-z-500 tw-btn tw-btn-circle tw-shadow tw-bg-base-100\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"2\" stroke=\"currentColor\" className=\"tw-w-5 tw-h-5\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" />\n </svg>\n </label>\n <ul tabIndex={0} className=\"tw-dropdown-content tw-pr-1 tw-list-none\">\n {layers.map((layer) => (\n layer.api?.createItem && hasUserPermission(layer.api.collectionName!,\"create\") && (\n <li key={layer.name} >\n <a>\n <div className=\"tw-tooltip tw-tooltip-left\" data-tip={layer.menuText}>\n <button tabIndex={0}\n className=\"tw-z-500 tw-border-0 tw-pl-2 tw-p-0 tw-mb-3 tw-w-10 tw-h-10 tw-cursor-pointer tw-rounded-full tw-mouse tw-drop-shadow-md tw-transition tw-ease-in tw-duration-200 focus:tw-outline-none\"\n style={{ backgroundColor: layer.menuColor }}\n onClick={() => { setSelectNewItemPosition(layer) }}>\n <layer.menuIcon className=\"tw-h-6 tw-w-6 tw-text-white\" ></layer.menuIcon>\n </button>\n </div>\n </a>\n </li>\n )\n\n ))}\n </ul>\n </div> : \"\"\n } \n </> \n\n )\n}\n","import { useCallback, useReducer, createContext, useContext, useEffect, useState } from \"react\";\nimport * as React from \"react\";\nimport { Item, ItemsApi, LayerProps, Tag } from \"../../../types\";\nimport { toast } from \"react-toastify\";\nimport { useAddLayer } from \"./useLayers\";\n\n\ntype ActionType =\n | { type: \"ADD\"; item: Item }\n | { type: \"UPDATE\"; item: Item }\n | { type: \"REMOVE\"; item: Item }\n | { type: \"RESET\"; layer: LayerProps }\n ;\n\n\ntype UseItemManagerResult = ReturnType<typeof useItemsManager>;\n\nconst ItemContext = createContext<UseItemManagerResult>({\n items: [],\n addItem: () => { },\n updateItem: () => { },\n removeItem: () => { },\n resetItems: () => { },\n setItemsApi: () => { },\n setItemsData: () => { },\n allItemsLoaded: false\n});\n\nfunction useItemsManager(initialItems: Item[]): {\n items: Item[];\n addItem: (item: Item) => void;\n updateItem: (item: Item) => void;\n removeItem: (item: Item) => void;\n resetItems: (layer: LayerProps) => void;\n setItemsApi: (layer: LayerProps) => void;\n setItemsData: (layer: LayerProps) => void;\n allItemsLoaded: boolean;\n\n} {\n\n const addLayer = useAddLayer();\n\n const [itemsCount, setItemsCount] = useState<number>(0);\n const [allItemsLoaded, setallItemsLoaded] = useState<boolean>(false);\n\n\n\n const [items, dispatch] = useReducer((state: Item[], action: ActionType) => {\n switch (action.type) {\n case \"ADD\":\n const exist = state.find((item) =>\n item.id === action.item.id ? true : false\n );\n if (!exist) return [\n ...state,\n action.item,\n ];\n else return state;\n case \"UPDATE\":\n return state.map((item) => {\n if (item.id === action.item.id) {\n return action.item\n }\n return item\n });\n case \"REMOVE\":\n return state.filter(item => item !== action.item);\n case \"RESET\":\n return state.filter(item => item.layer?.name !== action.layer.name);\n default:\n throw new Error();\n }\n }, initialItems);\n\n\n const setItemsApi = useCallback(async (layer: LayerProps) => {\n addLayer(layer);\n const result = await toast.promise(\n layer.api!.getItems(),\n {\n pending: `loading ${layer.name} ...`,\n success: `${layer.name} loaded`,\n error: {\n render( {data} ) { \n return `${data}`\n },\n },\n }\n );\n if (result) { \n result.map(item => { \n dispatch({ type: \"ADD\", item: { ...item, layer: layer } }); \n })\n setallItemsLoaded(true);\n }\n }, [])\n\n const setItemsData = useCallback((layer: LayerProps) => {\n layer.data?.map(item => {\n dispatch({ type: \"ADD\", item: { ...item, layer: layer } });\n })\n }, []);\n\n\n const addItem = useCallback(async (item: Item) => { \n dispatch({\n type: \"ADD\",\n item,\n });\n }, []);\n\n const updateItem = useCallback(async (item: Item) => {\n dispatch({\n type: \"UPDATE\",\n item,\n });\n }, []);\n\n const removeItem = useCallback((item: Item) => {\n dispatch({\n type: \"REMOVE\",\n item,\n });\n }, []);\n\n const resetItems = useCallback((layer: LayerProps) => {\n dispatch({\n type: \"RESET\",\n layer\n });\n }, []);\n\n\n\n return { items, updateItem, addItem, removeItem, resetItems, setItemsApi, setItemsData, allItemsLoaded };\n}\n\nexport const ItemsProvider: React.FunctionComponent<{\n initialItems: Item[], children?: React.ReactNode\n}> = ({ initialItems, children }) => (\n <ItemContext.Provider value={useItemsManager(initialItems)}>\n {children}\n </ItemContext.Provider>\n);\n\nexport const useItems = (): Item[] => {\n const { items } = useContext(ItemContext);\n return items;\n};\n\nexport const useAddItem = (): UseItemManagerResult[\"addItem\"] => {\n const { addItem } = useContext(ItemContext);\n return addItem;\n};\n\nexport const useUpdateItem = (): UseItemManagerResult[\"updateItem\"] => {\n const { updateItem } = useContext(ItemContext);\n return updateItem;\n};\n\nexport const useRemoveItem = (): UseItemManagerResult[\"removeItem\"] => {\n const { removeItem } = useContext(ItemContext);\n return removeItem;\n};\n\nexport const useResetItems = (): UseItemManagerResult[\"resetItems\"] => {\n const { resetItems } = useContext(ItemContext);\n return resetItems;\n};\n\nexport const useSetItemsApi = (): UseItemManagerResult[\"setItemsApi\"] => {\n const { setItemsApi } = useContext(ItemContext);\n return setItemsApi;\n};\n\nexport const useSetItemsData = (): UseItemManagerResult[\"setItemsData\"] => {\n const { setItemsData } = useContext(ItemContext);\n return setItemsData;\n}; \n\nexport const useAllItemsLoaded = (): UseItemManagerResult[\"allItemsLoaded\"] => {\n const { allItemsLoaded } = useContext(ItemContext);\n return allItemsLoaded;\n}","export const hashTagRegex = /(#+[a-zA-Z0-9Γ€-Γ–Γ˜-ΓΆΓΈ-ΚΈ_-]{1,})/g;","import { useCallback, useReducer, createContext, useContext, useState } from \"react\";\nimport * as React from \"react\";\nimport { Item, ItemsApi, Tag } from \"../../../types\";\nimport { hashTagRegex } from \"../../../Utils/HashTagRegex\";\nimport { getValue } from \"../../../Utils/GetValue\";\n\ntype ActionType =\n | { type: \"ADD\"; tag: Tag }\n | { type: \"REMOVE\"; id: string };\n\ntype UseTagManagerResult = ReturnType<typeof useTagsManager>;\n\nconst TagContext = createContext<UseTagManagerResult>({\n tags: [],\n addTag: () => { },\n setTagApi: () => { },\n setTagData: () => { },\n getItemTags: () => [],\n allTagsLoaded: false\n});\n\nfunction useTagsManager(initialTags: Tag[]): {\n tags: Tag[];\n addTag: (tag: Tag) => void;\n setTagApi: (api: ItemsApi<Tag>) => void;\n setTagData: (data: Tag[]) => void;\n getItemTags: (item: Item) => Tag[];\n allTagsLoaded: boolean\n} {\n\n const [allTagsLoaded, setallTagsLoaded] = useState<boolean>(false);\n const [tagCount, setTagCount] = useState<number>(0);\n\n const [tags, dispatch] = useReducer((state: Tag[], action: ActionType) => {\n switch (action.type) {\n case \"ADD\":\n const exist = state.find((tag) =>\n tag.name.toLocaleLowerCase() === action.tag.name.toLocaleLowerCase() ? true : false\n );\n if (!exist) {\n const newState = [\n ...state,\n { ...action.tag}\n ];\n if(tagCount == newState.length) setallTagsLoaded(true);\n return newState;\n } \n else return state;\n default:\n throw new Error();\n }\n }, initialTags);\n\n const [api, setApi] = React.useState<ItemsApi<Tag>>({} as ItemsApi<Tag>)\n\n\n const setTagApi = useCallback(async (api: ItemsApi<Tag>) => {\n setApi(api);\n const result = await api.getItems();\n setTagCount(result.length);\n if(tagCount == 0) setallTagsLoaded(true);\n if (result) {\n result.map(tag => {\n //tag.name = tag.name.toLocaleLowerCase();\n dispatch({ type: \"ADD\", tag });\n })\n }\n\n \n }, [])\n\n const setTagData = useCallback((data: Tag[]) => {\n data.map(tag => {\n //tag.name = tag.name.toLocaleLowerCase();\n dispatch({ type: \"ADD\", tag })\n })\n }, []);\n\n const addTag = (tag: Tag) => { \n dispatch({\n type: \"ADD\",\n tag,\n });\n if (!tags.some((t) => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())) {\n api?.createItem && api.createItem(tag);\n }\n \n };\n\n\n const getItemTags = useCallback((item: Item) => {\n const text = item?.layer?.itemTextField && item ? getValue(item, item.layer?.itemTextField) : undefined;\n const itemTagStrings = text?.match(hashTagRegex);\n const itemTags: Tag[] = [];\n itemTagStrings?.map(tag => {\n if (tags.find(t => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n itemTags.push(tags.find(t => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())!)\n }\n }) \n item.layer?.itemOffersField && getValue(item, item.layer.itemOffersField).map(o => {\n const offer = tags.find(t=> t.id === o.tags_id)\n offer && itemTags.push(offer)\n });\n item.layer?.itemNeedsField && getValue(item, item.layer.itemNeedsField).map(n => {\n const need = tags.find(t=>t.id === n.tags_id);\n need && itemTags.push(need);\n });\n\n return itemTags\n }, [tags]);\n\n\n return { tags, addTag, setTagApi, setTagData, getItemTags, allTagsLoaded };\n}\n\nexport const TagsProvider: React.FunctionComponent<{\n initialTags: Tag[], children?: React.ReactNode\n}> = ({ initialTags, children }) => (\n <TagContext.Provider value={useTagsManager(initialTags)}>\n {children}\n </TagContext.Provider>\n);\n\nexport const useTags = (): Tag[] => {\n const { tags } = useContext(TagContext);\n return tags;\n};\n\nexport const useAddTag = (): UseTagManagerResult[\"addTag\"] => {\n const { addTag } = useContext(TagContext);\n return addTag;\n};\n\nexport const useSetTagApi = (): UseTagManagerResult[\"setTagApi\"] => {\n const { setTagApi } = useContext(TagContext);\n return setTagApi;\n}\n\nexport const useSetTagData = (): UseTagManagerResult[\"setTagData\"] => {\n const { setTagData } = useContext(TagContext);\n return setTagData;\n}\n\n\nexport const useGetItemTags = (): UseTagManagerResult[\"getItemTags\"] => {\n const { getItemTags } = useContext(TagContext);\n return getItemTags;\n}\n\nexport const useAllTagsLoaded = (): UseTagManagerResult[\"allTagsLoaded\"] => {\n const { allTagsLoaded } = useContext(TagContext);\n return allTagsLoaded;\n}","import { useCallback, useReducer, createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { LayerProps, Tag } from \"../../../types\";\nimport { useLayers } from \"./useLayers\";\nimport { useLocation } from \"react-router-dom\";\n\ntype ActionType =\n | { type: \"ADD_TAG\"; tag: Tag }\n | { type: \"REMOVE_TAG\"; name: string }\n | { type: \"RESET_TAGS\" }\n | { type: \"TOGGLE_LAYER\"; layer: LayerProps }\n | { type: \"ADD_LAYER\"; layer: LayerProps }\n | { type: \"RESET_LAYERS\" }\n ;\n\ntype UseFilterManagerResult = ReturnType<typeof useFilterManager>;\n\nconst FilterContext = createContext<UseFilterManagerResult>({\n filterTags: [],\n searchPhrase: \"\",\n visibleLayers: [],\n addFilterTag: () => { },\n removeFilterTag: () => { },\n resetFilterTags: () => { },\n setSearchPhrase: () => { },\n addVisibleLayer: () => { },\n toggleVisibleLayer: () => { },\n resetVisibleLayers: () => { },\n isLayerVisible: () => true\n});\n\nfunction useFilterManager(initialTags: Tag[]): {\n filterTags: Tag[];\n searchPhrase: string;\n visibleLayers: LayerProps[];\n addFilterTag: (tag: Tag) => void;\n removeFilterTag: (name: string) => void;\n resetFilterTags: () => void;\n setSearchPhrase: (phrase: string) => void;\n addVisibleLayer: (layer: LayerProps) => void;\n toggleVisibleLayer: (layer: LayerProps) => void;\n resetVisibleLayers: () => void;\n isLayerVisible: (layer: LayerProps) => boolean;\n} {\n const [filterTags, dispatchTags] = useReducer((state: Tag[], action: ActionType) => {\n switch (action.type) {\n case \"ADD_TAG\":\n const exist = state.find((tag) =>\n tag.id === action.tag.id ? true : false\n );\n if (!exist) return [\n ...state,\n action.tag,\n ];\n else return state;\n case \"REMOVE_TAG\":\n return state.filter(({ name }) => name !== action.name);\n case \"RESET_TAGS\":\n return initialTags;\n default:\n throw new Error();\n }\n }, initialTags);\n\n const initialLayers = useLayers()\n\n const [visibleLayers, dispatchLayers] = useReducer((state: LayerProps[], action: ActionType) => {\n switch (action.type) {\n case \"ADD_LAYER\":\n const exist1 = state.find((layer) =>\n layer.name === action.layer.name ? true : false\n );\n if (!exist1) return [\n ...state,\n action.layer,\n ];\n else return state;\n case \"TOGGLE_LAYER\":\n const exist2 = state.some((layer) =>\n layer.name === action.layer.name);\n if(exist2) return state.filter(({name}) => name != action.layer.name);\n else return [... state, action.layer];\n case \"RESET_LAYERS\":\n return initialLayers;\n default:\n throw new Error();\n }\n }, initialLayers);\n\n const [searchPhrase, searchPhraseSet] = React.useState<string>(\"\");\n\n const addFilterTag = (tag: Tag) => {\n\n let params = new URLSearchParams(window.location.search);\n let urlTags = params.get(\"tags\");\n if(!urlTags?.includes(tag.name))\n params.set(\"tags\", `${urlTags ? urlTags : \"\"}${urlTags? ',' : ''}${tag.name}`)\n window.history.pushState('','', \"?\" +params.toString());\n\n dispatchTags({\n type: \"ADD_TAG\",\n tag,\n });\n\n };\n\n const removeFilterTag = useCallback((name: string) => {\n\n let params = new URLSearchParams(window.location.search);\n let urlTags = params.get(\"tags\");\n let newUrlTags = \"\";\n let tags = urlTags?.split(\",\");\n if(tags?.length==0 && urlTags?.length && urlTags?.length > 0) tags[0]=urlTags;\n tags?.map(urlTag => {\n if(!(urlTag.toLocaleLowerCase() === name.toLocaleLowerCase()))\n newUrlTags = newUrlTags + `${newUrlTags===\"\"? urlTag : `,${urlTag}`}`\n }); \n if(newUrlTags !== \"\") {\n params.set(\"tags\", `${newUrlTags}`)\n window.history.pushState('','', \"?\" +params.toString());\n }\n else {\n\n window.history.pushState('','', window.location.pathname);\n }\n\n dispatchTags({\n type: \"REMOVE_TAG\",\n name,\n });\n }, []);\n\n const resetFilterTags = useCallback(() => {\n dispatchTags({\n type: \"RESET_TAGS\",\n });\n }, []);\n\n const addVisibleLayer = (layer: LayerProps) => {\n dispatchLayers({\n type: \"ADD_LAYER\",\n layer,\n });\n\n };\n\n const toggleVisibleLayer = (layer: LayerProps) => {\n dispatchLayers({\n type: \"TOGGLE_LAYER\",\n layer,\n });\n\n };\n\n\n const resetVisibleLayers = useCallback(() => {\n dispatchLayers({\n type: \"RESET_LAYERS\",\n });\n }, []);\n\n const isLayerVisible = useCallback((layer: LayerProps) => {\n return visibleLayers.some(l => l.name === layer.name)\n }, [visibleLayers]);\n\n const setSearchPhrase = useCallback((phrase: string) => {\n searchPhraseSet(phrase)\n }, []);\n\n return { filterTags, addFilterTag, removeFilterTag, resetFilterTags, setSearchPhrase, searchPhrase, visibleLayers, toggleVisibleLayer, resetVisibleLayers, isLayerVisible, addVisibleLayer };\n}\n\nexport const FilterProvider: React.FunctionComponent<{\n initialTags: Tag[], children?: React.ReactNode\n}> = ({ initialTags, children }) => (\n <FilterContext.Provider value={useFilterManager(initialTags)}>\n {children}\n </FilterContext.Provider>\n);\n\nexport const useFilterTags = (): Tag[] => {\n const { filterTags } = useContext(FilterContext);\n return filterTags;\n};\n\nexport const useAddFilterTag = (): UseFilterManagerResult[\"addFilterTag\"] => {\n const { addFilterTag } = useContext(FilterContext);\n return addFilterTag;\n};\n\nexport const useRemoveFilterTag = (): UseFilterManagerResult[\"removeFilterTag\"] => {\n const { removeFilterTag } = useContext(FilterContext);\n return removeFilterTag;\n};\n\nexport const useResetFilterTags = (): UseFilterManagerResult[\"resetFilterTags\"] => {\n const { resetFilterTags } = useContext(FilterContext);\n return resetFilterTags;\n};\n\nexport const useSearchPhrase = (): UseFilterManagerResult[\"searchPhrase\"] => {\n const { searchPhrase } = useContext(FilterContext);\n return searchPhrase;\n};\n\nexport const useSetSearchPhrase = (): UseFilterManagerResult[\"setSearchPhrase\"] => {\n const { setSearchPhrase } = useContext(FilterContext);\n return setSearchPhrase;\n};\n\nexport const useVisibleLayer = (): UseFilterManagerResult[\"visibleLayers\"] => {\n const { visibleLayers } = useContext(FilterContext);\n return visibleLayers;\n};\n\nexport const useAddVisibleLayer = (): UseFilterManagerResult[\"addVisibleLayer\"] => {\n const { addVisibleLayer } = useContext(FilterContext);\n return addVisibleLayer;\n};\n\n\nexport const useToggleVisibleLayer = (): UseFilterManagerResult[\"toggleVisibleLayer\"] => {\n const { toggleVisibleLayer } = useContext(FilterContext);\n return toggleVisibleLayer;\n};\n\nexport const useResetVisibleLayers = (): UseFilterManagerResult[\"resetVisibleLayers\"] => {\n const { resetVisibleLayers } = useContext(FilterContext);\n return resetVisibleLayers;\n};\n\nexport const useIsLayerVisible = (): UseFilterManagerResult[\"isLayerVisible\"] => {\n const { isLayerVisible } = useContext(FilterContext);\n return isLayerVisible;\n};","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height\n };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useTimeout = (callback, delay) => {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<any>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n timeoutRef.current = setTimeout(() => callbackRef.current(), delay);\n }, [delay]);\n\n const clear = useCallback(() => {\n timeoutRef.current && clearTimeout(timeoutRef.current);\n }, []);\n\n useEffect(() => {\n set();\n return clear;\n }, [delay, set, clear]);\n\n const reset = useCallback(() => {\n clear();\n set();\n }, [clear, set]);\n\n return { reset, clear };\n}","import { useEffect } from 'react';\nimport { useTimeout } from './useTimeout';\n\nexport const useDebounce = (callback, delay, deps) => {\n const { reset, clear } = useTimeout(callback, delay);\n\n useEffect(reset, [...deps, reset]);\n useEffect(clear, []);\n}","import { useCallback, useReducer, createContext, useContext, useEffect } from \"react\";\nimport * as React from \"react\";\nimport { Item } from \"../../../types\";\nimport { Marker, Popup } from \"leaflet\";\n\ntype LeafletRef = {\n item: Item,\n marker: Marker,\n popup: Popup\n}\n\ntype ActionType =\n | { type: \"ADD_MARKER\"; item: Item, marker: Marker }\n | { type: \"ADD_POPUP\"; item: Item, popup: Popup }\n ;\n\n\ntype UseLeafletRefsManagerResult = ReturnType<typeof useLeafletRefsManager>;\n\nconst LeafletRefsContext = createContext<UseLeafletRefsManagerResult>({\n leafletRefs: {},\n addMarker: () => { },\n addPopup: () => { },\n});\n\nfunction useLeafletRefsManager(initialLeafletRefs: {}): {\n leafletRefs: Record<string,LeafletRef>;\n addMarker: (item: Item, marker: Marker) => void;\n addPopup: (item: Item, popup: Popup) => void;\n} {\n\n\n\n const [leafletRefs, dispatch] = useReducer((state: Record<string,LeafletRef>, action: ActionType) => {\n switch (action.type) {\n case \"ADD_MARKER\":\n return {\n ...state,\n [action.item.id]: { ...state[action.item.id], marker: action.marker, item: action.item }}\n case \"ADD_POPUP\":\n return {\n ...state,\n [action.item.id]: { ...state[action.item.id], popup: action.popup, item: action.item }}\n default:\n throw new Error();\n }\n }, initialLeafletRefs);\n\n\n\n\n const addMarker = useCallback((item: Item, marker: Marker) => {\n dispatch({\n type: \"ADD_MARKER\",\n item,\n marker\n });\n }, []);\n\n const addPopup = useCallback((item: Item, popup: Popup) => {\n dispatch({\n type: \"ADD_POPUP\",\n item,\n popup\n });\n }, []);\n\n\n\n return { leafletRefs, addMarker, addPopup };\n}\n\nexport const LeafletRefsProvider: React.FunctionComponent<{\n initialLeafletRefs: {}, children?: React.ReactNode\n}> = ({ initialLeafletRefs, children }) => (\n <LeafletRefsContext.Provider value={useLeafletRefsManager(initialLeafletRefs)}>\n {children}\n </LeafletRefsContext.Provider>\n);\n\nexport const useLeafletRefs = (): Record<string,LeafletRef> => {\n const { leafletRefs } = useContext(LeafletRefsContext);\n return leafletRefs;\n};\n\nexport const useAddMarker = (): UseLeafletRefsManagerResult[\"addMarker\"] => {\n const { addMarker } = useContext(LeafletRefsContext);\n return addMarker;\n};\n\nexport const useAddPopup = (): UseLeafletRefsManagerResult[\"addPopup\"] => {\n const { addPopup } = useContext(LeafletRefsContext);\n return addPopup;\n};\n\n","/*!\nCopyright (c) 2016 Dominik Moritz\n\nThis file is part of the leaflet locate control. It is licensed under the MIT license.\nYou can find the project at: https://github.com/domoritz/leaflet-locatecontrol\n*/\n(function (factory, window) {\n // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders\n // for details on how to structure a leaflet plugin.\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === \"function\" && define.amd) {\n define([\"leaflet\"], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === \"object\") {\n if (typeof window !== \"undefined\" && window.L) {\n module.exports = factory(L);\n } else {\n module.exports = factory(require(\"leaflet\"));\n }\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== \"undefined\" && window.L) {\n window.L.Control.Locate = factory(L);\n }\n})(function (L) {\n const LDomUtilApplyClassesMethod = (method, element, classNames) => {\n classNames = classNames.split(\" \");\n classNames.forEach(function (className) {\n L.DomUtil[method].call(this, element, className);\n });\n };\n\n const addClasses = (el, names) => LDomUtilApplyClassesMethod(\"addClass\", el, names);\n const removeClasses = (el, names) => LDomUtilApplyClassesMethod(\"removeClass\", el, names);\n\n /**\n * Compatible with L.Circle but a true marker instead of a path\n */\n const LocationMarker = L.Marker.extend({\n initialize(latlng, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this.createIcon();\n },\n\n /**\n * Create a styled circle location marker\n */\n createIcon() {\n const opt = this.options;\n\n let style = \"\";\n\n if (opt.color !== undefined) {\n style += `stroke:${opt.color};`;\n }\n if (opt.weight !== undefined) {\n style += `stroke-width:${opt.weight};`;\n }\n if (opt.fillColor !== undefined) {\n style += `fill:${opt.fillColor};`;\n }\n if (opt.fillOpacity !== undefined) {\n style += `fill-opacity:${opt.fillOpacity};`;\n }\n if (opt.opacity !== undefined) {\n style += `opacity:${opt.opacity};`;\n }\n\n const icon = this._getIconSVG(opt, style);\n\n this._locationIcon = L.divIcon({\n className: icon.className,\n html: icon.svg,\n iconSize: [icon.w, icon.h]\n });\n\n this.setIcon(this._locationIcon);\n },\n\n /**\n * Return the raw svg for the shape\n *\n * Split so can be easily overridden\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = options.weight;\n const s = r + w;\n const s2 = s * 2;\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${s2}\" height=\"${s2}\" version=\"1.1\" viewBox=\"-${s} -${s} ${s2} ${s2}\">` +\n '<circle r=\"' +\n r +\n '\" style=\"' +\n style +\n '\" />' +\n \"</svg>\";\n return {\n className: \"leaflet-control-locate-location\",\n svg,\n w: s2,\n h: s2\n };\n },\n\n setStyle(style) {\n L.Util.setOptions(this, style);\n this.createIcon();\n }\n });\n\n const CompassMarker = LocationMarker.extend({\n initialize(latlng, heading, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this._heading = heading;\n this.createIcon();\n },\n\n setHeading(heading) {\n this._heading = heading;\n },\n\n /**\n * Create a styled arrow compass marker\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = options.width + options.weight;\n const h = (r + options.depth + options.weight) * 2;\n const path = `M0,0 l${options.width / 2},${options.depth} l-${w},0 z`;\n const svgstyle = `transform: rotate(${this._heading}deg)`;\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${w}\" height=\"${h}\" version=\"1.1\" viewBox=\"-${w / 2} 0 ${w} ${h}\" style=\"${svgstyle}\">` +\n '<path d=\"' +\n path +\n '\" style=\"' +\n style +\n '\" />' +\n \"</svg>\";\n return {\n className: \"leaflet-control-locate-heading\",\n svg,\n w,\n h\n };\n }\n });\n\n const LocateControl = L.Control.extend({\n options: {\n /** Position of the control */\n position: \"topleft\",\n /** The layer that the user's location should be drawn on. By default creates a new layer. */\n layer: undefined,\n /**\n * Automatically sets the map view (zoom and pan) to the user's location as it updates.\n * While the map is following the user's location, the control is in the `following` state,\n * which changes the style of the control and the circle marker.\n *\n * Possible values:\n * - false: never updates the map view when location changes.\n * - 'once': set the view when the location is first determined\n * - 'always': always updates the map view when location changes.\n * The map view follows the user's location.\n * - 'untilPan': like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n * - 'untilPanOrZoom': (default) like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n */\n setView: \"untilPanOrZoom\",\n /** Keep the current map zoom level when setting the view and only pan. */\n keepCurrentZoomLevel: false,\n /** After activating the plugin by clicking on the icon, zoom to the selected zoom level, even when keepCurrentZoomLevel is true. Set to 'false' to disable this feature. */\n initialZoomLevel: false,\n /**\n * This callback can be used to override the viewport tracking\n * This function should return a LatLngBounds object.\n *\n * For example to extend the viewport to ensure that a particular LatLng is visible:\n *\n * getLocationBounds: function(locationEvent) {\n * return locationEvent.bounds.extend([-33.873085, 151.219273]);\n * },\n */\n getLocationBounds(locationEvent) {\n return locationEvent.bounds;\n },\n /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */\n flyTo: false,\n /**\n * The user location can be inside and outside the current view when the user clicks on the\n * control that is already active. Both cases can be configures separately.\n * Possible values are:\n * - 'setView': zoom and pan to the current location\n * - 'stop': stop locating and remove the location marker\n */\n clickBehavior: {\n /** What should happen if the user clicks on the control while the location is within the current view. */\n inView: \"stop\",\n /** What should happen if the user clicks on the control while the location is outside the current view. */\n outOfView: \"setView\",\n /**\n * What should happen if the user clicks on the control while the location is within the current view\n * and we could be following but are not. Defaults to a special value which inherits from 'inView';\n */\n inViewNotFollowing: \"inView\"\n },\n /**\n * If set, save the map bounds just before centering to the user's\n * location. When control is disabled, set the view back to the\n * bounds that were saved.\n */\n returnToPrevBounds: false,\n /**\n * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait\n * until the locate API returns a new location before they see where they are again.\n */\n cacheLocation: true,\n /** If set, a circle that shows the location accuracy is drawn. */\n drawCircle: true,\n /** If set, the marker at the users' location is drawn. */\n drawMarker: true,\n /** If set and supported then show the compass heading */\n showCompass: true,\n /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */\n markerClass: LocationMarker,\n /** The class us be used to create the compass bearing arrow */\n compassClass: CompassMarker,\n /** Accuracy circle style properties. NOTE these styles should match the css animations styles */\n circleStyle: {\n className: \"leaflet-control-locate-circle\",\n color: \"#136AEC\",\n fillColor: \"#136AEC\",\n fillOpacity: 0.15,\n weight: 0\n },\n /** Inner marker style properties. Only works if your marker class supports `setStyle`. */\n markerStyle: {\n className: \"leaflet-control-locate-marker\",\n color: \"#fff\",\n fillColor: \"#2A93EE\",\n fillOpacity: 1,\n weight: 3,\n opacity: 1,\n radius: 9\n },\n /** Compass */\n compassStyle: {\n fillColor: \"#2A93EE\",\n fillOpacity: 1,\n weight: 0,\n color: \"#fff\",\n opacity: 1,\n radius: 9, // How far is the arrow is from the center of of the marker\n width: 9, // Width of the arrow\n depth: 6 // Length of the arrow\n },\n /**\n * Changes to accuracy circle and inner marker while following.\n * It is only necessary to provide the properties that should change.\n */\n followCircleStyle: {},\n followMarkerStyle: {\n // color: '#FFA500',\n // fillColor: '#FFB000'\n },\n followCompassStyle: {},\n /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */\n icon: \"leaflet-control-locate-location-arrow\",\n iconLoading: \"leaflet-control-locate-spinner\",\n /** The element to be created for icons. For example span or i */\n iconElementTag: \"span\",\n /** The element to be created for the text. For example small or span */\n textElementTag: \"small\",\n /** Padding around the accuracy circle. */\n circlePadding: [0, 0],\n /** Use metric units. */\n metric: true,\n /**\n * This callback can be used in case you would like to override button creation behavior.\n * This is useful for DOM manipulation frameworks such as angular etc.\n * This function should return an object with HtmlElement for the button (link property) and the icon (icon property).\n */\n createButtonCallback(container, options) {\n const link = L.DomUtil.create(\"a\", \"leaflet-bar-part leaflet-bar-part-single\", container);\n link.title = options.strings.title;\n link.href = \"#\";\n link.setAttribute(\"role\", \"button\");\n const icon = L.DomUtil.create(options.iconElementTag, options.icon, link);\n\n if (options.strings.text !== undefined) {\n const text = L.DomUtil.create(options.textElementTag, \"leaflet-locate-text\", link);\n text.textContent = options.strings.text;\n link.classList.add(\"leaflet-locate-text-active\");\n link.parentNode.style.display = \"flex\";\n if (options.icon.length > 0) {\n icon.classList.add(\"leaflet-locate-icon\");\n }\n }\n\n return { link, icon };\n },\n /** This event is called in case of any location error that is not a time out error. */\n onLocationError(err, control) {\n alert(err.message);\n },\n /**\n * This event is called when the user's location is outside the bounds set on the map.\n * The event is called repeatedly when the location changes.\n */\n onLocationOutsideMapBounds(control) {\n control.stop();\n alert(control.options.strings.outsideMapBoundsMsg);\n },\n /** Display a pop-up when the user click on the inner marker. */\n showPopup: true,\n strings: {\n title: \"Show me where I am\",\n metersUnit: \"meters\",\n feetUnit: \"feet\",\n popup: \"You are within {distance} {unit} from this point\",\n outsideMapBoundsMsg: \"You seem located outside the boundaries of the map\"\n },\n /** The default options passed to leaflets locate method. */\n locateOptions: {\n maxZoom: Infinity,\n watch: true, // if you overwrite this, visualization cannot be updated\n setView: false // have to set this to false because we have to\n // do setView manually\n }\n },\n\n initialize(options) {\n // set default options if nothing is set (merge one step deep)\n for (const i in options) {\n if (typeof this.options[i] === \"object\") {\n L.extend(this.options[i], options[i]);\n } else {\n this.options[i] = options[i];\n }\n }\n\n // extend the follow marker style and circle from the normal style\n this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle);\n this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle);\n this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle);\n },\n\n /**\n * Add control to map. Returns the container for the control.\n */\n onAdd(map) {\n const container = L.DomUtil.create(\"div\", \"leaflet-control-locate leaflet-bar leaflet-control\");\n this._container = container;\n this._map = map;\n this._layer = this.options.layer || new L.LayerGroup();\n this._layer.addTo(map);\n this._event = undefined;\n this._compassHeading = null;\n this._prevBounds = null;\n\n const linkAndIcon = this.options.createButtonCallback(container, this.options);\n this._link = linkAndIcon.link;\n this._icon = linkAndIcon.icon;\n\n L.DomEvent.on(\n this._link,\n \"click\",\n function (ev) {\n L.DomEvent.stopPropagation(ev);\n L.DomEvent.preventDefault(ev);\n this._onClick();\n },\n this\n ).on(this._link, \"dblclick\", L.DomEvent.stopPropagation);\n\n this._resetVariables();\n\n this._map.on(\"unload\", this._unload, this);\n\n return container;\n },\n\n /**\n * This method is called when the user clicks on the control.\n */\n _onClick() {\n this._justClicked = true;\n const wasFollowing = this._isFollowing();\n this._userPanned = false;\n this._userZoomed = false;\n\n if (this._active && !this._event) {\n // click while requesting\n this.stop();\n } else if (this._active) {\n const behaviors = this.options.clickBehavior;\n let behavior = behaviors.outOfView;\n if (this._map.getBounds().contains(this._event.latlng)) {\n behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing;\n }\n\n // Allow inheriting from another behavior\n if (behaviors[behavior]) {\n behavior = behaviors[behavior];\n }\n\n switch (behavior) {\n case \"setView\":\n this.setView();\n break;\n case \"stop\":\n this.stop();\n if (this.options.returnToPrevBounds) {\n const f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n f.bind(this._map)(this._prevBounds);\n }\n break;\n }\n } else {\n if (this.options.returnToPrevBounds) {\n this._prevBounds = this._map.getBounds();\n }\n this.start();\n }\n\n this._updateContainerStyle();\n },\n\n /**\n * Starts the plugin:\n * - activates the engine\n * - draws the marker (if coordinates available)\n */\n start() {\n this._activate();\n\n if (this._event) {\n this._drawMarker(this._map);\n\n // if we already have a location but the user clicked on the control\n if (this.options.setView) {\n this.setView();\n }\n }\n this._updateContainerStyle();\n },\n\n /**\n * Stops the plugin:\n * - deactivates the engine\n * - reinitializes the button\n * - removes the marker\n */\n stop() {\n this._deactivate();\n\n this._cleanClasses();\n this._resetVariables();\n\n this._removeMarker();\n },\n\n /**\n * Keep the control active but stop following the location\n */\n stopFollowing() {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n },\n\n /**\n * This method launches the location engine.\n * It is called before the marker is updated,\n * event if it does not mean that the event will be ready.\n *\n * Override it if you want to add more functionalities.\n * It should set the this._active to true and do nothing if\n * this._active is true.\n */\n _activate() {\n if (this._active || !this._map) {\n return;\n }\n\n this._map.locate(this.options.locateOptions);\n this._map.fire(\"locateactivate\", this);\n this._active = true;\n\n // bind event listeners\n this._map.on(\"locationfound\", this._onLocationFound, this);\n this._map.on(\"locationerror\", this._onLocationError, this);\n this._map.on(\"dragstart\", this._onDrag, this);\n this._map.on(\"zoomstart\", this._onZoom, this);\n this._map.on(\"zoomend\", this._onZoomEnd, this);\n if (this.options.showCompass) {\n const oriAbs = \"ondeviceorientationabsolute\" in window;\n if (oriAbs || \"ondeviceorientation\" in window) {\n const _this = this;\n const deviceorientation = function () {\n L.DomEvent.on(window, oriAbs ? \"deviceorientationabsolute\" : \"deviceorientation\", _this._onDeviceOrientation, _this);\n };\n if (DeviceOrientationEvent && typeof DeviceOrientationEvent.requestPermission === \"function\") {\n DeviceOrientationEvent.requestPermission().then(function (permissionState) {\n if (permissionState === \"granted\") {\n deviceorientation();\n }\n });\n } else {\n deviceorientation();\n }\n }\n }\n },\n\n /**\n * Called to stop the location engine.\n *\n * Override it to shutdown any functionalities you added on start.\n */\n _deactivate() {\n if (!this._active || !this._map) {\n return;\n }\n\n this._map.stopLocate();\n this._map.fire(\"locatedeactivate\", this);\n this._active = false;\n\n if (!this.options.cacheLocation) {\n this._event = undefined;\n }\n\n // unbind event listeners\n this._map.off(\"locationfound\", this._onLocationFound, this);\n this._map.off(\"locationerror\", this._onLocationError, this);\n this._map.off(\"dragstart\", this._onDrag, this);\n this._map.off(\"zoomstart\", this._onZoom, this);\n this._map.off(\"zoomend\", this._onZoomEnd, this);\n if (this.options.showCompass) {\n this._compassHeading = null;\n if (\"ondeviceorientationabsolute\" in window) {\n L.DomEvent.off(window, \"deviceorientationabsolute\", this._onDeviceOrientation, this);\n } else if (\"ondeviceorientation\" in window) {\n L.DomEvent.off(window, \"deviceorientation\", this._onDeviceOrientation, this);\n }\n }\n },\n\n /**\n * Zoom (unless we should keep the zoom level) and an to the current view.\n */\n setView() {\n this._drawMarker();\n if (this._isOutsideMapBounds()) {\n this._event = undefined; // clear the current location so we can get back into the bounds\n this.options.onLocationOutsideMapBounds(this);\n } else {\n if (this._justClicked && this.options.initialZoomLevel !== false) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.setView;\n f.bind(this._map)([this._event.latitude, this._event.longitude], this.options.initialZoomLevel);\n } else if (this.options.keepCurrentZoomLevel) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;\n f.bind(this._map)([this._event.latitude, this._event.longitude]);\n } else {\n var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n // Ignore zoom events while setting the viewport as these would stop following\n this._ignoreEvent = true;\n f.bind(this._map)(this.options.getLocationBounds(this._event), {\n padding: this.options.circlePadding,\n maxZoom: this.options.initialZoomLevel || this.options.locateOptions.maxZoom\n });\n L.Util.requestAnimFrame(function () {\n // Wait until after the next animFrame because the flyTo can be async\n this._ignoreEvent = false;\n }, this);\n }\n }\n },\n\n /**\n *\n */\n _drawCompass() {\n if (!this._event) {\n return;\n }\n\n const latlng = this._event.latlng;\n\n if (this.options.showCompass && latlng && this._compassHeading !== null) {\n const cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle;\n if (!this._compass) {\n this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer);\n } else {\n this._compass.setLatLng(latlng);\n this._compass.setHeading(this._compassHeading);\n // If the compassClass can be updated with setStyle, update it.\n if (this._compass.setStyle) {\n this._compass.setStyle(cStyle);\n }\n }\n //\n }\n if (this._compass && (!this.options.showCompass || this._compassHeading === null)) {\n this._compass.removeFrom(this._layer);\n this._compass = null;\n }\n },\n\n /**\n * Draw the marker and accuracy circle on the map.\n *\n * Uses the event retrieved from onLocationFound from the map.\n */\n _drawMarker() {\n if (this._event.accuracy === undefined) {\n this._event.accuracy = 0;\n }\n\n const radius = this._event.accuracy;\n const latlng = this._event.latlng;\n\n // circle with the radius of the location's accuracy\n if (this.options.drawCircle) {\n const style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle;\n\n if (!this._circle) {\n this._circle = L.circle(latlng, radius, style).addTo(this._layer);\n } else {\n this._circle.setLatLng(latlng).setRadius(radius).setStyle(style);\n }\n }\n\n let distance;\n let unit;\n if (this.options.metric) {\n distance = radius.toFixed(0);\n unit = this.options.strings.metersUnit;\n } else {\n distance = (radius * 3.2808399).toFixed(0);\n unit = this.options.strings.feetUnit;\n }\n\n // small inner marker\n if (this.options.drawMarker) {\n const mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;\n if (!this._marker) {\n this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);\n } else {\n this._marker.setLatLng(latlng);\n // If the markerClass can be updated with setStyle, update it.\n if (this._marker.setStyle) {\n this._marker.setStyle(mStyle);\n }\n }\n }\n\n this._drawCompass();\n\n const t = this.options.strings.popup;\n function getPopupText() {\n if (typeof t === \"string\") {\n return L.Util.template(t, { distance, unit });\n } else if (typeof t === \"function\") {\n return t({ distance, unit });\n } else {\n return t;\n }\n }\n if (this.options.showPopup && t && this._marker) {\n this._marker.bindPopup(getPopupText())._popup.setLatLng(latlng);\n }\n if (this.options.showPopup && t && this._compass) {\n this._compass.bindPopup(getPopupText())._popup.setLatLng(latlng);\n }\n },\n\n /**\n * Remove the marker from map.\n */\n _removeMarker() {\n this._layer.clearLayers();\n this._marker = undefined;\n this._circle = undefined;\n },\n\n /**\n * Unload the plugin and all event listeners.\n * Kind of the opposite of onAdd.\n */\n _unload() {\n this.stop();\n this._map.off(\"unload\", this._unload, this);\n },\n\n /**\n * Sets the compass heading\n */\n _setCompassHeading(angle) {\n if (!isNaN(parseFloat(angle)) && isFinite(angle)) {\n angle = Math.round(angle);\n\n this._compassHeading = angle;\n L.Util.requestAnimFrame(this._drawCompass, this);\n } else {\n this._compassHeading = null;\n }\n },\n\n /**\n * If the compass fails calibration just fail safely and remove the compass\n */\n _onCompassNeedsCalibration() {\n this._setCompassHeading();\n },\n\n /**\n * Process and normalise compass events\n */\n _onDeviceOrientation(e) {\n if (!this._active) {\n return;\n }\n\n if (e.webkitCompassHeading) {\n // iOS\n this._setCompassHeading(e.webkitCompassHeading);\n } else if (e.absolute && e.alpha) {\n // Android\n this._setCompassHeading(360 - e.alpha);\n }\n },\n\n /**\n * Calls deactivate and dispatches an error.\n */\n _onLocationError(err) {\n // ignore time out error if the location is watched\n if (err.code == 3 && this.options.locateOptions.watch) {\n return;\n }\n\n this.stop();\n this.options.onLocationError(err, this);\n },\n\n /**\n * Stores the received event and updates the marker.\n */\n _onLocationFound(e) {\n // no need to do anything if the location has not changed\n if (this._event && this._event.latlng.lat === e.latlng.lat && this._event.latlng.lng === e.latlng.lng && this._event.accuracy === e.accuracy) {\n return;\n }\n\n if (!this._active) {\n // we may have a stray event\n return;\n }\n\n this._event = e;\n\n this._drawMarker();\n this._updateContainerStyle();\n\n switch (this.options.setView) {\n case \"once\":\n if (this._justClicked) {\n this.setView();\n }\n break;\n case \"untilPan\":\n if (!this._userPanned) {\n this.setView();\n }\n break;\n case \"untilPanOrZoom\":\n if (!this._userPanned && !this._userZoomed) {\n this.setView();\n }\n break;\n case \"always\":\n this.setView();\n break;\n case false:\n // don't set the view\n break;\n }\n\n this._justClicked = false;\n },\n\n /**\n * When the user drags. Need a separate event so we can bind and unbind event listeners.\n */\n _onDrag() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * When the user zooms. Need a separate event so we can bind and unbind event listeners.\n */\n _onZoom() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userZoomed = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * After a zoom ends update the compass and handle sideways zooms\n */\n _onZoomEnd() {\n if (this._event) {\n this._drawCompass();\n }\n\n if (this._event && !this._ignoreEvent) {\n // If we have zoomed in and out and ended up sideways treat it as a pan\n if (this._marker && !this._map.getBounds().pad(-0.3).contains(this._marker.getLatLng())) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n }\n },\n\n /**\n * Compute whether the map is following the user location with pan and zoom.\n */\n _isFollowing() {\n if (!this._active) {\n return false;\n }\n\n if (this.options.setView === \"always\") {\n return true;\n } else if (this.options.setView === \"untilPan\") {\n return !this._userPanned;\n } else if (this.options.setView === \"untilPanOrZoom\") {\n return !this._userPanned && !this._userZoomed;\n }\n },\n\n /**\n * Check if location is in map bounds\n */\n _isOutsideMapBounds() {\n if (this._event === undefined) {\n return false;\n }\n return this._map.options.maxBounds && !this._map.options.maxBounds.contains(this._event.latlng);\n },\n\n /**\n * Toggles button class between following and active.\n */\n _updateContainerStyle() {\n if (!this._container) {\n return;\n }\n\n if (this._active && !this._event) {\n // active but don't have a location yet\n this._setClasses(\"requesting\");\n } else if (this._isFollowing()) {\n this._setClasses(\"following\");\n } else if (this._active) {\n this._setClasses(\"active\");\n } else {\n this._cleanClasses();\n }\n },\n\n /**\n * Sets the CSS classes for the state.\n */\n _setClasses(state) {\n if (state == \"requesting\") {\n removeClasses(this._container, \"active following\");\n addClasses(this._container, \"requesting\");\n\n removeClasses(this._icon, this.options.icon);\n addClasses(this._icon, this.options.iconLoading);\n } else if (state == \"active\") {\n removeClasses(this._container, \"requesting following\");\n addClasses(this._container, \"active\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n } else if (state == \"following\") {\n removeClasses(this._container, \"requesting\");\n addClasses(this._container, \"active following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n }\n },\n\n /**\n * Removes all classes from button.\n */\n _cleanClasses() {\n L.DomUtil.removeClass(this._container, \"requesting\");\n L.DomUtil.removeClass(this._container, \"active\");\n L.DomUtil.removeClass(this._container, \"following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n },\n\n /**\n * Reinitializes state variables.\n */\n _resetVariables() {\n // whether locate is active or not\n this._active = false;\n\n // true if the control was clicked for the first time\n // we need this so we can pan and zoom once we have the location\n this._justClicked = false;\n\n // true if the user has panned the map after clicking the control\n this._userPanned = false;\n\n // true if the user has zoomed the map after clicking the control\n this._userZoomed = false;\n }\n });\n\n L.control.locate = (options) => new L.Control.Locate(options);\n\n return LocateControl;\n}, window);\n","import * as React from 'react'\nimport * as L from 'leaflet'\nimport { useMap, useMapEvents } from 'react-leaflet'\nimport 'leaflet.locatecontrol'\n\nimport 'leaflet.locatecontrol/dist/L.Control.Locate.css'\nimport { useEffect, useRef, useState } from 'react'\n\n// Converts leaflet.locatecontrol to a React Component\nexport const LocateControl = () => {\n\n const map = useMap();\n\n // prevent react18 from calling useEffect twice\n const init = useRef(false)\n\n\n const [lc, setLc] = useState<any>(null);\n const [active, setActive] = useState<boolean>(false);\n const [loading, setLoading] = useState<boolean>(false);\n\n\n useEffect(() => {\n if (!init.current) {\n //@ts-ignore\n setLc(L.control.locate().addTo(map));\n init.current = true;\n }\n }, [])\n\n useMapEvents({\n locationfound: () => {\n setLoading(false);\n setActive(true);\n },\n })\n\n return (<>\n <div className=\"tw-card tw-w-14 tw-bg-base-100 tw-shadow-xl tw-items-center tw-justify-center hover:tw-bg-slate-300 hover:tw-cursor-pointer tw-transition-all tw-duration-300\">\n\n <div className=\"tw-card-body tw-card tw-p-2 tw-h-10 tw-w-10 \" onClick={() => {\n if (active) {\n lc.stop();\n setActive(false);\n }\n else {\n lc.start();\n setLoading(true);\n }\n\n }}>{loading ? <span className=\"tw-loading tw-loading-spinner tw-loading-md tw-mt-1\"></span> : \n <svg fill={`${active? \"#fc8702\" : \"currentColor\"}`} viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" className='tw-mt-1 tw-p-[1px]'>\n <path d=\"M30 14.75h-2.824c-0.608-5.219-4.707-9.318-9.874-9.921l-0.053-0.005v-2.824c0-0.69-0.56-1.25-1.25-1.25s-1.25 0.56-1.25 1.25v0 2.824c-5.219 0.608-9.318 4.707-9.921 9.874l-0.005 0.053h-2.824c-0.69 0-1.25 0.56-1.25 1.25s0.56 1.25 1.25 1.25v0h2.824c0.608 5.219 4.707 9.318 9.874 9.921l0.053 0.005v2.824c0 0.69 0.56 1.25 1.25 1.25s1.25-0.56 1.25-1.25v0-2.824c5.219-0.608 9.318-4.707 9.921-9.874l0.005-0.053h2.824c0.69 0 1.25-0.56 1.25-1.25s-0.56-1.25-1.25-1.25v0zM17.25 24.624v-2.624c0-0.69-0.56-1.25-1.25-1.25s-1.25 0.56-1.25 1.25v0 2.624c-3.821-0.57-6.803-3.553-7.368-7.326l-0.006-0.048h2.624c0.69 0 1.25-0.56 1.25-1.25s-0.56-1.25-1.25-1.25v0h-2.624c0.57-3.821 3.553-6.804 7.326-7.368l0.048-0.006v2.624c0 0.69 0.56 1.25 1.25 1.25s1.25-0.56 1.25-1.25v0-2.624c3.821 0.57 6.803 3.553 7.368 7.326l0.006 0.048h-2.624c-0.69 0-1.25 0.56-1.25 1.25s0.56 1.25 1.25 1.25v0h2.624c-0.571 3.821-3.553 6.803-7.326 7.368l-0.048 0.006z\"></path>\n </svg>}\n \n </div>\n </div></>)\n\n}\n\n\n","import * as L from 'leaflet';\n\nconst createSvg = (shape: string, markerColor: string, borderColor: string) => {\n const svgMap = {\n circle: '<svg width=\"32\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.5 2.746c-8.284 0-15 6.853-15 15.307 0 .963.098 1.902.265 2.816a15.413 15.413 0 002.262 5.684l.134.193 12.295 17.785 12.439-17.863.056-.08a15.422 15.422 0 002.343-6.112c.123-.791.206-1.597.206-2.423 0-8.454-6.716-15.307-15-15.307\" fill=\"' + markerColor + '\" /><path d=\"M17.488 2.748c-8.284 0-15 6.853-15 15.307 0 .963.098 1.902.265 2.816a15.413 15.413 0 002.262 5.684l.134.193 12.295 17.785 12.44-17.863.055-.08a15.422 15.422 0 002.343-6.112c.124-.791.206-1.597.206-2.423 0-8.454-6.716-15.307-15-15.307m0 1.071c7.68 0 13.929 6.386 13.929 14.236 0 .685-.064 1.423-.193 2.258-.325 2.075-1.059 3.99-2.164 5.667l-.055.078-11.557 16.595L6.032 26.14l-.12-.174a14.256 14.256 0 01-2.105-5.29 14.698 14.698 0 01-.247-2.62c0-7.851 6.249-14.237 13.928-14.237\" fill=\"' + borderColor + '\" opacity=\"1\" /></svg>',\n square: '<svg width=\"33\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M28.205 3.217H6.777c-2.367 0-4.286 1.87-4.286 4.179v19.847c0 2.308 1.919 4.179 4.286 4.179h5.357l5.337 13.58 5.377-13.58h5.357c2.366 0 4.285-1.87 4.285-4.179V7.396c0-2.308-1.919-4.179-4.285-4.179\" fill=\"' + markerColor + '\" /><g opacity=\"1\" transform=\"matrix(1.0714 0 0 -1.0714 -233.22 146.783)\"><path d=\"M244 134h-20c-2.209 0-4-1.746-4-3.9v-18.525c0-2.154 1.791-3.9 4-3.9h5L233.982 95 239 107.675h5c2.209 0 4 1.746 4 3.9V130.1c0 2.154-1.791 3.9-4 3.9m0-1c1.654 0 3-1.301 3-2.9v-18.525c0-1.599-1.346-2.9-3-2.9h-5.68l-.25-.632-4.084-10.318-4.055 10.316-.249.634H224c-1.654 0-3 1.301-3 2.9V130.1c0 1.599 1.346 2.9 3 2.9h20\" fill=\"' + borderColor + '\" /></g></svg>',\n star: '<svg width=\"34\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M32.92 16.93l-3.525-3.525V8.419a1.983 1.983 0 00-1.983-1.982h-4.985L18.9 2.91a1.984 1.984 0 00-2.803 0l-3.524 3.526H7.588a1.983 1.983 0 00-1.982 1.982v4.986L2.081 16.93a1.982 1.982 0 000 2.803l3.525 3.526v4.984c0 1.096.888 1.983 1.982 1.983h4.986L17.457 45l4.97-14.773h4.985a1.983 1.983 0 001.983-1.983V23.26l3.525-3.526a1.982 1.982 0 000-2.803\" fill=\"' + markerColor + '\" /><g opacity=\".15\" transform=\"matrix(1.0667 0 0 -1.0667 -347.3 97.26)\"><path d=\"M342 89c-.476 0-.951-.181-1.314-.544l-3.305-3.305h-4.673a1.858 1.858 0 01-1.859-1.858v-4.674l-3.305-3.305a1.857 1.857 0 010-2.627l3.305-3.305v-4.674a1.86 1.86 0 011.859-1.859h4.673L341.959 49l4.659 13.849h4.674a1.86 1.86 0 011.859 1.859v4.674l3.305 3.305a1.858 1.858 0 010 2.627l-3.305 3.305v4.674a1.859 1.859 0 01-1.859 1.858h-4.674l-3.304 3.305A1.851 1.851 0 01342 89m0-1a.853.853 0 00.607-.251l3.304-3.305.293-.293h5.088a.86.86 0 00.859-.858v-5.088l3.598-3.598A.852.852 0 00356 74a.85.85 0 00-.251-.606l-3.598-3.598v-5.088a.86.86 0 00-.859-.859h-5.393l-.229-.681-3.702-11.006-3.637 11.001-.227.686h-5.396a.86.86 0 00-.859.859v5.088l-3.598 3.598c-.162.162-.251.377-.251.606s.089.445.251.607l3.598 3.598v5.088a.86.86 0 00.859.858h5.087l3.598 3.598A.853.853 0 00342 88\" fill=\"#231f20\" /></g></svg>',\n penta: '<svg width=\"33\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1.872 17.35L9.679 2.993h15.615L33.1 17.35 17.486 44.992z\" fill=\"' + markerColor + '\" /><g opacity=\".15\" transform=\"matrix(1.0769 0 0 -1.0769 -272.731 48.23)\"><path d=\"M276.75 42h-14.5L255 28.668 269.5 3 284 28.668zm-.595-1l6.701-12.323L269.5 5.033l-13.356 23.644L262.845 41z\" fill=\"#231f20\" /></g></svg>'\n };\n return svgMap[shape];\n}\n\nconst addIcon = (icon: string) => {\n switch (icon) {\n case \"circle-solid\":\n return '<svg fill=\"#fff\" class=\"circle-icon\" width=\"13\"xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\"M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z\"/></svg>';\n break;\n case \"calendar-days-solid\":\n return '<svg fill=\"#fff\" class=\"calendar-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d=\"M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z\"/></svg>';\n break;\n case \"user\":\n return '<svg fill=\"#fff\" class=\"user-icon\" xmlns=\"http://www.w3.org/2000/svg\" height=\"1.5em\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d=\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"/></svg>'\n case \"fire\":\n return '<svg fill=\"#fff\" class=\"fire-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 19.534 26.387\"><path d=\"M7.15 26.05C2.894 24.876.006 21.028.006 16.53c0-4.036 2.718-8.378 4.38-6.999.289.24.383.993.383 3.074 0 3.3.46 4.508 1.997 5.237 2.512 1.192 5.206-1.18 4.506-3.969-.097-.386-.99-1.562-1.986-2.614C7.04 8.887 6.583 8.026 6.583 6.176c0-2.333 2.02-6.182 3.244-6.182.59 0 1.292.98 1.292 1.805 0 1.227.951 2.596 3.727 5.362 3.655 3.642 4.493 5.216 4.671 8.776.143 2.847-.365 4.593-1.93 6.644-2.332 3.054-6.69 4.503-10.437 3.47z\"/></svg>'\n case \"tree\":\n return '<svg fill=\"#fff\" class=\"tree-icon\" xmlns=\"http://www.w3.org/2000/svg\" height=\"2em\" xml:space=\"preserve\" viewBox=\"0 0 24 24\"><path d=\"M11 21v-4.3c-.5.2-1 .3-1.5.3C7 17 5 15 5 12.5c0-1.3.5-2.4 1.4-3.2-.3-.6-.4-1.2-.4-1.8C6 5 8 3 10.5 3c1.6 0 2.9.8 3.8 2h.2c3 0 5.5 2.5 5.5 5.5S17.5 16 14.5 16c-.5 0-1-.1-1.5-.2V21h-2z\"/><path fill=\"none\" d=\"M0 0h24v24H0z\"/></svg>'\n case \"music\":\n return '<svg fill=\"#fff\" class=\"music-icon\" xmlns=\"http://www.w3.org/2000/svg\"height=\"1.4em\" viewBox=\"0 0 512 512\"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d=\"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"/></svg>'\n case \"drum\":\n return '<svg class=\"drum-icon\" stroke=\"#fff\" fill=\"#fff\" stroke-width=\"0\" viewBox=\"0 0 32 32\" height=\"1.8em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 27.1875 5.09375 L 16.125 10.34375 C 15.804688 10.128906 15.414063 10 15 10 C 13.894531 10 13 10.894531 13 12 C 13 13.105469 13.894531 14 15 14 C 16.050781 14 16.921875 13.1875 17 12.15625 L 23.0625 9.28125 C 24.878906 10.046875 26 11.046875 26 12 C 26 13.886719 21.722656 16 16 16 C 10.277344 16 6 13.886719 6 12 C 6 10.113281 10.277344 8 16 8 C 16.171875 8 16.328125 7.996094 16.5 8 L 20.03125 6.34375 C 18.777344 6.132813 17.433594 6 16 6 C 9.160156 6 4 8.578125 4 12 L 4 22 C 4 22.988281 4.445313 23.894531 5.125 24.625 C 5.804688 25.355469 6.730469 25.945313 7.8125 26.4375 C 9.976563 27.421875 12.839844 28 16 28 C 19.160156 28 22.023438 27.421875 24.1875 26.4375 C 25.269531 25.945313 26.195313 25.355469 26.875 24.625 C 27.554688 23.894531 28 22.988281 28 22 L 28 12 C 28 10.523438 27.023438 9.210938 25.375 8.1875 L 28.03125 6.90625 Z M 6 15.40625 C 7.015625 16.171875 8.378906 16.800781 10 17.25 L 10 25.15625 C 9.5 25 9.042969 24.816406 8.625 24.625 C 7.71875 24.210938 7.027344 23.714844 6.59375 23.25 C 6.160156 22.785156 6 22.394531 6 22 Z M 26 15.40625 L 26 22 C 26 22.394531 25.839844 22.785156 25.40625 23.25 C 24.972656 23.714844 24.28125 24.210938 23.375 24.625 C 22.957031 24.816406 22.5 25 22 25.15625 L 22 17.25 C 23.621094 16.800781 24.984375 16.171875 26 15.40625 Z M 12 17.6875 C 13.242188 17.894531 14.582031 18 16 18 C 17.417969 18 18.757813 17.894531 20 17.6875 L 20 25.625 C 18.769531 25.855469 17.421875 26 16 26 C 14.578125 26 13.230469 25.855469 12 25.625 Z\"></path></svg>'\n default:\n return \"\";\n }\n}\n\nconst MarkerIconFactory = (shape: string, color1: string, color2: string, icon: string) => {\n return L.divIcon({\n html: `${createSvg(shape, color1, color2)}${addIcon(icon)}`,\n iconAnchor: [17, 40],\n popupAnchor: [0, -40],\n iconSize: new L.Point(40, 46),\n className: \"leaflet-data-marker\",\n shadowAnchor: [0, 0]\n });\n}\n\nexport default MarkerIconFactory;\n","export function decodeTag(string : string) { \n let formatedTag = string.replace(/_/g, \"\\u00A0\"); \n return formatedTag = formatedTag.charAt(0).toUpperCase() + formatedTag.slice(1);\n}\n\nexport function encodeTag(string : string) { \n return string.replace(/\\s+/g, \"_\"); \n}","import * as React from 'react'\nimport { useAddFilterTag, useFilterTags, useResetFilterTags, useSetSearchPhrase } from '../../hooks/useFilter'\nimport useWindowDimensions from '../../hooks/useWindowDimension';\nimport axios from 'axios';\nimport { useRef, useState } from 'react';\nimport { useMap, useMapEvents } from 'react-leaflet';\nimport { LatLng, LatLngBounds } from 'leaflet';\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useTags } from '../../hooks/useTags';\nimport { useItems } from '../../hooks/useItems';\nimport { useLeafletRefs } from '../../hooks/useLeafletRefs';\nimport { getValue } from '../../../../Utils/GetValue';\nimport { LocateControl } from './LocateControl';\nimport * as L from 'leaflet';\nimport MarkerIconFactory from '../../../../Utils/MarkerIconFactory';\nimport { decodeTag } from '../../../../Utils/FormatTags';\n\n\n\nexport const SearchControl = ({ clusterRef }) => {\n\n const windowDimensions = useWindowDimensions();\n const [popupOpen, setPopupOpen] = useState(false);\n\n const [value, setValue] = useState('');\n const [geoResults, setGeoResults] = useState<Array<any>>([]);\n const [tagsResults, setTagsResults] = useState<Array<any>>([]);\n const [itemsResults, setItemsResults] = useState<Array<any>>([]);\n const [hideSuggestions, setHideSuggestions] = useState(true);\n\n const map = useMap();\n const tags = useTags();\n const items = useItems();\n const leafletRefs = useLeafletRefs();\n const addFilterTag = useAddFilterTag();\n const resetFilterTags = useResetFilterTags();\n const filterTags = useFilterTags();\n\n useMapEvents({\n popupopen: () => { \n setPopupOpen(true);\n },\n popupclose: () => {\n setPopupOpen(false);\n }\n })\n\n useDebounce(() => {\n const searchGeo = async () => {\n try {\n const { data } = await axios.get(\n `https://photon.komoot.io/api/?q=${value}&limit=5`\n );\n setGeoResults(data.features);\n } catch (error) {\n console.log(error);\n }\n };\n searchGeo();\n setItemsResults(items.filter(item => {\n if (item.layer?.itemNameField) item.name = getValue(item, item.layer.itemNameField)\n if (item.layer?.itemTextField) item.text = getValue(item, item.layer.itemTextField)\n return item.name?.toLowerCase().includes(value.toLowerCase()) || item.text?.toLowerCase().includes(value.toLowerCase())\n }))\n let phrase = value;\n if(value.startsWith(\"#\")) phrase = value.substring(1);\n setTagsResults(tags.filter(tag => tag.name?.toLowerCase().includes(phrase.toLowerCase())))\n\n }, 500, [value]);\n\n const hide = async () => {\n setTimeout(() => {\n setHideSuggestions(true);\n }, 200);\n }\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n return (<>\n {!(windowDimensions.height < 500 && popupOpen && hideSuggestions) &&\n <div className='tw-w-[calc(100vw-2rem)] tw-max-w-[22rem] '>\n <div className='flex tw-flex-row'>\n <input type=\"text\" placeholder=\"search ...\" autoComplete=\"off\" value={value} className=\"tw-input tw-input-bordered tw-w-full tw-shadow-xl tw-rounded-lg tw-mr-2\"\n ref={searchInput}\n onChange={(e) => setValue(e.target.value)}\n onFocus={() => {\n setHideSuggestions(false);\n if(windowDimensions.width < 500) map.closePopup();\n }}\n onBlur={() => hide()} />\n <LocateControl />\n </div>\n {value.length > 0 && <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-absolute tw-right-16 tw-top-2\" onClick={() => setValue(\"\")}>βœ•</button>}\n {hideSuggestions || Array.from(geoResults).length == 0 && itemsResults.length == 0 && tagsResults.length == 0 && !isGeoCoordinate(value)|| value.length == 0? \"\" :\n <div className='tw-card tw-card-body tw-bg-base-100 tw-p-4 tw-mt-2 tw-shadow-xl tw-overflow-y-auto tw-max-h-[calc(100dvh-152px)]'>\n {tagsResults.length > 0 &&\n <div className='tw-flex tw-flex-wrap tw-max-h-16 tw-overflow-hidden tw-min-h-[32px]'>\n {tagsResults.map(tag => (\n <div key={tag.name} className='tw-rounded-2xl tw-text-white tw-p-1 tw-px-4 tw-shadow-md tw-card tw-mr-2 tw-mb-2 tw-cursor-pointer' style={{ backgroundColor: tag.color }} onClick={() => {\n addFilterTag(tag)\n let params = new URLSearchParams(window.location.search);\n window.history.pushState({}, \"\", \"/\" + `${params? `?${params}` : \"\"}`);\n }}>\n <b>#{decodeTag(tag.name)}</b>\n </div>\n ))}\n </div>\n }\n\n {itemsResults.length > 0 && tagsResults.length > 0 && <hr className='tw-opacity-50'></hr>}\n {itemsResults.slice(0, 5).map(item => (\n <div key={item.id} className='tw-cursor-pointer hover:tw-font-bold' onClick={() => {\n const marker = Object.entries(leafletRefs).find(r => r[1].item == item)?.[1].marker;\n\n if (filterTags.length > 0) {\n marker !== null && window.history.pushState({}, \"\", `/${item.layer.name}/${item.id}`)\n resetFilterTags();\n hide();\n }\n else {\n marker !== null && clusterRef?.current?.zoomToShowLayer(marker, () => {\n marker?.openPopup();\n hide();\n });\n }\n }\n }><div className='tw-flex tw-flex-row'>\n <item.layer.menuIcon className=\"tw-text-current tw-w-5 tw-mr-2 tw-mt-0\" />\n <div>\n <div className='tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{item.name}</div>\n <div className='tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{item.text}</div>\n </div>\n </div>\n </div>\n ))}\n {Array.from(geoResults).length > 0 && (itemsResults.length > 0 || tagsResults.length > 0) && <hr className='tw-opacity-50'></hr>}\n {Array.from(geoResults).map((geo) => (\n <div className='tw-flex tw-flex-row hover:tw-font-bold tw-cursor-pointer' key={Math.random()} onClick={() => {\n searchInput.current?.blur();\n L.marker(new LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]),{icon: MarkerIconFactory(\"circle\", \"#777\", \"RGBA(35, 31, 32, 0.2)\", \"circle-solid\")}).addTo(map).bindPopup(`<h3 class=\"tw-text-base tw-font-bold\">${geo?.properties.name ? geo?.properties.name : value}<h3>${capitalizeFirstLetter(geo?.properties?.osm_value)}`).openPopup().addEventListener(\"popupclose\", (e) => {console.log(e.target.remove())});\n if (geo.properties.extent) map.fitBounds(new LatLngBounds(new LatLng(geo.properties.extent[1], geo.properties.extent[0]), new LatLng(geo.properties.extent[3], geo.properties.extent[2])));\n else map.setView(new LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]), 15, { duration: 1 });\n hide();\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"1.5\" stroke=\"currentColor\" className=\"tw-text-current tw-mr-2 tw-mt-0 tw-w-4\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\" />\n </svg>\n\n <div>\n <div className='tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{geo?.properties.name ? geo?.properties.name : value}</div>\n <div className='tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{geo?.properties?.city && `${capitalizeFirstLetter(geo?.properties?.city)}, `} {geo?.properties?.osm_value && geo?.properties?.osm_value !== \"yes\" && geo?.properties?.osm_value !== \"primary\" && geo?.properties?.osm_value !== \"path\" && geo?.properties?.osm_value !== \"secondary\" && geo?.properties?.osm_value !== \"residential\" && geo?.properties?.osm_value !== \"unclassified\" && `${capitalizeFirstLetter(geo?.properties?.osm_value)}, `} {geo.properties.state && `${geo.properties.state}, `} {geo.properties.country && geo.properties.country}</div>\n </div>\n </div>\n\n ))}\n {isGeoCoordinate(value) &&\n <div className='tw-flex tw-flex-row hover:tw-font-bold tw-cursor-pointer' onClick={() => {\n L.marker(new LatLng(extractCoordinates(value)![0], extractCoordinates(value)![1]),{icon: MarkerIconFactory(\"circle\", \"#777\", \"RGBA(35, 31, 32, 0.2)\", \"circle-solid\")}).addTo(map).bindPopup(`<h3 class=\"tw-text-base tw-font-bold\">${extractCoordinates(value)![0]}, ${extractCoordinates(value)![1]}</h3>`).openPopup().addEventListener(\"popupclose\", (e) => {console.log(e.target.remove())});\n map.setView(new LatLng(extractCoordinates(value)![0], extractCoordinates(value)![1]), 15, { duration: 1 })\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"tw-text-current tw-mr-2 tw-mt-0 tw-w-4\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5\" />\n </svg>\n\n <div>\n <div className='tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{value}</div>\n <div className='tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{\"Coordiante\"}</div>\n </div>\n </div>\n }\n </div>}\n </div>\n }\n </>\n\n )\n}\n\nfunction isGeoCoordinate(input) { \n const geokoordinatenRegex = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\n return geokoordinatenRegex.test(input);\n}\n\nfunction extractCoordinates(input): number[] | null {\n const result = input.split(\",\")\n if (result) {\n const latitude = parseFloat(result[0]);\n const longitude = parseFloat(result[1]);\n if (!isNaN(latitude) && !isNaN(longitude)) {\n return [latitude, longitude];\n }\n }\n return null; // Invalid input or error\n}\n\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import * as React from 'react'\nimport * as L from 'leaflet'\nimport { useLayers } from '../../hooks/useLayers';\nimport { useAddVisibleLayer, useIsLayerVisible, useToggleVisibleLayer } from '../../hooks/useFilter';\nimport { useEffect } from 'react';\n\nexport function LayerControl() {\n\n const [open, setOpen] = React.useState(false);\n\n const layers = useLayers();\n\n useEffect(() => {\n layers.map(layer =>\n addVisibleLayer(layer)\n )\n }, [layers])\n\n const isLayerVisible = useIsLayerVisible();\n const toggleVisibleLayer = useToggleVisibleLayer();\n const addVisibleLayer = useAddVisibleLayer();\n\n return (\n <div className=\"tw-card tw-bg-base-100 tw-shadow-xl \">\n {\n open ?\n <div className=\"tw-card-body tw-p-2 tw-w-36 tw-transition-all tw-duration-300\">\n <label className=\"tw-btn tw-btn-sm tw-rounded-2xl tw-btn-circle tw-btn-ghost hover:tw-bg-transparent tw-absolute tw-right-0 tw-top-0 tw-text-gray-600\" onClick={() => {\n setOpen(false)\n }}>\n <p className='tw-text-center '>βœ•</p></label>\n <ul className='tw-flex-row'>\n {\n layers.map(layer =>\n <li key={layer.name}><label htmlFor={layer.name} className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-1\"><input id={layer.name} onChange={() => toggleVisibleLayer(layer)} type=\"checkbox\" className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={isLayerVisible(layer)} /><span className='tw-text-sm tw-label-text tw-mx-2 tw-cursor-pointer'>{layer.name}</span></label></li>\n )\n }\n </ul>\n </div>\n :\n <div className=\"tw-card-body hover:tw-bg-slate-300 tw-card tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer\" onClick={() => {\n setOpen(true)\n }}>\n <svg version=\"1.1\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path id=\"svg_1\" fill=\"currentColor\" d=\"m2.75565,11.90727l-1.03852,0.28372c-0.77718,0.38859 -0.77718,1.0138 0,1.4023l7.0156,3.5078c0.77718,0.38859 2.0275,0.38859 2.8047,0l7.0156,-3.5078c0.77718,-0.38859 0.77718,-1.0138 0,-1.4023l-0.63311,-0.48643l-4.67718,2.23624c-1.5452,0.77262 -3.31877,1.58343 -4.86407,0.81081l-5.62302,-2.84434z\" />\n <path id=\"svg_2\" strokeWidth=\"2\" stroke=\"currentColor\" fill=\"none\" d=\"m11.247,4.30851l6.2349,3.0877c0.69083,0.34211 0.69083,0.89295 0,1.2351l-6.2349,3.0877c-0.69083,0.34211 -1.8031,0.34212 -2.494,0l-6.2349,-3.0877c-0.69083,-0.34211 -0.69083,-0.89295 0,-1.2351l6.2349,-3.0877c0.69083,-0.34211 1.8031,-0.34211 2.494,0z\" />\n </svg>\n </div>\n\n }\n\n </div>\n )\n}\n","import { useCallback, useState } from 'react';\n\n\nimport { createContext, useContext } from \"react\";\nimport * as React from \"react\";\n\n\n\ntype UseQuestManagerResult = ReturnType<typeof useQuestsManager>;\n\nconst QuestContext = createContext<UseQuestManagerResult>({\n open: false,\n setQuestsOpen: () => { }\n});\n\nfunction useQuestsManager(initialOpen: boolean): {\n open: boolean;\n setQuestsOpen: (open: boolean) => void;\n} {\n const [open, setOpen] = useState<boolean>(initialOpen);\n\n const setQuestsOpen = useCallback((questOpen: boolean) => {\n setOpen(questOpen); \n }, []);\n\n return { open, setQuestsOpen };\n}\n\nexport const QuestsProvider: React.FunctionComponent<{\n initialOpen: boolean, children?: React.ReactNode\n}> = ({ initialOpen, children }) => (\n <QuestContext.Provider value={useQuestsManager(initialOpen)}>\n {children}\n </QuestContext.Provider>\n);\n\nexport const useQuestsOpen = (): boolean => {\n const { open } = useContext(QuestContext);\n return open;\n};\n\n\nexport const useSetQuestOpen = (): UseQuestManagerResult[\"setQuestsOpen\"] => {\n const { setQuestsOpen } = useContext(QuestContext);\n return setQuestsOpen;\n}\n","import * as React from 'react'\nimport { useQuestsOpen, useSetQuestOpen } from '../../../Gaming/hooks/useQuests';\n\n\nexport function QuestControl() {\n\n const questsOpen = useQuestsOpen();\n const setQuestsOpen = useSetQuestOpen();\n\n return (\n <>\n {questsOpen ? \"\" :\n <div className=\"tw-card tw-bg-base-100 tw-shadow-xl tw-my-2 tw-w-10\" onClick={e => e.stopPropagation()}>\n \n <div className=\"tw-card-body hover:tw-bg-slate-300 tw-rounded-2xl tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer\" onClick={() => setQuestsOpen(true)}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" stroke=\"currentColor\" viewBox=\"0 0 448 512\"><path d=\"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"/></svg>\n </div>\n\n </div>\n }\n </>\n )\n}\n","import * as L from 'leaflet'\nimport * as React from 'react'\n\n\n\nexport const Control = ({ position, children, zIndex }: { position: \"topLeft\" | \"topRight\" | \"bottomLeft\" | \"bottomRight\", children: React.ReactNode, zIndex: string }) => {\n\n\n const controlContainerRef = React.createRef<HTMLDivElement>()\n\n\n React.useEffect(() => {\n if (controlContainerRef.current !== null) {\n L.DomEvent.disableClickPropagation(controlContainerRef.current)\n L.DomEvent.disableScrollPropagation(controlContainerRef.current)\n }\n }, [controlContainerRef])\n\n return (\n <div ref={controlContainerRef} style={{zIndex: zIndex}} className={`tw-absolute tw-z-[999] tw-flex-col ${position === 'topLeft' && \"tw-top-4 tw-left-4\"} ${position === 'bottomLeft' && \"tw-bottom-4 tw-left-4\"} ${position === 'topRight' && \"tw-bottom-4 tw-right-4\"} ${position === 'bottomRight' && \"tw-bottom-4 tw-right-4\"}`}>\n\n {children}\n </div>\n )\n}\n","import * as React from 'react'\nimport { useFilterTags, useRemoveFilterTag } from '../../hooks/useFilter';\nimport { decodeTag } from '../../../../Utils/FormatTags';\n\nexport const TagsControl = () => {\n\n const filterTags = useFilterTags();\n const removeFilterTag = useRemoveFilterTag();\n\n return (\n <div className='tw-flex tw-flex-wrap tw-mt-4 tw-w-[calc(100vw-2rem)] tw-max-w-xs'>\n {\n filterTags.map(tag =>\n <div key={tag.id} className='tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-mr-2 tw-mb-2' style={{ backgroundColor: tag.color }}>\n <div className=\"tw-card-actions tw-justify-end\">\n <label className=\"tw-btn tw-btn-xs tw-btn-circle tw-absolute tw--right-2 tw--top-2 tw-bg-white tw-text-gray-600\" onClick={() => (removeFilterTag(tag.name!))}>βœ•</label>\n </div><b>#{decodeTag(tag.name)}</b>\n </div>\n )\n }\n</div>)\n}\n\n\n","import { TileLayer, MapContainer, useMapEvents } from \"react-leaflet\";\nimport \"leaflet/dist/leaflet.css\";\nimport * as React from \"react\";\nimport { LayerProps, UtopiaMapProps } from \"../../types\"\nimport \"./UtopiaMap.css\"\nimport { LatLng } from \"leaflet\";\nimport MarkerClusterGroup from 'react-leaflet-cluster'\nimport AddButton from \"./Subcomponents/AddButton\";\nimport { useEffect, useState } from \"react\";\nimport { ItemFormPopupProps } from \"./Subcomponents/ItemFormPopup\";\nimport { ItemsProvider } from \"./hooks/useItems\";\nimport { TagsProvider } from \"./hooks/useTags\";\nimport { LayersProvider } from \"./hooks/useLayers\";\nimport { FilterProvider } from \"./hooks/useFilter\";\nimport { SearchControl } from \"./Subcomponents/Controls/SearchControl\";\nimport { PermissionsProvider } from \"./hooks/usePermissions\";\nimport { LeafletRefsProvider } from \"./hooks/useLeafletRefs\";\nimport { LayerControl } from \"./Subcomponents/Controls/LayerControl\";\nimport { QuestControl } from \"./Subcomponents/Controls/QuestControl\";\nimport { Control } from \"./Subcomponents/Controls/Control\";\nimport { Outlet, useLocation } from \"react-router-dom\";\nimport { TagsControl } from \"./Subcomponents/Controls/TagsControl\";\n\n\nexport interface MapEventListenerProps {\n selectNewItemPosition: LayerProps | null,\n setSelectNewItemPosition: React.Dispatch<any>,\n setItemFormPopup: React.Dispatch<React.SetStateAction<any>>\n}\n\n\n// for refreshing map on resize (needs to be implemented)\nconst mapDivRef = React.createRef();\n\nfunction UtopiaMap({\n height = \"500px\",\n width = \"100%\",\n center = [50.6, 9.5],\n zoom = 10,\n children }\n : UtopiaMapProps) {\n\n function MapEventListener(props: MapEventListenerProps) {\n useMapEvents({\n click: (e) => {\n let params = new URLSearchParams(window.location.search);\n window.history.pushState({}, \"\", `/`+ `${params.toString() !== \"\" ? `?${params}` : \"\"}`)\n document.title = document.title.split(\"-\")[0];\n document.querySelector('meta[property=\"og:title\"]')?.setAttribute(\"content\", document.title);\n document.querySelector('meta[property=\"og:description\"]')?.setAttribute(\"content\", `${document.querySelector('meta[name=\"description\"]')?.getAttribute(\"content\")}`);\n\n console.log(e.latlng.lat + ',' + e.latlng.lng);\n if (props.selectNewItemPosition != null) {\n props.setItemFormPopup({ layer: props.selectNewItemPosition, position: e.latlng })\n props.setSelectNewItemPosition(null)\n }\n },\n moveend: (e) => {\n console.log(e);\n }\n \n \n })\n return null\n }\n\n const [selectNewItemPosition, setSelectNewItemPosition] = useState<LayerProps | null>(null);\n const [itemFormPopup, setItemFormPopup] = useState<ItemFormPopupProps | null>(null);\n\n const clusterRef = React.useRef();\n\n const location = useLocation();\n\n useEffect(() => {\n let params = new URLSearchParams(location.search);\n let urlPosition = params.get(\"position\");\n\n\n }, [location]);\n\n\n return (\n <>\n \n <LayersProvider initialLayers={[]}>\n <TagsProvider initialTags={[]}>\n <PermissionsProvider initialPermissions={[]}>\n <FilterProvider initialTags={[]}>\n <ItemsProvider initialItems={[]}>\n <LeafletRefsProvider initialLeafletRefs={{}}>\n <div className={(selectNewItemPosition != null ? \"crosshair-cursor-enabled\" : undefined)}>\n <MapContainer ref={mapDivRef} style={{ height: height, width: width }} center={new LatLng(center[0], center[1])} zoom={zoom} zoomControl={false}>\n <Outlet></Outlet>\n <Control position='topLeft' zIndex=\"1000\">\n <SearchControl clusterRef={clusterRef} />\n <TagsControl />\n </Control>\n <Control position='bottomLeft' zIndex=\"999\">\n <QuestControl></QuestControl>\n <LayerControl></LayerControl>\n </Control>\n <TileLayer\n attribution='&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n url=\"https://tile.osmand.net/hd/{z}/{x}/{y}.png\" />\n <MarkerClusterGroup ref={clusterRef} showCoverageOnHover chunkedLoading maxClusterRadius={50} removeOutsideVisibleBounds={false}>\n {\n React.Children.toArray(children).map((child) =>\n React.isValidElement<{ setItemFormPopup: React.Dispatch<React.SetStateAction<ItemFormPopupProps>>, itemFormPopup: ItemFormPopupProps | null, clusterRef: React.MutableRefObject<undefined> }>(child) ?\n React.cloneElement(child, { setItemFormPopup: setItemFormPopup, itemFormPopup: itemFormPopup, clusterRef: clusterRef }) : child\n )\n }\n </MarkerClusterGroup>\n <MapEventListener setSelectNewItemPosition={setSelectNewItemPosition} selectNewItemPosition={selectNewItemPosition} setItemFormPopup={setItemFormPopup} />\n </MapContainer>\n <AddButton setSelectNewItemPosition={setSelectNewItemPosition}></AddButton>\n {selectNewItemPosition != null &&\n <div className=\"tw-button tw-z-1000 tw-absolute tw-right-5 tw-top-4 tw-drop-shadow-md\">\n <div className=\"tw-alert tw-bg-base-100 tw-text-base-content\">\n <div>\n <span>Select {selectNewItemPosition.name} position!</span>\n </div>\n </div>\n </div>\n }\n </div>\n </LeafletRefsProvider>\n </ItemsProvider>\n </FilterProvider>\n </PermissionsProvider>\n </TagsProvider>\n </LayersProvider>\n </>\n );\n}\n\nexport { UtopiaMap };","import { useCallback, useState } from 'react';\n\n\nimport { createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { AssetsApi } from '../../../types';\n\n\n\ntype UseAssetManagerResult = ReturnType<typeof useAssetsManager>;\n\nconst AssetContext = createContext<UseAssetManagerResult>({\n api: {} as AssetsApi,\n setAssetsApi: () => { }\n});\n\nfunction useAssetsManager(): {\n api: AssetsApi;\n setAssetsApi: (api: AssetsApi) => void;\n} {\n const [api, setApi] = useState<AssetsApi>({} as AssetsApi);\n\n const setAssetsApi = useCallback((api: AssetsApi) => {\n setApi(api);\n }, []);\n\n return { api, setAssetsApi };\n}\n\nexport const AssetsProvider: React.FunctionComponent<{\n children?: React.ReactNode\n}> = ({ children }) => (\n <AssetContext.Provider value={useAssetsManager()}>\n {children}\n </AssetContext.Provider>\n);\n\nexport const useAssetApi = (): AssetsApi => {\n const { api } = useContext(AssetContext);\n return api;\n};\n\n\nexport const useSetAssetApi = (): UseAssetManagerResult[\"setAssetsApi\"] => {\n const { setAssetsApi } = useContext(AssetContext);\n return setAssetsApi;\n}\n","import * as React from \"react\";\nimport { MouseEvent, useEffect, useRef } from \"react\";\n\n\nconst isClickInsideRectangle = (e: MouseEvent, element: HTMLElement) => {\n const r = element.getBoundingClientRect();\n\n return (\n e.clientX > r.left &&\n e.clientX < r.right &&\n e.clientY > r.top &&\n e.clientY < r.bottom\n );\n};\n\ntype Props = {\n title: string;\n isOpened: boolean;\n onClose: () => void;\n children: React.ReactNode;\n showCloseButton?: boolean\n};\n\nconst DialogModal = ({\n title,\n isOpened,\n onClose,\n children,\n showCloseButton = true\n}: Props) => {\n \n const ref = useRef<HTMLDialogElement>(null);\n\n useEffect(() => {\n if (isOpened) {\n ref.current?.showModal();\n ref.current?.classList.remove(\"tw-hidden\"); \n document.body.classList.add(\"modal-open\"); // prevent bg scroll\n } else {\n ref.current?.close();\n ref.current?.classList.add(\"tw-hidden\"); \n document.body.classList.remove(\"modal-open\");\n }\n }, [isOpened]);\n\n\n return (\n <dialog className='tw-card tw-shadow-xl tw-absolute tw-right-0 tw-top-0 tw-bottom-0 tw-left-0 tw-m-auto tw-transition-opacity tw-duration-300 tw-p-4 tw-max-w-xl tw-bg-base-100'\n \n ref={ref}\n onCancel={onClose}\n onClick={(e) =>\n ref.current && !isClickInsideRectangle(e, ref.current) && onClose()\n }\n >\n <div className=\"tw-card-body tw-p-2\">\n\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>{title}</h2>\n\n {children}\n {showCloseButton && <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2\" onClick={onClose}>βœ•</button>}\n\n </div>\n </dialog>\n );\n};\n\nexport default DialogModal;\n","import * as React from \"react\"\nimport { useRemoveItem } from \"../../hooks/useItems\";\nimport { useMap } from \"react-leaflet\";\nimport { ItemFormPopupProps } from \"../ItemFormPopup\";\nimport { LatLng } from \"leaflet\";\nimport { Item } from \"../../../../types\";\nimport { toast } from \"react-toastify\";\nimport { useHasUserPermission } from \"../../hooks/usePermissions\";\nimport { useAuth } from \"../../../Auth\";\nimport { getValue } from \"../../../../Utils/GetValue\";\nimport { useAssetApi } from '../../../AppShell/hooks/useAssets'\nimport DialogModal from \"../../../Templates/DialogModal\";\nimport { useNavigate } from \"react-router-dom\";\n\n\n\n\nexport function HeaderView({ item, setItemFormPopup }: {\n item: Item,\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>\n}) {\n\n\n const [modalOpen, setModalOpen] = React.useState<boolean>(false);\n\n const [loading, setLoading] = React.useState<boolean>(false);\n const removeItem = useRemoveItem();\n\n const map = useMap();\n const hasUserPermission = useHasUserPermission();\n\n const { user } = useAuth();\n\n const assetsApi = useAssetApi();\n const navigate = useNavigate();\n\n const avatar = item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField)? assetsApi.url + getValue(item, item.layer?.itemAvatarField ) : undefined;\n const title = item.layer?.itemNameField && item ? getValue(item, item.layer?.itemNameField) : undefined;\n const owner = item.layer?.itemOwnerField && item ? getValue(item, item.layer?.itemOwnerField) : undefined;\n\n\n\n const removeItemFromMap = async (event: React.MouseEvent<HTMLElement>) => {\n setLoading(true);\n let success = false;\n try {\n await item.layer?.api?.deleteItem!(item.id)\n success = true;\n } catch (error) {\n toast.error(error.toString());\n }\n if (success) {\n removeItem(item);\n toast.success(\"Item deleted\");\n }\n setLoading(false);\n map.closePopup();\n let params = new URLSearchParams(window.location.search);\n window.history.pushState({}, \"\", \"/\" + `${params? `?${params}` : \"\"}`);\n event.stopPropagation();\n }\n\n const openDeleteModal = async (event: React.MouseEvent<HTMLElement>) => {\n setModalOpen(true);\n event.stopPropagation();\n }\n\n const openEditPopup = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n map.closePopup();\n if (setItemFormPopup)\n setItemFormPopup({ position: new LatLng(item.position.coordinates[1], item.position.coordinates[0]), layer: item.layer!, item: item, setItemFormPopup: setItemFormPopup })\n }\n\n\n return (\n <>\n <div className='tw-grid tw-grid-cols-6 tw-pb-2'>\n <div className='tw-col-span-5'>\n <div className=\"tw-flex tw-flex-row\">{\n avatar ?\n <div className=\"tw-w-10 tw-rounded-full\">\n <img className=\"tw-rounded-full\" src={`${avatar}?width=80&height=80`} />\n </div>\n :\n \"\"\n }\n <b className={`tw-text-xl tw-font-bold ${avatar ? \"tw-ml-2 tw-mt-1\" : \"\"}`}>{title ? title : item.name}</b>\n\n </div>\n </div>\n <div className='tw-col-span-1'>\n {(item.layer?.api?.deleteItem || item.layer?.api?.updateItem)\n && ((user && owner?.id === user.id) || owner == undefined)\n && (hasUserPermission(item.layer.api?.collectionName!, \"delete\") || hasUserPermission(item.layer.api?.collectionName!, \"update\")) &&\n <div className=\"tw-dropdown tw-dropdown-bottom\">\n <label tabIndex={0} className=\"tw-bg-base-100 tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n </label>\n <ul tabIndex={0} className=\"tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000\">\n {((item.layer.api.updateItem && hasUserPermission(item.layer.api?.collectionName!, \"update\")) || item.layer.customEditLink) && <li>\n <a className=\"!tw-text-base-content tw-cursor-pointer\" onClick={(e) => {\n item.layer?.customEditLink && navigate(item.layer.customEditLink);\n !item.layer?.customEditLink && openEditPopup(e);\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z\" />\n </svg>\n </a>\n </li>}\n\n {item.layer.api.deleteItem && hasUserPermission(item.layer.api?.collectionName!, \"delete\") && <li>\n <a className='tw-cursor-pointer !tw-text-error' onClick={openDeleteModal}>\n {loading ? <span className=\"tw-loading tw-loading-spinner tw-loading-sm\"></span>\n :\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>}\n </a>\n </li>}\n </ul>\n </div>}\n </div>\n </div>\n <DialogModal isOpened={modalOpen} title=\"Are you sure?\" showCloseButton={false} onClose={ () => (setModalOpen(false)) }>\n <span>Do you want to delte <b>{item.name}</b>?</span>\n <div className=\"tw-grid\">\n <div className=\"tw-flex tw-justify-between\">\n <label className=\"tw-btn tw-mt-4 tw-btn-error\" onClick={removeItemFromMap}>Yes</label>\n <label className=\"tw-btn tw-mt-4\" onClick={() => setModalOpen(false)}>No</label>\n </div>\n </div>\n </DialogModal>\n </>\n )\n}\n","export const urlRegex = /(^| )(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,10}(:[0-9]{1,10})?(\\/.*)?$/gm\nexport const mailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/gi;\n\n\nexport function fixUrls(message: string): string {\n \n message = message.replace(urlRegex, function (url) {\n let hyperlink = url.replace(' ', '');\n if (!hyperlink.match('^https?:\\/\\/')) {\n hyperlink = 'https://' + hyperlink;\n } \n return hyperlink\n });\n \n \n return message;\n }","import * as React from 'react'\nimport { Item } from '../../../../types'\nimport { useTags } from '../../hooks/useTags';\nimport { useAddFilterTag } from '../../hooks/useFilter';\nimport { hashTagRegex } from '../../../../Utils/HashTagRegex';\nimport { fixUrls, mailRegex } from '../../../../Utils/ReplaceURLs';\nimport Markdown from 'react-markdown'\nimport { getValue } from '../../../../Utils/GetValue';\nimport remarkBreaks from 'remark-breaks'\nimport { decodeTag } from '../../../../Utils/FormatTags';\n\nexport const TextView = ({ item, truncate = false, itemTextField}: { item?: Item, truncate?: boolean,itemTextField?: string }) => {\n const tags = useTags();\n const addFilterTag = useAddFilterTag();\n\n console.log(item);\n \n\n let text = \"\";\n\n if(itemTextField && item) text = getValue(item, itemTextField);\n else text = item?.layer?.itemTextField && item ? getValue(item, item.layer?.itemTextField) : \"\"\n\n if(item && text && truncate) text = truncateString(text, 100, true);\n\n let replacedText;\n\n item && text ? replacedText = fixUrls(text) : \"\";\n\n replacedText ? replacedText = replacedText.replace(/(?<!\\]?\\()https?:\\/\\/[^\\s\\)]+(?!\\))/g, (url) => {\n let shortUrl = url;\n if (url.match('^https:\\/\\/')) {\n shortUrl = url.split('https://')[1];\n }\n if (url.match('^http:\\/\\/')) {\n shortUrl = url.split('http://')[1];\n }\n return `[${shortUrl}](${url})`\n }) : \"\" ;\n\n replacedText ? replacedText = replacedText.replace(mailRegex, (url) => {\n return `[${url}](mailto:${url})`\n }) : \"\";\n\n replacedText ? replacedText = replacedText.replace(hashTagRegex, (match) => {\n return `[${match}](${match})`\n }) : \"\";\n\n\n\n const CustomH1 = ({ children }) => (\n <h1 className=\"tw-text-xl tw-font-bold\">{children}</h1>\n );\n const CustomH2 = ({ children }) => (\n <h2 className=\"tw-text-lg tw-font-bold\">{children}</h2>\n );\n const CustomH3 = ({ children }) => (\n <h3 className=\"tw-text-base tw-font-bold\">{children}</h3>\n );\n const CustomH4 = ({ children }) => (\n <h4 className=\"tw-text-base tw-font-bold\">{children}</h4>\n );\n const CustomH5 = ({ children }) => (\n <h5 className=\"tw-text-sm tw-font-bold\">{children}</h5>\n );\n const CustomH6 = ({ children }) => (\n <h6 className=\"tw-text-sm tw-font-bold\">{children}</h6>\n );\n const CustomParagraph = ({ children }) => (\n <p className=\"!tw-my-2\">{children}</p>\n );\n const CustomUnorderdList = ({ children }) => (\n <ul className=\"tw-list-disc tw-list-inside\">{children}</ul>\n );\n const CustomOrderdList = ({ children }) => (\n <ol className=\"tw-list-decimal tw-list-inside\">{children}</ol>\n );\n const CustomHorizontalRow = ({ children }) => (\n <hr className=\"tw-border-current\">{children}</hr>\n );\n const CustomImage = ({ alt, src, title }) => (\n <img\n className=\"max-w-full rounded-lg shadow-md\"\n src={src}\n alt={alt}\n title={title}\n />\n );\n const CustomExternalLink = ({ href, children }) => (\n <a className='tw-font-bold'\n href={href}\n target=\"_blank\"\n > {children}</a>\n );\n const CustomHashTagLink = ({ children, tag, item }) => { \n return (\n <a\n style={{ color: tag ? tag.color : '#faa', fontWeight: 'bold', cursor: 'pointer' }}\n key={tag ? tag.name + item!.id : item.id}\n onClick={(e) => { \n e.stopPropagation();\n addFilterTag(tag!);\n // map.fitBounds(items)\n // map.closePopup();\n }}>{decodeTag(children)}</a>\n )};\n\n\n return (\n //@ts-ignore\n <Markdown className={`tw-text-map tw-leading-map `} remarkPlugins={[remarkBreaks]} components={{\n p: CustomParagraph,\n a: ({ href, children }) => {\n // PrΓΌft, ob der Link ein YouTube-Video ist\n const isYouTubeVideo = href?.startsWith('https://www.youtube.com/watch?v=');\n\n if (isYouTubeVideo) {\n const videoId = href?.split('v=')[1].split('&')[0]; // Extrahiert die Video-ID aus der URL\n const youtubeEmbedUrl = `https://www.youtube-nocookie.com/embed/${videoId}`;\n\n return (\n\n <iframe className='tw-w-full'\n src={youtubeEmbedUrl}\n allowFullScreen\n />\n\n );\n }\n if (href?.startsWith(\"#\")) { \n const tag = tags.find(t => t.name.toLowerCase() == decodeURI(href).slice(1).toLowerCase())\n return <CustomHashTagLink tag={tag} item={item}>{children}</CustomHashTagLink>;\n } else {\n return (\n <CustomExternalLink href={href}>{children}</CustomExternalLink>\n );\n }\n },\n ul: CustomUnorderdList,\n ol: CustomOrderdList,\n img: CustomImage,\n hr: CustomHorizontalRow,\n h1: CustomH1,\n h2: CustomH2,\n h3: CustomH3,\n h4: CustomH4,\n h5: CustomH5,\n h6: CustomH6,\n }}>\n {replacedText}\n </Markdown>\n )\n\n\n\n}\n\nfunction truncateString( str, n, useWordBoundary ){\n if (str.length <= n) { return str; }\n const subString = str.slice(0, n-1); // the original check\n return (useWordBoundary \n ? subString.slice(0, subString.lastIndexOf(\" \")) \n : subString) + \"&hellip;\";\n};","// in miliseconds\nconst units = [\n { label: 'year', seconds: 31536000 },\n { label: 'month', seconds: 2592000 },\n { label: 'week', seconds: 604800 },\n { label: 'day', seconds: 86400 },\n { label: 'hour', seconds: 3600 },\n { label: 'minute', seconds: 60 },\n { label: 'second', seconds: 1 }\n];\n\n \nexport const timeAgo = (date: string | number | Date) => {\n const time = Math.floor(\n (new Date().valueOf() - new Date(date).valueOf()) / 1000\n );\n const { interval, unit } = calculateTimeDifference(time);\n const suffix = interval === 1 ? '' : 's';\n return `${interval} ${unit}${suffix} ago`;\n};\n\nconst calculateTimeDifference = (time: number) => {\n for (let { label, seconds } of units) {\n const interval = Math.floor(time / seconds);\n if (interval >= 1) {\n return {\n interval: interval,\n unit: label\n };\n }\n }\n return {\n interval: 0,\n unit: ''\n };\n};\n","import * as React from 'react'\nimport { Popup as LeafletPopup } from 'react-leaflet'\nimport { Item } from '../../../types'\nimport { ItemFormPopupProps } from './ItemFormPopup'\nimport { HeaderView } from './ItemPopupComponents/HeaderView'\nimport { TextView } from './ItemPopupComponents/TextView'\nimport { timeAgo } from '../../../Utils/TimeAgo'\nimport { useState } from 'react'\n\n\nexport interface ItemViewPopupProps {\n item: Item,\n children?: React.ReactNode;\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>\n}\n\n\nexport const ItemViewPopup = React.forwardRef((props: ItemViewPopupProps, ref: any) => {\n\n const [infoExpanded, setInfoExpanded] = useState<Boolean>(false);\n\n return (\n <LeafletPopup ref={ref} maxHeight={377} minWidth={275} maxWidth={275} autoPanPadding={[20, 80]}>\n <div className='tw-bg-base-100 tw-text-base-content'>\n <HeaderView item={props.item} setItemFormPopup={props.setItemFormPopup} />\n <div className='tw-overflow-y-auto tw-overflow-x-hidden tw-max-h-64 fade'>\n {props.children ?\n\n React.Children.toArray(props.children).map((child) =>\n React.isValidElement<{ item: Item, test: string }>(child) ?\n React.cloneElement(child, { item: props.item }) : \"\"\n )\n\n :\n\n <TextView item={props.item} />\n\n }\n\n </div>\n <div className='tw-flex -tw-mb-1 tw-flex-row tw-mr-2 tw-mt-1'>\n\n\n {\n infoExpanded ?\n <p className={`tw-italic tw-min-h-[21px] !tw-my-0 tw-text-gray-500 tw-cursor-pointer`} onClick={() => setInfoExpanded(false)}>{`posted ${props.item && props.item.user_created && props.item.user_created.first_name ? `by ${props.item.user_created.first_name}` : \"\"} ${timeAgo(props.item.date_created!)}`}</p>\n :\n <p className=\"!tw-my-0 tw-min-h-[21px] tw-font-bold tw-cursor-pointer tw-text-gray-500\" onClick={() => setInfoExpanded(true)}>β“˜</p>\n }\n <div className='tw-grow'></div>\n{ //** <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"tw-place-self-end tw-w-4 tw-h-4 tw-mb-1 tw-cursor-pointer\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\" /></svg> */ \n }\n </div>\n </div>\n </LeafletPopup>\n )\n})\n\n","import { LatLng, LatLngTuple, latLng } from \"leaflet\";\nimport { ItemFormPopupProps } from \"./Components/Map/Subcomponents/ItemFormPopup\";\n\nexport interface UtopiaMapProps {\n height?: string,\n width?: string,\n center?: [number,number],\n zoom?: number,\n tags?: Tag[],\n children?: React.ReactNode,\n}\n\nexport interface LayerProps {\n data?: Item[],\n children?: React.ReactNode,\n name: string,\n menuIcon: any,\n menuColor: string,\n menuText: string,\n markerIcon: string,\n markerShape: string,\n markerDefaultColor: string,\n api?: ItemsApi<any>,\n itemNameField?: string,\n itemTextField?: string,\n itemAvatarField?: string,\n itemColorField?: string,\n itemOwnerField?: string,\n itemTagsField?: string,\n itemLatitudeField?: any,\n itemLongitudeField?: any,\n itemOffersField?: string,\n itemNeedsField?: string,\n onlyOnePerOwner?: boolean,\n customEditLink?: string,\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>,\n itemFormPopup?: ItemFormPopupProps | null,\n clusterRef?: React.MutableRefObject<any>\n}\n\nexport class Item {\n id: string ;\n name: string;\n text: string;\n position: Geometry;\n date_created?: string;\n date_updated?: string | null;\n start?: string;\n end?: string;\n api?: ItemsApi<any>;\n tags?: string[];\n layer?: LayerProps;\n [key: string]: any;\n constructor(id:string,name:string,text:string,position:Geometry, layer?: LayerProps, api?: ItemsApi<any>){\n this.id = id;\n this.name = name;\n this.text = text;\n this.position = position;\n this.layer = layer;\n this.api = api;\n }\n}\n\nexport class Geometry {\n type: string;\n coordinates: number[];\n constructor(lng: number, lat: number) {\n this.coordinates = [lng,lat];\n this.type = \"Point\";\n }\n}\n\nexport interface Tag {\n color: string;\n id: string;\n name: string;\n offer_or_need?: boolean\n}\n\nexport interface ItemsApi<T> {\n getItems(): Promise<any>, \n getItem?(id: string): Promise<any>,\n createItem?(item : T): Promise<any>,\n updateItem?(item : T): Promise<any>,\n deleteItem?(id : string): Promise<any>,\n collectionName?: string\n}\n\nexport interface AssetsApi {\n upload(file: Blob, title: string): any,\n url: string\n}\n\nexport interface UserApi {\n register(email: string, password: string, userName: string): Promise<void>,\n\tlogin(email: string, password: string): Promise<any>,\n\tlogout(): Promise<void>,\n getUser(): Promise<UserItem>,\n getToken(): Promise<any>,\n\tupdateUser(user: UserItem): Promise<void>,\n requestPasswordReset(email:string, reset_url?:string),\n passwordReset(token:string,new_password:string)\n}\n\nexport type UserItem = {\n id?: string;\n role?: string;\n email?: string;\n password?: string;\n profile?: Profile;\n [key: string]: any;\n\n}\n\nexport type Profile = {\n id?: string;\n avatar?: string;\n color?: string;\n name: string;\n text: string;\n geoposition?: Geometry\n}\n\nexport type Permission = {\n id?: string;\n role: string;S\n collection: string;\n action: PermissionAction\n}\n\n\nexport type PermissionAction = \"create\"|\"read\"|\"update\"|\"delete\";\n","import * as React from \"react\"\nimport { useEffect, useRef } from \"react\";\nimport Tribute from \"tributejs\";\nimport { useTags } from \"../Map/hooks/useTags\";\n\n\ntype TextAreaProps = {\n labelTitle?: string;\n labelStyle?: string;\n containerStyle?: string;\n dataField?: string;\n inputStyle?: string;\n defaultValue: string;\n placeholder?: string;\n updateFormValue?: (value: string) => void;\n}\n\ninterface KeyValue {\n [key: string]: string;\n}\n\n\nexport function TextAreaInput({ labelTitle, dataField, labelStyle, containerStyle, inputStyle, defaultValue, placeholder, updateFormValue }: TextAreaProps) {\n\n const ref = useRef<HTMLTextAreaElement>(null);\n\n // prevent react18 from calling useEffect twice\n const init = useRef(false)\n\n const tags = useTags();\n\n let values: KeyValue[] = [];\n\n tags.map(tag => {\n values.push({ key: tag.name, value: tag.name, color: tag.color })\n })\n\n var tribute = new Tribute({\n containerClass: 'tw-z-3000 tw-bg-base-100 tw-p-2 tw-rounded-lg tw-shadow',\n selectClass: 'tw-font-bold',\n trigger: \"#\",\n values: values,\n menuShowMinLength: 3,\n noMatchTemplate: () => {\n return \"\"\n },\n menuItemTemplate: function (item) {\n return `<span style=\"color: ${item.original.color}; padding: 5px; boarder-radius: 3px;\">#${item.string}</span>`;\n }\n });\n\n\n useEffect(() => {\n if (!init.current) {\n if (ref.current) {\n tribute.attach(ref.current);\n }\n init.current = true;\n } \n }, [ref])\n\n return (\n <div className={`tw-form-control tw-w-full ${containerStyle ? containerStyle : \"\"}`}>\n {labelTitle ? <label className=\"tw-label\">\n <span className={\"tw-label-text tw-text-base-content \" + labelStyle}>{labelTitle}</span>\n </label> : \"\"}\n <textarea required ref={ref} defaultValue={defaultValue} name={dataField} className={`tw-textarea tw-textarea-bordered tw-w-full tw-leading-5 ${inputStyle ? inputStyle : \"\"}`} placeholder={placeholder || \"\"} onChange={(e) => updateFormValue && updateFormValue(e.target.value)}></textarea>\n </div>\n )\n}\n\n\n","import { useEffect, useState } from \"react\"\nimport * as React from \"react\"\n\ntype InputTextProps = {\n labelTitle?: string;\n labelStyle?: string;\n type?: string;\n dataField?: string;\n containerStyle?: string;\n inputStyle?: string;\n defaultValue?: string;\n placeholder?: string;\n autocomplete?: string\n updateFormValue?: (value: string ) => void;\n}\n\n\nexport function TextInput({labelTitle, labelStyle, type, dataField, containerStyle, inputStyle, defaultValue, placeholder, autocomplete, updateFormValue} : InputTextProps){\n\n return(\n <div className={`tw-form-control tw-w-full ${containerStyle}`}>\n {labelTitle ? <label className=\"tw-label\">\n <span className={\"tw-label-text tw-text-base-content \" + labelStyle}>{labelTitle}</span>\n </label> \n : \" \"} \n <input required type={type || \"text\"} name={dataField} defaultValue={defaultValue} placeholder={placeholder || \"\"} autoComplete={autocomplete} onChange={(e) => updateFormValue&& updateFormValue(e.target.value)}className={`tw-input tw-input-bordered tw-w-full ${inputStyle ? inputStyle : \"\"}`} />\n </div>\n )\n}\n\n\n","export const randomColor = () => {\n return hsvToHex((Math.random() + golden_ratio_conjugate) % 1, 0.8, 0.7)\n}\n\nconst golden_ratio_conjugate = 0.618033988749895;\n\nfunction hsvToHex(h, s, v) {\n var r, g, b;\n var i = (Math.floor(h * 6));\n var f = h * 6 - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0: r = v, g = t, b = p; break;\n case 1: r = q, g = v, b = p; break;\n case 2: r = p, g = v, b = t; break;\n case 3: r = p, g = q, b = v; break;\n case 4: r = t, g = p, b = v; break;\n case 5: r = v, g = p, b = q; break;\n }\n\n return rgbToHex(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255))\n}\n\n\nconst rgbToHex = (r, g, b) => '#' + [r, g, b].map(x => {\n const hex = x.toString(16)\n return hex.length === 1 ? '0' + hex : hex\n}).join('')","import * as React from 'react'\nimport { LatLng } from 'leaflet'\nimport { Popup as LeafletPopup, useMap } from 'react-leaflet'\nimport { useEffect, useRef, useState } from 'react'\nimport { useAddItem, useItems, useRemoveItem, useUpdateItem } from '../hooks/useItems'\nimport { Geometry, LayerProps, Item, ItemsApi } from '../../../types'\nimport { TextAreaInput } from '../../Input/TextAreaInput'\nimport { TextInput } from '../../Input/TextInput'\nimport { toast } from 'react-toastify'\nimport { useResetFilterTags } from '../hooks/useFilter'\nimport { hashTagRegex } from '../../../Utils/HashTagRegex'\nimport { randomColor } from '../../../Utils/RandomColor'\nimport { useAddTag, useTags } from '../hooks/useTags'\nimport { useAuth } from '../../Auth'\n\nexport interface ItemFormPopupProps {\n position: LatLng,\n layer: LayerProps,\n item?: Item,\n children?: React.ReactNode,\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>\n}\n\nexport function ItemFormPopup(props: ItemFormPopupProps) {\n\n const [spinner, setSpinner] = useState(false);\n\n const [popupTitle, setPopupTitle] = useState<string>(\"\");\n\n const formRef = useRef<HTMLFormElement>(null);\n\n const map = useMap();\n\n const addItem = useAddItem();\n const updateItem = useUpdateItem();\n const items = useItems();\n const removeItem = useRemoveItem();\n\n\n const tags = useTags(); \n const addTag = useAddTag();\n\n const resetFilterTags = useResetFilterTags();\n\n const { user } = useAuth();\n\n\n const handleSubmit = async (evt: any) => {\n const formItem: Item = {} as Item;\n Array.from(evt.target).forEach((input: HTMLInputElement) => {\n if (input.name) {\n formItem[input.name] = input.value;\n }\n });\n formItem['position'] = new Geometry(props.position.lng, props.position.lat);\n evt.preventDefault();\n setSpinner(true);\n\n formItem.text && formItem.text.toLocaleLowerCase().match(hashTagRegex)?.map(tag=> {\n if (!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n addTag({id: crypto.randomUUID(), name: tag.slice(1), color: randomColor()})\n }\n });\n\n\n\n\n if(props.item) {\n let success = false;\n try {\n await props.layer.api?.updateItem!({...formItem, id: props.item.id});\n success = true;\n } catch (error) {\n toast.error(error.toString());\n }\n if(success) {\n updateItem({...props.item, ...formItem});\n toast.success(\"Item updated\");\n } \n setSpinner(false);\n map.closePopup();\n }\n else {\n const uuid = crypto.randomUUID();\n let success = false;\n try {\n await props.layer.api?.createItem!({...formItem, id: uuid });\n success = true;\n } catch (error) {\n toast.error(error.toString());\n }\n if(success) {\n console.log(props.layer);\n \n if(props.layer.onlyOnePerOwner){\n const item = items.find(item => item.layer == props.layer && item.user_created?.id == user?.id); \n item && removeItem(item);\n }\n addItem({...formItem, id: uuid, layer: props.layer, user_created: user});\n toast.success(\"New item created\");\n resetFilterTags();\n } \n setSpinner(false);\n map.closePopup();\n }\n props.setItemFormPopup!(null);\n }\n\n\n const resetPopup = () => {\n if (formRef.current) {\n formRef.current.reset();\n }\n }\n\n useEffect(() => {\n resetPopup();\n }, [props.position])\n\n return (\n <LeafletPopup minWidth={275} maxWidth={275} autoPanPadding={[20, 80]}\n eventHandlers={{\n remove: () => {\n setTimeout(function () {\n resetPopup()\n }, 100);\n }\n }}\n position={props.position}>\n <form ref={formRef} onReset={resetPopup} autoComplete='off' onSubmit={e => handleSubmit(e)}>\n {props.item ? <div className='tw-h-3'></div>\n :\n <div className='tw-flex tw-justify-center'><b className=\"tw-text-xl tw-font-bold\">{ popupTitle? popupTitle : `New ${props.layer.name}`}</b></div>\n }\n\n {props.children ?\n\n React.Children.toArray(props.children).map((child) =>\n React.isValidElement<{ item: Item, test: string, setPopupTitle: React.Dispatch<React.SetStateAction<string>> }>(child) ?\n React.cloneElement(child, { item: props.item, key: props.position.toString(), setPopupTitle: setPopupTitle }) : \"\"\n )\n\n :\n <>\n <TextInput type=\"text\" placeholder=\"Name\" dataField=\"name\" defaultValue={props.item ? props.item.name : \"\"} inputStyle='' />\n <TextAreaInput key={props.position.toString()} placeholder=\"Text\" dataField=\"text\" defaultValue={props.item ? props.item.text : \"\"} inputStyle='tw-h-40 tw-mt-5' />\n </>\n }\n\n <div className='tw-flex tw-justify-center'>\n <button className={spinner ? 'tw-btn tw-btn-disabled tw-mt-5 tw-place-self-center' : 'tw-btn tw-mt-5 tw-place-self-center'} type='submit'>{spinner ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Save'}</button>\n </div>\n </form>\n </LeafletPopup>\n )\n}\n\n\n\n","import * as React from 'react'\nimport { Marker, Tooltip, useMap, useMapEvents } from 'react-leaflet'\nimport { Item, LayerProps, Tag } from '../../types'\nimport MarkerIconFactory from '../../Utils/MarkerIconFactory'\nimport { ItemViewPopup } from './Subcomponents/ItemViewPopup'\nimport { useAllItemsLoaded, useItems, useSetItemsApi, useSetItemsData } from './hooks/useItems'\nimport { useEffect, useState } from 'react'\nimport { ItemFormPopup } from './Subcomponents/ItemFormPopup'\nimport { useFilterTags, useIsLayerVisible } from './hooks/useFilter'\nimport { useAddTag, useAllTagsLoaded, useGetItemTags, useTags } from './hooks/useTags'\nimport { useAddMarker, useAddPopup, useLeafletRefs } from './hooks/useLeafletRefs'\nimport { Popup } from 'leaflet'\nimport { useLocation } from 'react-router-dom';\nimport { getValue } from '../../Utils/GetValue'\nimport { hashTagRegex } from '../../Utils/HashTagRegex'\nimport { randomColor } from '../../Utils/RandomColor'\nimport { encodeTag } from '../../Utils/FormatTags'\n\nexport const Layer = ({\n data,\n children,\n name = 'places',\n menuIcon = 'MapPinIcon',\n menuText = 'add new place',\n menuColor = '#2E7D32',\n markerIcon = 'circle-solid',\n markerShape = 'circle',\n markerDefaultColor = '#777',\n api,\n itemNameField = 'name',\n itemTextField = 'text',\n itemAvatarField,\n itemColorField,\n itemOwnerField,\n itemLatitudeField = 'position.coordinates.1',\n itemLongitudeField = 'position.coordinates.0',\n itemTagsField,\n itemOffersField,\n itemNeedsField,\n onlyOnePerOwner = false,\n customEditLink,\n setItemFormPopup,\n itemFormPopup,\n clusterRef\n}: LayerProps) => {\n\n const filterTags = useFilterTags();\n\n const items = useItems();\n const setItemsApi = useSetItemsApi();\n const setItemsData = useSetItemsData();\n const getItemTags = useGetItemTags();\n const addMarker = useAddMarker();\n const addPopup = useAddPopup();\n const leafletRefs = useLeafletRefs();\n\n let location = useLocation();\n\n const allTagsLoaded = useAllTagsLoaded();\n const allItemsLoaded = useAllItemsLoaded();\n\n const tags = useTags();\n const addTag = useAddTag();\n const [newTagsToAdd, setNewTagsToAdd] = useState<Tag[]>([]);\n const [tagsReady, setTagsReady] = useState<boolean>(false);\n\n\n const map = useMap();\n\n const isLayerVisible = useIsLayerVisible();\n\n\n useEffect(() => {\n data && setItemsData({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemNameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, setItemFormPopup, itemFormPopup, clusterRef });\n api && setItemsApi({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemNameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, setItemFormPopup, itemFormPopup, clusterRef });\n }, [data, api])\n\n useMapEvents({\n popupopen: (e) => {\n const item = Object.entries(leafletRefs).find(r => r[1].popup == e.popup)?.[1].item;\n if (item?.layer?.name == name && window.location.pathname.split(\"/\")[2] != item.id) {\n let params = new URLSearchParams(window.location.search); \n window.history.pushState({}, \"\", `/${name}/${item.id}`+ `${params.toString() !== \"\" ? `?${params}` : \"\"}`)\n let title = \"\";\n if (item.name) title = item.name;\n else if (item.layer?.itemNameField) title = getValue(item, item.layer.itemNameField);\n document.title = `${document.title.split(\"-\")[0]} - ${title}`;\n }\n },\n })\n\n const openPopup = () => {\n if (window.location.pathname.split(\"/\").length <= 2 || window.location.pathname.split(\"/\")[2] === \"\") {\n map.closePopup();\n }\n else {\n if (window.location.pathname.split(\"/\")[1] == name) {\n\n if (window.location.pathname.split(\"/\")[2]) {\n const id = window.location.pathname.split(\"/\")[2]\n const marker = leafletRefs[id]?.marker;\n if (marker && marker != null) {\n marker !== null && clusterRef?.current?.zoomToShowLayer(marker, () => {\n marker.openPopup();\n });\n const item = leafletRefs[id]?.item;\n let title = \"\";\n if (item.name) title = item.name;\n else if (item.layer?.itemNameField) title = getValue(item, item.layer.itemNameField);\n document.title = `${document.title.split(\"-\")[0]} - ${title}`;\n document.querySelector('meta[property=\"og:title\"]')?.setAttribute(\"content\", item.name);\n document.querySelector('meta[property=\"og:description\"]')?.setAttribute(\"content\", item.text);\n }\n }\n }\n }\n\n }\n\n useEffect(() => {\n openPopup();\n }, [leafletRefs, location])\n\n useEffect(() => {\n if (tagsReady) {\n const processedTags = {};\n newTagsToAdd.map(newtag => {\n if (!processedTags[newtag.name]) {\n processedTags[newtag.name] = true;\n addTag(newtag);\n }\n })\n }\n }, [tagsReady])\n\n return (\n <>\n {items &&\n items.\n filter(item => item.layer?.name === name)?.\n filter(item =>\n filterTags.length == 0 ? item : filterTags.every(tag => getItemTags(item).some(filterTag => filterTag.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())))?.\n filter(item => item.layer && isLayerVisible(item.layer)).\n map((item: Item) => {\n if (getValue(item, itemLongitudeField) && getValue(item, itemLatitudeField)) {\n\n if (getValue(item, itemTextField)) item[itemTextField] = getValue(item, itemTextField);\n else item[itemTextField] = \"\";\n\n if (item?.tags) {\n item[itemTextField] = item[itemTextField] + '\\n\\n';\n item.tags.map(tag => {\n if (!item[itemTextField].includes(`#${encodeTag(tag)}`))\n return (item[itemTextField] = item[itemTextField] + `#${encodeTag(tag)} `)\n return item[itemTextField]\n\n });\n }\n\n\n if (allTagsLoaded && allItemsLoaded) { \n item[itemTextField].match(hashTagRegex)?.map(tag => {\n if ((!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) && !newTagsToAdd.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n const newTag = { id: crypto.randomUUID(), name: tag.slice(1), color: randomColor() };\n setNewTagsToAdd(current => [...current, newTag]);\n }\n });\n !tagsReady && setTagsReady(true);\n }\n\n\n const itemTtags = getItemTags(item);\n\n const latitude = itemLatitudeField && item ? getValue(item, itemLatitudeField) : undefined;\n const longitude = itemLongitudeField && item ? getValue(item, itemLongitudeField) : undefined;\n\n let color1 = markerDefaultColor;\n let color2 = \"RGBA(35, 31, 32, 0.2)\";\n if (itemColorField) color1 = getValue(item, itemColorField);\n\n else if (itemTtags && itemTtags[0]) {\n color1 = itemTtags[0].color;\n }\n if (itemTtags && itemTtags[0] && itemColorField) color2 = itemTtags[0].color;\n else if (itemTtags && itemTtags[1]) {\n color2 = itemTtags[1].color;\n }\n return (\n <Marker ref={(r) => {\n if (!(item.id in leafletRefs && leafletRefs[item.id].marker == r))\n r && addMarker(item, r);\n }} icon={MarkerIconFactory(markerShape, color1, color2, markerIcon)} key={item.id} position={[latitude, longitude]}>\n {\n (children && React.Children.toArray(children).some(child => React.isValidElement(child) && child.props.__TYPE === \"ItemView\") ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement(child) && child.props.__TYPE === \"ItemView\" ?\n <ItemViewPopup ref={(r) => {\n if (!(item.id in leafletRefs && leafletRefs[item.id].popup == r))\n r && addPopup(item, r as Popup);\n }} key={item.id + item.name}\n item={item}\n setItemFormPopup={setItemFormPopup}>\n {child}\n </ItemViewPopup>\n : \"\"\n )\n :\n <>\n <ItemViewPopup key={item.id + item.name} ref={(r) => {\n if (!(item.id in leafletRefs && leafletRefs[item.id].popup == r))\n r && addPopup(item, r as Popup);\n }}\n item={item}\n setItemFormPopup={setItemFormPopup} />\n </>)\n }\n <Tooltip offset={[0, -38]} direction='top'>{item.name ? item.name : getValue(item, itemNameField)}</Tooltip>\n </Marker>\n );\n }\n else return null;\n })\n }\n {//{children}}\n }\n {itemFormPopup && itemFormPopup.layer!.name == name &&\n (children && React.Children.toArray(children).some(child => React.isValidElement(child) && child.props.__TYPE === \"ItemForm\") ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement(child) && child.props.__TYPE === \"ItemForm\" ?\n <ItemFormPopup key={setItemFormPopup?.name} position={itemFormPopup!.position} layer={itemFormPopup!.layer} setItemFormPopup={setItemFormPopup} item={itemFormPopup!.item} >{child}</ItemFormPopup>\n : \"\"\n )\n :\n <>\n <ItemFormPopup position={itemFormPopup!.position} layer={itemFormPopup!.layer} setItemFormPopup={setItemFormPopup} item={itemFormPopup!.item} />\n </>)\n }\n </>\n )\n}","import * as React from 'react'\nimport { useEffect } from 'react';\nimport { ItemsApi, Tag } from '../../types';\nimport { useSetTagData, useSetTagApi, useTags } from './hooks/useTags'\nimport { useLocation } from 'react-router-dom';\nimport { useAddFilterTag } from './hooks/useFilter';\n\nexport function Tags({data, api} : {data?: Tag[], api?: ItemsApi<Tag>}) {\nconst setTagData = useSetTagData();\nconst setTagApi = useSetTagApi();\n\nuseEffect(() => {\n data && setTagData(data); \n api && setTagApi(api); \n}, [api, data])\n\n\nconst location = useLocation();\nconst addFilterTag = useAddFilterTag();\nconst tags = useTags();\n\n\nuseEffect(() => {\n let params = new URLSearchParams(location.search);\n let urlTags = params.get(\"tags\");\n urlTags?.split(\",\").map(urlTag => {\n const tag = tags.find(t => t.name.toLocaleLowerCase() === urlTag.toLocaleLowerCase()) \n tag && addFilterTag(tag)\n });\n\n}, [location, tags]);\n\n\n return (\n <></>\n )\n}\n","import * as React from 'react'\nimport { useEffect } from 'react';\nimport { ItemsApi, Permission } from '../../types';\nimport { useSetPermissionData, useSetPermissionApi, useSetAdminRole } from './hooks/usePermissions'\nimport { useAuth } from '../Auth';\n\nexport function Permissions({data, api, adminRole} : {data?: Permission[], api?: ItemsApi<Permission>, adminRole?: string}) {\nconst setPermissionData = useSetPermissionData();\nconst setPermissionApi = useSetPermissionApi();\nconst setAdminRole = useSetAdminRole();\nconst {user} = useAuth();\n\nuseEffect(() => { \n adminRole && setAdminRole(adminRole);\n data && setPermissionData(data); \n api && setPermissionApi(api); \n}, [api, data, adminRole, user])\n\n return (\n <></>\n )\n}\n","import * as React from 'react'\nimport { Item } from '../../types'\nimport * as PropTypes from 'prop-types'\nimport { useEffect } from 'react'\n\n\nexport const ItemForm = ({ children, item, title, setPopupTitle }: { children?: React.ReactNode, item?: Item, title?: string, setPopupTitle?: React.Dispatch<React.SetStateAction<string>> }) => {\n useEffect(() => {\n setPopupTitle&& title && setPopupTitle(title);\n\n }, [title])\n \n return (\n <div>{\n children ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement<{ item: Item, test: string }>(child) ?\n React.cloneElement(child, { item: item, test: \"test\" }) : \"\"\n ) : \"\"\n }</div>\n )\n}\n\nItemForm.propTypes = {\n children: PropTypes.node,\n __TYPE: PropTypes.string,\n};\n\nItemForm.defaultProps = {\n __TYPE: 'ItemForm',\n};\n","import * as React from 'react'\nimport { Item } from '../../types'\nimport * as PropTypes from 'prop-types'\n\n\nexport const ItemView = ({ children, item }: { children?: React.ReactNode, item?: Item }) => {\n return (\n <div>\n {children ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement<{ item: Item }>(child) ?\n React.cloneElement(child, { item: item }) : \"\"\n ) : \"\"}\n </div>\n )\n}\n\nItemView.propTypes = {\n children: PropTypes.node,\n __TYPE: PropTypes.string,\n};\n\nItemView.defaultProps = {\n __TYPE: 'ItemView',\n};\n","\nimport { useState } from 'react'\nimport InformationCircleIcon from '@heroicons/react/24/outline/InformationCircleIcon'\nimport * as React from 'react';\n\ntype SelectBoxProps = {\n labelTitle?: string;\n labelStyle?: string;\n type?: string;\n containerStyle?: string;\n defaultValue: string;\n placeholder?: string;\n updateFormValue: (value: string ) => void;\n\n options: {name: string, value: string}[];\n labelDescription?: string\n}\n\nexport function SelectBox(props : SelectBoxProps){\n \n const {labelTitle, labelDescription, defaultValue, containerStyle, placeholder, labelStyle, options, updateFormValue} = props\n\n const [value, setValue] = useState(defaultValue || \"\")\n\n\n const updateValue = (newValue: string) =>{\n updateFormValue(newValue)\n setValue(newValue)\n }\n\n\n return (\n <div className={`tw-inline-block ${containerStyle}`}>\n {labelTitle? \n <label className={`tw-label ${labelStyle}`}>\n <div className=\"tw-label-text\">{labelTitle}\n {labelDescription && <div className=\"tw-tooltip tw-tooltip-right\" data-tip={labelDescription}><InformationCircleIcon className='tw-w-4 tw-h-4'/></div>}\n </div>\n </label>\n : \"\"}\n <select className=\"tw-select tw-select-bordered tw-w-full\" value={value} onChange={(e) => updateValue(e.target.value)}>\n <option disabled value=\"PLACEHOLDER\">{placeholder}</option>\n {\n options.map((o, k) => {\n return <option value={o.value || o.name} key={k}>{o.name}</option>\n })\n }\n </select>\n </div>\n )\n}","import * as React from 'react'\nimport { TextAreaInput } from '../../../Input'\nimport { Item } from '../../../../types'\n\nexport const PopupTextAreaInput = ({ dataField, placeholder, style, item }:\n {\n dataField: string,\n placeholder: string,\n style?: string,\n item?: Item\n }) => {\n\n return (\n <TextAreaInput defaultValue={item?.text ? item.text : \"\"} dataField={dataField} placeholder={placeholder} inputStyle={style}></TextAreaInput>\n )\n}\n","import * as React from 'react'\nimport { TextInput } from '../../../Input'\nimport { Item } from '../../../../types'\n\nexport const PopupStartEndInput = ({item}:{item?:Item}) => {\n return (\n <div className='tw-grid tw-grid-cols-2 tw-gap-2 tw-mb-5'>\n <TextInput type='date' placeholder='start' dataField='start' inputStyle='tw-text-sm tw-px-2' labelTitle='start' defaultValue={item && item.start? item.start.substring(0, 10) : \"\"} autocomplete='one-time-code'></TextInput>\n <TextInput type='date' placeholder='end' dataField='end' inputStyle='tw-text-sm tw-px-2' labelTitle='end' defaultValue={item && item.end ? item.end.substring(0, 10) : \"\"} autocomplete='one-time-code'></TextInput>\n </div>\n )\n}\n","import * as React from 'react'\nimport { TextInput } from '../../../Input'\nimport { Item } from '../../../../types'\n\nexport const PopupTextInput = ({ dataField, placeholder, style, item }:\n {\n dataField: string,\n placeholder: string,\n style?: string,\n item?: Item\n }) => {\n\n return (\n <TextInput defaultValue={item?.name ? item.name : \"\"} dataField={dataField} placeholder={placeholder} inputStyle={style} type='text'></TextInput>\n )\n}\n","import * as React from 'react'\nimport { Item } from '../../../../types'\n\nexport const StartEndView = ({item} : {item?:Item}) => {\n return (\n <div className=\"tw-flex tw-flex-row tw-mb-4 tw-mt-1\">\n <div className=\"tw-basis-2/5 tw-flex tw-flex-row\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-4 tw-w-4 tw-mr-2\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n <time className='tw-align-middle' dateTime={item && item.start? item.start.substring(0, 10) : \"\"}>{item && item.start? new Date(item.start).toLocaleDateString(): \"\"}</time>\n </div>\n <div className=\"tw-basis-1/5 tw-place-content-center\">\n <span>-</span>\n </div>\n <div className=\"tw-basis-2/5 tw-flex tw-flex-row\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-4 tw-w-4 tw-mr-2\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n <time className='tw-align-middle' dateTime={item && item.end? item.end.substring(0, 10) : \"\"}>{item && item.end ? new Date(item.end).toLocaleDateString() : \"\"}</time>\n </div>\n </div>\n )\n}\n\n","import * as React from 'react'\nimport { Link } from 'react-router-dom'\nimport { getValue } from '../../../../Utils/GetValue'\nimport { Item } from '../../../../types'\n\nexport const PopupButton = ({url, parameterField, text, colorField, item} : {url: string, parameterField?: string, text: string, colorField?: string, item? : Item}) => {\n return (\n <Link to={`${url}/${parameterField? getValue(item,parameterField):``}`}><button style={{backgroundColor: `${colorField && getValue(item,colorField)? getValue(item,colorField) : item?.layer?.markerDefaultColor}`}} className=\"tw-btn tw-text-white tw-btn-sm tw-float-right tw-mt-1\">{text}</button></Link>\n \n )\n}\n","import { useAuth } from \"../Auth\"\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport QuestionMarkIcon from '@heroicons/react/24/outline/QuestionMarkCircleIcon'\nimport * as React from \"react\";\n\n\nexport default function NavBar({ appName, nameWidth = 200}: { appName: string, nameWidth?: number }) {\n\n\n const { isAuthenticated, user, logout, token } = useAuth();\n\n const onLogout = () => {\n toast.promise(\n logout(),\n {\n success: {\n render() {\n return `Bye bye`\n },\n // other options\n icon: \"πŸ‘‹\",\n },\n error: {\n render( {data} ) { \n return `${data}`\n },\n },\n pending: 'logging out ..'\n });\n }\n\n return (\n <>\n <div className=\"tw-navbar tw-bg-base-100 tw-z-[10000] tw-shadow-xl tw-relative\">\n <button className=\"tw-btn tw-btn-square tw-btn-ghost\"\n data-te-sidenav-toggle-ref\n data-te-target=\"#sidenav\"\n aria-controls=\"#sidenav\"\n aria-haspopup=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" className=\"tw-inline-block tw-w-5 tw-h-5 tw-stroke-current\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg>\n </button>\n <div className=\"tw-flex-1 tw-mr-2\">\n <div className={`tw-flex-1 tw-truncate tw-grid tw-grid-flow-col`} style={{maxWidth: nameWidth}}>\n <Link className=\"tw-btn tw-btn-ghost tw-px-2 tw-normal-case tw-text-xl tw-flex-1 tw-truncate\" to={\"/\"}><h1 className=\"tw-truncate\">{appName}</h1></Link>\n <button className=\"tw-btn tw-px-2 tw-btn-ghost\" onClick={() => window.my_modal_3.showModal()}><QuestionMarkIcon className=\"tw-h-5 tw-w-5\" /></button>\n </div>\n </div>\n\n\n\n {isAuthenticated ?\n <div className=\"tw-flex-none\">\n {user?.avatar ? <div className=\"tw-avatar\">\n <div className=\"tw-w-10 tw-rounded-full\">\n <img src={\"https://api.utopia-lab.org/assets/\" + user?.avatar + \"?access_token=\" + token} />\n </div>\n </div> : <></>}\n <div className='tw-ml-2 tw-mr-2'>{user?.first_name}</div>\n <div className=\"tw-dropdown tw-dropdown-end\">\n <label tabIndex={0} className=\"tw-btn tw-btn-ghost tw-btn-square\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n </label>\n <ul tabIndex={0} className=\"tw-menu tw-menu-compact tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[10000]\">\n <li><Link to={\"/profile-settings\"}>Profile</Link></li>\n <li><Link to={\"/user-settings\"}>Settings</Link></li>\n <li><a onClick={() => { onLogout() }}>Logout</a></li>\n </ul>\n </div>\n </div>\n :\n <div>\n\n <div className=\"tw-hidden md:tw-flex\">\n <Link to={\"/login\"}><div className=\"tw-btn tw-btn-ghost tw-mr-2\">\n Login\n </div></Link>\n\n <Link to={\"/signup\"}><div className=\"tw-btn tw-btn-ghost tw-mr-2\">\n Sign Up\n </div></Link>\n </div>\n <div className=\"tw-dropdown tw-dropdown-end\">\n <label tabIndex={1} className=\"tw-btn tw-btn-ghost md:tw-hidden\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n\n\n </label>\n <ul tabIndex={1} className=\"tw-menu tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[10000]\">\n <li><Link to={\"/login\"}>Login</Link></li>\n <li><Link to={\"/signup\"}>Sign Up</Link></li>\n </ul>\n </div>\n\n </div>\n }\n </div>\n\n </>\n )\n}\n","import * as React from 'react'\nimport { useSetAssetApi } from './hooks/useAssets'\nimport { AssetsApi } from '../../types';\nimport { useEffect } from 'react';\n\nexport const SetAssetsApi = ({assetsApi}:{assetsApi: AssetsApi}) => {\n const setAssetsApi = useSetAssetApi();\n\n useEffect(() => {\n setAssetsApi(assetsApi)\n }, [assetsApi])\n \n\n return (\n <></>\n )\n}\n","import * as React from 'react'\nimport NavBar from './NavBar'\nimport { BrowserRouter } from 'react-router-dom'\nimport { ToastContainer } from 'react-toastify'\nimport { QuestsProvider } from '../Gaming/hooks/useQuests'\nimport { AssetsProvider } from './hooks/useAssets'\nimport { SetAssetsApi } from './SetAssetsApi'\nimport { AssetsApi } from '../../types'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n\nexport function AppShell({ appName, nameWidth, children, assetsApi }: { appName: string, nameWidth?: number, children: React.ReactNode, assetsApi: AssetsApi }) {\n\n // Create a client\n const queryClient = new QueryClient()\n\n\n return (\n <QueryClientProvider client={queryClient}>\n <BrowserRouter>\n <AssetsProvider>\n <SetAssetsApi assetsApi={assetsApi}></SetAssetsApi>\n <QuestsProvider initialOpen={true}>\n <ToastContainer position=\"top-right\"\n autoClose={2000}\n hideProgressBar\n newestOnTop={false}\n closeOnClick\n rtl={false}\n pauseOnFocusLoss\n draggable\n pauseOnHover\n theme=\"light\" />\n <NavBar appName={appName} nameWidth={nameWidth}></NavBar>\n <div id=\"app-content\" className=\"tw-flex tw-!pl-[77px]\">\n {children}\n </div>\n </QuestsProvider>\n </AssetsProvider>\n </BrowserRouter>\n </QueryClientProvider>\n )\n}\n","import ChevronDownIcon from '@heroicons/react/24/outline/ChevronDownIcon'\nimport * as React from 'react'\nimport {useEffect, useState} from 'react'\nimport { Link, useLocation } from 'react-router-dom'\n\n\nfunction SidebarSubmenu({submenu, name, icon} : { path: string;\n icon: JSX.Element;\n name: string;\n submenu?: any | undefined}){\n const location = useLocation()\n const [isExpanded, setIsExpanded] = useState(false)\n\n\n /** Open Submenu list if path found in routes, this is for directly loading submenu routes first time */\n useEffect(() => {\n if(submenu.filter(m => {return m.path === location.pathname})[0])setIsExpanded(true)\n }, [])\n\n return (\n <div className='flex-col'>\n\n {/** Route header */}\n <div className='w-full' onClick={() => setIsExpanded(!isExpanded)}>\n {icon} <span className=\"group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:hidden\" data-te-sidenav-slim=\"false\">{name} </span>\n <ChevronDownIcon className={'w-5 h-5 mt-1 float-right delay-400 duration-500 transition-all ' + (isExpanded ? 'rotate-180' : '')}/>\n </div>\n\n {/** Submenu list */}\n <div className={` w-full data-[te-collapse-show]:!hidden `+ (isExpanded ? \"\" : \"hidden\")} >\n <ul className={`menu menu-compact`} >\n {\n submenu.map((m, k) => {\n return(\n <li key={k} >\n <Link to={m.path} className='' >\n {m.icon}<span className=\"\" data-te-sidenav-slim=\"false\">{m.name}</span>\n {\n location.pathname == m.path ? (<span className=\"absolute mt-1 mb-1 inset-y-0 left-0 w-1 rounded-tr-md rounded-br-md bg-primary \"\n aria-hidden=\"true\"></span>) : null\n }\n </Link>\n </li>\n )\n })\n }\n </ul>\n </div>\n </div>\n )\n}\n\nexport default SidebarSubmenu","import { useRef, useState } from 'react'\nimport { useEffect } from 'react'\nimport { NavLink, useLocation } from 'react-router-dom';\nimport {\n Sidenav,\n initTE,\n} from \"tw-elements\";\nimport SidebarSubmenu from './SidebarSubmenu';\nimport ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon';\nimport * as React from 'react';\n\ntype route = {\n path: string;\n icon: JSX.Element;\n name: string;\n submenu?: route;\n blank?: boolean\n}\n\n\nexport function SideBar({ routes, bottomRoutes }: { routes: route[], bottomRoutes?: route[] }) {\n\n // prevent react18 from calling useEffect twice\n const init = useRef(false)\n\n const location = useLocation();\n\n const [instance, setInstance] = useState<any>(null);\n const [slim, setSlim] = useState<boolean>(false);\n\n\n\n const toggleSlim = () => {\n setSlim(!slim);\n instance.toggleSlim();\n }\n\n\n\n useEffect(() => {\n if (!init.current) {\n initTE({ Sidenav });\n const instance = Sidenav.getInstance(\n document.getElementById(\"sidenav\")\n );\n setInstance(instance);\n instance.toggleSlim();\n init.current = true;\n }\n }, [])\n\n return (\n <nav\n id=\"sidenav\"\n className=\"group tw-fixed tw-left-0 tw-mt-16 tw-top-0 tw-z-[10035] tw-h-[calc(100dvh-64px)] tw--translate-x-full tw-overflow-hidden tw-shadow-xl data-[te-sidenav-slim='true']:tw-hidden data-[te-sidenav-slim-collapsed='true']:tw-w-[56px] data-[te-sidenav-slim='true']:tw-w-[56px] data-[te-sidenav-hidden='false']:tw-translate-x-0 dark:tw-bg-zinc-800 [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false']]:tw-hidden [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true']]:[display:unset]\"\n data-te-sidenav-init\n data-te-sidenav-hidden=\"true\"\n data-te-sidenav-mode=\"side\"\n data-te-sidenav-slim=\"true\"\n data-te-sidenav-content=\"#app-content\"\n data-te-sidenav-slim-collapsed=\"true\"\n data-te-sidenav-slim-width=\"56\"\n data-te-sidenav-width=\"160\">\n <div className='tw-flex tw-flex-col tw-h-[calc(100dvh-64px)]'>\n <ul className=\"tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0\" data-te-sidenav-menu-ref>\n {\n routes.map((route, k) => {\n return (\n <li className=\"\" key={k}>\n {\n route.submenu ?\n <SidebarSubmenu {...route} /> :\n (<NavLink \n end\n target={route.blank ? \"_blank\" : \"_self\"}\n to={route.path}\n className={({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`} onClick={() => {\n if (screen.width < 640 && !slim) instance.toggle();\n }}>\n {route.icon}<span className=\"group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden\" data-te-sidenav-slim=\"false\">{route.name}</span>\n {\n location.pathname.includes(route.path) && route.path.length > 1 || location.pathname === route.path ? (<span className=\"tw-absolute tw-inset-y-0 tw-left-0 tw-w-1 tw-rounded-tr-md tw-rounded-br-md tw-bg-primary \"\n aria-hidden=\"true\"></span>) : null\n }\n </NavLink>)\n }\n\n </li>\n )\n })\n }\n </ul>\n\n <div id=\"slim-toggler\" className='tw-w-full tw-bg-base-100 tw-flex-1 tw-grid tw-place-items-end' aria-haspopup=\"true\" >\n <div className='tw-w-full'>\n\n <ul className=\"tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0 tw-mb-0\" data-te-sidenav-menu-ref>\n {\n bottomRoutes?.map((route, k) => {\n return (\n <li className=\"\" key={k}>\n {\n route.submenu ?\n <SidebarSubmenu {...route} /> :\n (<NavLink\n end\n target={route.blank ? \"_blank\" : \"_self\"}\n to={route.path}\n className={({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`} onClick={() => {\n if (screen.width < 640 && !slim) instance.toggle();\n }}>\n {route.icon}<span className=\"group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden\" data-te-sidenav-slim=\"false\">{route.name}</span>\n {\n location.pathname.includes(route.path) && route.path.length > 1 || location.pathname === route.path ? (<span className=\"tw-absolute tw-inset-y-0 tw-left-0 tw-w-1 tw-rounded-tr-md tw-rounded-br-md tw-bg-primary \"\n aria-hidden=\"true\"></span>) : null\n }\n </NavLink>)\n }\n\n </li>\n )\n })\n }\n </ul>\n\n <ChevronRightIcon className={\"tw-w-5 tw-h-5 tw-mb-4 tw-mr-4 tw-cursor-pointer tw-float-right tw-delay-400 tw-duration-500 tw-transition-all \" + (!slim ? \"tw-rotate-180\" : '')} onClick={() => toggleSlim()} />\n\n </div>\n </div>\n </div>\n </nav>\n )\n}\n","import * as React from 'react'\n\ntype ContentProps = {\n children?: React.ReactNode;\n}\n\nexport function Content({children} : ContentProps) {\n return (\n <div className='tw-flex tw-flex-col tw-w-full tw-bg-base-200 tw-relative'>\n {children}\n </div>\n\n )\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { TitleCard } from '../Templates/TitleCard'\nimport { TextInput } from '../Input/TextInput'\nimport { TextAreaInput } from '../Input/TextAreaInput'\nimport { toast } from 'react-toastify';\nimport { useNavigate } from 'react-router-dom'\nimport { useAuth } from '../Auth';\nimport * as React from 'react'\nimport ReactCrop, { Crop, centerCrop, makeAspectCrop } from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\nimport 'react-toastify/dist/ReactToastify.css';\nimport { UserItem } from '../../types';\nimport DialogModal from '../Templates/DialogModal';\nimport { useAssetApi } from '../AppShell/hooks/useAssets';\nimport { ColorPicker } from './ColorPicker';\n\nexport function UserSettings() {\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [email, setEmail] = useState<string>(\"\");\n const [password, setPassword] = useState<string>(\"\");\n\n\n\n const [passwordChanged, setPasswordChanged] = useState<boolean>(false);\n\n\n\n const navigate = useNavigate();\n\n useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setEmail(user?.email ? user.email : \"\");\n setPassword(user?.password ? user.password : \"\");\n }, [user])\n\n\n\n\n\n\n const onUpdateUser = () => {\n let changedUser = {} as UserItem;\n\n changedUser = { id: id, email: email, ...passwordChanged && { password: password }};\n\n\n toast.promise(\n\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <>\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-8 tw-px-6 tw-bg-base-200 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className='tw-w-full xl:tw-max-w-6xl'>\n <TitleCard title=\"Settings\" topMargin=\"tw-mt-2\" className='tw-mb-6'>\n\n\n <div className=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <TextInput type='email' placeholder=\"E-Mail\" defaultValue={user?.email ? user.email : \"\"} updateFormValue={(v) => setEmail(v)} />\n <TextInput type='password' placeholder=\"new Password\" defaultValue={user?.password ? user.password : \"\"} updateFormValue={(v) => {\n setPassword(v);\n setPasswordChanged(true);\n }} />\n {/* <ToogleInput updateType=\"syncData\" labelTitle=\"Sync Data\" defaultValue={true} updateFormValue={updateFormValue}/> */}\n </div>\n\n <div className=\"tw-mt-8\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </TitleCard>\n </div>\n </main>\n </>\n )\n}\n","import { useEffect } from \"react\";\n\n// Improved version of https://usehooks.com/useOnClickOutside/\nconst useClickOutside = (ref, handler) => {\n useEffect(() => {\n let startedInside = false;\n let startedWhenMounted = false;\n\n const listener = (event) => {\n // Do nothing if `mousedown` or `touchstart` started inside ref element\n if (startedInside || !startedWhenMounted) return;\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) return;\n\n handler(event);\n };\n\n const validateEventStart = (event) => {\n startedWhenMounted = ref.current;\n startedInside = ref.current && ref.current.contains(event.target);\n };\n\n document.addEventListener(\"mousedown\", validateEventStart);\n document.addEventListener(\"touchstart\", validateEventStart);\n document.addEventListener(\"click\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", validateEventStart);\n document.removeEventListener(\"touchstart\", validateEventStart);\n document.removeEventListener(\"click\", listener);\n };\n }, [ref, handler]);\n};\n\nexport default useClickOutside;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport * as React from \"react\";\nimport { HexColorPicker } from \"react-colorful\";\nimport \"./ColorPicker.css\"\nimport useClickOutside from \"./useClickOutside\";\n\nexport const ColorPicker = ({ color, onChange, className }) => {\n const popover = useRef<HTMLDivElement>(null);\n const [isOpen, toggle] = useState(false);\n\n const close = useCallback(() => toggle(false), []);\n useClickOutside(popover, close);\n\n const colorPickerRef = React.useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n // FΓΌge dem Color-Picker explizit Event-Listener hinzu\n const colorPickerElement = colorPickerRef.current;\n if (colorPickerElement) {\n const enablePropagation = (event) => {\n // Verhindere, dass Leaflet die Propagation stoppt\n event.stopPropagation = () => {};\n };\n \n // Event-Listener fΓΌr den Color-Picker\n ['click', 'dblclick', 'mousedown', 'touchstart'].forEach(eventType => {\n colorPickerElement.addEventListener(eventType, enablePropagation, true);\n });\n }\n \n }, []); \n\n return (\n <div ref={colorPickerRef} className={`picker ${className}`}>\n <div\n className=\"swatch\"\n style={{ backgroundColor: color }}\n onClick={() => toggle(true)}\n />\n\n {isOpen && (\n <div className=\"popover\" ref={popover}>\n <HexColorPicker color={color} onChange={onChange} />\n </div>\n )}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react'\nimport { TitleCard } from '../Templates/TitleCard'\nimport { TextInput } from '../Input/TextInput'\nimport { TextAreaInput } from '../Input/TextAreaInput'\nimport { toast } from 'react-toastify';\nimport { useNavigate } from 'react-router-dom'\nimport { useAuth } from '../Auth';\nimport * as React from 'react'\nimport ReactCrop, { Crop, centerCrop, makeAspectCrop } from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\nimport 'react-toastify/dist/ReactToastify.css';\nimport { UserItem } from '../../types';\nimport DialogModal from '../Templates/DialogModal';\nimport { useAssetApi } from '../AppShell/hooks/useAssets';\nimport { ColorPicker } from './ColorPicker';\n\nexport function ProfileSettings() {\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [name, setName] = useState<string>(\"\");\n const [text, setText] = useState<string>(\"\");\n const [avatar, setAvatar] = useState<string>(\"\");\n const [color, setColor] = useState<string>(\"\");\n\n\n const [crop, setCrop] = useState<Crop>();\n const [image, setImage] = useState<string>(\"\");\n const [cropModalOpen, setCropModalOpen] = useState<boolean>(false);\n const [cropping, setCropping] = useState<boolean>(false);\n\n const assetsApi = useAssetApi();\n const navigate = useNavigate();\n\n useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setName(user?.first_name ? user.first_name : \"\");\n setText(user?.description ? user.description : \"\");\n setAvatar(user?.avatar ? user?.avatar : \"\"),\n setColor(user?.color? user.color : \"#aabbcc\")\n }, [user])\n\n const imgRef = useRef<HTMLImageElement>(null)\n\n const onImageChange = (event) => {\n if (event.target.files && event.target.files[0]) {\n setImage(URL.createObjectURL(event.target.files[0]));\n }\n setCropModalOpen(true);\n }\n\n function onImageLoad(e: React.SyntheticEvent<HTMLImageElement>) {\n const { width, height } = e.currentTarget\n\n setCrop(centerAspectCrop(width, height, 1))\n }\n\n\n // This is to demonstate how to make and center a % aspect crop\n // which is a bit trickier so we use some helper functions.\n function centerAspectCrop(\n mediaWidth: number,\n mediaHeight: number,\n aspect: number,\n ) {\n return centerCrop(\n makeAspectCrop(\n {\n unit: 'px',\n width: mediaWidth / 2,\n },\n aspect,\n mediaWidth,\n mediaHeight,\n ),\n mediaWidth,\n mediaHeight,\n )\n }\n\n async function renderCrop() {\n // get the image element\n const image = imgRef.current;\n if (crop && image) {\n\n const scaleX = image.naturalWidth / image.width\n const scaleY = image.naturalHeight / image.height\n\n // create a canvas element to draw the cropped image\n const canvas = new OffscreenCanvas(\n crop.width * scaleX,\n crop.height * scaleY,\n )\n const ctx = canvas.getContext(\"2d\");\n const pixelRatio = window.devicePixelRatio;\n canvas.width = crop.width * pixelRatio * scaleX;\n canvas.height = crop.height * pixelRatio * scaleY;\n\n if (ctx) {\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\n ctx.drawImage(\n image,\n crop.x * scaleX,\n crop.y * scaleY,\n crop.width * scaleX,\n crop.height * scaleY,\n 0,\n 0,\n crop.width * scaleX,\n crop.height * scaleY\n );\n }\n const blob = await canvas.convertToBlob();\n await resizeBlob(blob);\n setCropping(false);\n setImage(\"\");\n }\n }\n\n async function resizeBlob(blob) {\n var img = new Image();\n img.src = URL.createObjectURL(blob);\n await img.decode();\n const canvas = new OffscreenCanvas(\n 400,\n 400\n )\n var ctx = canvas.getContext(\"2d\");\n ctx?.drawImage(img, 0, 0, 400, 400);\n const resizedBlob = await canvas.convertToBlob()\n const asset = await assetsApi.upload(resizedBlob, \"test\");\n setAvatar(asset.id)\n }\n\n\n const onUpdateUser = () => {\n let changedUser = {} as UserItem;\n\n changedUser = { id: id, first_name: name, description: text, color: color, ...avatar.length > 10 && { avatar: avatar } };\n\n\n toast.promise(\n\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <div className='tw-backdrop-contrast-50 tw-h-full tw-w-full'>\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-8 tw-px-6 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className='tw-w-full xl:tw-max-w-6xl'>\n <TitleCard title=\"Profile\" topMargin=\"tw-mt-2\" className='tw-mb-6'>\n <div className=\"tw-flex\">\n {!cropping ?\n <label className=\"custom-file-upload\">\n <input type=\"file\" accept=\"image/*\" className=\"tw-file-input tw-w-full tw-max-w-xs\" onChange={onImageChange} />\n <div className='button tw-btn tw-btn-lg tw-btn-circle tw-animate-none'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"1.5\" stroke=\"currentColor\" className=\"tw-w-6 tw-h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\" />\n </svg>\n </div>\n {avatar ?\n <div className='tw-h-20 tw-w-20'>\n <img src={assetsApi.url + avatar + \"?access_token=\" + token} className=' tw-rounded-full' />\n </div>\n :\n <div className='tw-h-20 tw-w-20'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" viewBox=\"0 0 150 150\" className='tw-w-20 tw-h-20 tw-rounded-full' style={{ backgroundColor: \"#eee\" }}>\n <path fill=\"#ccc\" d=\"M 104.68731,56.689353 C 102.19435,80.640493 93.104981,97.26875 74.372196,97.26875 55.639402,97.26875 46.988823,82.308034 44.057005,57.289941 41.623314,34.938838 55.639402,15.800152 74.372196,15.800152 c 18.732785,0 32.451944,18.493971 30.315114,40.889201 z\" />\n <path fill=\"#ccc\" d=\"M 92.5675 89.6048 C 90.79484 93.47893 89.39893 102.4504 94.86478 106.9039 C 103.9375 114.2963 106.7064 116.4723 118.3117 118.9462 C 144.0432 124.4314 141.6492 138.1543 146.5244 149.2206 L 4.268444 149.1023 C 8.472223 138.6518 6.505799 124.7812 32.40051 118.387 C 41.80992 116.0635 45.66513 113.8823 53.58659 107.0158 C 58.52744 102.7329 57.52583 93.99267 56.43084 89.26926 C 52.49275 88.83011 94.1739 88.14054 92.5675 89.6048 z\" />\n </svg>\n </div>\n }\n </label>\n\n : <div className='tw-w-20 tw-flex tw-items-center tw-justify-center'>\n <span className=\"tw-loading tw-loading-spinner\"></span>\n </div>\n\n }\n <ColorPicker color={color} onChange={setColor} className={\"-tw-left-6 tw-top-14 -tw-mr-6\"} />\n <TextInput placeholder=\"Name\" defaultValue={user?.first_name ? user.first_name : \"\"} updateFormValue={(v) => setName(v)} containerStyle='tw-grow tw-ml-6 tw-my-auto ' />\n </div>\n\n <div className=\"tw-grid tw-grid-cols-1 tw-md:grid-cols-1 tw-gap-6 tw-pt-6 tw-pb-6\">\n <TextAreaInput placeholder=\"About me, Contact, #Tags, ...\" defaultValue={user?.description ? user.description : \"\"} updateFormValue={(v) => setText(v)} inputStyle='tw-h-64' />\n </div>\n\n <div className=\"tw-mt-8\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </TitleCard>\n </div>\n </main>\n <DialogModal\n title=\"\"\n isOpened={cropModalOpen}\n onClose={() => {\n setCropModalOpen(false);\n setImage(\"\");\n }}>\n <ReactCrop crop={crop} onChange={(c) => setCrop(c)} aspect={1} >\n <img src={image} ref={imgRef} onLoad={onImageLoad} />\n </ReactCrop>\n <button className={`tw-btn tw-btn-primary`} onClick={() => {\n setCropping(true);\n setCropModalOpen(false);\n renderCrop();\n }}>Select</button>\n </DialogModal>\n </div>\n )\n}\n","import * as React from 'react'\nimport { decodeTag } from '../../Utils/FormatTags'\nimport { Tag } from '../../types'\n\nexport const TagView = ({tag, heighlight, onClick} : {tag: Tag, heighlight?: boolean, onClick?: (e)=> void}) => {\n return (\n // Use your imagination to render suggestions.\n\n <div key={tag.name} onClick={onClick} className={`tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-h-[2.75em] tw-mt-3 tw-mr-4 tw-cursor-pointer tw-w-fit ${heighlight && 'tw-border-primary tw-shadow-te-primary'}`} style={{ backgroundColor: tag.color ? tag.color : \"#666\" }}>\n <div className=\"tw-card-actions tw-justify-end\">\n </div><b>{decodeTag(tag.name)}</b>\n </div>\n\n )\n}\n","import * as React from 'react'\nimport { MapOverlayPage } from '../Templates'\nimport { useItems } from '../Map/hooks/useItems'\nimport { useLocation, useNavigate } from 'react-router-dom'\nimport { useEffect, useState } from 'react';\nimport { Item, Tag, UserItem } from '../../types';\nimport { getValue } from '../../Utils/GetValue';\nimport { useMap } from 'react-leaflet';\nimport { LatLng } from 'leaflet';\nimport { TextView } from '../Map';\nimport useWindowDimensions from '../Map/hooks/useWindowDimension';\nimport { TagView } from '../Templates/TagView';\nimport { useTags } from '../Map/hooks/useTags';\nimport { useAuth } from '../Auth';\nimport { useAddFilterTag } from '../Map/hooks/useFilter';\n\nexport function OverlayProfile() {\n\n const location = useLocation();\n const items = useItems();\n const [item, setItem] = useState<Item>({} as Item)\n const map = useMap();\n const windowDimension = useWindowDimensions();\n\n const tags = useTags();\n const { user } = useAuth();\n\n const navigate = useNavigate();\n\n const [owner, setOwner] = useState<UserItem>();\n const [offers, setOffers] = useState<Array<Tag>>([]);\n const [needs, setNeeds] = useState<Array<Tag>>([]);\n\n const [activeTab, setActiveTab] = useState<number>(1);\n\n\n const addFilterTag = useAddFilterTag();\n\n\n\n useEffect(() => {\n const itemId = location.pathname.split(\"/\")[2];\n const item = items.find(i => i.id === itemId);\n item && setItem(item);\n\n const bounds = map.getBounds();\n const x = bounds.getEast() - bounds.getWest()\n if (windowDimension.width > 768)\n if (item?.position.coordinates[0])\n map.setView(new LatLng(item?.position.coordinates[1]!, item?.position.coordinates[0]! + x / 4))\n }, [location, items, activeTab])\n\n\n useEffect(() => {\n setOffers([]);\n setNeeds([]);\n setOwner(undefined);\n item?.layer?.itemOwnerField && setOwner(getValue(item, item.layer?.itemOwnerField));\n item.layer?.itemOffersField && getValue(item, item.layer.itemOffersField).map(o => {\n const tag = tags.find(t => t.id === o.tags_id);\n tag && setOffers(current => [...current, tag])\n })\n item.layer?.itemNeedsField && getValue(item, item.layer.itemNeedsField).map(n => {\n const tag = tags.find(t => t.id === n.tags_id);\n tag && setNeeds(current => [...current, tag])\n })\n }, [item])\n\n\n\n\n return (\n <MapOverlayPage className='tw-mx-4 tw-mt-4 tw-max-h-[calc(100dvh-96px)] tw-h-[calc(100dvh-96px)] md:tw-w-[calc(50%-32px)] tw-w-[calc(100%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0'>\n {item &&\n <>\n <div className='tw-flex tw-flex-row'>\n <div className=\"tw-grow\">\n <p className=\"tw-text-4xl\">{item.layer?.itemAvatarField && getValue(item, item.layer.itemAvatarField) && <img className='tw-h-20 tw-rounded-full tw-inline' src={`https://api.utopia-lab.org/assets/${getValue(item, item.layer.itemAvatarField)}?width=160&heigth=160`}></img>} {item.layer?.itemNameField && getValue(item, item.layer.itemNameField)}</p>\n </div>\n {owner?.id === user?.id && owner?.id ?\n <a className='tw-self-center tw-btn tw-btn-sm tw-mr-4 tw-cursor-pointer' onClick={() => navigate(\"/profile-settings\")}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z\" />\n </svg>\n </a> : \"\"\n }\n </div>\n\n\n\n\n <div className='tw-h-full'>\n\n <div role=\"tablist\" className=\"tw-tabs tw-tabs-lifted tw-mt-2 tw-mb-2\">\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className={`tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]`} aria-label=\"Vision\" checked={activeTab == 1 && true} onChange={() => setActiveTab(1)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-268px)] tw-overflow-y-auto fade tw-pt-2 tw-pb-1\">\n <TextView item={item} />\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab tw-min-w-[10em] [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Offers & Needs\" checked={activeTab == 2 && true} onChange={() => setActiveTab(2)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-268px)] tw-overflow-y-auto fade tw-pt-4 tw-pb-1\" >\n <div className='tw-h-full'>\n <div className='tw-grid tw-grid-cols-1'>\n {\n offers.length > 0 ?\n <div className='tw-col-span-1'>\n <h3 className='-tw-mb-2'>Offers</h3>\n < div className='tw-flex tw-flex-wrap tw-mb-4'>\n {\n offers.map(o => <TagView key={o?.id} tag={o} onClick={() => addFilterTag(o)} />)\n }\n </div>\n </div> : \"\"\n }\n {\n needs.length > 0 ?\n <div className='tw-col-span-1'>\n <h3 className='-tw-mb-2 tw-col-span-1'>Needs</h3>\n < div className='tw-flex tw-flex-wrap tw-mb-4'>\n {\n needs.map(n => <TagView key={n?.id} tag={n} onClick={() => addFilterTag(n)} />)\n }\n </div>\n </div> : \"\"\n }\n </div>\n </div>\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Contact\" checked={activeTab == 3 && true} onChange={() => setActiveTab(3)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-268px)] tw-overflow-y-auto fade tw-pt-2 tw-pb-1\">\n <TextView item={item} itemTextField='user_created.contact' />\n </div>\n </div>\n\n\n\n\n </div>\n </>\n }\n </MapOverlayPage >\n )\n}\n\n\n","import * as React from 'react'\nimport { useEffect } from 'react';\nimport { decodeTag } from '../../Utils/FormatTags';\nimport { TagView } from '../Templates/TagView';\n\nexport const Autocomplete = ({ inputProps, suggestions, onSelected, pushFilteredSuggestions, setFocus }: { inputProps: any, suggestions: Array<any>, onSelected: (suggestion) => void, pushFilteredSuggestions?: Array<any>, setFocus?: boolean }) => {\n\n const [filteredSuggestions, setFilteredSuggestions] = React.useState<Array<any>>([]);\n const [heighlightedSuggestion, setHeighlightedSuggestion] = React.useState<number>(0);\n\n\n useEffect(() => {\n pushFilteredSuggestions && setFilteredSuggestions(pushFilteredSuggestions)\n }, [pushFilteredSuggestions])\n\n useEffect(() => {\n setFocus && inputRef.current?.focus();\n }, [setFocus])\n\n const inputRef = React.useRef<HTMLInputElement>();\n\n\n const getSuggestionValue = suggestion => suggestion.name;\n\n const getSuggestions = value => {\n const inputValue = value.trim().toLowerCase();\n const inputLength = inputValue.length;\n\n return inputLength === 0 ? [] : suggestions.filter(tag =>\n tag.name.toLowerCase().slice(0, inputLength) === inputValue\n );\n };\n\n const handleChange = (e) => {\n setFilteredSuggestions(getSuggestions(e.target.value))\n\n // Call the parent's onChange handler, if it exists\n if (inputProps.onChange) {\n inputProps.onChange(e);\n }\n };\n\n\n function handleSuggestionClick(suggestion) {\n onSelected(suggestion)\n }\n\n const handleKeyDown = (event) => { \n switch (event.key) {\n case 'ArrowDown':\n heighlightedSuggestion < filteredSuggestions.length-1 && setHeighlightedSuggestion(current => current +1)\n break;\n case 'ArrowUp':\n heighlightedSuggestion>0 && setHeighlightedSuggestion(current => current -1)\n break;\n case 'Enter':\n if(filteredSuggestions.length > 0) {\n onSelected(filteredSuggestions[heighlightedSuggestion]);\n setHeighlightedSuggestion(0);\n }\n filteredSuggestions.length == 0 && inputProps.onKeyDown(event);\n break;\n default:\n inputProps.onKeyDown(event);\n break;\n }\n }\n\n return (\n <div>\n <input ref={inputRef} {...inputProps} type=\"text\" onChange={(e) => handleChange(e)} onKeyDown={handleKeyDown}/>\n <ul className={`tw-absolute tw-z-[4000] ${filteredSuggestions.length>0 && 'tw-bg-base-100 tw-rounded-xl tw-p-2'}`}>\n {filteredSuggestions.map((suggestion, index) => (\n <li key={index} onClick={() => handleSuggestionClick(suggestion)}><TagView heighlight={index == heighlightedSuggestion} tag={suggestion}></TagView></li>\n ))}\n </ul>\n </div>\n )\n}\n","import * as React from 'react'\nimport { useState } from 'react';\nimport { useTags } from '../Map/hooks/useTags';\nimport { Tag } from '../../types';\nimport { Autocomplete } from '../Input/Autocomplete';\nimport { randomColor } from '../../Utils/RandomColor';\nimport { decodeTag, encodeTag } from '../../Utils/FormatTags';\n\nexport const TagsWidget = ({placeholder, containerStyle, defaultTags, onUpdate}) => {\n\n const [input, setInput] = useState('');\n const [isKeyReleased, setIsKeyReleased] = useState(false);\n const tags = useTags();\n const [pushFilteredSuggestions, setPushFilteredSuggestions] = useState<Array<any>>([]);\n\n const [focusInput, setFocusInput] = useState<boolean>(false);\n\n\n const onChange = (e) => {\n const { value } = e.target;\n setInput(value);\n };\n\n const onKeyDown = (e) => {\n const { key } = e;\n const trimmedInput = input.trim();\n\n if ((key === 'Enter' || key === ',' ) && trimmedInput.length && !defaultTags.some(tag => tag.name.toLocaleLowerCase() === trimmedInput.toLocaleLowerCase())) {\n e.preventDefault();\n const newTag = tags.find(t => t.name === trimmedInput.toLocaleLowerCase())\n newTag && onUpdate(prevState => [...prevState, newTag]);\n !newTag && onUpdate(prevState => [...prevState, { id: crypto.randomUUID(), name: encodeTag(trimmedInput), color: randomColor() }]);\n setInput('');\n setPushFilteredSuggestions([]);\n }\n\n if (key === \"Backspace\" && !input.length && defaultTags.length && isKeyReleased) {\n const defaultTagsCopy = [...defaultTags];\n const poppedTag = defaultTagsCopy.pop();\n e.preventDefault();\n onUpdate(defaultTagsCopy);\n poppedTag && setInput(poppedTag.name);\n }\n\n setIsKeyReleased(false);\n };\n\n const onKeyUp = () => {\n setIsKeyReleased(true);\n }\n\n const deleteTag = (tag) => {\n onUpdate(prevState => prevState.filter((t) => t !== tag))\n }\n\n\n const onSelected = (tag) => {\n if(!defaultTags.some(t => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())) {\n const newTag = tags.find(t => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())\n newTag && onUpdate(prevState => [...prevState, newTag]);\n !newTag && onUpdate(prevState => [...prevState, { id: crypto.randomUUID(), name: tag.name.toLocaleLowerCase(), color: randomColor() }]);\n setInput('');\n setPushFilteredSuggestions([]);\n }\n }\n\n const inputProps = {\n value: input,\n placeholder: placeholder,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n onChange: onChange,\n className: 'tw-bg-transparent tw-w-fit tw-mt-5 tw-h-fit'\n }\n\n return (\n <div onClick={()=> {\n setFocusInput(true);\n setTimeout(()=> {\n setFocusInput(false)\n }, 200)\n }} className={`tw-input tw-input-bordered tw-cursor-text ${containerStyle}`}>\n <div className='tw-flex tw-flex-wrap tw-h-fit'>\n {defaultTags.map((tag) => (\n <div key={tag.name} className='tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-h-[2.75em] tw-mt-3 tw-mr-4' style={{ backgroundColor: tag.color ? tag.color : \"#666\" }}>\n <div className=\"tw-card-actions tw-justify-end\">\n <label className=\"tw-btn tw-btn-xs tw-btn-circle tw-absolute tw--right-2 tw--top-2 tw-bg-white tw-text-gray-600\" onClick={() => (deleteTag(tag))}>βœ•</label>\n </div><b>{decodeTag(tag.name)}</b>\n </div>\n\n ))}\n <Autocomplete suggestions={tags} pushFilteredSuggestions={pushFilteredSuggestions} setFocus={focusInput} inputProps={inputProps} onSelected={(tag) => onSelected(tag)}/>\n </div>\n </div>\n )\n}","import * as React from 'react'\nimport { useItems, useUpdateItem } from '../Map/hooks/useItems'\nimport { useState } from 'react';\nimport { getValue } from '../../Utils/GetValue';\nimport ReactCrop, { Crop, centerCrop, makeAspectCrop } from 'react-image-crop';\nimport { toast } from 'react-toastify';\nimport { useAssetApi } from '../AppShell/hooks/useAssets';\nimport { useAuth } from '../Auth';\nimport { TextInput, TextAreaInput } from '../Input';\nimport { ColorPicker } from './ColorPicker';\nimport DialogModal from '../Templates/DialogModal';\nimport { hashTagRegex } from '../../Utils/HashTagRegex';\nimport { useAddTag, useTags } from '../Map/hooks/useTags';\nimport { randomColor } from '../../Utils/RandomColor';\nimport { useNavigate } from 'react-router-dom';\nimport { Tag, UserItem } from '../../types';\nimport { MapOverlayPage } from '../Templates';\nimport { TagsWidget } from './TagsWidget';\nimport { decodeTag, encodeTag } from '../../Utils/FormatTags';\n\n\nexport function OverlayProfileSettings() {\n\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [name, setName] = useState<string>(\"\");\n const [text, setText] = useState<string>(\"\");\n const [avatar, setAvatar] = useState<string>(\"\");\n const [color, setColor] = useState<string>(\"\");\n const [offers, setOffers] = useState<Array<Tag>>([]);\n const [needs, setNeeds] = useState<Array<Tag>>([]);\n const [contact, setContact] = useState<string>(\"\");\n\n const [activeTab, setActiveTab] = useState<number>(1);\n\n\n const [crop, setCrop] = useState<Crop>();\n const [image, setImage] = useState<string>(\"\");\n const [cropModalOpen, setCropModalOpen] = useState<boolean>(false);\n const [cropping, setCropping] = useState<boolean>(false);\n\n const assetsApi = useAssetApi();\n const items = useItems();\n const updateItem = useUpdateItem();\n\n const tags = useTags();\n const addTag = useAddTag();\n const navigate = useNavigate();\n\n React.useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setName(user?.first_name ? user.first_name : \"\");\n setText(user?.description ? user.description : \"\");\n setAvatar(user?.avatar ? user?.avatar : \"\");\n setColor(user?.color ? user.color : \"#aabbcc\");\n setOffers([]);\n setNeeds([]);\n user?.offers.map(o=> {\n const offer = tags.find(t => t.id === o.tags_id);\n offer && setOffers(current => [...current,offer])\n })\n user?.needs.map(o=> {\n const need = tags.find(t => t.id === o.tags_id);\n need && setNeeds(current => [...current,need])\n })\n setContact(user?.contact ? user.contact : \"\");\n }, [user])\n\n const imgRef = React.useRef<HTMLImageElement>(null)\n\n const onImageChange = (event) => {\n if (event.target.files && event.target.files[0]) {\n setImage(URL.createObjectURL(event.target.files[0]));\n }\n setCropModalOpen(true);\n }\n\n function onImageLoad(e: React.SyntheticEvent<HTMLImageElement>) {\n const { width, height } = e.currentTarget\n\n setCrop(centerAspectCrop(width, height, 1))\n }\n\n\n // This is to demonstate how to make and center a % aspect crop\n // which is a bit trickier so we use some helper functions.\n function centerAspectCrop(\n mediaWidth: number,\n mediaHeight: number,\n aspect: number,\n ) {\n return centerCrop(\n makeAspectCrop(\n {\n unit: 'px',\n width: mediaWidth / 2,\n },\n aspect,\n mediaWidth,\n mediaHeight,\n ),\n mediaWidth,\n mediaHeight,\n )\n }\n\n async function renderCrop() {\n // get the image element\n const image = imgRef.current;\n if (crop && image) {\n\n const scaleX = image.naturalWidth / image.width\n const scaleY = image.naturalHeight / image.height\n\n // create a canvas element to draw the cropped image\n const canvas = new OffscreenCanvas(\n crop.width * scaleX,\n crop.height * scaleY,\n )\n const ctx = canvas.getContext(\"2d\");\n const pixelRatio = window.devicePixelRatio;\n canvas.width = crop.width * pixelRatio * scaleX;\n canvas.height = crop.height * pixelRatio * scaleY;\n\n if (ctx) {\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\n ctx.drawImage(\n image,\n crop.x * scaleX,\n crop.y * scaleY,\n crop.width * scaleX,\n crop.height * scaleY,\n 0,\n 0,\n crop.width * scaleX,\n crop.height * scaleY\n );\n }\n const blob = await canvas.convertToBlob();\n await resizeBlob(blob);\n setCropping(false);\n setImage(\"\");\n }\n }\n\n async function resizeBlob(blob) {\n var img = new Image();\n img.src = URL.createObjectURL(blob);\n await img.decode();\n const canvas = new OffscreenCanvas(\n 400,\n 400\n )\n var ctx = canvas.getContext(\"2d\");\n ctx?.drawImage(img, 0, 0, 400, 400);\n const resizedBlob = await canvas.convertToBlob()\n const asset = await assetsApi.upload(resizedBlob, \"test\");\n setAvatar(asset.id)\n }\n\n const onUpdateUser = async () => {\n let changedUser = {} as UserItem;\n\n let offer_updates : Array<any> = [];\n //check for new offers\n offers.map(o => {\n const existingOffer = user?.offers.find(t => t.tags_id === o.id)\n existingOffer && offer_updates.push(existingOffer.id)\n if(!existingOffer && !tags.some(t => t.id === o.id)) addTag({...o,offer_or_need: true})\n !existingOffer && offer_updates.push({directus_user_id: user?.id, tags_id: o.id})\n });\n\n let needs_updates : Array<any> = [];\n\n needs.map(n => {\n const existingNeed = user?.needs.find(t => t.tags_id === n.id)\n existingNeed && needs_updates.push(existingNeed.id)\n !existingNeed && needs_updates.push({directus_user_id: user?.id, tags_id: n.id})\n !existingNeed && !tags.some(t => t.id === n.id) && addTag({...n,offer_or_need: true})\n });\n\n\n changedUser = { id: id, first_name: name, description: text, contact: contact, color: color, ...avatar.length > 10 && { avatar: avatar }, ... offers.length > 0 && {offers: offer_updates}, ... needs.length > 0 && {needs: needs_updates} };\n // update profile item in current state\n const item = items.find(i => i.layer?.itemOwnerField && getValue(i, i.layer?.itemOwnerField).id === id);\n\n let offer_state : Array<any> = [];\n let needs_state : Array<any> = [];\n\n await offers.map(o => {\n offer_state.push({directus_user_id: user?.id, tags_id: o.id})\n });\n\n await needs.map(n => {\n needs_state.push({directus_user_id: user?.id, tags_id: n.id})\n });\n\n\n if (item && item.layer && item.layer.itemOwnerField) item[item.layer.itemOwnerField] = {... changedUser, offers: offer_state, needs: needs_state};\n // add new hashtags from profile text\n text.toLocaleLowerCase().match(hashTagRegex)?.map(tag => {\n if (!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n addTag({ id: crypto.randomUUID(), name: encodeTag(tag.slice(1).toLocaleLowerCase()), color: randomColor()})\n }\n });\n\n\n toast.promise(\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => item && updateItem(item))\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <>\n <MapOverlayPage backdrop className='tw-mx-4 tw-mt-4 tw-mb-12 tw-overflow-x-hidden tw-max-h-[calc(100dvh-96px)] !tw-h-[calc(100dvh-96px)] tw-w-[calc(100%-32px)] md:tw-w-[calc(50%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0'>\n <div className='tw-flex tw-flex-col tw-h-full'>\n <div className=\"tw-flex\">\n {!cropping ?\n <label className=\"custom-file-upload\">\n <input type=\"file\" accept=\"image/*\" className=\"tw-file-input tw-w-full tw-max-w-xs\" onChange={onImageChange} />\n <div className='button tw-btn tw-btn-lg tw-btn-circle tw-animate-none'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"1.5\" stroke=\"currentColor\" className=\"tw-w-6 tw-h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\" />\n </svg>\n </div>\n {avatar ?\n <div className='tw-h-20 tw-w-20'>\n <img src={assetsApi.url + avatar + \"?access_token=\" + token} className=' tw-rounded-full' />\n </div>\n :\n <div className='tw-h-20 tw-w-20'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" viewBox=\"0 0 150 150\" className='tw-w-20 tw-h-20 tw-rounded-full' style={{ backgroundColor: \"#eee\" }}>\n <path fill=\"#ccc\" d=\"M 104.68731,56.689353 C 102.19435,80.640493 93.104981,97.26875 74.372196,97.26875 55.639402,97.26875 46.988823,82.308034 44.057005,57.289941 41.623314,34.938838 55.639402,15.800152 74.372196,15.800152 c 18.732785,0 32.451944,18.493971 30.315114,40.889201 z\" />\n <path fill=\"#ccc\" d=\"M 92.5675 89.6048 C 90.79484 93.47893 89.39893 102.4504 94.86478 106.9039 C 103.9375 114.2963 106.7064 116.4723 118.3117 118.9462 C 144.0432 124.4314 141.6492 138.1543 146.5244 149.2206 L 4.268444 149.1023 C 8.472223 138.6518 6.505799 124.7812 32.40051 118.387 C 41.80992 116.0635 45.66513 113.8823 53.58659 107.0158 C 58.52744 102.7329 57.52583 93.99267 56.43084 89.26926 C 52.49275 88.83011 94.1739 88.14054 92.5675 89.6048 z\" />\n </svg>\n </div>\n }\n </label>\n\n : <div className='tw-w-20 tw-flex tw-items-center tw-justify-center'>\n <span className=\"tw-loading tw-loading-spinner\"></span>\n </div>\n\n }\n <ColorPicker color={color} onChange={setColor} className={\"-tw-left-6 tw-top-14 -tw-mr-6\"} />\n <TextInput placeholder=\"Name\" defaultValue={user?.first_name ? user.first_name : \"\"} updateFormValue={(v) => setName(v)} containerStyle='tw-grow tw-ml-6 tw-my-auto ' />\n </div>\n\n\n <div role=\"tablist\" className=\"tw-tabs tw-tabs-lifted tw-mt-4\">\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className={`tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]`} aria-label=\"Vision\" checked={activeTab == 1 && true} onChange={() => setActiveTab(1)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56\">\n <TextAreaInput placeholder=\"My Vision...\" defaultValue={user?.description ? user.description : \"\"} updateFormValue={(v) => setText(v)} containerStyle='tw-h-full' inputStyle='tw-h-full tw-border-t-0 tw-rounded-tl-none' />\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab tw-min-w-[10em] [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Offers & Needs\" checked={activeTab == 2 && true} onChange={() => setActiveTab(2)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-pt-4 tw-h-[calc(100dvh-332px)] tw-min-h-56\">\n <div className='tw-h-full'>\n <div className='tw-w-full tw-h-[calc(50%-0.75em)] tw-mb-4'>\n <TagsWidget defaultTags={offers} onUpdate={(v)=>setOffers(v)} placeholder=\"enter your offers\" containerStyle='tw-bg-transparent tw-w-full tw-h-full tw-mt-3 tw-text-xs tw-h-[calc(100%-1rem)] tw-min-h-[5em] tw-pb-2 tw-overflow-auto'/>\n </div>\n <div className='tw-w-full tw-h-[calc(50%-0.75em)] '>\n <TagsWidget defaultTags={needs} onUpdate={(v)=>setNeeds(v)} placeholder=\"enter your needs\" containerStyle='tw-bg-transparent tw-w-full tw-h-full tw-mt-3 tw-text-xs tw-h-[calc(100%-1rem)] tw-min-h-[5em] tw-pb-2 tw-overflow-auto'/>\n </div>\n </div>\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Contact\" checked={activeTab == 3 && true} onChange={() => setActiveTab(3)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56\">\n <TextAreaInput placeholder=\"Contact ...\" defaultValue={user?.contact ? user.contact : \"\"} updateFormValue={(v) => setContact(v)} containerStyle='tw-h-full' inputStyle='tw-h-full tw-border-t-0 ' />\n </div>\n </div>\n\n <div className=\"tw-mt-4 tw-mb-4\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </div>\n\n </MapOverlayPage>\n <DialogModal\n title=\"\"\n isOpened={cropModalOpen}\n onClose={() => {\n setCropModalOpen(false);\n setImage(\"\");\n }}>\n <ReactCrop crop={crop} onChange={(c) => setCrop(c)} aspect={1} >\n <img src={image} ref={imgRef} onLoad={onImageLoad} />\n </ReactCrop>\n <button className={`tw-btn tw-btn-primary`} onClick={() => {\n setCropping(true);\n setCropModalOpen(false);\n renderCrop();\n }}>Select</button>\n </DialogModal>\n </>\n )\n}\n\n\n","import * as React from 'react'\nimport { CardPage, MapOverlayPage } from '../Templates'\nimport { useItems } from '../Map/hooks/useItems'\nimport { useLocation, useNavigate } from 'react-router-dom'\nimport { useState } from 'react';\nimport { Item, UserItem } from '../../types';\nimport { getValue } from '../../Utils/GetValue';\nimport { useMap } from 'react-leaflet';\nimport { LatLng } from 'leaflet';\nimport { TextView } from '../Map';\nimport useWindowDimensions from '../Map/hooks/useWindowDimension';\nimport { toast } from 'react-toastify';\nimport { useAuth } from '../Auth';\nimport { TextInput } from '../Input';\n\nexport function OverlayUserSettings() {\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [email, setEmail] = useState<string>(\"\");\n const [password, setPassword] = useState<string>(\"\");\n\n\n\n const [passwordChanged, setPasswordChanged] = useState<boolean>(false);\n\n\n\n const navigate = useNavigate();\n\n React.useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setEmail(user?.email ? user.email : \"\");\n setPassword(user?.password ? user.password : \"\");\n }, [user])\n\n\n\n\n\n\n const onUpdateUser = () => {\n let changedUser = {} as UserItem;\n\n changedUser = { id: id, email: email, ...passwordChanged && { password: password } };\n\n\n toast.promise(\n\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <MapOverlayPage backdrop className='tw-mx-4 tw-mt-4 tw-max-h-[calc(100dvh-96px)] tw-h-fit md:tw-w-[calc(50%-32px)] tw-w-[calc(100%-32px)] tw-max-w-xl !tw-left-auto tw-top-0 tw-bottom-0'>\n <div className={`tw-text-xl tw-font-semibold`}>Settings</div>\n <div className=\"tw-divider tw-mt-2\"></div>\n <div className=\"tw-grid tw-grid-cols-1 tw-gap-6\">\n <TextInput type='email' placeholder=\"new E-Mail\" defaultValue={user?.email ? user.email : \"\"} updateFormValue={(v) => setEmail(v)} />\n <TextInput type='password' placeholder=\"new Password\" defaultValue={user?.password ? user.password : \"\"} updateFormValue={(v) => {\n setPassword(v);\n setPasswordChanged(true);\n }} />\n {/* <ToogleInput updateType=\"syncData\" labelTitle=\"Sync Data\" defaultValue={true} updateFormValue={updateFormValue}/> */}\n </div>\n\n <div className=\"tw-mt-8\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </MapOverlayPage>\n )\n}\n\n\n","import * as React from \"react\"\nimport { useEffect } from \"react\"\n\nexport function Modal({children, showOnStartup}:{children : React.ReactNode, showOnStartup?: boolean}) {\n\n useEffect(() => {\n if(showOnStartup)\n window.my_modal_3.showModal()\n }, [])\n\n\n return (\n <>\n\n {/* You can open the modal using ID.showModal() method */}\n <dialog id=\"my_modal_3\" className=\"tw-modal tw-transition-all tw-duration-300\">\n <form method=\"dialog\" className=\"tw-modal-box tw-transition-none\">\n <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2 focus:tw-outline-none\">βœ•</button>\n {children}\n </form>\n <form method=\"dialog\" className=\"tw-modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n </>\n )\n}\n\n","import * as React from 'react'\nimport { useQuestsOpen, useSetQuestOpen } from './hooks/useQuests';\nimport { useAuth } from '../Auth';\nimport { useEffect } from 'react';\n\nexport function Quests() {\n\n const questsOpen = useQuestsOpen();\n const setQuestsOpen = useSetQuestOpen();\n const { isAuthenticated, user } = useAuth();\n\n useEffect(() => {\n setQuestsOpen(false);\n }, [])\n \n\n return (\n <>{questsOpen ?\n <div className=\"tw-card tw-w-48 tw-bg-base-100 tw-shadow-xl tw-absolute tw-bottom-4 tw-left-4 tw-z-[2000]\">\n <div className=\"tw-card-body tw-p-4 tw-pt-0\">\n <div className=\"tw-card-actions tw-justify-end\">\n <label className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-1 tw-top-1\" onClick={() => setQuestsOpen(false)}>βœ•</label>\n </div>\n <h2 className=\"tw-card-title tw-m-auto \">\n Level 1\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"#aaa\" className=\"tw-w-5 tw-h-5 tw-cursor-pointer\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\" />\n </svg>\n\n </h2>\n <ul className='tw-flex-row'>\n <li><label className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-0\"><input type=\"checkbox\" readOnly={true} className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={isAuthenticated ? isAuthenticated : false} /><span className='tw-text-sm tw-label-text tw-mx-2'>Sign Up</span></label></li>\n <li><label className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-0\"><input type=\"checkbox\" readOnly={true} className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={user?.description ? true : false} /><span className='tw-text-sm tw-label-text tw-mx-2'>Fill Profile</span></label></li>\n <li><label className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-0\"><input type=\"checkbox\" readOnly={true} className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={user?.avatar ? true : false} /><span className='tw-text-sm tw-label-text tw-mx-2'>Upload Avatar</span></label></li>\n </ul>\n { /** <button className='tw-btn tw-btn-xs tw-btn-neutral tw-w-fit tw-self-center tw-mt-1'>Next &gt;</button> */\n } </div>\n </div>\n : \"\"\n }\n </>\n )\n\n\n}\n"],"names":["_jsx","_jsxs","_Fragment","L","LeafletPopup","ChevronRightIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/Components/Map/hooks/useLayers.tsx","../src/Components/Auth/useAuth.tsx","../src/Components/Typography/Subtitle.tsx","../src/Components/Templates/TitleCard.tsx","../src/Components/Templates/CardPage.tsx","../src/Components/Templates/MapOverlayPage.tsx","../src/Components/Templates/CircleLayout.tsx","../src/Utils/Moon.ts","../src/Components/Templates/MoonCalendar.tsx","../src/Utils/GetValue.ts","../src/Components/Templates/ItemsIndexPage.tsx","../src/Components/Templates/ItemViewPage.tsx","../src/Components/Auth/LoginPage.tsx","../src/Components/Auth/SignupPage.tsx","../src/Components/Auth/RequestPasswordPage.tsx","../src/Components/Auth/SetNewPasswordPage.tsx","../src/Components/Map/hooks/usePermissions.tsx","../src/Components/Map/Subcomponents/AddButton.tsx","../src/Components/Map/hooks/useItems.tsx","../src/Utils/HashTagRegex.tsx","../src/Components/Map/hooks/useTags.tsx","../src/Components/Map/hooks/useFilter.tsx","../src/Components/Map/hooks/useWindowDimension.tsx","../src/Components/Map/hooks/useTimeout.tsx","../src/Components/Map/hooks/useDebounce.tsx","../src/Components/Map/hooks/useLeafletRefs.tsx","../node_modules/leaflet.locatecontrol/src/L.Control.Locate.js","../src/Components/Map/Subcomponents/Controls/LocateControl.tsx","../src/Utils/MarkerIconFactory.ts","../src/Utils/FormatTags.ts","../src/Components/Map/Subcomponents/Controls/SearchControl.tsx","../src/Components/Map/Subcomponents/Controls/LayerControl.tsx","../src/Components/Gaming/hooks/useQuests.tsx","../src/Components/Map/Subcomponents/Controls/QuestControl.tsx","../src/Components/Map/Subcomponents/Controls/Control.tsx","../src/Components/Map/Subcomponents/Controls/TagsControl.tsx","../src/Components/Map/UtopiaMap.tsx","../src/Components/AppShell/hooks/useAssets.tsx","../src/Components/Templates/DialogModal.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx","../src/Utils/ReplaceURLs.ts","../src/Components/Map/Subcomponents/ItemPopupComponents/TextView.tsx","../src/Utils/TimeAgo.ts","../src/Components/Map/Subcomponents/ItemViewPopup.tsx","../src/types.ts","../src/Components/Input/TextAreaInput.tsx","../src/Components/Input/TextInput.tsx","../src/Utils/RandomColor.ts","../src/Components/Map/Subcomponents/ItemFormPopup.tsx","../src/Components/Map/Layer.tsx","../src/Components/Map/Tags.tsx","../src/Components/Map/Permissions.tsx","../src/Components/Map/ItemForm.tsx","../src/Components/Map/ItemView.tsx","../src/Components/Input/SelectBox.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupTextAreaInput.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupStartEndInput.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupTextInput.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/StartEndView.tsx","../src/Components/Map/Subcomponents/ItemPopupComponents/PopupButton.tsx","../src/Components/AppShell/NavBar.tsx","../src/Components/AppShell/SetAssetsApi.tsx","../src/Components/AppShell/AppShell.tsx","../src/Components/AppShell/SidebarSubmenu.tsx","../src/Components/AppShell/SideBar.tsx","../src/Components/AppShell/Content.tsx","../src/Components/Profile/UserSettings.tsx","../src/Components/Profile/useClickOutside.tsx","../src/Components/Profile/ColorPicker.tsx","../src/Components/Profile/ProfileSettings.tsx","../src/Components/Templates/TagView.tsx","../src/Components/Profile/OverlayProfile.tsx","../src/Components/Input/Autocomplete.tsx","../src/Components/Profile/TagsWidget.tsx","../src/Components/Profile/OverlayProfileSettings.tsx","../src/Components/Profile/OverlayUserSettings.tsx","../src/Components/Gaming/Modal.tsx","../src/Components/Gaming/Quests.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useCallback, useReducer, createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { LayerProps } from \"../../../types\";\n\ntype ActionType =\n | { type: \"ADD LAYER\"; layer: LayerProps }\n\ntype UseItemManagerResult = ReturnType<typeof useLayerManager>;\n\nconst LayerContext = createContext<UseItemManagerResult>({\n layers: [],\n addLayer: () => { },\n});\n\nfunction useLayerManager(initialLayers: LayerProps[]): {\n layers: LayerProps[];\n addLayer: (layer: LayerProps) => void;\n} {\n const [layers, dispatch] = useReducer((state: LayerProps[], action: ActionType) => {\n switch (action.type) {\n case \"ADD LAYER\":\n const exist = state.find((layer) =>\n layer.name === action.layer.name ? true : false\n );\n if (!exist) return [\n ...state,\n action.layer,\n ];\n else return state;\n default:\n throw new Error();\n }\n }, initialLayers);\n\n const addLayer = useCallback((layer: LayerProps) => {\n dispatch({\n type: \"ADD LAYER\",\n layer\n });\n }, []);\n\n return { layers, addLayer };\n}\n\nexport const LayersProvider: React.FunctionComponent<{\n initialLayers: LayerProps[], children?: React.ReactNode\n}> = ({ initialLayers, children }) => (\n <LayerContext.Provider value={useLayerManager(initialLayers)}>\n {children}\n </LayerContext.Provider>\n);\n\nexport const useLayers = (): LayerProps[] => {\n const { layers } = useContext(LayerContext);\n return layers;\n};\n\nexport const useAddLayer = (): UseItemManagerResult[\"addLayer\"] => {\n const { addLayer } = useContext(LayerContext);\n return addLayer;\n};\n","import { createContext, useState, useContext, useEffect } from \"react\";\nimport * as React from \"react\";\nimport { UserApi, UserItem } from \"../../types\";\n\n\ntype AuthProviderProps = {\n userApi: UserApi,\n children?: React.ReactNode\n}\n\ntype AuthCredentials = {\n email: string;\n password: string;\n otp?: string | undefined;\n}\n\n\n\ntype AuthContextProps = {\n isAuthenticated: boolean,\n user: UserItem | null;\n login: (credentials: AuthCredentials) => Promise<UserItem | undefined>,\n register: (credentials: AuthCredentials, userName: string) => Promise<UserItem | undefined>,\n loading: Boolean,\n logout: () => Promise<any>,\n updateUser: (user: UserItem) => any,\n token: String | null,\n requestPasswordReset: (email:string, reset_url: string) => Promise<any>,\n passwordReset: (token:string, new_password:string) => Promise<any>\n}\n\nconst AuthContext = createContext<AuthContextProps>({\n isAuthenticated: false,\n user: null,\n login: () => Promise.reject(),\n register: () => Promise.reject(),\n loading: false,\n logout: () => Promise.reject(),\n updateUser: () => Promise.reject(),\n token: \"\",\n requestPasswordReset: () => Promise.reject(),\n passwordReset: () => Promise.reject()\n});\n\nexport const AuthProvider = ({ userApi, children }: AuthProviderProps) => {\n const [user, setUser] = useState<UserItem | null>(null);\n const [token, setToken] = useState<String | null>(null);\n const [loading, setLoading] = useState<boolean>(false);\n const isAuthenticated = !!user;\n\n useEffect(() => {\n setLoading(true);\n loadUser();\n setLoading(false)\n }, []);\n\n async function loadUser(): Promise<UserItem | undefined> {\n try {\n const token = await userApi.getToken(); \n setToken(token);\n if(token){\n const me = await userApi.getUser();\n setUser(me as UserItem);\n setLoading(false);\n return me as UserItem;\n }\n else return undefined;\n\n } catch (error) {\n setLoading(false)\n return undefined;\n }\n }\n \n\n const login = async (credentials: AuthCredentials): Promise<UserItem | undefined> => {\n setLoading(true);\n try {\n const res = await userApi.login(credentials.email, credentials.password);\n setToken(res.access_token);\n return (await loadUser());\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n const register = async (credentials: AuthCredentials, userName): Promise<UserItem | undefined> => {\n setLoading(true);\n try {\n const res = await userApi.register(credentials.email, credentials.password, userName)\n return (await login(credentials));\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n\n const logout = async () => {\n try {\n await userApi.logout();\n setUser(null);\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n const updateUser = async (user: UserItem) => {\n setLoading(true);\n const { id, ...userRest } = user;\n\n try {\n const res = await userApi.updateUser(userRest);\n setUser(res as any);\n loadUser();\n setLoading(false);\n return res as any;\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n const requestPasswordReset = async (email: string, reset_url?: string): Promise<any> => {\n setLoading(true);\n try {\n await userApi.requestPasswordReset(email, reset_url);\n return setLoading(false);\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n\n const passwordReset = async (token: string, new_password:string): Promise<any> => {\n setLoading(true);\n try {\n await userApi.passwordReset(token, new_password);\n return setLoading(false);\n } catch (error: any) {\n setLoading(false);\n throw error;\n };\n }\n\n\n\n return (\n <AuthContext.Provider\n value={{ isAuthenticated, user, login, register, loading, logout, updateUser, token, requestPasswordReset, passwordReset }}\n >\n {children}\n </AuthContext.Provider>\n );\n};\nexport const useAuth = () => useContext(AuthContext);","import * as React from \"react\"\n\n function Subtitle({styleClass, children}:{styleClass:string, children: React.ReactNode}){\n return(\n <div className={`tw-text-xl tw-font-semibold ${styleClass}`}>{children}</div>\n )\n}\n\nexport default Subtitle","import Subtitle from \"../Typography/Subtitle\"\nimport * as React from \"react\"\n\ninterface TitleCardProps {\n\n title?: string,\n hideTitle?: boolean,\n children?: React.ReactNode,\n topMargin?: string,\n className?: string,\n TopSideButtons?: any\n}\n\nexport function TitleCard({ title,hideTitle, children, topMargin, TopSideButtons, className }: TitleCardProps) {\n return (\n <div className={\"tw-card tw-w-full tw-p-6 tw-bg-base-100 tw-shadow-xl tw-h-fit tw-mb-4 \" + (className || \"\") + \" \" + (topMargin || \"tw-mt-6\")}>\n\n {!hideTitle &&\n <>\n\n < Subtitle styleClass={TopSideButtons ? \"tw-inline-block\" : \"\"}>\n {title}\n\n {/* Top side button, show only if present */}\n {\n TopSideButtons && <div className=\"tw-inline-block tw-float-right\">{TopSideButtons}</div>\n }\n </Subtitle>\n <div className=\"tw-divider tw-mt-2\"></div>\n </>\n }\n\n\n {/** Card Body */}\n <div className='tw-h-full tw-bg-transparent tw-w-full tw-pb-6 tw-bg-base-100'>\n {children}\n </div>\n </div >\n\n )\n}\n","import { Link } from \"react-router-dom\"\nimport * as React from \"react\"\nimport {TitleCard} from \"./TitleCard\"\n\n\nexport function CardPage({title, hideTitle, children, parents} : { \n title: string,\n hideTitle?: boolean,\n children?: React.ReactNode,\n parents?: Array<{name: string, path: string}>\n}) {\n\n\n return (\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-2 tw-px-6 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className='tw-w-full xl:tw-max-w-6xl '>\n <div className=\"tw-text-sm tw-breadcrumbs\">\n <ul>\n <li><Link to={'/'} >Home</Link></li>\n {parents?.map((b,i) => <li key={i}><Link to={b.path} >{b.name}</Link></li>)}\n <li>{title}</li>\n </ul>\n </div>\n <TitleCard hideTitle={hideTitle} title={title} topMargin=\"tw-my-2\" className=\" tw-mb-4\">\n {children}\n </TitleCard>\n </div>\n </main>\n )\n}\n","\nimport * as L from 'leaflet';\nimport * as React from 'react'\nimport { useNavigate } from 'react-router-dom';\n\nexport function MapOverlayPage({ children, className, backdrop, card = true }: { children: React.ReactNode, className?: string, backdrop?: boolean, card?:boolean }) {\n\n\n const closeScreen = () => {\n navigate(`/`);\n }\n\n const navigate = useNavigate();\n\n const overlayRef = React.createRef<HTMLDivElement>()\n const backdropRef = React.createRef<HTMLDivElement>()\n\n\n\n React.useEffect(() => {\n if (overlayRef.current !== null) {\n L.DomEvent.disableClickPropagation(overlayRef.current)\n L.DomEvent.disableScrollPropagation(overlayRef.current)\n }\n if(backdropRef.current !== null && backdrop) {\n L.DomEvent.disableClickPropagation(backdropRef.current)\n L.DomEvent.disableScrollPropagation(backdropRef.current)\n }\n }, [overlayRef, backdropRef])\n\n\n return (\n <div className={`tw-absolute tw-h-full tw-w-full tw-m-auto ${backdrop && \"tw-z-[2000]\"}`}>\n <div ref={backdropRef} className={`${backdrop && \"tw-backdrop-brightness-75\"} tw-h-full tw-w-full tw-grid tw-place-items-center tw-m-auto`} >\n <div ref={overlayRef} className={`${card && \"tw-card tw-card-body\"} tw-shadow-xl tw-bg-base-100 tw-p-6 ${className && className} ${!backdrop && \"tw-z-[2000]\"} tw-absolute tw-top-0 tw-bottom-0 tw-right-0 tw-left-0 tw-m-auto`}>\n {children}\n <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2\" onClick={() => closeScreen()}>βœ•</button>\n </div>\n </div>\n </div>\n )\n}\n\n","import { useEffect, useRef } from 'react';\n\nexport const CircleLayout = ({ items,radius, fontSize } : {items: any, radius: number, fontSize: any}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = containerRef.current;\n const itemCount = items.length;\n\n if (container) {\n for (let i = 0; i < itemCount; i++) {\n const startAngle = (Math.PI) / 2;\n const angle = startAngle + (i / itemCount) * (2 * Math.PI); \n const x = radius * Math.cos(angle);\n const y = radius * Math.sin(angle);\n const child = container.children[i] as HTMLElement;\n child.style.transform = `translate(${x}px, ${y}px)`;\n }\n }\n }, [items]);\n\n return (\n <div className=\"tw-absolute tw-mx-auto tw-flex tw-justify-center tw-items-center tw-h-full tw-w-full\" ref={containerRef}>\n {items.map((item: any) => (\n <div key={item} className=\"tw-absolute\" style={{fontSize: fontSize}}>\n {item}\n </div>\n ))}\n </div>\n );\n};\n\n","export const LUNAR_MONTH: number = 29.530588853;\n\nexport const getJulianDate = (date: Date = new Date()): number => {\n const time: number = date.getTime();\n const tzoffset: number = date.getTimezoneOffset();\n return (time / 86400000) - (tzoffset / 1440) + 2440587.5;\n};\n\nexport const normalize = (value: number): number => {\n value = value - Math.floor(value);\n if (value < 0) value += 1;\n return value;\n};\n\nexport const getLunarAgePercent = (date: Date = new Date()): number => {\n return normalize((getJulianDate(date) - 2451550.1) / LUNAR_MONTH);\n};\n\nexport const getLunarAge = (date: Date = new Date()): number => {\n const percent: number = getLunarAgePercent(date);\n return percent * LUNAR_MONTH;\n};\n\nexport const getNextNewMoon = (): Date => {\n return new Date(getLastNewMoon().getTime() + LUNAR_MONTH * 86400000);\n}\n\nexport const getLastNewMoon = (date: Date = new Date()):Date => {\n const lunarAge: number = getLunarAge(date);\n return new Date(date.getTime() - lunarAge * 86400000);\n}","import * as React from 'react'\nimport { useState } from 'react'\nimport {\n add,\n format,\n parse,\n startOfToday,\n sub,\n} from \"date-fns\";\nimport { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/outline';\nimport { MapOverlayPage } from './MapOverlayPage';\nimport { CircleLayout } from './CircleLayout';\nimport { LUNAR_MONTH, getLastNewMoon, getNextNewMoon } from '../../Utils/Moon';\n\n\nexport const MoonCalendar = () => {\n const today = startOfToday();\n\n\n const [currMonth, setCurrMonth] = useState(() => format(today, \"MMM-yyyy\"));\n let firstDayOfMonth = parse(currMonth, \"MMM-yyyy\", new Date());\n\n\n const getPrevMonth = (event: React.MouseEvent<SVGSVGElement>) => {\n event.preventDefault();\n const firstDayOfPrevMonth = add(firstDayOfMonth, { months: -1 });\n setCurrMonth(format(firstDayOfPrevMonth, \"MMM-yyyy\"));\n };\n\n const getNextMonth = (event: React.MouseEvent<SVGSVGElement>) => {\n event.preventDefault();\n const firstDayOfNextMonth = add(firstDayOfMonth, { months: 1 });\n setCurrMonth(format(firstDayOfNextMonth, \"MMM-yyyy\"));\n };\n\n return (\n <MapOverlayPage backdrop className='tw-h-96 tw-w-80'>\n <p className='tw-self-center tw-text-lg tw-font-bold'>Moon Cycle</p>\n <div className='tw-relative tw-h-full'>\n <CircleLayout items={[\"πŸŒ‘\", \"πŸŒ’\", \"πŸŒ“\", \"πŸŒ”\", \"πŸŒ•\", \"πŸŒ–\", \"πŸŒ—\", \"🌘\"]} radius={80} fontSize={\"3em\"} />\n <CircleLayout items={ [\n format(getLastNewMoon(), \"dd.MM hh:mm\"),\n format(sub(getNextNewMoon(), {seconds: LUNAR_MONTH*86400/4*3}), \"dd.MM hh:mm\"),\n format(sub(getNextNewMoon(), {seconds: LUNAR_MONTH*86400/2}), \"dd.MM hh:mm\"),\n format(sub(getNextNewMoon(), {seconds: LUNAR_MONTH*86400/4}), \"dd.MM hh:mm\")\n ]} radius={120} fontSize={\"0.8em\"}/>\n </div>\n <div className='tw-flex tw-flex-row'>\n <ChevronLeftIcon\n className=\"tw-w-6 tw-h-6 tw-cursor-pointer\"\n onClick={getPrevMonth}\n />\n <p className='tw-text-center tw-p-1 tw-h-full tw-grow'>from {format(getLastNewMoon(), \"dd.MM\")} - to {format(getNextNewMoon(), \"dd.MM\")}</p>\n\n <ChevronRightIcon\n className=\"tw-w-6 tw-h-6 tw-cursor-pointer\"\n onClick={getNextMonth}\n />\n </div>\n\n\n </MapOverlayPage>\n );\n}","export function getValue(obj, path) {\n if (!obj || typeof path !== 'string') return undefined;\n\n var pathArray = path.split('.'); // Use a different variable for the split path\n for (var i = 0, len = pathArray.length; i < len; i++) {\n if (!obj) return undefined; // Check if obj is falsy at each step\n obj = obj[pathArray[i]]; // Dive one level deeper\n }\n return obj; // Return the final value\n}","import { useEffect, useState } from 'react'\nimport { Link } from 'react-router-dom';\nimport { ItemsApi } from '../../types';\nimport { getValue } from '../../Utils/GetValue';\nimport { TitleCard } from './TitleCard';\n\n\ntype breadcrumb = {\n name: string,\n path: string\n}\n\n\nexport const ItemsIndexPage = ({ api, url, parameterField, breadcrumbs, itemNameField, itemTextField, itemImageField, itemSymbolField }: { api: ItemsApi<any>, url: string, parameterField: string, breadcrumbs: Array<breadcrumb>, itemNameField: string, itemTextField: string, itemImageField: string, itemSymbolField: string }) => {\n\n\n const [items, setItems] = useState<any[]>();\n\n const loadProjects = async () => {\n const items = await api?.getItems();\n setItems(items as any);\n }\n\n\n useEffect(() => {\n loadProjects();\n }, [api])\n\n return (\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-pt-2 tw-px-6 tw-bg-base-200 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className=' tw-w-full xl:tw-max-w-6xl'>\n {breadcrumbs &&\n <div className=\"tw-text-sm tw-breadcrumbs\">\n <ul>\n {breadcrumbs.map((b,i) => <li key={i}><Link to={b.path} >{b.name}</Link></li>)}\n </ul>\n </div>}\n {/**\n <div className=\"grid md:grid-cols-2 lg:grid-cols-3 gap-4 mb-4 mt-2 \">\n <TextInput defaultValue='' placeholder='πŸ” Search' containerStyle='lg:col-span-2' updateFormValue={(val) => { setSearch(val) }}></TextInput>\n <SelectBox updateFormValue={() => { }} placeholder=\"Type\" containerStyle=' hidden md:grid' defaultValue='PLACEHOLDER' options={[{ name: \"local\", value: \"local\" }, { name: \"project\", value: \"project\" }]} />\n </div>\n <div className=\"divider\" ></div>\n\n */}\n\n\n\n <div className=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 lg:tw-grid-cols-3 tw-gap-6 \">\n {\n items?.map((i, k) => {\n return (\n <Link key={k} to={url + getValue(i, parameterField)}>\n <TitleCard className={\"!tw-h-96 \"} title={getValue(i, itemNameField)} topMargin={\"tw-mt-2\"}>\n {getValue(i,itemImageField) ?\n <div className=' tw-h-36 flex items-center justify-center '>\n <img className='tw-h-24' src={`https://api.utopia-lab.org/assets/${getValue(i, itemImageField)}`}></img> \n </div> :\n <div className=\"tw-h-36 !bg-transparent tw-flex tw-items-center tw-justify-center tw-text-7xl\">\n {getValue(i,itemSymbolField)}\n </div>\n }\n <p className='tw-font-bold tw-text-sm tw-mt-2'>{i.subname}</p>\n\n\n <p className='tw-text-sm tw-mt-2 tw-mb-2'>{getValue(i, itemTextField)}</p>\n {/**\n * <div className='flex justify-between text-gray-500 '>\n <div className='flex'><UsersIcon className=' h-6 w-6' />&nbsp;2</div>\n <div className='flex'><MapPinIcon className='h-6 w-6' />&nbsp;5</div>\n <div className='flex'><CalendarIcon className='h-6 w-6' />&nbsp;9</div>\n </div>\n \n */}\n\n\n </TitleCard>\n </Link>\n )\n\n })\n }\n </div>\n </div>\n </main>\n\n\n )\n}\n","import { useState, useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { CardPage } from \"./CardPage\";\nimport { ItemsApi } from \"../../types\";\nimport { getValue } from \"../../Utils/GetValue\";\n\n\ntype breadcrumb = {\n name: string,\n path: string\n}\n\n\nexport const ItemViewPage = ({ api, parents, itemNameField, itemTextField, itemImageField, itemSymbolField }: { api: ItemsApi<any>, parents: Array<breadcrumb>, itemNameField: string, itemTextField: string, itemImageField: string, itemSymbolField: string }) => {\n\n const [item, setItem] = useState<any>();\n\n let location = useLocation();\n \n\n const loadProject = async () => {\n if (api?.getItem) {\n const project: unknown = await api?.getItem(location.pathname.split(\"/\")[2]);\n setItem(project as any);\n }\n }\n\n\n\n useEffect(() => {\n loadProject();\n }, [api])\n\n return (\n <CardPage title={getValue(item, itemNameField) || \"\"} parents={parents}>\n {item &&\n <>\n {getValue(item, itemImageField) ?\n <div className=' tw-h-36 flex items-center justify-center '>\n <img className='tw-h-24' src={`https://api.utopia-lab.org/assets/${getValue(item, itemImageField)}`}></img>\n </div> :\n <div className=\"tw-h-36 !bg-transparent tw-flex tw-items-center tw-justify-center tw-text-7xl\">\n {getValue(item, itemSymbolField)}\n </div>\n }\n <p className='text-sm mb-2'>{getValue(item, itemTextField)}</p>\n </>\n\n }\n\n </CardPage>\n )\n}\n","import { useRef, useState } from 'react'\nimport { Link, useNavigate } from 'react-router-dom'\nimport ErrorText from '../Typography/ErrorText'\nimport { TextInput } from '../Input/TextInput'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage} from '../Templates'\n\nexport function LoginPage() {\n\n const [email, setEmail] = useState<string>(\"\");\n const [password, setPassword] = useState<string>(\"\");\n\n const { login, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onLogin = async () => {\n await toast.promise(\n login({ email: email, password: password }),\n {\n success: {\n render({ data }) {\n navigate(`/`);\n return `Hi ${data?.first_name}`\n },\n // other options\n icon: \"✌️\",\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'logging in ...'\n });\n }\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Login</h2>\n <input type=\"email\" placeholder=\"E-Mail\" value={email} onChange={e => setEmail(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <input type=\"password\" placeholder=\"Password\" onChange={e => setPassword(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className='tw-text-right tw-text-primary'><Link to=\"/reset-password\"><span className=\"tw-text-sm tw-inline-block hover:tw-text-primary hover:tw-underline hover:tw-cursor-pointer tw-transition tw-duration-200\">Forgot Password?</span></Link>\n </div>\n <div className=\"tw-card-actions\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onLogin()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Login'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useRef, useState } from 'react'\nimport { Link, useNavigate } from 'react-router-dom'\nimport ErrorText from '../Typography/ErrorText'\nimport { TextInput } from '../Input/TextInput'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage } from '../Templates'\n\nexport function SignupPage() {\n\n const [email, setEmail] = useState<string>(\"\");\n const [userName, setUserName] = useState<string>(\"\");\n\n const [password, setPassword] = useState<string>(\"\");\n\n const { register, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onRegister = async () => {\n await toast.promise(\n register({ email: email, password: password }, userName),\n {\n success: {\n render({ data }) {\n navigate(`/`);\n return `Hi ${data?.first_name}`\n },\n // other options\n icon: \"✌️\",\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'creating new user ...'\n });\n }\n\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Sign Up</h2>\n <input type=\"text\" placeholder=\"Name\" value={userName} onChange={e => setUserName(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <input type=\"email\" placeholder=\"E-Mail\" value={email} onChange={e => setEmail(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <input type=\"password\" placeholder=\"Password\" onChange={e => setPassword(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className=\"tw-card-actions tw-mt-4\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onRegister()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Sign Up'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useState } from 'react'\nimport { useNavigate } from 'react-router-dom'\n\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage} from '../Templates'\n\nexport function RequestPasswordPage({reset_url}) {\n\n const [email, setEmail] = useState<string>(\"\");\n\n const { requestPasswordReset, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onReset = async () => {\n await toast.promise(\n requestPasswordReset( email, reset_url),\n {\n success: {\n render() {\n navigate(`/`);\n return `Check your mailbox`\n },\n // other options\n icon: \"πŸ“¬\",\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'sending email ...'\n });\n }\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Reset Password</h2>\n <input type=\"email\" placeholder=\"E-Mail\" value={email} onChange={e => setEmail(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className=\"tw-card-actions tw-mt-4\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onReset()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Send'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useRef, useState } from 'react'\nimport { Link, useNavigate } from 'react-router-dom'\nimport ErrorText from '../Typography/ErrorText'\nimport { TextInput } from '../Input/TextInput'\nimport * as React from 'react'\nimport { toast } from 'react-toastify'\nimport { useAuth } from './useAuth'\nimport { MapOverlayPage} from '../Templates'\n\nexport function SetNewPasswordPage() {\n\n const [password, setPassword] = useState<string>(\"\");\n\n const { passwordReset, loading } = useAuth();\n\n const navigate = useNavigate();\n\n const onReset = async () => {\n const token = window.location.search.split(\"token=\")[1];\n console.log(token);\n \n await toast.promise(\n passwordReset(token, password),\n {\n success: {\n render() {\n navigate(`/`);\n return `New password set`\n },\n },\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n pending: 'setting password ...'\n });\n }\n\n return (\n <MapOverlayPage backdrop className='tw-max-w-xs tw-h-fit'>\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>Set new Password</h2>\n <input type=\"password\" placeholder=\"Password\" onChange={e => setPassword(e.target.value)} className=\"tw-input tw-input-bordered tw-w-full tw-max-w-xs\" />\n <div className=\"tw-card-actions tw-mt-4\">\n <button className={loading ? 'tw-btn tw-btn-disabled tw-btn-block tw-btn-primary' : 'tw-btn tw-btn-primary tw-btn-block'} onClick={() => onReset()}>{loading ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Set'}</button>\n </div>\n </MapOverlayPage>\n )\n}\n\n","import { useCallback, useReducer, createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { ItemsApi, LayerProps, Permission, PermissionAction } from \"../../../types\";\nimport { useAuth } from \"../../Auth\";\n\ntype ActionType =\n | { type: \"ADD\"; permission: Permission }\n | { type: \"REMOVE\"; id: string };\n\ntype UsePermissionManagerResult = ReturnType<typeof usePermissionsManager>;\n\nconst PermissionContext = createContext<UsePermissionManagerResult>({\n permissions: [],\n setPermissionApi: () => { },\n setPermissionData: () => { },\n setAdminRole: () => { },\n hasUserPermission: () => true\n});\n\nfunction usePermissionsManager(initialPermissions: Permission[]): {\n permissions: Permission[];\n setPermissionApi: (api: ItemsApi<any>) => void;\n setPermissionData: (data: Permission[]) => void;\n setAdminRole: (adminRole: string) => void;\n hasUserPermission: (collectionName: string, action: PermissionAction) => boolean;\n} {\n const [permissions, dispatch] = useReducer((state: Permission[], action: ActionType) => {\n switch (action.type) {\n case \"ADD\":\n const exist = state.find((permission) =>\n permission.id === action.permission.id ? true : false\n );\n if (!exist) return [\n ...state,\n action.permission,\n ];\n else return state;\n\n case \"REMOVE\":\n return state.filter(({ id }) => id !== action.id);\n default:\n throw new Error();\n }\n }, initialPermissions);\n\n const [adminRole, setAdminRole] = React.useState<string | null>(null);\n const { user } = useAuth();\n\n\n const setPermissionApi = useCallback(async (api: ItemsApi<Permission>) => { \n const result = await api.getItems();\n if (result) {\n result.map(permission => {\n dispatch({ type: \"ADD\", permission })\n })\n }\n }, [])\n\n const setPermissionData = useCallback((data: Permission[]) => {\n data.map(permission => {\n dispatch({ type: \"ADD\", permission })\n })\n }, []);\n\n const hasUserPermission = useCallback((collectionName: string, action: PermissionAction) => { \n if (permissions.length == 0) return true;\n else if (user && user.role == adminRole) return true;\n else return permissions.some(p => p.action === action && p.collection === collectionName && p.role == user?.role)\n }, [permissions, user]);\n\n\n\n return { permissions, setPermissionApi, setPermissionData, setAdminRole, hasUserPermission };\n}\n\nexport const PermissionsProvider: React.FunctionComponent<{\n initialPermissions: Permission[], children?: React.ReactNode\n}> = ({ initialPermissions, children }) => (\n <PermissionContext.Provider value={usePermissionsManager(initialPermissions)}>\n {children}\n </PermissionContext.Provider>\n);\n\nexport const usePermissions = (): Permission[] => {\n const { permissions } = useContext(PermissionContext);\n return permissions;\n};\n\n\nexport const useSetPermissionApi = (): UsePermissionManagerResult[\"setPermissionApi\"] => {\n const { setPermissionApi } = useContext(PermissionContext);\n return setPermissionApi;\n}\n\nexport const useSetPermissionData = (): UsePermissionManagerResult[\"setPermissionData\"] => {\n const { setPermissionData } = useContext(PermissionContext);\n return setPermissionData;\n}\n\nexport const useHasUserPermission = (): UsePermissionManagerResult[\"hasUserPermission\"] => {\n const { hasUserPermission } = useContext(PermissionContext);\n return hasUserPermission;\n}\n\nexport const useSetAdminRole = (): UsePermissionManagerResult[\"setAdminRole\"] => {\n const { setAdminRole } = useContext(PermissionContext);\n return setAdminRole;\n}","import * as React from 'react'\nimport { useLayers } from '../hooks/useLayers'\nimport { useHasUserPermission } from '../hooks/usePermissions';\n\n\nexport default function AddButton({ setSelectNewItemPosition }: { setSelectNewItemPosition: React.Dispatch<React.SetStateAction<any>> }) {\n\n const layers = useLayers();\n const hasUserPermission = useHasUserPermission();\n\n const canAddItems = () => {\n let canAdd = false;\n layers.map(layer => {\n if(layer.api?.createItem && hasUserPermission(layer.api.collectionName!,\"create\")) canAdd = true;\n })\n return canAdd;\n }\n\n\n return (\n <>{\n canAddItems() ? \n <div className=\"tw-dropdown tw-dropdown-top tw-dropdown-end tw-dropdown-hover tw-z-500 tw-absolute tw-right-4 tw-bottom-4\" >\n <label tabIndex={0} className=\"tw-z-500 tw-btn tw-btn-circle tw-shadow tw-bg-base-100\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"2\" stroke=\"currentColor\" className=\"tw-w-5 tw-h-5\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" />\n </svg>\n </label>\n <ul tabIndex={0} className=\"tw-dropdown-content tw-pr-1 tw-list-none\">\n {layers.map((layer) => (\n layer.api?.createItem && hasUserPermission(layer.api.collectionName!,\"create\") && (\n <li key={layer.name} >\n <a>\n <div className=\"tw-tooltip tw-tooltip-left\" data-tip={layer.menuText}>\n <button tabIndex={0}\n className=\"tw-z-500 tw-border-0 tw-pl-2 tw-p-0 tw-mb-3 tw-w-10 tw-h-10 tw-cursor-pointer tw-rounded-full tw-mouse tw-drop-shadow-md tw-transition tw-ease-in tw-duration-200 focus:tw-outline-none\"\n style={{ backgroundColor: layer.menuColor }}\n onClick={() => { setSelectNewItemPosition(layer) }}>\n <layer.menuIcon className=\"tw-h-6 tw-w-6 tw-text-white\" ></layer.menuIcon>\n </button>\n </div>\n </a>\n </li>\n )\n\n ))}\n </ul>\n </div> : \"\"\n } \n </> \n\n )\n}\n","import { useCallback, useReducer, createContext, useContext, useEffect, useState } from \"react\";\nimport * as React from \"react\";\nimport { Item, ItemsApi, LayerProps, Tag } from \"../../../types\";\nimport { toast } from \"react-toastify\";\nimport { useAddLayer } from \"./useLayers\";\n\n\ntype ActionType =\n | { type: \"ADD\"; item: Item }\n | { type: \"UPDATE\"; item: Item }\n | { type: \"REMOVE\"; item: Item }\n | { type: \"RESET\"; layer: LayerProps }\n ;\n\n\ntype UseItemManagerResult = ReturnType<typeof useItemsManager>;\n\nconst ItemContext = createContext<UseItemManagerResult>({\n items: [],\n addItem: () => { },\n updateItem: () => { },\n removeItem: () => { },\n resetItems: () => { },\n setItemsApi: () => { },\n setItemsData: () => { },\n allItemsLoaded: false\n});\n\nfunction useItemsManager(initialItems: Item[]): {\n items: Item[];\n addItem: (item: Item) => void;\n updateItem: (item: Item) => void;\n removeItem: (item: Item) => void;\n resetItems: (layer: LayerProps) => void;\n setItemsApi: (layer: LayerProps) => void;\n setItemsData: (layer: LayerProps) => void;\n allItemsLoaded: boolean;\n\n} {\n\n const addLayer = useAddLayer();\n\n const [itemsCount, setItemsCount] = useState<number>(0);\n const [allItemsLoaded, setallItemsLoaded] = useState<boolean>(false);\n\n\n\n const [items, dispatch] = useReducer((state: Item[], action: ActionType) => {\n switch (action.type) {\n case \"ADD\":\n const exist = state.find((item) =>\n item.id === action.item.id ? true : false\n );\n if (!exist) return [\n ...state,\n action.item,\n ];\n else return state;\n case \"UPDATE\":\n return state.map((item) => {\n if (item.id === action.item.id) {\n return action.item\n }\n return item\n });\n case \"REMOVE\":\n return state.filter(item => item !== action.item);\n case \"RESET\":\n return state.filter(item => item.layer?.name !== action.layer.name);\n default:\n throw new Error();\n }\n }, initialItems);\n\n\n const setItemsApi = useCallback(async (layer: LayerProps) => {\n addLayer(layer);\n const result = await toast.promise(\n layer.api!.getItems(),\n {\n pending: `loading ${layer.name} ...`,\n success: `${layer.name} loaded`,\n error: {\n render( {data} ) { \n return `${data}`\n },\n },\n }\n );\n if (result) { \n result.map(item => { \n dispatch({ type: \"ADD\", item: { ...item, layer: layer } }); \n })\n setallItemsLoaded(true);\n }\n }, [])\n\n const setItemsData = useCallback((layer: LayerProps) => {\n layer.data?.map(item => {\n dispatch({ type: \"ADD\", item: { ...item, layer: layer } });\n })\n }, []);\n\n\n const addItem = useCallback(async (item: Item) => { \n dispatch({\n type: \"ADD\",\n item,\n });\n }, []);\n\n const updateItem = useCallback(async (item: Item) => {\n dispatch({\n type: \"UPDATE\",\n item,\n });\n }, []);\n\n const removeItem = useCallback((item: Item) => {\n dispatch({\n type: \"REMOVE\",\n item,\n });\n }, []);\n\n const resetItems = useCallback((layer: LayerProps) => {\n dispatch({\n type: \"RESET\",\n layer\n });\n }, []);\n\n\n\n return { items, updateItem, addItem, removeItem, resetItems, setItemsApi, setItemsData, allItemsLoaded };\n}\n\nexport const ItemsProvider: React.FunctionComponent<{\n initialItems: Item[], children?: React.ReactNode\n}> = ({ initialItems, children }) => (\n <ItemContext.Provider value={useItemsManager(initialItems)}>\n {children}\n </ItemContext.Provider>\n);\n\nexport const useItems = (): Item[] => {\n const { items } = useContext(ItemContext);\n return items;\n};\n\nexport const useAddItem = (): UseItemManagerResult[\"addItem\"] => {\n const { addItem } = useContext(ItemContext);\n return addItem;\n};\n\nexport const useUpdateItem = (): UseItemManagerResult[\"updateItem\"] => {\n const { updateItem } = useContext(ItemContext);\n return updateItem;\n};\n\nexport const useRemoveItem = (): UseItemManagerResult[\"removeItem\"] => {\n const { removeItem } = useContext(ItemContext);\n return removeItem;\n};\n\nexport const useResetItems = (): UseItemManagerResult[\"resetItems\"] => {\n const { resetItems } = useContext(ItemContext);\n return resetItems;\n};\n\nexport const useSetItemsApi = (): UseItemManagerResult[\"setItemsApi\"] => {\n const { setItemsApi } = useContext(ItemContext);\n return setItemsApi;\n};\n\nexport const useSetItemsData = (): UseItemManagerResult[\"setItemsData\"] => {\n const { setItemsData } = useContext(ItemContext);\n return setItemsData;\n}; \n\nexport const useAllItemsLoaded = (): UseItemManagerResult[\"allItemsLoaded\"] => {\n const { allItemsLoaded } = useContext(ItemContext);\n return allItemsLoaded;\n}","export const hashTagRegex = /(#+[a-zA-Z0-9Γ€-Γ–Γ˜-ΓΆΓΈ-ΚΈ_-]{1,})/g;","import { useCallback, useReducer, createContext, useContext, useState } from \"react\";\nimport * as React from \"react\";\nimport { Item, ItemsApi, Tag } from \"../../../types\";\nimport { hashTagRegex } from \"../../../Utils/HashTagRegex\";\nimport { getValue } from \"../../../Utils/GetValue\";\n\ntype ActionType =\n | { type: \"ADD\"; tag: Tag }\n | { type: \"REMOVE\"; id: string };\n\ntype UseTagManagerResult = ReturnType<typeof useTagsManager>;\n\nconst TagContext = createContext<UseTagManagerResult>({\n tags: [],\n addTag: () => { },\n setTagApi: () => { },\n setTagData: () => { },\n getItemTags: () => [],\n allTagsLoaded: false\n});\n\nfunction useTagsManager(initialTags: Tag[]): {\n tags: Tag[];\n addTag: (tag: Tag) => void;\n setTagApi: (api: ItemsApi<Tag>) => void;\n setTagData: (data: Tag[]) => void;\n getItemTags: (item: Item) => Tag[];\n allTagsLoaded: boolean\n} {\n\n const [allTagsLoaded, setallTagsLoaded] = useState<boolean>(false);\n const [tagCount, setTagCount] = useState<number>(0);\n\n const [tags, dispatch] = useReducer((state: Tag[], action: ActionType) => {\n switch (action.type) {\n case \"ADD\":\n const exist = state.find((tag) =>\n tag.name.toLocaleLowerCase() === action.tag.name.toLocaleLowerCase() ? true : false\n );\n if (!exist) {\n const newState = [\n ...state,\n { ...action.tag}\n ];\n if(tagCount == newState.length) setallTagsLoaded(true);\n return newState;\n } \n else return state;\n default:\n throw new Error();\n }\n }, initialTags);\n\n const [api, setApi] = React.useState<ItemsApi<Tag>>({} as ItemsApi<Tag>)\n\n\n const setTagApi = useCallback(async (api: ItemsApi<Tag>) => {\n setApi(api);\n const result = await api.getItems();\n setTagCount(result.length);\n if(tagCount == 0) setallTagsLoaded(true);\n if (result) {\n result.map(tag => {\n //tag.name = tag.name.toLocaleLowerCase();\n dispatch({ type: \"ADD\", tag });\n })\n }\n\n \n }, [])\n\n const setTagData = useCallback((data: Tag[]) => {\n data.map(tag => {\n //tag.name = tag.name.toLocaleLowerCase();\n dispatch({ type: \"ADD\", tag })\n })\n }, []);\n\n const addTag = (tag: Tag) => { \n dispatch({\n type: \"ADD\",\n tag,\n });\n if (!tags.some((t) => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())) {\n api?.createItem && api.createItem(tag);\n }\n \n };\n\n\n const getItemTags = useCallback((item: Item) => {\n const text = item?.layer?.itemTextField && item ? getValue(item, item.layer?.itemTextField) : undefined;\n const itemTagStrings = text?.match(hashTagRegex);\n const itemTags: Tag[] = [];\n itemTagStrings?.map(tag => {\n if (tags.find(t => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n itemTags.push(tags.find(t => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())!)\n }\n }) \n item.layer?.itemOffersField && getValue(item, item.layer.itemOffersField).map(o => {\n const offer = tags.find(t=> t.id === o.tags_id)\n offer && itemTags.push(offer)\n });\n item.layer?.itemNeedsField && getValue(item, item.layer.itemNeedsField).map(n => {\n const need = tags.find(t=>t.id === n.tags_id);\n need && itemTags.push(need);\n });\n\n return itemTags\n }, [tags]);\n\n\n return { tags, addTag, setTagApi, setTagData, getItemTags, allTagsLoaded };\n}\n\nexport const TagsProvider: React.FunctionComponent<{\n initialTags: Tag[], children?: React.ReactNode\n}> = ({ initialTags, children }) => (\n <TagContext.Provider value={useTagsManager(initialTags)}>\n {children}\n </TagContext.Provider>\n);\n\nexport const useTags = (): Tag[] => {\n const { tags } = useContext(TagContext);\n return tags;\n};\n\nexport const useAddTag = (): UseTagManagerResult[\"addTag\"] => {\n const { addTag } = useContext(TagContext);\n return addTag;\n};\n\nexport const useSetTagApi = (): UseTagManagerResult[\"setTagApi\"] => {\n const { setTagApi } = useContext(TagContext);\n return setTagApi;\n}\n\nexport const useSetTagData = (): UseTagManagerResult[\"setTagData\"] => {\n const { setTagData } = useContext(TagContext);\n return setTagData;\n}\n\n\nexport const useGetItemTags = (): UseTagManagerResult[\"getItemTags\"] => {\n const { getItemTags } = useContext(TagContext);\n return getItemTags;\n}\n\nexport const useAllTagsLoaded = (): UseTagManagerResult[\"allTagsLoaded\"] => {\n const { allTagsLoaded } = useContext(TagContext);\n return allTagsLoaded;\n}","import { useCallback, useReducer, createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { LayerProps, Tag } from \"../../../types\";\nimport { useLayers } from \"./useLayers\";\nimport { useLocation } from \"react-router-dom\";\n\ntype ActionType =\n | { type: \"ADD_TAG\"; tag: Tag }\n | { type: \"REMOVE_TAG\"; name: string }\n | { type: \"RESET_TAGS\" }\n | { type: \"TOGGLE_LAYER\"; layer: LayerProps }\n | { type: \"ADD_LAYER\"; layer: LayerProps }\n | { type: \"RESET_LAYERS\" }\n ;\n\ntype UseFilterManagerResult = ReturnType<typeof useFilterManager>;\n\nconst FilterContext = createContext<UseFilterManagerResult>({\n filterTags: [],\n searchPhrase: \"\",\n visibleLayers: [],\n addFilterTag: () => { },\n removeFilterTag: () => { },\n resetFilterTags: () => { },\n setSearchPhrase: () => { },\n addVisibleLayer: () => { },\n toggleVisibleLayer: () => { },\n resetVisibleLayers: () => { },\n isLayerVisible: () => true\n});\n\nfunction useFilterManager(initialTags: Tag[]): {\n filterTags: Tag[];\n searchPhrase: string;\n visibleLayers: LayerProps[];\n addFilterTag: (tag: Tag) => void;\n removeFilterTag: (name: string) => void;\n resetFilterTags: () => void;\n setSearchPhrase: (phrase: string) => void;\n addVisibleLayer: (layer: LayerProps) => void;\n toggleVisibleLayer: (layer: LayerProps) => void;\n resetVisibleLayers: () => void;\n isLayerVisible: (layer: LayerProps) => boolean;\n} {\n const [filterTags, dispatchTags] = useReducer((state: Tag[], action: ActionType) => {\n switch (action.type) {\n case \"ADD_TAG\":\n const exist = state.find((tag) =>\n tag.id === action.tag.id ? true : false\n );\n if (!exist) return [\n ...state,\n action.tag,\n ];\n else return state;\n case \"REMOVE_TAG\":\n return state.filter(({ name }) => name !== action.name);\n case \"RESET_TAGS\":\n return initialTags;\n default:\n throw new Error();\n }\n }, initialTags);\n\n const initialLayers = useLayers()\n\n const [visibleLayers, dispatchLayers] = useReducer((state: LayerProps[], action: ActionType) => {\n switch (action.type) {\n case \"ADD_LAYER\":\n const exist1 = state.find((layer) =>\n layer.name === action.layer.name ? true : false\n );\n if (!exist1) return [\n ...state,\n action.layer,\n ];\n else return state;\n case \"TOGGLE_LAYER\":\n const exist2 = state.some((layer) =>\n layer.name === action.layer.name);\n if(exist2) return state.filter(({name}) => name != action.layer.name);\n else return [... state, action.layer];\n case \"RESET_LAYERS\":\n return initialLayers;\n default:\n throw new Error();\n }\n }, initialLayers);\n\n const [searchPhrase, searchPhraseSet] = React.useState<string>(\"\");\n\n const addFilterTag = (tag: Tag) => {\n\n let params = new URLSearchParams(window.location.search);\n let urlTags = params.get(\"tags\");\n if(!urlTags?.includes(tag.name))\n params.set(\"tags\", `${urlTags ? urlTags : \"\"}${urlTags? ',' : ''}${tag.name}`)\n window.history.pushState('','', \"?\" +params.toString());\n\n dispatchTags({\n type: \"ADD_TAG\",\n tag,\n });\n\n };\n\n const removeFilterTag = useCallback((name: string) => {\n\n let params = new URLSearchParams(window.location.search);\n let urlTags = params.get(\"tags\");\n let newUrlTags = \"\";\n let tags = urlTags?.split(\",\");\n if(tags?.length==0 && urlTags?.length && urlTags?.length > 0) tags[0]=urlTags;\n tags?.map(urlTag => {\n if(!(urlTag.toLocaleLowerCase() === name.toLocaleLowerCase()))\n newUrlTags = newUrlTags + `${newUrlTags===\"\"? urlTag : `,${urlTag}`}`\n }); \n if(newUrlTags !== \"\") {\n params.set(\"tags\", `${newUrlTags}`)\n window.history.pushState('','', \"?\" +params.toString());\n }\n else {\n\n window.history.pushState('','', window.location.pathname);\n }\n\n dispatchTags({\n type: \"REMOVE_TAG\",\n name,\n });\n }, []);\n\n const resetFilterTags = useCallback(() => {\n dispatchTags({\n type: \"RESET_TAGS\",\n });\n }, []);\n\n const addVisibleLayer = (layer: LayerProps) => {\n dispatchLayers({\n type: \"ADD_LAYER\",\n layer,\n });\n\n };\n\n const toggleVisibleLayer = (layer: LayerProps) => {\n dispatchLayers({\n type: \"TOGGLE_LAYER\",\n layer,\n });\n\n };\n\n\n const resetVisibleLayers = useCallback(() => {\n dispatchLayers({\n type: \"RESET_LAYERS\",\n });\n }, []);\n\n const isLayerVisible = useCallback((layer: LayerProps) => {\n return visibleLayers.some(l => l.name === layer.name)\n }, [visibleLayers]);\n\n const setSearchPhrase = useCallback((phrase: string) => {\n searchPhraseSet(phrase)\n }, []);\n\n return { filterTags, addFilterTag, removeFilterTag, resetFilterTags, setSearchPhrase, searchPhrase, visibleLayers, toggleVisibleLayer, resetVisibleLayers, isLayerVisible, addVisibleLayer };\n}\n\nexport const FilterProvider: React.FunctionComponent<{\n initialTags: Tag[], children?: React.ReactNode\n}> = ({ initialTags, children }) => (\n <FilterContext.Provider value={useFilterManager(initialTags)}>\n {children}\n </FilterContext.Provider>\n);\n\nexport const useFilterTags = (): Tag[] => {\n const { filterTags } = useContext(FilterContext);\n return filterTags;\n};\n\nexport const useAddFilterTag = (): UseFilterManagerResult[\"addFilterTag\"] => {\n const { addFilterTag } = useContext(FilterContext);\n return addFilterTag;\n};\n\nexport const useRemoveFilterTag = (): UseFilterManagerResult[\"removeFilterTag\"] => {\n const { removeFilterTag } = useContext(FilterContext);\n return removeFilterTag;\n};\n\nexport const useResetFilterTags = (): UseFilterManagerResult[\"resetFilterTags\"] => {\n const { resetFilterTags } = useContext(FilterContext);\n return resetFilterTags;\n};\n\nexport const useSearchPhrase = (): UseFilterManagerResult[\"searchPhrase\"] => {\n const { searchPhrase } = useContext(FilterContext);\n return searchPhrase;\n};\n\nexport const useSetSearchPhrase = (): UseFilterManagerResult[\"setSearchPhrase\"] => {\n const { setSearchPhrase } = useContext(FilterContext);\n return setSearchPhrase;\n};\n\nexport const useVisibleLayer = (): UseFilterManagerResult[\"visibleLayers\"] => {\n const { visibleLayers } = useContext(FilterContext);\n return visibleLayers;\n};\n\nexport const useAddVisibleLayer = (): UseFilterManagerResult[\"addVisibleLayer\"] => {\n const { addVisibleLayer } = useContext(FilterContext);\n return addVisibleLayer;\n};\n\n\nexport const useToggleVisibleLayer = (): UseFilterManagerResult[\"toggleVisibleLayer\"] => {\n const { toggleVisibleLayer } = useContext(FilterContext);\n return toggleVisibleLayer;\n};\n\nexport const useResetVisibleLayers = (): UseFilterManagerResult[\"resetVisibleLayers\"] => {\n const { resetVisibleLayers } = useContext(FilterContext);\n return resetVisibleLayers;\n};\n\nexport const useIsLayerVisible = (): UseFilterManagerResult[\"isLayerVisible\"] => {\n const { isLayerVisible } = useContext(FilterContext);\n return isLayerVisible;\n};","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height\n };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useTimeout = (callback, delay) => {\n const callbackRef = useRef(callback);\n const timeoutRef = useRef<any>();\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const set = useCallback(() => {\n timeoutRef.current = setTimeout(() => callbackRef.current(), delay);\n }, [delay]);\n\n const clear = useCallback(() => {\n timeoutRef.current && clearTimeout(timeoutRef.current);\n }, []);\n\n useEffect(() => {\n set();\n return clear;\n }, [delay, set, clear]);\n\n const reset = useCallback(() => {\n clear();\n set();\n }, [clear, set]);\n\n return { reset, clear };\n}","import { useEffect } from 'react';\nimport { useTimeout } from './useTimeout';\n\nexport const useDebounce = (callback, delay, deps) => {\n const { reset, clear } = useTimeout(callback, delay);\n\n useEffect(reset, [...deps, reset]);\n useEffect(clear, []);\n}","import { useCallback, useReducer, createContext, useContext, useEffect } from \"react\";\nimport * as React from \"react\";\nimport { Item } from \"../../../types\";\nimport { Marker, Popup } from \"leaflet\";\n\ntype LeafletRef = {\n item: Item,\n marker: Marker,\n popup: Popup\n}\n\ntype ActionType =\n | { type: \"ADD_MARKER\"; item: Item, marker: Marker }\n | { type: \"ADD_POPUP\"; item: Item, popup: Popup }\n ;\n\n\ntype UseLeafletRefsManagerResult = ReturnType<typeof useLeafletRefsManager>;\n\nconst LeafletRefsContext = createContext<UseLeafletRefsManagerResult>({\n leafletRefs: {},\n addMarker: () => { },\n addPopup: () => { },\n});\n\nfunction useLeafletRefsManager(initialLeafletRefs: {}): {\n leafletRefs: Record<string,LeafletRef>;\n addMarker: (item: Item, marker: Marker) => void;\n addPopup: (item: Item, popup: Popup) => void;\n} {\n\n\n\n const [leafletRefs, dispatch] = useReducer((state: Record<string,LeafletRef>, action: ActionType) => {\n switch (action.type) {\n case \"ADD_MARKER\":\n return {\n ...state,\n [action.item.id]: { ...state[action.item.id], marker: action.marker, item: action.item }}\n case \"ADD_POPUP\":\n return {\n ...state,\n [action.item.id]: { ...state[action.item.id], popup: action.popup, item: action.item }}\n default:\n throw new Error();\n }\n }, initialLeafletRefs);\n\n\n\n\n const addMarker = useCallback((item: Item, marker: Marker) => {\n dispatch({\n type: \"ADD_MARKER\",\n item,\n marker\n });\n }, []);\n\n const addPopup = useCallback((item: Item, popup: Popup) => {\n dispatch({\n type: \"ADD_POPUP\",\n item,\n popup\n });\n }, []);\n\n\n\n return { leafletRefs, addMarker, addPopup };\n}\n\nexport const LeafletRefsProvider: React.FunctionComponent<{\n initialLeafletRefs: {}, children?: React.ReactNode\n}> = ({ initialLeafletRefs, children }) => (\n <LeafletRefsContext.Provider value={useLeafletRefsManager(initialLeafletRefs)}>\n {children}\n </LeafletRefsContext.Provider>\n);\n\nexport const useLeafletRefs = (): Record<string,LeafletRef> => {\n const { leafletRefs } = useContext(LeafletRefsContext);\n return leafletRefs;\n};\n\nexport const useAddMarker = (): UseLeafletRefsManagerResult[\"addMarker\"] => {\n const { addMarker } = useContext(LeafletRefsContext);\n return addMarker;\n};\n\nexport const useAddPopup = (): UseLeafletRefsManagerResult[\"addPopup\"] => {\n const { addPopup } = useContext(LeafletRefsContext);\n return addPopup;\n};\n\n","/*!\nCopyright (c) 2016 Dominik Moritz\n\nThis file is part of the leaflet locate control. It is licensed under the MIT license.\nYou can find the project at: https://github.com/domoritz/leaflet-locatecontrol\n*/\n(function (factory, window) {\n // see https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md#module-loaders\n // for details on how to structure a leaflet plugin.\n\n // define an AMD module that relies on 'leaflet'\n if (typeof define === \"function\" && define.amd) {\n define([\"leaflet\"], factory);\n\n // define a Common JS module that relies on 'leaflet'\n } else if (typeof exports === \"object\") {\n if (typeof window !== \"undefined\" && window.L) {\n module.exports = factory(L);\n } else {\n module.exports = factory(require(\"leaflet\"));\n }\n }\n\n // attach your plugin to the global 'L' variable\n if (typeof window !== \"undefined\" && window.L) {\n window.L.Control.Locate = factory(L);\n }\n})(function (L) {\n const LDomUtilApplyClassesMethod = (method, element, classNames) => {\n classNames = classNames.split(\" \");\n classNames.forEach(function (className) {\n L.DomUtil[method].call(this, element, className);\n });\n };\n\n const addClasses = (el, names) => LDomUtilApplyClassesMethod(\"addClass\", el, names);\n const removeClasses = (el, names) => LDomUtilApplyClassesMethod(\"removeClass\", el, names);\n\n /**\n * Compatible with L.Circle but a true marker instead of a path\n */\n const LocationMarker = L.Marker.extend({\n initialize(latlng, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this.createIcon();\n },\n\n /**\n * Create a styled circle location marker\n */\n createIcon() {\n const opt = this.options;\n\n let style = \"\";\n\n if (opt.color !== undefined) {\n style += `stroke:${opt.color};`;\n }\n if (opt.weight !== undefined) {\n style += `stroke-width:${opt.weight};`;\n }\n if (opt.fillColor !== undefined) {\n style += `fill:${opt.fillColor};`;\n }\n if (opt.fillOpacity !== undefined) {\n style += `fill-opacity:${opt.fillOpacity};`;\n }\n if (opt.opacity !== undefined) {\n style += `opacity:${opt.opacity};`;\n }\n\n const icon = this._getIconSVG(opt, style);\n\n this._locationIcon = L.divIcon({\n className: icon.className,\n html: icon.svg,\n iconSize: [icon.w, icon.h]\n });\n\n this.setIcon(this._locationIcon);\n },\n\n /**\n * Return the raw svg for the shape\n *\n * Split so can be easily overridden\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = options.weight;\n const s = r + w;\n const s2 = s * 2;\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${s2}\" height=\"${s2}\" version=\"1.1\" viewBox=\"-${s} -${s} ${s2} ${s2}\">` +\n '<circle r=\"' +\n r +\n '\" style=\"' +\n style +\n '\" />' +\n \"</svg>\";\n return {\n className: \"leaflet-control-locate-location\",\n svg,\n w: s2,\n h: s2\n };\n },\n\n setStyle(style) {\n L.Util.setOptions(this, style);\n this.createIcon();\n }\n });\n\n const CompassMarker = LocationMarker.extend({\n initialize(latlng, heading, options) {\n L.Util.setOptions(this, options);\n this._latlng = latlng;\n this._heading = heading;\n this.createIcon();\n },\n\n setHeading(heading) {\n this._heading = heading;\n },\n\n /**\n * Create a styled arrow compass marker\n */\n _getIconSVG(options, style) {\n const r = options.radius;\n const w = options.width + options.weight;\n const h = (r + options.depth + options.weight) * 2;\n const path = `M0,0 l${options.width / 2},${options.depth} l-${w},0 z`;\n const svgstyle = `transform: rotate(${this._heading}deg)`;\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${w}\" height=\"${h}\" version=\"1.1\" viewBox=\"-${w / 2} 0 ${w} ${h}\" style=\"${svgstyle}\">` +\n '<path d=\"' +\n path +\n '\" style=\"' +\n style +\n '\" />' +\n \"</svg>\";\n return {\n className: \"leaflet-control-locate-heading\",\n svg,\n w,\n h\n };\n }\n });\n\n const LocateControl = L.Control.extend({\n options: {\n /** Position of the control */\n position: \"topleft\",\n /** The layer that the user's location should be drawn on. By default creates a new layer. */\n layer: undefined,\n /**\n * Automatically sets the map view (zoom and pan) to the user's location as it updates.\n * While the map is following the user's location, the control is in the `following` state,\n * which changes the style of the control and the circle marker.\n *\n * Possible values:\n * - false: never updates the map view when location changes.\n * - 'once': set the view when the location is first determined\n * - 'always': always updates the map view when location changes.\n * The map view follows the user's location.\n * - 'untilPan': like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n * - 'untilPanOrZoom': (default) like 'always', except stops updating the\n * view if the user has manually panned the map.\n * The map view follows the user's location until she pans.\n */\n setView: \"untilPanOrZoom\",\n /** Keep the current map zoom level when setting the view and only pan. */\n keepCurrentZoomLevel: false,\n /** After activating the plugin by clicking on the icon, zoom to the selected zoom level, even when keepCurrentZoomLevel is true. Set to 'false' to disable this feature. */\n initialZoomLevel: false,\n /**\n * This callback can be used to override the viewport tracking\n * This function should return a LatLngBounds object.\n *\n * For example to extend the viewport to ensure that a particular LatLng is visible:\n *\n * getLocationBounds: function(locationEvent) {\n * return locationEvent.bounds.extend([-33.873085, 151.219273]);\n * },\n */\n getLocationBounds(locationEvent) {\n return locationEvent.bounds;\n },\n /** Smooth pan and zoom to the location of the marker. Only works in Leaflet 1.0+. */\n flyTo: false,\n /**\n * The user location can be inside and outside the current view when the user clicks on the\n * control that is already active. Both cases can be configures separately.\n * Possible values are:\n * - 'setView': zoom and pan to the current location\n * - 'stop': stop locating and remove the location marker\n */\n clickBehavior: {\n /** What should happen if the user clicks on the control while the location is within the current view. */\n inView: \"stop\",\n /** What should happen if the user clicks on the control while the location is outside the current view. */\n outOfView: \"setView\",\n /**\n * What should happen if the user clicks on the control while the location is within the current view\n * and we could be following but are not. Defaults to a special value which inherits from 'inView';\n */\n inViewNotFollowing: \"inView\"\n },\n /**\n * If set, save the map bounds just before centering to the user's\n * location. When control is disabled, set the view back to the\n * bounds that were saved.\n */\n returnToPrevBounds: false,\n /**\n * Keep a cache of the location after the user deactivates the control. If set to false, the user has to wait\n * until the locate API returns a new location before they see where they are again.\n */\n cacheLocation: true,\n /** If set, a circle that shows the location accuracy is drawn. */\n drawCircle: true,\n /** If set, the marker at the users' location is drawn. */\n drawMarker: true,\n /** If set and supported then show the compass heading */\n showCompass: true,\n /** The class to be used to create the marker. For example L.CircleMarker or L.Marker */\n markerClass: LocationMarker,\n /** The class us be used to create the compass bearing arrow */\n compassClass: CompassMarker,\n /** Accuracy circle style properties. NOTE these styles should match the css animations styles */\n circleStyle: {\n className: \"leaflet-control-locate-circle\",\n color: \"#136AEC\",\n fillColor: \"#136AEC\",\n fillOpacity: 0.15,\n weight: 0\n },\n /** Inner marker style properties. Only works if your marker class supports `setStyle`. */\n markerStyle: {\n className: \"leaflet-control-locate-marker\",\n color: \"#fff\",\n fillColor: \"#2A93EE\",\n fillOpacity: 1,\n weight: 3,\n opacity: 1,\n radius: 9\n },\n /** Compass */\n compassStyle: {\n fillColor: \"#2A93EE\",\n fillOpacity: 1,\n weight: 0,\n color: \"#fff\",\n opacity: 1,\n radius: 9, // How far is the arrow is from the center of of the marker\n width: 9, // Width of the arrow\n depth: 6 // Length of the arrow\n },\n /**\n * Changes to accuracy circle and inner marker while following.\n * It is only necessary to provide the properties that should change.\n */\n followCircleStyle: {},\n followMarkerStyle: {\n // color: '#FFA500',\n // fillColor: '#FFB000'\n },\n followCompassStyle: {},\n /** The CSS class for the icon. For example fa-location-arrow or fa-map-marker */\n icon: \"leaflet-control-locate-location-arrow\",\n iconLoading: \"leaflet-control-locate-spinner\",\n /** The element to be created for icons. For example span or i */\n iconElementTag: \"span\",\n /** The element to be created for the text. For example small or span */\n textElementTag: \"small\",\n /** Padding around the accuracy circle. */\n circlePadding: [0, 0],\n /** Use metric units. */\n metric: true,\n /**\n * This callback can be used in case you would like to override button creation behavior.\n * This is useful for DOM manipulation frameworks such as angular etc.\n * This function should return an object with HtmlElement for the button (link property) and the icon (icon property).\n */\n createButtonCallback(container, options) {\n const link = L.DomUtil.create(\"a\", \"leaflet-bar-part leaflet-bar-part-single\", container);\n link.title = options.strings.title;\n link.href = \"#\";\n link.setAttribute(\"role\", \"button\");\n const icon = L.DomUtil.create(options.iconElementTag, options.icon, link);\n\n if (options.strings.text !== undefined) {\n const text = L.DomUtil.create(options.textElementTag, \"leaflet-locate-text\", link);\n text.textContent = options.strings.text;\n link.classList.add(\"leaflet-locate-text-active\");\n link.parentNode.style.display = \"flex\";\n if (options.icon.length > 0) {\n icon.classList.add(\"leaflet-locate-icon\");\n }\n }\n\n return { link, icon };\n },\n /** This event is called in case of any location error that is not a time out error. */\n onLocationError(err, control) {\n alert(err.message);\n },\n /**\n * This event is called when the user's location is outside the bounds set on the map.\n * The event is called repeatedly when the location changes.\n */\n onLocationOutsideMapBounds(control) {\n control.stop();\n alert(control.options.strings.outsideMapBoundsMsg);\n },\n /** Display a pop-up when the user click on the inner marker. */\n showPopup: true,\n strings: {\n title: \"Show me where I am\",\n metersUnit: \"meters\",\n feetUnit: \"feet\",\n popup: \"You are within {distance} {unit} from this point\",\n outsideMapBoundsMsg: \"You seem located outside the boundaries of the map\"\n },\n /** The default options passed to leaflets locate method. */\n locateOptions: {\n maxZoom: Infinity,\n watch: true, // if you overwrite this, visualization cannot be updated\n setView: false // have to set this to false because we have to\n // do setView manually\n }\n },\n\n initialize(options) {\n // set default options if nothing is set (merge one step deep)\n for (const i in options) {\n if (typeof this.options[i] === \"object\") {\n L.extend(this.options[i], options[i]);\n } else {\n this.options[i] = options[i];\n }\n }\n\n // extend the follow marker style and circle from the normal style\n this.options.followMarkerStyle = L.extend({}, this.options.markerStyle, this.options.followMarkerStyle);\n this.options.followCircleStyle = L.extend({}, this.options.circleStyle, this.options.followCircleStyle);\n this.options.followCompassStyle = L.extend({}, this.options.compassStyle, this.options.followCompassStyle);\n },\n\n /**\n * Add control to map. Returns the container for the control.\n */\n onAdd(map) {\n const container = L.DomUtil.create(\"div\", \"leaflet-control-locate leaflet-bar leaflet-control\");\n this._container = container;\n this._map = map;\n this._layer = this.options.layer || new L.LayerGroup();\n this._layer.addTo(map);\n this._event = undefined;\n this._compassHeading = null;\n this._prevBounds = null;\n\n const linkAndIcon = this.options.createButtonCallback(container, this.options);\n this._link = linkAndIcon.link;\n this._icon = linkAndIcon.icon;\n\n L.DomEvent.on(\n this._link,\n \"click\",\n function (ev) {\n L.DomEvent.stopPropagation(ev);\n L.DomEvent.preventDefault(ev);\n this._onClick();\n },\n this\n ).on(this._link, \"dblclick\", L.DomEvent.stopPropagation);\n\n this._resetVariables();\n\n this._map.on(\"unload\", this._unload, this);\n\n return container;\n },\n\n /**\n * This method is called when the user clicks on the control.\n */\n _onClick() {\n this._justClicked = true;\n const wasFollowing = this._isFollowing();\n this._userPanned = false;\n this._userZoomed = false;\n\n if (this._active && !this._event) {\n // click while requesting\n this.stop();\n } else if (this._active) {\n const behaviors = this.options.clickBehavior;\n let behavior = behaviors.outOfView;\n if (this._map.getBounds().contains(this._event.latlng)) {\n behavior = wasFollowing ? behaviors.inView : behaviors.inViewNotFollowing;\n }\n\n // Allow inheriting from another behavior\n if (behaviors[behavior]) {\n behavior = behaviors[behavior];\n }\n\n switch (behavior) {\n case \"setView\":\n this.setView();\n break;\n case \"stop\":\n this.stop();\n if (this.options.returnToPrevBounds) {\n const f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n f.bind(this._map)(this._prevBounds);\n }\n break;\n }\n } else {\n if (this.options.returnToPrevBounds) {\n this._prevBounds = this._map.getBounds();\n }\n this.start();\n }\n\n this._updateContainerStyle();\n },\n\n /**\n * Starts the plugin:\n * - activates the engine\n * - draws the marker (if coordinates available)\n */\n start() {\n this._activate();\n\n if (this._event) {\n this._drawMarker(this._map);\n\n // if we already have a location but the user clicked on the control\n if (this.options.setView) {\n this.setView();\n }\n }\n this._updateContainerStyle();\n },\n\n /**\n * Stops the plugin:\n * - deactivates the engine\n * - reinitializes the button\n * - removes the marker\n */\n stop() {\n this._deactivate();\n\n this._cleanClasses();\n this._resetVariables();\n\n this._removeMarker();\n },\n\n /**\n * Keep the control active but stop following the location\n */\n stopFollowing() {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n },\n\n /**\n * This method launches the location engine.\n * It is called before the marker is updated,\n * event if it does not mean that the event will be ready.\n *\n * Override it if you want to add more functionalities.\n * It should set the this._active to true and do nothing if\n * this._active is true.\n */\n _activate() {\n if (this._active || !this._map) {\n return;\n }\n\n this._map.locate(this.options.locateOptions);\n this._map.fire(\"locateactivate\", this);\n this._active = true;\n\n // bind event listeners\n this._map.on(\"locationfound\", this._onLocationFound, this);\n this._map.on(\"locationerror\", this._onLocationError, this);\n this._map.on(\"dragstart\", this._onDrag, this);\n this._map.on(\"zoomstart\", this._onZoom, this);\n this._map.on(\"zoomend\", this._onZoomEnd, this);\n if (this.options.showCompass) {\n const oriAbs = \"ondeviceorientationabsolute\" in window;\n if (oriAbs || \"ondeviceorientation\" in window) {\n const _this = this;\n const deviceorientation = function () {\n L.DomEvent.on(window, oriAbs ? \"deviceorientationabsolute\" : \"deviceorientation\", _this._onDeviceOrientation, _this);\n };\n if (DeviceOrientationEvent && typeof DeviceOrientationEvent.requestPermission === \"function\") {\n DeviceOrientationEvent.requestPermission().then(function (permissionState) {\n if (permissionState === \"granted\") {\n deviceorientation();\n }\n });\n } else {\n deviceorientation();\n }\n }\n }\n },\n\n /**\n * Called to stop the location engine.\n *\n * Override it to shutdown any functionalities you added on start.\n */\n _deactivate() {\n if (!this._active || !this._map) {\n return;\n }\n\n this._map.stopLocate();\n this._map.fire(\"locatedeactivate\", this);\n this._active = false;\n\n if (!this.options.cacheLocation) {\n this._event = undefined;\n }\n\n // unbind event listeners\n this._map.off(\"locationfound\", this._onLocationFound, this);\n this._map.off(\"locationerror\", this._onLocationError, this);\n this._map.off(\"dragstart\", this._onDrag, this);\n this._map.off(\"zoomstart\", this._onZoom, this);\n this._map.off(\"zoomend\", this._onZoomEnd, this);\n if (this.options.showCompass) {\n this._compassHeading = null;\n if (\"ondeviceorientationabsolute\" in window) {\n L.DomEvent.off(window, \"deviceorientationabsolute\", this._onDeviceOrientation, this);\n } else if (\"ondeviceorientation\" in window) {\n L.DomEvent.off(window, \"deviceorientation\", this._onDeviceOrientation, this);\n }\n }\n },\n\n /**\n * Zoom (unless we should keep the zoom level) and an to the current view.\n */\n setView() {\n this._drawMarker();\n if (this._isOutsideMapBounds()) {\n this._event = undefined; // clear the current location so we can get back into the bounds\n this.options.onLocationOutsideMapBounds(this);\n } else {\n if (this._justClicked && this.options.initialZoomLevel !== false) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.setView;\n f.bind(this._map)([this._event.latitude, this._event.longitude], this.options.initialZoomLevel);\n } else if (this.options.keepCurrentZoomLevel) {\n var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;\n f.bind(this._map)([this._event.latitude, this._event.longitude]);\n } else {\n var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;\n // Ignore zoom events while setting the viewport as these would stop following\n this._ignoreEvent = true;\n f.bind(this._map)(this.options.getLocationBounds(this._event), {\n padding: this.options.circlePadding,\n maxZoom: this.options.initialZoomLevel || this.options.locateOptions.maxZoom\n });\n L.Util.requestAnimFrame(function () {\n // Wait until after the next animFrame because the flyTo can be async\n this._ignoreEvent = false;\n }, this);\n }\n }\n },\n\n /**\n *\n */\n _drawCompass() {\n if (!this._event) {\n return;\n }\n\n const latlng = this._event.latlng;\n\n if (this.options.showCompass && latlng && this._compassHeading !== null) {\n const cStyle = this._isFollowing() ? this.options.followCompassStyle : this.options.compassStyle;\n if (!this._compass) {\n this._compass = new this.options.compassClass(latlng, this._compassHeading, cStyle).addTo(this._layer);\n } else {\n this._compass.setLatLng(latlng);\n this._compass.setHeading(this._compassHeading);\n // If the compassClass can be updated with setStyle, update it.\n if (this._compass.setStyle) {\n this._compass.setStyle(cStyle);\n }\n }\n //\n }\n if (this._compass && (!this.options.showCompass || this._compassHeading === null)) {\n this._compass.removeFrom(this._layer);\n this._compass = null;\n }\n },\n\n /**\n * Draw the marker and accuracy circle on the map.\n *\n * Uses the event retrieved from onLocationFound from the map.\n */\n _drawMarker() {\n if (this._event.accuracy === undefined) {\n this._event.accuracy = 0;\n }\n\n const radius = this._event.accuracy;\n const latlng = this._event.latlng;\n\n // circle with the radius of the location's accuracy\n if (this.options.drawCircle) {\n const style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle;\n\n if (!this._circle) {\n this._circle = L.circle(latlng, radius, style).addTo(this._layer);\n } else {\n this._circle.setLatLng(latlng).setRadius(radius).setStyle(style);\n }\n }\n\n let distance;\n let unit;\n if (this.options.metric) {\n distance = radius.toFixed(0);\n unit = this.options.strings.metersUnit;\n } else {\n distance = (radius * 3.2808399).toFixed(0);\n unit = this.options.strings.feetUnit;\n }\n\n // small inner marker\n if (this.options.drawMarker) {\n const mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;\n if (!this._marker) {\n this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);\n } else {\n this._marker.setLatLng(latlng);\n // If the markerClass can be updated with setStyle, update it.\n if (this._marker.setStyle) {\n this._marker.setStyle(mStyle);\n }\n }\n }\n\n this._drawCompass();\n\n const t = this.options.strings.popup;\n function getPopupText() {\n if (typeof t === \"string\") {\n return L.Util.template(t, { distance, unit });\n } else if (typeof t === \"function\") {\n return t({ distance, unit });\n } else {\n return t;\n }\n }\n if (this.options.showPopup && t && this._marker) {\n this._marker.bindPopup(getPopupText())._popup.setLatLng(latlng);\n }\n if (this.options.showPopup && t && this._compass) {\n this._compass.bindPopup(getPopupText())._popup.setLatLng(latlng);\n }\n },\n\n /**\n * Remove the marker from map.\n */\n _removeMarker() {\n this._layer.clearLayers();\n this._marker = undefined;\n this._circle = undefined;\n },\n\n /**\n * Unload the plugin and all event listeners.\n * Kind of the opposite of onAdd.\n */\n _unload() {\n this.stop();\n this._map.off(\"unload\", this._unload, this);\n },\n\n /**\n * Sets the compass heading\n */\n _setCompassHeading(angle) {\n if (!isNaN(parseFloat(angle)) && isFinite(angle)) {\n angle = Math.round(angle);\n\n this._compassHeading = angle;\n L.Util.requestAnimFrame(this._drawCompass, this);\n } else {\n this._compassHeading = null;\n }\n },\n\n /**\n * If the compass fails calibration just fail safely and remove the compass\n */\n _onCompassNeedsCalibration() {\n this._setCompassHeading();\n },\n\n /**\n * Process and normalise compass events\n */\n _onDeviceOrientation(e) {\n if (!this._active) {\n return;\n }\n\n if (e.webkitCompassHeading) {\n // iOS\n this._setCompassHeading(e.webkitCompassHeading);\n } else if (e.absolute && e.alpha) {\n // Android\n this._setCompassHeading(360 - e.alpha);\n }\n },\n\n /**\n * Calls deactivate and dispatches an error.\n */\n _onLocationError(err) {\n // ignore time out error if the location is watched\n if (err.code == 3 && this.options.locateOptions.watch) {\n return;\n }\n\n this.stop();\n this.options.onLocationError(err, this);\n },\n\n /**\n * Stores the received event and updates the marker.\n */\n _onLocationFound(e) {\n // no need to do anything if the location has not changed\n if (this._event && this._event.latlng.lat === e.latlng.lat && this._event.latlng.lng === e.latlng.lng && this._event.accuracy === e.accuracy) {\n return;\n }\n\n if (!this._active) {\n // we may have a stray event\n return;\n }\n\n this._event = e;\n\n this._drawMarker();\n this._updateContainerStyle();\n\n switch (this.options.setView) {\n case \"once\":\n if (this._justClicked) {\n this.setView();\n }\n break;\n case \"untilPan\":\n if (!this._userPanned) {\n this.setView();\n }\n break;\n case \"untilPanOrZoom\":\n if (!this._userPanned && !this._userZoomed) {\n this.setView();\n }\n break;\n case \"always\":\n this.setView();\n break;\n case false:\n // don't set the view\n break;\n }\n\n this._justClicked = false;\n },\n\n /**\n * When the user drags. Need a separate event so we can bind and unbind event listeners.\n */\n _onDrag() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * When the user zooms. Need a separate event so we can bind and unbind event listeners.\n */\n _onZoom() {\n // only react to drags once we have a location\n if (this._event && !this._ignoreEvent) {\n this._userZoomed = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n },\n\n /**\n * After a zoom ends update the compass and handle sideways zooms\n */\n _onZoomEnd() {\n if (this._event) {\n this._drawCompass();\n }\n\n if (this._event && !this._ignoreEvent) {\n // If we have zoomed in and out and ended up sideways treat it as a pan\n if (this._marker && !this._map.getBounds().pad(-0.3).contains(this._marker.getLatLng())) {\n this._userPanned = true;\n this._updateContainerStyle();\n this._drawMarker();\n }\n }\n },\n\n /**\n * Compute whether the map is following the user location with pan and zoom.\n */\n _isFollowing() {\n if (!this._active) {\n return false;\n }\n\n if (this.options.setView === \"always\") {\n return true;\n } else if (this.options.setView === \"untilPan\") {\n return !this._userPanned;\n } else if (this.options.setView === \"untilPanOrZoom\") {\n return !this._userPanned && !this._userZoomed;\n }\n },\n\n /**\n * Check if location is in map bounds\n */\n _isOutsideMapBounds() {\n if (this._event === undefined) {\n return false;\n }\n return this._map.options.maxBounds && !this._map.options.maxBounds.contains(this._event.latlng);\n },\n\n /**\n * Toggles button class between following and active.\n */\n _updateContainerStyle() {\n if (!this._container) {\n return;\n }\n\n if (this._active && !this._event) {\n // active but don't have a location yet\n this._setClasses(\"requesting\");\n } else if (this._isFollowing()) {\n this._setClasses(\"following\");\n } else if (this._active) {\n this._setClasses(\"active\");\n } else {\n this._cleanClasses();\n }\n },\n\n /**\n * Sets the CSS classes for the state.\n */\n _setClasses(state) {\n if (state == \"requesting\") {\n removeClasses(this._container, \"active following\");\n addClasses(this._container, \"requesting\");\n\n removeClasses(this._icon, this.options.icon);\n addClasses(this._icon, this.options.iconLoading);\n } else if (state == \"active\") {\n removeClasses(this._container, \"requesting following\");\n addClasses(this._container, \"active\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n } else if (state == \"following\") {\n removeClasses(this._container, \"requesting\");\n addClasses(this._container, \"active following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n }\n },\n\n /**\n * Removes all classes from button.\n */\n _cleanClasses() {\n L.DomUtil.removeClass(this._container, \"requesting\");\n L.DomUtil.removeClass(this._container, \"active\");\n L.DomUtil.removeClass(this._container, \"following\");\n\n removeClasses(this._icon, this.options.iconLoading);\n addClasses(this._icon, this.options.icon);\n },\n\n /**\n * Reinitializes state variables.\n */\n _resetVariables() {\n // whether locate is active or not\n this._active = false;\n\n // true if the control was clicked for the first time\n // we need this so we can pan and zoom once we have the location\n this._justClicked = false;\n\n // true if the user has panned the map after clicking the control\n this._userPanned = false;\n\n // true if the user has zoomed the map after clicking the control\n this._userZoomed = false;\n }\n });\n\n L.control.locate = (options) => new L.Control.Locate(options);\n\n return LocateControl;\n}, window);\n","import * as React from 'react'\nimport * as L from 'leaflet'\nimport { useMap, useMapEvents } from 'react-leaflet'\nimport 'leaflet.locatecontrol'\n\nimport 'leaflet.locatecontrol/dist/L.Control.Locate.css'\nimport { useEffect, useRef, useState } from 'react'\n\n// Converts leaflet.locatecontrol to a React Component\nexport const LocateControl = () => {\n\n const map = useMap();\n\n // prevent react18 from calling useEffect twice\n const init = useRef(false)\n\n\n const [lc, setLc] = useState<any>(null);\n const [active, setActive] = useState<boolean>(false);\n const [loading, setLoading] = useState<boolean>(false);\n\n\n useEffect(() => {\n if (!init.current) {\n //@ts-ignore\n setLc(L.control.locate().addTo(map));\n init.current = true;\n }\n }, [])\n\n useMapEvents({\n locationfound: () => {\n setLoading(false);\n setActive(true);\n },\n })\n\n return (<>\n <div className=\"tw-card tw-w-14 tw-bg-base-100 tw-shadow-xl tw-items-center tw-justify-center hover:tw-bg-slate-300 hover:tw-cursor-pointer tw-transition-all tw-duration-300\">\n\n <div className=\"tw-card-body tw-card tw-p-2 tw-h-10 tw-w-10 \" onClick={() => {\n if (active) {\n lc.stop();\n setActive(false);\n }\n else {\n lc.start();\n setLoading(true);\n }\n\n }}>{loading ? <span className=\"tw-loading tw-loading-spinner tw-loading-md tw-mt-1\"></span> : \n <svg fill={`${active? \"#fc8702\" : \"currentColor\"}`} viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" className='tw-mt-1 tw-p-[1px]'>\n <path d=\"M30 14.75h-2.824c-0.608-5.219-4.707-9.318-9.874-9.921l-0.053-0.005v-2.824c0-0.69-0.56-1.25-1.25-1.25s-1.25 0.56-1.25 1.25v0 2.824c-5.219 0.608-9.318 4.707-9.921 9.874l-0.005 0.053h-2.824c-0.69 0-1.25 0.56-1.25 1.25s0.56 1.25 1.25 1.25v0h2.824c0.608 5.219 4.707 9.318 9.874 9.921l0.053 0.005v2.824c0 0.69 0.56 1.25 1.25 1.25s1.25-0.56 1.25-1.25v0-2.824c5.219-0.608 9.318-4.707 9.921-9.874l0.005-0.053h2.824c0.69 0 1.25-0.56 1.25-1.25s-0.56-1.25-1.25-1.25v0zM17.25 24.624v-2.624c0-0.69-0.56-1.25-1.25-1.25s-1.25 0.56-1.25 1.25v0 2.624c-3.821-0.57-6.803-3.553-7.368-7.326l-0.006-0.048h2.624c0.69 0 1.25-0.56 1.25-1.25s-0.56-1.25-1.25-1.25v0h-2.624c0.57-3.821 3.553-6.804 7.326-7.368l0.048-0.006v2.624c0 0.69 0.56 1.25 1.25 1.25s1.25-0.56 1.25-1.25v0-2.624c3.821 0.57 6.803 3.553 7.368 7.326l0.006 0.048h-2.624c-0.69 0-1.25 0.56-1.25 1.25s0.56 1.25 1.25 1.25v0h2.624c-0.571 3.821-3.553 6.803-7.326 7.368l-0.048 0.006z\"></path>\n </svg>}\n \n </div>\n </div></>)\n\n}\n\n\n","import * as L from 'leaflet';\n\nconst createSvg = (shape: string, markerColor: string, borderColor: string) => {\n const svgMap = {\n circle: '<svg width=\"32\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.5 2.746c-8.284 0-15 6.853-15 15.307 0 .963.098 1.902.265 2.816a15.413 15.413 0 002.262 5.684l.134.193 12.295 17.785 12.439-17.863.056-.08a15.422 15.422 0 002.343-6.112c.123-.791.206-1.597.206-2.423 0-8.454-6.716-15.307-15-15.307\" fill=\"' + markerColor + '\" /><path d=\"M17.488 2.748c-8.284 0-15 6.853-15 15.307 0 .963.098 1.902.265 2.816a15.413 15.413 0 002.262 5.684l.134.193 12.295 17.785 12.44-17.863.055-.08a15.422 15.422 0 002.343-6.112c.124-.791.206-1.597.206-2.423 0-8.454-6.716-15.307-15-15.307m0 1.071c7.68 0 13.929 6.386 13.929 14.236 0 .685-.064 1.423-.193 2.258-.325 2.075-1.059 3.99-2.164 5.667l-.055.078-11.557 16.595L6.032 26.14l-.12-.174a14.256 14.256 0 01-2.105-5.29 14.698 14.698 0 01-.247-2.62c0-7.851 6.249-14.237 13.928-14.237\" fill=\"' + borderColor + '\" opacity=\"1\" /></svg>',\n square: '<svg width=\"33\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M28.205 3.217H6.777c-2.367 0-4.286 1.87-4.286 4.179v19.847c0 2.308 1.919 4.179 4.286 4.179h5.357l5.337 13.58 5.377-13.58h5.357c2.366 0 4.285-1.87 4.285-4.179V7.396c0-2.308-1.919-4.179-4.285-4.179\" fill=\"' + markerColor + '\" /><g opacity=\"1\" transform=\"matrix(1.0714 0 0 -1.0714 -233.22 146.783)\"><path d=\"M244 134h-20c-2.209 0-4-1.746-4-3.9v-18.525c0-2.154 1.791-3.9 4-3.9h5L233.982 95 239 107.675h5c2.209 0 4 1.746 4 3.9V130.1c0 2.154-1.791 3.9-4 3.9m0-1c1.654 0 3-1.301 3-2.9v-18.525c0-1.599-1.346-2.9-3-2.9h-5.68l-.25-.632-4.084-10.318-4.055 10.316-.249.634H224c-1.654 0-3 1.301-3 2.9V130.1c0 1.599 1.346 2.9 3 2.9h20\" fill=\"' + borderColor + '\" /></g></svg>',\n star: '<svg width=\"34\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M32.92 16.93l-3.525-3.525V8.419a1.983 1.983 0 00-1.983-1.982h-4.985L18.9 2.91a1.984 1.984 0 00-2.803 0l-3.524 3.526H7.588a1.983 1.983 0 00-1.982 1.982v4.986L2.081 16.93a1.982 1.982 0 000 2.803l3.525 3.526v4.984c0 1.096.888 1.983 1.982 1.983h4.986L17.457 45l4.97-14.773h4.985a1.983 1.983 0 001.983-1.983V23.26l3.525-3.526a1.982 1.982 0 000-2.803\" fill=\"' + markerColor + '\" /><g opacity=\".15\" transform=\"matrix(1.0667 0 0 -1.0667 -347.3 97.26)\"><path d=\"M342 89c-.476 0-.951-.181-1.314-.544l-3.305-3.305h-4.673a1.858 1.858 0 01-1.859-1.858v-4.674l-3.305-3.305a1.857 1.857 0 010-2.627l3.305-3.305v-4.674a1.86 1.86 0 011.859-1.859h4.673L341.959 49l4.659 13.849h4.674a1.86 1.86 0 011.859 1.859v4.674l3.305 3.305a1.858 1.858 0 010 2.627l-3.305 3.305v4.674a1.859 1.859 0 01-1.859 1.858h-4.674l-3.304 3.305A1.851 1.851 0 01342 89m0-1a.853.853 0 00.607-.251l3.304-3.305.293-.293h5.088a.86.86 0 00.859-.858v-5.088l3.598-3.598A.852.852 0 00356 74a.85.85 0 00-.251-.606l-3.598-3.598v-5.088a.86.86 0 00-.859-.859h-5.393l-.229-.681-3.702-11.006-3.637 11.001-.227.686h-5.396a.86.86 0 00-.859.859v5.088l-3.598 3.598c-.162.162-.251.377-.251.606s.089.445.251.607l3.598 3.598v5.088a.86.86 0 00.859.858h5.087l3.598 3.598A.853.853 0 00342 88\" fill=\"#231f20\" /></g></svg>',\n penta: '<svg width=\"33\" height=\"44\" viewBox=\"0 0 35 45\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M1.872 17.35L9.679 2.993h15.615L33.1 17.35 17.486 44.992z\" fill=\"' + markerColor + '\" /><g opacity=\".15\" transform=\"matrix(1.0769 0 0 -1.0769 -272.731 48.23)\"><path d=\"M276.75 42h-14.5L255 28.668 269.5 3 284 28.668zm-.595-1l6.701-12.323L269.5 5.033l-13.356 23.644L262.845 41z\" fill=\"#231f20\" /></g></svg>'\n };\n return svgMap[shape];\n}\n\nconst addIcon = (icon: string) => {\n switch (icon) {\n case \"circle-solid\":\n return '<svg fill=\"#fff\" class=\"circle-icon\" width=\"13\"xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\"M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z\"/></svg>';\n break;\n case \"calendar-days-solid\":\n return '<svg fill=\"#fff\" class=\"calendar-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d=\"M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z\"/></svg>';\n break;\n case \"user\":\n return '<svg fill=\"#fff\" class=\"user-icon\" xmlns=\"http://www.w3.org/2000/svg\" height=\"1.5em\" viewBox=\"0 0 448 512\"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d=\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"/></svg>'\n case \"fire\":\n return '<svg fill=\"#fff\" class=\"fire-icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 19.534 26.387\"><path d=\"M7.15 26.05C2.894 24.876.006 21.028.006 16.53c0-4.036 2.718-8.378 4.38-6.999.289.24.383.993.383 3.074 0 3.3.46 4.508 1.997 5.237 2.512 1.192 5.206-1.18 4.506-3.969-.097-.386-.99-1.562-1.986-2.614C7.04 8.887 6.583 8.026 6.583 6.176c0-2.333 2.02-6.182 3.244-6.182.59 0 1.292.98 1.292 1.805 0 1.227.951 2.596 3.727 5.362 3.655 3.642 4.493 5.216 4.671 8.776.143 2.847-.365 4.593-1.93 6.644-2.332 3.054-6.69 4.503-10.437 3.47z\"/></svg>'\n case \"tree\":\n return '<svg fill=\"#fff\" class=\"tree-icon\" xmlns=\"http://www.w3.org/2000/svg\" height=\"2em\" xml:space=\"preserve\" viewBox=\"0 0 24 24\"><path d=\"M11 21v-4.3c-.5.2-1 .3-1.5.3C7 17 5 15 5 12.5c0-1.3.5-2.4 1.4-3.2-.3-.6-.4-1.2-.4-1.8C6 5 8 3 10.5 3c1.6 0 2.9.8 3.8 2h.2c3 0 5.5 2.5 5.5 5.5S17.5 16 14.5 16c-.5 0-1-.1-1.5-.2V21h-2z\"/><path fill=\"none\" d=\"M0 0h24v24H0z\"/></svg>'\n case \"music\":\n return '<svg fill=\"#fff\" class=\"music-icon\" xmlns=\"http://www.w3.org/2000/svg\"height=\"1.4em\" viewBox=\"0 0 512 512\"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d=\"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"/></svg>'\n case \"drum\":\n return '<svg class=\"drum-icon\" stroke=\"#fff\" fill=\"#fff\" stroke-width=\"0\" viewBox=\"0 0 32 32\" height=\"1.8em\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 27.1875 5.09375 L 16.125 10.34375 C 15.804688 10.128906 15.414063 10 15 10 C 13.894531 10 13 10.894531 13 12 C 13 13.105469 13.894531 14 15 14 C 16.050781 14 16.921875 13.1875 17 12.15625 L 23.0625 9.28125 C 24.878906 10.046875 26 11.046875 26 12 C 26 13.886719 21.722656 16 16 16 C 10.277344 16 6 13.886719 6 12 C 6 10.113281 10.277344 8 16 8 C 16.171875 8 16.328125 7.996094 16.5 8 L 20.03125 6.34375 C 18.777344 6.132813 17.433594 6 16 6 C 9.160156 6 4 8.578125 4 12 L 4 22 C 4 22.988281 4.445313 23.894531 5.125 24.625 C 5.804688 25.355469 6.730469 25.945313 7.8125 26.4375 C 9.976563 27.421875 12.839844 28 16 28 C 19.160156 28 22.023438 27.421875 24.1875 26.4375 C 25.269531 25.945313 26.195313 25.355469 26.875 24.625 C 27.554688 23.894531 28 22.988281 28 22 L 28 12 C 28 10.523438 27.023438 9.210938 25.375 8.1875 L 28.03125 6.90625 Z M 6 15.40625 C 7.015625 16.171875 8.378906 16.800781 10 17.25 L 10 25.15625 C 9.5 25 9.042969 24.816406 8.625 24.625 C 7.71875 24.210938 7.027344 23.714844 6.59375 23.25 C 6.160156 22.785156 6 22.394531 6 22 Z M 26 15.40625 L 26 22 C 26 22.394531 25.839844 22.785156 25.40625 23.25 C 24.972656 23.714844 24.28125 24.210938 23.375 24.625 C 22.957031 24.816406 22.5 25 22 25.15625 L 22 17.25 C 23.621094 16.800781 24.984375 16.171875 26 15.40625 Z M 12 17.6875 C 13.242188 17.894531 14.582031 18 16 18 C 17.417969 18 18.757813 17.894531 20 17.6875 L 20 25.625 C 18.769531 25.855469 17.421875 26 16 26 C 14.578125 26 13.230469 25.855469 12 25.625 Z\"></path></svg>'\n default:\n return \"\";\n }\n}\n\nconst MarkerIconFactory = (shape: string, color1: string, color2: string, icon: string) => {\n return L.divIcon({\n html: `${createSvg(shape, color1, color2)}${addIcon(icon)}`,\n iconAnchor: [17, 40],\n popupAnchor: [0, -40],\n iconSize: new L.Point(40, 46),\n className: \"leaflet-data-marker\",\n shadowAnchor: [0, 0]\n });\n}\n\nexport default MarkerIconFactory;\n","export function decodeTag(string : string) { \n let formatedTag = string.replace(/_/g, \"\\u00A0\"); \n return formatedTag = formatedTag.charAt(0).toUpperCase() + formatedTag.slice(1);\n}\n\nexport function encodeTag(string : string) { \n return string.replace(/\\s+/g, \"_\"); \n}","import * as React from 'react'\nimport { useAddFilterTag, useFilterTags, useResetFilterTags, useSetSearchPhrase } from '../../hooks/useFilter'\nimport useWindowDimensions from '../../hooks/useWindowDimension';\nimport axios from 'axios';\nimport { useRef, useState } from 'react';\nimport { useMap, useMapEvents } from 'react-leaflet';\nimport { LatLng, LatLngBounds } from 'leaflet';\nimport { useDebounce } from '../../hooks/useDebounce';\nimport { useTags } from '../../hooks/useTags';\nimport { useItems } from '../../hooks/useItems';\nimport { useLeafletRefs } from '../../hooks/useLeafletRefs';\nimport { getValue } from '../../../../Utils/GetValue';\nimport { LocateControl } from './LocateControl';\nimport * as L from 'leaflet';\nimport MarkerIconFactory from '../../../../Utils/MarkerIconFactory';\nimport { decodeTag } from '../../../../Utils/FormatTags';\n\n\n\nexport const SearchControl = ({ clusterRef }) => {\n\n const windowDimensions = useWindowDimensions();\n const [popupOpen, setPopupOpen] = useState(false);\n\n const [value, setValue] = useState('');\n const [geoResults, setGeoResults] = useState<Array<any>>([]);\n const [tagsResults, setTagsResults] = useState<Array<any>>([]);\n const [itemsResults, setItemsResults] = useState<Array<any>>([]);\n const [hideSuggestions, setHideSuggestions] = useState(true);\n\n const map = useMap();\n const tags = useTags();\n const items = useItems();\n const leafletRefs = useLeafletRefs();\n const addFilterTag = useAddFilterTag();\n const resetFilterTags = useResetFilterTags();\n const filterTags = useFilterTags();\n\n useMapEvents({\n popupopen: () => { \n setPopupOpen(true);\n },\n popupclose: () => {\n setPopupOpen(false);\n }\n })\n\n useDebounce(() => {\n const searchGeo = async () => {\n try {\n const { data } = await axios.get(\n `https://photon.komoot.io/api/?q=${value}&limit=5`\n );\n setGeoResults(data.features);\n } catch (error) {\n console.log(error);\n }\n };\n searchGeo();\n setItemsResults(items.filter(item => {\n if (item.layer?.itemNameField) item.name = getValue(item, item.layer.itemNameField)\n if (item.layer?.itemTextField) item.text = getValue(item, item.layer.itemTextField)\n return item.name?.toLowerCase().includes(value.toLowerCase()) || item.text?.toLowerCase().includes(value.toLowerCase())\n }))\n let phrase = value;\n if(value.startsWith(\"#\")) phrase = value.substring(1);\n setTagsResults(tags.filter(tag => tag.name?.toLowerCase().includes(phrase.toLowerCase())))\n\n }, 500, [value]);\n\n const hide = async () => {\n setTimeout(() => {\n setHideSuggestions(true);\n }, 200);\n }\n\n const searchInput = useRef<HTMLInputElement>(null);\n\n return (<>\n {!(windowDimensions.height < 500 && popupOpen && hideSuggestions) &&\n <div className='tw-w-[calc(100vw-2rem)] tw-max-w-[22rem] '>\n <div className='flex tw-flex-row'>\n <input type=\"text\" placeholder=\"search ...\" autoComplete=\"off\" value={value} className=\"tw-input tw-input-bordered tw-w-full tw-shadow-xl tw-rounded-lg tw-mr-2\"\n ref={searchInput}\n onChange={(e) => setValue(e.target.value)}\n onFocus={() => {\n setHideSuggestions(false);\n if(windowDimensions.width < 500) map.closePopup();\n }}\n onBlur={() => hide()} />\n <LocateControl />\n </div>\n {value.length > 0 && <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-absolute tw-right-16 tw-top-2\" onClick={() => setValue(\"\")}>βœ•</button>}\n {hideSuggestions || Array.from(geoResults).length == 0 && itemsResults.length == 0 && tagsResults.length == 0 && !isGeoCoordinate(value)|| value.length == 0? \"\" :\n <div className='tw-card tw-card-body tw-bg-base-100 tw-p-4 tw-mt-2 tw-shadow-xl tw-overflow-y-auto tw-max-h-[calc(100dvh-152px)]'>\n {tagsResults.length > 0 &&\n <div className='tw-flex tw-flex-wrap tw-max-h-16 tw-overflow-hidden tw-min-h-[32px]'>\n {tagsResults.map(tag => (\n <div key={tag.name} className='tw-rounded-2xl tw-text-white tw-p-1 tw-px-4 tw-shadow-md tw-card tw-mr-2 tw-mb-2 tw-cursor-pointer' style={{ backgroundColor: tag.color }} onClick={() => {\n addFilterTag(tag)\n let params = new URLSearchParams(window.location.search);\n window.history.pushState({}, \"\", \"/\" + `${params? `?${params}` : \"\"}`);\n }}>\n <b>#{decodeTag(tag.name)}</b>\n </div>\n ))}\n </div>\n }\n\n {itemsResults.length > 0 && tagsResults.length > 0 && <hr className='tw-opacity-50'></hr>}\n {itemsResults.slice(0, 5).map(item => (\n <div key={item.id} className='tw-cursor-pointer hover:tw-font-bold' onClick={() => {\n const marker = Object.entries(leafletRefs).find(r => r[1].item == item)?.[1].marker;\n\n if (filterTags.length > 0) {\n marker !== null && window.history.pushState({}, \"\", `/${item.layer.name}/${item.id}`)\n resetFilterTags();\n hide();\n }\n else {\n marker !== null && clusterRef?.current?.zoomToShowLayer(marker, () => {\n marker?.openPopup();\n hide();\n });\n }\n }\n }><div className='tw-flex tw-flex-row'>\n <item.layer.menuIcon className=\"tw-text-current tw-w-5 tw-mr-2 tw-mt-0\" />\n <div>\n <div className='tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{item.name}</div>\n <div className='tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{item.text}</div>\n </div>\n </div>\n </div>\n ))}\n {Array.from(geoResults).length > 0 && (itemsResults.length > 0 || tagsResults.length > 0) && <hr className='tw-opacity-50'></hr>}\n {Array.from(geoResults).map((geo) => (\n <div className='tw-flex tw-flex-row hover:tw-font-bold tw-cursor-pointer' key={Math.random()} onClick={() => {\n searchInput.current?.blur();\n L.marker(new LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]),{icon: MarkerIconFactory(\"circle\", \"#777\", \"RGBA(35, 31, 32, 0.2)\", \"circle-solid\")}).addTo(map).bindPopup(`<h3 class=\"tw-text-base tw-font-bold\">${geo?.properties.name ? geo?.properties.name : value}<h3>${capitalizeFirstLetter(geo?.properties?.osm_value)}`).openPopup().addEventListener(\"popupclose\", (e) => {console.log(e.target.remove())});\n if (geo.properties.extent) map.fitBounds(new LatLngBounds(new LatLng(geo.properties.extent[1], geo.properties.extent[0]), new LatLng(geo.properties.extent[3], geo.properties.extent[2])));\n else map.setView(new LatLng(geo.geometry.coordinates[1], geo.geometry.coordinates[0]), 15, { duration: 1 });\n hide();\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"1.5\" stroke=\"currentColor\" className=\"tw-text-current tw-mr-2 tw-mt-0 tw-w-4\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\" />\n </svg>\n\n <div>\n <div className='tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{geo?.properties.name ? geo?.properties.name : value}</div>\n <div className='tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{geo?.properties?.city && `${capitalizeFirstLetter(geo?.properties?.city)}, `} {geo?.properties?.osm_value && geo?.properties?.osm_value !== \"yes\" && geo?.properties?.osm_value !== \"primary\" && geo?.properties?.osm_value !== \"path\" && geo?.properties?.osm_value !== \"secondary\" && geo?.properties?.osm_value !== \"residential\" && geo?.properties?.osm_value !== \"unclassified\" && `${capitalizeFirstLetter(geo?.properties?.osm_value)}, `} {geo.properties.state && `${geo.properties.state}, `} {geo.properties.country && geo.properties.country}</div>\n </div>\n </div>\n\n ))}\n {isGeoCoordinate(value) &&\n <div className='tw-flex tw-flex-row hover:tw-font-bold tw-cursor-pointer' onClick={() => {\n L.marker(new LatLng(extractCoordinates(value)![0], extractCoordinates(value)![1]),{icon: MarkerIconFactory(\"circle\", \"#777\", \"RGBA(35, 31, 32, 0.2)\", \"circle-solid\")}).addTo(map).bindPopup(`<h3 class=\"tw-text-base tw-font-bold\">${extractCoordinates(value)![0]}, ${extractCoordinates(value)![1]}</h3>`).openPopup().addEventListener(\"popupclose\", (e) => {console.log(e.target.remove())});\n map.setView(new LatLng(extractCoordinates(value)![0], extractCoordinates(value)![1]), 15, { duration: 1 })\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"tw-text-current tw-mr-2 tw-mt-0 tw-w-4\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5\" />\n </svg>\n\n <div>\n <div className='tw-text-sm tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{value}</div>\n <div className='tw-text-xs tw-overflow-hidden tw-text-ellipsis tw-whitespace-nowrap tw-max-w-[17rem]'>{\"Coordiante\"}</div>\n </div>\n </div>\n }\n </div>}\n </div>\n }\n </>\n\n )\n}\n\nfunction isGeoCoordinate(input) { \n const geokoordinatenRegex = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\n return geokoordinatenRegex.test(input);\n}\n\nfunction extractCoordinates(input): number[] | null {\n const result = input.split(\",\")\n if (result) {\n const latitude = parseFloat(result[0]);\n const longitude = parseFloat(result[1]);\n if (!isNaN(latitude) && !isNaN(longitude)) {\n return [latitude, longitude];\n }\n }\n return null; // Invalid input or error\n}\n\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import * as React from 'react'\nimport * as L from 'leaflet'\nimport { useLayers } from '../../hooks/useLayers';\nimport { useAddVisibleLayer, useIsLayerVisible, useToggleVisibleLayer } from '../../hooks/useFilter';\nimport { useEffect } from 'react';\n\nexport function LayerControl() {\n\n const [open, setOpen] = React.useState(false);\n\n const layers = useLayers();\n\n useEffect(() => {\n layers.map(layer =>\n addVisibleLayer(layer)\n )\n }, [layers])\n\n const isLayerVisible = useIsLayerVisible();\n const toggleVisibleLayer = useToggleVisibleLayer();\n const addVisibleLayer = useAddVisibleLayer();\n\n return (\n <div className=\"tw-card tw-bg-base-100 tw-shadow-xl \">\n {\n open ?\n <div className=\"tw-card-body tw-p-2 tw-w-36 tw-transition-all tw-duration-300\">\n <label className=\"tw-btn tw-btn-sm tw-rounded-2xl tw-btn-circle tw-btn-ghost hover:tw-bg-transparent tw-absolute tw-right-0 tw-top-0 tw-text-gray-600\" onClick={() => {\n setOpen(false)\n }}>\n <p className='tw-text-center '>βœ•</p></label>\n <ul className='tw-flex-row'>\n {\n layers.map(layer =>\n <li key={layer.name}><label htmlFor={layer.name} className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-1\"><input id={layer.name} onChange={() => toggleVisibleLayer(layer)} type=\"checkbox\" className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={isLayerVisible(layer)} /><span className='tw-text-sm tw-label-text tw-mx-2 tw-cursor-pointer'>{layer.name}</span></label></li>\n )\n }\n </ul>\n </div>\n :\n <div className=\"tw-card-body hover:tw-bg-slate-300 tw-card tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer\" onClick={() => {\n setOpen(true)\n }}>\n <svg version=\"1.1\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path id=\"svg_1\" fill=\"currentColor\" d=\"m2.75565,11.90727l-1.03852,0.28372c-0.77718,0.38859 -0.77718,1.0138 0,1.4023l7.0156,3.5078c0.77718,0.38859 2.0275,0.38859 2.8047,0l7.0156,-3.5078c0.77718,-0.38859 0.77718,-1.0138 0,-1.4023l-0.63311,-0.48643l-4.67718,2.23624c-1.5452,0.77262 -3.31877,1.58343 -4.86407,0.81081l-5.62302,-2.84434z\" />\n <path id=\"svg_2\" strokeWidth=\"2\" stroke=\"currentColor\" fill=\"none\" d=\"m11.247,4.30851l6.2349,3.0877c0.69083,0.34211 0.69083,0.89295 0,1.2351l-6.2349,3.0877c-0.69083,0.34211 -1.8031,0.34212 -2.494,0l-6.2349,-3.0877c-0.69083,-0.34211 -0.69083,-0.89295 0,-1.2351l6.2349,-3.0877c0.69083,-0.34211 1.8031,-0.34211 2.494,0z\" />\n </svg>\n </div>\n\n }\n\n </div>\n )\n}\n","import { useCallback, useState } from 'react';\n\n\nimport { createContext, useContext } from \"react\";\nimport * as React from \"react\";\n\n\n\ntype UseQuestManagerResult = ReturnType<typeof useQuestsManager>;\n\nconst QuestContext = createContext<UseQuestManagerResult>({\n open: false,\n setQuestsOpen: () => { }\n});\n\nfunction useQuestsManager(initialOpen: boolean): {\n open: boolean;\n setQuestsOpen: (open: boolean) => void;\n} {\n const [open, setOpen] = useState<boolean>(initialOpen);\n\n const setQuestsOpen = useCallback((questOpen: boolean) => {\n setOpen(questOpen); \n }, []);\n\n return { open, setQuestsOpen };\n}\n\nexport const QuestsProvider: React.FunctionComponent<{\n initialOpen: boolean, children?: React.ReactNode\n}> = ({ initialOpen, children }) => (\n <QuestContext.Provider value={useQuestsManager(initialOpen)}>\n {children}\n </QuestContext.Provider>\n);\n\nexport const useQuestsOpen = (): boolean => {\n const { open } = useContext(QuestContext);\n return open;\n};\n\n\nexport const useSetQuestOpen = (): UseQuestManagerResult[\"setQuestsOpen\"] => {\n const { setQuestsOpen } = useContext(QuestContext);\n return setQuestsOpen;\n}\n","import * as React from 'react'\nimport { useQuestsOpen, useSetQuestOpen } from '../../../Gaming/hooks/useQuests';\n\n\nexport function QuestControl() {\n\n const questsOpen = useQuestsOpen();\n const setQuestsOpen = useSetQuestOpen();\n\n return (\n <>\n {questsOpen ? \"\" :\n <div className=\"tw-card tw-bg-base-100 tw-shadow-xl tw-my-2 tw-w-10\" onClick={e => e.stopPropagation()}>\n \n <div className=\"tw-card-body hover:tw-bg-slate-300 tw-rounded-2xl tw-p-2 tw-h-10 tw-w-10 tw-transition-all tw-duration-300 hover:tw-cursor-pointer\" onClick={() => setQuestsOpen(true)}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" stroke=\"currentColor\" viewBox=\"0 0 448 512\"><path d=\"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"/></svg>\n </div>\n\n </div>\n }\n </>\n )\n}\n","import * as L from 'leaflet'\nimport * as React from 'react'\n\n\n\nexport const Control = ({ position, children, zIndex }: { position: \"topLeft\" | \"topRight\" | \"bottomLeft\" | \"bottomRight\", children: React.ReactNode, zIndex: string }) => {\n\n\n const controlContainerRef = React.createRef<HTMLDivElement>()\n\n\n React.useEffect(() => {\n if (controlContainerRef.current !== null) {\n L.DomEvent.disableClickPropagation(controlContainerRef.current)\n L.DomEvent.disableScrollPropagation(controlContainerRef.current)\n }\n }, [controlContainerRef])\n\n return (\n <div ref={controlContainerRef} style={{zIndex: zIndex}} className={`tw-absolute tw-z-[999] tw-flex-col ${position === 'topLeft' && \"tw-top-4 tw-left-4\"} ${position === 'bottomLeft' && \"tw-bottom-4 tw-left-4\"} ${position === 'topRight' && \"tw-bottom-4 tw-right-4\"} ${position === 'bottomRight' && \"tw-bottom-4 tw-right-4\"}`}>\n\n {children}\n </div>\n )\n}\n","import * as React from 'react'\nimport { useFilterTags, useRemoveFilterTag } from '../../hooks/useFilter';\nimport { decodeTag } from '../../../../Utils/FormatTags';\n\nexport const TagsControl = () => {\n\n const filterTags = useFilterTags();\n const removeFilterTag = useRemoveFilterTag();\n\n return (\n <div className='tw-flex tw-flex-wrap tw-mt-4 tw-w-[calc(100vw-2rem)] tw-max-w-xs'>\n {\n filterTags.map(tag =>\n <div key={tag.id} className='tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-mr-2 tw-mb-2' style={{ backgroundColor: tag.color }}>\n <div className=\"tw-card-actions tw-justify-end\">\n <label className=\"tw-btn tw-btn-xs tw-btn-circle tw-absolute tw--right-2 tw--top-2 tw-bg-white tw-text-gray-600\" onClick={() => (removeFilterTag(tag.name!))}>βœ•</label>\n </div><b>#{decodeTag(tag.name)}</b>\n </div>\n )\n }\n</div>)\n}\n\n\n","import { TileLayer, MapContainer, useMapEvents } from \"react-leaflet\";\nimport \"leaflet/dist/leaflet.css\";\nimport * as React from \"react\";\nimport { LayerProps, UtopiaMapProps } from \"../../types\"\nimport \"./UtopiaMap.css\"\nimport { LatLng } from \"leaflet\";\nimport MarkerClusterGroup from 'react-leaflet-cluster'\nimport AddButton from \"./Subcomponents/AddButton\";\nimport { useEffect, useState } from \"react\";\nimport { ItemFormPopupProps } from \"./Subcomponents/ItemFormPopup\";\nimport { ItemsProvider } from \"./hooks/useItems\";\nimport { TagsProvider } from \"./hooks/useTags\";\nimport { LayersProvider } from \"./hooks/useLayers\";\nimport { FilterProvider } from \"./hooks/useFilter\";\nimport { SearchControl } from \"./Subcomponents/Controls/SearchControl\";\nimport { PermissionsProvider } from \"./hooks/usePermissions\";\nimport { LeafletRefsProvider } from \"./hooks/useLeafletRefs\";\nimport { LayerControl } from \"./Subcomponents/Controls/LayerControl\";\nimport { QuestControl } from \"./Subcomponents/Controls/QuestControl\";\nimport { Control } from \"./Subcomponents/Controls/Control\";\nimport { Outlet, useLocation } from \"react-router-dom\";\nimport { TagsControl } from \"./Subcomponents/Controls/TagsControl\";\n\n\nexport interface MapEventListenerProps {\n selectNewItemPosition: LayerProps | null,\n setSelectNewItemPosition: React.Dispatch<any>,\n setItemFormPopup: React.Dispatch<React.SetStateAction<any>>\n}\n\n\n// for refreshing map on resize (needs to be implemented)\nconst mapDivRef = React.createRef();\n\nfunction UtopiaMap({\n height = \"500px\",\n width = \"100%\",\n center = [50.6, 9.5],\n zoom = 10,\n children }\n : UtopiaMapProps) {\n\n function MapEventListener(props: MapEventListenerProps) {\n useMapEvents({\n click: (e) => {\n let params = new URLSearchParams(window.location.search);\n window.history.pushState({}, \"\", `/`+ `${params.toString() !== \"\" ? `?${params}` : \"\"}`)\n document.title = document.title.split(\"-\")[0];\n document.querySelector('meta[property=\"og:title\"]')?.setAttribute(\"content\", document.title);\n document.querySelector('meta[property=\"og:description\"]')?.setAttribute(\"content\", `${document.querySelector('meta[name=\"description\"]')?.getAttribute(\"content\")}`);\n\n console.log(e.latlng.lat + ',' + e.latlng.lng);\n if (props.selectNewItemPosition != null) {\n props.setItemFormPopup({ layer: props.selectNewItemPosition, position: e.latlng })\n props.setSelectNewItemPosition(null)\n }\n },\n moveend: (e) => {\n console.log(e);\n }\n \n \n })\n return null\n }\n\n const [selectNewItemPosition, setSelectNewItemPosition] = useState<LayerProps | null>(null);\n const [itemFormPopup, setItemFormPopup] = useState<ItemFormPopupProps | null>(null);\n\n const clusterRef = React.useRef();\n\n const location = useLocation();\n\n useEffect(() => {\n let params = new URLSearchParams(location.search);\n let urlPosition = params.get(\"position\");\n\n\n }, [location]);\n\n\n return (\n <>\n \n <LayersProvider initialLayers={[]}>\n <TagsProvider initialTags={[]}>\n <PermissionsProvider initialPermissions={[]}>\n <FilterProvider initialTags={[]}>\n <ItemsProvider initialItems={[]}>\n <LeafletRefsProvider initialLeafletRefs={{}}>\n <div className={(selectNewItemPosition != null ? \"crosshair-cursor-enabled\" : undefined)}>\n <MapContainer ref={mapDivRef} style={{ height: height, width: width }} center={new LatLng(center[0], center[1])} zoom={zoom} zoomControl={false}>\n <Outlet></Outlet>\n <Control position='topLeft' zIndex=\"1000\">\n <SearchControl clusterRef={clusterRef} />\n <TagsControl />\n </Control>\n <Control position='bottomLeft' zIndex=\"999\">\n <QuestControl></QuestControl>\n <LayerControl></LayerControl>\n </Control>\n <TileLayer\n attribution='&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n url=\"https://tile.osmand.net/hd/{z}/{x}/{y}.png\" />\n <MarkerClusterGroup ref={clusterRef} showCoverageOnHover chunkedLoading maxClusterRadius={50} removeOutsideVisibleBounds={false}>\n {\n React.Children.toArray(children).map((child) =>\n React.isValidElement<{ setItemFormPopup: React.Dispatch<React.SetStateAction<ItemFormPopupProps>>, itemFormPopup: ItemFormPopupProps | null, clusterRef: React.MutableRefObject<undefined> }>(child) ?\n React.cloneElement(child, { setItemFormPopup: setItemFormPopup, itemFormPopup: itemFormPopup, clusterRef: clusterRef }) : child\n )\n }\n </MarkerClusterGroup>\n <MapEventListener setSelectNewItemPosition={setSelectNewItemPosition} selectNewItemPosition={selectNewItemPosition} setItemFormPopup={setItemFormPopup} />\n </MapContainer>\n <AddButton setSelectNewItemPosition={setSelectNewItemPosition}></AddButton>\n {selectNewItemPosition != null &&\n <div className=\"tw-button tw-z-1000 tw-absolute tw-right-5 tw-top-4 tw-drop-shadow-md\">\n <div className=\"tw-alert tw-bg-base-100 tw-text-base-content\">\n <div>\n <span>Select {selectNewItemPosition.name} position!</span>\n </div>\n </div>\n </div>\n }\n </div>\n </LeafletRefsProvider>\n </ItemsProvider>\n </FilterProvider>\n </PermissionsProvider>\n </TagsProvider>\n </LayersProvider>\n </>\n );\n}\n\nexport { UtopiaMap };","import { useCallback, useState } from 'react';\n\n\nimport { createContext, useContext } from \"react\";\nimport * as React from \"react\";\nimport { AssetsApi } from '../../../types';\n\n\n\ntype UseAssetManagerResult = ReturnType<typeof useAssetsManager>;\n\nconst AssetContext = createContext<UseAssetManagerResult>({\n api: {} as AssetsApi,\n setAssetsApi: () => { }\n});\n\nfunction useAssetsManager(): {\n api: AssetsApi;\n setAssetsApi: (api: AssetsApi) => void;\n} {\n const [api, setApi] = useState<AssetsApi>({} as AssetsApi);\n\n const setAssetsApi = useCallback((api: AssetsApi) => {\n setApi(api);\n }, []);\n\n return { api, setAssetsApi };\n}\n\nexport const AssetsProvider: React.FunctionComponent<{\n children?: React.ReactNode\n}> = ({ children }) => (\n <AssetContext.Provider value={useAssetsManager()}>\n {children}\n </AssetContext.Provider>\n);\n\nexport const useAssetApi = (): AssetsApi => {\n const { api } = useContext(AssetContext);\n return api;\n};\n\n\nexport const useSetAssetApi = (): UseAssetManagerResult[\"setAssetsApi\"] => {\n const { setAssetsApi } = useContext(AssetContext);\n return setAssetsApi;\n}\n","import * as React from \"react\";\nimport { MouseEvent, useEffect, useRef } from \"react\";\n\n\nconst isClickInsideRectangle = (e: MouseEvent, element: HTMLElement) => {\n const r = element.getBoundingClientRect();\n\n return (\n e.clientX > r.left &&\n e.clientX < r.right &&\n e.clientY > r.top &&\n e.clientY < r.bottom\n );\n};\n\ntype Props = {\n title: string;\n isOpened: boolean;\n onClose: () => void;\n children: React.ReactNode;\n showCloseButton?: boolean\n};\n\nconst DialogModal = ({\n title,\n isOpened,\n onClose,\n children,\n showCloseButton = true\n}: Props) => {\n \n const ref = useRef<HTMLDialogElement>(null);\n\n useEffect(() => {\n if (isOpened) {\n ref.current?.showModal();\n ref.current?.classList.remove(\"tw-hidden\"); \n document.body.classList.add(\"modal-open\"); // prevent bg scroll\n } else {\n ref.current?.close();\n ref.current?.classList.add(\"tw-hidden\"); \n document.body.classList.remove(\"modal-open\");\n }\n }, [isOpened]);\n\n\n return (\n <dialog className='tw-card tw-shadow-xl tw-absolute tw-right-0 tw-top-0 tw-bottom-0 tw-left-0 tw-m-auto tw-transition-opacity tw-duration-300 tw-p-4 tw-max-w-xl tw-bg-base-100'\n \n ref={ref}\n onCancel={onClose}\n onClick={(e) =>\n ref.current && !isClickInsideRectangle(e, ref.current) && onClose()\n }\n >\n <div className=\"tw-card-body tw-p-2\">\n\n <h2 className='tw-text-2xl tw-font-semibold tw-mb-2 tw-text-center'>{title}</h2>\n\n {children}\n {showCloseButton && <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2\" onClick={onClose}>βœ•</button>}\n\n </div>\n </dialog>\n );\n};\n\nexport default DialogModal;\n","import * as React from \"react\"\nimport { useRemoveItem } from \"../../hooks/useItems\";\nimport { useMap } from \"react-leaflet\";\nimport { ItemFormPopupProps } from \"../ItemFormPopup\";\nimport { LatLng } from \"leaflet\";\nimport { Item } from \"../../../../types\";\nimport { toast } from \"react-toastify\";\nimport { useHasUserPermission } from \"../../hooks/usePermissions\";\nimport { useAuth } from \"../../../Auth\";\nimport { getValue } from \"../../../../Utils/GetValue\";\nimport { useAssetApi } from '../../../AppShell/hooks/useAssets'\nimport DialogModal from \"../../../Templates/DialogModal\";\nimport { useNavigate } from \"react-router-dom\";\n\n\n\n\nexport function HeaderView({ item, setItemFormPopup }: {\n item: Item,\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>\n}) {\n\n\n const [modalOpen, setModalOpen] = React.useState<boolean>(false);\n\n const [loading, setLoading] = React.useState<boolean>(false);\n const removeItem = useRemoveItem();\n\n const map = useMap();\n const hasUserPermission = useHasUserPermission();\n\n const { user } = useAuth();\n\n const assetsApi = useAssetApi();\n const navigate = useNavigate();\n\n const avatar = item.layer?.itemAvatarField && item && getValue(item, item.layer?.itemAvatarField)? assetsApi.url + getValue(item, item.layer?.itemAvatarField ) : undefined;\n const title = item.layer?.itemNameField && item ? getValue(item, item.layer?.itemNameField) : undefined;\n const owner = item.layer?.itemOwnerField && item ? getValue(item, item.layer?.itemOwnerField) : undefined;\n\n\n\n const removeItemFromMap = async (event: React.MouseEvent<HTMLElement>) => {\n setLoading(true);\n let success = false;\n try {\n await item.layer?.api?.deleteItem!(item.id)\n success = true;\n } catch (error) {\n toast.error(error.toString());\n }\n if (success) {\n removeItem(item);\n toast.success(\"Item deleted\");\n }\n setLoading(false);\n map.closePopup();\n let params = new URLSearchParams(window.location.search);\n window.history.pushState({}, \"\", \"/\" + `${params? `?${params}` : \"\"}`);\n event.stopPropagation();\n }\n\n const openDeleteModal = async (event: React.MouseEvent<HTMLElement>) => {\n setModalOpen(true);\n event.stopPropagation();\n }\n\n const openEditPopup = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n map.closePopup();\n if (setItemFormPopup)\n setItemFormPopup({ position: new LatLng(item.position.coordinates[1], item.position.coordinates[0]), layer: item.layer!, item: item, setItemFormPopup: setItemFormPopup })\n }\n\n\n return (\n <>\n <div className='tw-grid tw-grid-cols-6 tw-pb-2'>\n <div className='tw-col-span-5'>\n <div className=\"tw-flex tw-flex-row\">{\n avatar ?\n <div className=\"tw-w-10 tw-rounded-full\">\n <img className=\"tw-rounded-full\" src={`${avatar}?width=80&height=80`} />\n </div>\n :\n \"\"\n }\n <b className={`tw-text-xl tw-font-bold ${avatar ? \"tw-ml-2 tw-mt-1\" : \"\"}`}>{title ? title : item.name}</b>\n\n </div>\n </div>\n <div className='tw-col-span-1'>\n {(item.layer?.api?.deleteItem || item.layer?.api?.updateItem)\n && ((user && owner?.id === user.id) || owner == undefined)\n && (hasUserPermission(item.layer.api?.collectionName!, \"delete\") || hasUserPermission(item.layer.api?.collectionName!, \"update\")) &&\n <div className=\"tw-dropdown tw-dropdown-bottom\">\n <label tabIndex={0} className=\"tw-bg-base-100 tw-btn tw-m-1 tw-leading-3 tw-border-none tw-min-h-0 tw-h-6\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n </label>\n <ul tabIndex={0} className=\"tw-dropdown-content tw-menu tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-z-1000\">\n {((item.layer.api.updateItem && hasUserPermission(item.layer.api?.collectionName!, \"update\")) || item.layer.customEditLink) && <li>\n <a className=\"!tw-text-base-content tw-cursor-pointer\" onClick={(e) => {\n item.layer?.customEditLink && navigate(item.layer.customEditLink);\n !item.layer?.customEditLink && openEditPopup(e);\n }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z\" />\n </svg>\n </a>\n </li>}\n\n {item.layer.api.deleteItem && hasUserPermission(item.layer.api?.collectionName!, \"delete\") && <li>\n <a className='tw-cursor-pointer !tw-text-error' onClick={openDeleteModal}>\n {loading ? <span className=\"tw-loading tw-loading-spinner tw-loading-sm\"></span>\n :\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z\" clipRule=\"evenodd\" />\n </svg>}\n </a>\n </li>}\n </ul>\n </div>}\n </div>\n </div>\n <DialogModal isOpened={modalOpen} title=\"Are you sure?\" showCloseButton={false} onClose={ () => (setModalOpen(false)) }>\n <span>Do you want to delte <b>{item.name}</b>?</span>\n <div className=\"tw-grid\">\n <div className=\"tw-flex tw-justify-between\">\n <label className=\"tw-btn tw-mt-4 tw-btn-error\" onClick={removeItemFromMap}>Yes</label>\n <label className=\"tw-btn tw-mt-4\" onClick={() => setModalOpen(false)}>No</label>\n </div>\n </div>\n </DialogModal>\n </>\n )\n}\n","export const urlRegex = /(^| )(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,10}(:[0-9]{1,10})?(\\/.*)?$/gm\nexport const mailRegex = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\\.[a-zA-Z0-9_-]+)/gi;\n\n\nexport function fixUrls(message: string): string {\n \n message = message.replace(urlRegex, function (url) {\n let hyperlink = url.replace(' ', '');\n if (!hyperlink.match('^https?:\\/\\/')) {\n hyperlink = 'https://' + hyperlink;\n } \n return hyperlink\n });\n \n \n return message;\n }","import * as React from 'react'\nimport { Item } from '../../../../types'\nimport { useTags } from '../../hooks/useTags';\nimport { useAddFilterTag } from '../../hooks/useFilter';\nimport { hashTagRegex } from '../../../../Utils/HashTagRegex';\nimport { fixUrls, mailRegex } from '../../../../Utils/ReplaceURLs';\nimport Markdown from 'react-markdown'\nimport { getValue } from '../../../../Utils/GetValue';\nimport remarkBreaks from 'remark-breaks'\nimport { decodeTag } from '../../../../Utils/FormatTags';\n\nexport const TextView = ({ item, truncate = false, itemTextField}: { item?: Item, truncate?: boolean,itemTextField?: string }) => {\n const tags = useTags();\n const addFilterTag = useAddFilterTag();\n\n console.log(item);\n \n\n let text = \"\";\n\n if(itemTextField && item) text = getValue(item, itemTextField);\n else text = item?.layer?.itemTextField && item ? getValue(item, item.layer?.itemTextField) : \"\"\n\n if(item && text && truncate) text = truncateString(text, 100, true);\n\n let replacedText;\n\n item && text ? replacedText = fixUrls(text) : \"\";\n\n replacedText ? replacedText = replacedText.replace(/(?<!\\]?\\()https?:\\/\\/[^\\s\\)]+(?!\\))/g, (url) => {\n let shortUrl = url;\n if (url.match('^https:\\/\\/')) {\n shortUrl = url.split('https://')[1];\n }\n if (url.match('^http:\\/\\/')) {\n shortUrl = url.split('http://')[1];\n }\n return `[${shortUrl}](${url})`\n }) : \"\" ;\n\n replacedText ? replacedText = replacedText.replace(mailRegex, (url) => {\n return `[${url}](mailto:${url})`\n }) : \"\";\n\n replacedText ? replacedText = replacedText.replace(hashTagRegex, (match) => {\n return `[${match}](${match})`\n }) : \"\";\n\n\n\n const CustomH1 = ({ children }) => (\n <h1 className=\"tw-text-xl tw-font-bold\">{children}</h1>\n );\n const CustomH2 = ({ children }) => (\n <h2 className=\"tw-text-lg tw-font-bold\">{children}</h2>\n );\n const CustomH3 = ({ children }) => (\n <h3 className=\"tw-text-base tw-font-bold\">{children}</h3>\n );\n const CustomH4 = ({ children }) => (\n <h4 className=\"tw-text-base tw-font-bold\">{children}</h4>\n );\n const CustomH5 = ({ children }) => (\n <h5 className=\"tw-text-sm tw-font-bold\">{children}</h5>\n );\n const CustomH6 = ({ children }) => (\n <h6 className=\"tw-text-sm tw-font-bold\">{children}</h6>\n );\n const CustomParagraph = ({ children }) => (\n <p className=\"!tw-my-2\">{children}</p>\n );\n const CustomUnorderdList = ({ children }) => (\n <ul className=\"tw-list-disc tw-list-inside\">{children}</ul>\n );\n const CustomOrderdList = ({ children }) => (\n <ol className=\"tw-list-decimal tw-list-inside\">{children}</ol>\n );\n const CustomHorizontalRow = ({ children }) => (\n <hr className=\"tw-border-current\">{children}</hr>\n );\n const CustomImage = ({ alt, src, title }) => (\n <img\n className=\"max-w-full rounded-lg shadow-md\"\n src={src}\n alt={alt}\n title={title}\n />\n );\n const CustomExternalLink = ({ href, children }) => (\n <a className='tw-font-bold'\n href={href}\n target=\"_blank\"\n > {children}</a>\n );\n const CustomHashTagLink = ({ children, tag, item }) => { \n return (\n <a\n style={{ color: tag ? tag.color : '#faa', fontWeight: 'bold', cursor: 'pointer' }}\n key={tag ? tag.name + item!.id : item.id}\n onClick={(e) => { \n e.stopPropagation();\n addFilterTag(tag!);\n // map.fitBounds(items)\n // map.closePopup();\n }}>{decodeTag(children)}</a>\n )};\n\n\n return (\n //@ts-ignore\n <Markdown className={`tw-text-map tw-leading-map `} remarkPlugins={[remarkBreaks]} components={{\n p: CustomParagraph,\n a: ({ href, children }) => {\n // PrΓΌft, ob der Link ein YouTube-Video ist\n const isYouTubeVideo = href?.startsWith('https://www.youtube.com/watch?v=');\n\n if (isYouTubeVideo) {\n const videoId = href?.split('v=')[1].split('&')[0]; // Extrahiert die Video-ID aus der URL\n const youtubeEmbedUrl = `https://www.youtube-nocookie.com/embed/${videoId}`;\n\n return (\n\n <iframe className='tw-w-full'\n src={youtubeEmbedUrl}\n allowFullScreen\n />\n\n );\n }\n if (href?.startsWith(\"#\")) { \n const tag = tags.find(t => t.name.toLowerCase() == decodeURI(href).slice(1).toLowerCase())\n return <CustomHashTagLink tag={tag} item={item}>{children}</CustomHashTagLink>;\n } else {\n return (\n <CustomExternalLink href={href}>{children}</CustomExternalLink>\n );\n }\n },\n ul: CustomUnorderdList,\n ol: CustomOrderdList,\n img: CustomImage,\n hr: CustomHorizontalRow,\n h1: CustomH1,\n h2: CustomH2,\n h3: CustomH3,\n h4: CustomH4,\n h5: CustomH5,\n h6: CustomH6,\n }}>\n {replacedText}\n </Markdown>\n )\n\n\n\n}\n\nfunction truncateString( str, n, useWordBoundary ){\n if (str.length <= n) { return str; }\n const subString = str.slice(0, n-1); // the original check\n return (useWordBoundary \n ? subString.slice(0, subString.lastIndexOf(\" \")) \n : subString) + \"&hellip;\";\n};","// in miliseconds\nconst units = [\n { label: 'year', seconds: 31536000 },\n { label: 'month', seconds: 2592000 },\n { label: 'week', seconds: 604800 },\n { label: 'day', seconds: 86400 },\n { label: 'hour', seconds: 3600 },\n { label: 'minute', seconds: 60 },\n { label: 'second', seconds: 1 }\n];\n\n \nexport const timeAgo = (date: string | number | Date) => {\n const time = Math.floor(\n (new Date().valueOf() - new Date(date).valueOf()) / 1000\n );\n const { interval, unit } = calculateTimeDifference(time);\n const suffix = interval === 1 ? '' : 's';\n return `${interval} ${unit}${suffix} ago`;\n};\n\nconst calculateTimeDifference = (time: number) => {\n for (let { label, seconds } of units) {\n const interval = Math.floor(time / seconds);\n if (interval >= 1) {\n return {\n interval: interval,\n unit: label\n };\n }\n }\n return {\n interval: 0,\n unit: ''\n };\n};\n","import * as React from 'react'\nimport { Popup as LeafletPopup } from 'react-leaflet'\nimport { Item } from '../../../types'\nimport { ItemFormPopupProps } from './ItemFormPopup'\nimport { HeaderView } from './ItemPopupComponents/HeaderView'\nimport { TextView } from './ItemPopupComponents/TextView'\nimport { timeAgo } from '../../../Utils/TimeAgo'\nimport { useState } from 'react'\n\n\nexport interface ItemViewPopupProps {\n item: Item,\n children?: React.ReactNode;\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>\n}\n\n\nexport const ItemViewPopup = React.forwardRef((props: ItemViewPopupProps, ref: any) => {\n\n const [infoExpanded, setInfoExpanded] = useState<Boolean>(false);\n\n return (\n <LeafletPopup ref={ref} maxHeight={377} minWidth={275} maxWidth={275} autoPanPadding={[20, 80]}>\n <div className='tw-bg-base-100 tw-text-base-content'>\n <HeaderView item={props.item} setItemFormPopup={props.setItemFormPopup} />\n <div className='tw-overflow-y-auto tw-overflow-x-hidden tw-max-h-64 fade'>\n {props.children ?\n\n React.Children.toArray(props.children).map((child) =>\n React.isValidElement<{ item: Item, test: string }>(child) ?\n React.cloneElement(child, { item: props.item }) : \"\"\n )\n\n :\n\n <TextView item={props.item} />\n\n }\n\n </div>\n <div className='tw-flex -tw-mb-1 tw-flex-row tw-mr-2 tw-mt-1'>\n\n\n {\n infoExpanded ?\n <p className={`tw-italic tw-min-h-[21px] !tw-my-0 tw-text-gray-500 tw-cursor-pointer`} onClick={() => setInfoExpanded(false)}>{`posted ${props.item && props.item.user_created && props.item.user_created.first_name ? `by ${props.item.user_created.first_name}` : \"\"} ${timeAgo(props.item.date_created!)}`}</p>\n :\n <p className=\"!tw-my-0 tw-min-h-[21px] tw-font-bold tw-cursor-pointer tw-text-gray-500\" onClick={() => setInfoExpanded(true)}>β“˜</p>\n }\n <div className='tw-grow'></div>\n{ //** <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"currentColor\" className=\"tw-place-self-end tw-w-4 tw-h-4 tw-mb-1 tw-cursor-pointer\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\" /></svg> */ \n }\n </div>\n </div>\n </LeafletPopup>\n )\n})\n\n","import { LatLng, LatLngTuple, latLng } from \"leaflet\";\nimport { ItemFormPopupProps } from \"./Components/Map/Subcomponents/ItemFormPopup\";\n\nexport interface UtopiaMapProps {\n height?: string,\n width?: string,\n center?: [number,number],\n zoom?: number,\n tags?: Tag[],\n children?: React.ReactNode,\n}\n\nexport interface LayerProps {\n data?: Item[],\n children?: React.ReactNode,\n name: string,\n menuIcon: any,\n menuColor: string,\n menuText: string,\n markerIcon: string,\n markerShape: string,\n markerDefaultColor: string,\n api?: ItemsApi<any>,\n itemNameField?: string,\n itemTextField?: string,\n itemAvatarField?: string,\n itemColorField?: string,\n itemOwnerField?: string,\n itemTagsField?: string,\n itemLatitudeField?: any,\n itemLongitudeField?: any,\n itemOffersField?: string,\n itemNeedsField?: string,\n onlyOnePerOwner?: boolean,\n customEditLink?: string,\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>,\n itemFormPopup?: ItemFormPopupProps | null,\n clusterRef?: React.MutableRefObject<any>\n}\n\nexport class Item {\n id: string ;\n name: string;\n text: string;\n position: Geometry;\n date_created?: string;\n date_updated?: string | null;\n start?: string;\n end?: string;\n api?: ItemsApi<any>;\n tags?: string[];\n layer?: LayerProps;\n [key: string]: any;\n constructor(id:string,name:string,text:string,position:Geometry, layer?: LayerProps, api?: ItemsApi<any>){\n this.id = id;\n this.name = name;\n this.text = text;\n this.position = position;\n this.layer = layer;\n this.api = api;\n }\n}\n\nexport class Geometry {\n type: string;\n coordinates: number[];\n constructor(lng: number, lat: number) {\n this.coordinates = [lng,lat];\n this.type = \"Point\";\n }\n}\n\nexport interface Tag {\n color: string;\n id: string;\n name: string;\n offer_or_need?: boolean\n}\n\nexport interface ItemsApi<T> {\n getItems(): Promise<any>, \n getItem?(id: string): Promise<any>,\n createItem?(item : T): Promise<any>,\n updateItem?(item : T): Promise<any>,\n deleteItem?(id : string): Promise<any>,\n collectionName?: string\n}\n\nexport interface AssetsApi {\n upload(file: Blob, title: string): any,\n url: string\n}\n\nexport interface UserApi {\n register(email: string, password: string, userName: string): Promise<void>,\n\tlogin(email: string, password: string): Promise<any>,\n\tlogout(): Promise<void>,\n getUser(): Promise<UserItem>,\n getToken(): Promise<any>,\n\tupdateUser(user: UserItem): Promise<void>,\n requestPasswordReset(email:string, reset_url?:string),\n passwordReset(token:string,new_password:string)\n}\n\nexport type UserItem = {\n id?: string;\n role?: string;\n email?: string;\n password?: string;\n profile?: Profile;\n [key: string]: any;\n\n}\n\nexport type Profile = {\n id?: string;\n avatar?: string;\n color?: string;\n name: string;\n text: string;\n geoposition?: Geometry\n}\n\nexport type Permission = {\n id?: string;\n role: string;S\n collection: string;\n action: PermissionAction\n}\n\n\nexport type PermissionAction = \"create\"|\"read\"|\"update\"|\"delete\";\n","import * as React from \"react\"\nimport { useEffect, useRef } from \"react\";\nimport Tribute from \"tributejs\";\nimport { useTags } from \"../Map/hooks/useTags\";\n\n\ntype TextAreaProps = {\n labelTitle?: string;\n labelStyle?: string;\n containerStyle?: string;\n dataField?: string;\n inputStyle?: string;\n defaultValue: string;\n placeholder?: string;\n updateFormValue?: (value: string) => void;\n}\n\ninterface KeyValue {\n [key: string]: string;\n}\n\n\nexport function TextAreaInput({ labelTitle, dataField, labelStyle, containerStyle, inputStyle, defaultValue, placeholder, updateFormValue }: TextAreaProps) {\n\n const ref = useRef<HTMLTextAreaElement>(null);\n\n // prevent react18 from calling useEffect twice\n const init = useRef(false)\n\n const tags = useTags();\n\n let values: KeyValue[] = [];\n\n tags.map(tag => {\n values.push({ key: tag.name, value: tag.name, color: tag.color })\n })\n\n var tribute = new Tribute({\n containerClass: 'tw-z-3000 tw-bg-base-100 tw-p-2 tw-rounded-lg tw-shadow',\n selectClass: 'tw-font-bold',\n trigger: \"#\",\n values: values,\n menuShowMinLength: 3,\n noMatchTemplate: () => {\n return \"\"\n },\n menuItemTemplate: function (item) {\n return `<span style=\"color: ${item.original.color}; padding: 5px; boarder-radius: 3px;\">#${item.string}</span>`;\n }\n });\n\n\n useEffect(() => {\n if (!init.current) {\n if (ref.current) {\n tribute.attach(ref.current);\n }\n init.current = true;\n } \n }, [ref])\n\n return (\n <div className={`tw-form-control tw-w-full ${containerStyle ? containerStyle : \"\"}`}>\n {labelTitle ? <label className=\"tw-label\">\n <span className={\"tw-label-text tw-text-base-content \" + labelStyle}>{labelTitle}</span>\n </label> : \"\"}\n <textarea required ref={ref} defaultValue={defaultValue} name={dataField} className={`tw-textarea tw-textarea-bordered tw-w-full tw-leading-5 ${inputStyle ? inputStyle : \"\"}`} placeholder={placeholder || \"\"} onChange={(e) => updateFormValue && updateFormValue(e.target.value)}></textarea>\n </div>\n )\n}\n\n\n","import { useEffect, useState } from \"react\"\nimport * as React from \"react\"\n\ntype InputTextProps = {\n labelTitle?: string;\n labelStyle?: string;\n type?: string;\n dataField?: string;\n containerStyle?: string;\n inputStyle?: string;\n defaultValue?: string;\n placeholder?: string;\n autocomplete?: string\n updateFormValue?: (value: string ) => void;\n}\n\n\nexport function TextInput({labelTitle, labelStyle, type, dataField, containerStyle, inputStyle, defaultValue, placeholder, autocomplete, updateFormValue} : InputTextProps){\n\n return(\n <div className={`tw-form-control tw-w-full ${containerStyle}`}>\n {labelTitle ? <label className=\"tw-label\">\n <span className={\"tw-label-text tw-text-base-content \" + labelStyle}>{labelTitle}</span>\n </label> \n : \" \"} \n <input required type={type || \"text\"} name={dataField} defaultValue={defaultValue} placeholder={placeholder || \"\"} autoComplete={autocomplete} onChange={(e) => updateFormValue&& updateFormValue(e.target.value)}className={`tw-input tw-input-bordered tw-w-full ${inputStyle ? inputStyle : \"\"}`} />\n </div>\n )\n}\n\n\n","export const randomColor = () => {\n return hsvToHex((Math.random() + golden_ratio_conjugate) % 1, 0.8, 0.7)\n}\n\nconst golden_ratio_conjugate = 0.618033988749895;\n\nfunction hsvToHex(h, s, v) {\n var r, g, b;\n var i = (Math.floor(h * 6));\n var f = h * 6 - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0: r = v, g = t, b = p; break;\n case 1: r = q, g = v, b = p; break;\n case 2: r = p, g = v, b = t; break;\n case 3: r = p, g = q, b = v; break;\n case 4: r = t, g = p, b = v; break;\n case 5: r = v, g = p, b = q; break;\n }\n\n return rgbToHex(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255))\n}\n\n\nconst rgbToHex = (r, g, b) => '#' + [r, g, b].map(x => {\n const hex = x.toString(16)\n return hex.length === 1 ? '0' + hex : hex\n}).join('')","import * as React from 'react'\nimport { LatLng } from 'leaflet'\nimport { Popup as LeafletPopup, useMap } from 'react-leaflet'\nimport { useEffect, useRef, useState } from 'react'\nimport { useAddItem, useItems, useRemoveItem, useUpdateItem } from '../hooks/useItems'\nimport { Geometry, LayerProps, Item, ItemsApi } from '../../../types'\nimport { TextAreaInput } from '../../Input/TextAreaInput'\nimport { TextInput } from '../../Input/TextInput'\nimport { toast } from 'react-toastify'\nimport { useResetFilterTags } from '../hooks/useFilter'\nimport { hashTagRegex } from '../../../Utils/HashTagRegex'\nimport { randomColor } from '../../../Utils/RandomColor'\nimport { useAddTag, useTags } from '../hooks/useTags'\nimport { useAuth } from '../../Auth'\n\nexport interface ItemFormPopupProps {\n position: LatLng,\n layer: LayerProps,\n item?: Item,\n children?: React.ReactNode,\n setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>\n}\n\nexport function ItemFormPopup(props: ItemFormPopupProps) {\n\n const [spinner, setSpinner] = useState(false);\n\n const [popupTitle, setPopupTitle] = useState<string>(\"\");\n\n const formRef = useRef<HTMLFormElement>(null);\n\n const map = useMap();\n\n const addItem = useAddItem();\n const updateItem = useUpdateItem();\n const items = useItems();\n const removeItem = useRemoveItem();\n\n\n const tags = useTags(); \n const addTag = useAddTag();\n\n const resetFilterTags = useResetFilterTags();\n\n const { user } = useAuth();\n\n\n const handleSubmit = async (evt: any) => {\n const formItem: Item = {} as Item;\n Array.from(evt.target).forEach((input: HTMLInputElement) => {\n if (input.name) {\n formItem[input.name] = input.value;\n }\n });\n formItem['position'] = new Geometry(props.position.lng, props.position.lat);\n evt.preventDefault();\n setSpinner(true);\n\n formItem.text && formItem.text.toLocaleLowerCase().match(hashTagRegex)?.map(tag=> {\n if (!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n addTag({id: crypto.randomUUID(), name: tag.slice(1), color: randomColor()})\n }\n });\n\n\n\n\n if(props.item) {\n let success = false;\n try {\n await props.layer.api?.updateItem!({...formItem, id: props.item.id});\n success = true;\n } catch (error) {\n toast.error(error.toString());\n }\n if(success) {\n updateItem({...props.item, ...formItem});\n toast.success(\"Item updated\");\n } \n setSpinner(false);\n map.closePopup();\n }\n else {\n const uuid = crypto.randomUUID();\n let success = false;\n try {\n await props.layer.api?.createItem!({...formItem, id: uuid });\n success = true;\n } catch (error) {\n toast.error(error.toString());\n }\n if(success) {\n console.log(props.layer);\n \n if(props.layer.onlyOnePerOwner){\n const item = items.find(item => item.layer == props.layer && item.user_created?.id == user?.id); \n item && removeItem(item);\n }\n addItem({...formItem, id: uuid, layer: props.layer, user_created: user});\n toast.success(\"New item created\");\n resetFilterTags();\n } \n setSpinner(false);\n map.closePopup();\n }\n props.setItemFormPopup!(null);\n }\n\n\n const resetPopup = () => {\n if (formRef.current) {\n formRef.current.reset();\n }\n }\n\n useEffect(() => {\n resetPopup();\n }, [props.position])\n\n return (\n <LeafletPopup minWidth={275} maxWidth={275} autoPanPadding={[20, 80]}\n eventHandlers={{\n remove: () => {\n setTimeout(function () {\n resetPopup()\n }, 100);\n }\n }}\n position={props.position}>\n <form ref={formRef} onReset={resetPopup} autoComplete='off' onSubmit={e => handleSubmit(e)}>\n {props.item ? <div className='tw-h-3'></div>\n :\n <div className='tw-flex tw-justify-center'><b className=\"tw-text-xl tw-font-bold\">{ popupTitle? popupTitle : `New ${props.layer.name}`}</b></div>\n }\n\n {props.children ?\n\n React.Children.toArray(props.children).map((child) =>\n React.isValidElement<{ item: Item, test: string, setPopupTitle: React.Dispatch<React.SetStateAction<string>> }>(child) ?\n React.cloneElement(child, { item: props.item, key: props.position.toString(), setPopupTitle: setPopupTitle }) : \"\"\n )\n\n :\n <>\n <TextInput type=\"text\" placeholder=\"Name\" dataField=\"name\" defaultValue={props.item ? props.item.name : \"\"} inputStyle='' />\n <TextAreaInput key={props.position.toString()} placeholder=\"Text\" dataField=\"text\" defaultValue={props.item ? props.item.text : \"\"} inputStyle='tw-h-40 tw-mt-5' />\n </>\n }\n\n <div className='tw-flex tw-justify-center'>\n <button className={spinner ? 'tw-btn tw-btn-disabled tw-mt-5 tw-place-self-center' : 'tw-btn tw-mt-5 tw-place-self-center'} type='submit'>{spinner ? <span className=\"tw-loading tw-loading-spinner\"></span> : 'Save'}</button>\n </div>\n </form>\n </LeafletPopup>\n )\n}\n\n\n\n","import * as React from 'react'\nimport { Marker, Tooltip, useMap, useMapEvents } from 'react-leaflet'\nimport { Item, LayerProps, Tag } from '../../types'\nimport MarkerIconFactory from '../../Utils/MarkerIconFactory'\nimport { ItemViewPopup } from './Subcomponents/ItemViewPopup'\nimport { useAllItemsLoaded, useItems, useSetItemsApi, useSetItemsData } from './hooks/useItems'\nimport { useEffect, useState } from 'react'\nimport { ItemFormPopup } from './Subcomponents/ItemFormPopup'\nimport { useFilterTags, useIsLayerVisible } from './hooks/useFilter'\nimport { useAddTag, useAllTagsLoaded, useGetItemTags, useTags } from './hooks/useTags'\nimport { useAddMarker, useAddPopup, useLeafletRefs } from './hooks/useLeafletRefs'\nimport { Popup } from 'leaflet'\nimport { useLocation } from 'react-router-dom';\nimport { getValue } from '../../Utils/GetValue'\nimport { hashTagRegex } from '../../Utils/HashTagRegex'\nimport { randomColor } from '../../Utils/RandomColor'\nimport { encodeTag } from '../../Utils/FormatTags'\n\nexport const Layer = ({\n data,\n children,\n name = 'places',\n menuIcon = 'MapPinIcon',\n menuText = 'add new place',\n menuColor = '#2E7D32',\n markerIcon = 'circle-solid',\n markerShape = 'circle',\n markerDefaultColor = '#777',\n api,\n itemNameField = 'name',\n itemTextField = 'text',\n itemAvatarField,\n itemColorField,\n itemOwnerField,\n itemLatitudeField = 'position.coordinates.1',\n itemLongitudeField = 'position.coordinates.0',\n itemTagsField,\n itemOffersField,\n itemNeedsField,\n onlyOnePerOwner = false,\n customEditLink,\n setItemFormPopup,\n itemFormPopup,\n clusterRef\n}: LayerProps) => {\n\n const filterTags = useFilterTags();\n\n const items = useItems();\n const setItemsApi = useSetItemsApi();\n const setItemsData = useSetItemsData();\n const getItemTags = useGetItemTags();\n const addMarker = useAddMarker();\n const addPopup = useAddPopup();\n const leafletRefs = useLeafletRefs();\n\n let location = useLocation();\n\n const allTagsLoaded = useAllTagsLoaded();\n const allItemsLoaded = useAllItemsLoaded();\n\n const tags = useTags();\n const addTag = useAddTag();\n const [newTagsToAdd, setNewTagsToAdd] = useState<Tag[]>([]);\n const [tagsReady, setTagsReady] = useState<boolean>(false);\n\n\n const map = useMap();\n\n const isLayerVisible = useIsLayerVisible();\n\n\n useEffect(() => {\n data && setItemsData({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemNameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, setItemFormPopup, itemFormPopup, clusterRef });\n api && setItemsApi({ data, children, name, menuIcon, menuText, menuColor, markerIcon, markerShape, markerDefaultColor, api, itemNameField, itemTextField, itemAvatarField, itemColorField, itemOwnerField, itemTagsField, itemOffersField, itemNeedsField, onlyOnePerOwner, customEditLink, setItemFormPopup, itemFormPopup, clusterRef });\n }, [data, api])\n\n useMapEvents({\n popupopen: (e) => {\n const item = Object.entries(leafletRefs).find(r => r[1].popup == e.popup)?.[1].item;\n if (item?.layer?.name == name && window.location.pathname.split(\"/\")[2] != item.id) {\n let params = new URLSearchParams(window.location.search); \n window.history.pushState({}, \"\", `/${name}/${item.id}`+ `${params.toString() !== \"\" ? `?${params}` : \"\"}`)\n let title = \"\";\n if (item.name) title = item.name;\n else if (item.layer?.itemNameField) title = getValue(item, item.layer.itemNameField);\n document.title = `${document.title.split(\"-\")[0]} - ${title}`;\n }\n },\n })\n\n const openPopup = () => {\n if (window.location.pathname.split(\"/\").length <= 2 || window.location.pathname.split(\"/\")[2] === \"\") {\n map.closePopup();\n }\n else {\n if (window.location.pathname.split(\"/\")[1] == name) {\n\n if (window.location.pathname.split(\"/\")[2]) {\n const id = window.location.pathname.split(\"/\")[2]\n const marker = leafletRefs[id]?.marker;\n if (marker && marker != null) {\n marker !== null && clusterRef?.current?.zoomToShowLayer(marker, () => {\n marker.openPopup();\n });\n const item = leafletRefs[id]?.item;\n let title = \"\";\n if (item.name) title = item.name;\n else if (item.layer?.itemNameField) title = getValue(item, item.layer.itemNameField);\n document.title = `${document.title.split(\"-\")[0]} - ${title}`;\n document.querySelector('meta[property=\"og:title\"]')?.setAttribute(\"content\", item.name);\n document.querySelector('meta[property=\"og:description\"]')?.setAttribute(\"content\", item.text);\n }\n }\n }\n }\n\n }\n\n useEffect(() => {\n openPopup();\n }, [leafletRefs, location])\n\n useEffect(() => {\n if (tagsReady) {\n const processedTags = {};\n newTagsToAdd.map(newtag => {\n if (!processedTags[newtag.name]) {\n processedTags[newtag.name] = true;\n addTag(newtag);\n }\n })\n }\n }, [tagsReady])\n\n return (\n <>\n {items &&\n items.\n filter(item => item.layer?.name === name)?.\n filter(item =>\n filterTags.length == 0 ? item : filterTags.every(tag => getItemTags(item).some(filterTag => filterTag.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())))?.\n filter(item => item.layer && isLayerVisible(item.layer)).\n map((item: Item) => {\n if (getValue(item, itemLongitudeField) && getValue(item, itemLatitudeField)) {\n\n if (getValue(item, itemTextField)) item[itemTextField] = getValue(item, itemTextField);\n else item[itemTextField] = \"\";\n\n if (item?.tags) {\n item[itemTextField] = item[itemTextField] + '\\n\\n';\n item.tags.map(tag => {\n if (!item[itemTextField].includes(`#${encodeTag(tag)}`))\n return (item[itemTextField] = item[itemTextField] + `#${encodeTag(tag)} `)\n return item[itemTextField]\n\n });\n }\n\n\n if (allTagsLoaded && allItemsLoaded) { \n item[itemTextField].match(hashTagRegex)?.map(tag => {\n if ((!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) && !newTagsToAdd.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n const newTag = { id: crypto.randomUUID(), name: tag.slice(1), color: randomColor() };\n setNewTagsToAdd(current => [...current, newTag]);\n }\n });\n !tagsReady && setTagsReady(true);\n }\n\n\n const itemTtags = getItemTags(item);\n\n const latitude = itemLatitudeField && item ? getValue(item, itemLatitudeField) : undefined;\n const longitude = itemLongitudeField && item ? getValue(item, itemLongitudeField) : undefined;\n\n let color1 = markerDefaultColor;\n let color2 = \"RGBA(35, 31, 32, 0.2)\";\n if (itemColorField) color1 = getValue(item, itemColorField);\n\n else if (itemTtags && itemTtags[0]) {\n color1 = itemTtags[0].color;\n }\n if (itemTtags && itemTtags[0] && itemColorField) color2 = itemTtags[0].color;\n else if (itemTtags && itemTtags[1]) {\n color2 = itemTtags[1].color;\n }\n return (\n <Marker ref={(r) => {\n if (!(item.id in leafletRefs && leafletRefs[item.id].marker == r))\n r && addMarker(item, r);\n }} icon={MarkerIconFactory(markerShape, color1, color2, markerIcon)} key={item.id} position={[latitude, longitude]}>\n {\n (children && React.Children.toArray(children).some(child => React.isValidElement(child) && child.props.__TYPE === \"ItemView\") ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement(child) && child.props.__TYPE === \"ItemView\" ?\n <ItemViewPopup ref={(r) => {\n if (!(item.id in leafletRefs && leafletRefs[item.id].popup == r))\n r && addPopup(item, r as Popup);\n }} key={item.id + item.name}\n item={item}\n setItemFormPopup={setItemFormPopup}>\n {child}\n </ItemViewPopup>\n : \"\"\n )\n :\n <>\n <ItemViewPopup key={item.id + item.name} ref={(r) => {\n if (!(item.id in leafletRefs && leafletRefs[item.id].popup == r))\n r && addPopup(item, r as Popup);\n }}\n item={item}\n setItemFormPopup={setItemFormPopup} />\n </>)\n }\n <Tooltip offset={[0, -38]} direction='top'>{item.name ? item.name : getValue(item, itemNameField)}</Tooltip>\n </Marker>\n );\n }\n else return null;\n })\n }\n {//{children}}\n }\n {itemFormPopup && itemFormPopup.layer!.name == name &&\n (children && React.Children.toArray(children).some(child => React.isValidElement(child) && child.props.__TYPE === \"ItemForm\") ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement(child) && child.props.__TYPE === \"ItemForm\" ?\n <ItemFormPopup key={setItemFormPopup?.name} position={itemFormPopup!.position} layer={itemFormPopup!.layer} setItemFormPopup={setItemFormPopup} item={itemFormPopup!.item} >{child}</ItemFormPopup>\n : \"\"\n )\n :\n <>\n <ItemFormPopup position={itemFormPopup!.position} layer={itemFormPopup!.layer} setItemFormPopup={setItemFormPopup} item={itemFormPopup!.item} />\n </>)\n }\n </>\n )\n}","import * as React from 'react'\nimport { useEffect } from 'react';\nimport { ItemsApi, Tag } from '../../types';\nimport { useSetTagData, useSetTagApi, useTags } from './hooks/useTags'\nimport { useLocation } from 'react-router-dom';\nimport { useAddFilterTag } from './hooks/useFilter';\n\nexport function Tags({data, api} : {data?: Tag[], api?: ItemsApi<Tag>}) {\nconst setTagData = useSetTagData();\nconst setTagApi = useSetTagApi();\n\nuseEffect(() => {\n data && setTagData(data); \n api && setTagApi(api); \n}, [api, data])\n\n\nconst location = useLocation();\nconst addFilterTag = useAddFilterTag();\nconst tags = useTags();\n\n\nuseEffect(() => {\n let params = new URLSearchParams(location.search);\n let urlTags = params.get(\"tags\");\n urlTags?.split(\",\").map(urlTag => {\n const tag = tags.find(t => t.name.toLocaleLowerCase() === urlTag.toLocaleLowerCase()) \n tag && addFilterTag(tag)\n });\n\n}, [location, tags]);\n\n\n return (\n <></>\n )\n}\n","import * as React from 'react'\nimport { useEffect } from 'react';\nimport { ItemsApi, Permission } from '../../types';\nimport { useSetPermissionData, useSetPermissionApi, useSetAdminRole } from './hooks/usePermissions'\nimport { useAuth } from '../Auth';\n\nexport function Permissions({data, api, adminRole} : {data?: Permission[], api?: ItemsApi<Permission>, adminRole?: string}) {\nconst setPermissionData = useSetPermissionData();\nconst setPermissionApi = useSetPermissionApi();\nconst setAdminRole = useSetAdminRole();\nconst {user} = useAuth();\n\nuseEffect(() => { \n adminRole && setAdminRole(adminRole);\n data && setPermissionData(data); \n api && setPermissionApi(api); \n}, [api, data, adminRole, user])\n\n return (\n <></>\n )\n}\n","import * as React from 'react'\nimport { Item } from '../../types'\nimport * as PropTypes from 'prop-types'\nimport { useEffect } from 'react'\n\n\nexport const ItemForm = ({ children, item, title, setPopupTitle }: { children?: React.ReactNode, item?: Item, title?: string, setPopupTitle?: React.Dispatch<React.SetStateAction<string>> }) => {\n useEffect(() => {\n setPopupTitle&& title && setPopupTitle(title);\n\n }, [title])\n \n return (\n <div>{\n children ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement<{ item: Item, test: string }>(child) ?\n React.cloneElement(child, { item: item, test: \"test\" }) : \"\"\n ) : \"\"\n }</div>\n )\n}\n\nItemForm.propTypes = {\n children: PropTypes.node,\n __TYPE: PropTypes.string,\n};\n\nItemForm.defaultProps = {\n __TYPE: 'ItemForm',\n};\n","import * as React from 'react'\nimport { Item } from '../../types'\nimport * as PropTypes from 'prop-types'\n\n\nexport const ItemView = ({ children, item }: { children?: React.ReactNode, item?: Item }) => {\n return (\n <div>\n {children ?\n React.Children.toArray(children).map((child) =>\n React.isValidElement<{ item: Item }>(child) ?\n React.cloneElement(child, { item: item }) : \"\"\n ) : \"\"}\n </div>\n )\n}\n\nItemView.propTypes = {\n children: PropTypes.node,\n __TYPE: PropTypes.string,\n};\n\nItemView.defaultProps = {\n __TYPE: 'ItemView',\n};\n","\nimport { useState } from 'react'\nimport InformationCircleIcon from '@heroicons/react/24/outline/InformationCircleIcon'\nimport * as React from 'react';\n\ntype SelectBoxProps = {\n labelTitle?: string;\n labelStyle?: string;\n type?: string;\n containerStyle?: string;\n defaultValue: string;\n placeholder?: string;\n updateFormValue: (value: string ) => void;\n\n options: {name: string, value: string}[];\n labelDescription?: string\n}\n\nexport function SelectBox(props : SelectBoxProps){\n \n const {labelTitle, labelDescription, defaultValue, containerStyle, placeholder, labelStyle, options, updateFormValue} = props\n\n const [value, setValue] = useState(defaultValue || \"\")\n\n\n const updateValue = (newValue: string) =>{\n updateFormValue(newValue)\n setValue(newValue)\n }\n\n\n return (\n <div className={`tw-inline-block ${containerStyle}`}>\n {labelTitle? \n <label className={`tw-label ${labelStyle}`}>\n <div className=\"tw-label-text\">{labelTitle}\n {labelDescription && <div className=\"tw-tooltip tw-tooltip-right\" data-tip={labelDescription}><InformationCircleIcon className='tw-w-4 tw-h-4'/></div>}\n </div>\n </label>\n : \"\"}\n <select className=\"tw-select tw-select-bordered tw-w-full\" value={value} onChange={(e) => updateValue(e.target.value)}>\n <option disabled value=\"PLACEHOLDER\">{placeholder}</option>\n {\n options.map((o, k) => {\n return <option value={o.value || o.name} key={k}>{o.name}</option>\n })\n }\n </select>\n </div>\n )\n}","import * as React from 'react'\nimport { TextAreaInput } from '../../../Input'\nimport { Item } from '../../../../types'\n\nexport const PopupTextAreaInput = ({ dataField, placeholder, style, item }:\n {\n dataField: string,\n placeholder: string,\n style?: string,\n item?: Item\n }) => {\n\n return (\n <TextAreaInput defaultValue={item?.text ? item.text : \"\"} dataField={dataField} placeholder={placeholder} inputStyle={style}></TextAreaInput>\n )\n}\n","import * as React from 'react'\nimport { TextInput } from '../../../Input'\nimport { Item } from '../../../../types'\n\nexport const PopupStartEndInput = ({item}:{item?:Item}) => {\n return (\n <div className='tw-grid tw-grid-cols-2 tw-gap-2 tw-mb-5'>\n <TextInput type='date' placeholder='start' dataField='start' inputStyle='tw-text-sm tw-px-2' labelTitle='start' defaultValue={item && item.start? item.start.substring(0, 10) : \"\"} autocomplete='one-time-code'></TextInput>\n <TextInput type='date' placeholder='end' dataField='end' inputStyle='tw-text-sm tw-px-2' labelTitle='end' defaultValue={item && item.end ? item.end.substring(0, 10) : \"\"} autocomplete='one-time-code'></TextInput>\n </div>\n )\n}\n","import * as React from 'react'\nimport { TextInput } from '../../../Input'\nimport { Item } from '../../../../types'\n\nexport const PopupTextInput = ({ dataField, placeholder, style, item }:\n {\n dataField: string,\n placeholder: string,\n style?: string,\n item?: Item\n }) => {\n\n return (\n <TextInput defaultValue={item?.name ? item.name : \"\"} dataField={dataField} placeholder={placeholder} inputStyle={style} type='text'></TextInput>\n )\n}\n","import * as React from 'react'\nimport { Item } from '../../../../types'\n\nexport const StartEndView = ({item} : {item?:Item}) => {\n return (\n <div className=\"tw-flex tw-flex-row tw-mb-4 tw-mt-1\">\n <div className=\"tw-basis-2/5 tw-flex tw-flex-row\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-4 tw-w-4 tw-mr-2\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n <time className='tw-align-middle' dateTime={item && item.start? item.start.substring(0, 10) : \"\"}>{item && item.start? new Date(item.start).toLocaleDateString(): \"\"}</time>\n </div>\n <div className=\"tw-basis-1/5 tw-place-content-center\">\n <span>-</span>\n </div>\n <div className=\"tw-basis-2/5 tw-flex tw-flex-row\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-4 tw-w-4 tw-mr-2\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n <time className='tw-align-middle' dateTime={item && item.end? item.end.substring(0, 10) : \"\"}>{item && item.end ? new Date(item.end).toLocaleDateString() : \"\"}</time>\n </div>\n </div>\n )\n}\n\n","import * as React from 'react'\nimport { Link } from 'react-router-dom'\nimport { getValue } from '../../../../Utils/GetValue'\nimport { Item } from '../../../../types'\n\nexport const PopupButton = ({url, parameterField, text, colorField, item} : {url: string, parameterField?: string, text: string, colorField?: string, item? : Item}) => {\n return (\n <Link to={`${url}/${parameterField? getValue(item,parameterField):``}`}><button style={{backgroundColor: `${colorField && getValue(item,colorField)? getValue(item,colorField) : item?.layer?.markerDefaultColor}`}} className=\"tw-btn tw-text-white tw-btn-sm tw-float-right tw-mt-1\">{text}</button></Link>\n \n )\n}\n","import { useAuth } from \"../Auth\"\nimport { Link } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport QuestionMarkIcon from '@heroicons/react/24/outline/QuestionMarkCircleIcon'\nimport * as React from \"react\";\n\n\nexport default function NavBar({ appName, nameWidth = 200}: { appName: string, nameWidth?: number }) {\n\n\n const { isAuthenticated, user, logout, token } = useAuth();\n\n const onLogout = () => {\n toast.promise(\n logout(),\n {\n success: {\n render() {\n return `Bye bye`\n },\n // other options\n icon: \"πŸ‘‹\",\n },\n error: {\n render( {data} ) { \n return `${data}`\n },\n },\n pending: 'logging out ..'\n });\n }\n\n return (\n <>\n <div className=\"tw-navbar tw-bg-base-100 tw-z-[10000] tw-shadow-xl tw-relative\">\n <button className=\"tw-btn tw-btn-square tw-btn-ghost\"\n data-te-sidenav-toggle-ref\n data-te-target=\"#sidenav\"\n aria-controls=\"#sidenav\"\n aria-haspopup=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" className=\"tw-inline-block tw-w-5 tw-h-5 tw-stroke-current\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M4 6h16M4 12h16M4 18h16\"></path></svg>\n </button>\n <div className=\"tw-flex-1 tw-mr-2\">\n <div className={`tw-flex-1 tw-truncate tw-grid tw-grid-flow-col`} style={{maxWidth: nameWidth}}>\n <Link className=\"tw-btn tw-btn-ghost tw-px-2 tw-normal-case tw-text-xl tw-flex-1 tw-truncate\" to={\"/\"}><h1 className=\"tw-truncate\">{appName}</h1></Link>\n <button className=\"tw-btn tw-px-2 tw-btn-ghost\" onClick={() => window.my_modal_3.showModal()}><QuestionMarkIcon className=\"tw-h-5 tw-w-5\" /></button>\n </div>\n </div>\n\n\n\n {isAuthenticated ?\n <div className=\"tw-flex-none\">\n {user?.avatar ? <div className=\"tw-avatar\">\n <div className=\"tw-w-10 tw-rounded-full\">\n <img src={\"https://api.utopia-lab.org/assets/\" + user?.avatar + \"?access_token=\" + token} />\n </div>\n </div> : <></>}\n <div className='tw-ml-2 tw-mr-2'>{user?.first_name}</div>\n <div className=\"tw-dropdown tw-dropdown-end\">\n <label tabIndex={0} className=\"tw-btn tw-btn-ghost tw-btn-square\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n </label>\n <ul tabIndex={0} className=\"tw-menu tw-menu-compact tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[10000]\">\n <li><Link to={\"/profile-settings\"}>Profile</Link></li>\n <li><Link to={\"/user-settings\"}>Settings</Link></li>\n <li><a onClick={() => { onLogout() }}>Logout</a></li>\n </ul>\n </div>\n </div>\n :\n <div>\n\n <div className=\"tw-hidden md:tw-flex\">\n <Link to={\"/login\"}><div className=\"tw-btn tw-btn-ghost tw-mr-2\">\n Login\n </div></Link>\n\n <Link to={\"/signup\"}><div className=\"tw-btn tw-btn-ghost tw-mr-2\">\n Sign Up\n </div></Link>\n </div>\n <div className=\"tw-dropdown tw-dropdown-end\">\n <label tabIndex={1} className=\"tw-btn tw-btn-ghost md:tw-hidden\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 6a2 2 0 110-4 2 2 0 010 4zM10 12a2 2 0 110-4 2 2 0 010 4zM10 18a2 2 0 110-4 2 2 0 010 4z\" />\n </svg>\n\n\n </label>\n <ul tabIndex={1} className=\"tw-menu tw-dropdown-content tw-mt-3 tw-p-2 tw-shadow tw-bg-base-100 tw-rounded-box tw-w-52 !tw-z-[10000]\">\n <li><Link to={\"/login\"}>Login</Link></li>\n <li><Link to={\"/signup\"}>Sign Up</Link></li>\n </ul>\n </div>\n\n </div>\n }\n </div>\n\n </>\n )\n}\n","import * as React from 'react'\nimport { useSetAssetApi } from './hooks/useAssets'\nimport { AssetsApi } from '../../types';\nimport { useEffect } from 'react';\n\nexport const SetAssetsApi = ({assetsApi}:{assetsApi: AssetsApi}) => {\n const setAssetsApi = useSetAssetApi();\n\n useEffect(() => {\n setAssetsApi(assetsApi)\n }, [assetsApi])\n \n\n return (\n <></>\n )\n}\n","import * as React from 'react'\nimport NavBar from './NavBar'\nimport { BrowserRouter } from 'react-router-dom'\nimport { ToastContainer } from 'react-toastify'\nimport { QuestsProvider } from '../Gaming/hooks/useQuests'\nimport { AssetsProvider } from './hooks/useAssets'\nimport { SetAssetsApi } from './SetAssetsApi'\nimport { AssetsApi } from '../../types'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n\nexport function AppShell({ appName, nameWidth, children, assetsApi }: { appName: string, nameWidth?: number, children: React.ReactNode, assetsApi: AssetsApi }) {\n\n // Create a client\n const queryClient = new QueryClient()\n\n\n return (\n <QueryClientProvider client={queryClient}>\n <BrowserRouter>\n <AssetsProvider>\n <SetAssetsApi assetsApi={assetsApi}></SetAssetsApi>\n <QuestsProvider initialOpen={true}>\n <ToastContainer position=\"top-right\"\n autoClose={2000}\n hideProgressBar\n newestOnTop={false}\n closeOnClick\n rtl={false}\n pauseOnFocusLoss\n draggable\n pauseOnHover\n theme=\"light\" />\n <NavBar appName={appName} nameWidth={nameWidth}></NavBar>\n <div id=\"app-content\" className=\"tw-flex tw-!pl-[77px]\">\n {children}\n </div>\n </QuestsProvider>\n </AssetsProvider>\n </BrowserRouter>\n </QueryClientProvider>\n )\n}\n","import ChevronDownIcon from '@heroicons/react/24/outline/ChevronDownIcon'\nimport * as React from 'react'\nimport {useEffect, useState} from 'react'\nimport { Link, useLocation } from 'react-router-dom'\n\n\nfunction SidebarSubmenu({submenu, name, icon} : { path: string;\n icon: JSX.Element;\n name: string;\n submenu?: any | undefined}){\n const location = useLocation()\n const [isExpanded, setIsExpanded] = useState(false)\n\n\n /** Open Submenu list if path found in routes, this is for directly loading submenu routes first time */\n useEffect(() => {\n if(submenu.filter(m => {return m.path === location.pathname})[0])setIsExpanded(true)\n }, [])\n\n return (\n <div className='flex-col'>\n\n {/** Route header */}\n <div className='w-full' onClick={() => setIsExpanded(!isExpanded)}>\n {icon} <span className=\"group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:hidden\" data-te-sidenav-slim=\"false\">{name} </span>\n <ChevronDownIcon className={'w-5 h-5 mt-1 float-right delay-400 duration-500 transition-all ' + (isExpanded ? 'rotate-180' : '')}/>\n </div>\n\n {/** Submenu list */}\n <div className={` w-full data-[te-collapse-show]:!hidden `+ (isExpanded ? \"\" : \"hidden\")} >\n <ul className={`menu menu-compact`} >\n {\n submenu.map((m, k) => {\n return(\n <li key={k} >\n <Link to={m.path} className='' >\n {m.icon}<span className=\"\" data-te-sidenav-slim=\"false\">{m.name}</span>\n {\n location.pathname == m.path ? (<span className=\"absolute mt-1 mb-1 inset-y-0 left-0 w-1 rounded-tr-md rounded-br-md bg-primary \"\n aria-hidden=\"true\"></span>) : null\n }\n </Link>\n </li>\n )\n })\n }\n </ul>\n </div>\n </div>\n )\n}\n\nexport default SidebarSubmenu","import { useRef, useState } from 'react'\nimport { useEffect } from 'react'\nimport { NavLink, useLocation } from 'react-router-dom';\nimport {\n Sidenav,\n initTE,\n} from \"tw-elements\";\nimport SidebarSubmenu from './SidebarSubmenu';\nimport ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon';\nimport * as React from 'react';\n\ntype route = {\n path: string;\n icon: JSX.Element;\n name: string;\n submenu?: route;\n blank?: boolean\n}\n\n\nexport function SideBar({ routes, bottomRoutes }: { routes: route[], bottomRoutes?: route[] }) {\n\n // prevent react18 from calling useEffect twice\n const init = useRef(false)\n\n const location = useLocation();\n\n const [instance, setInstance] = useState<any>(null);\n const [slim, setSlim] = useState<boolean>(false);\n\n\n\n const toggleSlim = () => {\n setSlim(!slim);\n instance.toggleSlim();\n }\n\n\n\n useEffect(() => {\n if (!init.current) {\n initTE({ Sidenav });\n const instance = Sidenav.getInstance(\n document.getElementById(\"sidenav\")\n );\n setInstance(instance);\n instance.toggleSlim();\n init.current = true;\n }\n }, [])\n\n return (\n <nav\n id=\"sidenav\"\n className=\"group tw-fixed tw-left-0 tw-mt-16 tw-top-0 tw-z-[10035] tw-h-[calc(100dvh-64px)] tw--translate-x-full tw-overflow-hidden tw-shadow-xl data-[te-sidenav-slim='true']:tw-hidden data-[te-sidenav-slim-collapsed='true']:tw-w-[56px] data-[te-sidenav-slim='true']:tw-w-[56px] data-[te-sidenav-hidden='false']:tw-translate-x-0 dark:tw-bg-zinc-800 [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='false']]:tw-hidden [&[data-te-sidenav-slim-collapsed='true'][data-te-sidenav-slim='true']]:[display:unset]\"\n data-te-sidenav-init\n data-te-sidenav-hidden=\"true\"\n data-te-sidenav-mode=\"side\"\n data-te-sidenav-slim=\"true\"\n data-te-sidenav-content=\"#app-content\"\n data-te-sidenav-slim-collapsed=\"true\"\n data-te-sidenav-slim-width=\"56\"\n data-te-sidenav-width=\"160\">\n <div className='tw-flex tw-flex-col tw-h-[calc(100dvh-64px)]'>\n <ul className=\"tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0\" data-te-sidenav-menu-ref>\n {\n routes.map((route, k) => {\n return (\n <li className=\"\" key={k}>\n {\n route.submenu ?\n <SidebarSubmenu {...route} /> :\n (<NavLink \n end\n target={route.blank ? \"_blank\" : \"_self\"}\n to={route.path}\n className={({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`} onClick={() => {\n if (screen.width < 640 && !slim) instance.toggle();\n }}>\n {route.icon}<span className=\"group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden\" data-te-sidenav-slim=\"false\">{route.name}</span>\n {\n location.pathname.includes(route.path) && route.path.length > 1 || location.pathname === route.path ? (<span className=\"tw-absolute tw-inset-y-0 tw-left-0 tw-w-1 tw-rounded-tr-md tw-rounded-br-md tw-bg-primary \"\n aria-hidden=\"true\"></span>) : null\n }\n </NavLink>)\n }\n\n </li>\n )\n })\n }\n </ul>\n\n <div id=\"slim-toggler\" className='tw-w-full tw-bg-base-100 tw-flex-1 tw-grid tw-place-items-end' aria-haspopup=\"true\" >\n <div className='tw-w-full'>\n\n <ul className=\"tw-menu tw-w-full tw-bg-base-100 tw-text-base-content tw-p-0 tw-mb-0\" data-te-sidenav-menu-ref>\n {\n bottomRoutes?.map((route, k) => {\n return (\n <li className=\"\" key={k}>\n {\n route.submenu ?\n <SidebarSubmenu {...route} /> :\n (<NavLink\n end\n target={route.blank ? \"_blank\" : \"_self\"}\n to={route.path}\n className={({ isActive }) => `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}`} onClick={() => {\n if (screen.width < 640 && !slim) instance.toggle();\n }}>\n {route.icon}<span className=\"group-[&[data-te-sidenav-slim-collapsed='true']]:data-[te-sidenav-slim='false']:tw-hidden\" data-te-sidenav-slim=\"false\">{route.name}</span>\n {\n location.pathname.includes(route.path) && route.path.length > 1 || location.pathname === route.path ? (<span className=\"tw-absolute tw-inset-y-0 tw-left-0 tw-w-1 tw-rounded-tr-md tw-rounded-br-md tw-bg-primary \"\n aria-hidden=\"true\"></span>) : null\n }\n </NavLink>)\n }\n\n </li>\n )\n })\n }\n </ul>\n\n <ChevronRightIcon className={\"tw-w-5 tw-h-5 tw-mb-4 tw-mr-4 tw-cursor-pointer tw-float-right tw-delay-400 tw-duration-500 tw-transition-all \" + (!slim ? \"tw-rotate-180\" : '')} onClick={() => toggleSlim()} />\n\n </div>\n </div>\n </div>\n </nav>\n )\n}\n","import * as React from 'react'\n\ntype ContentProps = {\n children?: React.ReactNode;\n}\n\nexport function Content({children} : ContentProps) {\n return (\n <div className='tw-flex tw-flex-col tw-w-full tw-bg-base-200 tw-relative'>\n {children}\n </div>\n\n )\n}\n","import { useEffect, useRef, useState } from 'react'\nimport { TitleCard } from '../Templates/TitleCard'\nimport { TextInput } from '../Input/TextInput'\nimport { TextAreaInput } from '../Input/TextAreaInput'\nimport { toast } from 'react-toastify';\nimport { useNavigate } from 'react-router-dom'\nimport { useAuth } from '../Auth';\nimport * as React from 'react'\nimport ReactCrop, { Crop, centerCrop, makeAspectCrop } from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\nimport 'react-toastify/dist/ReactToastify.css';\nimport { UserItem } from '../../types';\nimport DialogModal from '../Templates/DialogModal';\nimport { useAssetApi } from '../AppShell/hooks/useAssets';\nimport { ColorPicker } from './ColorPicker';\n\nexport function UserSettings() {\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [email, setEmail] = useState<string>(\"\");\n const [password, setPassword] = useState<string>(\"\");\n\n\n\n const [passwordChanged, setPasswordChanged] = useState<boolean>(false);\n\n\n\n const navigate = useNavigate();\n\n useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setEmail(user?.email ? user.email : \"\");\n setPassword(user?.password ? user.password : \"\");\n }, [user])\n\n\n\n\n\n\n const onUpdateUser = () => {\n let changedUser = {} as UserItem;\n\n changedUser = { id: id, email: email, ...passwordChanged && { password: password }};\n\n\n toast.promise(\n\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <>\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-8 tw-px-6 tw-bg-base-200 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className='tw-w-full xl:tw-max-w-6xl'>\n <TitleCard title=\"Settings\" topMargin=\"tw-mt-2\" className='tw-mb-6'>\n\n\n <div className=\"tw-grid tw-grid-cols-1 md:tw-grid-cols-2 tw-gap-6\">\n <TextInput type='email' placeholder=\"E-Mail\" defaultValue={user?.email ? user.email : \"\"} updateFormValue={(v) => setEmail(v)} />\n <TextInput type='password' placeholder=\"new Password\" defaultValue={user?.password ? user.password : \"\"} updateFormValue={(v) => {\n setPassword(v);\n setPasswordChanged(true);\n }} />\n {/* <ToogleInput updateType=\"syncData\" labelTitle=\"Sync Data\" defaultValue={true} updateFormValue={updateFormValue}/> */}\n </div>\n\n <div className=\"tw-mt-8\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </TitleCard>\n </div>\n </main>\n </>\n )\n}\n","import { useEffect } from \"react\";\n\n// Improved version of https://usehooks.com/useOnClickOutside/\nconst useClickOutside = (ref, handler) => {\n useEffect(() => {\n let startedInside = false;\n let startedWhenMounted = false;\n\n const listener = (event) => {\n // Do nothing if `mousedown` or `touchstart` started inside ref element\n if (startedInside || !startedWhenMounted) return;\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) return;\n\n handler(event);\n };\n\n const validateEventStart = (event) => {\n startedWhenMounted = ref.current;\n startedInside = ref.current && ref.current.contains(event.target);\n };\n\n document.addEventListener(\"mousedown\", validateEventStart);\n document.addEventListener(\"touchstart\", validateEventStart);\n document.addEventListener(\"click\", listener);\n\n return () => {\n document.removeEventListener(\"mousedown\", validateEventStart);\n document.removeEventListener(\"touchstart\", validateEventStart);\n document.removeEventListener(\"click\", listener);\n };\n }, [ref, handler]);\n};\n\nexport default useClickOutside;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport * as React from \"react\";\nimport { HexColorPicker } from \"react-colorful\";\nimport \"./ColorPicker.css\"\nimport useClickOutside from \"./useClickOutside\";\n\nexport const ColorPicker = ({ color, onChange, className }) => {\n const popover = useRef<HTMLDivElement>(null);\n const [isOpen, toggle] = useState(false);\n\n const close = useCallback(() => toggle(false), []);\n useClickOutside(popover, close);\n\n const colorPickerRef = React.useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n // FΓΌge dem Color-Picker explizit Event-Listener hinzu\n const colorPickerElement = colorPickerRef.current;\n if (colorPickerElement) {\n const enablePropagation = (event) => {\n // Verhindere, dass Leaflet die Propagation stoppt\n event.stopPropagation = () => {};\n };\n \n // Event-Listener fΓΌr den Color-Picker\n ['click', 'dblclick', 'mousedown', 'touchstart'].forEach(eventType => {\n colorPickerElement.addEventListener(eventType, enablePropagation, true);\n });\n }\n \n }, []); \n\n return (\n <div ref={colorPickerRef} className={`picker ${className}`}>\n <div\n className=\"swatch\"\n style={{ backgroundColor: color }}\n onClick={() => toggle(true)}\n />\n\n {isOpen && (\n <div className=\"popover\" ref={popover}>\n <HexColorPicker color={color} onChange={onChange} />\n </div>\n )}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react'\nimport { TitleCard } from '../Templates/TitleCard'\nimport { TextInput } from '../Input/TextInput'\nimport { TextAreaInput } from '../Input/TextAreaInput'\nimport { toast } from 'react-toastify';\nimport { useNavigate } from 'react-router-dom'\nimport { useAuth } from '../Auth';\nimport * as React from 'react'\nimport ReactCrop, { Crop, centerCrop, makeAspectCrop } from 'react-image-crop'\nimport 'react-image-crop/dist/ReactCrop.css'\nimport 'react-toastify/dist/ReactToastify.css';\nimport { UserItem } from '../../types';\nimport DialogModal from '../Templates/DialogModal';\nimport { useAssetApi } from '../AppShell/hooks/useAssets';\nimport { ColorPicker } from './ColorPicker';\n\nexport function ProfileSettings() {\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [name, setName] = useState<string>(\"\");\n const [text, setText] = useState<string>(\"\");\n const [avatar, setAvatar] = useState<string>(\"\");\n const [color, setColor] = useState<string>(\"\");\n\n\n const [crop, setCrop] = useState<Crop>();\n const [image, setImage] = useState<string>(\"\");\n const [cropModalOpen, setCropModalOpen] = useState<boolean>(false);\n const [cropping, setCropping] = useState<boolean>(false);\n\n const assetsApi = useAssetApi();\n const navigate = useNavigate();\n\n useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setName(user?.first_name ? user.first_name : \"\");\n setText(user?.description ? user.description : \"\");\n setAvatar(user?.avatar ? user?.avatar : \"\"),\n setColor(user?.color? user.color : \"#aabbcc\")\n }, [user])\n\n const imgRef = useRef<HTMLImageElement>(null)\n\n const onImageChange = (event) => {\n if (event.target.files && event.target.files[0]) {\n setImage(URL.createObjectURL(event.target.files[0]));\n }\n setCropModalOpen(true);\n }\n\n function onImageLoad(e: React.SyntheticEvent<HTMLImageElement>) {\n const { width, height } = e.currentTarget\n\n setCrop(centerAspectCrop(width, height, 1))\n }\n\n\n // This is to demonstate how to make and center a % aspect crop\n // which is a bit trickier so we use some helper functions.\n function centerAspectCrop(\n mediaWidth: number,\n mediaHeight: number,\n aspect: number,\n ) {\n return centerCrop(\n makeAspectCrop(\n {\n unit: 'px',\n width: mediaWidth / 2,\n },\n aspect,\n mediaWidth,\n mediaHeight,\n ),\n mediaWidth,\n mediaHeight,\n )\n }\n\n async function renderCrop() {\n // get the image element\n const image = imgRef.current;\n if (crop && image) {\n\n const scaleX = image.naturalWidth / image.width\n const scaleY = image.naturalHeight / image.height\n\n // create a canvas element to draw the cropped image\n const canvas = new OffscreenCanvas(\n crop.width * scaleX,\n crop.height * scaleY,\n )\n const ctx = canvas.getContext(\"2d\");\n const pixelRatio = window.devicePixelRatio;\n canvas.width = crop.width * pixelRatio * scaleX;\n canvas.height = crop.height * pixelRatio * scaleY;\n\n if (ctx) {\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\n ctx.drawImage(\n image,\n crop.x * scaleX,\n crop.y * scaleY,\n crop.width * scaleX,\n crop.height * scaleY,\n 0,\n 0,\n crop.width * scaleX,\n crop.height * scaleY\n );\n }\n const blob = await canvas.convertToBlob();\n await resizeBlob(blob);\n setCropping(false);\n setImage(\"\");\n }\n }\n\n async function resizeBlob(blob) {\n var img = new Image();\n img.src = URL.createObjectURL(blob);\n await img.decode();\n const canvas = new OffscreenCanvas(\n 400,\n 400\n )\n var ctx = canvas.getContext(\"2d\");\n ctx?.drawImage(img, 0, 0, 400, 400);\n const resizedBlob = await canvas.convertToBlob()\n const asset = await assetsApi.upload(resizedBlob, \"test\");\n setAvatar(asset.id)\n }\n\n\n const onUpdateUser = () => {\n let changedUser = {} as UserItem;\n\n changedUser = { id: id, first_name: name, description: text, color: color, ...avatar.length > 10 && { avatar: avatar } };\n\n\n toast.promise(\n\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <div className='tw-backdrop-contrast-50 tw-h-full tw-w-full'>\n <main className=\"tw-flex-1 tw-overflow-y-auto tw-overflow-x-hidden tw-pt-8 tw-px-6 tw-min-w-80 tw-flex tw-justify-center\" >\n <div className='tw-w-full xl:tw-max-w-6xl'>\n <TitleCard title=\"Profile\" topMargin=\"tw-mt-2\" className='tw-mb-6'>\n <div className=\"tw-flex\">\n {!cropping ?\n <label className=\"custom-file-upload\">\n <input type=\"file\" accept=\"image/*\" className=\"tw-file-input tw-w-full tw-max-w-xs\" onChange={onImageChange} />\n <div className='button tw-btn tw-btn-lg tw-btn-circle tw-animate-none'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"1.5\" stroke=\"currentColor\" className=\"tw-w-6 tw-h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\" />\n </svg>\n </div>\n {avatar ?\n <div className='tw-h-20 tw-w-20'>\n <img src={assetsApi.url + avatar + \"?access_token=\" + token} className=' tw-rounded-full' />\n </div>\n :\n <div className='tw-h-20 tw-w-20'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" viewBox=\"0 0 150 150\" className='tw-w-20 tw-h-20 tw-rounded-full' style={{ backgroundColor: \"#eee\" }}>\n <path fill=\"#ccc\" d=\"M 104.68731,56.689353 C 102.19435,80.640493 93.104981,97.26875 74.372196,97.26875 55.639402,97.26875 46.988823,82.308034 44.057005,57.289941 41.623314,34.938838 55.639402,15.800152 74.372196,15.800152 c 18.732785,0 32.451944,18.493971 30.315114,40.889201 z\" />\n <path fill=\"#ccc\" d=\"M 92.5675 89.6048 C 90.79484 93.47893 89.39893 102.4504 94.86478 106.9039 C 103.9375 114.2963 106.7064 116.4723 118.3117 118.9462 C 144.0432 124.4314 141.6492 138.1543 146.5244 149.2206 L 4.268444 149.1023 C 8.472223 138.6518 6.505799 124.7812 32.40051 118.387 C 41.80992 116.0635 45.66513 113.8823 53.58659 107.0158 C 58.52744 102.7329 57.52583 93.99267 56.43084 89.26926 C 52.49275 88.83011 94.1739 88.14054 92.5675 89.6048 z\" />\n </svg>\n </div>\n }\n </label>\n\n : <div className='tw-w-20 tw-flex tw-items-center tw-justify-center'>\n <span className=\"tw-loading tw-loading-spinner\"></span>\n </div>\n\n }\n <ColorPicker color={color} onChange={setColor} className={\"-tw-left-6 tw-top-14 -tw-mr-6\"} />\n <TextInput placeholder=\"Name\" defaultValue={user?.first_name ? user.first_name : \"\"} updateFormValue={(v) => setName(v)} containerStyle='tw-grow tw-ml-6 tw-my-auto ' />\n </div>\n\n <div className=\"tw-grid tw-grid-cols-1 tw-md:grid-cols-1 tw-gap-6 tw-pt-6 tw-pb-6\">\n <TextAreaInput placeholder=\"About me, Contact, #Tags, ...\" defaultValue={user?.description ? user.description : \"\"} updateFormValue={(v) => setText(v)} inputStyle='tw-h-64' />\n </div>\n\n <div className=\"tw-mt-8\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </TitleCard>\n </div>\n </main>\n <DialogModal\n title=\"\"\n isOpened={cropModalOpen}\n onClose={() => {\n setCropModalOpen(false);\n setImage(\"\");\n }}>\n <ReactCrop crop={crop} onChange={(c) => setCrop(c)} aspect={1} >\n <img src={image} ref={imgRef} onLoad={onImageLoad} />\n </ReactCrop>\n <button className={`tw-btn tw-btn-primary`} onClick={() => {\n setCropping(true);\n setCropModalOpen(false);\n renderCrop();\n }}>Select</button>\n </DialogModal>\n </div>\n )\n}\n","import * as React from 'react'\nimport { decodeTag } from '../../Utils/FormatTags'\nimport { Tag } from '../../types'\n\nexport const TagView = ({tag, heighlight, onClick} : {tag: Tag, heighlight?: boolean, onClick?: (e)=> void}) => {\n return (\n // Use your imagination to render suggestions.\n\n <div key={tag.name} onClick={onClick} className={`tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-h-[2.75em] tw-mt-3 tw-mr-4 tw-cursor-pointer tw-w-fit ${heighlight && 'tw-border-primary tw-shadow-te-primary'}`} style={{ backgroundColor: tag.color ? tag.color : \"#666\" }}>\n <div className=\"tw-card-actions tw-justify-end\">\n </div><b>{decodeTag(tag.name)}</b>\n </div>\n\n )\n}\n","import * as React from 'react'\nimport { MapOverlayPage } from '../Templates'\nimport { useItems } from '../Map/hooks/useItems'\nimport { useLocation, useNavigate } from 'react-router-dom'\nimport { useEffect, useState } from 'react';\nimport { Item, Tag, UserItem } from '../../types';\nimport { getValue } from '../../Utils/GetValue';\nimport { useMap } from 'react-leaflet';\nimport { LatLng } from 'leaflet';\nimport { TextView } from '../Map';\nimport useWindowDimensions from '../Map/hooks/useWindowDimension';\nimport { TagView } from '../Templates/TagView';\nimport { useTags } from '../Map/hooks/useTags';\nimport { useAuth } from '../Auth';\nimport { useAddFilterTag } from '../Map/hooks/useFilter';\n\nexport function OverlayProfile() {\n\n const location = useLocation();\n const items = useItems();\n const [item, setItem] = useState<Item>({} as Item)\n const map = useMap();\n const windowDimension = useWindowDimensions();\n\n const tags = useTags();\n const { user } = useAuth();\n\n const navigate = useNavigate();\n\n const [owner, setOwner] = useState<UserItem>();\n const [offers, setOffers] = useState<Array<Tag>>([]);\n const [needs, setNeeds] = useState<Array<Tag>>([]);\n\n const [activeTab, setActiveTab] = useState<number>(1);\n\n\n const addFilterTag = useAddFilterTag();\n\n\n\n useEffect(() => {\n const itemId = location.pathname.split(\"/\")[2];\n const item = items.find(i => i.id === itemId);\n item && setItem(item);\n\n const bounds = map.getBounds();\n const x = bounds.getEast() - bounds.getWest()\n if (windowDimension.width > 768)\n if (item?.position.coordinates[0])\n map.setView(new LatLng(item?.position.coordinates[1]!, item?.position.coordinates[0]! + x / 4))\n }, [location, items, activeTab])\n\n\n useEffect(() => {\n setOffers([]);\n setNeeds([]);\n setOwner(undefined);\n item?.layer?.itemOwnerField && setOwner(getValue(item, item.layer?.itemOwnerField));\n item.layer?.itemOffersField && getValue(item, item.layer.itemOffersField).map(o => {\n const tag = tags.find(t => t.id === o.tags_id);\n tag && setOffers(current => [...current, tag])\n })\n item.layer?.itemNeedsField && getValue(item, item.layer.itemNeedsField).map(n => {\n const tag = tags.find(t => t.id === n.tags_id);\n tag && setNeeds(current => [...current, tag])\n })\n }, [item])\n\n\n\n\n return (\n <MapOverlayPage className='tw-mx-4 tw-mt-4 tw-max-h-[calc(100dvh-96px)] tw-h-[calc(100dvh-96px)] md:tw-w-[calc(50%-32px)] tw-w-[calc(100%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0'>\n {item &&\n <>\n <div className='tw-flex tw-flex-row'>\n <div className=\"tw-grow\">\n <p className=\"tw-text-4xl\">{item.layer?.itemAvatarField && getValue(item, item.layer.itemAvatarField) && <img className='tw-h-20 tw-rounded-full tw-inline' src={`https://api.utopia-lab.org/assets/${getValue(item, item.layer.itemAvatarField)}?width=160&heigth=160`}></img>} {item.layer?.itemNameField && getValue(item, item.layer.itemNameField)}</p>\n </div>\n {owner?.id === user?.id && owner?.id ?\n <a className='tw-self-center tw-btn tw-btn-sm tw-mr-4 tw-cursor-pointer' onClick={() => navigate(\"/profile-settings\")}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"tw-h-5 tw-w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z\" />\n </svg>\n </a> : \"\"\n }\n </div>\n\n\n\n\n <div className='tw-h-full'>\n\n <div role=\"tablist\" className=\"tw-tabs tw-tabs-lifted tw-mt-2 tw-mb-2\">\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className={`tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]`} aria-label=\"Vision\" checked={activeTab == 1 && true} onChange={() => setActiveTab(1)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-268px)] tw-overflow-y-auto fade tw-pt-2 tw-pb-1\">\n <TextView item={item} />\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab tw-min-w-[10em] [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Offers & Needs\" checked={activeTab == 2 && true} onChange={() => setActiveTab(2)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-268px)] tw-overflow-y-auto fade tw-pt-4 tw-pb-1\" >\n <div className='tw-h-full'>\n <div className='tw-grid tw-grid-cols-1'>\n {\n offers.length > 0 ?\n <div className='tw-col-span-1'>\n <h3 className='-tw-mb-2'>Offers</h3>\n < div className='tw-flex tw-flex-wrap tw-mb-4'>\n {\n offers.map(o => <TagView key={o?.id} tag={o} onClick={() => addFilterTag(o)} />)\n }\n </div>\n </div> : \"\"\n }\n {\n needs.length > 0 ?\n <div className='tw-col-span-1'>\n <h3 className='-tw-mb-2 tw-col-span-1'>Needs</h3>\n < div className='tw-flex tw-flex-wrap tw-mb-4'>\n {\n needs.map(n => <TagView key={n?.id} tag={n} onClick={() => addFilterTag(n)} />)\n }\n </div>\n </div> : \"\"\n }\n </div>\n </div>\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Contact\" checked={activeTab == 3 && true} onChange={() => setActiveTab(3)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-h-[calc(100dvh-268px)] tw-overflow-y-auto fade tw-pt-2 tw-pb-1\">\n <TextView item={item} itemTextField='user_created.contact' />\n </div>\n </div>\n\n\n\n\n </div>\n </>\n }\n </MapOverlayPage >\n )\n}\n\n\n","import * as React from 'react'\nimport { useEffect } from 'react';\nimport { decodeTag } from '../../Utils/FormatTags';\nimport { TagView } from '../Templates/TagView';\n\nexport const Autocomplete = ({ inputProps, suggestions, onSelected, pushFilteredSuggestions, setFocus }: { inputProps: any, suggestions: Array<any>, onSelected: (suggestion) => void, pushFilteredSuggestions?: Array<any>, setFocus?: boolean }) => {\n\n const [filteredSuggestions, setFilteredSuggestions] = React.useState<Array<any>>([]);\n const [heighlightedSuggestion, setHeighlightedSuggestion] = React.useState<number>(0);\n\n\n useEffect(() => {\n pushFilteredSuggestions && setFilteredSuggestions(pushFilteredSuggestions)\n }, [pushFilteredSuggestions])\n\n useEffect(() => {\n setFocus && inputRef.current?.focus();\n }, [setFocus])\n\n const inputRef = React.useRef<HTMLInputElement>();\n\n\n const getSuggestionValue = suggestion => suggestion.name;\n\n const getSuggestions = value => {\n const inputValue = value.trim().toLowerCase();\n const inputLength = inputValue.length;\n\n return inputLength === 0 ? [] : suggestions.filter(tag =>\n tag.name.toLowerCase().slice(0, inputLength) === inputValue\n );\n };\n\n const handleChange = (e) => {\n setFilteredSuggestions(getSuggestions(e.target.value))\n\n // Call the parent's onChange handler, if it exists\n if (inputProps.onChange) {\n inputProps.onChange(e);\n }\n };\n\n\n function handleSuggestionClick(suggestion) {\n onSelected(suggestion)\n }\n\n const handleKeyDown = (event) => { \n switch (event.key) {\n case 'ArrowDown':\n heighlightedSuggestion < filteredSuggestions.length-1 && setHeighlightedSuggestion(current => current +1)\n break;\n case 'ArrowUp':\n heighlightedSuggestion>0 && setHeighlightedSuggestion(current => current -1)\n break;\n case 'Enter':\n if(filteredSuggestions.length > 0) {\n onSelected(filteredSuggestions[heighlightedSuggestion]);\n setHeighlightedSuggestion(0);\n }\n filteredSuggestions.length == 0 && inputProps.onKeyDown(event);\n break;\n default:\n inputProps.onKeyDown(event);\n break;\n }\n }\n\n return (\n <div>\n <input ref={inputRef} {...inputProps} type=\"text\" onChange={(e) => handleChange(e)} onKeyDown={handleKeyDown}/>\n <ul className={`tw-absolute tw-z-[4000] ${filteredSuggestions.length>0 && 'tw-bg-base-100 tw-rounded-xl tw-p-2'}`}>\n {filteredSuggestions.map((suggestion, index) => (\n <li key={index} onClick={() => handleSuggestionClick(suggestion)}><TagView heighlight={index == heighlightedSuggestion} tag={suggestion}></TagView></li>\n ))}\n </ul>\n </div>\n )\n}\n","import * as React from 'react'\nimport { useState } from 'react';\nimport { useTags } from '../Map/hooks/useTags';\nimport { Tag } from '../../types';\nimport { Autocomplete } from '../Input/Autocomplete';\nimport { randomColor } from '../../Utils/RandomColor';\nimport { decodeTag, encodeTag } from '../../Utils/FormatTags';\n\nexport const TagsWidget = ({placeholder, containerStyle, defaultTags, onUpdate}) => {\n\n const [input, setInput] = useState('');\n const [isKeyReleased, setIsKeyReleased] = useState(false);\n const tags = useTags();\n const [pushFilteredSuggestions, setPushFilteredSuggestions] = useState<Array<any>>([]);\n\n const [focusInput, setFocusInput] = useState<boolean>(false);\n\n\n const onChange = (e) => {\n const { value } = e.target;\n setInput(value);\n };\n\n const onKeyDown = (e) => {\n const { key } = e;\n const trimmedInput = input.trim();\n\n if ((key === 'Enter' || key === ',' ) && trimmedInput.length && !defaultTags.some(tag => tag.name.toLocaleLowerCase() === trimmedInput.toLocaleLowerCase())) {\n e.preventDefault();\n const newTag = tags.find(t => t.name === trimmedInput.toLocaleLowerCase())\n newTag && onUpdate(prevState => [...prevState, newTag]);\n !newTag && onUpdate(prevState => [...prevState, { id: crypto.randomUUID(), name: encodeTag(trimmedInput), color: randomColor() }]);\n setInput('');\n setPushFilteredSuggestions([]);\n }\n\n if (key === \"Backspace\" && !input.length && defaultTags.length && isKeyReleased) {\n const defaultTagsCopy = [...defaultTags];\n const poppedTag = defaultTagsCopy.pop();\n e.preventDefault();\n onUpdate(defaultTagsCopy);\n poppedTag && setInput(poppedTag.name);\n }\n\n setIsKeyReleased(false);\n };\n\n const onKeyUp = () => {\n setIsKeyReleased(true);\n }\n\n const deleteTag = (tag) => {\n onUpdate(prevState => prevState.filter((t) => t !== tag))\n }\n\n\n const onSelected = (tag) => {\n if(!defaultTags.some(t => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())) {\n const newTag = tags.find(t => t.name.toLocaleLowerCase() === tag.name.toLocaleLowerCase())\n newTag && onUpdate(prevState => [...prevState, newTag]);\n !newTag && onUpdate(prevState => [...prevState, { id: crypto.randomUUID(), name: tag.name.toLocaleLowerCase(), color: randomColor() }]);\n setInput('');\n setPushFilteredSuggestions([]);\n }\n }\n\n const inputProps = {\n value: input,\n placeholder: placeholder,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n onChange: onChange,\n className: 'tw-bg-transparent tw-w-fit tw-mt-5 tw-h-fit'\n }\n\n return (\n <div onClick={()=> {\n setFocusInput(true);\n setTimeout(()=> {\n setFocusInput(false)\n }, 200)\n }} className={`tw-input tw-input-bordered tw-cursor-text ${containerStyle}`}>\n <div className='tw-flex tw-flex-wrap tw-h-fit'>\n {defaultTags.map((tag) => (\n <div key={tag.name} className='tw-rounded-2xl tw-text-white tw-p-2 tw-px-4 tw-shadow-xl tw-card tw-h-[2.75em] tw-mt-3 tw-mr-4' style={{ backgroundColor: tag.color ? tag.color : \"#666\" }}>\n <div className=\"tw-card-actions tw-justify-end\">\n <label className=\"tw-btn tw-btn-xs tw-btn-circle tw-absolute tw--right-2 tw--top-2 tw-bg-white tw-text-gray-600\" onClick={() => (deleteTag(tag))}>βœ•</label>\n </div><b>{decodeTag(tag.name)}</b>\n </div>\n\n ))}\n <Autocomplete suggestions={tags} pushFilteredSuggestions={pushFilteredSuggestions} setFocus={focusInput} inputProps={inputProps} onSelected={(tag) => onSelected(tag)}/>\n </div>\n </div>\n )\n}","import * as React from 'react'\nimport { useItems, useUpdateItem } from '../Map/hooks/useItems'\nimport { useState } from 'react';\nimport { getValue } from '../../Utils/GetValue';\nimport ReactCrop, { Crop, centerCrop, makeAspectCrop } from 'react-image-crop';\nimport { toast } from 'react-toastify';\nimport { useAssetApi } from '../AppShell/hooks/useAssets';\nimport { useAuth } from '../Auth';\nimport { TextInput, TextAreaInput } from '../Input';\nimport { ColorPicker } from './ColorPicker';\nimport DialogModal from '../Templates/DialogModal';\nimport { hashTagRegex } from '../../Utils/HashTagRegex';\nimport { useAddTag, useTags } from '../Map/hooks/useTags';\nimport { randomColor } from '../../Utils/RandomColor';\nimport { useNavigate } from 'react-router-dom';\nimport { Tag, UserItem } from '../../types';\nimport { MapOverlayPage } from '../Templates';\nimport { TagsWidget } from './TagsWidget';\nimport { decodeTag, encodeTag } from '../../Utils/FormatTags';\n\n\nexport function OverlayProfileSettings() {\n\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [name, setName] = useState<string>(\"\");\n const [text, setText] = useState<string>(\"\");\n const [avatar, setAvatar] = useState<string>(\"\");\n const [color, setColor] = useState<string>(\"\");\n const [offers, setOffers] = useState<Array<Tag>>([]);\n const [needs, setNeeds] = useState<Array<Tag>>([]);\n const [contact, setContact] = useState<string>(\"\");\n\n const [activeTab, setActiveTab] = useState<number>(1);\n\n\n const [crop, setCrop] = useState<Crop>();\n const [image, setImage] = useState<string>(\"\");\n const [cropModalOpen, setCropModalOpen] = useState<boolean>(false);\n const [cropping, setCropping] = useState<boolean>(false);\n\n const assetsApi = useAssetApi();\n const items = useItems();\n const updateItem = useUpdateItem();\n\n const tags = useTags();\n const addTag = useAddTag();\n const navigate = useNavigate();\n\n React.useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setName(user?.first_name ? user.first_name : \"\");\n setText(user?.description ? user.description : \"\");\n setAvatar(user?.avatar ? user?.avatar : \"\");\n setColor(user?.color ? user.color : \"#aabbcc\");\n setOffers([]);\n setNeeds([]);\n user?.offers.map(o=> {\n const offer = tags.find(t => t.id === o.tags_id);\n offer && setOffers(current => [...current,offer])\n })\n user?.needs.map(o=> {\n const need = tags.find(t => t.id === o.tags_id);\n need && setNeeds(current => [...current,need])\n })\n setContact(user?.contact ? user.contact : \"\");\n }, [user])\n\n const imgRef = React.useRef<HTMLImageElement>(null)\n\n const onImageChange = (event) => {\n if (event.target.files && event.target.files[0]) {\n setImage(URL.createObjectURL(event.target.files[0]));\n }\n setCropModalOpen(true);\n }\n\n function onImageLoad(e: React.SyntheticEvent<HTMLImageElement>) {\n const { width, height } = e.currentTarget\n\n setCrop(centerAspectCrop(width, height, 1))\n }\n\n\n // This is to demonstate how to make and center a % aspect crop\n // which is a bit trickier so we use some helper functions.\n function centerAspectCrop(\n mediaWidth: number,\n mediaHeight: number,\n aspect: number,\n ) {\n return centerCrop(\n makeAspectCrop(\n {\n unit: 'px',\n width: mediaWidth / 2,\n },\n aspect,\n mediaWidth,\n mediaHeight,\n ),\n mediaWidth,\n mediaHeight,\n )\n }\n\n async function renderCrop() {\n // get the image element\n const image = imgRef.current;\n if (crop && image) {\n\n const scaleX = image.naturalWidth / image.width\n const scaleY = image.naturalHeight / image.height\n\n // create a canvas element to draw the cropped image\n const canvas = new OffscreenCanvas(\n crop.width * scaleX,\n crop.height * scaleY,\n )\n const ctx = canvas.getContext(\"2d\");\n const pixelRatio = window.devicePixelRatio;\n canvas.width = crop.width * pixelRatio * scaleX;\n canvas.height = crop.height * pixelRatio * scaleY;\n\n if (ctx) {\n ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n\n ctx.drawImage(\n image,\n crop.x * scaleX,\n crop.y * scaleY,\n crop.width * scaleX,\n crop.height * scaleY,\n 0,\n 0,\n crop.width * scaleX,\n crop.height * scaleY\n );\n }\n const blob = await canvas.convertToBlob();\n await resizeBlob(blob);\n setCropping(false);\n setImage(\"\");\n }\n }\n\n async function resizeBlob(blob) {\n var img = new Image();\n img.src = URL.createObjectURL(blob);\n await img.decode();\n const canvas = new OffscreenCanvas(\n 400,\n 400\n )\n var ctx = canvas.getContext(\"2d\");\n ctx?.drawImage(img, 0, 0, 400, 400);\n const resizedBlob = await canvas.convertToBlob()\n const asset = await assetsApi.upload(resizedBlob, \"test\");\n setAvatar(asset.id)\n }\n\n const onUpdateUser = async () => {\n let changedUser = {} as UserItem;\n\n let offer_updates : Array<any> = [];\n //check for new offers\n offers.map(o => {\n const existingOffer = user?.offers.find(t => t.tags_id === o.id)\n existingOffer && offer_updates.push(existingOffer.id)\n if(!existingOffer && !tags.some(t => t.id === o.id)) addTag({...o,offer_or_need: true})\n !existingOffer && offer_updates.push({directus_user_id: user?.id, tags_id: o.id})\n });\n\n let needs_updates : Array<any> = [];\n\n needs.map(n => {\n const existingNeed = user?.needs.find(t => t.tags_id === n.id)\n existingNeed && needs_updates.push(existingNeed.id)\n !existingNeed && needs_updates.push({directus_user_id: user?.id, tags_id: n.id})\n !existingNeed && !tags.some(t => t.id === n.id) && addTag({...n,offer_or_need: true})\n });\n\n\n changedUser = { id: id, first_name: name, description: text, contact: contact, color: color, ...avatar.length > 10 && { avatar: avatar }, ... offers.length > 0 && {offers: offer_updates}, ... needs.length > 0 && {needs: needs_updates} };\n // update profile item in current state\n const item = items.find(i => i.layer?.itemOwnerField && getValue(i, i.layer?.itemOwnerField).id === id);\n\n let offer_state : Array<any> = [];\n let needs_state : Array<any> = [];\n\n await offers.map(o => {\n offer_state.push({directus_user_id: user?.id, tags_id: o.id})\n });\n\n await needs.map(n => {\n needs_state.push({directus_user_id: user?.id, tags_id: n.id})\n });\n\n\n if (item && item.layer && item.layer.itemOwnerField) item[item.layer.itemOwnerField] = {... changedUser, offers: offer_state, needs: needs_state};\n // add new hashtags from profile text\n text.toLocaleLowerCase().match(hashTagRegex)?.map(tag => {\n if (!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) {\n addTag({ id: crypto.randomUUID(), name: encodeTag(tag.slice(1).toLocaleLowerCase()), color: randomColor()})\n }\n });\n\n\n toast.promise(\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => item && updateItem(item))\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <>\n <MapOverlayPage backdrop className='tw-mx-4 tw-mt-4 tw-mb-12 tw-overflow-x-hidden tw-max-h-[calc(100dvh-96px)] !tw-h-[calc(100dvh-96px)] tw-w-[calc(100%-32px)] md:tw-w-[calc(50%-32px)] tw-max-w-3xl !tw-left-auto tw-top-0 tw-bottom-0'>\n <div className='tw-flex tw-flex-col tw-h-full'>\n <div className=\"tw-flex\">\n {!cropping ?\n <label className=\"custom-file-upload\">\n <input type=\"file\" accept=\"image/*\" className=\"tw-file-input tw-w-full tw-max-w-xs\" onChange={onImageChange} />\n <div className='button tw-btn tw-btn-lg tw-btn-circle tw-animate-none'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth=\"1.5\" stroke=\"currentColor\" className=\"tw-w-6 tw-h-6\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\" />\n </svg>\n </div>\n {avatar ?\n <div className='tw-h-20 tw-w-20'>\n <img src={assetsApi.url + avatar + \"?access_token=\" + token} className=' tw-rounded-full' />\n </div>\n :\n <div className='tw-h-20 tw-w-20'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" viewBox=\"0 0 150 150\" className='tw-w-20 tw-h-20 tw-rounded-full' style={{ backgroundColor: \"#eee\" }}>\n <path fill=\"#ccc\" d=\"M 104.68731,56.689353 C 102.19435,80.640493 93.104981,97.26875 74.372196,97.26875 55.639402,97.26875 46.988823,82.308034 44.057005,57.289941 41.623314,34.938838 55.639402,15.800152 74.372196,15.800152 c 18.732785,0 32.451944,18.493971 30.315114,40.889201 z\" />\n <path fill=\"#ccc\" d=\"M 92.5675 89.6048 C 90.79484 93.47893 89.39893 102.4504 94.86478 106.9039 C 103.9375 114.2963 106.7064 116.4723 118.3117 118.9462 C 144.0432 124.4314 141.6492 138.1543 146.5244 149.2206 L 4.268444 149.1023 C 8.472223 138.6518 6.505799 124.7812 32.40051 118.387 C 41.80992 116.0635 45.66513 113.8823 53.58659 107.0158 C 58.52744 102.7329 57.52583 93.99267 56.43084 89.26926 C 52.49275 88.83011 94.1739 88.14054 92.5675 89.6048 z\" />\n </svg>\n </div>\n }\n </label>\n\n : <div className='tw-w-20 tw-flex tw-items-center tw-justify-center'>\n <span className=\"tw-loading tw-loading-spinner\"></span>\n </div>\n\n }\n <ColorPicker color={color} onChange={setColor} className={\"-tw-left-6 tw-top-14 -tw-mr-6\"} />\n <TextInput placeholder=\"Name\" defaultValue={user?.first_name ? user.first_name : \"\"} updateFormValue={(v) => setName(v)} containerStyle='tw-grow tw-ml-6 tw-my-auto ' />\n </div>\n\n\n <div role=\"tablist\" className=\"tw-tabs tw-tabs-lifted tw-mt-4\">\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className={`tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]`} aria-label=\"Vision\" checked={activeTab == 1 && true} onChange={() => setActiveTab(1)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56\">\n <TextAreaInput placeholder=\"My Vision...\" defaultValue={user?.description ? user.description : \"\"} updateFormValue={(v) => setText(v)} containerStyle='tw-h-full' inputStyle='tw-h-full tw-border-t-0 tw-rounded-tl-none' />\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab tw-min-w-[10em] [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Offers & Needs\" checked={activeTab == 2 && true} onChange={() => setActiveTab(2)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-rounded-box tw-pt-4 tw-h-[calc(100dvh-332px)] tw-min-h-56\">\n <div className='tw-h-full'>\n <div className='tw-w-full tw-h-[calc(50%-0.75em)] tw-mb-4'>\n <TagsWidget defaultTags={offers} onUpdate={(v)=>setOffers(v)} placeholder=\"enter your offers\" containerStyle='tw-bg-transparent tw-w-full tw-h-full tw-mt-3 tw-text-xs tw-h-[calc(100%-1rem)] tw-min-h-[5em] tw-pb-2 tw-overflow-auto'/>\n </div>\n <div className='tw-w-full tw-h-[calc(50%-0.75em)] '>\n <TagsWidget defaultTags={needs} onUpdate={(v)=>setNeeds(v)} placeholder=\"enter your needs\" containerStyle='tw-bg-transparent tw-w-full tw-h-full tw-mt-3 tw-text-xs tw-h-[calc(100%-1rem)] tw-min-h-[5em] tw-pb-2 tw-overflow-auto'/>\n </div>\n </div>\n </div>\n\n <input type=\"radio\" name=\"my_tabs_2\" role=\"tab\" className=\"tw-tab [--tab-border-color:var(--fallback-bc,oklch(var(--bc)/0.2))]\" aria-label=\"Contact\" checked={activeTab == 3 && true} onChange={() => setActiveTab(3)} />\n <div role=\"tabpanel\" className=\"tw-tab-content tw-bg-base-100 tw-border-[var(--fallback-bc,oklch(var(--bc)/0.2))] tw-rounded-box tw-h-[calc(100dvh-332px)] tw-min-h-56\">\n <TextAreaInput placeholder=\"Contact ...\" defaultValue={user?.contact ? user.contact : \"\"} updateFormValue={(v) => setContact(v)} containerStyle='tw-h-full' inputStyle='tw-h-full tw-border-t-0 ' />\n </div>\n </div>\n\n <div className=\"tw-mt-4 tw-mb-4\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </div>\n\n </MapOverlayPage>\n <DialogModal\n title=\"\"\n isOpened={cropModalOpen}\n onClose={() => {\n setCropModalOpen(false);\n setImage(\"\");\n }}>\n <ReactCrop crop={crop} onChange={(c) => setCrop(c)} aspect={1} >\n <img src={image} ref={imgRef} onLoad={onImageLoad} />\n </ReactCrop>\n <button className={`tw-btn tw-btn-primary`} onClick={() => {\n setCropping(true);\n setCropModalOpen(false);\n renderCrop();\n }}>Select</button>\n </DialogModal>\n </>\n )\n}\n\n\n","import * as React from 'react'\nimport { CardPage, MapOverlayPage } from '../Templates'\nimport { useItems } from '../Map/hooks/useItems'\nimport { useLocation, useNavigate } from 'react-router-dom'\nimport { useState } from 'react';\nimport { Item, UserItem } from '../../types';\nimport { getValue } from '../../Utils/GetValue';\nimport { useMap } from 'react-leaflet';\nimport { LatLng } from 'leaflet';\nimport { TextView } from '../Map';\nimport useWindowDimensions from '../Map/hooks/useWindowDimension';\nimport { toast } from 'react-toastify';\nimport { useAuth } from '../Auth';\nimport { TextInput } from '../Input';\n\nexport function OverlayUserSettings() {\n const { user, updateUser, loading, token } = useAuth();\n\n const [id, setId] = useState<string>(\"\");\n const [email, setEmail] = useState<string>(\"\");\n const [password, setPassword] = useState<string>(\"\");\n\n\n\n const [passwordChanged, setPasswordChanged] = useState<boolean>(false);\n\n\n\n const navigate = useNavigate();\n\n React.useEffect(() => {\n setId(user?.id ? user.id : \"\");\n setEmail(user?.email ? user.email : \"\");\n setPassword(user?.password ? user.password : \"\");\n }, [user])\n\n\n\n\n\n\n const onUpdateUser = () => {\n let changedUser = {} as UserItem;\n\n changedUser = { id: id, email: email, ...passwordChanged && { password: password } };\n\n\n toast.promise(\n\n updateUser(changedUser),\n {\n pending: 'updating Profile ...',\n success: 'Profile updated',\n error: {\n render({ data }) {\n return `${data}`\n },\n },\n })\n .then(() => navigate(\"/\"));\n }\n\n\n return (\n <MapOverlayPage backdrop className='tw-mx-4 tw-mt-4 tw-max-h-[calc(100dvh-96px)] tw-h-fit md:tw-w-[calc(50%-32px)] tw-w-[calc(100%-32px)] tw-max-w-xl !tw-left-auto tw-top-0 tw-bottom-0'>\n <div className={`tw-text-xl tw-font-semibold`}>Settings</div>\n <div className=\"tw-divider tw-mt-2\"></div>\n <div className=\"tw-grid tw-grid-cols-1 tw-gap-6\">\n <TextInput type='email' placeholder=\"new E-Mail\" defaultValue={user?.email ? user.email : \"\"} updateFormValue={(v) => setEmail(v)} />\n <TextInput type='password' placeholder=\"new Password\" defaultValue={user?.password ? user.password : \"\"} updateFormValue={(v) => {\n setPassword(v);\n setPasswordChanged(true);\n }} />\n {/* <ToogleInput updateType=\"syncData\" labelTitle=\"Sync Data\" defaultValue={true} updateFormValue={updateFormValue}/> */}\n </div>\n\n <div className=\"tw-mt-8\"><button className={loading ? \" tw-loading tw-btn-disabled tw-btn tw-btn-primary tw-float-right\" : \"tw-btn tw-btn-primary tw-float-right\"} onClick={() => onUpdateUser()}>Update</button></div>\n\n </MapOverlayPage>\n )\n}\n\n\n","import * as React from \"react\"\nimport { useEffect } from \"react\"\n\nexport function Modal({children, showOnStartup}:{children : React.ReactNode, showOnStartup?: boolean}) {\n\n useEffect(() => {\n if(showOnStartup)\n window.my_modal_3.showModal()\n }, [])\n\n\n return (\n <>\n\n {/* You can open the modal using ID.showModal() method */}\n <dialog id=\"my_modal_3\" className=\"tw-modal tw-transition-all tw-duration-300\">\n <form method=\"dialog\" className=\"tw-modal-box tw-transition-none\">\n <button className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-2 tw-top-2 focus:tw-outline-none\">βœ•</button>\n {children}\n </form>\n <form method=\"dialog\" className=\"tw-modal-backdrop\">\n <button>close</button>\n </form>\n </dialog>\n </>\n )\n}\n\n","import * as React from 'react'\nimport { useQuestsOpen, useSetQuestOpen } from './hooks/useQuests';\nimport { useAuth } from '../Auth';\nimport { useEffect } from 'react';\n\nexport function Quests() {\n\n const questsOpen = useQuestsOpen();\n const setQuestsOpen = useSetQuestOpen();\n const { isAuthenticated, user } = useAuth();\n\n useEffect(() => {\n setQuestsOpen(false);\n }, [])\n \n\n return (\n <>{questsOpen ?\n <div className=\"tw-card tw-w-48 tw-bg-base-100 tw-shadow-xl tw-absolute tw-bottom-4 tw-left-4 tw-z-[2000]\">\n <div className=\"tw-card-body tw-p-4 tw-pt-0\">\n <div className=\"tw-card-actions tw-justify-end\">\n <label className=\"tw-btn tw-btn-sm tw-btn-circle tw-btn-ghost tw-absolute tw-right-1 tw-top-1\" onClick={() => setQuestsOpen(false)}>βœ•</label>\n </div>\n <h2 className=\"tw-card-title tw-m-auto \">\n Level 1\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={1.5} stroke=\"#aaa\" className=\"tw-w-5 tw-h-5 tw-cursor-pointer\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\" />\n </svg>\n\n </h2>\n <ul className='tw-flex-row'>\n <li><label className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-0\"><input type=\"checkbox\" readOnly={true} className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={isAuthenticated ? isAuthenticated : false} /><span className='tw-text-sm tw-label-text tw-mx-2'>Sign Up</span></label></li>\n <li><label className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-0\"><input type=\"checkbox\" readOnly={true} className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={user?.description ? true : false} /><span className='tw-text-sm tw-label-text tw-mx-2'>Fill Profile</span></label></li>\n <li><label className=\"tw-label tw-justify-normal tw-pt-1 tw-pb-0\"><input type=\"checkbox\" readOnly={true} className=\"tw-checkbox tw-checkbox-xs tw-checkbox-success\" checked={user?.avatar ? true : false} /><span className='tw-text-sm tw-label-text tw-mx-2'>Upload Avatar</span></label></li>\n </ul>\n { /** <button className='tw-btn tw-btn-xs tw-btn-neutral tw-w-fit tw-self-center tw-mt-1'>Next &gt;</button> */\n } </div>\n </div>\n : \"\"\n }\n </>\n )\n\n\n}\n"],"names":["_jsx","_jsxs","_Fragment","L","LeafletPopup","ChevronRightIcon"],"mappings":"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"}