@semapps/activitypub-components 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js.map +1 -1
- package/package.json +5 -5
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useMentions/useMentions.js","../src/hooks/useWebfinger.js"],"sourcesContent":["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 { 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 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 } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: 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, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/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 marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = 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, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let 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', '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 reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, '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) || !identity) return null;\n\n return (\n <>\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement && commentElement.textContent !== '') commentElement.innerHTML = '';\n }\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar src={identity?.webIdData?.[userDataModel?.fieldsMapping?.image] || identity?.profileData?.[userDataModel?.fieldsMapping?.image]} className={classes.avatar} />\n <RichTextInput\n source=\"comment\"\n label=\"\"\n toolbar={null}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n placeholder\n ? Placeholder.configure({ placeholder })\n : 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 disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\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","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\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}>\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 • \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, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const token = localStorage.getItem('token');\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n });\n\n fetchUtils\n .fetchJson(collectionUrl, { headers })\n .then(({ json }) => {\n if (json && json.items) {\n setItems(json.items);\n } else if (json && json.orderedItems) {\n setItems(json.orderedItems);\n } else {\n setItems([]);\n }\n setError(false);\n setLoaded(true);\n setLoading(false);\n })\n .catch(() => {\n setError(true);\n setLoaded(true);\n setLoading(false);\n });\n }, [setItems, setLoaded, setLoading, setError, collectionUrl]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\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 addLabel: true,\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 from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/field-components';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\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\nReferenceCollectionField.defaultProps = {\n addLabel: true\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 { 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 console.log('inboxUrl', inboxUrl, sparqlEndpoint);\n\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 } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\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","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 { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\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 { 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"],"names":["OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","_identity$webIdData","webIdData","outbox","sparqlEndpoint","_identity$webIdData2","_identity$webIdData2$","endpoints","id","post","useCallback","_ref","_asyncToGenerator","_regeneratorRuntime","mark","activity","token","_yield$fetchUtils$fet","headers","wrap","_context","prev","next","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","_objectSpread","@context","Headers","Content-Type","Authorization","sent","abrupt","get","stop","_callee","_x","apply","this","arguments","fetch","_callee2","blankNodesQuery","query","_yield$fetchUtils$fet2","json","_context2","buildBlankNodesQuery","concat","construct","where","Accept","undefined","url","owner","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","options","attrs","label","addAttributes","default","parseHTML","element","getAttribute","attributes","data-mention-label","data-mention-id","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","& > div","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","& > div > p","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","& > div > p.is-editor-empty:first-child::before","color","content","float","pointerEvents","button","PostCommentForm","context","placeholder","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","_useState2","_slicedToArray","useState","expanded","setExpanded","_useState4","openAuth","setOpenAuth","onSubmit","_ref3","values","_ref2","reset","document","mentionedUsersUris","tempId","note","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","Date","now","type","attributedTo","inReplyTo","published","toISOString","to","t0","message","_x2","openAuthIfDisconnected","items","React","Fragment","Form","subscription","submitting","pristine","render","_ref4","_userDataModel$fields","_identity$profileData","_userDataModel$fields2","handleSubmit","commentElement","getElementById","className","Box","onClick","Avatar","src","fieldsMapping","image","profileData","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","_toConsumableArray","Placeholder","configure","class","suggestion","editable","Button","size","variant","endIcon","SendIcon","disabled","AuthDialog","open","onClose","text","paddingTop","paddingBottom","fontWeight","& p","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","_useState6","loaded","setLoaded","_useState8","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","_useCollection","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","_objectWithoutProperties","_excluded","Children","count","_useGetOne","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","_extends","ReferenceCollectionField","background","boxShadow","fontSize","overflow","border","margin","textAlign","&.selected","borderColor","MentionsList","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","renderMentions","component","popup","onStart","ReactRenderer","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","_component$ref","hide","onExit","destroy","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","inboxUrl","inbox","filters","filtersWhereQuery","console","log","Object","keys","predicate","object","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice","_id$split","_id$split2","username","host","protocol","webfingerUrl","split","includes","links","find","l"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useMentions/useMentions.js","../src/hooks/useWebfinger.js"],"sourcesContent":["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 { 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 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 } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: 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, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/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 marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = 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, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let 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', '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 reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, '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) || !identity) return null;\n\n return (\n <>\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement && commentElement.textContent !== '') commentElement.innerHTML = '';\n }\n return (\n <form onSubmit={handleSubmit} 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={null}\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 disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\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","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\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}>\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 • \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, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const token = localStorage.getItem('token');\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n });\n\n fetchUtils\n .fetchJson(collectionUrl, { headers })\n .then(({ json }) => {\n if (json && json.items) {\n setItems(json.items);\n } else if (json && json.orderedItems) {\n setItems(json.orderedItems);\n } else {\n setItems([]);\n }\n setError(false);\n setLoaded(true);\n setLoading(false);\n })\n .catch(() => {\n setError(true);\n setLoaded(true);\n setLoading(false);\n });\n }, [setItems, setLoaded, setLoading, setError, collectionUrl]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\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 addLabel: true,\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 from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/field-components';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\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\nReferenceCollectionField.defaultProps = {\n addLabel: true\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 { 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 console.log('inboxUrl', inboxUrl, sparqlEndpoint);\n\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 } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\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","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 { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\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 { 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"],"names":["OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","_identity$webIdData","webIdData","outbox","sparqlEndpoint","_identity$webIdData2","_identity$webIdData2$","endpoints","id","post","useCallback","_ref","_asyncToGenerator","_regeneratorRuntime","mark","activity","token","_yield$fetchUtils$fet","headers","wrap","_context","prev","next","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","_objectSpread","@context","Headers","Content-Type","Authorization","sent","abrupt","get","stop","_callee","_x","apply","this","arguments","fetch","_callee2","blankNodesQuery","query","_yield$fetchUtils$fet2","json","_context2","buildBlankNodesQuery","concat","construct","where","Accept","undefined","url","owner","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","options","attrs","label","addAttributes","default","parseHTML","element","getAttribute","attributes","data-mention-label","data-mention-id","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","& > div","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","& > div > p","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","& > div > p.is-editor-empty:first-child::before","color","content","float","pointerEvents","button","PostCommentForm","context","placeholder","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","_useState2","_slicedToArray","useState","expanded","setExpanded","_useState4","openAuth","setOpenAuth","onSubmit","_ref3","values","_ref2","reset","document","mentionedUsersUris","tempId","note","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","Date","now","type","attributedTo","inReplyTo","published","toISOString","to","t0","message","_x2","openAuthIfDisconnected","items","React","Fragment","Form","subscription","submitting","pristine","render","_ref4","_userDataModel$fields","_identity$profileData","_userDataModel$fields2","handleSubmit","commentElement","getElementById","className","Box","onClick","Avatar","src","fieldsMapping","image","profileData","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","_toConsumableArray","Placeholder","configure","class","suggestion","editable","Button","size","variant","endIcon","SendIcon","disabled","AuthDialog","open","onClose","text","paddingTop","paddingBottom","fontWeight","& p","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","_useState6","loaded","setLoaded","_useState8","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","_useCollection","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","_objectWithoutProperties","_excluded","Children","count","_useGetOne","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","_extends","ReferenceCollectionField","background","boxShadow","fontSize","overflow","border","margin","textAlign","&.selected","borderColor","MentionsList","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","renderMentions","component","popup","onStart","ReactRenderer","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","_component$ref","hide","onExit","destroy","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","inboxUrl","inbox","filters","filtersWhereQuery","console","log","Object","keys","predicate","object","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice","_id$split","_id$split2","username","host","protocol","webfingerUrl","split","includes","links","find","l"],"mappings":"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"}
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useWebfinger.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useMentions/useMentions.js"],"sourcesContent":["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 { 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 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 } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: 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, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/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 marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = 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, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let 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', '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 reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, '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) || !identity) return null;\n\n return (\n <>\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement && commentElement.textContent !== '') commentElement.innerHTML = '';\n }\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar src={identity?.webIdData?.[userDataModel?.fieldsMapping?.image] || identity?.profileData?.[userDataModel?.fieldsMapping?.image]} className={classes.avatar} />\n <RichTextInput\n source=\"comment\"\n label=\"\"\n toolbar={null}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n placeholder\n ? Placeholder.configure({ placeholder })\n : 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 disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\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","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\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}>\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 • \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, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const token = localStorage.getItem('token');\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n });\n\n fetchUtils\n .fetchJson(collectionUrl, { headers })\n .then(({ json }) => {\n if (json && json.items) {\n setItems(json.items);\n } else if (json && json.orderedItems) {\n setItems(json.orderedItems);\n } else {\n setItems([]);\n }\n setError(false);\n setLoaded(true);\n setLoading(false);\n })\n .catch(() => {\n setError(true);\n setLoaded(true);\n setLoading(false);\n });\n }, [setItems, setLoaded, setLoading, setError, collectionUrl]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\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 addLabel: true,\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 from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/field-components';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\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\nReferenceCollectionField.defaultProps = {\n addLabel: true\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 { 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 console.log('inboxUrl', inboxUrl, sparqlEndpoint);\n\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 } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\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 React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\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","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 { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\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"],"names":["ACTIVITY_TYPES","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","ACTOR_TYPES","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","_identity$webIdData","webIdData","outbox","sparqlEndpoint","_identity$webIdData2","_identity$webIdData2$","endpoints","id","post","useCallback","_ref","_asyncToGenerator","_regeneratorRuntime","mark","activity","token","_yield$fetchUtils$fet","headers","wrap","_context","prev","next","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","_objectSpread","@context","Headers","Content-Type","Authorization","sent","abrupt","get","stop","_callee","_x","apply","this","arguments","fetch","_callee2","blankNodesQuery","query","_yield$fetchUtils$fet2","json","_context2","buildBlankNodesQuery","concat","construct","where","Accept","undefined","url","owner","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","options","attrs","label","addAttributes","default","parseHTML","element","getAttribute","attributes","data-mention-label","data-mention-id","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","& > div","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","& > div > p","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","& > div > p.is-editor-empty:first-child::before","color","content","float","pointerEvents","button","PostCommentForm","context","placeholder","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","_useState2","_slicedToArray","useState","expanded","setExpanded","_useState4","openAuth","setOpenAuth","onSubmit","_ref3","values","_ref2","reset","document","mentionedUsersUris","tempId","note","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","Date","now","type","attributedTo","inReplyTo","published","toISOString","to","t0","message","_x2","openAuthIfDisconnected","items","React","Fragment","Form","subscription","submitting","pristine","render","_ref4","_userDataModel$fields","_identity$profileData","_userDataModel$fields2","handleSubmit","commentElement","getElementById","className","Box","onClick","Avatar","src","fieldsMapping","image","profileData","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","_toConsumableArray","Placeholder","configure","class","suggestion","editable","Button","size","variant","endIcon","SendIcon","disabled","AuthDialog","open","onClose","text","paddingTop","paddingBottom","fontWeight","& p","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","_useState6","loaded","setLoaded","_useState8","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","_useCollection","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","_objectWithoutProperties","_excluded","Children","count","_useGetOne","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","_extends","ReferenceCollectionField","useInbox","inboxUrl","inbox","filters","filtersWhereQuery","console","log","Object","keys","predicate","object","useWebfinger","_id$split","_id$split2","username","host","protocol","webfingerUrl","split","includes","links","find","l","background","boxShadow","fontSize","overflow","border","margin","textAlign","&.selected","borderColor","MentionsList","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","renderMentions","component","popup","onStart","ReactRenderer","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","_component$ref","hide","onExit","destroy","useMentions","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useWebfinger.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useMentions/useMentions.js"],"sourcesContent":["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 { 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 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 } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: 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, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/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 marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = 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, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let 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', '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 reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, '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) || !identity) return null;\n\n return (\n <>\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement && commentElement.textContent !== '') commentElement.innerHTML = '';\n }\n return (\n <form onSubmit={handleSubmit} 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={null}\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 disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\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","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\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}>\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 • \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, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const token = localStorage.getItem('token');\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n });\n\n fetchUtils\n .fetchJson(collectionUrl, { headers })\n .then(({ json }) => {\n if (json && json.items) {\n setItems(json.items);\n } else if (json && json.orderedItems) {\n setItems(json.orderedItems);\n } else {\n setItems([]);\n }\n setError(false);\n setLoaded(true);\n setLoading(false);\n })\n .catch(() => {\n setError(true);\n setLoaded(true);\n setLoading(false);\n });\n }, [setItems, setLoaded, setLoading, setError, collectionUrl]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\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 addLabel: true,\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 from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/field-components';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\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\nReferenceCollectionField.defaultProps = {\n addLabel: true\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 { 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 console.log('inboxUrl', inboxUrl, sparqlEndpoint);\n\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 } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\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 React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\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","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 { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\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"],"names":["ACTIVITY_TYPES","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","ACTOR_TYPES","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","_identity$webIdData","webIdData","outbox","sparqlEndpoint","_identity$webIdData2","_identity$webIdData2$","endpoints","id","post","useCallback","_ref","_asyncToGenerator","_regeneratorRuntime","mark","activity","token","_yield$fetchUtils$fet","headers","wrap","_context","prev","next","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","_objectSpread","@context","Headers","Content-Type","Authorization","sent","abrupt","get","stop","_callee","_x","apply","this","arguments","fetch","_callee2","blankNodesQuery","query","_yield$fetchUtils$fet2","json","_context2","buildBlankNodesQuery","concat","construct","where","Accept","undefined","url","owner","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","options","attrs","label","addAttributes","default","parseHTML","element","getAttribute","attributes","data-mention-label","data-mention-id","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","& > div","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","& > div > p","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","& > div > p.is-editor-empty:first-child::before","color","content","float","pointerEvents","button","PostCommentForm","context","placeholder","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","_useState2","_slicedToArray","useState","expanded","setExpanded","_useState4","openAuth","setOpenAuth","onSubmit","_ref3","values","_ref2","reset","document","mentionedUsersUris","tempId","note","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","Date","now","type","attributedTo","inReplyTo","published","toISOString","to","t0","message","_x2","openAuthIfDisconnected","items","React","Fragment","Form","subscription","submitting","pristine","render","_ref4","_userDataModel$fields","_identity$profileData","_userDataModel$fields2","handleSubmit","commentElement","getElementById","className","Box","onClick","Avatar","src","fieldsMapping","image","profileData","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","_toConsumableArray","Placeholder","configure","class","suggestion","editable","Button","size","variant","endIcon","SendIcon","disabled","AuthDialog","open","onClose","text","paddingTop","paddingBottom","fontWeight","& p","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","_useState6","loaded","setLoaded","_useState8","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","_useCollection","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","_objectWithoutProperties","_excluded","Children","count","_useGetOne","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","_extends","ReferenceCollectionField","useInbox","inboxUrl","inbox","filters","filtersWhereQuery","console","log","Object","keys","predicate","object","useWebfinger","_id$split","_id$split2","username","host","protocol","webfingerUrl","split","includes","links","find","l","background","boxShadow","fontSize","overflow","border","margin","textAlign","&.selected","borderColor","MentionsList","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","renderMentions","component","popup","onStart","ReactRenderer","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","_component$ref","hide","onExit","destroy","useMentions","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semapps/activitypub-components",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "React-Admin components for ActivityPub display",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Virtual Assembly",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"dev": "rollup --watch --sourcemap --config"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@semapps/auth-provider": "0.4.
|
|
18
|
-
"@semapps/field-components": "0.4.
|
|
19
|
-
"@semapps/semantic-data-provider": "0.4.
|
|
17
|
+
"@semapps/auth-provider": "0.4.5",
|
|
18
|
+
"@semapps/field-components": "0.4.5",
|
|
19
|
+
"@semapps/semantic-data-provider": "0.4.5",
|
|
20
20
|
"@tiptap/core": "^2.0.0-beta.95",
|
|
21
21
|
"@tiptap/extension-mention": "^2.0.0-beta.95",
|
|
22
22
|
"@tiptap/extension-placeholder": "^2.0.0-beta.95",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"rollup-plugin-terser": "^5.3.0",
|
|
45
45
|
"rollup-pluginutils": "^2.8.2"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "335579a7c93e3f7dbfc2ba0a77eb4c2972f77b44"
|
|
48
48
|
}
|