@semapps/activitypub-components 0.4.7 → 0.5.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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 &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity, loaded: identityLoaded } = 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\n const headers = new Headers({ Accept: 'application/ld+json' });\n\n // Add authorization token if it is set and if the user is on the same server as the collection\n const identityOrigin = identity && (new URL(identity.id)).origin;\n const collectionOrigin = (new URL(collectionUrl)).origin;\n const token = localStorage.getItem('token');\n if (identityOrigin === collectionOrigin && token) {\n headers.set('Authorization', `Bearer ${token}`)\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, identity]);\n\n useEffect(() => {\n if (identityLoaded && !loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, identityLoaded, 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","_useGetIdentity","identityLoaded","loaded","setItems","setLoading","_useState6","setLoaded","_useState8","error","setError","collectionUrl","startsWith","identityOrigin","collectionOrigin","set","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":["../../../node_modules/clsx/dist/clsx.m.js","../../../node_modules/ra-input-rich-text/dist/esm/TiptapEditorContext.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/ColorButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/TiptapEditorProvider.js","../../../node_modules/ra-input-rich-text/dist/esm/useTiptapEditor.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/FormatButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/ListButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/AlignmentButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/LinkButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/useEditorSelection.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/QuoteButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/ClearButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/LevelSelect.js","../../../node_modules/ra-input-rich-text/dist/esm/buttons/ImageButtons.js","../../../node_modules/ra-input-rich-text/dist/esm/RichTextInputToolbar.js","../../../node_modules/ra-input-rich-text/dist/esm/RichTextInput.js","../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/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useMentions/useMentions.js","../src/hooks/useWebfinger.js"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { createContext } from 'react';\nexport var TiptapEditorContext = createContext(undefined);\n//# sourceMappingURL=TiptapEditorContext.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Box, Card, ToggleButton, ToggleButtonGroup, useTheme, } from '@mui/material';\nimport FormatColorTextIcon from '@mui/icons-material/FormatColorText';\nimport FontDownloadIcon from '@mui/icons-material/FontDownload';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nimport { grey, red, orange, yellow, green, blue, purple, } from '@mui/material/colors';\nvar ColorType;\n(function (ColorType) {\n ColorType[\"FONT\"] = \"font\";\n ColorType[\"BACKGROUND\"] = \"background\";\n})(ColorType || (ColorType = {}));\nexport var ColorButtons = function (props) {\n var translate = useTranslate();\n var editor = useTiptapEditor();\n var _a = React.useState(false), showColorChoiceDialog = _a[0], setShowColorChoiceDialog = _a[1];\n var _b = React.useState(ColorType.FONT), colorType = _b[0], setColorType = _b[1];\n var colorLabel = translate('ra.tiptap.color', { _: 'Color' });\n var highlightLabel = translate('ra.tiptap.highlight', { _: 'Highlight' });\n var displayColorChoiceDialog = function (colorType) {\n setShowColorChoiceDialog(true);\n setColorType(colorType);\n };\n return editor ? (React.createElement(Box, { sx: { position: 'relative' } },\n React.createElement(OutsideListener, { onClick: function () { return setShowColorChoiceDialog(false); } },\n React.createElement(ToggleButtonGroup, null,\n React.createElement(ToggleButton, __assign({ \"aria-label\": colorLabel, title: colorLabel }, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), value: \"color\", onClick: function () { return displayColorChoiceDialog(ColorType.FONT); } }),\n React.createElement(FormatColorTextIcon, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, __assign({ \"aria-label\": highlightLabel, title: highlightLabel }, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), value: \"highlight\", onClick: function () {\n return displayColorChoiceDialog(ColorType.BACKGROUND);\n } }),\n React.createElement(FontDownloadIcon, { fontSize: \"inherit\" }))),\n showColorChoiceDialog && (React.createElement(ColorChoiceDialog, { editor: editor, close: function () { return setShowColorChoiceDialog(false); }, colorType: colorType }))))) : null;\n};\nvar ColorChoiceDialog = function (_a) {\n var _b, _c;\n var editor = _a.editor, close = _a.close, colorType = _a.colorType;\n var theme = useTheme();\n var colors = [grey, red, orange, yellow, green, blue, purple];\n var shades = [900, 700, 500, 300, 100];\n var selectColor = function (color) {\n if (colorType === ColorType.FONT) {\n editor.chain().focus().setColor(color).run();\n }\n else {\n editor.chain().focus().toggleHighlight({ color: color }).run();\n }\n close();\n };\n return (React.createElement(Card, { sx: {\n position: 'absolute',\n top: 38,\n left: colorType === ColorType.FONT ? 0 : '50%',\n p: 1,\n border: \"1px solid \".concat((_c = (_b = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _b === void 0 ? void 0 : _b.background) === null || _c === void 0 ? void 0 : _c.default),\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n zIndex: 1,\n } }, shades.map(function (shade, line) { return (React.createElement(Box, { key: \"shade-\".concat(shade), sx: { display: 'flex', flexDirection: 'row', gap: 1 } }, colors.map(function (color, row) { return (React.createElement(Box, { key: \"color-\".concat(line * colors.length + row + 1), sx: {\n width: 16,\n height: 16,\n cursor: 'pointer',\n // @ts-ignore\n backgroundColor: color[shade],\n }, \n // @ts-ignore\n onClick: function () { return selectColor(color[shade]); } })); }))); })));\n};\n/**\n * Component that listens if you click outside of it\n */\nvar OutsideListener = function (_a) {\n var className = _a.className, onClick = _a.onClick, children = _a.children;\n var wrapperRef = React.useRef(null);\n useOutsideListener(wrapperRef, onClick);\n return (React.createElement(\"div\", { className: className, ref: wrapperRef }, children));\n};\n/**\n * Hook that listens clicks outside of the passed ref\n */\nvar useOutsideListener = function (ref, onClick) {\n React.useEffect(function () {\n var handleClickOutside = function (event) {\n if (ref.current && !ref.current.contains(event.target)) {\n onClick();\n }\n };\n // Bind the event listener\n document.addEventListener('mousedown', handleClickOutside);\n return function () {\n // Unbind the event listener on clean up\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [ref, onClick]);\n};\n//# sourceMappingURL=ColorButtons.js.map","import * as React from 'react';\nimport { TiptapEditorContext } from './TiptapEditorContext';\nexport var TiptapEditorProvider = function (_a) {\n var children = _a.children, value = _a.value;\n return (React.createElement(TiptapEditorContext.Provider, { value: value }, children));\n};\n//# sourceMappingURL=TiptapEditorProvider.js.map","import { useContext, useEffect, useState } from 'react';\nimport { TiptapEditorContext } from './TiptapEditorContext';\nexport var useTiptapEditor = function () {\n var _a = useState(false), ready = _a[0], setReady = _a[1];\n var editor = useContext(TiptapEditorContext);\n useEffect(function () {\n var onReady = function () {\n setReady(true);\n };\n if (editor != null) {\n // This ensure support for hot reload\n setReady(editor.isEditable);\n editor.on('create', onReady);\n }\n return function () {\n if (editor != null) {\n editor.off('create', onReady);\n }\n };\n }, [editor]);\n if (ready) {\n return editor;\n }\n return null;\n};\n//# sourceMappingURL=useTiptapEditor.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { ToggleButton, ToggleButtonGroup, } from '@mui/material';\nimport FormatBold from '@mui/icons-material/FormatBold';\nimport FormatItalic from '@mui/icons-material/FormatItalic';\nimport FormatUnderlined from '@mui/icons-material/FormatUnderlined';\nimport FormatStrikethrough from '@mui/icons-material/FormatStrikethrough';\nimport Code from '@mui/icons-material/Code';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var FormatButtons = function (props) {\n var editor = useTiptapEditor();\n var translate = useTranslate();\n var _a = useState([]), values = _a[0], setValues = _a[1];\n var boldLabel = translate('ra.tiptap.bold', {\n _: 'Bold',\n });\n var italicLabel = translate('ra.tiptap.italic', {\n _: 'Italic',\n });\n var underlineLabel = translate('ra.tiptap.underline', {\n _: 'Underline',\n });\n var strikeLabel = translate('ra.tiptap.strike', {\n _: 'Strikethrough',\n });\n var codeLabel = translate('ra.tiptap.code', {\n _: 'Code',\n });\n useEffect(function () {\n var handleUpdate = function () {\n setValues(function () {\n return FormatValues.reduce(function (acc, value) {\n if (editor && editor.isActive(value)) {\n acc.push(value);\n }\n return acc;\n }, []);\n });\n };\n if (editor) {\n editor.on('update', handleUpdate);\n editor.on('selectionUpdate', handleUpdate);\n }\n return function () {\n if (editor) {\n editor.off('update', handleUpdate);\n editor.off('selectionUpdate', handleUpdate);\n }\n };\n }, [editor]);\n var handleChange = function (event, newFormats) {\n FormatValues.forEach(function (format) {\n var shouldBeDeactivated = editor &&\n editor.isActive(format) &&\n !newFormats.includes(format);\n var shouldBeActivated = editor &&\n !editor.isActive(format) &&\n newFormats.includes(format);\n if (shouldBeDeactivated || shouldBeActivated) {\n FormatActions[format](editor);\n }\n });\n };\n return (React.createElement(ToggleButtonGroup, __assign({}, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), onChange: handleChange, value: values }),\n React.createElement(ToggleButton, { value: \"bold\", \"aria-label\": boldLabel, title: boldLabel },\n React.createElement(FormatBold, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"italic\", \"aria-label\": italicLabel, title: italicLabel },\n React.createElement(FormatItalic, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"underline\", \"aria-label\": underlineLabel, title: underlineLabel },\n React.createElement(FormatUnderlined, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"strike\", \"aria-label\": strikeLabel, title: strikeLabel },\n React.createElement(FormatStrikethrough, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"code\", \"aria-label\": codeLabel, title: codeLabel },\n React.createElement(Code, { fontSize: \"inherit\" }))));\n};\nvar FormatValues = ['bold', 'italic', 'underline', 'strike', 'code'];\nvar FormatActions = {\n bold: function (editor) { return editor.chain().focus().toggleBold().run(); },\n italic: function (editor) { return editor.chain().focus().toggleItalic().run(); },\n underline: function (editor) {\n return editor.chain().focus().toggleUnderline().run();\n },\n strike: function (editor) { return editor.chain().focus().toggleStrike().run(); },\n code: function (editor) { return editor.chain().focus().toggleCode().run(); },\n};\n//# sourceMappingURL=FormatButtons.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { ToggleButton, ToggleButtonGroup, } from '@mui/material';\nimport FormatListBulleted from '@mui/icons-material/FormatListBulleted';\nimport FormatListNumbered from '@mui/icons-material/FormatListNumbered';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var ListButtons = function (props) {\n var editor = useTiptapEditor();\n var translate = useTranslate();\n var bulletListLabel = translate('ra.tiptap.list_bulleted', {\n _: 'Bulleted list',\n });\n var numberListLabel = translate('ra.tiptap.list_numbered', {\n _: 'Numbered list',\n });\n var _a = useState(), value = _a[0], setValue = _a[1];\n var handleChange = function (event, newFormat) {\n ListValues.forEach(function (format) {\n var shouldBeDeactivated = editor && editor.isActive(format) && newFormat !== format;\n var shouldBeActivated = editor && !editor.isActive(format) && newFormat === format;\n if (shouldBeDeactivated || shouldBeActivated) {\n ListActions[format](editor);\n }\n });\n };\n useEffect(function () {\n var handleUpdate = function () {\n setValue(function () {\n return ListValues.reduce(function (acc, value) {\n if (editor && editor.isActive(value)) {\n return value;\n }\n return acc;\n }, undefined);\n });\n };\n if (editor) {\n editor.on('update', handleUpdate);\n editor.on('selectionUpdate', handleUpdate);\n }\n return function () {\n if (editor) {\n editor.off('update', handleUpdate);\n editor.off('selectionUpdate', handleUpdate);\n }\n };\n }, [editor]);\n return (React.createElement(ToggleButtonGroup, __assign({}, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), exclusive: true, onChange: handleChange, value: value }),\n React.createElement(ToggleButton, { value: \"bulletList\", \"aria-label\": bulletListLabel, title: bulletListLabel },\n React.createElement(FormatListBulleted, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"orderedList\", \"aria-label\": numberListLabel, title: numberListLabel },\n React.createElement(FormatListNumbered, { fontSize: \"inherit\" }))));\n};\nvar ListValues = ['bulletList', 'orderedList'];\nvar ListActions = {\n bulletList: function (editor) {\n return editor.chain().focus().toggleBulletList().run();\n },\n orderedList: function (editor) {\n return editor.chain().focus().toggleOrderedList().run();\n },\n};\n//# sourceMappingURL=ListButtons.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { ToggleButton, ToggleButtonGroup, } from '@mui/material';\nimport FormatAlignCenter from '@mui/icons-material/FormatAlignCenter';\nimport FormatAlignLeft from '@mui/icons-material/FormatAlignLeft';\nimport FormatAlignRight from '@mui/icons-material/FormatAlignRight';\nimport FormatAlignJustify from '@mui/icons-material/FormatAlignJustify';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var AlignmentButtons = function (props) {\n var editor = useTiptapEditor();\n var translate = useTranslate();\n var _a = useState('left'), value = _a[0], setValue = _a[1];\n var leftLabel = translate('ra.tiptap.align_left', { _: 'Align left' });\n var rightLabel = translate('ra.tiptap.align_right', { _: 'Align right' });\n var centerLabel = translate('ra.tiptap.align_center', { _: 'Center' });\n var justifyLabel = translate('ra.tiptap.align_justify', { _: 'Justify' });\n useEffect(function () {\n var handleUpdate = function () {\n setValue(function (currentValue) {\n return AlignmentValues.reduce(function (acc, value) {\n if (editor && editor.isActive({ textAlign: value })) {\n return value;\n }\n return acc;\n }, currentValue);\n });\n };\n if (editor) {\n editor.on('update', handleUpdate);\n editor.on('selectionUpdate', handleUpdate);\n }\n return function () {\n if (editor) {\n editor.off('update', handleUpdate);\n editor.off('selectionUpdate', handleUpdate);\n }\n };\n }, [editor]);\n var handleChange = function (event, newFormat) {\n if (AlignmentActions[newFormat]) {\n AlignmentActions[newFormat](editor);\n }\n };\n return (React.createElement(ToggleButtonGroup, __assign({}, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), exclusive: true, onChange: handleChange, value: value }),\n React.createElement(ToggleButton, { value: \"left\", \"aria-label\": leftLabel, title: leftLabel },\n React.createElement(FormatAlignLeft, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"center\", \"aria-label\": centerLabel, title: centerLabel },\n React.createElement(FormatAlignCenter, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"right\", \"aria-label\": rightLabel, title: rightLabel },\n React.createElement(FormatAlignRight, { fontSize: \"inherit\" })),\n React.createElement(ToggleButton, { value: \"justify\", \"aria-label\": justifyLabel, title: justifyLabel },\n React.createElement(FormatAlignJustify, { fontSize: \"inherit\" }))));\n};\nvar AlignmentValues = ['left', 'center', 'right', 'justify', 'code'];\nvar AlignmentActions = {\n left: function (editor) { return editor.chain().focus().setTextAlign('left').run(); },\n center: function (editor) {\n return editor.chain().focus().setTextAlign('center').run();\n },\n right: function (editor) {\n return editor.chain().focus().setTextAlign('right').run();\n },\n justify: function (editor) {\n return editor.chain().focus().setTextAlign('justify').run();\n },\n};\n//# sourceMappingURL=AlignmentButtons.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ToggleButton } from '@mui/material';\nimport InsertLink from '@mui/icons-material/InsertLink';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nimport { useEditorSelection } from './useEditorSelection';\nexport var LinkButtons = function (props) {\n var editor = useTiptapEditor();\n var translate = useTranslate();\n var currentTextSelection = useEditorSelection();\n var label = translate('ra.tiptap.link', {\n _: 'Add a link',\n });\n var handleClick = function () {\n if (!editor.can().setLink({ href: '' })) {\n return;\n }\n var url = window.prompt('URL');\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: url })\n .run();\n };\n return (React.createElement(ToggleButton, __assign({ \"aria-label\": label, title: label }, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable) || !currentTextSelection, value: \"link\", onClick: handleClick, selected: editor && editor.isActive('link') }),\n React.createElement(InsertLink, { fontSize: \"inherit\" })));\n};\n//# sourceMappingURL=LinkButtons.js.map","import { useEffect, useState } from 'react';\nimport { useTiptapEditor } from '../useTiptapEditor';\n/**\n * A hook that returns the current text selection in the editor.\n * @returns {(string|null)} The current text selection if any, or null.\n */\nexport var useEditorSelection = function () {\n var editor = useTiptapEditor();\n var _a = useState(editor\n ? editor.state.doc.textBetween(editor.state.selection.from, editor.state.selection.to)\n : null), selection = _a[0], setSelection = _a[1];\n useEffect(function () {\n var handleSelectionChange = function () {\n setSelection(editor\n ? editor.state.doc.textBetween(editor.state.selection.from, editor.state.selection.to)\n : null);\n };\n if (editor) {\n editor.on('selectionUpdate', handleSelectionChange);\n }\n return function () {\n if (editor) {\n editor.off('selectionUpdate', handleSelectionChange);\n }\n };\n }, [editor]);\n return selection;\n};\n//# sourceMappingURL=useEditorSelection.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { ToggleButton } from '@mui/material';\nimport FormatQuote from '@mui/icons-material/FormatQuote';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var QuoteButtons = function (props) {\n var editor = useTiptapEditor();\n var translate = useTranslate();\n var _a = useState(false), isActive = _a[0], setIsActive = _a[1];\n var label = translate('ra.tiptap.blockquote', {\n _: 'Blockquote',\n });\n useEffect(function () {\n var handleUpdate = function () {\n setIsActive(editor && editor.isActive('blockquote'));\n };\n if (editor) {\n editor.on('update', handleUpdate);\n editor.on('selectionUpdate', handleUpdate);\n }\n return function () {\n if (editor) {\n editor.off('update', handleUpdate);\n editor.off('selectionUpdate', handleUpdate);\n }\n };\n }, [editor]);\n return (React.createElement(ToggleButton, __assign({ \"aria-label\": label, title: label }, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), onClick: function () { return editor.chain().focus().toggleBlockquote().run(); }, selected: isActive, value: \"quote\" }),\n React.createElement(FormatQuote, { fontSize: \"inherit\" })));\n};\n//# sourceMappingURL=QuoteButtons.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ToggleButton } from '@mui/material';\nimport FormatClear from '@mui/icons-material/FormatClear';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var ClearButtons = function (props) {\n var editor = useTiptapEditor();\n var translate = useTranslate();\n var label = translate('ra.tiptap.clear_format', {\n _: 'Clear format',\n });\n return (React.createElement(ToggleButton, __assign({ \"aria-label\": label, title: label }, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), value: \"clear\", onClick: function () { return editor.chain().focus().unsetAllMarks().run(); } }),\n React.createElement(FormatClear, { fontSize: \"inherit\" })));\n};\n//# sourceMappingURL=ClearButtons.js.map","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { List, ListItem, ListItemText, Menu, MenuItem } from '@mui/material';\nimport { styled, alpha } from '@mui/material/styles';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { useTranslate } from 'ra-core';\nimport clsx from 'clsx';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var LevelSelect = function (props) {\n var _a;\n var translate = useTranslate();\n var editor = useTiptapEditor();\n var _b = useState(null), anchorElement = _b[0], setAnchorElement = _b[1];\n var size = props.size;\n var _c = useState(options[0]), selectedOption = _c[0], setSelectedOption = _c[1];\n var handleMenuItemClick = function (event, index) {\n setAnchorElement(null);\n var selectedItem = options[index];\n if (selectedItem.value === 'paragraph') {\n editor.chain().focus().setParagraph().run();\n }\n else if (selectedItem.value === 'heading') {\n editor\n .chain()\n .focus()\n .setHeading({ level: selectedItem.level })\n .run();\n }\n };\n var handleClickListItem = function (event) {\n setAnchorElement(event.currentTarget);\n };\n var handleClose = function (event) {\n setAnchorElement(null);\n };\n useEffect(function () {\n var handleUpdate = function () {\n setSelectedOption(function (currentOption) {\n return options.reduce(function (acc, option) {\n if (editor) {\n if (option.value === 'paragraph' &&\n editor.isActive('paragraph')) {\n return option;\n }\n if (editor.isActive('heading', {\n level: option.level,\n })) {\n return option;\n }\n }\n return acc;\n }, currentOption);\n });\n };\n if (editor) {\n editor.on('update', handleUpdate);\n editor.on('selectionUpdate', handleUpdate);\n }\n return function () {\n if (editor) {\n editor.off('update', handleUpdate);\n editor.off('selectionUpdate', handleUpdate);\n }\n };\n }, [editor]);\n return (React.createElement(Root, null,\n React.createElement(List, { component: \"nav\", \"aria-label\": translate('ra.tiptap.select_level', {\n _: 'Select the level',\n }), dense: true, disablePadding: true, className: classes.list },\n React.createElement(ListItem, { button: true, \"aria-haspopup\": \"true\", \"aria-controls\": \"level-menu\", \"aria-label\": translate('ra.tiptap.current_level', {\n _: 'Current level',\n }), disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), onClick: handleClickListItem, className: clsx((_a = {},\n _a[classes.sizeSmall] = size === 'small',\n _a[classes.sizeLarge] = size === 'large',\n _a)) },\n React.createElement(ListItemText, { primary: translate(selectedOption.label, {\n _: selectedOption.defaultLabel,\n }) }),\n React.createElement(ArrowDropDownIcon, null))),\n React.createElement(Menu, { anchorEl: anchorElement, open: Boolean(anchorElement), id: \"level-menu\", onClose: handleClose }, options.map(function (option, index) { return (React.createElement(MenuItem, { key: option.label, selected: option === selectedOption, onClick: function (event) {\n handleMenuItemClick(event, index);\n } }, translate(option.label, { _: option.defaultLabel }))); }))));\n};\nvar options = [\n {\n label: 'ra.tiptap.paragraph',\n defaultLabel: 'Normal',\n value: 'paragraph',\n },\n {\n label: 'ra.tiptap.heading1',\n defaultLabel: 'Heading 1',\n value: 'heading',\n level: 1,\n },\n {\n label: 'ra.tiptap.heading2',\n defaultLabel: 'Heading 2',\n value: 'heading',\n level: 2,\n },\n {\n label: 'ra.tiptap.heading3',\n defaultLabel: 'Heading 3',\n value: 'heading',\n level: 3,\n },\n {\n label: 'ra.tiptap.heading4',\n defaultLabel: 'Heading 4',\n value: 'heading',\n level: 4,\n },\n {\n label: 'ra.tiptap.heading5',\n defaultLabel: 'Heading 5',\n value: 'heading',\n level: 5,\n },\n {\n label: 'ra.tiptap.heading6',\n defaultLabel: 'Heading 6',\n value: 'heading',\n level: 6,\n },\n];\nvar PREFIX = 'RaRichTextInputLevelSelect';\nvar classes = {\n list: \"\".concat(PREFIX, \"-list\"),\n sizeSmall: \"\".concat(PREFIX, \"-sizeSmall\"),\n sizeLarge: \"\".concat(PREFIX, \"-sizeLarge\"),\n};\nvar Root = styled('div')(function (_a) {\n var _b;\n var theme = _a.theme;\n return (_b = {},\n _b[\"&.\".concat(classes.list)] = {\n borderRadius: theme.shape.borderRadius,\n border: \"1px solid \".concat(alpha(theme.palette.action.active, 0.12)),\n },\n _b[\"& .\".concat(classes.sizeSmall)] = {\n paddingTop: 1,\n paddingBottom: 1,\n '& .MuiTypography-root': {\n fontSize: theme.typography.pxToRem(13),\n },\n },\n _b[\"& .\".concat(classes.sizeLarge)] = {\n paddingTop: 8,\n paddingBottom: 8,\n '& .MuiTypography-root': {\n fontSize: theme.typography.pxToRem(15),\n },\n },\n _b);\n});\n//# sourceMappingURL=LevelSelect.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ToggleButton } from '@mui/material';\nimport ImageIcon from '@mui/icons-material/Image';\nimport { useTranslate } from 'ra-core';\nimport { useTiptapEditor } from '../useTiptapEditor';\nexport var ImageButtons = function (props) {\n var translate = useTranslate();\n var editor = useTiptapEditor();\n var label = translate('ra.tiptap.image', { _: 'Image' });\n var addImage = React.useCallback(function () {\n var url = window.prompt(translate('ra.tiptap.image_dialog', { _: 'Image URL' }));\n if (url) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n }, [editor, translate]);\n return editor ? (React.createElement(ToggleButton, __assign({ \"aria-label\": label, title: label }, props, { disabled: !(editor === null || editor === void 0 ? void 0 : editor.isEditable), value: \"image\", onClick: addImage }),\n React.createElement(ImageIcon, { fontSize: \"inherit\" }))) : null;\n};\n//# sourceMappingURL=ImageButtons.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { AlignmentButtons, ClearButtons, FormatButtons, LevelSelect, ListButtons, LinkButtons, QuoteButtons, ImageButtons, ColorButtons, } from './buttons';\n/**\n * A toolbar for the <RichTextInput>.\n * @param props The toolbar props.\n * @param {ReactNode} props.children The toolbar children, usually many <ToggleButton>.\n * @param {'small' | 'medium' | 'large'} props.size The default size to apply to the **default** children.\n *\n * @example <caption>Customizing the size</caption>\n * import { RichTextInput, RichTextInputToolbar } from 'ra-input-rich-text';\n * const MyRichTextInput = (props) => (\n * <RichTextInput\n * toolbar={<RichTextInputToolbar size=\"large\" />}\n * label=\"Body\"\n * source=\"body\"\n * {...props}\n * />\n * );\n *\n * @example <caption>Customizing the children</caption>\n * import { RichTextInput, RichTextInputToolbar } from 'ra-input-rich-text';\n * const MyRichTextInput = ({ size, ...props }) => (\n * <RichTextInput\n * toolbar={(\n * <RichTextInputToolbar>\n * <LevelSelect size={size} />\n * <FormatButtons size={size} />\n * <ColorButtons size={size} />\n * <ListButtons size={size} />\n * <LinkButtons size={size} />\n * <ImageButtons size={size} />\n * <QuoteButtons size={size} />\n * <ClearButtons size={size} />\n * </RichTextInputToolbar>\n * )}\n * label=\"Body\"\n * source=\"body\"\n * {...props}\n * />\n * );\n */\nexport var RichTextInputToolbar = function (props) {\n var _a = props.size, size = _a === void 0 ? 'medium' : _a, _b = props.children, children = _b === void 0 ? (React.createElement(React.Fragment, null,\n React.createElement(LevelSelect, { size: size }),\n React.createElement(FormatButtons, { size: size }),\n React.createElement(ColorButtons, { size: size }),\n React.createElement(AlignmentButtons, { size: size }),\n React.createElement(ListButtons, { size: size }),\n React.createElement(LinkButtons, { size: size }),\n React.createElement(ImageButtons, { size: size }),\n React.createElement(QuoteButtons, { size: size }),\n React.createElement(ClearButtons, { size: size }))) : _b, rest = __rest(props, [\"size\", \"children\"]);\n return (React.createElement(Root, __assign({ className: classes.root }, rest), children));\n};\nvar PREFIX = 'RaRichTextInputToolbar';\nvar classes = {\n root: \"\".concat(PREFIX, \"-root\"),\n};\nvar Root = styled('div')(function (_a) {\n var _b;\n var theme = _a.theme;\n return (_b = {},\n _b[\"&.\".concat(classes.root)] = {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n '& > *': {\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(1),\n },\n '& > *:last-child': {\n marginRight: 0,\n },\n },\n _b);\n});\n//# sourceMappingURL=RichTextInputToolbar.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Underline from '@tiptap/extension-underline';\nimport Link from '@tiptap/extension-link';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Image from '@tiptap/extension-image';\nimport TextStyle from '@tiptap/extension-text-style';\nimport { Color } from '@tiptap/extension-color';\nimport Highlight from '@tiptap/extension-highlight';\nimport { FormHelperText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { useInput, useResourceContext } from 'ra-core';\nimport { InputHelperText, Labeled, } from 'ra-ui-materialui';\nimport { TiptapEditorProvider } from './TiptapEditorProvider';\nimport { RichTextInputToolbar } from './RichTextInputToolbar';\n/**\n * A rich text editor for the react-admin that is accessible and supports translations. Based on [Tiptap](https://www.tiptap.dev/).\n * @param props The input props. Accept all common react-admin input props.\n * @param {EditorOptions} props.editorOptions The options to pass to the Tiptap editor. See Tiptap settings [here](https://tiptap.dev/api/editor#settings).\n * @param {ReactNode} props.toolbar The toolbar containing the editors commands.\n *\n * @example <caption>Customizing the editors options</caption>\n * import { RichTextInput, RichTextInputToolbar } from 'ra-input-rich-text';\n * const MyRichTextInput = (props) => (\n * <RichTextInput\n * toolbar={<RichTextInputToolbar size=\"large\" />}\n * label=\"Body\"\n * source=\"body\"\n * {...props}\n * />\n * );\n *\n * @example <caption>Customizing the toolbar size</caption>\n * import { RichTextInput, RichTextInputToolbar } from 'ra-input-rich-text';\n * const MyRichTextInput = (props) => (\n * <RichTextInput\n * toolbar={<RichTextInputToolbar size=\"large\" />}\n * label=\"Body\"\n * source=\"body\"\n * {...props}\n * />\n * );\n *\n * @example <caption>Customizing the toolbar commands</caption>\n * import { RichTextInput, RichTextInputToolbar } from 'ra-input-rich-text';\n * const MyRichTextInput = ({ size, ...props }) => (\n * <RichTextInput\n * toolbar={(\n * <RichTextInputToolbar>\n * <LevelSelect size={size} />\n * <FormatButtons size={size} />\n * <ColorButtons size={size} />\n * <ListButtons size={size} />\n * <LinkButtons size={size} />\n * <ImageButtons size={size} />\n * <QuoteButtons size={size} />\n * <ClearButtons size={size} />\n * </RichTextInputToolbar>\n * )}\n * label=\"Body\"\n * source=\"body\"\n * {...props}\n * />\n * );\n */\nexport var RichTextInput = function (props) {\n var _a, _b;\n var className = props.className, _c = props.defaultValue, defaultValue = _c === void 0 ? '' : _c, _d = props.disabled, disabled = _d === void 0 ? false : _d, _e = props.editorOptions, editorOptions = _e === void 0 ? DefaultEditorOptions : _e, fullWidth = props.fullWidth, helperText = props.helperText, label = props.label, _f = props.readOnly, readOnly = _f === void 0 ? false : _f, source = props.source, toolbar = props.toolbar;\n var resource = useResourceContext(props);\n var _g = useInput(__assign(__assign({}, props), { source: source, defaultValue: defaultValue })), id = _g.id, field = _g.field, isRequired = _g.isRequired, fieldState = _g.fieldState, isSubmitted = _g.formState.isSubmitted;\n var editor = useEditor(__assign(__assign({}, editorOptions), { editable: !disabled && !readOnly, content: field.value, editorProps: __assign(__assign({}, editorOptions === null || editorOptions === void 0 ? void 0 : editorOptions.editorProps), { attributes: __assign(__assign({}, (_a = editorOptions === null || editorOptions === void 0 ? void 0 : editorOptions.editorProps) === null || _a === void 0 ? void 0 : _a.attributes), { id: id }) }) }));\n var error = fieldState.error, invalid = fieldState.invalid, isTouched = fieldState.isTouched;\n useEffect(function () {\n if (!editor)\n return;\n var _a = editor.state.selection, from = _a.from, to = _a.to;\n editor.commands.setContent(field.value, false, {\n preserveWhitespace: true,\n });\n editor.commands.setTextSelection({ from: from, to: to });\n }, [editor, field.value]);\n useEffect(function () {\n var _a;\n if (!editor)\n return;\n editor.setOptions({\n editable: !disabled && !readOnly,\n editorProps: __assign(__assign({}, editorOptions === null || editorOptions === void 0 ? void 0 : editorOptions.editorProps), { attributes: __assign(__assign({}, (_a = editorOptions === null || editorOptions === void 0 ? void 0 : editorOptions.editorProps) === null || _a === void 0 ? void 0 : _a.attributes), { id: id }) }),\n });\n }, [\n disabled,\n editor,\n readOnly,\n id,\n editorOptions === null || editorOptions === void 0 ? void 0 : editorOptions.editorProps,\n (_b = editorOptions === null || editorOptions === void 0 ? void 0 : editorOptions.editorProps) === null || _b === void 0 ? void 0 : _b.attributes,\n ]);\n useEffect(function () {\n if (!editor) {\n return;\n }\n var handleEditorUpdate = function () {\n if (editor.isEmpty) {\n field.onChange('');\n field.onBlur();\n return;\n }\n var html = editor.getHTML();\n field.onChange(html);\n field.onBlur();\n };\n editor.on('update', handleEditorUpdate);\n return function () {\n editor.off('update', handleEditorUpdate);\n };\n }, [editor, field]);\n return (React.createElement(Labeled, { isRequired: isRequired, label: label, id: \"\".concat(id, \"-label\"), color: (fieldState === null || fieldState === void 0 ? void 0 : fieldState.invalid) ? 'error' : undefined, source: source, resource: resource, fullWidth: fullWidth },\n React.createElement(RichTextInputContent, { className: clsx('ra-input', \"ra-input-\".concat(source), className), editor: editor, error: error, helperText: helperText, id: id, isTouched: isTouched, isSubmitted: isSubmitted, invalid: invalid, toolbar: toolbar || React.createElement(RichTextInputToolbar, null) })));\n};\n/**\n * Extracted in a separate component so that we can remove fullWidth from the props injected by Labeled\n * and avoid warnings about unknown props on Root.\n */\nvar RichTextInputContent = function (_a) {\n var className = _a.className, editor = _a.editor, error = _a.error, fullWidth = _a.fullWidth, helperText = _a.helperText, id = _a.id, isTouched = _a.isTouched, isSubmitted = _a.isSubmitted, invalid = _a.invalid, toolbar = _a.toolbar;\n return (React.createElement(Root, { className: className },\n React.createElement(TiptapEditorProvider, { value: editor },\n toolbar,\n React.createElement(EditorContent, { \"aria-labelledby\": \"\".concat(id, \"-label\"), className: classes.editorContent, editor: editor })),\n React.createElement(FormHelperText, { className: (isTouched || isSubmitted) && invalid\n ? 'ra-rich-text-input-error'\n : '', error: (isTouched || isSubmitted) && invalid },\n React.createElement(InputHelperText, { touched: isTouched || isSubmitted, error: error === null || error === void 0 ? void 0 : error.message, helperText: helperText }))));\n};\nexport var DefaultEditorOptions = {\n extensions: [\n StarterKit,\n Underline,\n Link,\n TextAlign.configure({\n types: ['heading', 'paragraph'],\n }),\n Image.configure({\n inline: true,\n }),\n TextStyle,\n Color,\n Highlight.configure({ multicolor: true }),\n ],\n};\nvar PREFIX = 'RaRichTextInput';\nvar classes = {\n editorContent: \"\".concat(PREFIX, \"-editorContent\"),\n};\nvar Root = styled('div', {\n name: PREFIX,\n overridesResolver: function (props, styles) { return styles.root; },\n})(function (_a) {\n var _b;\n var theme = _a.theme;\n return (_b = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n },\n _b[\"& .\".concat(classes.editorContent)] = {\n width: '100%',\n '& .ProseMirror': {\n backgroundColor: theme.palette.background.default,\n borderColor: theme.palette.mode === 'light'\n ? 'rgba(0, 0, 0, 0.23)'\n : 'rgba(255, 255, 255, 0.23)',\n borderRadius: theme.shape.borderRadius,\n borderStyle: 'solid',\n borderWidth: '1px',\n padding: theme.spacing(1),\n '&[contenteditable=\"false\"], &[contenteditable=\"false\"]:hover, &[contenteditable=\"false\"]:focus': {\n backgroundColor: theme.palette.action.disabledBackground,\n },\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n '&:focus': {\n backgroundColor: theme.palette.background.default,\n },\n '& p': {\n margin: '0 0 1em 0',\n '&:last-child': {\n marginBottom: 0,\n },\n },\n },\n },\n _b);\n});\n//# sourceMappingURL=RichTextInput.js.map","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 if (!outboxUrl) throw new Error('Cannot post to outbox before user identity is loaded. Please use the loaded argument of useOutbox');\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, loaded: !!outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React, { useState, useCallback } from 'react';\nimport { Form, useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-input-rich-text';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Button, Box, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SendIcon from '@mui/icons-material/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AuthDialog } from '@semapps/auth-provider';\nimport { OBJECT_TYPES, PUBLIC_URI } from '../../constants';\nimport useOutbox from '../../hooks/useOutbox';\nimport CustomMention from './CustomMention';\n\nconst useStyles = makeStyles(theme => ({\n form: {\n marginTop: -12 // Negative margin to keep the form close to the label\n },\n container: {\n paddingLeft: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 16,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n editorContent: {\n '& > div': {\n backgroundColor: 'rgba(0, 0, 0, 0.09)',\n padding: '2px 12px',\n borderWidth: '0px !important',\n borderRadius: 0,\n borderBottom: '1px solid #FFF',\n minHeight: 60,\n outline: 'unset !important'\n },\n '& > div > p': {\n marginTop: 12,\n marginBottom: 12,\n fontFamily: theme.typography.body1.fontFamily,\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n },\n '& > div > p.is-editor-empty:first-child::before': {\n color: 'grey',\n content: 'attr(data-placeholder)',\n float: 'left',\n height: 0,\n pointerEvents: 'none'\n }\n },\n button: {\n marginTop: -10, // To go over helper text block\n marginBottom: 15\n }\n}));\n\nconst EmptyToolbar = () => null;\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity, isLoading } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n\n const onSubmit = useCallback(\n async (values) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n 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', {type: 'error'});\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n // TODO reset the form\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', {type: 'success'});\n } catch (e) {\n console.error(e);\n removeItem(tempId);\n notify(e.message, {type: 'error'});\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n const openAuthIfDisconnected = useCallback(() => {\n if (!identity?.id) {\n setOpenAuth(true);\n }\n }, [identity, setOpenAuth]);\n\n // Don't init the editor options until mentions and identity are loaded, as they can only be initialized once\n if ((mentions && !mentions.items) || isLoading) return null;\n\n return (\n <>\n <Form onSubmit={onSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar\n src={\n identity?.webIdData?.[userDataModel?.fieldsMapping?.image] ||\n identity?.profileData?.[userDataModel?.fieldsMapping?.image]\n }\n className={classes.avatar}\n />\n <RichTextInput\n source=\"comment\"\n label=\" \"\n toolbar={<EmptyToolbar />}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n placeholder ? Placeholder.configure({ placeholder }) : null,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ],\n // Disable editor if user is not connected\n editable: !!identity?.id\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </Form>\n <AuthDialog\n open={openAuth}\n onClose={() => setOpenAuth(false)}\n message=\"Pour poster un commentaire, vous devez être connecté.\"\n />\n </>\n );\n};\n\nexport default PostCommentForm;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField, ReferenceField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container} key={comment.id}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity, loaded: identityLoaded } = 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\n const headers = new Headers({ Accept: 'application/ld+json' });\n\n // Add authorization token if it is set and if the user is on the same server as the collection\n const identityOrigin = identity.id && (new URL(identity.id)).origin;\n const collectionOrigin = (new URL(collectionUrl)).origin;\n const token = localStorage.getItem('token');\n if (identityOrigin === collectionOrigin && token) {\n headers.set('Authorization', `Bearer ${token}`)\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, identity]);\n\n useEffect(() => {\n if (identityLoaded && !loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, identityLoaded, 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 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, isLoading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (isLoading) {\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, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import React 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\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 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 { useMemo } from 'react';\nimport { useGetList } 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 const { data } = useGetList(\n userResource,\n {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n","import { 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":["r","e","t","f","n","Array","isArray","length","clsx","arguments","ColorType","TiptapEditorContext","createContext","undefined","TiptapEditorProvider","_a","children","value","React","Provider","useTiptapEditor","useState","ready","setReady","editor","useContext","useEffect","onReady","isEditable","on","off","FormatButtons","props","translate","useTranslate","values","setValues","boldLabel","_","italicLabel","underlineLabel","strikeLabel","codeLabel","handleUpdate","FormatValues","reduce","acc","isActive","push","ToggleButtonGroup","__assign","disabled","onChange","event","newFormats","forEach","format","shouldBeDeactivated","includes","shouldBeActivated","FormatActions","ToggleButton","aria-label","title","FormatBold","fontSize","FormatItalic","FormatUnderlined","FormatStrikethrough","Code","bold","chain","focus","toggleBold","run","italic","toggleItalic","underline","toggleUnderline","strike","toggleStrike","code","toggleCode","ListButtons","bulletListLabel","numberListLabel","setValue","ListValues","exclusive","newFormat","ListActions","FormatListBulleted","FormatListNumbered","bulletList","toggleBulletList","orderedList","toggleOrderedList","AlignmentButtons","leftLabel","rightLabel","centerLabel","justifyLabel","currentValue","AlignmentValues","textAlign","AlignmentActions","FormatAlignLeft","FormatAlignCenter","FormatAlignRight","FormatAlignJustify","left","setTextAlign","center","right","justify","LinkButtons","currentTextSelection","state","doc","textBetween","selection","from","to","setSelection","handleSelectionChange","useEditorSelection","label","onClick","can","setLink","href","url","window","prompt","extendMarkRange","selected","InsertLink","QuoteButtons","setIsActive","toggleBlockquote","FormatQuote","ClearButtons","unsetAllMarks","FormatClear","LevelSelect","anchorElement","_b","setAnchorElement","size","_c","options","selectedOption","setSelectedOption","currentOption","option","level","Root","List","component","dense","disablePadding","className","classes","list","ListItem","button","aria-haspopup","aria-controls","currentTarget","sizeSmall","sizeLarge","ListItemText","primary","defaultLabel","ArrowDropDownIcon","Menu","anchorEl","open","Boolean","id","onClose","map","index","MenuItem","key","selectedItem","setParagraph","setHeading","handleMenuItemClick","PREFIX","concat","styled","theme","borderRadius","shape","border","alpha","palette","action","active","paddingTop","paddingBottom","& .MuiTypography-root","typography","pxToRem","ImageButtons","addImage","useCallback","setImage","src","ImageIcon","ColorButtons","showColorChoiceDialog","setShowColorChoiceDialog","FONT","colorType","setColorType","colorLabel","highlightLabel","displayColorChoiceDialog","Box","sx","position","OutsideListener","FormatColorTextIcon","BACKGROUND","FontDownloadIcon","ColorChoiceDialog","close","useTheme","colors","grey","red","orange","yellow","green","blue","purple","Card","top","p","background","default","display","flexDirection","gap","zIndex","shade","line","color","row","width","height","cursor","backgroundColor","setColor","toggleHighlight","selectColor","wrapperRef","useRef","useOutsideListener","ref","handleClickOutside","current","contains","target","document","addEventListener","removeEventListener","RichTextInputToolbar","rest","__rest","root","flexWrap","alignItems","& > *","marginRight","spacing","marginBottom","& > *:last-child","RichTextInput","defaultValue","_d","_e","editorOptions","DefaultEditorOptions","fullWidth","helperText","_f","readOnly","source","toolbar","resource","useResourceContext","useInput","_g","field","isRequired","fieldState","isSubmitted","formState","useEditor","editable","content","editorProps","attributes","error","invalid","isTouched","commands","setContent","preserveWhitespace","setTextSelection","setOptions","handleEditorUpdate","isEmpty","onBlur","html","getHTML","Labeled","RichTextInputContent","EditorContent","aria-labelledby","editorContent","FormHelperText","InputHelperText","touched","message","extensions","StarterKit","Underline","Link","TextAlign","configure","types","Image","inline","TextStyle","Color","Highlight","multicolor","name","overridesResolver","styles","& .ProseMirror","borderColor","mode","borderStyle","borderWidth","padding","&[contenteditable=\"false\"], &[contenteditable=\"false\"]:hover, &[contenteditable=\"false\"]:focus","disabledBackground","&:hover","hover","&:focus","& p","margin","&:last-child","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","post","_ref","_asyncToGenerator","_regeneratorRuntime","mark","activity","token","_yield$fetchUtils$fet","headers","wrap","_context","prev","next","Error","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","_objectSpread","@context","Headers","Content-Type","Authorization","sent","abrupt","get","stop","_callee","_x","apply","this","fetch","_callee2","blankNodesQuery","query","_yield$fetchUtils$fet2","json","_context2","buildBlankNodesQuery","construct","where","Accept","loaded","owner","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","attrs","addAttributes","parseHTML","element","getAttribute","data-mention-label","data-mention-id","useStyles","makeStyles","form","marginTop","container","paddingLeft","avatar","bottom","& > div","borderBottom","minHeight","outline","& > div > p","fontFamily","body1","marginBlockStart","marginBlockEnd","& > div > p.is-editor-empty:first-child::before","float","pointerEvents","EmptyToolbar","PostCommentForm","_userDataModel$fields","_identity$profileData","_userDataModel$fields2","context","placeholder","mentions","userResource","addItem","removeItem","record","useRecordContext","_useGetIdentity","isLoading","userDataModel","useDataModel","notify","useNotify","_useState2","_slicedToArray","expanded","setExpanded","_useState4","openAuth","setOpenAuth","onSubmit","_ref2","mentionedUsersUris","tempId","note","DOMParser","parseFromString","comment","getElementsByClassName","userUri","userLabel","link","createElement","setAttribute","URL","location","origin","encodeURIComponent","textContent","parentNode","replaceChild","innerHTML","type","Date","now","attributedTo","inReplyTo","published","toISOString","t0","console","openAuthIfDisconnected","items","Fragment","Form","Avatar","fieldsMapping","image","profileData","onFocus","_toConsumableArray","Placeholder","class","suggestion","Button","variant","endIcon","SendIcon","AuthDialog","text","fontWeight","loading","opacity","justifyContent","CommentsList","comments","sort","a","b","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","identityLoaded","setItems","setLoading","_useState6","setLoaded","_useState8","setError","collectionUrl","startsWith","identityOrigin","collectionOrigin","set","then","orderedItems","item","oldItems","itemId","filter","refetch","CommentsField","_useCollection","replies","defaultProps","CollectionList","_objectWithoutProperties","_excluded","Children","count","_useGetOne","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","_extends","boxShadow","overflow","&.selected","MentionsList","forwardRef","selectedIndex","setSelectedIndex","selectItem","command","useImperativeHandle","onKeyDown","renderMentions","popup","onStart","ReactRenderer","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","Object","keys","predicate","object","useGetList","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice","render","_id$split","_id$split2","username","host","protocol","webfingerUrl","split","links","find","l"],"mappings":"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"}