@semapps/activitypub-components 0.6.6 → 0.6.7

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.
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/activitypub-components/src/index.ts","packages/activitypub-components/src/components/CommentsField/CommentsField.js","packages/activitypub-components/src/components/CommentsField/PostCommentForm.js","packages/activitypub-components/src/constants.js","packages/activitypub-components/src/hooks/useOutbox.js","packages/activitypub-components/src/components/CommentsField/CustomMention.js","packages/activitypub-components/src/components/CommentsField/CommentsList.js","packages/activitypub-components/src/hooks/useCollection.js","packages/activitypub-components/src/utils.js","packages/activitypub-components/src/components/CollectionList.js","packages/activitypub-components/src/components/ReferenceCollectionField.js","packages/activitypub-components/src/hooks/useInbox.js","packages/activitypub-components/src/hooks/useNodeinfo.js","packages/activitypub-components/src/hooks/useWebfinger.js","packages/activitypub-components/src/hooks/useMentions/useMentions.js","packages/activitypub-components/src/hooks/useMentions/renderMentions.js","packages/activitypub-components/src/hooks/useMentions/MentionsList.js"],"sourcesContent":["// Components\nexport { default as CommentsField } from './components/CommentsField/CommentsField';\nexport { default as CollectionList } from './components/CollectionList';\nexport { default as ReferenceCollectionField } from './components/ReferenceCollectionField';\n\n// Hooks\nexport { default as useCollection } from './hooks/useCollection';\nexport { default as useInbox } from './hooks/useInbox';\nexport { default as useNodeinfo } from './hooks/useNodeinfo';\nexport { default as useOutbox } from './hooks/useOutbox';\nexport { default as useWebfinger } from './hooks/useWebfinger';\nexport { default as useMentions } from './hooks/useMentions/useMentions';\n\n// Constants\nexport { ACTIVITY_TYPES, ACTOR_TYPES, OBJECT_TYPES, PUBLIC_URI } from './constants';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, placeholder, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n placeholder={placeholder}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n label: 'Commentaires',\n placeholder: 'Commencez à taper votre commentaire...',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React, { useState, useCallback } from 'react';\nimport { Form, useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-input-rich-text';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Button, Box, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SendIcon from '@mui/icons-material/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AuthDialog } from '@semapps/auth-provider';\nimport { OBJECT_TYPES, PUBLIC_URI } from '../../constants';\nimport useOutbox from '../../hooks/useOutbox';\nimport CustomMention from './CustomMention';\n\nconst useStyles = makeStyles(theme => ({\n form: {\n marginTop: -12 // Negative margin to keep the form close to the label\n },\n container: {\n paddingLeft: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 16,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n editorContent: {\n '& > div': {\n backgroundColor: 'rgba(0, 0, 0, 0.09)',\n padding: '2px 12px',\n borderWidth: '0px !important',\n borderRadius: 0,\n borderBottom: '1px solid #FFF',\n minHeight: 60,\n outline: 'unset !important'\n },\n '& > div > p': {\n marginTop: 12,\n marginBottom: 12,\n fontFamily: theme.typography.body1.fontFamily,\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n },\n '& > div > p.is-editor-empty:first-child::before': {\n color: 'grey',\n content: 'attr(data-placeholder)',\n float: 'left',\n height: 0,\n pointerEvents: 'none'\n }\n },\n button: {\n marginTop: -10, // To go over helper text block\n marginBottom: 15\n }\n}));\n\nconst EmptyToolbar = () => null;\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { data: identity, isLoading } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n\n const onSubmit = useCallback(\n async values => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n const mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n `${new URL(window.location.href).origin}/${userResource}/${encodeURIComponent(userUri)}/show`\n );\n link.textContent = `@${userLabel}`;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', { type: 'error' });\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n // TODO reset the form\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', { type: 'success' });\n } catch (e) {\n console.error(e);\n removeItem(tempId);\n notify(e.message, { type: 'error' });\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n const openAuthIfDisconnected = useCallback(() => {\n if (!identity?.id) {\n setOpenAuth(true);\n }\n }, [identity, setOpenAuth]);\n\n // Don't init the editor options until mentions and identity are loaded, as they can only be initialized once\n if ((mentions && !mentions.items) || isLoading) return null;\n\n return (\n <>\n <Form onSubmit={onSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar\n src={\n identity?.webIdData?.[userDataModel?.fieldsMapping?.image] ||\n identity?.profileData?.[userDataModel?.fieldsMapping?.image]\n }\n className={classes.avatar}\n />\n <RichTextInput\n source=\"comment\"\n label=\" \"\n toolbar={<EmptyToolbar />}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n placeholder ? Placeholder.configure({ placeholder }) : null,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ],\n // Disable editor if user is not connected\n editable: !!identity?.id\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </Form>\n <AuthDialog\n open={openAuth}\n onClose={() => setOpenAuth(false)}\n message=\"Pour poster un commentaire, vous devez être connecté.\"\n />\n </>\n );\n};\n\nexport default PostCommentForm;\n","export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVAL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { data: identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'] || `${identity?.id}/sparql`;\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n if (!outboxUrl)\n throw new Error(\n 'Cannot post to outbox before user identity is loaded. Please use the loaded argument of useOutbox'\n );\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n }\n return null;\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, loaded: !!outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField, ReferenceField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container} key={comment.id}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, useDataProvider } from 'react-admin';\nimport { useInfiniteQuery, useQueryClient } from 'react-query';\nimport { arrayOf } from '../utils';\n\nconst useCollection = (predicateOrUrl, options = {}) => {\n const { dereferenceItems = false } = options;\n const { data: identity } = useGetIdentity();\n const [items, setItems] = useState();\n const [totalItems, setTotalItems] = useState();\n const dataProvider = useDataProvider();\n const queryClient = useQueryClient();\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n }\n if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetchCollection = useCallback(\n async ({ pageParam: nextPageUrl }) => {\n let { json } = await dataProvider.fetch(nextPageUrl || collectionUrl);\n if (json.totalItems) setTotalItems(json.totalItems);\n\n if ((json.type === 'OrderedCollection' || json.type === 'Collection') && json.first) {\n if (json.first?.items) {\n if (json.first?.items.length === 0 && json.first?.next) {\n // Special case where the first property is an object without items\n ({ json } = await dataProvider.fetch(json.first?.next));\n } else {\n json = json.first;\n }\n } else {\n // Fetch the first page\n ({ json } = await dataProvider.fetch(json.first));\n }\n }\n\n // Force dereference of items\n if (dereferenceItems) {\n const itemPredicate = json.items ? 'items' : 'orderedItems';\n json[itemPredicate] =\n json[itemPredicate] &&\n (await Promise.all(\n arrayOf(json[itemPredicate]).map(async item => {\n if (typeof item === 'string') {\n const { json } = await dataProvider.fetch(item);\n return json;\n }\n return item;\n })\n ));\n }\n\n return json;\n },\n [dataProvider, collectionUrl, identity, setTotalItems]\n );\n\n const { data, error, fetchNextPage, refetch, hasNextPage, isLoading, isFetching, isFetchingNextPage, status } =\n useInfiniteQuery(['Collection', { collectionUrl }], fetchCollection, {\n enabled: !!(collectionUrl && identity?.id),\n getNextPageParam: lastPage => lastPage.next,\n getPreviousPageParam: firstPage => firstPage.prev\n });\n\n useEffect(() => {\n if (data?.pages) {\n setItems([].concat(...data.pages.map(p => arrayOf(p.orderedItems || p.items))));\n }\n }, [data, setItems]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n // TODO use queryClient.setQueryData to update items directly in react-query cache\n setTimeout(\n () =>\n queryClient.refetchQueries(['Collection', { collectionUrl }], {\n active: true,\n exact: true\n }),\n 2000\n );\n },\n [setItems, queryClient, collectionUrl]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n // TODO use queryClient.setQueryData to update items directly in react-query cache\n setTimeout(\n () =>\n queryClient.refetchQueries(['Collection', { collectionUrl }], {\n active: true,\n exact: true\n }),\n 2000\n );\n },\n [setItems, queryClient, collectionUrl]\n );\n\n return {\n items,\n totalItems,\n error,\n refetch,\n fetchNextPage,\n hasNextPage,\n isLoading,\n isFetching,\n isFetchingNextPage,\n status,\n addItem,\n removeItem,\n url: collectionUrl\n };\n};\n\nexport default useCollection;\n","export const arrayOf = value => {\n // If the field is null-ish, we suppose there are no values.\n if (value === null || value === undefined) {\n return [];\n }\n // Return as is.\n if (Array.isArray(value)) {\n return value;\n }\n // Single value is made an array.\n return [value];\n};\n\nexport default {\n arrayOf\n};\n","import React from 'react';\nimport { useList, ListContextProvider, useGetMany } from 'react-admin';\nimport useCollection from '../hooks/useCollection';\n\nconst CollectionList = ({ collectionUrl, resource, children }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n const { items: actorsUris } = useCollection(collectionUrl);\n\n const { data, isLoading, isFetching } = useGetMany(\n resource,\n { ids: Array.isArray(actorsUris) ? actorsUris : [actorsUris] },\n { enabled: !!actorsUris }\n );\n\n const listContext = useList({ data, isLoading, isFetching });\n\n return <ListContextProvider value={listContext}>{children}</ListContextProvider>;\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, reference, children, ...rest }) => {\n const record = useRecordContext();\n\n if (React.Children.count(children) !== 1) {\n throw new Error('<ReferenceCollectionField> only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n <CollectionList resource={reference} collectionUrl={record[source]} {...rest}>\n {children}\n </CollectionList>\n );\n};\n\nexport default ReferenceCollectionField;\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useInbox = () => {\n const { data: identity } = useGetIdentity();\n\n const inboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.inbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'] || `${identity?.id}/sparql`;\n }\n }, [identity]);\n\n const fetch = useCallback(\n async ({ filters }) => {\n if (!sparqlEndpoint || !inboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n let filtersWhereQuery = '';\n if (filters) {\n Object.keys(filters).forEach(predicate => {\n if (filters[predicate]) {\n const object = filters[predicate].startsWith('http') ? `<${filters[predicate]}>` : filters[predicate];\n filtersWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${inboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ${filtersWhereQuery}\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n }\n return null;\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useEffect, useState } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useNodeinfo = (host, rel = 'http://nodeinfo.diaspora.software/ns/schema/2.1') => {\n const [schema, setSchema] = useState();\n\n useEffect(() => {\n (async () => {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are likely on HTTP\n const nodeinfoUrl = `${protocol}://${host}/.well-known/nodeinfo`;\n\n try {\n const { json: links } = await fetchUtils.fetchJson(nodeinfoUrl);\n\n // Accept any version of the nodeinfo protocol\n const link = links?.links?.find(l => l.rel === rel);\n\n const { json } = await fetchUtils.fetchJson(link.href);\n\n setSchema(json);\n } catch (e) {\n // Do nothing if nodeinfo can't be fetched\n }\n })();\n }, [host, setSchema, rel]);\n\n return schema;\n};\n\nexport default useNodeinfo;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n","import { useMemo } from 'react';\nimport { useGetList } from 'react-admin';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport renderMentions from './renderMentions';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n const { data } = useGetList(\n userResource,\n {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n"],"names":[],"version":3,"file":"index.cjs.js.map"}
1
+ {"mappings":"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","sources":["packages/activitypub-components/src/index.ts","packages/activitypub-components/src/components/CommentsField/CommentsField.js","packages/activitypub-components/src/components/CommentsField/PostCommentForm.js","packages/activitypub-components/src/constants.js","packages/activitypub-components/src/hooks/useOutbox.js","packages/activitypub-components/src/components/CommentsField/CustomMention.js","packages/activitypub-components/src/components/CommentsField/CommentsList.js","packages/activitypub-components/src/hooks/useCollection.js","packages/activitypub-components/src/utils.ts","packages/activitypub-components/src/components/CollectionList.js","packages/activitypub-components/src/components/ReferenceCollectionField.js","packages/activitypub-components/src/hooks/useCollection.ts","packages/activitypub-components/src/hooks/useInbox.js","packages/activitypub-components/src/hooks/useNodeinfo.js","packages/activitypub-components/src/hooks/useWebfinger.js","packages/activitypub-components/src/hooks/useMentions/useMentions.js","packages/activitypub-components/src/hooks/useMentions/renderMentions.js","packages/activitypub-components/src/hooks/useMentions/MentionsList.js"],"sourcesContent":["// Components\nexport { default as CommentsField } from './components/CommentsField/CommentsField';\nexport { default as CollectionList } from './components/CollectionList';\nexport { default as ReferenceCollectionField } from './components/ReferenceCollectionField';\n\n// Hooks\nexport { default as useCollection } from './hooks/useCollection';\nexport { default as useInbox } from './hooks/useInbox';\nexport { default as useNodeinfo } from './hooks/useNodeinfo';\nexport { default as useOutbox } from './hooks/useOutbox';\nexport { default as useWebfinger } from './hooks/useWebfinger';\nexport { default as useMentions } from './hooks/useMentions/useMentions';\n\n// Constants\nexport { ACTIVITY_TYPES, ACTOR_TYPES, OBJECT_TYPES, PUBLIC_URI } from './constants';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, placeholder, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n placeholder={placeholder}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n label: 'Commentaires',\n placeholder: 'Commencez à taper votre commentaire...',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React, { useState, useCallback } from 'react';\nimport { Form, useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-input-rich-text';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Button, Box, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SendIcon from '@mui/icons-material/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AuthDialog } from '@semapps/auth-provider';\nimport { OBJECT_TYPES, PUBLIC_URI } from '../../constants';\nimport useOutbox from '../../hooks/useOutbox';\nimport CustomMention from './CustomMention';\n\nconst useStyles = makeStyles(theme => ({\n form: {\n marginTop: -12 // Negative margin to keep the form close to the label\n },\n container: {\n paddingLeft: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 16,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n editorContent: {\n '& > div': {\n backgroundColor: 'rgba(0, 0, 0, 0.09)',\n padding: '2px 12px',\n borderWidth: '0px !important',\n borderRadius: 0,\n borderBottom: '1px solid #FFF',\n minHeight: 60,\n outline: 'unset !important'\n },\n '& > div > p': {\n marginTop: 12,\n marginBottom: 12,\n fontFamily: theme.typography.body1.fontFamily,\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n },\n '& > div > p.is-editor-empty:first-child::before': {\n color: 'grey',\n content: 'attr(data-placeholder)',\n float: 'left',\n height: 0,\n pointerEvents: 'none'\n }\n },\n button: {\n marginTop: -10, // To go over helper text block\n marginBottom: 15\n }\n}));\n\nconst EmptyToolbar = () => null;\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { data: identity, isLoading } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n\n const onSubmit = useCallback(\n async values => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n const mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n `${new URL(window.location.href).origin}/${userResource}/${encodeURIComponent(userUri)}/show`\n );\n link.textContent = `@${userLabel}`;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', { type: 'error' });\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n // TODO reset the form\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', { type: 'success' });\n } catch (e) {\n console.error(e);\n removeItem(tempId);\n notify(e.message, { type: 'error' });\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n const openAuthIfDisconnected = useCallback(() => {\n if (!identity?.id) {\n setOpenAuth(true);\n }\n }, [identity, setOpenAuth]);\n\n // Don't init the editor options until mentions and identity are loaded, as they can only be initialized once\n if ((mentions && !mentions.items) || isLoading) return null;\n\n return (\n <>\n <Form onSubmit={onSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar\n src={\n identity?.webIdData?.[userDataModel?.fieldsMapping?.image] ||\n identity?.profileData?.[userDataModel?.fieldsMapping?.image]\n }\n className={classes.avatar}\n />\n <RichTextInput\n source=\"comment\"\n label=\" \"\n toolbar={<EmptyToolbar />}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n placeholder ? Placeholder.configure({ placeholder }) : null,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ],\n // Disable editor if user is not connected\n editable: !!identity?.id\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </Form>\n <AuthDialog\n open={openAuth}\n onClose={() => setOpenAuth(false)}\n message=\"Pour poster un commentaire, vous devez être connecté.\"\n />\n </>\n );\n};\n\nexport default PostCommentForm;\n","export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVEL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { data: identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'] || `${identity?.id}/sparql`;\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n if (!outboxUrl)\n throw new Error(\n 'Cannot post to outbox before user identity is loaded. Please use the loaded argument of useOutbox'\n );\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n }\n return null;\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, loaded: !!outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField, ReferenceField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container} key={comment.id}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, useDataProvider } from 'react-admin';\nimport { useInfiniteQuery, useQueries } from 'react-query';\nimport { getOrCreateWsChannel } from '@semapps/semantic-data-provider';\nimport { arrayOf } from '../utils';\n\nconst useItemsFromPagesAndNotifications = (pages, notifications, dereferenceItems) => {\n const dataProvider = useDataProvider();\n\n // Add all items from pages and process notifications (possibly new and deleted items).\n const items = useMemo(\n () => {\n const addItems = notifications.map(n => n.type === 'Add').map(n => n.object);\n const removeItems = notifications.map(n => n.type === 'Remove').map(n => n.object.id || n.object);\n const currentItems = !pages ? [] : pages.flatMap(p => arrayOf(p.orderedItems || p.items));\n const currentAndNew = currentItems.concat(addItems);\n\n return (\n currentAndNew\n // Filter out removed items.\n .filter(item => !removeItems.some(r => (r.id ?? r) === (item.id ?? item)))\n // Filter duplicates.\n .filter(item => currentAndNew.some(i2 => (i2.id ?? i2) === (item.id ?? item)))\n );\n },\n pages,\n notifications\n );\n\n if (!dereferenceItems) {\n return { loadedItems: items, isLoading: false, isFetching: false };\n }\n\n // Dereference all items, if they are not yet.\n const itemQueries = useQueries(\n items\n .filter(item => typeof item === 'string')\n .map(itemUri => ({\n queryKey: ['resource', itemUri],\n queryFn: async () => (await dataProvider.fetch(itemUri)).json,\n staleTime: Infinity\n }))\n );\n\n // Put all loaded items together (might be dereferenced already, so concatenate).\n const loadedItems = items\n .filter(item => typeof item !== 'string')\n .concat(\n itemQueries.flatMap(itemQuery => {\n return (itemQuery.isSuccess && itemQuery.data) || [];\n })\n );\n\n console.log('loadedItems', loadedItems.length, 'total', items.length);\n\n const errors = itemQueries.filter(q => q.error);\n return {\n loadedItems,\n isLoading: itemQueries.some(q => q.isLoading),\n isFetching: itemQueries.some(q => q.isFetching),\n errors: errors.length > 0 && errors\n };\n};\n\nconst useCollection = (predicateOrUrl, options = {}) => {\n const { dereferenceItems = false, liveUpdates = true } = options;\n const { data: identity } = useGetIdentity();\n const [totalItems, setTotalItems] = useState();\n const [notifications, setNotifications] = useState([]);\n const [hasLiveUpdates, setHasLiveUpdates] = useState({ status: 'disconnected', error: undefined });\n const dataProvider = useDataProvider();\n\n // Get collectionUrl from webId predicate or URL.\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n }\n if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n return undefined;\n // throw new Error(`No URL available for useCollection: ${predicateOrUrl}.`);\n }, [identity, predicateOrUrl]);\n\n // Fetch page of collection item references (if pageParam provided)\n // or default to `collectionUrl` (which should give you the first page).\n const fetchCollection = useCallback(\n async ({ pageParam: nextPageUrl }) => {\n // Fetch page or first page (collectionUrl)\n let { json } = await dataProvider.fetch(nextPageUrl || collectionUrl);\n if (json.totalItems) setTotalItems(json.totalItems);\n\n // If first page, handle this here.\n if ((json.type === 'OrderedCollection' || json.type === 'Collection') && json.first) {\n if (json.first?.items) {\n if (json.first?.items.length === 0 && json.first?.next) {\n // Special case where the first property is an object without items\n ({ json } = await dataProvider.fetch(json.first?.next));\n } else {\n json = json.first;\n }\n } else {\n // Fetch the first page\n ({ json } = await dataProvider.fetch(json.first));\n }\n }\n\n return json;\n },\n [dataProvider, collectionUrl, identity, setTotalItems]\n );\n\n // Use infiniteQuery to handle pagination, fetching, etc.\n const {\n data,\n error: collectionError,\n fetchNextPage,\n refetch,\n hasNextPage,\n isLoading: isLoadingPage,\n isFetching: isFetchingPage,\n isFetchingNextPage\n } = useInfiniteQuery(['collection', { collectionUrl }], fetchCollection, {\n enabled: !!(collectionUrl && identity?.id),\n getNextPageParam: lastPage => lastPage.next,\n getPreviousPageParam: firstPage => firstPage.prev\n });\n\n // Put all items together in a list.\n const {\n loadedItems: items,\n isLoading: isLoadingItems,\n isFetching: isFetchingItems,\n errors: itemErrors\n } = useItemsFromPagesAndNotifications(data?.pages, notifications, dereferenceItems);\n // Notifications have been processed after hook call, so reset.\n // useEffect(() => {\n // setNotifications([]);\n // }, [notifications])\n\n // Live Updates\n useEffect(() => {\n if (liveUpdates && collectionUrl) {\n // Create ws that listens to collectionUri changes\n getOrCreateWsChannel(dataProvider.fetch, collectionUrl)\n .then(webSocket => {\n webSocket.addEventListener('message', e => {\n if ((e.data && e.data.type === 'Add') || e.data.type === 'Remove') {\n setNotifications([...notifications, e.data]);\n }\n });\n webSocket.addEventListener('error', e => {\n setHasLiveUpdates({ status: 'error', error: e });\n // TODO: Retry after a while\n });\n webSocket.addEventListener('close', e => {\n setHasLiveUpdates({ ...hasLiveUpdates, status: 'disconnected' });\n });\n setHasLiveUpdates({ status: 'connected' });\n })\n .catch(() => {}); // If it fails, we won't receive live updates. But that's okay.\n }\n }, [collectionUrl, liveUpdates, dataProvider.fetch]);\n\n const allErrors = arrayOf(collectionError).concat(arrayOf(itemErrors));\n\n return {\n items,\n totalItems,\n error: allErrors.length > 0 && allErrors,\n refetch,\n fetchNextPage,\n hasNextPage,\n isLoading: isLoadingPage || isLoadingItems,\n isFetching: isFetchingPage || isFetchingItems,\n isFetchingNextPage,\n url: collectionUrl,\n hasLiveUpdates\n };\n};\n\nexport default useCollection;\n","export const arrayOf = <T>(value: T | T[]) => {\n // If the field is null-ish, we suppose there are no values.\n if (value === null || value === undefined) {\n return [];\n }\n // Return as is.\n if (Array.isArray(value)) {\n return value;\n }\n // Single value is made an array.\n return [value];\n};\n\nexport default {\n arrayOf\n};\n\nexport const filterDuplicates = <T>(iterable: T[], predicate: (item: T) => string) => {\n const seen = new Set<string>();\n return iterable.filter(item => {\n const key = predicate(item);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n};\n","import React from 'react';\nimport { useList, ListContextProvider, useGetMany } from 'react-admin';\nimport useCollection from '../hooks/useCollection';\n\nconst CollectionList = ({ collectionUrl, resource, children }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n const { items: actorsUris } = useCollection(collectionUrl);\n\n const { data, isLoading, isFetching } = useGetMany(\n resource,\n { ids: Array.isArray(actorsUris) ? actorsUris : [actorsUris] },\n { enabled: !!actorsUris }\n );\n\n const listContext = useList({ data, isLoading, isFetching });\n\n return <ListContextProvider value={listContext}>{children}</ListContextProvider>;\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, reference, children, ...rest }) => {\n const record = useRecordContext();\n\n if (React.Children.count(children) !== 1) {\n throw new Error('<ReferenceCollectionField> only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n <CollectionList resource={reference} collectionUrl={record[source]} {...rest}>\n {children}\n </CollectionList>\n );\n};\n\nexport default ReferenceCollectionField;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, useDataProvider } from 'react-admin';\nimport { QueryFunction, useInfiniteQuery, useQueries, useQueryClient } from 'react-query';\nimport { getOrCreateWsChannel } from '@semapps/semantic-data-provider';\nimport { arrayOf } from '../utils';\n\nconst useItemsFromPages = (pages: any[], dereferenceItems: boolean) => {\n const dataProvider = useDataProvider();\n const items = useMemo(() => pages.flatMap(p => arrayOf(p.orderedItems || p.items)), [pages]);\n\n // We will force dereference, if some items are not URI string references.\n const shouldDereference = useMemo(() => {\n return dereferenceItems || items.some(item => typeof item !== 'string');\n }, [dereferenceItems, items]);\n\n // Dereference all items, if necessary (even if shouldDereference is false, the hook needs to be called).\n const itemQueries = useQueries(\n !shouldDereference\n ? []\n : items\n .filter(item => typeof item === 'string')\n .map(itemUri => ({\n queryKey: ['resource', itemUri],\n queryFn: async () => (await dataProvider.fetch(itemUri)).json,\n staleTime: Infinity\n }))\n );\n\n if (!shouldDereference) {\n return { loadedItems: items, isLoading: false, isFetching: false };\n }\n\n // Put all loaded items together (might be dereferenced already, so concatenate).\n const loadedItems = items\n .filter(item => typeof item !== 'string')\n .concat(\n itemQueries.flatMap(itemQuery => {\n return (itemQuery.isSuccess && itemQuery.data) || [];\n })\n );\n\n const errors = itemQueries.filter(q => q.error);\n return {\n loadedItems,\n isLoading: itemQueries.some(q => q.isLoading),\n isFetching: itemQueries.some(q => q.isFetching),\n errors: errors.length > 0 ? errors : undefined\n };\n};\n\ninterface UseCollectionOptions {\n dereferenceItems?: boolean;\n liveUpdates?: boolean;\n}\n\n/**\n * Subscribe a collection. Supports pagination.\n * @param predicateOrUrl The collection URI or the predicate to get the collection URI from the identity (webId).\n * @param {UseCollectionOptions} options Defaults to `{ dereferenceItems: false, liveUpdates: true }`\n */\nconst useCollection = (predicateOrUrl: string, options: UseCollectionOptions = {}) => {\n const { dereferenceItems = false, liveUpdates = true } = options;\n const { data: identity } = useGetIdentity();\n const [totalItems, setTotalItems] = useState<number>();\n const queryClient = useQueryClient();\n const [hasLiveUpdates, setHasLiveUpdates] = useState<{ status: string; error?: any }>({ status: 'connecting' });\n const dataProvider = useDataProvider();\n\n // Get collectionUrl from webId predicate or URL.\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n }\n if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n return undefined;\n // throw new Error(`No URL available for useCollection: ${predicateOrUrl}.`);\n }, [identity, predicateOrUrl]);\n\n // Fetch page of collection item references (if pageParam provided)\n // or default to `collectionUrl` (which should give you the first page).\n const fetchCollection: QueryFunction = useCallback(\n async ({ pageParam: nextPageUrl }) => {\n // Fetch page or first page (collectionUrl)\n let { json } = await dataProvider.fetch(nextPageUrl || collectionUrl);\n if (json.totalItems) setTotalItems(json.totalItems);\n\n // If first page, handle this here.\n if ((json.type === 'OrderedCollection' || json.type === 'Collection') && json.first) {\n if (json.first?.items) {\n if (json.first?.items.length === 0 && json.first?.next) {\n // Special case where the first property is an object without items\n ({ json } = await dataProvider.fetch(json.first?.next));\n } else {\n json = json.first;\n }\n } else {\n // Fetch the first page\n ({ json } = await dataProvider.fetch(json.first));\n }\n }\n\n return json;\n },\n [dataProvider, collectionUrl, identity, setTotalItems]\n );\n\n // Use infiniteQuery to handle pagination, fetching, etc.\n const {\n data: pageData,\n error: collectionError,\n fetchNextPage,\n refetch,\n hasNextPage,\n isLoading: isLoadingPage,\n isFetching: isFetchingPage,\n isFetchingNextPage\n } = useInfiniteQuery(['collection', { collectionUrl }], fetchCollection, {\n enabled: !!(collectionUrl && identity?.id),\n getNextPageParam: (lastPage: any) => lastPage.next,\n getPreviousPageParam: (firstPage: any) => firstPage.prev\n });\n\n // Put all items together in a list (and dereference, if required).\n const {\n loadedItems: items,\n isLoading: isLoadingItems,\n isFetching: isFetchingItems,\n errors: itemErrors\n } = useItemsFromPages(pageData?.pages ?? [], dereferenceItems);\n\n const allErrors = arrayOf(collectionError).concat(arrayOf(itemErrors));\n\n const addItem = useCallback(\n (item: string | any, shouldRefetch: boolean | number = true) => {\n queryClient.setQueryData(['collection', { collectionUrl }], (oldData: any) => {\n if (!oldData) return oldData;\n setTotalItems(totalItems && totalItems + 1);\n\n // Destructure, so react knows, it needs to re-render the pages.\n const pages = [...oldData.pages];\n const firstPageItems: any[] = pages?.[0]?.orderedItems || pages?.[0]?.items || [];\n firstPageItems.unshift(item);\n\n oldData.pages = pages;\n return oldData;\n });\n if (shouldRefetch) {\n setTimeout(\n () =>\n queryClient.refetchQueries(['collection', { collectionUrl }], {\n active: true,\n exact: true\n }),\n typeof shouldRefetch === 'number' ? shouldRefetch : 2000\n );\n }\n },\n [queryClient, collectionUrl]\n );\n\n const removeItem = useCallback(\n (item: string | any, shouldRefetch: boolean = true) => {\n queryClient.setQueryData(['collection', { collectionUrl }], (oldData: any) => {\n if (!oldData) return oldData;\n setTotalItems(totalItems && totalItems - 1);\n\n // Destructure, so react knows, it needs to re-render the pages array.\n const pages = [...oldData.pages];\n // Find the item in all pages and remove the item to be removed (either item.id or just item)\n pages.forEach(page => {\n if (page.orderedItems) {\n page.orderedItems = page.orderedItems.filter((i: any) => (i.id || i) !== (item.id || item));\n } else if (page.items) {\n page.items = page.items.filter((i: any) => (i.id || i) !== (item?.id || item));\n }\n });\n\n oldData.pages = pages;\n return oldData;\n });\n if (shouldRefetch) {\n setTimeout(\n () =>\n queryClient.refetchQueries(['collection', { collectionUrl }], {\n active: true,\n exact: true\n }),\n typeof shouldRefetch === 'number' ? shouldRefetch : 2000\n );\n }\n },\n [queryClient, collectionUrl]\n );\n\n // Live Updates\n useEffect(() => {\n if (liveUpdates && collectionUrl) {\n // Create ws that listens to collectionUri changes\n getOrCreateWsChannel(dataProvider.fetch, collectionUrl)\n .then(webSocket => {\n webSocket.addEventListener('message', e => {\n const data = JSON.parse(e.data);\n if (data && data.type === 'Add') {\n addItem(data.object, true);\n } else if (data && data.type === 'Remove') {\n removeItem(data.object, true);\n }\n });\n webSocket.addEventListener('error', e => {\n setHasLiveUpdates({ status: 'error', error: e });\n // TODO: Retry after a while\n });\n webSocket.addEventListener('close', e => {\n if (!hasLiveUpdates.error) {\n setHasLiveUpdates({ ...hasLiveUpdates, status: 'closed' });\n }\n });\n setHasLiveUpdates({ status: 'connected' });\n })\n .catch(() => {}); // If it fails, we won't receive live updates. But that's okay.\n }\n }, [collectionUrl, liveUpdates, dataProvider]);\n\n return {\n items,\n totalItems,\n error: allErrors.length > 0 && allErrors,\n refetch,\n fetchNextPage,\n addItem,\n removeItem,\n hasNextPage,\n isLoading: isLoadingPage || isLoadingItems,\n isFetching: isFetchingPage || isFetchingItems,\n isFetchingNextPage,\n url: collectionUrl,\n hasLiveUpdates\n };\n};\n\nexport default useCollection;\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useInbox = () => {\n const { data: identity } = useGetIdentity();\n\n const inboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.inbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'] || `${identity?.id}/sparql`;\n }\n }, [identity]);\n\n const fetch = useCallback(\n async ({ filters }) => {\n if (!sparqlEndpoint || !inboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n let filtersWhereQuery = '';\n if (filters) {\n Object.keys(filters).forEach(predicate => {\n if (filters[predicate]) {\n const object = filters[predicate].startsWith('http') ? `<${filters[predicate]}>` : filters[predicate];\n filtersWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${inboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ${filtersWhereQuery}\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n }\n return null;\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useEffect, useState } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useNodeinfo = (host, rel = 'http://nodeinfo.diaspora.software/ns/schema/2.1') => {\n const [schema, setSchema] = useState();\n\n useEffect(() => {\n (async () => {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are likely on HTTP\n const nodeinfoUrl = `${protocol}://${host}/.well-known/nodeinfo`;\n\n try {\n const { json: links } = await fetchUtils.fetchJson(nodeinfoUrl);\n\n // Accept any version of the nodeinfo protocol\n const link = links?.links?.find(l => l.rel === rel);\n\n const { json } = await fetchUtils.fetchJson(link.href);\n\n setSchema(json);\n } catch (e) {\n // Do nothing if nodeinfo can't be fetched\n }\n })();\n }, [host, setSchema, rel]);\n\n return schema;\n};\n\nexport default useNodeinfo;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n","import { useMemo } from 'react';\nimport { useGetList } from 'react-admin';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport renderMentions from './renderMentions';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n const { data } = useGetList(\n userResource,\n {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n"],"names":[],"version":3,"file":"index.cjs.js.map"}
package/dist/index.d.ts CHANGED
@@ -23,7 +23,7 @@ export declare namespace ACTIVITY_TYPES {
23
23
  let REMOVE: string;
24
24
  let TENTATIVE_REJECT: string;
25
25
  let TENTATIVE_ACCEPT: string;
26
- let TRAVAL: string;
26
+ let TRAVEL: string;
27
27
  let UNDO: string;
28
28
  let UPDATE: string;
29
29
  let VIEW: string;
@@ -57,30 +57,39 @@ export function useOutbox(): {
57
57
  loaded: boolean;
58
58
  owner: import('react-admin').Identifier | undefined;
59
59
  };
60
- declare namespace _default {
61
- export { arrayOf };
60
+ interface UseCollectionOptions {
61
+ dereferenceItems?: boolean;
62
+ liveUpdates?: boolean;
62
63
  }
63
- export function useCollection(
64
- predicateOrUrl: any,
65
- options?: {}
66
- ): {
67
- items: undefined;
68
- totalItems: undefined;
69
- error: unknown;
64
+ /**
65
+ * Subscribe a collection. Supports pagination.
66
+ * @param predicateOrUrl The collection URI or the predicate to get the collection URI from the identity (webId).
67
+ * @param {UseCollectionOptions} options Defaults to `{ dereferenceItems: false, liveUpdates: true }`
68
+ */
69
+ export const useCollection: (
70
+ predicateOrUrl: string,
71
+ options?: UseCollectionOptions
72
+ ) => {
73
+ items: any[];
74
+ totalItems: number | undefined;
75
+ error: false | unknown[];
70
76
  refetch: <TPageData>(
71
77
  options?: (import('react-query').RefetchOptions & import('react-query').RefetchQueryFilters<TPageData>) | undefined
72
78
  ) => Promise<import('react-query').QueryObserverResult<import('react-query').InfiniteData<any>, unknown>>;
73
79
  fetchNextPage: (
74
80
  options?: import('react-query').FetchNextPageOptions | undefined
75
81
  ) => Promise<import('react-query').InfiniteQueryObserverResult<any, unknown>>;
82
+ addItem: (item: string | any, shouldRefetch?: boolean | number) => void;
83
+ removeItem: (item: string | any, shouldRefetch?: boolean) => void;
76
84
  hasNextPage: boolean | undefined;
77
85
  isLoading: boolean;
78
86
  isFetching: boolean;
79
87
  isFetchingNextPage: boolean;
80
- status: 'success' | 'error' | 'loading' | 'idle';
81
- addItem: (item: any) => void;
82
- removeItem: (itemId: any) => void;
83
88
  url: any;
89
+ hasLiveUpdates: {
90
+ status: string;
91
+ error?: any;
92
+ };
84
93
  };
85
94
  export function CommentsField({
86
95
  source,
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,wEAAyE;AClDzE;;;;;;EA0EC;;;;AKzED;;;;;;;;;;;;;;EAuHC;ACtHD;;;;;;;4CAkBC;;;;;;;;;ACpBD;;;;4CAgBC;AChBD;;;;;mDAcC;ACdD;;;;;;EAiEC;AClED,gEAwBC;ACxBD;;EAwBC;AGtBD;;;;;;;;;;;;;EAkCC","sources":["packages/activitypub-components/src/src/constants.js","packages/activitypub-components/src/src/hooks/useOutbox.js","packages/activitypub-components/src/src/components/CommentsField/CustomMention.js","packages/activitypub-components/src/src/components/CommentsField/PostCommentForm.js","packages/activitypub-components/src/src/components/CommentsField/CommentsList.js","packages/activitypub-components/src/src/utils.js","packages/activitypub-components/src/src/hooks/useCollection.js","packages/activitypub-components/src/src/components/CommentsField/CommentsField.js","packages/activitypub-components/src/src/components/CollectionList.js","packages/activitypub-components/src/src/components/ReferenceCollectionField.js","packages/activitypub-components/src/src/hooks/useInbox.js","packages/activitypub-components/src/src/hooks/useNodeinfo.js","packages/activitypub-components/src/src/hooks/useWebfinger.js","packages/activitypub-components/src/src/hooks/useMentions/MentionsList.js","packages/activitypub-components/src/src/hooks/useMentions/renderMentions.js","packages/activitypub-components/src/src/hooks/useMentions/useMentions.js","packages/activitypub-components/src/src/index.ts","packages/activitypub-components/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// Components\nexport { default as CommentsField } from './components/CommentsField/CommentsField';\nexport { default as CollectionList } from './components/CollectionList';\nexport { default as ReferenceCollectionField } from './components/ReferenceCollectionField';\n\n// Hooks\nexport { default as useCollection } from './hooks/useCollection';\nexport { default as useInbox } from './hooks/useInbox';\nexport { default as useNodeinfo } from './hooks/useNodeinfo';\nexport { default as useOutbox } from './hooks/useOutbox';\nexport { default as useWebfinger } from './hooks/useWebfinger';\nexport { default as useMentions } from './hooks/useMentions/useMentions';\n\n// Constants\nexport { ACTIVITY_TYPES, ACTOR_TYPES, OBJECT_TYPES, PUBLIC_URI } from './constants';\n"],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,wEAAyE;AClDzE;;;;;;EA0EC;AK5BD;IACE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,OAAA,MAAM,gCAAiC,MAAM,YAAW,oBAAoB;;;;;;oBA6EjE,MAAM,GAAG,GAAG,kBAAiB,OAAO,GAAG,MAAM;uBA4B7C,MAAM,GAAG,GAAG,kBAAiB,OAAO;;;;;;;gBApGkB,MAAM;gBAAU,GAAG;;CAiLnF,CAAC;AC5OF;;;;;;;4CAkBC;;;;;;;;;ACpBD;;;;4CAgBC;AChBD;;;;;mDAcC;ACdD;;;;;;EAiEC;AClED,gEAwBC;ACxBD;;EAwBC;AGtBD;;;;;;;;;;;;;EAkCC","sources":["packages/activitypub-components/src/src/constants.js","packages/activitypub-components/src/src/hooks/useOutbox.js","packages/activitypub-components/src/src/components/CommentsField/CustomMention.js","packages/activitypub-components/src/src/components/CommentsField/PostCommentForm.js","packages/activitypub-components/src/src/components/CommentsField/CommentsList.js","packages/activitypub-components/src/src/utils.ts","packages/activitypub-components/src/src/hooks/useCollection.ts","packages/activitypub-components/src/src/components/CommentsField/CommentsField.js","packages/activitypub-components/src/src/components/CollectionList.js","packages/activitypub-components/src/src/components/ReferenceCollectionField.js","packages/activitypub-components/src/src/hooks/useInbox.js","packages/activitypub-components/src/src/hooks/useNodeinfo.js","packages/activitypub-components/src/src/hooks/useWebfinger.js","packages/activitypub-components/src/src/hooks/useMentions/MentionsList.js","packages/activitypub-components/src/src/hooks/useMentions/renderMentions.js","packages/activitypub-components/src/src/hooks/useMentions/useMentions.js","packages/activitypub-components/src/src/index.ts","packages/activitypub-components/src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// Components\nexport { default as CommentsField } from './components/CommentsField/CommentsField';\nexport { default as CollectionList } from './components/CollectionList';\nexport { default as ReferenceCollectionField } from './components/ReferenceCollectionField';\n\n// Hooks\nexport { default as useCollection } from './hooks/useCollection';\nexport { default as useInbox } from './hooks/useInbox';\nexport { default as useNodeinfo } from './hooks/useNodeinfo';\nexport { default as useOutbox } from './hooks/useOutbox';\nexport { default as useWebfinger } from './hooks/useWebfinger';\nexport { default as useMentions } from './hooks/useMentions/useMentions';\n\n// Constants\nexport { ACTIVITY_TYPES, ACTOR_TYPES, OBJECT_TYPES, PUBLIC_URI } from './constants';\n"],"names":[],"version":3,"file":"index.d.ts.map"}