@semapps/activitypub-components 0.5.2 → 0.6.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":["../../../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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"}
1
+ {"mappings":"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","sources":["packages/activitypub-components/src/index.js","packages/activitypub-components/src/components/CommentsField/CommentsField.js","packages/activitypub-components/src/components/CommentsField/PostCommentForm.js","packages/activitypub-components/src/constants.js","packages/activitypub-components/src/hooks/useOutbox.js","packages/activitypub-components/src/components/CommentsField/CustomMention.js","packages/activitypub-components/src/components/CommentsField/CommentsList.js","packages/activitypub-components/src/hooks/useCollection.js","packages/activitypub-components/src/components/CollectionList.js","packages/activitypub-components/src/components/ReferenceCollectionField.js","packages/activitypub-components/src/hooks/useInbox.js","packages/activitypub-components/src/hooks/useWebfinger.js","packages/activitypub-components/src/hooks/useMentions/useMentions.js","packages/activitypub-components/src/hooks/useMentions/renderMentions.js","packages/activitypub-components/src/hooks/useMentions/MentionsList.js"],"sourcesContent":["// Components\nexport { default as CommentsField } from './components/CommentsField/CommentsField';\nexport { default as CollectionList } from './components/CollectionList';\nexport { default as ReferenceCollectionField } from './components/ReferenceCollectionField';\n\n// Hooks\nexport { default as useCollection } from './hooks/useCollection';\nexport { default as useInbox } from './hooks/useInbox';\nexport { default as useOutbox } from './hooks/useOutbox';\nexport { default as useWebfinger } from './hooks/useWebfinger';\nexport { default as useMentions } from './hooks/useMentions/useMentions';\n\n// Constants\nexport { ACTIVITY_TYPES, ACTOR_TYPES, OBJECT_TYPES, PUBLIC_URI } from './constants';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, placeholder, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n placeholder={placeholder}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n label: 'Commentaires',\n placeholder: 'Commencez à taper votre commentaire...',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React, { useState, useCallback } from 'react';\nimport { Form, useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-input-rich-text';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { Button, Box, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SendIcon from '@mui/icons-material/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AuthDialog } from '@semapps/auth-provider';\nimport { OBJECT_TYPES, PUBLIC_URI } from '../../constants';\nimport useOutbox from '../../hooks/useOutbox';\nimport CustomMention from './CustomMention';\n\nconst useStyles = makeStyles(theme => ({\n form: {\n marginTop: -12 // Negative margin to keep the form close to the label\n },\n container: {\n paddingLeft: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 16,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n editorContent: {\n '& > div': {\n backgroundColor: 'rgba(0, 0, 0, 0.09)',\n padding: '2px 12px',\n borderWidth: '0px !important',\n borderRadius: 0,\n borderBottom: '1px solid #FFF',\n minHeight: 60,\n outline: 'unset !important'\n },\n '& > div > p': {\n marginTop: 12,\n marginBottom: 12,\n fontFamily: theme.typography.body1.fontFamily,\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n },\n '& > div > p.is-editor-empty:first-child::before': {\n color: 'grey',\n content: 'attr(data-placeholder)',\n float: 'left',\n height: 0,\n pointerEvents: 'none'\n }\n },\n button: {\n marginTop: -10, // To go over helper text block\n marginBottom: 15\n }\n}));\n\nconst EmptyToolbar = () => null;\n\nconst PostCommentForm = ({ context, placeholder, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity, isLoading } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n\n const onSubmit = useCallback(\n async values => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n const mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n `${new URL(window.location.href).origin}/${userResource}/${encodeURIComponent(userUri)}/show`\n );\n link.textContent = `@${userLabel}`;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', { type: 'error' });\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n // TODO reset the form\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', { type: 'success' });\n } catch (e) {\n console.error(e);\n removeItem(tempId);\n notify(e.message, { type: 'error' });\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n const openAuthIfDisconnected = useCallback(() => {\n if (!identity?.id) {\n setOpenAuth(true);\n }\n }, [identity, setOpenAuth]);\n\n // Don't init the editor options until mentions and identity are loaded, as they can only be initialized once\n if ((mentions && !mentions.items) || isLoading) return null;\n\n return (\n <>\n <Form onSubmit={onSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar\n src={\n identity?.webIdData?.[userDataModel?.fieldsMapping?.image] ||\n identity?.profileData?.[userDataModel?.fieldsMapping?.image]\n }\n className={classes.avatar}\n />\n <RichTextInput\n source=\"comment\"\n label=\" \"\n toolbar={<EmptyToolbar />}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n placeholder ? Placeholder.configure({ placeholder }) : null,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ],\n // Disable editor if user is not connected\n editable: !!identity?.id\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </Form>\n <AuthDialog\n open={openAuth}\n onClose={() => setOpenAuth(false)}\n message=\"Pour poster un commentaire, vous devez être connecté.\"\n />\n </>\n );\n};\n\nexport default PostCommentForm;\n","export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVAL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'] || `${identity?.id}/sparql`;\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n if (!outboxUrl)\n throw new Error(\n 'Cannot post to outbox before user identity is loaded. Please use the loaded argument of useOutbox'\n );\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n }\n return null;\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, loaded: !!outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField, ReferenceField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container} key={comment.id}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference={userResource} source=\"attributedTo\" linkType=\"show\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity, isLoading: identityLoading } = 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 }\n 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 (!identityLoading && !loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, identityLoading, 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 { 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 }\n 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\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 }\n return null;\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n","import { useMemo } from 'react';\nimport { useGetList } from 'react-admin';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport renderMentions from './renderMentions';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n const { data } = useGetList(\n userResource,\n {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n"],"names":[],"version":3,"file":"index.cjs.js.map"}