mirror of
https://github.com/utopia-os/utopia-ui.git
synced 2025-12-13 07:46:10 +00:00
reorganized types
This commit is contained in:
parent
4d52294758
commit
a450128b72
200
package-lock.json
generated
200
package-lock.json
generated
@ -33,6 +33,7 @@
|
||||
"devDependencies": {
|
||||
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
|
||||
"@rollup/plugin-alias": "^5.1.1",
|
||||
"@rollup/plugin-node-resolve": "^16.0.0",
|
||||
"@rollup/plugin-typescript": "^12.1.2",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
"@testing-library/react": "^16.2.0",
|
||||
@ -69,7 +70,6 @@
|
||||
"rollup": "^4.34.6",
|
||||
"rollup-plugin-dts": "^6.1.1",
|
||||
"rollup-plugin-postcss": "^4.0.2",
|
||||
"rollup-plugin-typescript2": "^0.32.1",
|
||||
"tailwindcss": "^3.3.1",
|
||||
"typedoc": "^0.27.6",
|
||||
"typedoc-plugin-coverage": "^3.4.1",
|
||||
@ -734,6 +734,30 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/plugin-node-resolve": {
|
||||
"version": "16.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz",
|
||||
"integrity": "sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@rollup/pluginutils": "^5.0.1",
|
||||
"@types/resolve": "1.20.2",
|
||||
"deepmerge": "^4.2.2",
|
||||
"is-module": "^1.0.0",
|
||||
"resolve": "^1.22.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rollup": "^2.78.0||^3.0.0||^4.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"rollup": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/plugin-typescript": {
|
||||
"version": "12.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz",
|
||||
@ -1336,6 +1360,12 @@
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/resolve": {
|
||||
"version": "1.20.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
|
||||
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/semver": {
|
||||
"version": "7.5.8",
|
||||
"dev": true,
|
||||
@ -2303,11 +2333,6 @@
|
||||
"node": ">= 10"
|
||||
}
|
||||
},
|
||||
"node_modules/commondir": {
|
||||
"version": "1.0.1",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"license": "MIT"
|
||||
@ -3810,34 +3835,6 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/find-cache-dir": {
|
||||
"version": "3.3.2",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"commondir": "^1.0.1",
|
||||
"make-dir": "^3.0.2",
|
||||
"pkg-dir": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/find-up": {
|
||||
"version": "4.1.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"locate-path": "^5.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/flat-cache": {
|
||||
"version": "3.0.4",
|
||||
"dev": true,
|
||||
@ -3920,19 +3917,6 @@
|
||||
"url": "https://www.patreon.com/infusion"
|
||||
}
|
||||
},
|
||||
"node_modules/fs-extra": {
|
||||
"version": "10.1.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"license": "ISC"
|
||||
@ -4589,6 +4573,12 @@
|
||||
"url": "https://github.com/sponsors/wooorm"
|
||||
}
|
||||
},
|
||||
"node_modules/is-module": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
|
||||
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/is-negative-zero": {
|
||||
"version": "2.0.3",
|
||||
"dev": true,
|
||||
@ -4875,17 +4865,6 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/jsx-ast-utils": {
|
||||
"version": "3.3.3",
|
||||
"dev": true,
|
||||
@ -4954,17 +4933,6 @@
|
||||
"node": ">= 12.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/locate-path": {
|
||||
"version": "5.0.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"p-locate": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"dev": true,
|
||||
@ -5058,20 +5026,6 @@
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/make-dir": {
|
||||
"version": "3.1.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"semver": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it": {
|
||||
"version": "14.1.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
|
||||
@ -5979,31 +5933,6 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/p-limit": {
|
||||
"version": "2.3.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"p-try": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/p-locate": {
|
||||
"version": "4.1.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"p-limit": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/p-queue": {
|
||||
"version": "6.6.2",
|
||||
"dev": true,
|
||||
@ -6030,14 +5959,6 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/p-try": {
|
||||
"version": "2.2.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/package-json-from-dist": {
|
||||
"version": "1.0.1",
|
||||
"dev": true,
|
||||
@ -6180,17 +6101,6 @@
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"find-up": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/possible-typed-array-names": {
|
||||
"version": "1.0.0",
|
||||
"dev": true,
|
||||
@ -7331,34 +7241,6 @@
|
||||
"postcss": "8.x"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-typescript2": {
|
||||
"version": "0.32.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rollup/pluginutils": "^4.1.2",
|
||||
"find-cache-dir": "^3.3.2",
|
||||
"fs-extra": "^10.0.0",
|
||||
"resolve": "^1.20.0",
|
||||
"tslib": "^2.4.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"rollup": ">=1.26.3",
|
||||
"typescript": ">=2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": {
|
||||
"version": "4.2.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"estree-walker": "^2.0.1",
|
||||
"picomatch": "^2.2.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/rollup-pluginutils": {
|
||||
"version": "2.8.2",
|
||||
"dev": true,
|
||||
@ -8497,14 +8379,6 @@
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
"version": "2.0.0",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.1.2",
|
||||
"dev": true,
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
"devDependencies": {
|
||||
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
|
||||
"@rollup/plugin-alias": "^5.1.1",
|
||||
"@rollup/plugin-node-resolve": "^16.0.0",
|
||||
"@rollup/plugin-typescript": "^12.1.2",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
"@testing-library/react": "^16.2.0",
|
||||
|
||||
@ -10,7 +10,7 @@ const __filename = fileURLToPath(import.meta.url)
|
||||
const __dirname = path.dirname(__filename)
|
||||
|
||||
const aliasConfig = alias({
|
||||
entries: [{ find: '#types', replacement: path.resolve(__dirname, 'types') }],
|
||||
entries: [{ find: '#types', replacement: path.resolve(__dirname, 'src/types') }],
|
||||
})
|
||||
|
||||
export default [
|
||||
|
||||
@ -2,7 +2,7 @@ import { ContextWrapper } from './ContextWrapper'
|
||||
import NavBar from './NavBar'
|
||||
import { SetAppState } from './SetAppState'
|
||||
|
||||
import type { AssetsApi } from '#types/AssetsApi'
|
||||
import type { AssetsApi } from '#src/types/AssetsApi'
|
||||
|
||||
export function AppShell({
|
||||
appName,
|
||||
|
||||
@ -6,7 +6,7 @@ import { toast } from 'react-toastify'
|
||||
import { useAuth } from '#components/Auth'
|
||||
import { useItems } from '#components/Map/hooks/useItems'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export default function NavBar({ appName, userType }: { appName: string; userType: string }) {
|
||||
const { isAuthenticated, user, logout } = useAuth()
|
||||
|
||||
@ -2,7 +2,7 @@ import { useEffect } from 'react'
|
||||
|
||||
import { useSetAppState } from './hooks/useAppState'
|
||||
|
||||
import type { AssetsApi } from '#types/AssetsApi'
|
||||
import type { AssetsApi } from '#src/types/AssetsApi'
|
||||
|
||||
export const SetAppState = ({
|
||||
assetsApi,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-empty-function */
|
||||
import { useCallback, useState, createContext, useContext } from 'react'
|
||||
|
||||
import type { AssetsApi } from '#types/AssetsApi'
|
||||
import type { AssetsApi } from '#src/types/AssetsApi'
|
||||
|
||||
interface AppState {
|
||||
assetsApi: AssetsApi
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-empty-function */
|
||||
import { useCallback, useState, createContext, useContext } from 'react'
|
||||
|
||||
import type { AssetsApi } from '#types/AssetsApi'
|
||||
import type { AssetsApi } from '#src/types/AssetsApi'
|
||||
|
||||
type UseAssetManagerResult = ReturnType<typeof useAssetsManager>
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { createContext, useState, useContext, useEffect } from 'react'
|
||||
|
||||
import type { UserApi } from '#types/UserApi'
|
||||
import type { UserItem } from '#types/UserItem'
|
||||
import type { UserApi } from '#src/types/UserApi'
|
||||
import type { UserItem } from '#src/types/UserItem'
|
||||
|
||||
interface AuthProviderProps {
|
||||
userApi: UserApi
|
||||
|
||||
@ -5,7 +5,7 @@ import { useItems } from '#components/Map/hooks/useItems'
|
||||
|
||||
import { useQuestsOpen, useSetQuestOpen } from './hooks/useQuests'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export function Quests() {
|
||||
const questsOpen = useQuestsOpen()
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { node, string } from 'prop-types'
|
||||
import { Children, cloneElement, isValidElement, useEffect } from 'react'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ItemForm = ({
|
||||
children,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { node, string } from 'prop-types'
|
||||
import { Children, cloneElement, isValidElement } from 'react'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ItemView = ({ children, item }: { children?: React.ReactNode; item?: Item }) => {
|
||||
return (
|
||||
|
||||
@ -28,9 +28,9 @@ import { useAddTag, useAllTagsLoaded, useGetItemTags, useTags } from './hooks/us
|
||||
import { ItemFormPopup } from './Subcomponents/ItemFormPopup'
|
||||
import { ItemViewPopup } from './Subcomponents/ItemViewPopup'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
import type { Popup } from 'leaflet'
|
||||
|
||||
export const Layer = ({
|
||||
|
||||
@ -4,8 +4,8 @@ import { useAuth } from '#components/Auth'
|
||||
|
||||
import { useSetPermissionData, useSetPermissionApi, useSetAdminRole } from './hooks/usePermissions'
|
||||
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { Permission } from '#types/Permission'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
import type { Permission } from '#src/types/Permission'
|
||||
|
||||
export function Permissions({
|
||||
data,
|
||||
|
||||
@ -29,7 +29,7 @@ import MarkerIconFactory from '#utils/MarkerIconFactory'
|
||||
import { LocateControl } from './LocateControl'
|
||||
import { SidebarControl } from './SidebarControl'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const SearchControl = () => {
|
||||
const windowDimensions = useWindowDimensions()
|
||||
|
||||
@ -19,8 +19,8 @@ import { useAddTag, useTags } from '#components/Map/hooks/useTags'
|
||||
import { hashTagRegex } from '#utils/HashTagRegex'
|
||||
import { randomColor } from '#utils/RandomColor'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemFormPopupProps } from '#types/ItemFormPopupProps'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemFormPopupProps } from '#src/types/ItemFormPopupProps'
|
||||
|
||||
export function ItemFormPopup(props: ItemFormPopupProps) {
|
||||
const [spinner, setSpinner] = useState(false)
|
||||
|
||||
@ -17,8 +17,8 @@ import { useHasUserPermission } from '#components/Map/hooks/usePermissions'
|
||||
import DialogModal from '#components/Templates/DialogModal'
|
||||
import { getValue } from '#utils/GetValue'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
|
||||
export function HeaderView({
|
||||
item,
|
||||
|
||||
@ -5,7 +5,7 @@ import { Link } from 'react-router-dom'
|
||||
import { useGetItemTags } from '#components/Map/hooks/useTags'
|
||||
import { getValue } from '#utils/GetValue'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const PopupButton = ({
|
||||
url,
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const PopupCheckboxInput = ({
|
||||
dataField,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
/* eslint-disable @typescript-eslint/prefer-optional-chain */
|
||||
import { TextInput } from '#components/Input'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
interface StartEndInputProps {
|
||||
item?: Item
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { TextAreaInput } from '#components/Input'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const PopupTextAreaInput = ({
|
||||
dataField,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { TextInput } from '#components/Input'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const PopupTextInput = ({
|
||||
dataField,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/* eslint-disable @typescript-eslint/prefer-optional-chain */
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const StartEndView = ({ item }: { item?: Item }) => {
|
||||
return (
|
||||
|
||||
@ -16,8 +16,8 @@ import { getValue } from '#utils/GetValue'
|
||||
import { hashTagRegex } from '#utils/HashTagRegex'
|
||||
import { fixUrls, mailRegex } from '#utils/ReplaceURLs'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
export const TextView = ({
|
||||
item,
|
||||
|
||||
@ -20,8 +20,8 @@ import { timeAgo } from '#utils/TimeAgo'
|
||||
import { HeaderView } from './ItemPopupComponents/HeaderView'
|
||||
import { TextView } from './ItemPopupComponents/TextView'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemFormPopupProps } from '#types/ItemFormPopupProps'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemFormPopupProps } from '#src/types/ItemFormPopupProps'
|
||||
|
||||
export interface ItemViewPopupProps {
|
||||
item: Item
|
||||
|
||||
@ -4,8 +4,8 @@ import { useLocation } from 'react-router-dom'
|
||||
import { useAddFilterTag, useFilterTags, useResetFilterTags } from './hooks/useFilter'
|
||||
import { useSetTagData, useSetTagApi, useTags } from './hooks/useTags'
|
||||
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
export function Tags({ data, api }: { data?: Tag[]; api?: ItemsApi<Tag> }) {
|
||||
const setTagData = useSetTagData()
|
||||
|
||||
@ -5,7 +5,7 @@ import { ContextWrapper } from '#components/AppShell/ContextWrapper'
|
||||
|
||||
import { UtopiaMapInner } from './UtopiaMapInner'
|
||||
|
||||
import type { UtopiaMapProps } from '#types/UtopiaMapProps'
|
||||
import type { UtopiaMapProps } from '#src/types/UtopiaMapProps'
|
||||
import 'react-toastify/dist/ReactToastify.css'
|
||||
|
||||
function UtopiaMap({
|
||||
|
||||
@ -36,8 +36,8 @@ import { TagsControl } from './Subcomponents/Controls/TagsControl'
|
||||
import { TextView } from './Subcomponents/ItemPopupComponents/TextView'
|
||||
import { SelectPosition } from './Subcomponents/SelectPosition'
|
||||
|
||||
import type { ItemFormPopupProps } from '#types/ItemFormPopupProps'
|
||||
import type { UtopiaMapProps } from '#types/UtopiaMapProps'
|
||||
import type { ItemFormPopupProps } from '#src/types/ItemFormPopupProps'
|
||||
import type { UtopiaMapProps } from '#src/types/UtopiaMapProps'
|
||||
import type { Feature, Geometry as GeoJSONGeometry } from 'geojson'
|
||||
|
||||
export function UtopiaMapInner({
|
||||
|
||||
@ -10,8 +10,8 @@ import { useNavigate } from 'react-router-dom'
|
||||
import { useLayers } from './useLayers'
|
||||
import useWindowDimensions from './useWindowDimension'
|
||||
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
type ActionType =
|
||||
| { type: 'ADD_TAG'; tag: Tag }
|
||||
|
||||
@ -10,8 +10,8 @@ import { toast } from 'react-toastify'
|
||||
|
||||
import { useAddLayer } from './useLayers'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
|
||||
type ActionType =
|
||||
| { type: 'ADD'; item: Item }
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-empty-function */
|
||||
import { useCallback, useReducer, createContext, useContext } from 'react'
|
||||
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
|
||||
interface ActionType {
|
||||
type: 'ADD LAYER'
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-empty-function */
|
||||
import { useCallback, useReducer, createContext, useContext } from 'react'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { Marker, Popup } from 'leaflet'
|
||||
|
||||
interface LeafletRef {
|
||||
|
||||
@ -10,11 +10,11 @@ import { useCallback, useReducer, createContext, useContext, useState } from 're
|
||||
|
||||
import { useAuth } from '#components/Auth/useAuth'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { Permission } from '#types/Permission'
|
||||
import type { PermissionAction } from '#types/PermissionAction'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
import type { Permission } from '#src/types/Permission'
|
||||
import type { PermissionAction } from '#src/types/PermissionAction'
|
||||
|
||||
type ActionType = { type: 'ADD'; permission: Permission } | { type: 'REMOVE'; id: string }
|
||||
|
||||
|
||||
@ -14,9 +14,9 @@ import { toast } from 'react-toastify'
|
||||
import { useUpdateItem } from './useItems'
|
||||
import { useHasUserPermission } from './usePermissions'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemFormPopupProps } from '#types/ItemFormPopupProps'
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemFormPopupProps } from '#src/types/ItemFormPopupProps'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
import type { Point } from 'geojson'
|
||||
import type { LatLng } from 'leaflet'
|
||||
|
||||
|
||||
@ -13,9 +13,9 @@ import { useCallback, useReducer, createContext, useContext, useState } from 're
|
||||
import { getValue } from '#utils/GetValue'
|
||||
import { hashTagRegex } from '#utils/HashTagRegex'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
type ActionType = { type: 'ADD'; tag: Tag } | { type: 'REMOVE'; id: string }
|
||||
|
||||
|
||||
@ -23,8 +23,8 @@ import { OnepagerForm } from './Templates/OnepagerForm'
|
||||
import { SimpleForm } from './Templates/SimpleForm'
|
||||
import { TabsForm } from './Templates/TabsForm'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
export function ProfileForm() {
|
||||
const [state, setState] = useState({
|
||||
|
||||
@ -29,9 +29,9 @@ import { OnepagerView } from './Templates/OnepagerView'
|
||||
import { SimpleView } from './Templates/SimpleView'
|
||||
import { TabsView } from './Templates/TabsView'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
export function ProfileView({ attestationApi }: { attestationApi?: ItemsApi<any> }) {
|
||||
const [item, setItem] = useState<Item>()
|
||||
|
||||
@ -12,7 +12,7 @@ import { HeaderView } from '#components/Map/Subcomponents/ItemPopupComponents/He
|
||||
import DialogModal from '#components/Templates/DialogModal'
|
||||
import { getValue } from '#utils/GetValue'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export function ActionButton({
|
||||
item,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
||||
import { TextInput } from '#components/Input'
|
||||
|
||||
import type { FormState } from '#types/FormState'
|
||||
import type { FormState } from '#src/types/FormState'
|
||||
|
||||
export const ContactInfoForm = ({
|
||||
state,
|
||||
|
||||
@ -8,7 +8,7 @@ import { Link } from 'react-router-dom'
|
||||
import { useAppState } from '#components/AppShell/hooks/useAppState'
|
||||
import { useItems } from '#components/Map/hooks/useItems'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ContactInfoView = ({ item, heading }: { item: Item; heading: string }) => {
|
||||
const appState = useAppState()
|
||||
|
||||
@ -10,7 +10,7 @@ import 'react-photo-album/rows.css'
|
||||
|
||||
import { useAppState } from '#components/AppShell/hooks/useAppState'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const GalleryView = ({ item }: { item: Item }) => {
|
||||
const [index, setIndex] = useState(-1)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import SocialShareBar from './SocialShareBar'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const GroupSubHeaderView = ({
|
||||
item,
|
||||
|
||||
@ -5,8 +5,8 @@ import { useEffect } from 'react'
|
||||
|
||||
import ComboBoxInput from '#components/Input/ComboBoxInput'
|
||||
|
||||
import type { FormState } from '#types/FormState'
|
||||
import type { Item } from '#types/Item'
|
||||
import type { FormState } from '#src/types/FormState'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
interface groupType {
|
||||
groupTypes_id: {
|
||||
|
||||
@ -10,7 +10,7 @@ import { useEffect } from 'react'
|
||||
import { useAppState } from '#components/AppShell/hooks/useAppState'
|
||||
import { getValue } from '#utils/GetValue'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export function LinkedItemsHeaderView({
|
||||
item,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
||||
import { useHasUserPermission } from '#components/Map/hooks/usePermissions'
|
||||
|
||||
import type { LayerProps } from '#types/LayerProps'
|
||||
import type { LayerProps } from '#src/types/LayerProps'
|
||||
|
||||
export function PlusButton({
|
||||
layer,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
||||
import { PopupStartEndInput } from '#components/Map'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ProfileStartEndForm = ({
|
||||
item,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { StartEndView } from '#components/Map'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ProfileStartEndView = ({ item }: { item: Item }) => {
|
||||
return (
|
||||
|
||||
@ -9,7 +9,7 @@ import { getValue } from '#utils/GetValue'
|
||||
|
||||
import { MarkdownHint } from './MarkdownHint'
|
||||
|
||||
import type { FormState } from '#types/FormState'
|
||||
import type { FormState } from '#src/types/FormState'
|
||||
|
||||
export const ProfileTextForm = ({
|
||||
state,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
import { TextView } from '#components/Map'
|
||||
import { getValue } from '#utils/GetValue'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ProfileTextView = ({
|
||||
item,
|
||||
|
||||
@ -11,7 +11,7 @@ import { useTags } from '#components/Map/hooks/useTags'
|
||||
import { decodeTag, encodeTag } from '#utils/FormatTags'
|
||||
import { randomColor } from '#utils/RandomColor'
|
||||
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
// eslint-disable-next-line react/prop-types
|
||||
export const TagsWidget = ({ placeholder, containerStyle, defaultTags, onUpdate }) => {
|
||||
|
||||
@ -8,8 +8,8 @@ import { GroupSubheaderForm } from '#components/Profile/Subcomponents/GroupSubhe
|
||||
import { ProfileStartEndForm } from '#components/Profile/Subcomponents/ProfileStartEndForm'
|
||||
import { ProfileTextForm } from '#components/Profile/Subcomponents/ProfileTextForm'
|
||||
|
||||
import type { FormState } from '#types/FormState'
|
||||
import type { Item } from '#types/Item'
|
||||
import type { FormState } from '#src/types/FormState'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
const componentMap = {
|
||||
groupSubheaders: GroupSubheaderForm,
|
||||
|
||||
@ -8,7 +8,7 @@ import { GroupSubHeaderView } from '#components/Profile/Subcomponents/GroupSubHe
|
||||
import { ProfileStartEndView } from '#components/Profile/Subcomponents/ProfileStartEndView'
|
||||
import { ProfileTextView } from '#components/Profile/Subcomponents/ProfileTextView'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
const componentMap = {
|
||||
groupSubheaders: GroupSubHeaderView,
|
||||
|
||||
@ -4,8 +4,8 @@ import { TextAreaInput } from '#components/Input'
|
||||
import { ContactInfoForm } from '#components/Profile/Subcomponents/ContactInfoForm'
|
||||
import { GroupSubheaderForm } from '#components/Profile/Subcomponents/GroupSubheaderForm'
|
||||
|
||||
import type { FormState } from '#types/FormState'
|
||||
import type { Item } from '#types/Item'
|
||||
import type { FormState } from '#src/types/FormState'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const OnepagerForm = ({
|
||||
item,
|
||||
|
||||
@ -4,7 +4,7 @@ import { TextView } from '#components/Map'
|
||||
import { ContactInfoView } from '#components/Profile/Subcomponents/ContactInfoView'
|
||||
import { GroupSubHeaderView } from '#components/Profile/Subcomponents/GroupSubHeaderView'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const OnepagerView = ({ item }: { item: Item }) => {
|
||||
return (
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { TextView } from '#components/Map'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const SimpleView = ({ item }: { item: Item }) => {
|
||||
return (
|
||||
|
||||
@ -18,8 +18,8 @@ import { LinkedItemsHeaderView } from '#components/Profile/Subcomponents/LinkedI
|
||||
import { TagView } from '#components/Templates/TagView'
|
||||
import { timeAgo } from '#utils/TimeAgo'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
export const TabsView = ({
|
||||
attestations,
|
||||
|
||||
@ -8,7 +8,7 @@ import { useAuth } from '#components/Auth'
|
||||
import { TextInput } from '#components/Input'
|
||||
import { MapOverlayPage } from '#components/Templates'
|
||||
|
||||
import type { UserItem } from '#types/UserItem'
|
||||
import type { UserItem } from '#src/types/UserItem'
|
||||
|
||||
export function UserSettings() {
|
||||
const { user, updateUser, loading /* token */ } = useAuth()
|
||||
|
||||
@ -15,7 +15,7 @@ import { encodeTag } from '#utils/FormatTags'
|
||||
import { hashTagRegex } from '#utils/HashTagRegex'
|
||||
import { randomColor } from '#utils/RandomColor'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
// eslint-disable-next-line promise/avoid-new
|
||||
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
||||
|
||||
@ -8,8 +8,8 @@ import { useItems } from '#components/Map/hooks/useItems'
|
||||
import { EmojiPicker } from './EmojiPicker'
|
||||
import { MapOverlayPage } from './MapOverlayPage'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { ItemsApi } from '#types/ItemsApi'
|
||||
import type { Item } from '#src/types/Item'
|
||||
import type { ItemsApi } from '#src/types/ItemsApi'
|
||||
|
||||
export const AttestationForm = ({ api }: { api?: ItemsApi<unknown> }) => {
|
||||
const items = useItems()
|
||||
|
||||
@ -5,7 +5,7 @@ import { useState } from 'react'
|
||||
|
||||
import { timeAgo } from '#utils/TimeAgo'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const DateUserInfo = ({ item }: { item: Item }) => {
|
||||
const [infoExpanded, setInfoExpanded] = useState<boolean>(false)
|
||||
|
||||
@ -13,7 +13,7 @@ import { getValue } from '#utils/GetValue'
|
||||
|
||||
import { DateUserInfo } from './DateUserInfo'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const ItemCard = ({
|
||||
i,
|
||||
|
||||
@ -13,7 +13,7 @@ import { getValue } from '#utils/GetValue'
|
||||
import { MapOverlayPage } from './MapOverlayPage'
|
||||
import { TagView } from './TagView'
|
||||
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
function groupAndCount(arr) {
|
||||
const grouped = arr.reduce((acc, obj) => {
|
||||
|
||||
@ -25,7 +25,7 @@ import { randomColor } from '#utils/RandomColor'
|
||||
import { ItemCard } from './ItemCard'
|
||||
import { MapOverlayPage } from './MapOverlayPage'
|
||||
|
||||
import type { Item } from '#types/Item'
|
||||
import type { Item } from '#src/types/Item'
|
||||
|
||||
export const OverlayItemsIndexPage = ({
|
||||
url,
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
import { decodeTag } from '#utils/FormatTags'
|
||||
|
||||
import type { Tag } from '#types/Tag'
|
||||
import type { Tag } from '#src/types/Tag'
|
||||
|
||||
export const TagView = ({
|
||||
tag,
|
||||
|
||||
@ -37,6 +37,8 @@ export {
|
||||
} from './Components/Templates'
|
||||
export { TextInput, TextAreaInput, SelectBox } from './Components/Input'
|
||||
|
||||
export * from './types'
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
my_modal_3: {
|
||||
|
||||
4
src/types/AssetsApi.d.ts
vendored
Normal file
4
src/types/AssetsApi.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export interface AssetsApi {
|
||||
upload(file: Blob, title: string): Promise<{ id: string }>
|
||||
url: string
|
||||
}
|
||||
20
src/types/FormState.d.ts
vendored
Normal file
20
src/types/FormState.d.ts
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
import type { Item } from './Item'
|
||||
import type { Tag } from './Tag'
|
||||
|
||||
export interface FormState {
|
||||
color: string
|
||||
id: string
|
||||
group_type: string
|
||||
status: string
|
||||
name: string
|
||||
subname: string
|
||||
text: string
|
||||
contact: string
|
||||
telephone: string
|
||||
next_appointment: string
|
||||
image: string
|
||||
marker_icon: string
|
||||
offers: Tag[]
|
||||
needs: Tag[]
|
||||
relations: Item[]
|
||||
}
|
||||
44
src/types/Item.d.ts
vendored
Normal file
44
src/types/Item.d.ts
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
import type { ItemsApi } from './ItemsApi'
|
||||
import type { LayerProps } from './LayerProps'
|
||||
import type { Relation } from './Relation'
|
||||
import type { UserItem } from './UserItem'
|
||||
import type { Point } from 'geojson'
|
||||
|
||||
export interface Item {
|
||||
id: string
|
||||
name: string
|
||||
text: string
|
||||
position?: Point
|
||||
date_created?: string
|
||||
date_updated?: string | null
|
||||
start?: string
|
||||
end?: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
api?: ItemsApi<any>
|
||||
tags?: string[]
|
||||
layer?: LayerProps
|
||||
relations?: Relation[]
|
||||
parent?: string
|
||||
subname?: string
|
||||
public_edit?: boolean
|
||||
slug?: string
|
||||
user_created?: UserItem
|
||||
image?: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
[key: string]: any
|
||||
/* constructor(
|
||||
id: string,
|
||||
name: string,
|
||||
text: string,
|
||||
position: Geometry,
|
||||
layer?: LayerProps,
|
||||
api?: ItemsApi<any>,
|
||||
) {
|
||||
this.id = id
|
||||
this.name = name
|
||||
this.text = text
|
||||
this.position = position
|
||||
this.layer = layer
|
||||
this.api = api
|
||||
} */
|
||||
}
|
||||
11
src/types/ItemFormPopupProps.d.ts
vendored
Normal file
11
src/types/ItemFormPopupProps.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
import type { Item } from './Item'
|
||||
import type { LayerProps } from './LayerProps'
|
||||
import type { LatLng } from 'leaflet'
|
||||
|
||||
export interface ItemFormPopupProps {
|
||||
position: LatLng
|
||||
layer: LayerProps
|
||||
item?: Item
|
||||
children?: React.ReactNode
|
||||
setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>
|
||||
}
|
||||
5
src/types/ItemType.d.ts
vendored
Normal file
5
src/types/ItemType.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
export interface ItemType {
|
||||
name: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
[key: string]: any
|
||||
}
|
||||
8
src/types/ItemsApi.d.ts
vendored
Normal file
8
src/types/ItemsApi.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
export interface ItemsApi<T> {
|
||||
getItems(): Promise<T[]>
|
||||
getItem?(id: string): Promise<T>
|
||||
createItem?(item: T): Promise<T>
|
||||
updateItem?(item: T): Promise<T>
|
||||
deleteItem?(id: string): Promise<boolean>
|
||||
collectionName?: string
|
||||
}
|
||||
42
src/types/LayerProps.d.ts
vendored
Normal file
42
src/types/LayerProps.d.ts
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
import type { Item } from './Item'
|
||||
import type { ItemFormPopupProps } from './ItemFormPopupProps'
|
||||
import type { ItemsApi } from './ItemsApi'
|
||||
import type { ItemType } from './ItemType'
|
||||
|
||||
export interface LayerProps {
|
||||
id?: string
|
||||
data?: Item[]
|
||||
children?: React.ReactNode
|
||||
name: string
|
||||
menuIcon: string
|
||||
menuColor: string
|
||||
menuText: string
|
||||
markerIcon: string
|
||||
markerShape: string
|
||||
markerDefaultColor: string
|
||||
markerDefaultColor2?: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
api?: ItemsApi<any>
|
||||
itemType: ItemType
|
||||
itemNameField?: string
|
||||
itemSubnameField?: string
|
||||
itemTextField?: string
|
||||
itemAvatarField?: string
|
||||
itemColorField?: string
|
||||
itemOwnerField?: string
|
||||
itemTagsField?: string
|
||||
itemLatitudeField?: string
|
||||
itemLongitudeField?: string
|
||||
itemOffersField?: string
|
||||
itemNeedsField?: string
|
||||
onlyOnePerOwner?: boolean
|
||||
customEditLink?: string
|
||||
customEditParameter?: string
|
||||
public_edit_items?: boolean
|
||||
listed?: boolean
|
||||
item_presets?: Record<string, unknown>
|
||||
setItemFormPopup?: React.Dispatch<React.SetStateAction<ItemFormPopupProps | null>>
|
||||
itemFormPopup?: ItemFormPopupProps | null
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
clusterRef?: any
|
||||
}
|
||||
13
src/types/Permission.d.ts
vendored
Normal file
13
src/types/Permission.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import type { PermissionAction } from './PermissionAction'
|
||||
import type { PermissionCondition } from './PermissionCondition'
|
||||
|
||||
export interface Permission {
|
||||
id?: string
|
||||
policy?: { name: string }
|
||||
collection: string
|
||||
action: PermissionAction
|
||||
permissions?: {
|
||||
// Optional, für spezifische Bedingungen wie `user_created`
|
||||
_and: PermissionCondition[]
|
||||
}
|
||||
}
|
||||
1
src/types/PermissionAction.d.ts
vendored
Normal file
1
src/types/PermissionAction.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export type PermissionAction = 'create' | 'read' | 'update' | 'delete'
|
||||
8
src/types/PermissionCondition.d.ts
vendored
Normal file
8
src/types/PermissionCondition.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
export interface PermissionCondition {
|
||||
user_created?: {
|
||||
_eq: string // Erwartet den speziellen Wert "$CURRENT_USER" oder eine spezifische UUID
|
||||
}
|
||||
public_edit?: {
|
||||
_eq: boolean // Erwartet den speziellen Wert "$CURRENT_USER" oder eine spezifische UUID
|
||||
}
|
||||
}
|
||||
10
src/types/Profile.d.ts
vendored
Normal file
10
src/types/Profile.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
import type { Geometry } from 'geojson'
|
||||
|
||||
export interface Profile {
|
||||
id?: string
|
||||
avatar?: string
|
||||
color?: string
|
||||
name: string
|
||||
text: string
|
||||
geoposition?: Geometry
|
||||
}
|
||||
5
src/types/Relation.d.ts
vendored
Normal file
5
src/types/Relation.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
export interface Relation {
|
||||
related_items_id: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
[key: string]: any
|
||||
}
|
||||
6
src/types/Tag.d.ts
vendored
Normal file
6
src/types/Tag.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
export interface Tag {
|
||||
color: string
|
||||
id: string
|
||||
name: string
|
||||
offer_or_need?: boolean
|
||||
}
|
||||
12
src/types/UserApi.d.ts
vendored
Normal file
12
src/types/UserApi.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
import type { UserItem } from './UserItem'
|
||||
|
||||
export interface UserApi {
|
||||
register(email: string, password: string, userName: string): Promise<void>
|
||||
login(email: string, password: string): Promise<UserItem | undefined>
|
||||
logout(): Promise<void>
|
||||
getUser(): Promise<UserItem>
|
||||
getToken(): Promise<string | null>
|
||||
updateUser(user: UserItem): Promise<void>
|
||||
requestPasswordReset(email: string, reset_url?: string)
|
||||
passwordReset(token: string, new_password: string)
|
||||
}
|
||||
13
src/types/UserItem.d.ts
vendored
Normal file
13
src/types/UserItem.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import type { Profile } from './Profile'
|
||||
|
||||
export interface UserItem {
|
||||
id?: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
role?: any
|
||||
email?: string
|
||||
password?: string
|
||||
profile?: Profile
|
||||
first_name?: string
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
[key: string]: any
|
||||
}
|
||||
16
src/types/UtopiaMapProps.d.ts
vendored
Normal file
16
src/types/UtopiaMapProps.d.ts
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
import type { Tag } from './Tag'
|
||||
import type { GeoJsonObject } from 'geojson'
|
||||
|
||||
export interface UtopiaMapProps {
|
||||
height?: string
|
||||
width?: string
|
||||
center?: [number, number]
|
||||
zoom?: number
|
||||
tags?: Tag[]
|
||||
children?: React.ReactNode
|
||||
geo?: GeoJsonObject
|
||||
showFilterControl?: boolean
|
||||
showLayerControl?: boolean
|
||||
showGratitudeControl?: boolean
|
||||
infoText?: string
|
||||
}
|
||||
9
src/types/index.ts
Normal file
9
src/types/index.ts
Normal file
@ -0,0 +1,9 @@
|
||||
export type { ItemsApi } from './ItemsApi'
|
||||
export type { Tag } from './Tag'
|
||||
export type { Item } from './Item'
|
||||
export type { Permission } from './Permission'
|
||||
export type { LayerProps } from './LayerProps'
|
||||
export type { UserApi } from './UserApi'
|
||||
export type { UserItem } from './UserItem'
|
||||
export type { UtopiaMapProps } from './UtopiaMapProps'
|
||||
export type { AssetsApi } from './AssetsApi'
|
||||
@ -23,7 +23,7 @@
|
||||
"#components/*": ["./src/Components/*"],
|
||||
"#utils/*": ["./src/Utils/*"],
|
||||
"#src/*": ["./src/*"],
|
||||
"#types/*": ["./types/*"],
|
||||
"#types/*": ["./src/types/*"],
|
||||
"#root/*": ["./*"]
|
||||
}
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user