From e67206b878af68a65a037f1e497dd39915a654cc Mon Sep 17 00:00:00 2001 From: srosset81 Date: Mon, 16 Oct 2023 18:23:51 +0200 Subject: [PATCH] Fix version mismatch error --- .../activitypub-components/dist/index.cjs.js | 4 +- .../dist/index.cjs.js.map | 2 +- .../activitypub-components/dist/index.es.js | 2 +- .../dist/index.es.js.map | 2 +- .../packages/auth-provider/dist/index.cjs.js | 2 + .../auth-provider/dist/index.cjs.js.map | 2 +- .../auth-provider/dist/index.es.js.map | 2 +- .../date-components/dist/index.cjs.js | 4 +- .../date-components/dist/index.cjs.js.map | 2 +- .../packages/date-components/dist/index.es.js | 2 +- .../date-components/dist/index.es.js.map | 2 +- .../packages/date-components/package.json | 7 +- .../field-components/dist/index.cjs.js | 6 +- .../field-components/dist/index.cjs.js.map | 2 +- .../field-components/dist/index.es.js | 4 +- .../field-components/dist/index.es.js.map | 2 +- .../packages/geo-components/dist/index.cjs.js | 2 + .../geo-components/dist/index.cjs.js.map | 2 +- .../geo-components/dist/index.es.js.map | 2 +- .../input-components/dist/index.cjs.js | 2 + .../input-components/dist/index.cjs.js.map | 2 +- .../input-components/dist/index.es.js.map | 2 +- .../interop-components/dist/index.cjs.js | 4 +- .../interop-components/dist/index.cjs.js.map | 2 +- .../interop-components/dist/index.es.js | 2 +- .../interop-components/dist/index.es.js.map | 2 +- .../list-components/dist/index.cjs.js | 2 + .../list-components/dist/index.cjs.js.map | 2 +- .../list-components/dist/index.es.js.map | 2 +- .../markdown-components/dist/index.cjs.js | 2 + .../markdown-components/dist/index.cjs.js.map | 2 +- .../markdown-components/dist/index.es.js.map | 2 +- .../packages/markdown-components/package.json | 5 +- .../semantic-data-provider/dist/index.cjs.js | 2 + .../dist/index.cjs.js.map | 2 +- .../dist/index.es.js.map | 2 +- src/frontend/yarn.lock | 5906 +++++++---------- 37 files changed, 2390 insertions(+), 3608 deletions(-) diff --git a/src/frontend/packages/activitypub-components/dist/index.cjs.js b/src/frontend/packages/activitypub-components/dist/index.cjs.js index 05942193a..d9e2e8b10 100644 --- a/src/frontend/packages/activitypub-components/dist/index.cjs.js +++ b/src/frontend/packages/activitypub-components/dist/index.cjs.js @@ -14,9 +14,11 @@ var $jwOeV$semappsfieldcomponents = require("@semapps/field-components"); var $jwOeV$tiptapreact = require("@tiptap/react"); var $jwOeV$tippyjs = require("tippy.js"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } @@ -503,7 +505,7 @@ const $d68cd57b2d06b6d5$var$CommentsList = ({ comments: comments, userResource: className: classes.label }) }), - "\xa0•\xa0", + "\xa0\u2022\xa0", /*#__PURE__*/ (0, $jwOeV$reactjsxruntime.jsx)((0, $jwOeV$reactadmin.DateField), { record: comment, variant: "body2", diff --git a/src/frontend/packages/activitypub-components/dist/index.cjs.js.map b/src/frontend/packages/activitypub-components/dist/index.cjs.js.map index 3c4072191..bd204dc37 100644 --- a/src/frontend/packages/activitypub-components/dist/index.cjs.js.map +++ b/src/frontend/packages/activitypub-components/dist/index.cjs.js.map @@ -1 +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 \n \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
\n \n \n }\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 }\n className={classes.button}\n >\n Envoyer\n \n )}\n \n
\n 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: \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 \n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n \n \n \n \n \n \n \n \n \n \n \n  • \n \n \n \n \n \n ))}\n {loading && (\n \n \n \n \n \n )}\n \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(' 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
\n \n
\n );\n }\n if (!collection) {\n return null;\n }\n\n return (\n \n {children}\n \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(' only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n \n {children}\n \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: \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
\n {props.items.length ? (\n props.items.map((item, index) => (\n selectItem(index)}\n >\n {item.label}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n );\n});\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"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 \n \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
\n \n \n }\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 }\n className={classes.button}\n >\n Envoyer\n \n )}\n \n
\n 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: \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 \n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n \n \n \n \n \n \n \n \n \n \n \n  • \n \n \n \n \n \n ))}\n {loading && (\n \n \n \n \n \n )}\n \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(' 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
\n \n
\n );\n }\n if (!collection) {\n return null;\n }\n\n return (\n \n {children}\n \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(' only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n \n {children}\n \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: \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
\n {props.items.length ? (\n props.items.map((item, index) => (\n selectItem(index)}\n >\n {item.label}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n );\n});\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/activitypub-components/dist/index.es.js b/src/frontend/packages/activitypub-components/dist/index.es.js index d24201259..d31079169 100644 --- a/src/frontend/packages/activitypub-components/dist/index.es.js +++ b/src/frontend/packages/activitypub-components/dist/index.es.js @@ -484,7 +484,7 @@ const $be88b298220210d1$var$CommentsList = ({ comments: comments, userResource: className: classes.label }) }), - "\xa0•\xa0", + "\xa0\u2022\xa0", /*#__PURE__*/ (0, $2hSwr$jsx)((0, $2hSwr$DateField), { record: comment, variant: "body2", diff --git a/src/frontend/packages/activitypub-components/dist/index.es.js.map b/src/frontend/packages/activitypub-components/dist/index.es.js.map index 85ffca387..8098573ce 100644 --- a/src/frontend/packages/activitypub-components/dist/index.es.js.map +++ b/src/frontend/packages/activitypub-components/dist/index.es.js.map @@ -1 +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 \n \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
\n \n \n }\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 }\n className={classes.button}\n >\n Envoyer\n \n )}\n \n
\n 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: \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 \n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n \n \n \n \n \n \n \n \n \n \n \n  • \n \n \n \n \n \n ))}\n {loading && (\n \n \n \n \n \n )}\n \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(' 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
\n \n
\n );\n }\n if (!collection) {\n return null;\n }\n\n return (\n \n {children}\n \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(' only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n \n {children}\n \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: \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
\n {props.items.length ? (\n props.items.map((item, index) => (\n selectItem(index)}\n >\n {item.label}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n );\n});\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"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 \n \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
\n \n \n }\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 }\n className={classes.button}\n >\n Envoyer\n \n )}\n \n
\n 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: \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 \n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n \n \n \n \n \n \n \n \n \n \n \n  • \n \n \n \n \n \n ))}\n {loading && (\n \n \n \n \n \n )}\n \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(' 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
\n \n
\n );\n }\n if (!collection) {\n return null;\n }\n\n return (\n \n {children}\n \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(' only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n \n {children}\n \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: \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
\n {props.items.length ? (\n props.items.map((item, index) => (\n selectItem(index)}\n >\n {item.label}\n \n ))\n ) : (\n
Aucun résultat
\n )}\n
\n );\n});\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/auth-provider/dist/index.cjs.js b/src/frontend/packages/auth-provider/dist/index.cjs.js index 629b77ef6..dc98848e4 100644 --- a/src/frontend/packages/auth-provider/dist/index.cjs.js +++ b/src/frontend/packages/auth-provider/dist/index.cjs.js @@ -24,9 +24,11 @@ var $2O4Ek$muistyles = require("@mui/styles"); var $2O4Ek$muiiconsmaterialAccountCircle = require("@mui/icons-material/AccountCircle"); var $2O4Ek$lodashisEqual = require("lodash/isEqual"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } diff --git a/src/frontend/packages/auth-provider/dist/index.cjs.js.map b/src/frontend/packages/auth-provider/dist/index.cjs.js.map index 4faf2a2ca..45731d180 100644 --- a/src/frontend/packages/auth-provider/dist/index.cjs.js.map +++ b/src/frontend/packages/auth-provider/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/auth-provider/src/index.js","packages/auth-provider/src/authProvider.js","packages/auth-provider/src/utils.js","packages/auth-provider/src/crud/create/CreateWithPermissions.js","packages/auth-provider/src/hooks/useCheckPermissions.js","packages/auth-provider/src/constants.js","packages/auth-provider/src/crud/edit/EditWithPermissions.js","packages/auth-provider/src/crud/edit/EditActionsWithPermissions.js","packages/auth-provider/src/components/PermissionsButton/PermissionsButton.js","packages/auth-provider/src/components/PermissionsButton/PermissionsDialog.js","packages/auth-provider/src/components/PermissionsButton/AddPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/EditPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/AgentItem.js","packages/auth-provider/src/components/PermissionsButton/AgentIcon.js","packages/auth-provider/src/hooks/useAgents.js","packages/auth-provider/src/crud/edit/EditToolbarWithPermissions.js","packages/auth-provider/src/crud/edit/DeleteButtonWithPermissions.js","packages/auth-provider/src/crud/edit/EditButtonWithPermissions.js","packages/auth-provider/src/crud/list/ListWithPermissions.js","packages/auth-provider/src/crud/list/ListActionsWithPermissions.js","packages/auth-provider/src/crud/show/ShowWithPermissions.js","packages/auth-provider/src/crud/show/ShowActionsWithPermissions.js","packages/auth-provider/src/components/AuthDialog.js","packages/auth-provider/src/components/SsoLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPageView.js","packages/auth-provider/src/components/LocalLoginPage/LocalLoginPage.js","packages/auth-provider/src/components/LocalLoginPage/SignupForm.js","packages/auth-provider/src/hooks/useSignup.js","packages/auth-provider/src/components/LocalLoginPage/validatePasswordStrength.js","packages/auth-provider/src/passwordScorer.js","packages/auth-provider/src/components/LocalLoginPage/PasswordStrengthIndicator.js","packages/auth-provider/src/components/LocalLoginPage/ColorGradientProgressBar.js","packages/auth-provider/src/components/LocalLoginPage/LoginForm.js","packages/auth-provider/src/components/LocalLoginPage/NewPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/ResetPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/SimpleBox.js","packages/auth-provider/src/components/ResourceWithPermissions.js","packages/auth-provider/src/components/UserMenu.js","packages/auth-provider/src/hooks/useCheckAuthenticated.js","packages/auth-provider/src/hooks/usePermissionsWithRefetch.js","packages/auth-provider/src/messages/english.js","packages/auth-provider/src/messages/french.js"],"sourcesContent":["export { default as authProvider } from './authProvider';\n\n// Create\nexport { default as CreateWithPermissions } from './crud/create/CreateWithPermissions';\n\n// Edit\nexport { default as EditWithPermissions } from './crud/edit/EditWithPermissions';\nexport { default as EditActionsWithPermissions } from './crud/edit/EditActionsWithPermissions';\nexport { default as EditToolbarWithPermissions } from './crud/edit/EditToolbarWithPermissions';\nexport { default as EditButtonWithPermissions } from './crud/edit/EditButtonWithPermissions';\nexport { default as DeleteButtonWithPermissions } from './crud/edit/DeleteButtonWithPermissions';\n\n// List\nexport { default as ListWithPermissions } from './crud/list/ListWithPermissions';\nexport { default as ListActionsWithPermissions } from './crud/list/ListActionsWithPermissions';\n\n// Show\nexport { default as ShowWithPermissions } from './crud/show/ShowWithPermissions';\nexport { default as ShowActionsWithPermissions } from './crud/show/ShowActionsWithPermissions';\n\nexport { default as PermissionsButton } from './components/PermissionsButton/PermissionsButton';\nexport { default as AuthDialog } from './components/AuthDialog';\nexport { default as SsoLoginPage, default as LoginPage } from './components/SsoLoginPage';\nexport { default as PodLoginPage } from './components/PodLoginPage/PodLoginPage';\nexport { default as LocalLoginPage } from './components/LocalLoginPage/LocalLoginPage';\nexport { default as ResourceWithPermissions } from './components/ResourceWithPermissions';\nexport { default as UserMenu } from './components/UserMenu';\n\nexport { default as useAgents } from './hooks/useAgents';\nexport { default as useCheckAuthenticated } from './hooks/useCheckAuthenticated';\nexport { default as useCheckPermissions } from './hooks/useCheckPermissions';\nexport { default as usePermissionsWithRefetch } from './hooks/usePermissionsWithRefetch';\nexport { default as useSignup } from './hooks/useSignup';\n\n// Password scoring\nexport { default as PasswordStrengthIndicator } from './components/LocalLoginPage/PasswordStrengthIndicator';\nexport { default as validatePasswordStrength } from './components/LocalLoginPage/validatePasswordStrength';\nexport {\n defaultScorer as defaultPasswordScorer,\n defaultOptions as defaultPasswordScorerOptions,\n createPasswordScorer\n} from './passwordScorer';\n\nexport { default as englishMessages } from './messages/english';\nexport { default as frenchMessages } from './messages/french';\n","import jwtDecode from 'jwt-decode';\nimport urlJoin from 'url-join';\nimport { defaultToArray, getAclUri, getAclContext, getAuthServerUrl } from './utils';\n\nconst AUTH_TYPE_SSO = 'sso';\nconst AUTH_TYPE_LOCAL = 'local';\nconst AUTH_TYPE_POD = 'pod';\n\nconst authProvider = ({ dataProvider, authType, allowAnonymous = true, checkUser, checkPermissions = false }) => {\n if (![AUTH_TYPE_SSO, AUTH_TYPE_LOCAL, AUTH_TYPE_POD].includes(authType))\n throw new Error('The authType parameter is missing from the auth provider');\n return {\n login: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, password } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/login'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n password: password.trim()\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n } catch (e) {\n throw new Error('ra.auth.sign_in_error');\n }\n } else {\n let redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n if (params.redirect) redirectUrl += `&redirect=${encodeURIComponent(params.redirect)}`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n signup: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, email, password, domain, ...profileData } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/signup'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n email: email.trim(),\n password: password.trim(),\n ...profileData\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n const { webId } = jwtDecode(token);\n return webId;\n } catch (e) {\n if (e.message === 'email.already.exists') {\n throw new Error('auth.message.user_email_exist');\n } else if (e.message === 'username.already.exists') {\n throw new Error('auth.message.username_exist');\n } else if (e.message === 'username.invalid') {\n throw new Error('auth.message.username_invalid');\n } else {\n throw new Error(e.message || 'ra.auth.sign_in_error');\n }\n }\n } else {\n const redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n logout: async () => {\n switch (authType) {\n case AUTH_TYPE_LOCAL:\n // Delete token but also any other value in local storage\n localStorage.clear();\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = '/';\n break;\n\n case AUTH_TYPE_SSO:\n const authServerUrl = await getAuthServerUrl(dataProvider);\n const baseUrl = new URL(window.location.href).origin;\n window.location.href = urlJoin(\n authServerUrl,\n `auth/logout?redirectUrl=${encodeURIComponent(`${urlJoin(baseUrl, 'login')}?logout=true`)}`\n );\n break;\n\n case AUTH_TYPE_POD:\n const token = localStorage.getItem('token');\n const { webId } = jwtDecode(token);\n // Delete token but also any other value in local storage\n localStorage.clear();\n window.location.href =\n urlJoin(webId, 'openApp') +\n '?type=' +\n encodeURIComponent('http://activitypods.org/ns/core#FrontAppRegistration');\n break;\n }\n\n // Avoid displaying immediately the login page\n return '/';\n },\n checkAuth: async () => {\n const token = localStorage.getItem('token');\n if (!token && !allowAnonymous) throw new Error();\n },\n checkUser: userData => {\n if (checkUser) {\n return checkUser(userData);\n }\n return true;\n },\n checkError: error => Promise.resolve(),\n getPermissions: async uri => {\n if (!checkPermissions) return;\n\n // React-admin calls getPermissions with an empty object on every page refresh\n // It also passes an object `{ params: { route: 'dashboard' } }` on the Dashboard\n // Ignore all this until we found a way to bypass these redundant calls\n if (typeof uri === 'object') return;\n\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to getPermissions must be an URL');\n\n const aclUri = getAclUri(uri);\n\n try {\n const { json } = await dataProvider.fetch(aclUri);\n return json['@graph'];\n } catch (e) {\n console.warn(`Could not fetch ACL URI ${uri}`);\n return [];\n }\n },\n addPermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to addPermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n const authorization = {\n '@id': `#${mode.replace('acl:', '')}`,\n '@type': 'acl:Authorization',\n [predicate]: agentId,\n 'acl:accessTo': uri,\n 'acl:mode': mode\n };\n\n await dataProvider.fetch(aclUri, {\n method: 'PATCH',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': [authorization]\n })\n });\n },\n removePermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to removePermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n // Fetch current permissions\n const { json } = await dataProvider.fetch(aclUri);\n\n const updatedPermissions = json['@graph']\n .filter(authorization => !authorization['@id'].includes('#Default'))\n .map(authorization => {\n const modes = defaultToArray(authorization['acl:mode']);\n let agents = defaultToArray(authorization[predicate]);\n if (mode && modes.includes(mode) && agents && agents.includes(agentId)) {\n agents = agents.filter(agent => agent !== agentId);\n }\n return { ...authorization, [predicate]: agents };\n });\n\n await dataProvider.fetch(aclUri, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': updatedPermissions\n })\n });\n },\n getIdentity: async () => {\n const token = localStorage.getItem('token');\n if (token) {\n const { webId } = jwtDecode(token);\n\n const { json: webIdData } = await dataProvider.fetch(webId);\n const { json: profileData } = webIdData.url ? await dataProvider.fetch(webIdData.url) : {};\n\n return {\n id: webId,\n fullName:\n profileData?.['vcard:given-name'] ||\n profileData?.['pair:label'] ||\n webIdData['foaf:name'] ||\n webIdData['pair:label'],\n profileData,\n webIdData\n };\n }\n },\n resetPassword: async params => {\n const { email } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/reset_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim() }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.reset_password_error');\n }\n },\n setNewPassword: async params => {\n const { email, token, password } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/new_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim(), token, password }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.new_password_error');\n }\n },\n getAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'));\n return json;\n } catch (e) {\n throw new Error('auth.notification.get_settings_error');\n }\n },\n updateAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { email, currentPassword, newPassword } = params;\n\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'), {\n method: 'POST',\n body: JSON.stringify({\n currentPassword,\n email: email?.trim(),\n newPassword\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n if (e.message === 'auth.account.invalid_password') {\n throw new Error('auth.notification.invalid_password');\n }\n\n throw new Error('auth.notification.update_settings_error');\n }\n }\n };\n};\n\nexport default authProvider;\n","import urlJoin from 'url-join';\n\nexport const defaultToArray = value => (!value ? undefined : Array.isArray(value) ? value : [value]);\n\n// Transform the URI to the one used to find the ACL\n// To be compatible with all servers, we should do a HEAD request to the resource URI\nexport const getAclUri = resourceUri => {\n const parsedUrl = new URL(resourceUri);\n return urlJoin(parsedUrl.origin, '_acl', parsedUrl.pathname);\n};\n\nexport const getAclContext = baseUri => ({\n '@base': baseUri,\n acl: 'http://www.w3.org/ns/auth/acl#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n 'acl:agent': { '@type': '@id' },\n 'acl:agentGroup': { '@type': '@id' },\n 'acl:agentClass': { '@type': '@id' },\n 'acl:mode': { '@type': '@id' },\n 'acl:accessTo': { '@type': '@id' }\n});\n\nexport const getAuthServerUrl = async dataProvider => {\n const dataServers = await dataProvider.getDataServers();\n const authServer = Object.values(dataServers).find(server => server.authServer === true);\n if (!authServer) throw new Error('Could not find a server with authServer: true. Check your dataServers config.');\n // If the server is a POD, return the root URL instead of https://domain.com/user/data\n return authServer.pod ? new URL(authServer.baseUrl).origin : authServer.baseUrl;\n};\n","import React from 'react';\nimport { Create, CreateActions, useResourceContext } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst CreateWithPermissions = props => {\n const resource = useResourceContext();\n const createContainerUri = useCreateContainer(resource);\n useCheckPermissions(createContainerUri, 'create');\n return ;\n};\n\nCreateWithPermissions.defaultProps = {\n actions: \n};\n\nexport default CreateWithPermissions;\n","import React, { useEffect } from 'react';\nimport { usePermissions, useRedirect, useNotify, useGetIdentity } from 'react-admin';\nimport { rights, forbiddenErrors } from '../constants';\n\nconst useCheckPermissions = (uri, mode, redirectUrl = '/') => {\n const { identity, isLoading } = useGetIdentity();\n const { permissions } = usePermissions(uri);\n const notify = useNotify();\n const redirect = useRedirect();\n\n useEffect(() => {\n if (!isLoading && identity && permissions && !permissions.some(p => rights[mode].includes(p['acl:mode']))) {\n notify(forbiddenErrors[mode], { type: 'error' });\n redirect(redirectUrl);\n }\n }, [permissions, identity, redirect, notify, isLoading]);\n\n return permissions;\n};\n\nexport default useCheckPermissions;\n","export const ACL_READ = 'acl:Read';\nexport const ACL_APPEND = 'acl:Append';\nexport const ACL_WRITE = 'acl:Write';\nexport const ACL_CONTROL = 'acl:Control';\n\nexport const USER_AGENT = 'acl:agent';\nexport const GROUP_AGENT = 'acl:agentGroup';\nexport const CLASS_AGENT = 'acl:agentClass';\n\nexport const ANONYMOUS_AGENT = 'foaf:Agent';\nexport const AUTHENTICATED_AGENT = 'acl:AuthenticatedAgent';\n\nexport const rightsToShow = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToList = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToCreate = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToEdit = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToDelete = [ACL_WRITE, ACL_CONTROL];\nexport const rightsToControl = [ACL_CONTROL];\n\nexport const rights = {\n show: rightsToShow,\n list: rightsToList,\n create: rightsToCreate,\n edit: rightsToEdit,\n delete: rightsToDelete,\n control: rightsToControl\n};\n\nexport const forbiddenErrors = {\n show: 'auth.message.resource_show_forbidden',\n edit: 'auth.message.resource_edit_forbidden',\n delete: 'auth.message.resource_delete_forbidden',\n control: 'auth.message.resource_control_forbidden',\n list: 'auth.message.container_list_forbidden',\n create: 'auth.message.container_create_forbidden'\n};\n\nexport const resourceRightsLabels = {\n [ACL_READ]: 'auth.right.resource.read',\n [ACL_APPEND]: 'auth.right.resource.append',\n [ACL_WRITE]: 'auth.right.resource.write',\n [ACL_CONTROL]: 'auth.right.resource.control'\n};\n\nexport const containerRightsLabels = {\n [ACL_READ]: 'auth.right.container.read',\n [ACL_WRITE]: 'auth.right.container.write',\n [ACL_CONTROL]: 'auth.right.container.control'\n};\n","import React from 'react';\nimport { Edit, useGetRecordId } from 'react-admin';\nimport EditActionsWithPermissions from './EditActionsWithPermissions';\nimport EditToolbarWithPermissions from './EditToolbarWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst EditWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'edit');\n return (\n \n {React.cloneElement(props.children, {\n toolbar: ,\n // Allow to override toolbar\n ...props.children.props\n })}\n \n );\n};\n\nEditWithPermissions.defaultProps = {\n actions: \n};\n\nexport default EditWithPermissions;\n","import React from 'react';\nimport {\n usePermissionsOptimized,\n ShowButton,\n ListButton,\n TopToolbar,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl } from '../../constants';\n\nconst EditActionsWithPermissions = () => {\n const { hasList, hasShow } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissionsOptimized(record?.id);\n return (\n \n {hasList && }\n {hasShow && }\n {!!permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default EditActionsWithPermissions;\n","import React, { useState } from 'react';\nimport { Button, useRecordContext, useResourceContext } from 'react-admin';\nimport ShareIcon from '@mui/icons-material/Share';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsDialog from './PermissionsDialog';\n\nconst PermissionsButton = ({ isContainer }) => {\n const record = useRecordContext();\n const resource = useResourceContext();\n const [showDialog, setShowDialog] = useState(false);\n const createContainer = useCreateContainer(resource);\n const uri = isContainer ? createContainer : record.id || record['@id'];\n return (\n <>\n \n setShowDialog(false)} />\n \n );\n};\n\nPermissionsButton.defaultProps = {\n isContainer: false\n};\n\nexport default PermissionsButton;\n","import React from 'react';\nimport { Button, useTranslate } from 'react-admin';\nimport { Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddPermissionsForm from './AddPermissionsForm';\nimport EditPermissionsForm from './EditPermissionsForm';\nimport useAgents from '../../hooks/useAgents';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingTop: 0,\n paddingBottom: 0,\n paddingRight: 0,\n maxHeight: 210\n }\n}));\n\nconst PermissionsDialog = ({ open, onClose, uri, isContainer }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const { agents, addPermission, removePermission } = useAgents(uri);\n\n return (\n \n \n {translate(isContainer ? 'auth.dialog.container_permissions' : 'auth.dialog.resource_permissions')}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default PermissionsDialog;\n","import React, { useEffect, useState } from 'react';\nimport { useGetList, useTranslate } from 'react-admin';\nimport { TextField, List, ListItem, ListItemAvatar, ListItemText, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport PersonIcon from '@mui/icons-material/Person';\nimport { USER_AGENT, ACL_READ } from '../../constants';\n\nconst useStyles = makeStyles(() => ({\n list: {\n padding: 0,\n width: '100%'\n },\n option: {\n padding: 0\n }\n}));\n\nconst AddPermissionsForm = ({ agents, addPermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const [value, setValue] = useState(null);\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState([]);\n\n const { data } = useGetList(\n 'Person',\n {\n pagination: { page: 1, perPage: 100 },\n sort: { field: 'pair:label', order: 'ASC' },\n filter: { q: inputValue }\n },\n {\n enabled: inputValue.length > 0\n }\n );\n\n useEffect(() => {\n setOptions(data?.length > 0 ? Object.values(data) : []);\n }, [data]);\n\n return (\n option['pair:label']}\n // Do not return agents which have already been added\n filterOptions={x => x.filter(agent => !Object.keys(agents).includes(agent.id))}\n options={options}\n noOptionsText={translate('ra.navigation.no_results')}\n autoComplete\n blurOnSelect\n clearOnBlur\n disableClearable\n value={value}\n onChange={(event, record) => {\n addPermission(record.id || record['@id'], USER_AGENT, ACL_READ);\n setValue(null);\n setInputValue('');\n setOptions([]);\n }}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={params => (\n \n )}\n renderOption={(props, option) => (\n \n \n \n \n \n \n \n \n \n \n )}\n />\n );\n};\n\nexport default AddPermissionsForm;\n","import React from 'react';\nimport { List } from '@mui/material';\nimport { styled } from '@mui/system';\nimport AgentItem from './AgentItem';\n\nconst StyledList = styled(List)(({ theme }) => ({\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper\n}));\n\nconst EditPermissionsForm = ({ isContainer, agents, addPermission, removePermission }) => {\n return (\n \n {Object.entries(agents).map(([agentId, agent]) => (\n \n ))}\n \n );\n};\n\nexport default EditPermissionsForm;\n","import React, { useState, useEffect } from 'react';\nimport { useDataProvider, useTranslate, Loading, Error } from 'react-admin';\nimport {\n Avatar,\n ListItem,\n ListItemIcon,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n IconButton,\n Menu,\n MenuItem\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport EditIcon from '@mui/icons-material/Edit';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, resourceRightsLabels, containerRightsLabels } from '../../constants';\nimport AgentIcon from './AgentIcon';\n\nconst useStyles = makeStyles(() => ({\n listItem: {\n paddingLeft: 4,\n paddingRight: 36\n },\n primaryText: {\n width: '30%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryText: {\n textAlign: 'center',\n width: '60%',\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst AgentItem = ({ isContainer, agent, addPermission, removePermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [user, setUser] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n\n useEffect(() => {\n if (agent.predicate === USER_AGENT) {\n dataProvider\n .getOne('Person', { id: agent.id })\n .then(({ data }) => {\n setUser(data);\n setLoading(false);\n })\n .catch(error => {\n setError(error);\n setLoading(false);\n });\n } else {\n setLoading(false);\n }\n }, [agent.id, agent.predicate]);\n\n // For now, do not display groups\n if (agent.predicate === GROUP_AGENT) return null;\n\n const openMenu = event => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const labels = isContainer ? containerRightsLabels : resourceRightsLabels;\n\n if (loading) return ;\n if (error) return ;\n\n return (\n \n \n \n \n \n \n \n translate(labels[p])).join(', ')}\n />\n \n \n \n \n \n {Object.entries(labels).map(([rightKey, rightLabel]) => {\n const hasPermission = agent.permissions && agent.permissions.includes(rightKey);\n return (\n {\n if (hasPermission) {\n removePermission(agent.id, agent.predicate, rightKey);\n } else {\n addPermission(agent.id, agent.predicate, rightKey);\n }\n closeMenu();\n }}\n >\n {hasPermission ? : null}\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default AgentItem;\n","import React from 'react';\nimport PublicIcon from '@mui/icons-material/Public';\nimport VpnLockIcon from '@mui/icons-material/VpnLock';\nimport PersonIcon from '@mui/icons-material/Person';\nimport GroupIcon from '@mui/icons-material/Group';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT } from '../../constants';\n\nconst AgentIcon = ({ agent }) => {\n switch (agent.predicate) {\n case CLASS_AGENT:\n return agent.id === ANONYMOUS_AGENT ? : ;\n case USER_AGENT:\n return ;\n case GROUP_AGENT:\n return ;\n default:\n throw new Error(`Unknown agent predicate: ${agent.predicate}`);\n }\n};\n\nexport default AgentIcon;\n","import { useEffect, useCallback, useState } from 'react';\nimport { usePermissions, useAuthProvider } from 'react-admin';\nimport { defaultToArray } from '../utils';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, AUTHENTICATED_AGENT } from '../constants';\n\nconst useAgents = uri => {\n const { permissions } = usePermissions(uri);\n const authProvider = useAuthProvider();\n const [agents, setAgents] = useState({});\n\n // Format list of authorized agents, based on the permissions returned for the resource\n useEffect(() => {\n const result = {\n [ANONYMOUS_AGENT]: {\n id: ANONYMOUS_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n },\n [AUTHENTICATED_AGENT]: {\n id: AUTHENTICATED_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n }\n };\n\n const appendPermission = (agentId, predicate, mode) => {\n if (result[agentId]) {\n result[agentId].permissions.push(mode);\n } else {\n result[agentId] = {\n id: agentId,\n predicate,\n permissions: [mode]\n };\n }\n };\n\n if (permissions) {\n for (const p of permissions) {\n if (p[CLASS_AGENT]) {\n defaultToArray(p[CLASS_AGENT]).forEach(agentId => appendPermission(agentId, CLASS_AGENT, p['acl:mode']));\n }\n if (p[USER_AGENT]) {\n defaultToArray(p[USER_AGENT]).forEach(userUri => appendPermission(userUri, USER_AGENT, p['acl:mode']));\n }\n if (p[GROUP_AGENT]) {\n defaultToArray(p[GROUP_AGENT]).forEach(groupUri => appendPermission(groupUri, GROUP_AGENT, p['acl:mode']));\n }\n }\n setAgents(result);\n }\n }, [permissions]);\n\n const addPermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents({\n ...agents,\n [agentId]: {\n id: agentId,\n predicate,\n permissions: agents[agentId] ? [...agents[agentId]?.permissions, mode] : [mode]\n }\n });\n authProvider.addPermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n const removePermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents(\n Object.fromEntries(\n Object.entries(agents)\n .map(([key, agent]) => {\n if (agent.id === agentId) {\n agent.permissions = agent.permissions.filter(m => m !== mode);\n }\n return [key, agent];\n })\n // Remove agents if they have no permissions (except if they are class agents)\n .filter(([_, agent]) => agent.predicate === CLASS_AGENT || agent.permissions.length > 0)\n )\n );\n authProvider.removePermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n return { agents, addPermission, removePermission };\n};\n\nexport default useAgents;\n","import React from 'react';\nimport { SaveButton, Toolbar } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\nimport DeleteButtonWithPermissions from './DeleteButtonWithPermissions';\n\nconst useStyles = makeStyles(() => ({\n toolbar: {\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between'\n }\n}));\n\nconst EditToolbarWithPermissions = props => {\n const classes = useStyles();\n return (\n \n \n \n \n );\n};\n\nexport default EditToolbarWithPermissions;\n","import React from 'react';\nimport { DeleteButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToDelete } from '../../constants';\n\nconst DeleteButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToDelete.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default DeleteButtonWithPermissions;\n","import React from 'react';\nimport { EditButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToEdit } from '../../constants';\n\nconst EditButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToEdit.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default EditButtonWithPermissions;\n","import React from 'react';\nimport { List } from 'react-admin';\nimport ListActionsWithPermissions from './ListActionsWithPermissions';\n\nconst ListWithPermissions = props => ;\n\nListWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ListWithPermissions;\n","import React from 'react';\nimport {\n CreateButton,\n ExportButton,\n useResourceDefinition,\n TopToolbar,\n usePermissions,\n useResourceContext\n} from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToCreate, rightsToControl } from '../../constants';\n\n// Do not show Export and Refresh buttons on mobile\nconst ListActionsWithPermissions = ({\n bulkActions,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total\n}) => {\n const resource = useResourceContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('xs'));\n const resourceDefinition = useResourceDefinition();\n const createContainerUri = useCreateContainer(resource);\n const { permissions } = usePermissions(createContainerUri);\n return (\n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && permissions && permissions.some(p => rightsToCreate.includes(p['acl:mode'])) && (\n \n )}\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && (\n \n )}\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithPermissions;\n","import React from 'react';\nimport { Show, useGetRecordId } from 'react-admin';\nimport ShowActionsWithPermissions from './ShowActionsWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst ShowWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'show');\n return ;\n};\n\nShowWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ShowWithPermissions;\n","import React from 'react';\nimport {\n EditButton,\n ListButton,\n TopToolbar,\n usePermissions,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl, rightsToEdit } from '../../constants';\n\nconst ShowActionsWithPermissions = () => {\n const { hasList, hasEdit } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissions(record?.id);\n return (\n \n {hasList && }\n {hasEdit && permissions && permissions.some(p => rightsToEdit.includes(p['acl:mode'])) && }\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default ShowActionsWithPermissions;\n","import React from 'react';\nimport { useLogin, useTranslate } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\n\nconst AuthDialog = ({ open, onClose, title, message, redirect, ...rest }) => {\n const login = useLogin();\n const translate = useTranslate();\n return (\n \n {translate(title)}\n \n {translate(message)}\n \n \n \n login({ redirect: redirect || window.location.pathname + window.location.search })}\n color=\"primary\"\n variant=\"contained\"\n >\n {translate('auth.action.login')}\n \n \n \n );\n};\n\nAuthDialog.defaultProps = {\n title: 'auth.dialog.login_required',\n message: 'auth.message.login_to_continue'\n};\n\nexport default AuthDialog;\n","import React, { useRef, useEffect } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useDataProvider, useAuthProvider, useLogin, useGetIdentity, useNotify } from 'react-admin';\nimport { Card, Avatar, Typography, Button, CardActions } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport LockIcon from '@mui/icons-material/Lock';\n\nconst delay = async t => new Promise(resolve => setTimeout(resolve, t));\n\n// Inspired from https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/auth/Login.tsx\nconst SsoLoginPage = ({ children, backgroundImage, buttons, userResource, propertiesExist, text, ...rest }) => {\n const containerRef = useRef();\n let backgroundImageLoaded = false;\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const { identity, isLoading } = useGetIdentity();\n\n const notify = useNotify();\n const login = useLogin();\n const dataProvider = useDataProvider();\n const authProvider = useAuthProvider();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n // Already authenticated, redirect to the home page\n navigate(searchParams.get('redirect') || '/');\n }\n }, [identity, isLoading, navigate, searchParams]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('login')) {\n if (searchParams.has('error')) {\n if (searchParams.get('error') === 'registration.not-allowed') {\n notify('auth.message.user_email_not_found', { type: 'error' });\n } else {\n notify('auth.message.bad_request', { type: 'error', error: searchParams.get('error') });\n }\n } else if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n\n localStorage.setItem('token', token);\n\n let userData;\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n\n if (propertiesExist.length > 0) {\n let allPropertiesExist = propertiesExist.every(p => userData[p]);\n while (!allPropertiesExist) {\n console.log('Waiting for all properties to have been created', propertiesExist);\n await delay(500);\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n allPropertiesExist = propertiesExist.every(p => userData[p]);\n }\n }\n\n if (!authProvider.checkUser(userData)) {\n localStorage.removeItem('token');\n notify('auth.message.user_not_allowed_to_login', { type: 'error' });\n navigate.replace('/login');\n } else if (searchParams.has('redirect')) {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = searchParams.get('redirect');\n } else if (searchParams.has('new') && searchParams.get('new') === 'true') {\n notify('auth.message.new_user_created', { type: 'info' });\n window.location.href = `/${userResource}/${encodeURIComponent(webId)}`;\n } else {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = '/';\n }\n }\n }\n\n if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', { type: 'info' });\n navigate('/');\n }\n })();\n }, [searchParams, navigate, notify, userResource]);\n\n const updateBackgroundImage = () => {\n if (!backgroundImageLoaded && containerRef.current) {\n containerRef.current.style.backgroundImage = `url(${backgroundImage})`;\n backgroundImageLoaded = true;\n }\n };\n\n // Load background image asynchronously to speed up time to interactive\n const lazyLoadBackgroundImage = () => {\n if (backgroundImage) {\n const img = new Image();\n img.onload = updateBackgroundImage;\n img.src = backgroundImage;\n }\n };\n\n useEffect(() => {\n if (!backgroundImageLoaded) {\n lazyLoadBackgroundImage();\n }\n });\n\n if (isLoading) return null;\n\n return (\n \n \n
\n \n \n \n
\n {text && {text}}\n {buttons?.map((button, i) => (\n \n {React.cloneElement(button, {\n fullWidth: true,\n variant: 'outlined',\n type: 'submit',\n onClick: () => login({}, '/login')\n })}\n \n ))}\n
\n
\n );\n};\n\nconst PREFIX = 'SsoLoginPage';\n\nexport const SsoLoginPageClasses = {\n card: `${PREFIX}-card`,\n avatar: `${PREFIX}-avatar`,\n icon: `${PREFIX}-icon`,\n switch: `${PREFIX}-switch`\n};\n\nconst Root = styled('div', {\n name: PREFIX,\n overridesResolver: (props, styles) => styles.root\n})(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n height: '1px',\n alignItems: 'center',\n justifyContent: 'flex-start',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundImage: 'radial-gradient(circle at 50% 14em, #313264 0%, #00023b 60%, #00023b 100%)',\n [`& .${SsoLoginPageClasses.card}`]: {\n minWidth: 300,\n marginTop: '6em'\n },\n [`& .${SsoLoginPageClasses.avatar}`]: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n [`& .${SsoLoginPageClasses.icon}`]: {\n backgroundColor: theme.palette.secondary[500]\n },\n [`& .${SsoLoginPageClasses.switch}`]: {\n marginBottom: '1em',\n display: 'flex',\n justifyContent: 'center'\n }\n}));\n\nSsoLoginPage.defaultProps = {\n propertiesExist: [],\n // TODO deprecate this\n buttons: [],\n userResource: 'Person'\n};\n\nexport default SsoLoginPage;\n","import React, { useMemo } from 'react';\nimport { Notification } from 'react-admin';\nimport { ThemeProvider } from '@mui/system';\nimport { createTheme } from '@mui/material/styles';\nimport { StyledEngineProvider } from '@mui/material';\nimport PodLoginPageView from './PodLoginPageView';\n\nconst PodLoginPage = props => {\n const muiTheme = useMemo(() => createTheme(props.theme), [props.theme]);\n return (\n \n \n \n \n \n \n );\n};\n\nexport default PodLoginPage;\n","import React, { useEffect, useState } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNotify, useAuthProvider, useDataProvider, useLocale, useTranslate } from 'react-admin';\nimport { Box, List, ListItem, ListItemText, ListItemAvatar, Avatar, Divider, Card, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LockIcon from '@mui/icons-material/Lock';\nimport StorageIcon from '@mui/icons-material/Storage';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.primary.main\n }\n },\n text: {\n textAlign: 'center',\n padding: '4px 8px 8px'\n },\n card: {\n minWidth: 300,\n maxWidth: 350,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n lockIconAvatar: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n lockIcon: {\n backgroundColor: theme.palette.grey['500']\n },\n list: {\n paddingTop: 0,\n paddingBottom: 0\n },\n listItem: {\n paddingTop: 5,\n paddingBottom: 5\n }\n}));\n\nconst PodLoginPageView = ({ history, location, text, customPodProviders }) => {\n const classes = useStyles();\n const notify = useNotify();\n const locale = useLocale();\n const translate = useTranslate();\n const authProvider = useAuthProvider();\n const dataProvider = useDataProvider();\n const [podProviders, setPodProviders] = useState(customPodProviders || []);\n const searchParams = new URLSearchParams(location.search);\n\n useEffect(() => {\n (async () => {\n if (podProviders.length === 0) {\n const results = await fetch('https://data.activitypods.org/pod-providers', {\n headers: {\n Accept: 'application/ld+json'\n }\n });\n if (results.ok) {\n const json = await results.json();\n // Filter POD providers by available locales\n const podProviders = json['ldp:contains'].filter(provider =>\n Array.isArray(provider['apods:locales'])\n ? provider['apods:locales'].includes(locale)\n : provider['apods:locales'] === locale\n );\n setPodProviders(podProviders);\n } else {\n notify('auth.message.pod_providers_not_loaded', 'error');\n }\n }\n })();\n }, [podProviders, setPodProviders, notify, locale]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n const response = await fetch(webId, {\n headers: {\n Accept: 'application/json'\n }\n });\n if (!response.ok) {\n notify('auth.message.unable_to_fetch_user_data', 'error');\n } else {\n const data = await response.json();\n if (!authProvider.checkUser(data)) {\n notify('auth.message.user_not_allowed_to_login', 'error');\n history.replace('/login');\n } else {\n localStorage.setItem('token', token);\n notify('auth.message.user_connected', 'info');\n // Reload to ensure the dataServers config is reset\n window.location.reload();\n window.location.href = '/?addUser=true';\n }\n }\n } else if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', 'info');\n history.push('/');\n }\n })();\n }, [searchParams, dataProvider]);\n\n if (searchParams.has('token') || searchParams.has('addUser') || searchParams.has('logout')) {\n return null;\n }\n\n return (\n \n \n
\n \n \n \n
\n \n \n {text || translate('auth.message.choose_pod_provider')}\n \n \n \n \n {podProviders.map((podProvider, i) => {\n const url = new URL(\n '/auth',\n (podProvider['apods:domainName'].includes(':') ? 'http://' : 'https://') +\n podProvider['apods:domainName']\n );\n if (searchParams.has('signup')) url.searchParams.set('signup', 'true');\n url.searchParams.set('redirect', window.location.href);\n return (\n \n \n (window.location.href = url.toString())}\n className={classes.listItem}\n >\n \n \n \n \n \n \n \n \n );\n })}\n \n \n
\n
\n );\n};\n\nexport default PodLoginPageView;\n","import React, { useEffect, useMemo } from 'react';\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom';\nimport { useTranslate, useGetIdentity } from 'react-admin';\nimport { Card, Typography } from '@mui/material';\nimport LockIcon from '@mui/icons-material/Lock';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SignupForm from './SignupForm';\nimport LoginForm from './LoginForm';\nimport NewPasswordForm from './NewPasswordForm';\nimport ResetPasswordForm from './ResetPasswordForm';\nimport SimpleBox from './SimpleBox';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(() => ({\n switch: {\n marginBottom: '1em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n }\n}));\n\n/**\n * @param {object} props Props\n * @param {boolean} props.hasSignup If to show signup form.\n * @param {boolean} props.allowUsername Indicates, if login is allowed with username (instead of email).\n * @param {string} props.postSignupRedirect Location to redirect to after signup.\n * @param {string} props.postLoginRedirect Location to redirect to after login.\n * @param {object} props.additionalSignupValues\n * @param {object} props.passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst LocalLoginPage = ({\n hasSignup,\n allowUsername,\n postSignupRedirect,\n postLoginRedirect,\n additionalSignupValues,\n passwordScorer = defaultScorer\n}) => {\n const classes = useStyles();\n const navigate = useNavigate();\n const translate = useTranslate();\n const [searchParams] = useSearchParams();\n const isSignup = hasSignup && searchParams.has('signup');\n const isResetPassword = searchParams.has('reset_password');\n const isNewPassword = searchParams.has('new_password');\n const isLogin = !isSignup && !isResetPassword && !isNewPassword;\n const redirectTo = searchParams.get('redirect');\n const { identity, isLoading } = useGetIdentity();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n if (postLoginRedirect) {\n navigate(`${postLoginRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`);\n } else if (redirectTo && redirectTo.startsWith('http')) {\n window.location.href = redirectTo;\n } else {\n navigate(redirectTo || '/');\n }\n }\n }, [identity, isLoading, navigate, redirectTo, postLoginRedirect]);\n\n const [title, text] = useMemo(() => {\n if (isSignup) {\n return ['auth.action.signup', 'auth.helper.signup'];\n }\n if (isLogin) {\n return ['auth.action.login', 'auth.helper.login'];\n }\n if (isResetPassword) {\n return ['auth.action.reset_password', 'auth.helper.reset_password'];\n }\n if (isNewPassword) {\n return ['auth.action.set_new_password', 'auth.helper.set_new_password'];\n }\n }, [isSignup, isLogin, isResetPassword, isNewPassword]);\n\n if (isLoading || identity?.id) return null;\n if (isLoading || identity?.id) return null;\n\n return (\n }>\n \n {isSignup && (\n \n )}\n {isResetPassword && }\n {isNewPassword && }\n {isLogin && }\n
\n {isSignup && (\n \n {translate('auth.action.login')}\n \n )}\n {isLogin && (\n <>\n {hasSignup && (\n
\n \n {translate('auth.action.signup')}\n \n
\n )}\n
\n \n {translate('auth.action.reset_password')}\n \n
\n \n )}\n
\n
\n
\n );\n};\n\nLocalLoginPage.defaultProps = {\n hasSignup: true,\n allowUsername: false,\n additionalSignupValues: {}\n};\n\nexport default LocalLoginPage;\n","import * as React from 'react';\nimport createSlug from 'speakingurl';\nimport {\n Form,\n useTranslate,\n useNotify,\n useSafeSetState,\n TextInput,\n required,\n email,\n useLocaleState\n} from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useSignup from '../../hooks/useSignup';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n * @param postSignupRedirect\n * @param additionalSignupValues\n * @param delayBeforeRedirect\n * @param {string} redirectTo\n * @param {object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst SignupForm = ({\n redirectTo,\n passwordScorer = defaultScorer,\n postSignupRedirect,\n additionalSignupValues,\n delayBeforeRedirect\n}) => {\n const [loading, setLoading] = useSafeSetState(false);\n const signup = useSignup();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const [locale] = useLocaleState();\n const [password, setPassword] = React.useState('');\n\n const submit = values => {\n setLoading(true);\n signup({\n ...values,\n ...additionalSignupValues\n })\n .then(webId => {\n if (delayBeforeRedirect) {\n setTimeout(() => {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }, delayBeforeRedirect);\n } else {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }\n notify('auth.message.new_user_created', { type: 'info' });\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n );\n });\n };\n\n return (\n
\n \n \n value\n ? createSlug(value, {\n lang: locale || 'fr',\n separator: '_',\n custom: ['.', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n })\n : ''\n }\n />\n \n {passwordScorer && password && !(searchParams.has('email') && searchParams.has('force-email')) && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n \n \n )}\n setPassword(e.target.value)}\n label={translate('ra.auth.password')}\n autoComplete=\"new-password\"\n fullWidth\n disabled={loading || (searchParams.has('email') && searchParams.has('force-email'))}\n validate={[required(), validatePasswordStrength(passwordScorer)]}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.signup')\n )}\n \n \n
\n );\n};\n\nSignupForm.defaultValues = {\n redirectTo: '/',\n additionalSignupValues: {}\n};\n\nexport default SignupForm;\n","import { useCallback } from 'react';\nimport { useAuthProvider } from 'react-admin';\n\nconst useSignup = () => {\n const authProvider = useAuthProvider();\n\n return useCallback((params = {}) => authProvider.signup(params), [authProvider]);\n};\n\nexport default useSignup;\n","import { defaultScorer } from '../../passwordScorer';\n\nconst validatePasswordStrength = (scorer = defaultScorer) => value => {\n if (!scorer) return undefined;\n const strength = scorer.scoreFn(value);\n if (strength < scorer.minRequiredScore) {\n return 'auth.input.password_too_weak';\n }\n return undefined;\n};\n\nexport default validatePasswordStrength;\n","// Inspired by https://github.com/bartlomiejzuber/password-strength-score\n\n/**\n * @typedef PasswordStrengthOptions\n * @property {number} isVeryLongLength - Required characters for a very long password (default: 12)\n * @property {number} isLongLength - Required characters for a long password (default: 6)\n * @property {number} isVeryLongScore - Score for a very long password (default: 2.5)\n * @property {number} isLongScore - Score for a long password (default: 1.5)\n * @property {number} uppercaseScore - Score for a password with uppercase letters (default: 1)\n * @property {number} lowercaseScore - Score for a password with lowercase letters (default: 1)\n * @property {number} numbersScore - Score for a password with numbers (default: 1)\n * @property {number} nonAlphanumericsScore - Score for a password without non-alphanumeric characters (default: 1)\n */\n\n/** @type {PasswordStrengthOptions} */\nexport const defaultOptions = {\n isVeryLongLength: 14,\n isLongLength: 8,\n isLongScore: 2,\n isVeryLongScore: 4,\n uppercaseScore: 1,\n lowercaseScore: 1,\n numbersScore: 1,\n nonAlphanumericsScore: 1\n};\n\n/**\n *\n * @param {string} password Password text.\n * @param {PasswordStrengthOptions} options Password options.\n * @returns {number} The password strength score.\n */\nexport const passwordStrength = (password, options) => {\n if (!password) {\n return 0;\n }\n\n const mergedOptions = { ...defaultOptions, ...options };\n\n const longScore = (password.length >= mergedOptions.isLongLength && mergedOptions.isLongScore) || 0;\n const veryLongScore = (password.length >= mergedOptions.isVeryLongLength && mergedOptions.isVeryLongScore) || 0;\n const lowercaseScore = (/[a-z]/.test(password) && mergedOptions.lowercaseScore) || 0;\n const uppercaseScore = (/[A-Z]/.test(password) && mergedOptions.uppercaseScore) || 0;\n const numbersScore = (/\\d/.test(password) && mergedOptions.numbersScore) || 0;\n const nonalphasScore = (/\\W/.test(password) && mergedOptions.nonAlphanumericsScore) || 0;\n\n return uppercaseScore + lowercaseScore + numbersScore + nonalphasScore + longScore + veryLongScore;\n};\n\nexport const createPasswordScorer = (options = defaultOptions, minRequiredScore = 5) => {\n const mergedOptions = { ...defaultOptions, ...options };\n\n return {\n scoreFn: password => passwordStrength(password, mergedOptions),\n minRequiredScore,\n maxScore:\n mergedOptions.uppercaseScore +\n mergedOptions.lowercaseScore +\n mergedOptions.numbersScore +\n mergedOptions.nonAlphanumericsScore +\n mergedOptions.isLongScore +\n mergedOptions.isVeryLongScore\n };\n};\n\nexport const defaultScorer = createPasswordScorer(defaultOptions, 5);\n","import React from 'react';\nimport ColorGradientProgressBar from './ColorGradientProgressBar';\nimport { defaultScorer } from '../../passwordScorer';\n\nexport default function PasswordStrengthIndicator({ scorer = defaultScorer, password, ...restProps }) {\n const strength = scorer.scoreFn(password);\n return ;\n}\n","import React from 'react';\nimport { LinearProgress } from '@mui/material';\nimport { withStyles } from '@mui/styles';\n\n/**\n * @typedef {Object} Color\n * @property {number} red\n * @property {number} green\n * @property {number} blue\n */\n\n/** Calculate a rgb-color from a gradient between `color1` and `color2`\n * @param {number} fade - Indicates the fade between `color1` and `color2` in the range [0, 1].\n * @param {Color} color1\n * @param {Color} color2\n * @returns {string} `` `rgb(${red}, ${green}, ${blue})` ``\n */\nconst colorGradient = (fade, color1, color2) => {\n var diffRed = color2.red - color1.red;\n var diffGreen = color2.green - color1.green;\n var diffBlue = color2.blue - color1.blue;\n\n var gradient = {\n red: Math.floor(color1.red + diffRed * fade),\n green: Math.floor(color1.green + diffGreen * fade),\n blue: Math.floor(color1.blue + diffBlue * fade)\n };\n\n return 'rgb(' + gradient.red + ',' + gradient.green + ',' + gradient.blue + ')';\n};\n\n/** A progress bar that changes its color between its min an max value.\n * @param {Object} props\n * @param {Color} [props.badColor = { red: 0xff, green: 0x40, blue: 0x47 }] - default: `#FF4047`\n * @param {Color} [props.goodColor = { red: 0x00, green: 0xff, blue: 0x6e }] - default: `#00FF6E`\n * @param {number} props.maxVal\n * @param {number} props.minVal\n * @param {number} props.currentVal\n */\nexport default function ColorGradientProgressBar(props) {\n const { minVal, maxVal, currentVal, badColor, goodColor, ...restProps } = props;\n\n const color1 = badColor || { red: 0xff, green: 0x40, blue: 0x47 };\n const color2 = goodColor || { red: 0x00, green: 0xff, blue: 0x6e };\n\n const fade = Math.max(0, Math.min(1, (currentVal - minVal) / (maxVal - minVal)));\n const currentColor = colorGradient(fade, color1, color2);\n\n const StyledLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: '#e0e0e0'\n },\n barColorPrimary: {\n backgroundColor: currentColor\n }\n })(LinearProgress);\n\n return ;\n}\n","import * as React from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, TextInput, required, email, useLogin } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst LoginForm = ({ redirectTo, allowUsername }) => {\n const [loading, setLoading] = useSafeSetState(false);\n const login = useLogin();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n\n const submit = values => {\n setLoading(true);\n login(values, redirectTo)\n .then(() => {\n setLoading(false);\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n validate={allowUsername ? [required()] : [required(), email()]}\n />\n \n \n {loading ? (\n \n ) : (\n translate('auth.action.login')\n )}\n \n \n
\n );\n};\n\nLoginForm.defaultValues = {\n redirectTo: '/',\n allowUsername: false\n};\n\nexport default LoginForm;\n","import React, { useState } from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, useAuthProvider, TextInput, required } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n *\n * @param {string} redirectTo\n * @param {Object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst NewPasswordForm = ({ redirectTo, passwordScorer = defaultScorer }) => {\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const token = searchParams.get('token');\n\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const [newPassword, setNewPassword] = useState('');\n\n const submit = values => {\n setLoading(true);\n authProvider\n .setNewPassword({ ...values, token })\n .then(res => {\n setTimeout(() => {\n window.location.href = `/login${redirectTo ? `?redirect=${encodeURIComponent(redirectTo)}` : ''}`;\n setLoading(false);\n }, 2000);\n notify('auth.notification.password_changed', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n {passwordScorer && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n\n \n \n )}\n setNewPassword(e.target.value)}\n format={value => (value ? value.toLowerCase() : '')}\n />\n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.set_new_password')\n )}\n \n \n
\n );\n};\n\nexport default NewPasswordForm;\n","import React from 'react';\nimport { Form, TextInput, required, useTranslate, useNotify, useSafeSetState, useAuthProvider } from 'react-admin';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst ResetPasswordForm = () => {\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const submit = values => {\n setLoading(true);\n authProvider\n .resetPassword({ ...values })\n .then(res => {\n setLoading(false);\n notify('auth.notification.reset_password_submitted', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.reset_password')\n )}\n \n \n
\n );\n};\n\nexport default ResetPasswordForm;\n","import React from 'react';\nimport { Box, Card, Typography } from '@mui/material';\nimport { Notification } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.secondary.main\n }\n },\n root: {\n backgroundColor: theme.palette.secondary.main\n },\n card: {\n minWidth: 300,\n maxWidth: 500,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n icon: {\n marginTop: 5,\n marginRight: 5\n },\n title: {\n [theme.breakpoints.down('sm')]: {\n fontWeight: 'bold',\n marginTop: 12\n }\n }\n}));\n\nconst SimpleBox = ({ title, icon, text, children }) => {\n const classes = useStyles();\n return (\n \n \n \n {icon && React.cloneElement(icon, { fontSize: 'large', className: classes.icon })}\n \n {title}\n \n \n \n {text}\n \n {children}\n \n \n \n );\n};\n\nexport default SimpleBox;\n","import React from 'react';\nimport { Resource, usePermissions } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport { rightsToCreate } from '../constants';\n\n// Not used for now. The ListWithPermissions component will handle the conditional display of the Create button.\nconst ResourceWithPermission = ({ name, create, ...rest }) => {\n const createContainer = useCreateContainer(name);\n const { permissions } = usePermissions(createContainer);\n return (\n rightsToCreate.includes(p['acl:mode'])) ? create : undefined}\n // Requesting permissions to list container is too long, we will avoid that for now\n // list={permissions && permissions.some(p => rightsToList.includes(p['acl:mode'])) ? list : undefined}\n />\n );\n};\n\nexport default ResourceWithPermission;\n","import React, { forwardRef, useCallback } from 'react';\nimport { Logout, UserMenu as RaUserMenu, useGetIdentity, useTranslate, useUserMenu } from 'react-admin';\nimport { MenuItem, ListItemIcon, ListItemText } from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\nimport EditIcon from '@mui/icons-material/Edit';\nimport { useNavigate } from 'react-router-dom';\n\n// It's important to pass the ref to allow Material UI to manage the keyboard navigation\nconst UserMenuItem = forwardRef(({ label, icon, to, ...rest }, ref) => {\n const { onClose } = useUserMenu();\n const translate = useTranslate();\n const navigate = useNavigate();\n const onClick = useCallback(() => {\n navigate(to);\n onClose();\n }, [to, onClose, navigate]);\n return (\n \n {icon && {React.cloneElement(icon, { fontSize: 'small' })}}\n {translate(label)}\n \n );\n});\n\nconst UserMenu = ({ logout, profileResource, ...otherProps }) => {\n const { identity } = useGetIdentity();\n return (\n \n {identity && identity.id !== ''\n ? [\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}/show`}\n />,\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}`}\n />,\n React.cloneElement(logout, { key: 'logout' })\n ]\n : [\n ,\n \n ]}\n \n );\n};\n\nUserMenu.defaultProps = {\n logout: ,\n profileResource: 'Person'\n};\n\nexport default UserMenu;\n","import React, { useEffect } from 'react';\nimport { useGetIdentity, useNotify, useRedirect } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\n\nconst useCheckAuthenticated = message => {\n const { identity, isLoading } = useGetIdentity();\n const notify = useNotify();\n const redirect = useRedirect();\n const location = useLocation();\n\n useEffect(() => {\n if (!isLoading && !identity?.id) {\n notify(message || 'ra.auth.auth_check_error', { type: 'error' });\n redirect(`/login?redirect=${encodeURIComponent(location.pathname + location.search)}`);\n }\n }, [isLoading, identity, redirect, notify, location]);\n\n return { identity, isLoading };\n};\n\nexport default useCheckAuthenticated;\n","import { useEffect, useCallback } from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { useGetPermissions, useSafeSetState } from 'react-admin';\n\nconst emptyParams = {};\n\n// keep a cache of already fetched permissions to initialize state for new\n// components and avoid a useless rerender if the permissions haven't changed\nconst alreadyFetchedPermissions = { '{}': undefined };\n\n// Fork of usePermissionsOptimized, with a refetch option\nconst usePermissionsWithRefetch = (params = emptyParams) => {\n const key = JSON.stringify(params);\n const [state, setState] = useSafeSetState({\n permissions: alreadyFetchedPermissions[key]\n });\n const getPermissions = useGetPermissions();\n\n const fetchPermissions = useCallback(\n () =>\n getPermissions(params)\n .then(permissions => {\n if (!isEqual(permissions, state.permissions)) {\n alreadyFetchedPermissions[key] = permissions;\n setState({ permissions });\n }\n })\n .catch(error => {\n setState({\n error\n });\n }),\n [key, params, getPermissions]\n );\n\n useEffect(() => {\n fetchPermissions();\n }, [key]);\n\n return { ...state, refetch: fetchPermissions };\n};\n\nexport default usePermissionsWithRefetch;\n","const englishMessages = {\n auth: {\n dialog: {\n container_permissions: 'Container permissions',\n resource_permissions: 'Resource permissions',\n login_required: 'Login required'\n },\n action: {\n permissions: 'Permissions',\n signup: 'Signup',\n reset_password: 'Reset password',\n set_new_password: 'Set new password',\n logout: 'Logout',\n login: 'Login',\n view_my_profile: 'View my profile',\n edit_my_profile: 'Edit my profile'\n },\n right: {\n resource: {\n read: 'Read',\n append: 'Append',\n write: 'Write',\n control: 'Control'\n },\n container: {\n read: 'List',\n append: 'Add',\n write: 'Add',\n control: 'Control'\n }\n },\n agent: {\n anonymous: 'All users',\n authenticated: 'Connected users'\n },\n input: {\n agent_select: 'Add an user...',\n name: 'Surname',\n username: 'User ID',\n email: 'Email address',\n username_or_email: 'User ID or email address',\n current_password: 'Current password',\n new_password: 'New password',\n confirm_new_password: 'Confirm new password',\n password_strength: 'Password strength',\n password_too_weak: 'Password too weak. Increase length or add special characters.'\n },\n helper: {\n login: 'Sign in to your account',\n signup: 'Create your account',\n reset_password: 'Enter your email address below and we will send you a link to reset your password',\n set_new_password: 'Please enter your email address and a new password below'\n },\n message: {\n resource_show_forbidden: 'You are not allowed to view this resource',\n resource_edit_forbidden: 'You are not allowed to edit this resource',\n resource_delete_forbidden: 'You are not allowed to delete this resource',\n resource_control_forbidden: 'You are not allowed to control this resource',\n container_create_forbidden: 'You are not allowed to create new resource',\n container_list_forbidden: 'You are not allowed to list these resources',\n user_not_allowed_to_login: 'You are not allowed to login with this account',\n user_email_not_found: 'No account found with this email address',\n user_email_exist: 'An account already exist with this email address',\n username_exist: 'An account already exist with this user ID',\n username_invalid: 'This username is invalid. Only lowercase characters, numbers, dots and hyphens are authorized',\n new_user_created: 'Your account has been successfully created',\n user_connected: 'You are now connected',\n user_disconnected: 'You are now disconnected',\n bad_request: 'Bad request (Error message returned by the server: %{error})',\n account_settings_updated: 'Your account settings have been successfully updated',\n login_to_continue: 'Please login to continue',\n choose_pod_provider:\n 'Please choose a POD provider in the list below. All application data will be saved on your POD.'\n },\n notification: {\n reset_password_submitted: 'An email has been sent with reset password instructions',\n reset_password_error: 'An error occurred',\n password_changed: 'Password changed successfully',\n new_password_error: 'An error occurred',\n invalid_password: 'Invalid password',\n get_settings_error: 'An error occurred',\n update_settings_error: 'An error occurred'\n }\n }\n};\n\nexport default englishMessages;\n","const frenchMessages = {\n auth: {\n dialog: {\n container_permissions: 'Permissions sur le container',\n resource_permissions: 'Permissions sur la ressource',\n login_required: 'Connexion requise'\n },\n action: {\n permissions: 'Permissions',\n signup: \"S'inscrire\",\n reset_password: 'Mot de passe oublié ?',\n set_new_password: 'Définir le mot de passe',\n logout: 'Se déconnecter',\n login: 'Se connecter',\n view_my_profile: 'Voir mon profil',\n edit_my_profile: 'Éditer mon profil'\n },\n right: {\n resource: {\n read: 'Lire',\n append: 'Enrichir',\n write: 'Modifier',\n control: 'Administrer'\n },\n container: {\n read: 'Lister',\n append: 'Ajouter',\n write: 'Ajouter',\n control: 'Administrer'\n }\n },\n agent: {\n anonymous: 'Tous les utilisateurs',\n authenticated: 'Utilisateurs connectés'\n },\n input: {\n agent_select: 'Ajouter un utilisateur...',\n name: 'Prénom',\n username: 'Identifiant unique',\n email: 'Adresse e-mail',\n username_or_email: 'Identifiant ou adresse e-mail',\n current_password: 'Mot de passe actuel',\n new_password: 'Nouveau mot de passe',\n confirm_new_password: 'Confirmer le nouveau mot de passe',\n password_strength: 'Force du mot de passe',\n password_too_weak: 'Mot de passe trop faible. Augmenter la longueur ou ajouter des caractères spéciaux.'\n },\n helper: {\n login: 'Connectez-vous à votre compte.',\n signup: 'Créez votre compte',\n reset_password:\n 'Entrez votre adresse mail ci-dessous et nous vous enverrons un lien pour réinitialiser votre mot de passe',\n set_new_password: 'Veuillez entrer votre adresse mail et un nouveau mot de passe ci-dessous'\n },\n message: {\n resource_show_forbidden: \"Vous n'avez pas la permission de voir cette ressource\",\n resource_edit_forbidden: \"Vous n'avez pas la permission d'éditer cette ressource\",\n resource_delete_forbidden: \"Vous n'avez pas la permission d'effacer cette ressource\",\n resource_control_forbidden: \"Vous n'avez pas la permission d'administrer cette ressource\",\n container_create_forbidden: \"Vous n'avez pas la permission de créer des ressources\",\n container_list_forbidden: \"Vous n'avez pas la permission de voir ces ressources\",\n user_not_allowed_to_login: \"Vous n'avez pas le droit de vous connecter avec ce compte\",\n user_email_not_found: 'Aucun compte trouvé avec cette adresse mail',\n user_email_exist: 'Un compte existe déjà avec cette adresse mail',\n username_exist: 'Un compte existe déjà avec cet identifiant',\n username_invalid:\n \"Cet identifiant n'est pas valide. Seuls les lettres minuscules, les chiffres, les points et les tirets sont autorisés\",\n new_user_created: 'Votre compte a été créé avec succès',\n user_connected: 'Vous êtes maintenant connecté',\n user_disconnected: 'Vous êtes maintenant déconnecté',\n bad_request: \"Requête erronée (Message d'erreur renvoyé par le serveur: %{error})\",\n account_settings_updated: 'Les paramètres de votre compte ont été mis à jour avec succès',\n login_to_continue: 'Veuillez vous connecter pour continuer',\n choose_pod_provider:\n \"Veuillez choisir un fournisseur de PODs dans la liste ci-dessous. Toutes les données de l'application seront enregistrées sur votre POD.\"\n },\n notification: {\n reset_password_submitted: 'Un e-mail a été envoyé avec les instructions de réinitialisation du mot de passe',\n reset_password_error: \"Une erreur s'est produite\",\n password_changed: 'Le mot de passe a été changé avec succès',\n new_password_error: \"Une erreur s'est produite\",\n invalid_password: 'Mot de passe incorrect',\n get_settings_error: \"Une erreur s'est produite\",\n update_settings_error: \"Une erreur s'est produite\"\n }\n }\n};\n\nexport default frenchMessages;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/auth-provider/src/index.js","packages/auth-provider/src/authProvider.js","packages/auth-provider/src/utils.js","packages/auth-provider/src/crud/create/CreateWithPermissions.js","packages/auth-provider/src/hooks/useCheckPermissions.js","packages/auth-provider/src/constants.js","packages/auth-provider/src/crud/edit/EditWithPermissions.js","packages/auth-provider/src/crud/edit/EditActionsWithPermissions.js","packages/auth-provider/src/components/PermissionsButton/PermissionsButton.js","packages/auth-provider/src/components/PermissionsButton/PermissionsDialog.js","packages/auth-provider/src/components/PermissionsButton/AddPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/EditPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/AgentItem.js","packages/auth-provider/src/components/PermissionsButton/AgentIcon.js","packages/auth-provider/src/hooks/useAgents.js","packages/auth-provider/src/crud/edit/EditToolbarWithPermissions.js","packages/auth-provider/src/crud/edit/DeleteButtonWithPermissions.js","packages/auth-provider/src/crud/edit/EditButtonWithPermissions.js","packages/auth-provider/src/crud/list/ListWithPermissions.js","packages/auth-provider/src/crud/list/ListActionsWithPermissions.js","packages/auth-provider/src/crud/show/ShowWithPermissions.js","packages/auth-provider/src/crud/show/ShowActionsWithPermissions.js","packages/auth-provider/src/components/AuthDialog.js","packages/auth-provider/src/components/SsoLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPageView.js","packages/auth-provider/src/components/LocalLoginPage/LocalLoginPage.js","packages/auth-provider/src/components/LocalLoginPage/SignupForm.js","packages/auth-provider/src/hooks/useSignup.js","packages/auth-provider/src/components/LocalLoginPage/validatePasswordStrength.js","packages/auth-provider/src/passwordScorer.js","packages/auth-provider/src/components/LocalLoginPage/PasswordStrengthIndicator.js","packages/auth-provider/src/components/LocalLoginPage/ColorGradientProgressBar.js","packages/auth-provider/src/components/LocalLoginPage/LoginForm.js","packages/auth-provider/src/components/LocalLoginPage/NewPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/ResetPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/SimpleBox.js","packages/auth-provider/src/components/ResourceWithPermissions.js","packages/auth-provider/src/components/UserMenu.js","packages/auth-provider/src/hooks/useCheckAuthenticated.js","packages/auth-provider/src/hooks/usePermissionsWithRefetch.js","packages/auth-provider/src/messages/english.js","packages/auth-provider/src/messages/french.js"],"sourcesContent":["export { default as authProvider } from './authProvider';\n\n// Create\nexport { default as CreateWithPermissions } from './crud/create/CreateWithPermissions';\n\n// Edit\nexport { default as EditWithPermissions } from './crud/edit/EditWithPermissions';\nexport { default as EditActionsWithPermissions } from './crud/edit/EditActionsWithPermissions';\nexport { default as EditToolbarWithPermissions } from './crud/edit/EditToolbarWithPermissions';\nexport { default as EditButtonWithPermissions } from './crud/edit/EditButtonWithPermissions';\nexport { default as DeleteButtonWithPermissions } from './crud/edit/DeleteButtonWithPermissions';\n\n// List\nexport { default as ListWithPermissions } from './crud/list/ListWithPermissions';\nexport { default as ListActionsWithPermissions } from './crud/list/ListActionsWithPermissions';\n\n// Show\nexport { default as ShowWithPermissions } from './crud/show/ShowWithPermissions';\nexport { default as ShowActionsWithPermissions } from './crud/show/ShowActionsWithPermissions';\n\nexport { default as PermissionsButton } from './components/PermissionsButton/PermissionsButton';\nexport { default as AuthDialog } from './components/AuthDialog';\nexport { default as SsoLoginPage, default as LoginPage } from './components/SsoLoginPage';\nexport { default as PodLoginPage } from './components/PodLoginPage/PodLoginPage';\nexport { default as LocalLoginPage } from './components/LocalLoginPage/LocalLoginPage';\nexport { default as ResourceWithPermissions } from './components/ResourceWithPermissions';\nexport { default as UserMenu } from './components/UserMenu';\n\nexport { default as useAgents } from './hooks/useAgents';\nexport { default as useCheckAuthenticated } from './hooks/useCheckAuthenticated';\nexport { default as useCheckPermissions } from './hooks/useCheckPermissions';\nexport { default as usePermissionsWithRefetch } from './hooks/usePermissionsWithRefetch';\nexport { default as useSignup } from './hooks/useSignup';\n\n// Password scoring\nexport { default as PasswordStrengthIndicator } from './components/LocalLoginPage/PasswordStrengthIndicator';\nexport { default as validatePasswordStrength } from './components/LocalLoginPage/validatePasswordStrength';\nexport {\n defaultScorer as defaultPasswordScorer,\n defaultOptions as defaultPasswordScorerOptions,\n createPasswordScorer\n} from './passwordScorer';\n\nexport { default as englishMessages } from './messages/english';\nexport { default as frenchMessages } from './messages/french';\n","import jwtDecode from 'jwt-decode';\nimport urlJoin from 'url-join';\nimport { defaultToArray, getAclUri, getAclContext, getAuthServerUrl } from './utils';\n\nconst AUTH_TYPE_SSO = 'sso';\nconst AUTH_TYPE_LOCAL = 'local';\nconst AUTH_TYPE_POD = 'pod';\n\nconst authProvider = ({ dataProvider, authType, allowAnonymous = true, checkUser, checkPermissions = false }) => {\n if (![AUTH_TYPE_SSO, AUTH_TYPE_LOCAL, AUTH_TYPE_POD].includes(authType))\n throw new Error('The authType parameter is missing from the auth provider');\n return {\n login: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, password } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/login'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n password: password.trim()\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n } catch (e) {\n throw new Error('ra.auth.sign_in_error');\n }\n } else {\n let redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n if (params.redirect) redirectUrl += `&redirect=${encodeURIComponent(params.redirect)}`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n signup: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, email, password, domain, ...profileData } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/signup'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n email: email.trim(),\n password: password.trim(),\n ...profileData\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n const { webId } = jwtDecode(token);\n return webId;\n } catch (e) {\n if (e.message === 'email.already.exists') {\n throw new Error('auth.message.user_email_exist');\n } else if (e.message === 'username.already.exists') {\n throw new Error('auth.message.username_exist');\n } else if (e.message === 'username.invalid') {\n throw new Error('auth.message.username_invalid');\n } else {\n throw new Error(e.message || 'ra.auth.sign_in_error');\n }\n }\n } else {\n const redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n logout: async () => {\n switch (authType) {\n case AUTH_TYPE_LOCAL:\n // Delete token but also any other value in local storage\n localStorage.clear();\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = '/';\n break;\n\n case AUTH_TYPE_SSO:\n const authServerUrl = await getAuthServerUrl(dataProvider);\n const baseUrl = new URL(window.location.href).origin;\n window.location.href = urlJoin(\n authServerUrl,\n `auth/logout?redirectUrl=${encodeURIComponent(`${urlJoin(baseUrl, 'login')}?logout=true`)}`\n );\n break;\n\n case AUTH_TYPE_POD:\n const token = localStorage.getItem('token');\n const { webId } = jwtDecode(token);\n // Delete token but also any other value in local storage\n localStorage.clear();\n window.location.href =\n urlJoin(webId, 'openApp') +\n '?type=' +\n encodeURIComponent('http://activitypods.org/ns/core#FrontAppRegistration');\n break;\n }\n\n // Avoid displaying immediately the login page\n return '/';\n },\n checkAuth: async () => {\n const token = localStorage.getItem('token');\n if (!token && !allowAnonymous) throw new Error();\n },\n checkUser: userData => {\n if (checkUser) {\n return checkUser(userData);\n }\n return true;\n },\n checkError: error => Promise.resolve(),\n getPermissions: async uri => {\n if (!checkPermissions) return;\n\n // React-admin calls getPermissions with an empty object on every page refresh\n // It also passes an object `{ params: { route: 'dashboard' } }` on the Dashboard\n // Ignore all this until we found a way to bypass these redundant calls\n if (typeof uri === 'object') return;\n\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to getPermissions must be an URL');\n\n const aclUri = getAclUri(uri);\n\n try {\n const { json } = await dataProvider.fetch(aclUri);\n return json['@graph'];\n } catch (e) {\n console.warn(`Could not fetch ACL URI ${uri}`);\n return [];\n }\n },\n addPermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to addPermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n const authorization = {\n '@id': `#${mode.replace('acl:', '')}`,\n '@type': 'acl:Authorization',\n [predicate]: agentId,\n 'acl:accessTo': uri,\n 'acl:mode': mode\n };\n\n await dataProvider.fetch(aclUri, {\n method: 'PATCH',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': [authorization]\n })\n });\n },\n removePermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to removePermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n // Fetch current permissions\n const { json } = await dataProvider.fetch(aclUri);\n\n const updatedPermissions = json['@graph']\n .filter(authorization => !authorization['@id'].includes('#Default'))\n .map(authorization => {\n const modes = defaultToArray(authorization['acl:mode']);\n let agents = defaultToArray(authorization[predicate]);\n if (mode && modes.includes(mode) && agents && agents.includes(agentId)) {\n agents = agents.filter(agent => agent !== agentId);\n }\n return { ...authorization, [predicate]: agents };\n });\n\n await dataProvider.fetch(aclUri, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': updatedPermissions\n })\n });\n },\n getIdentity: async () => {\n const token = localStorage.getItem('token');\n if (token) {\n const { webId } = jwtDecode(token);\n\n const { json: webIdData } = await dataProvider.fetch(webId);\n const { json: profileData } = webIdData.url ? await dataProvider.fetch(webIdData.url) : {};\n\n return {\n id: webId,\n fullName:\n profileData?.['vcard:given-name'] ||\n profileData?.['pair:label'] ||\n webIdData['foaf:name'] ||\n webIdData['pair:label'],\n profileData,\n webIdData\n };\n }\n },\n resetPassword: async params => {\n const { email } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/reset_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim() }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.reset_password_error');\n }\n },\n setNewPassword: async params => {\n const { email, token, password } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/new_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim(), token, password }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.new_password_error');\n }\n },\n getAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'));\n return json;\n } catch (e) {\n throw new Error('auth.notification.get_settings_error');\n }\n },\n updateAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { email, currentPassword, newPassword } = params;\n\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'), {\n method: 'POST',\n body: JSON.stringify({\n currentPassword,\n email: email?.trim(),\n newPassword\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n if (e.message === 'auth.account.invalid_password') {\n throw new Error('auth.notification.invalid_password');\n }\n\n throw new Error('auth.notification.update_settings_error');\n }\n }\n };\n};\n\nexport default authProvider;\n","import urlJoin from 'url-join';\n\nexport const defaultToArray = value => (!value ? undefined : Array.isArray(value) ? value : [value]);\n\n// Transform the URI to the one used to find the ACL\n// To be compatible with all servers, we should do a HEAD request to the resource URI\nexport const getAclUri = resourceUri => {\n const parsedUrl = new URL(resourceUri);\n return urlJoin(parsedUrl.origin, '_acl', parsedUrl.pathname);\n};\n\nexport const getAclContext = baseUri => ({\n '@base': baseUri,\n acl: 'http://www.w3.org/ns/auth/acl#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n 'acl:agent': { '@type': '@id' },\n 'acl:agentGroup': { '@type': '@id' },\n 'acl:agentClass': { '@type': '@id' },\n 'acl:mode': { '@type': '@id' },\n 'acl:accessTo': { '@type': '@id' }\n});\n\nexport const getAuthServerUrl = async dataProvider => {\n const dataServers = await dataProvider.getDataServers();\n const authServer = Object.values(dataServers).find(server => server.authServer === true);\n if (!authServer) throw new Error('Could not find a server with authServer: true. Check your dataServers config.');\n // If the server is a POD, return the root URL instead of https://domain.com/user/data\n return authServer.pod ? new URL(authServer.baseUrl).origin : authServer.baseUrl;\n};\n","import React from 'react';\nimport { Create, CreateActions, useResourceContext } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst CreateWithPermissions = props => {\n const resource = useResourceContext();\n const createContainerUri = useCreateContainer(resource);\n useCheckPermissions(createContainerUri, 'create');\n return ;\n};\n\nCreateWithPermissions.defaultProps = {\n actions: \n};\n\nexport default CreateWithPermissions;\n","import React, { useEffect } from 'react';\nimport { usePermissions, useRedirect, useNotify, useGetIdentity } from 'react-admin';\nimport { rights, forbiddenErrors } from '../constants';\n\nconst useCheckPermissions = (uri, mode, redirectUrl = '/') => {\n const { identity, isLoading } = useGetIdentity();\n const { permissions } = usePermissions(uri);\n const notify = useNotify();\n const redirect = useRedirect();\n\n useEffect(() => {\n if (!isLoading && identity && permissions && !permissions.some(p => rights[mode].includes(p['acl:mode']))) {\n notify(forbiddenErrors[mode], { type: 'error' });\n redirect(redirectUrl);\n }\n }, [permissions, identity, redirect, notify, isLoading]);\n\n return permissions;\n};\n\nexport default useCheckPermissions;\n","export const ACL_READ = 'acl:Read';\nexport const ACL_APPEND = 'acl:Append';\nexport const ACL_WRITE = 'acl:Write';\nexport const ACL_CONTROL = 'acl:Control';\n\nexport const USER_AGENT = 'acl:agent';\nexport const GROUP_AGENT = 'acl:agentGroup';\nexport const CLASS_AGENT = 'acl:agentClass';\n\nexport const ANONYMOUS_AGENT = 'foaf:Agent';\nexport const AUTHENTICATED_AGENT = 'acl:AuthenticatedAgent';\n\nexport const rightsToShow = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToList = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToCreate = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToEdit = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToDelete = [ACL_WRITE, ACL_CONTROL];\nexport const rightsToControl = [ACL_CONTROL];\n\nexport const rights = {\n show: rightsToShow,\n list: rightsToList,\n create: rightsToCreate,\n edit: rightsToEdit,\n delete: rightsToDelete,\n control: rightsToControl\n};\n\nexport const forbiddenErrors = {\n show: 'auth.message.resource_show_forbidden',\n edit: 'auth.message.resource_edit_forbidden',\n delete: 'auth.message.resource_delete_forbidden',\n control: 'auth.message.resource_control_forbidden',\n list: 'auth.message.container_list_forbidden',\n create: 'auth.message.container_create_forbidden'\n};\n\nexport const resourceRightsLabels = {\n [ACL_READ]: 'auth.right.resource.read',\n [ACL_APPEND]: 'auth.right.resource.append',\n [ACL_WRITE]: 'auth.right.resource.write',\n [ACL_CONTROL]: 'auth.right.resource.control'\n};\n\nexport const containerRightsLabels = {\n [ACL_READ]: 'auth.right.container.read',\n [ACL_WRITE]: 'auth.right.container.write',\n [ACL_CONTROL]: 'auth.right.container.control'\n};\n","import React from 'react';\nimport { Edit, useGetRecordId } from 'react-admin';\nimport EditActionsWithPermissions from './EditActionsWithPermissions';\nimport EditToolbarWithPermissions from './EditToolbarWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst EditWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'edit');\n return (\n \n {React.cloneElement(props.children, {\n toolbar: ,\n // Allow to override toolbar\n ...props.children.props\n })}\n \n );\n};\n\nEditWithPermissions.defaultProps = {\n actions: \n};\n\nexport default EditWithPermissions;\n","import React from 'react';\nimport {\n usePermissionsOptimized,\n ShowButton,\n ListButton,\n TopToolbar,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl } from '../../constants';\n\nconst EditActionsWithPermissions = () => {\n const { hasList, hasShow } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissionsOptimized(record?.id);\n return (\n \n {hasList && }\n {hasShow && }\n {!!permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default EditActionsWithPermissions;\n","import React, { useState } from 'react';\nimport { Button, useRecordContext, useResourceContext } from 'react-admin';\nimport ShareIcon from '@mui/icons-material/Share';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsDialog from './PermissionsDialog';\n\nconst PermissionsButton = ({ isContainer }) => {\n const record = useRecordContext();\n const resource = useResourceContext();\n const [showDialog, setShowDialog] = useState(false);\n const createContainer = useCreateContainer(resource);\n const uri = isContainer ? createContainer : record.id || record['@id'];\n return (\n <>\n \n setShowDialog(false)} />\n \n );\n};\n\nPermissionsButton.defaultProps = {\n isContainer: false\n};\n\nexport default PermissionsButton;\n","import React from 'react';\nimport { Button, useTranslate } from 'react-admin';\nimport { Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddPermissionsForm from './AddPermissionsForm';\nimport EditPermissionsForm from './EditPermissionsForm';\nimport useAgents from '../../hooks/useAgents';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingTop: 0,\n paddingBottom: 0,\n paddingRight: 0,\n maxHeight: 210\n }\n}));\n\nconst PermissionsDialog = ({ open, onClose, uri, isContainer }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const { agents, addPermission, removePermission } = useAgents(uri);\n\n return (\n \n \n {translate(isContainer ? 'auth.dialog.container_permissions' : 'auth.dialog.resource_permissions')}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default PermissionsDialog;\n","import React, { useEffect, useState } from 'react';\nimport { useGetList, useTranslate } from 'react-admin';\nimport { TextField, List, ListItem, ListItemAvatar, ListItemText, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport PersonIcon from '@mui/icons-material/Person';\nimport { USER_AGENT, ACL_READ } from '../../constants';\n\nconst useStyles = makeStyles(() => ({\n list: {\n padding: 0,\n width: '100%'\n },\n option: {\n padding: 0\n }\n}));\n\nconst AddPermissionsForm = ({ agents, addPermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const [value, setValue] = useState(null);\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState([]);\n\n const { data } = useGetList(\n 'Person',\n {\n pagination: { page: 1, perPage: 100 },\n sort: { field: 'pair:label', order: 'ASC' },\n filter: { q: inputValue }\n },\n {\n enabled: inputValue.length > 0\n }\n );\n\n useEffect(() => {\n setOptions(data?.length > 0 ? Object.values(data) : []);\n }, [data]);\n\n return (\n option['pair:label']}\n // Do not return agents which have already been added\n filterOptions={x => x.filter(agent => !Object.keys(agents).includes(agent.id))}\n options={options}\n noOptionsText={translate('ra.navigation.no_results')}\n autoComplete\n blurOnSelect\n clearOnBlur\n disableClearable\n value={value}\n onChange={(event, record) => {\n addPermission(record.id || record['@id'], USER_AGENT, ACL_READ);\n setValue(null);\n setInputValue('');\n setOptions([]);\n }}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={params => (\n \n )}\n renderOption={(props, option) => (\n \n \n \n \n \n \n \n \n \n \n )}\n />\n );\n};\n\nexport default AddPermissionsForm;\n","import React from 'react';\nimport { List } from '@mui/material';\nimport { styled } from '@mui/system';\nimport AgentItem from './AgentItem';\n\nconst StyledList = styled(List)(({ theme }) => ({\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper\n}));\n\nconst EditPermissionsForm = ({ isContainer, agents, addPermission, removePermission }) => {\n return (\n \n {Object.entries(agents).map(([agentId, agent]) => (\n \n ))}\n \n );\n};\n\nexport default EditPermissionsForm;\n","import React, { useState, useEffect } from 'react';\nimport { useDataProvider, useTranslate, Loading, Error } from 'react-admin';\nimport {\n Avatar,\n ListItem,\n ListItemIcon,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n IconButton,\n Menu,\n MenuItem\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport EditIcon from '@mui/icons-material/Edit';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, resourceRightsLabels, containerRightsLabels } from '../../constants';\nimport AgentIcon from './AgentIcon';\n\nconst useStyles = makeStyles(() => ({\n listItem: {\n paddingLeft: 4,\n paddingRight: 36\n },\n primaryText: {\n width: '30%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryText: {\n textAlign: 'center',\n width: '60%',\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst AgentItem = ({ isContainer, agent, addPermission, removePermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [user, setUser] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n\n useEffect(() => {\n if (agent.predicate === USER_AGENT) {\n dataProvider\n .getOne('Person', { id: agent.id })\n .then(({ data }) => {\n setUser(data);\n setLoading(false);\n })\n .catch(error => {\n setError(error);\n setLoading(false);\n });\n } else {\n setLoading(false);\n }\n }, [agent.id, agent.predicate]);\n\n // For now, do not display groups\n if (agent.predicate === GROUP_AGENT) return null;\n\n const openMenu = event => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const labels = isContainer ? containerRightsLabels : resourceRightsLabels;\n\n if (loading) return ;\n if (error) return ;\n\n return (\n \n \n \n \n \n \n \n translate(labels[p])).join(', ')}\n />\n \n \n \n \n \n {Object.entries(labels).map(([rightKey, rightLabel]) => {\n const hasPermission = agent.permissions && agent.permissions.includes(rightKey);\n return (\n {\n if (hasPermission) {\n removePermission(agent.id, agent.predicate, rightKey);\n } else {\n addPermission(agent.id, agent.predicate, rightKey);\n }\n closeMenu();\n }}\n >\n {hasPermission ? : null}\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default AgentItem;\n","import React from 'react';\nimport PublicIcon from '@mui/icons-material/Public';\nimport VpnLockIcon from '@mui/icons-material/VpnLock';\nimport PersonIcon from '@mui/icons-material/Person';\nimport GroupIcon from '@mui/icons-material/Group';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT } from '../../constants';\n\nconst AgentIcon = ({ agent }) => {\n switch (agent.predicate) {\n case CLASS_AGENT:\n return agent.id === ANONYMOUS_AGENT ? : ;\n case USER_AGENT:\n return ;\n case GROUP_AGENT:\n return ;\n default:\n throw new Error(`Unknown agent predicate: ${agent.predicate}`);\n }\n};\n\nexport default AgentIcon;\n","import { useEffect, useCallback, useState } from 'react';\nimport { usePermissions, useAuthProvider } from 'react-admin';\nimport { defaultToArray } from '../utils';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, AUTHENTICATED_AGENT } from '../constants';\n\nconst useAgents = uri => {\n const { permissions } = usePermissions(uri);\n const authProvider = useAuthProvider();\n const [agents, setAgents] = useState({});\n\n // Format list of authorized agents, based on the permissions returned for the resource\n useEffect(() => {\n const result = {\n [ANONYMOUS_AGENT]: {\n id: ANONYMOUS_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n },\n [AUTHENTICATED_AGENT]: {\n id: AUTHENTICATED_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n }\n };\n\n const appendPermission = (agentId, predicate, mode) => {\n if (result[agentId]) {\n result[agentId].permissions.push(mode);\n } else {\n result[agentId] = {\n id: agentId,\n predicate,\n permissions: [mode]\n };\n }\n };\n\n if (permissions) {\n for (const p of permissions) {\n if (p[CLASS_AGENT]) {\n defaultToArray(p[CLASS_AGENT]).forEach(agentId => appendPermission(agentId, CLASS_AGENT, p['acl:mode']));\n }\n if (p[USER_AGENT]) {\n defaultToArray(p[USER_AGENT]).forEach(userUri => appendPermission(userUri, USER_AGENT, p['acl:mode']));\n }\n if (p[GROUP_AGENT]) {\n defaultToArray(p[GROUP_AGENT]).forEach(groupUri => appendPermission(groupUri, GROUP_AGENT, p['acl:mode']));\n }\n }\n setAgents(result);\n }\n }, [permissions]);\n\n const addPermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents({\n ...agents,\n [agentId]: {\n id: agentId,\n predicate,\n permissions: agents[agentId] ? [...agents[agentId]?.permissions, mode] : [mode]\n }\n });\n authProvider.addPermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n const removePermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents(\n Object.fromEntries(\n Object.entries(agents)\n .map(([key, agent]) => {\n if (agent.id === agentId) {\n agent.permissions = agent.permissions.filter(m => m !== mode);\n }\n return [key, agent];\n })\n // Remove agents if they have no permissions (except if they are class agents)\n .filter(([_, agent]) => agent.predicate === CLASS_AGENT || agent.permissions.length > 0)\n )\n );\n authProvider.removePermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n return { agents, addPermission, removePermission };\n};\n\nexport default useAgents;\n","import React from 'react';\nimport { SaveButton, Toolbar } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\nimport DeleteButtonWithPermissions from './DeleteButtonWithPermissions';\n\nconst useStyles = makeStyles(() => ({\n toolbar: {\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between'\n }\n}));\n\nconst EditToolbarWithPermissions = props => {\n const classes = useStyles();\n return (\n \n \n \n \n );\n};\n\nexport default EditToolbarWithPermissions;\n","import React from 'react';\nimport { DeleteButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToDelete } from '../../constants';\n\nconst DeleteButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToDelete.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default DeleteButtonWithPermissions;\n","import React from 'react';\nimport { EditButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToEdit } from '../../constants';\n\nconst EditButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToEdit.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default EditButtonWithPermissions;\n","import React from 'react';\nimport { List } from 'react-admin';\nimport ListActionsWithPermissions from './ListActionsWithPermissions';\n\nconst ListWithPermissions = props => ;\n\nListWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ListWithPermissions;\n","import React from 'react';\nimport {\n CreateButton,\n ExportButton,\n useResourceDefinition,\n TopToolbar,\n usePermissions,\n useResourceContext\n} from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToCreate, rightsToControl } from '../../constants';\n\n// Do not show Export and Refresh buttons on mobile\nconst ListActionsWithPermissions = ({\n bulkActions,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total\n}) => {\n const resource = useResourceContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('xs'));\n const resourceDefinition = useResourceDefinition();\n const createContainerUri = useCreateContainer(resource);\n const { permissions } = usePermissions(createContainerUri);\n return (\n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && permissions && permissions.some(p => rightsToCreate.includes(p['acl:mode'])) && (\n \n )}\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && (\n \n )}\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithPermissions;\n","import React from 'react';\nimport { Show, useGetRecordId } from 'react-admin';\nimport ShowActionsWithPermissions from './ShowActionsWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst ShowWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'show');\n return ;\n};\n\nShowWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ShowWithPermissions;\n","import React from 'react';\nimport {\n EditButton,\n ListButton,\n TopToolbar,\n usePermissions,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl, rightsToEdit } from '../../constants';\n\nconst ShowActionsWithPermissions = () => {\n const { hasList, hasEdit } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissions(record?.id);\n return (\n \n {hasList && }\n {hasEdit && permissions && permissions.some(p => rightsToEdit.includes(p['acl:mode'])) && }\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default ShowActionsWithPermissions;\n","import React from 'react';\nimport { useLogin, useTranslate } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\n\nconst AuthDialog = ({ open, onClose, title, message, redirect, ...rest }) => {\n const login = useLogin();\n const translate = useTranslate();\n return (\n \n {translate(title)}\n \n {translate(message)}\n \n \n \n login({ redirect: redirect || window.location.pathname + window.location.search })}\n color=\"primary\"\n variant=\"contained\"\n >\n {translate('auth.action.login')}\n \n \n \n );\n};\n\nAuthDialog.defaultProps = {\n title: 'auth.dialog.login_required',\n message: 'auth.message.login_to_continue'\n};\n\nexport default AuthDialog;\n","import React, { useRef, useEffect } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useDataProvider, useAuthProvider, useLogin, useGetIdentity, useNotify } from 'react-admin';\nimport { Card, Avatar, Typography, Button, CardActions } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport LockIcon from '@mui/icons-material/Lock';\n\nconst delay = async t => new Promise(resolve => setTimeout(resolve, t));\n\n// Inspired from https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/auth/Login.tsx\nconst SsoLoginPage = ({ children, backgroundImage, buttons, userResource, propertiesExist, text, ...rest }) => {\n const containerRef = useRef();\n let backgroundImageLoaded = false;\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const { identity, isLoading } = useGetIdentity();\n\n const notify = useNotify();\n const login = useLogin();\n const dataProvider = useDataProvider();\n const authProvider = useAuthProvider();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n // Already authenticated, redirect to the home page\n navigate(searchParams.get('redirect') || '/');\n }\n }, [identity, isLoading, navigate, searchParams]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('login')) {\n if (searchParams.has('error')) {\n if (searchParams.get('error') === 'registration.not-allowed') {\n notify('auth.message.user_email_not_found', { type: 'error' });\n } else {\n notify('auth.message.bad_request', { type: 'error', error: searchParams.get('error') });\n }\n } else if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n\n localStorage.setItem('token', token);\n\n let userData;\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n\n if (propertiesExist.length > 0) {\n let allPropertiesExist = propertiesExist.every(p => userData[p]);\n while (!allPropertiesExist) {\n console.log('Waiting for all properties to have been created', propertiesExist);\n await delay(500);\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n allPropertiesExist = propertiesExist.every(p => userData[p]);\n }\n }\n\n if (!authProvider.checkUser(userData)) {\n localStorage.removeItem('token');\n notify('auth.message.user_not_allowed_to_login', { type: 'error' });\n navigate.replace('/login');\n } else if (searchParams.has('redirect')) {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = searchParams.get('redirect');\n } else if (searchParams.has('new') && searchParams.get('new') === 'true') {\n notify('auth.message.new_user_created', { type: 'info' });\n window.location.href = `/${userResource}/${encodeURIComponent(webId)}`;\n } else {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = '/';\n }\n }\n }\n\n if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', { type: 'info' });\n navigate('/');\n }\n })();\n }, [searchParams, navigate, notify, userResource]);\n\n const updateBackgroundImage = () => {\n if (!backgroundImageLoaded && containerRef.current) {\n containerRef.current.style.backgroundImage = `url(${backgroundImage})`;\n backgroundImageLoaded = true;\n }\n };\n\n // Load background image asynchronously to speed up time to interactive\n const lazyLoadBackgroundImage = () => {\n if (backgroundImage) {\n const img = new Image();\n img.onload = updateBackgroundImage;\n img.src = backgroundImage;\n }\n };\n\n useEffect(() => {\n if (!backgroundImageLoaded) {\n lazyLoadBackgroundImage();\n }\n });\n\n if (isLoading) return null;\n\n return (\n \n \n
\n \n \n \n
\n {text && {text}}\n {buttons?.map((button, i) => (\n \n {React.cloneElement(button, {\n fullWidth: true,\n variant: 'outlined',\n type: 'submit',\n onClick: () => login({}, '/login')\n })}\n \n ))}\n
\n
\n );\n};\n\nconst PREFIX = 'SsoLoginPage';\n\nexport const SsoLoginPageClasses = {\n card: `${PREFIX}-card`,\n avatar: `${PREFIX}-avatar`,\n icon: `${PREFIX}-icon`,\n switch: `${PREFIX}-switch`\n};\n\nconst Root = styled('div', {\n name: PREFIX,\n overridesResolver: (props, styles) => styles.root\n})(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n height: '1px',\n alignItems: 'center',\n justifyContent: 'flex-start',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundImage: 'radial-gradient(circle at 50% 14em, #313264 0%, #00023b 60%, #00023b 100%)',\n [`& .${SsoLoginPageClasses.card}`]: {\n minWidth: 300,\n marginTop: '6em'\n },\n [`& .${SsoLoginPageClasses.avatar}`]: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n [`& .${SsoLoginPageClasses.icon}`]: {\n backgroundColor: theme.palette.secondary[500]\n },\n [`& .${SsoLoginPageClasses.switch}`]: {\n marginBottom: '1em',\n display: 'flex',\n justifyContent: 'center'\n }\n}));\n\nSsoLoginPage.defaultProps = {\n propertiesExist: [],\n // TODO deprecate this\n buttons: [],\n userResource: 'Person'\n};\n\nexport default SsoLoginPage;\n","import React, { useMemo } from 'react';\nimport { Notification } from 'react-admin';\nimport { ThemeProvider } from '@mui/system';\nimport { createTheme } from '@mui/material/styles';\nimport { StyledEngineProvider } from '@mui/material';\nimport PodLoginPageView from './PodLoginPageView';\n\nconst PodLoginPage = props => {\n const muiTheme = useMemo(() => createTheme(props.theme), [props.theme]);\n return (\n \n \n \n \n \n \n );\n};\n\nexport default PodLoginPage;\n","import React, { useEffect, useState } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNotify, useAuthProvider, useDataProvider, useLocale, useTranslate } from 'react-admin';\nimport { Box, List, ListItem, ListItemText, ListItemAvatar, Avatar, Divider, Card, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LockIcon from '@mui/icons-material/Lock';\nimport StorageIcon from '@mui/icons-material/Storage';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.primary.main\n }\n },\n text: {\n textAlign: 'center',\n padding: '4px 8px 8px'\n },\n card: {\n minWidth: 300,\n maxWidth: 350,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n lockIconAvatar: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n lockIcon: {\n backgroundColor: theme.palette.grey['500']\n },\n list: {\n paddingTop: 0,\n paddingBottom: 0\n },\n listItem: {\n paddingTop: 5,\n paddingBottom: 5\n }\n}));\n\nconst PodLoginPageView = ({ history, location, text, customPodProviders }) => {\n const classes = useStyles();\n const notify = useNotify();\n const locale = useLocale();\n const translate = useTranslate();\n const authProvider = useAuthProvider();\n const dataProvider = useDataProvider();\n const [podProviders, setPodProviders] = useState(customPodProviders || []);\n const searchParams = new URLSearchParams(location.search);\n\n useEffect(() => {\n (async () => {\n if (podProviders.length === 0) {\n const results = await fetch('https://data.activitypods.org/pod-providers', {\n headers: {\n Accept: 'application/ld+json'\n }\n });\n if (results.ok) {\n const json = await results.json();\n // Filter POD providers by available locales\n const podProviders = json['ldp:contains'].filter(provider =>\n Array.isArray(provider['apods:locales'])\n ? provider['apods:locales'].includes(locale)\n : provider['apods:locales'] === locale\n );\n setPodProviders(podProviders);\n } else {\n notify('auth.message.pod_providers_not_loaded', 'error');\n }\n }\n })();\n }, [podProviders, setPodProviders, notify, locale]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n const response = await fetch(webId, {\n headers: {\n Accept: 'application/json'\n }\n });\n if (!response.ok) {\n notify('auth.message.unable_to_fetch_user_data', 'error');\n } else {\n const data = await response.json();\n if (!authProvider.checkUser(data)) {\n notify('auth.message.user_not_allowed_to_login', 'error');\n history.replace('/login');\n } else {\n localStorage.setItem('token', token);\n notify('auth.message.user_connected', 'info');\n // Reload to ensure the dataServers config is reset\n window.location.reload();\n window.location.href = '/?addUser=true';\n }\n }\n } else if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', 'info');\n history.push('/');\n }\n })();\n }, [searchParams, dataProvider]);\n\n if (searchParams.has('token') || searchParams.has('addUser') || searchParams.has('logout')) {\n return null;\n }\n\n return (\n \n \n
\n \n \n \n
\n \n \n {text || translate('auth.message.choose_pod_provider')}\n \n \n \n \n {podProviders.map((podProvider, i) => {\n const url = new URL(\n '/auth',\n (podProvider['apods:domainName'].includes(':') ? 'http://' : 'https://') +\n podProvider['apods:domainName']\n );\n if (searchParams.has('signup')) url.searchParams.set('signup', 'true');\n url.searchParams.set('redirect', window.location.href);\n return (\n \n \n (window.location.href = url.toString())}\n className={classes.listItem}\n >\n \n \n \n \n \n \n \n \n );\n })}\n \n \n
\n
\n );\n};\n\nexport default PodLoginPageView;\n","import React, { useEffect, useMemo } from 'react';\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom';\nimport { useTranslate, useGetIdentity } from 'react-admin';\nimport { Card, Typography } from '@mui/material';\nimport LockIcon from '@mui/icons-material/Lock';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SignupForm from './SignupForm';\nimport LoginForm from './LoginForm';\nimport NewPasswordForm from './NewPasswordForm';\nimport ResetPasswordForm from './ResetPasswordForm';\nimport SimpleBox from './SimpleBox';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(() => ({\n switch: {\n marginBottom: '1em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n }\n}));\n\n/**\n * @param {object} props Props\n * @param {boolean} props.hasSignup If to show signup form.\n * @param {boolean} props.allowUsername Indicates, if login is allowed with username (instead of email).\n * @param {string} props.postSignupRedirect Location to redirect to after signup.\n * @param {string} props.postLoginRedirect Location to redirect to after login.\n * @param {object} props.additionalSignupValues\n * @param {object} props.passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst LocalLoginPage = ({\n hasSignup,\n allowUsername,\n postSignupRedirect,\n postLoginRedirect,\n additionalSignupValues,\n passwordScorer = defaultScorer\n}) => {\n const classes = useStyles();\n const navigate = useNavigate();\n const translate = useTranslate();\n const [searchParams] = useSearchParams();\n const isSignup = hasSignup && searchParams.has('signup');\n const isResetPassword = searchParams.has('reset_password');\n const isNewPassword = searchParams.has('new_password');\n const isLogin = !isSignup && !isResetPassword && !isNewPassword;\n const redirectTo = searchParams.get('redirect');\n const { identity, isLoading } = useGetIdentity();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n if (postLoginRedirect) {\n navigate(`${postLoginRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`);\n } else if (redirectTo && redirectTo.startsWith('http')) {\n window.location.href = redirectTo;\n } else {\n navigate(redirectTo || '/');\n }\n }\n }, [identity, isLoading, navigate, redirectTo, postLoginRedirect]);\n\n const [title, text] = useMemo(() => {\n if (isSignup) {\n return ['auth.action.signup', 'auth.helper.signup'];\n }\n if (isLogin) {\n return ['auth.action.login', 'auth.helper.login'];\n }\n if (isResetPassword) {\n return ['auth.action.reset_password', 'auth.helper.reset_password'];\n }\n if (isNewPassword) {\n return ['auth.action.set_new_password', 'auth.helper.set_new_password'];\n }\n }, [isSignup, isLogin, isResetPassword, isNewPassword]);\n\n if (isLoading || identity?.id) return null;\n if (isLoading || identity?.id) return null;\n\n return (\n }>\n \n {isSignup && (\n \n )}\n {isResetPassword && }\n {isNewPassword && }\n {isLogin && }\n
\n {isSignup && (\n \n {translate('auth.action.login')}\n \n )}\n {isLogin && (\n <>\n {hasSignup && (\n
\n \n {translate('auth.action.signup')}\n \n
\n )}\n
\n \n {translate('auth.action.reset_password')}\n \n
\n \n )}\n
\n
\n
\n );\n};\n\nLocalLoginPage.defaultProps = {\n hasSignup: true,\n allowUsername: false,\n additionalSignupValues: {}\n};\n\nexport default LocalLoginPage;\n","import * as React from 'react';\nimport createSlug from 'speakingurl';\nimport {\n Form,\n useTranslate,\n useNotify,\n useSafeSetState,\n TextInput,\n required,\n email,\n useLocaleState\n} from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useSignup from '../../hooks/useSignup';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n * @param postSignupRedirect\n * @param additionalSignupValues\n * @param delayBeforeRedirect\n * @param {string} redirectTo\n * @param {object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst SignupForm = ({\n redirectTo,\n passwordScorer = defaultScorer,\n postSignupRedirect,\n additionalSignupValues,\n delayBeforeRedirect\n}) => {\n const [loading, setLoading] = useSafeSetState(false);\n const signup = useSignup();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const [locale] = useLocaleState();\n const [password, setPassword] = React.useState('');\n\n const submit = values => {\n setLoading(true);\n signup({\n ...values,\n ...additionalSignupValues\n })\n .then(webId => {\n if (delayBeforeRedirect) {\n setTimeout(() => {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }, delayBeforeRedirect);\n } else {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }\n notify('auth.message.new_user_created', { type: 'info' });\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n );\n });\n };\n\n return (\n
\n \n \n value\n ? createSlug(value, {\n lang: locale || 'fr',\n separator: '_',\n custom: ['.', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n })\n : ''\n }\n />\n \n {passwordScorer && password && !(searchParams.has('email') && searchParams.has('force-email')) && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n \n \n )}\n setPassword(e.target.value)}\n label={translate('ra.auth.password')}\n autoComplete=\"new-password\"\n fullWidth\n disabled={loading || (searchParams.has('email') && searchParams.has('force-email'))}\n validate={[required(), validatePasswordStrength(passwordScorer)]}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.signup')\n )}\n \n \n
\n );\n};\n\nSignupForm.defaultValues = {\n redirectTo: '/',\n additionalSignupValues: {}\n};\n\nexport default SignupForm;\n","import { useCallback } from 'react';\nimport { useAuthProvider } from 'react-admin';\n\nconst useSignup = () => {\n const authProvider = useAuthProvider();\n\n return useCallback((params = {}) => authProvider.signup(params), [authProvider]);\n};\n\nexport default useSignup;\n","import { defaultScorer } from '../../passwordScorer';\n\nconst validatePasswordStrength = (scorer = defaultScorer) => value => {\n if (!scorer) return undefined;\n const strength = scorer.scoreFn(value);\n if (strength < scorer.minRequiredScore) {\n return 'auth.input.password_too_weak';\n }\n return undefined;\n};\n\nexport default validatePasswordStrength;\n","// Inspired by https://github.com/bartlomiejzuber/password-strength-score\n\n/**\n * @typedef PasswordStrengthOptions\n * @property {number} isVeryLongLength - Required characters for a very long password (default: 12)\n * @property {number} isLongLength - Required characters for a long password (default: 6)\n * @property {number} isVeryLongScore - Score for a very long password (default: 2.5)\n * @property {number} isLongScore - Score for a long password (default: 1.5)\n * @property {number} uppercaseScore - Score for a password with uppercase letters (default: 1)\n * @property {number} lowercaseScore - Score for a password with lowercase letters (default: 1)\n * @property {number} numbersScore - Score for a password with numbers (default: 1)\n * @property {number} nonAlphanumericsScore - Score for a password without non-alphanumeric characters (default: 1)\n */\n\n/** @type {PasswordStrengthOptions} */\nexport const defaultOptions = {\n isVeryLongLength: 14,\n isLongLength: 8,\n isLongScore: 2,\n isVeryLongScore: 4,\n uppercaseScore: 1,\n lowercaseScore: 1,\n numbersScore: 1,\n nonAlphanumericsScore: 1\n};\n\n/**\n *\n * @param {string} password Password text.\n * @param {PasswordStrengthOptions} options Password options.\n * @returns {number} The password strength score.\n */\nexport const passwordStrength = (password, options) => {\n if (!password) {\n return 0;\n }\n\n const mergedOptions = { ...defaultOptions, ...options };\n\n const longScore = (password.length >= mergedOptions.isLongLength && mergedOptions.isLongScore) || 0;\n const veryLongScore = (password.length >= mergedOptions.isVeryLongLength && mergedOptions.isVeryLongScore) || 0;\n const lowercaseScore = (/[a-z]/.test(password) && mergedOptions.lowercaseScore) || 0;\n const uppercaseScore = (/[A-Z]/.test(password) && mergedOptions.uppercaseScore) || 0;\n const numbersScore = (/\\d/.test(password) && mergedOptions.numbersScore) || 0;\n const nonalphasScore = (/\\W/.test(password) && mergedOptions.nonAlphanumericsScore) || 0;\n\n return uppercaseScore + lowercaseScore + numbersScore + nonalphasScore + longScore + veryLongScore;\n};\n\nexport const createPasswordScorer = (options = defaultOptions, minRequiredScore = 5) => {\n const mergedOptions = { ...defaultOptions, ...options };\n\n return {\n scoreFn: password => passwordStrength(password, mergedOptions),\n minRequiredScore,\n maxScore:\n mergedOptions.uppercaseScore +\n mergedOptions.lowercaseScore +\n mergedOptions.numbersScore +\n mergedOptions.nonAlphanumericsScore +\n mergedOptions.isLongScore +\n mergedOptions.isVeryLongScore\n };\n};\n\nexport const defaultScorer = createPasswordScorer(defaultOptions, 5);\n","import React from 'react';\nimport ColorGradientProgressBar from './ColorGradientProgressBar';\nimport { defaultScorer } from '../../passwordScorer';\n\nexport default function PasswordStrengthIndicator({ scorer = defaultScorer, password, ...restProps }) {\n const strength = scorer.scoreFn(password);\n return ;\n}\n","import React from 'react';\nimport { LinearProgress } from '@mui/material';\nimport { withStyles } from '@mui/styles';\n\n/**\n * @typedef {Object} Color\n * @property {number} red\n * @property {number} green\n * @property {number} blue\n */\n\n/** Calculate a rgb-color from a gradient between `color1` and `color2`\n * @param {number} fade - Indicates the fade between `color1` and `color2` in the range [0, 1].\n * @param {Color} color1\n * @param {Color} color2\n * @returns {string} `` `rgb(${red}, ${green}, ${blue})` ``\n */\nconst colorGradient = (fade, color1, color2) => {\n var diffRed = color2.red - color1.red;\n var diffGreen = color2.green - color1.green;\n var diffBlue = color2.blue - color1.blue;\n\n var gradient = {\n red: Math.floor(color1.red + diffRed * fade),\n green: Math.floor(color1.green + diffGreen * fade),\n blue: Math.floor(color1.blue + diffBlue * fade)\n };\n\n return 'rgb(' + gradient.red + ',' + gradient.green + ',' + gradient.blue + ')';\n};\n\n/** A progress bar that changes its color between its min an max value.\n * @param {Object} props\n * @param {Color} [props.badColor = { red: 0xff, green: 0x40, blue: 0x47 }] - default: `#FF4047`\n * @param {Color} [props.goodColor = { red: 0x00, green: 0xff, blue: 0x6e }] - default: `#00FF6E`\n * @param {number} props.maxVal\n * @param {number} props.minVal\n * @param {number} props.currentVal\n */\nexport default function ColorGradientProgressBar(props) {\n const { minVal, maxVal, currentVal, badColor, goodColor, ...restProps } = props;\n\n const color1 = badColor || { red: 0xff, green: 0x40, blue: 0x47 };\n const color2 = goodColor || { red: 0x00, green: 0xff, blue: 0x6e };\n\n const fade = Math.max(0, Math.min(1, (currentVal - minVal) / (maxVal - minVal)));\n const currentColor = colorGradient(fade, color1, color2);\n\n const StyledLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: '#e0e0e0'\n },\n barColorPrimary: {\n backgroundColor: currentColor\n }\n })(LinearProgress);\n\n return ;\n}\n","import * as React from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, TextInput, required, email, useLogin } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst LoginForm = ({ redirectTo, allowUsername }) => {\n const [loading, setLoading] = useSafeSetState(false);\n const login = useLogin();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n\n const submit = values => {\n setLoading(true);\n login(values, redirectTo)\n .then(() => {\n setLoading(false);\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n validate={allowUsername ? [required()] : [required(), email()]}\n />\n \n \n {loading ? (\n \n ) : (\n translate('auth.action.login')\n )}\n \n \n
\n );\n};\n\nLoginForm.defaultValues = {\n redirectTo: '/',\n allowUsername: false\n};\n\nexport default LoginForm;\n","import React, { useState } from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, useAuthProvider, TextInput, required } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n *\n * @param {string} redirectTo\n * @param {Object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst NewPasswordForm = ({ redirectTo, passwordScorer = defaultScorer }) => {\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const token = searchParams.get('token');\n\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const [newPassword, setNewPassword] = useState('');\n\n const submit = values => {\n setLoading(true);\n authProvider\n .setNewPassword({ ...values, token })\n .then(res => {\n setTimeout(() => {\n window.location.href = `/login${redirectTo ? `?redirect=${encodeURIComponent(redirectTo)}` : ''}`;\n setLoading(false);\n }, 2000);\n notify('auth.notification.password_changed', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n {passwordScorer && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n\n \n \n )}\n setNewPassword(e.target.value)}\n format={value => (value ? value.toLowerCase() : '')}\n />\n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.set_new_password')\n )}\n \n \n
\n );\n};\n\nexport default NewPasswordForm;\n","import React from 'react';\nimport { Form, TextInput, required, useTranslate, useNotify, useSafeSetState, useAuthProvider } from 'react-admin';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst ResetPasswordForm = () => {\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const submit = values => {\n setLoading(true);\n authProvider\n .resetPassword({ ...values })\n .then(res => {\n setLoading(false);\n notify('auth.notification.reset_password_submitted', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.reset_password')\n )}\n \n \n
\n );\n};\n\nexport default ResetPasswordForm;\n","import React from 'react';\nimport { Box, Card, Typography } from '@mui/material';\nimport { Notification } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.secondary.main\n }\n },\n root: {\n backgroundColor: theme.palette.secondary.main\n },\n card: {\n minWidth: 300,\n maxWidth: 500,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n icon: {\n marginTop: 5,\n marginRight: 5\n },\n title: {\n [theme.breakpoints.down('sm')]: {\n fontWeight: 'bold',\n marginTop: 12\n }\n }\n}));\n\nconst SimpleBox = ({ title, icon, text, children }) => {\n const classes = useStyles();\n return (\n \n \n \n {icon && React.cloneElement(icon, { fontSize: 'large', className: classes.icon })}\n \n {title}\n \n \n \n {text}\n \n {children}\n \n \n \n );\n};\n\nexport default SimpleBox;\n","import React from 'react';\nimport { Resource, usePermissions } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport { rightsToCreate } from '../constants';\n\n// Not used for now. The ListWithPermissions component will handle the conditional display of the Create button.\nconst ResourceWithPermission = ({ name, create, ...rest }) => {\n const createContainer = useCreateContainer(name);\n const { permissions } = usePermissions(createContainer);\n return (\n rightsToCreate.includes(p['acl:mode'])) ? create : undefined}\n // Requesting permissions to list container is too long, we will avoid that for now\n // list={permissions && permissions.some(p => rightsToList.includes(p['acl:mode'])) ? list : undefined}\n />\n );\n};\n\nexport default ResourceWithPermission;\n","import React, { forwardRef, useCallback } from 'react';\nimport { Logout, UserMenu as RaUserMenu, useGetIdentity, useTranslate, useUserMenu } from 'react-admin';\nimport { MenuItem, ListItemIcon, ListItemText } from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\nimport EditIcon from '@mui/icons-material/Edit';\nimport { useNavigate } from 'react-router-dom';\n\n// It's important to pass the ref to allow Material UI to manage the keyboard navigation\nconst UserMenuItem = forwardRef(({ label, icon, to, ...rest }, ref) => {\n const { onClose } = useUserMenu();\n const translate = useTranslate();\n const navigate = useNavigate();\n const onClick = useCallback(() => {\n navigate(to);\n onClose();\n }, [to, onClose, navigate]);\n return (\n \n {icon && {React.cloneElement(icon, { fontSize: 'small' })}}\n {translate(label)}\n \n );\n});\n\nconst UserMenu = ({ logout, profileResource, ...otherProps }) => {\n const { identity } = useGetIdentity();\n return (\n \n {identity && identity.id !== ''\n ? [\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}/show`}\n />,\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}`}\n />,\n React.cloneElement(logout, { key: 'logout' })\n ]\n : [\n ,\n \n ]}\n \n );\n};\n\nUserMenu.defaultProps = {\n logout: ,\n profileResource: 'Person'\n};\n\nexport default UserMenu;\n","import React, { useEffect } from 'react';\nimport { useGetIdentity, useNotify, useRedirect } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\n\nconst useCheckAuthenticated = message => {\n const { identity, isLoading } = useGetIdentity();\n const notify = useNotify();\n const redirect = useRedirect();\n const location = useLocation();\n\n useEffect(() => {\n if (!isLoading && !identity?.id) {\n notify(message || 'ra.auth.auth_check_error', { type: 'error' });\n redirect(`/login?redirect=${encodeURIComponent(location.pathname + location.search)}`);\n }\n }, [isLoading, identity, redirect, notify, location]);\n\n return { identity, isLoading };\n};\n\nexport default useCheckAuthenticated;\n","import { useEffect, useCallback } from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { useGetPermissions, useSafeSetState } from 'react-admin';\n\nconst emptyParams = {};\n\n// keep a cache of already fetched permissions to initialize state for new\n// components and avoid a useless rerender if the permissions haven't changed\nconst alreadyFetchedPermissions = { '{}': undefined };\n\n// Fork of usePermissionsOptimized, with a refetch option\nconst usePermissionsWithRefetch = (params = emptyParams) => {\n const key = JSON.stringify(params);\n const [state, setState] = useSafeSetState({\n permissions: alreadyFetchedPermissions[key]\n });\n const getPermissions = useGetPermissions();\n\n const fetchPermissions = useCallback(\n () =>\n getPermissions(params)\n .then(permissions => {\n if (!isEqual(permissions, state.permissions)) {\n alreadyFetchedPermissions[key] = permissions;\n setState({ permissions });\n }\n })\n .catch(error => {\n setState({\n error\n });\n }),\n [key, params, getPermissions]\n );\n\n useEffect(() => {\n fetchPermissions();\n }, [key]);\n\n return { ...state, refetch: fetchPermissions };\n};\n\nexport default usePermissionsWithRefetch;\n","const englishMessages = {\n auth: {\n dialog: {\n container_permissions: 'Container permissions',\n resource_permissions: 'Resource permissions',\n login_required: 'Login required'\n },\n action: {\n permissions: 'Permissions',\n signup: 'Signup',\n reset_password: 'Reset password',\n set_new_password: 'Set new password',\n logout: 'Logout',\n login: 'Login',\n view_my_profile: 'View my profile',\n edit_my_profile: 'Edit my profile'\n },\n right: {\n resource: {\n read: 'Read',\n append: 'Append',\n write: 'Write',\n control: 'Control'\n },\n container: {\n read: 'List',\n append: 'Add',\n write: 'Add',\n control: 'Control'\n }\n },\n agent: {\n anonymous: 'All users',\n authenticated: 'Connected users'\n },\n input: {\n agent_select: 'Add an user...',\n name: 'Surname',\n username: 'User ID',\n email: 'Email address',\n username_or_email: 'User ID or email address',\n current_password: 'Current password',\n new_password: 'New password',\n confirm_new_password: 'Confirm new password',\n password_strength: 'Password strength',\n password_too_weak: 'Password too weak. Increase length or add special characters.'\n },\n helper: {\n login: 'Sign in to your account',\n signup: 'Create your account',\n reset_password: 'Enter your email address below and we will send you a link to reset your password',\n set_new_password: 'Please enter your email address and a new password below'\n },\n message: {\n resource_show_forbidden: 'You are not allowed to view this resource',\n resource_edit_forbidden: 'You are not allowed to edit this resource',\n resource_delete_forbidden: 'You are not allowed to delete this resource',\n resource_control_forbidden: 'You are not allowed to control this resource',\n container_create_forbidden: 'You are not allowed to create new resource',\n container_list_forbidden: 'You are not allowed to list these resources',\n user_not_allowed_to_login: 'You are not allowed to login with this account',\n user_email_not_found: 'No account found with this email address',\n user_email_exist: 'An account already exist with this email address',\n username_exist: 'An account already exist with this user ID',\n username_invalid: 'This username is invalid. Only lowercase characters, numbers, dots and hyphens are authorized',\n new_user_created: 'Your account has been successfully created',\n user_connected: 'You are now connected',\n user_disconnected: 'You are now disconnected',\n bad_request: 'Bad request (Error message returned by the server: %{error})',\n account_settings_updated: 'Your account settings have been successfully updated',\n login_to_continue: 'Please login to continue',\n choose_pod_provider:\n 'Please choose a POD provider in the list below. All application data will be saved on your POD.'\n },\n notification: {\n reset_password_submitted: 'An email has been sent with reset password instructions',\n reset_password_error: 'An error occurred',\n password_changed: 'Password changed successfully',\n new_password_error: 'An error occurred',\n invalid_password: 'Invalid password',\n get_settings_error: 'An error occurred',\n update_settings_error: 'An error occurred'\n }\n }\n};\n\nexport default englishMessages;\n","const frenchMessages = {\n auth: {\n dialog: {\n container_permissions: 'Permissions sur le container',\n resource_permissions: 'Permissions sur la ressource',\n login_required: 'Connexion requise'\n },\n action: {\n permissions: 'Permissions',\n signup: \"S'inscrire\",\n reset_password: 'Mot de passe oublié ?',\n set_new_password: 'Définir le mot de passe',\n logout: 'Se déconnecter',\n login: 'Se connecter',\n view_my_profile: 'Voir mon profil',\n edit_my_profile: 'Éditer mon profil'\n },\n right: {\n resource: {\n read: 'Lire',\n append: 'Enrichir',\n write: 'Modifier',\n control: 'Administrer'\n },\n container: {\n read: 'Lister',\n append: 'Ajouter',\n write: 'Ajouter',\n control: 'Administrer'\n }\n },\n agent: {\n anonymous: 'Tous les utilisateurs',\n authenticated: 'Utilisateurs connectés'\n },\n input: {\n agent_select: 'Ajouter un utilisateur...',\n name: 'Prénom',\n username: 'Identifiant unique',\n email: 'Adresse e-mail',\n username_or_email: 'Identifiant ou adresse e-mail',\n current_password: 'Mot de passe actuel',\n new_password: 'Nouveau mot de passe',\n confirm_new_password: 'Confirmer le nouveau mot de passe',\n password_strength: 'Force du mot de passe',\n password_too_weak: 'Mot de passe trop faible. Augmenter la longueur ou ajouter des caractères spéciaux.'\n },\n helper: {\n login: 'Connectez-vous à votre compte.',\n signup: 'Créez votre compte',\n reset_password:\n 'Entrez votre adresse mail ci-dessous et nous vous enverrons un lien pour réinitialiser votre mot de passe',\n set_new_password: 'Veuillez entrer votre adresse mail et un nouveau mot de passe ci-dessous'\n },\n message: {\n resource_show_forbidden: \"Vous n'avez pas la permission de voir cette ressource\",\n resource_edit_forbidden: \"Vous n'avez pas la permission d'éditer cette ressource\",\n resource_delete_forbidden: \"Vous n'avez pas la permission d'effacer cette ressource\",\n resource_control_forbidden: \"Vous n'avez pas la permission d'administrer cette ressource\",\n container_create_forbidden: \"Vous n'avez pas la permission de créer des ressources\",\n container_list_forbidden: \"Vous n'avez pas la permission de voir ces ressources\",\n user_not_allowed_to_login: \"Vous n'avez pas le droit de vous connecter avec ce compte\",\n user_email_not_found: 'Aucun compte trouvé avec cette adresse mail',\n user_email_exist: 'Un compte existe déjà avec cette adresse mail',\n username_exist: 'Un compte existe déjà avec cet identifiant',\n username_invalid:\n \"Cet identifiant n'est pas valide. Seuls les lettres minuscules, les chiffres, les points et les tirets sont autorisés\",\n new_user_created: 'Votre compte a été créé avec succès',\n user_connected: 'Vous êtes maintenant connecté',\n user_disconnected: 'Vous êtes maintenant déconnecté',\n bad_request: \"Requête erronée (Message d'erreur renvoyé par le serveur: %{error})\",\n account_settings_updated: 'Les paramètres de votre compte ont été mis à jour avec succès',\n login_to_continue: 'Veuillez vous connecter pour continuer',\n choose_pod_provider:\n \"Veuillez choisir un fournisseur de PODs dans la liste ci-dessous. Toutes les données de l'application seront enregistrées sur votre POD.\"\n },\n notification: {\n reset_password_submitted: 'Un e-mail a été envoyé avec les instructions de réinitialisation du mot de passe',\n reset_password_error: \"Une erreur s'est produite\",\n password_changed: 'Le mot de passe a été changé avec succès',\n new_password_error: \"Une erreur s'est produite\",\n invalid_password: 'Mot de passe incorrect',\n get_settings_error: \"Une erreur s'est produite\",\n update_settings_error: \"Une erreur s'est produite\"\n }\n }\n};\n\nexport default frenchMessages;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/auth-provider/dist/index.es.js.map b/src/frontend/packages/auth-provider/dist/index.es.js.map index fb946699b..85a9a26c9 100644 --- a/src/frontend/packages/auth-provider/dist/index.es.js.map +++ b/src/frontend/packages/auth-provider/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/auth-provider/src/index.js","packages/auth-provider/src/authProvider.js","packages/auth-provider/src/utils.js","packages/auth-provider/src/crud/create/CreateWithPermissions.js","packages/auth-provider/src/hooks/useCheckPermissions.js","packages/auth-provider/src/constants.js","packages/auth-provider/src/crud/edit/EditWithPermissions.js","packages/auth-provider/src/crud/edit/EditActionsWithPermissions.js","packages/auth-provider/src/components/PermissionsButton/PermissionsButton.js","packages/auth-provider/src/components/PermissionsButton/PermissionsDialog.js","packages/auth-provider/src/components/PermissionsButton/AddPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/EditPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/AgentItem.js","packages/auth-provider/src/components/PermissionsButton/AgentIcon.js","packages/auth-provider/src/hooks/useAgents.js","packages/auth-provider/src/crud/edit/EditToolbarWithPermissions.js","packages/auth-provider/src/crud/edit/DeleteButtonWithPermissions.js","packages/auth-provider/src/crud/edit/EditButtonWithPermissions.js","packages/auth-provider/src/crud/list/ListWithPermissions.js","packages/auth-provider/src/crud/list/ListActionsWithPermissions.js","packages/auth-provider/src/crud/show/ShowWithPermissions.js","packages/auth-provider/src/crud/show/ShowActionsWithPermissions.js","packages/auth-provider/src/components/AuthDialog.js","packages/auth-provider/src/components/SsoLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPageView.js","packages/auth-provider/src/components/LocalLoginPage/LocalLoginPage.js","packages/auth-provider/src/components/LocalLoginPage/SignupForm.js","packages/auth-provider/src/hooks/useSignup.js","packages/auth-provider/src/components/LocalLoginPage/validatePasswordStrength.js","packages/auth-provider/src/passwordScorer.js","packages/auth-provider/src/components/LocalLoginPage/PasswordStrengthIndicator.js","packages/auth-provider/src/components/LocalLoginPage/ColorGradientProgressBar.js","packages/auth-provider/src/components/LocalLoginPage/LoginForm.js","packages/auth-provider/src/components/LocalLoginPage/NewPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/ResetPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/SimpleBox.js","packages/auth-provider/src/components/ResourceWithPermissions.js","packages/auth-provider/src/components/UserMenu.js","packages/auth-provider/src/hooks/useCheckAuthenticated.js","packages/auth-provider/src/hooks/usePermissionsWithRefetch.js","packages/auth-provider/src/messages/english.js","packages/auth-provider/src/messages/french.js"],"sourcesContent":["export { default as authProvider } from './authProvider';\n\n// Create\nexport { default as CreateWithPermissions } from './crud/create/CreateWithPermissions';\n\n// Edit\nexport { default as EditWithPermissions } from './crud/edit/EditWithPermissions';\nexport { default as EditActionsWithPermissions } from './crud/edit/EditActionsWithPermissions';\nexport { default as EditToolbarWithPermissions } from './crud/edit/EditToolbarWithPermissions';\nexport { default as EditButtonWithPermissions } from './crud/edit/EditButtonWithPermissions';\nexport { default as DeleteButtonWithPermissions } from './crud/edit/DeleteButtonWithPermissions';\n\n// List\nexport { default as ListWithPermissions } from './crud/list/ListWithPermissions';\nexport { default as ListActionsWithPermissions } from './crud/list/ListActionsWithPermissions';\n\n// Show\nexport { default as ShowWithPermissions } from './crud/show/ShowWithPermissions';\nexport { default as ShowActionsWithPermissions } from './crud/show/ShowActionsWithPermissions';\n\nexport { default as PermissionsButton } from './components/PermissionsButton/PermissionsButton';\nexport { default as AuthDialog } from './components/AuthDialog';\nexport { default as SsoLoginPage, default as LoginPage } from './components/SsoLoginPage';\nexport { default as PodLoginPage } from './components/PodLoginPage/PodLoginPage';\nexport { default as LocalLoginPage } from './components/LocalLoginPage/LocalLoginPage';\nexport { default as ResourceWithPermissions } from './components/ResourceWithPermissions';\nexport { default as UserMenu } from './components/UserMenu';\n\nexport { default as useAgents } from './hooks/useAgents';\nexport { default as useCheckAuthenticated } from './hooks/useCheckAuthenticated';\nexport { default as useCheckPermissions } from './hooks/useCheckPermissions';\nexport { default as usePermissionsWithRefetch } from './hooks/usePermissionsWithRefetch';\nexport { default as useSignup } from './hooks/useSignup';\n\n// Password scoring\nexport { default as PasswordStrengthIndicator } from './components/LocalLoginPage/PasswordStrengthIndicator';\nexport { default as validatePasswordStrength } from './components/LocalLoginPage/validatePasswordStrength';\nexport {\n defaultScorer as defaultPasswordScorer,\n defaultOptions as defaultPasswordScorerOptions,\n createPasswordScorer\n} from './passwordScorer';\n\nexport { default as englishMessages } from './messages/english';\nexport { default as frenchMessages } from './messages/french';\n","import jwtDecode from 'jwt-decode';\nimport urlJoin from 'url-join';\nimport { defaultToArray, getAclUri, getAclContext, getAuthServerUrl } from './utils';\n\nconst AUTH_TYPE_SSO = 'sso';\nconst AUTH_TYPE_LOCAL = 'local';\nconst AUTH_TYPE_POD = 'pod';\n\nconst authProvider = ({ dataProvider, authType, allowAnonymous = true, checkUser, checkPermissions = false }) => {\n if (![AUTH_TYPE_SSO, AUTH_TYPE_LOCAL, AUTH_TYPE_POD].includes(authType))\n throw new Error('The authType parameter is missing from the auth provider');\n return {\n login: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, password } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/login'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n password: password.trim()\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n } catch (e) {\n throw new Error('ra.auth.sign_in_error');\n }\n } else {\n let redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n if (params.redirect) redirectUrl += `&redirect=${encodeURIComponent(params.redirect)}`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n signup: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, email, password, domain, ...profileData } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/signup'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n email: email.trim(),\n password: password.trim(),\n ...profileData\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n const { webId } = jwtDecode(token);\n return webId;\n } catch (e) {\n if (e.message === 'email.already.exists') {\n throw new Error('auth.message.user_email_exist');\n } else if (e.message === 'username.already.exists') {\n throw new Error('auth.message.username_exist');\n } else if (e.message === 'username.invalid') {\n throw new Error('auth.message.username_invalid');\n } else {\n throw new Error(e.message || 'ra.auth.sign_in_error');\n }\n }\n } else {\n const redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n logout: async () => {\n switch (authType) {\n case AUTH_TYPE_LOCAL:\n // Delete token but also any other value in local storage\n localStorage.clear();\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = '/';\n break;\n\n case AUTH_TYPE_SSO:\n const authServerUrl = await getAuthServerUrl(dataProvider);\n const baseUrl = new URL(window.location.href).origin;\n window.location.href = urlJoin(\n authServerUrl,\n `auth/logout?redirectUrl=${encodeURIComponent(`${urlJoin(baseUrl, 'login')}?logout=true`)}`\n );\n break;\n\n case AUTH_TYPE_POD:\n const token = localStorage.getItem('token');\n const { webId } = jwtDecode(token);\n // Delete token but also any other value in local storage\n localStorage.clear();\n window.location.href =\n urlJoin(webId, 'openApp') +\n '?type=' +\n encodeURIComponent('http://activitypods.org/ns/core#FrontAppRegistration');\n break;\n }\n\n // Avoid displaying immediately the login page\n return '/';\n },\n checkAuth: async () => {\n const token = localStorage.getItem('token');\n if (!token && !allowAnonymous) throw new Error();\n },\n checkUser: userData => {\n if (checkUser) {\n return checkUser(userData);\n }\n return true;\n },\n checkError: error => Promise.resolve(),\n getPermissions: async uri => {\n if (!checkPermissions) return;\n\n // React-admin calls getPermissions with an empty object on every page refresh\n // It also passes an object `{ params: { route: 'dashboard' } }` on the Dashboard\n // Ignore all this until we found a way to bypass these redundant calls\n if (typeof uri === 'object') return;\n\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to getPermissions must be an URL');\n\n const aclUri = getAclUri(uri);\n\n try {\n const { json } = await dataProvider.fetch(aclUri);\n return json['@graph'];\n } catch (e) {\n console.warn(`Could not fetch ACL URI ${uri}`);\n return [];\n }\n },\n addPermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to addPermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n const authorization = {\n '@id': `#${mode.replace('acl:', '')}`,\n '@type': 'acl:Authorization',\n [predicate]: agentId,\n 'acl:accessTo': uri,\n 'acl:mode': mode\n };\n\n await dataProvider.fetch(aclUri, {\n method: 'PATCH',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': [authorization]\n })\n });\n },\n removePermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to removePermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n // Fetch current permissions\n const { json } = await dataProvider.fetch(aclUri);\n\n const updatedPermissions = json['@graph']\n .filter(authorization => !authorization['@id'].includes('#Default'))\n .map(authorization => {\n const modes = defaultToArray(authorization['acl:mode']);\n let agents = defaultToArray(authorization[predicate]);\n if (mode && modes.includes(mode) && agents && agents.includes(agentId)) {\n agents = agents.filter(agent => agent !== agentId);\n }\n return { ...authorization, [predicate]: agents };\n });\n\n await dataProvider.fetch(aclUri, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': updatedPermissions\n })\n });\n },\n getIdentity: async () => {\n const token = localStorage.getItem('token');\n if (token) {\n const { webId } = jwtDecode(token);\n\n const { json: webIdData } = await dataProvider.fetch(webId);\n const { json: profileData } = webIdData.url ? await dataProvider.fetch(webIdData.url) : {};\n\n return {\n id: webId,\n fullName:\n profileData?.['vcard:given-name'] ||\n profileData?.['pair:label'] ||\n webIdData['foaf:name'] ||\n webIdData['pair:label'],\n profileData,\n webIdData\n };\n }\n },\n resetPassword: async params => {\n const { email } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/reset_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim() }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.reset_password_error');\n }\n },\n setNewPassword: async params => {\n const { email, token, password } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/new_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim(), token, password }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.new_password_error');\n }\n },\n getAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'));\n return json;\n } catch (e) {\n throw new Error('auth.notification.get_settings_error');\n }\n },\n updateAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { email, currentPassword, newPassword } = params;\n\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'), {\n method: 'POST',\n body: JSON.stringify({\n currentPassword,\n email: email?.trim(),\n newPassword\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n if (e.message === 'auth.account.invalid_password') {\n throw new Error('auth.notification.invalid_password');\n }\n\n throw new Error('auth.notification.update_settings_error');\n }\n }\n };\n};\n\nexport default authProvider;\n","import urlJoin from 'url-join';\n\nexport const defaultToArray = value => (!value ? undefined : Array.isArray(value) ? value : [value]);\n\n// Transform the URI to the one used to find the ACL\n// To be compatible with all servers, we should do a HEAD request to the resource URI\nexport const getAclUri = resourceUri => {\n const parsedUrl = new URL(resourceUri);\n return urlJoin(parsedUrl.origin, '_acl', parsedUrl.pathname);\n};\n\nexport const getAclContext = baseUri => ({\n '@base': baseUri,\n acl: 'http://www.w3.org/ns/auth/acl#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n 'acl:agent': { '@type': '@id' },\n 'acl:agentGroup': { '@type': '@id' },\n 'acl:agentClass': { '@type': '@id' },\n 'acl:mode': { '@type': '@id' },\n 'acl:accessTo': { '@type': '@id' }\n});\n\nexport const getAuthServerUrl = async dataProvider => {\n const dataServers = await dataProvider.getDataServers();\n const authServer = Object.values(dataServers).find(server => server.authServer === true);\n if (!authServer) throw new Error('Could not find a server with authServer: true. Check your dataServers config.');\n // If the server is a POD, return the root URL instead of https://domain.com/user/data\n return authServer.pod ? new URL(authServer.baseUrl).origin : authServer.baseUrl;\n};\n","import React from 'react';\nimport { Create, CreateActions, useResourceContext } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst CreateWithPermissions = props => {\n const resource = useResourceContext();\n const createContainerUri = useCreateContainer(resource);\n useCheckPermissions(createContainerUri, 'create');\n return ;\n};\n\nCreateWithPermissions.defaultProps = {\n actions: \n};\n\nexport default CreateWithPermissions;\n","import React, { useEffect } from 'react';\nimport { usePermissions, useRedirect, useNotify, useGetIdentity } from 'react-admin';\nimport { rights, forbiddenErrors } from '../constants';\n\nconst useCheckPermissions = (uri, mode, redirectUrl = '/') => {\n const { identity, isLoading } = useGetIdentity();\n const { permissions } = usePermissions(uri);\n const notify = useNotify();\n const redirect = useRedirect();\n\n useEffect(() => {\n if (!isLoading && identity && permissions && !permissions.some(p => rights[mode].includes(p['acl:mode']))) {\n notify(forbiddenErrors[mode], { type: 'error' });\n redirect(redirectUrl);\n }\n }, [permissions, identity, redirect, notify, isLoading]);\n\n return permissions;\n};\n\nexport default useCheckPermissions;\n","export const ACL_READ = 'acl:Read';\nexport const ACL_APPEND = 'acl:Append';\nexport const ACL_WRITE = 'acl:Write';\nexport const ACL_CONTROL = 'acl:Control';\n\nexport const USER_AGENT = 'acl:agent';\nexport const GROUP_AGENT = 'acl:agentGroup';\nexport const CLASS_AGENT = 'acl:agentClass';\n\nexport const ANONYMOUS_AGENT = 'foaf:Agent';\nexport const AUTHENTICATED_AGENT = 'acl:AuthenticatedAgent';\n\nexport const rightsToShow = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToList = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToCreate = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToEdit = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToDelete = [ACL_WRITE, ACL_CONTROL];\nexport const rightsToControl = [ACL_CONTROL];\n\nexport const rights = {\n show: rightsToShow,\n list: rightsToList,\n create: rightsToCreate,\n edit: rightsToEdit,\n delete: rightsToDelete,\n control: rightsToControl\n};\n\nexport const forbiddenErrors = {\n show: 'auth.message.resource_show_forbidden',\n edit: 'auth.message.resource_edit_forbidden',\n delete: 'auth.message.resource_delete_forbidden',\n control: 'auth.message.resource_control_forbidden',\n list: 'auth.message.container_list_forbidden',\n create: 'auth.message.container_create_forbidden'\n};\n\nexport const resourceRightsLabels = {\n [ACL_READ]: 'auth.right.resource.read',\n [ACL_APPEND]: 'auth.right.resource.append',\n [ACL_WRITE]: 'auth.right.resource.write',\n [ACL_CONTROL]: 'auth.right.resource.control'\n};\n\nexport const containerRightsLabels = {\n [ACL_READ]: 'auth.right.container.read',\n [ACL_WRITE]: 'auth.right.container.write',\n [ACL_CONTROL]: 'auth.right.container.control'\n};\n","import React from 'react';\nimport { Edit, useGetRecordId } from 'react-admin';\nimport EditActionsWithPermissions from './EditActionsWithPermissions';\nimport EditToolbarWithPermissions from './EditToolbarWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst EditWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'edit');\n return (\n \n {React.cloneElement(props.children, {\n toolbar: ,\n // Allow to override toolbar\n ...props.children.props\n })}\n \n );\n};\n\nEditWithPermissions.defaultProps = {\n actions: \n};\n\nexport default EditWithPermissions;\n","import React from 'react';\nimport {\n usePermissionsOptimized,\n ShowButton,\n ListButton,\n TopToolbar,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl } from '../../constants';\n\nconst EditActionsWithPermissions = () => {\n const { hasList, hasShow } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissionsOptimized(record?.id);\n return (\n \n {hasList && }\n {hasShow && }\n {!!permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default EditActionsWithPermissions;\n","import React, { useState } from 'react';\nimport { Button, useRecordContext, useResourceContext } from 'react-admin';\nimport ShareIcon from '@mui/icons-material/Share';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsDialog from './PermissionsDialog';\n\nconst PermissionsButton = ({ isContainer }) => {\n const record = useRecordContext();\n const resource = useResourceContext();\n const [showDialog, setShowDialog] = useState(false);\n const createContainer = useCreateContainer(resource);\n const uri = isContainer ? createContainer : record.id || record['@id'];\n return (\n <>\n \n setShowDialog(false)} />\n \n );\n};\n\nPermissionsButton.defaultProps = {\n isContainer: false\n};\n\nexport default PermissionsButton;\n","import React from 'react';\nimport { Button, useTranslate } from 'react-admin';\nimport { Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddPermissionsForm from './AddPermissionsForm';\nimport EditPermissionsForm from './EditPermissionsForm';\nimport useAgents from '../../hooks/useAgents';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingTop: 0,\n paddingBottom: 0,\n paddingRight: 0,\n maxHeight: 210\n }\n}));\n\nconst PermissionsDialog = ({ open, onClose, uri, isContainer }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const { agents, addPermission, removePermission } = useAgents(uri);\n\n return (\n \n \n {translate(isContainer ? 'auth.dialog.container_permissions' : 'auth.dialog.resource_permissions')}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default PermissionsDialog;\n","import React, { useEffect, useState } from 'react';\nimport { useGetList, useTranslate } from 'react-admin';\nimport { TextField, List, ListItem, ListItemAvatar, ListItemText, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport PersonIcon from '@mui/icons-material/Person';\nimport { USER_AGENT, ACL_READ } from '../../constants';\n\nconst useStyles = makeStyles(() => ({\n list: {\n padding: 0,\n width: '100%'\n },\n option: {\n padding: 0\n }\n}));\n\nconst AddPermissionsForm = ({ agents, addPermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const [value, setValue] = useState(null);\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState([]);\n\n const { data } = useGetList(\n 'Person',\n {\n pagination: { page: 1, perPage: 100 },\n sort: { field: 'pair:label', order: 'ASC' },\n filter: { q: inputValue }\n },\n {\n enabled: inputValue.length > 0\n }\n );\n\n useEffect(() => {\n setOptions(data?.length > 0 ? Object.values(data) : []);\n }, [data]);\n\n return (\n option['pair:label']}\n // Do not return agents which have already been added\n filterOptions={x => x.filter(agent => !Object.keys(agents).includes(agent.id))}\n options={options}\n noOptionsText={translate('ra.navigation.no_results')}\n autoComplete\n blurOnSelect\n clearOnBlur\n disableClearable\n value={value}\n onChange={(event, record) => {\n addPermission(record.id || record['@id'], USER_AGENT, ACL_READ);\n setValue(null);\n setInputValue('');\n setOptions([]);\n }}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={params => (\n \n )}\n renderOption={(props, option) => (\n \n \n \n \n \n \n \n \n \n \n )}\n />\n );\n};\n\nexport default AddPermissionsForm;\n","import React from 'react';\nimport { List } from '@mui/material';\nimport { styled } from '@mui/system';\nimport AgentItem from './AgentItem';\n\nconst StyledList = styled(List)(({ theme }) => ({\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper\n}));\n\nconst EditPermissionsForm = ({ isContainer, agents, addPermission, removePermission }) => {\n return (\n \n {Object.entries(agents).map(([agentId, agent]) => (\n \n ))}\n \n );\n};\n\nexport default EditPermissionsForm;\n","import React, { useState, useEffect } from 'react';\nimport { useDataProvider, useTranslate, Loading, Error } from 'react-admin';\nimport {\n Avatar,\n ListItem,\n ListItemIcon,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n IconButton,\n Menu,\n MenuItem\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport EditIcon from '@mui/icons-material/Edit';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, resourceRightsLabels, containerRightsLabels } from '../../constants';\nimport AgentIcon from './AgentIcon';\n\nconst useStyles = makeStyles(() => ({\n listItem: {\n paddingLeft: 4,\n paddingRight: 36\n },\n primaryText: {\n width: '30%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryText: {\n textAlign: 'center',\n width: '60%',\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst AgentItem = ({ isContainer, agent, addPermission, removePermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [user, setUser] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n\n useEffect(() => {\n if (agent.predicate === USER_AGENT) {\n dataProvider\n .getOne('Person', { id: agent.id })\n .then(({ data }) => {\n setUser(data);\n setLoading(false);\n })\n .catch(error => {\n setError(error);\n setLoading(false);\n });\n } else {\n setLoading(false);\n }\n }, [agent.id, agent.predicate]);\n\n // For now, do not display groups\n if (agent.predicate === GROUP_AGENT) return null;\n\n const openMenu = event => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const labels = isContainer ? containerRightsLabels : resourceRightsLabels;\n\n if (loading) return ;\n if (error) return ;\n\n return (\n \n \n \n \n \n \n \n translate(labels[p])).join(', ')}\n />\n \n \n \n \n \n {Object.entries(labels).map(([rightKey, rightLabel]) => {\n const hasPermission = agent.permissions && agent.permissions.includes(rightKey);\n return (\n {\n if (hasPermission) {\n removePermission(agent.id, agent.predicate, rightKey);\n } else {\n addPermission(agent.id, agent.predicate, rightKey);\n }\n closeMenu();\n }}\n >\n {hasPermission ? : null}\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default AgentItem;\n","import React from 'react';\nimport PublicIcon from '@mui/icons-material/Public';\nimport VpnLockIcon from '@mui/icons-material/VpnLock';\nimport PersonIcon from '@mui/icons-material/Person';\nimport GroupIcon from '@mui/icons-material/Group';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT } from '../../constants';\n\nconst AgentIcon = ({ agent }) => {\n switch (agent.predicate) {\n case CLASS_AGENT:\n return agent.id === ANONYMOUS_AGENT ? : ;\n case USER_AGENT:\n return ;\n case GROUP_AGENT:\n return ;\n default:\n throw new Error(`Unknown agent predicate: ${agent.predicate}`);\n }\n};\n\nexport default AgentIcon;\n","import { useEffect, useCallback, useState } from 'react';\nimport { usePermissions, useAuthProvider } from 'react-admin';\nimport { defaultToArray } from '../utils';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, AUTHENTICATED_AGENT } from '../constants';\n\nconst useAgents = uri => {\n const { permissions } = usePermissions(uri);\n const authProvider = useAuthProvider();\n const [agents, setAgents] = useState({});\n\n // Format list of authorized agents, based on the permissions returned for the resource\n useEffect(() => {\n const result = {\n [ANONYMOUS_AGENT]: {\n id: ANONYMOUS_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n },\n [AUTHENTICATED_AGENT]: {\n id: AUTHENTICATED_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n }\n };\n\n const appendPermission = (agentId, predicate, mode) => {\n if (result[agentId]) {\n result[agentId].permissions.push(mode);\n } else {\n result[agentId] = {\n id: agentId,\n predicate,\n permissions: [mode]\n };\n }\n };\n\n if (permissions) {\n for (const p of permissions) {\n if (p[CLASS_AGENT]) {\n defaultToArray(p[CLASS_AGENT]).forEach(agentId => appendPermission(agentId, CLASS_AGENT, p['acl:mode']));\n }\n if (p[USER_AGENT]) {\n defaultToArray(p[USER_AGENT]).forEach(userUri => appendPermission(userUri, USER_AGENT, p['acl:mode']));\n }\n if (p[GROUP_AGENT]) {\n defaultToArray(p[GROUP_AGENT]).forEach(groupUri => appendPermission(groupUri, GROUP_AGENT, p['acl:mode']));\n }\n }\n setAgents(result);\n }\n }, [permissions]);\n\n const addPermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents({\n ...agents,\n [agentId]: {\n id: agentId,\n predicate,\n permissions: agents[agentId] ? [...agents[agentId]?.permissions, mode] : [mode]\n }\n });\n authProvider.addPermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n const removePermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents(\n Object.fromEntries(\n Object.entries(agents)\n .map(([key, agent]) => {\n if (agent.id === agentId) {\n agent.permissions = agent.permissions.filter(m => m !== mode);\n }\n return [key, agent];\n })\n // Remove agents if they have no permissions (except if they are class agents)\n .filter(([_, agent]) => agent.predicate === CLASS_AGENT || agent.permissions.length > 0)\n )\n );\n authProvider.removePermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n return { agents, addPermission, removePermission };\n};\n\nexport default useAgents;\n","import React from 'react';\nimport { SaveButton, Toolbar } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\nimport DeleteButtonWithPermissions from './DeleteButtonWithPermissions';\n\nconst useStyles = makeStyles(() => ({\n toolbar: {\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between'\n }\n}));\n\nconst EditToolbarWithPermissions = props => {\n const classes = useStyles();\n return (\n \n \n \n \n );\n};\n\nexport default EditToolbarWithPermissions;\n","import React from 'react';\nimport { DeleteButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToDelete } from '../../constants';\n\nconst DeleteButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToDelete.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default DeleteButtonWithPermissions;\n","import React from 'react';\nimport { EditButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToEdit } from '../../constants';\n\nconst EditButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToEdit.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default EditButtonWithPermissions;\n","import React from 'react';\nimport { List } from 'react-admin';\nimport ListActionsWithPermissions from './ListActionsWithPermissions';\n\nconst ListWithPermissions = props => ;\n\nListWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ListWithPermissions;\n","import React from 'react';\nimport {\n CreateButton,\n ExportButton,\n useResourceDefinition,\n TopToolbar,\n usePermissions,\n useResourceContext\n} from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToCreate, rightsToControl } from '../../constants';\n\n// Do not show Export and Refresh buttons on mobile\nconst ListActionsWithPermissions = ({\n bulkActions,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total\n}) => {\n const resource = useResourceContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('xs'));\n const resourceDefinition = useResourceDefinition();\n const createContainerUri = useCreateContainer(resource);\n const { permissions } = usePermissions(createContainerUri);\n return (\n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && permissions && permissions.some(p => rightsToCreate.includes(p['acl:mode'])) && (\n \n )}\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && (\n \n )}\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithPermissions;\n","import React from 'react';\nimport { Show, useGetRecordId } from 'react-admin';\nimport ShowActionsWithPermissions from './ShowActionsWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst ShowWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'show');\n return ;\n};\n\nShowWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ShowWithPermissions;\n","import React from 'react';\nimport {\n EditButton,\n ListButton,\n TopToolbar,\n usePermissions,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl, rightsToEdit } from '../../constants';\n\nconst ShowActionsWithPermissions = () => {\n const { hasList, hasEdit } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissions(record?.id);\n return (\n \n {hasList && }\n {hasEdit && permissions && permissions.some(p => rightsToEdit.includes(p['acl:mode'])) && }\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default ShowActionsWithPermissions;\n","import React from 'react';\nimport { useLogin, useTranslate } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\n\nconst AuthDialog = ({ open, onClose, title, message, redirect, ...rest }) => {\n const login = useLogin();\n const translate = useTranslate();\n return (\n \n {translate(title)}\n \n {translate(message)}\n \n \n \n login({ redirect: redirect || window.location.pathname + window.location.search })}\n color=\"primary\"\n variant=\"contained\"\n >\n {translate('auth.action.login')}\n \n \n \n );\n};\n\nAuthDialog.defaultProps = {\n title: 'auth.dialog.login_required',\n message: 'auth.message.login_to_continue'\n};\n\nexport default AuthDialog;\n","import React, { useRef, useEffect } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useDataProvider, useAuthProvider, useLogin, useGetIdentity, useNotify } from 'react-admin';\nimport { Card, Avatar, Typography, Button, CardActions } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport LockIcon from '@mui/icons-material/Lock';\n\nconst delay = async t => new Promise(resolve => setTimeout(resolve, t));\n\n// Inspired from https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/auth/Login.tsx\nconst SsoLoginPage = ({ children, backgroundImage, buttons, userResource, propertiesExist, text, ...rest }) => {\n const containerRef = useRef();\n let backgroundImageLoaded = false;\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const { identity, isLoading } = useGetIdentity();\n\n const notify = useNotify();\n const login = useLogin();\n const dataProvider = useDataProvider();\n const authProvider = useAuthProvider();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n // Already authenticated, redirect to the home page\n navigate(searchParams.get('redirect') || '/');\n }\n }, [identity, isLoading, navigate, searchParams]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('login')) {\n if (searchParams.has('error')) {\n if (searchParams.get('error') === 'registration.not-allowed') {\n notify('auth.message.user_email_not_found', { type: 'error' });\n } else {\n notify('auth.message.bad_request', { type: 'error', error: searchParams.get('error') });\n }\n } else if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n\n localStorage.setItem('token', token);\n\n let userData;\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n\n if (propertiesExist.length > 0) {\n let allPropertiesExist = propertiesExist.every(p => userData[p]);\n while (!allPropertiesExist) {\n console.log('Waiting for all properties to have been created', propertiesExist);\n await delay(500);\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n allPropertiesExist = propertiesExist.every(p => userData[p]);\n }\n }\n\n if (!authProvider.checkUser(userData)) {\n localStorage.removeItem('token');\n notify('auth.message.user_not_allowed_to_login', { type: 'error' });\n navigate.replace('/login');\n } else if (searchParams.has('redirect')) {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = searchParams.get('redirect');\n } else if (searchParams.has('new') && searchParams.get('new') === 'true') {\n notify('auth.message.new_user_created', { type: 'info' });\n window.location.href = `/${userResource}/${encodeURIComponent(webId)}`;\n } else {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = '/';\n }\n }\n }\n\n if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', { type: 'info' });\n navigate('/');\n }\n })();\n }, [searchParams, navigate, notify, userResource]);\n\n const updateBackgroundImage = () => {\n if (!backgroundImageLoaded && containerRef.current) {\n containerRef.current.style.backgroundImage = `url(${backgroundImage})`;\n backgroundImageLoaded = true;\n }\n };\n\n // Load background image asynchronously to speed up time to interactive\n const lazyLoadBackgroundImage = () => {\n if (backgroundImage) {\n const img = new Image();\n img.onload = updateBackgroundImage;\n img.src = backgroundImage;\n }\n };\n\n useEffect(() => {\n if (!backgroundImageLoaded) {\n lazyLoadBackgroundImage();\n }\n });\n\n if (isLoading) return null;\n\n return (\n \n \n
\n \n \n \n
\n {text && {text}}\n {buttons?.map((button, i) => (\n \n {React.cloneElement(button, {\n fullWidth: true,\n variant: 'outlined',\n type: 'submit',\n onClick: () => login({}, '/login')\n })}\n \n ))}\n
\n
\n );\n};\n\nconst PREFIX = 'SsoLoginPage';\n\nexport const SsoLoginPageClasses = {\n card: `${PREFIX}-card`,\n avatar: `${PREFIX}-avatar`,\n icon: `${PREFIX}-icon`,\n switch: `${PREFIX}-switch`\n};\n\nconst Root = styled('div', {\n name: PREFIX,\n overridesResolver: (props, styles) => styles.root\n})(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n height: '1px',\n alignItems: 'center',\n justifyContent: 'flex-start',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundImage: 'radial-gradient(circle at 50% 14em, #313264 0%, #00023b 60%, #00023b 100%)',\n [`& .${SsoLoginPageClasses.card}`]: {\n minWidth: 300,\n marginTop: '6em'\n },\n [`& .${SsoLoginPageClasses.avatar}`]: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n [`& .${SsoLoginPageClasses.icon}`]: {\n backgroundColor: theme.palette.secondary[500]\n },\n [`& .${SsoLoginPageClasses.switch}`]: {\n marginBottom: '1em',\n display: 'flex',\n justifyContent: 'center'\n }\n}));\n\nSsoLoginPage.defaultProps = {\n propertiesExist: [],\n // TODO deprecate this\n buttons: [],\n userResource: 'Person'\n};\n\nexport default SsoLoginPage;\n","import React, { useMemo } from 'react';\nimport { Notification } from 'react-admin';\nimport { ThemeProvider } from '@mui/system';\nimport { createTheme } from '@mui/material/styles';\nimport { StyledEngineProvider } from '@mui/material';\nimport PodLoginPageView from './PodLoginPageView';\n\nconst PodLoginPage = props => {\n const muiTheme = useMemo(() => createTheme(props.theme), [props.theme]);\n return (\n \n \n \n \n \n \n );\n};\n\nexport default PodLoginPage;\n","import React, { useEffect, useState } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNotify, useAuthProvider, useDataProvider, useLocale, useTranslate } from 'react-admin';\nimport { Box, List, ListItem, ListItemText, ListItemAvatar, Avatar, Divider, Card, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LockIcon from '@mui/icons-material/Lock';\nimport StorageIcon from '@mui/icons-material/Storage';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.primary.main\n }\n },\n text: {\n textAlign: 'center',\n padding: '4px 8px 8px'\n },\n card: {\n minWidth: 300,\n maxWidth: 350,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n lockIconAvatar: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n lockIcon: {\n backgroundColor: theme.palette.grey['500']\n },\n list: {\n paddingTop: 0,\n paddingBottom: 0\n },\n listItem: {\n paddingTop: 5,\n paddingBottom: 5\n }\n}));\n\nconst PodLoginPageView = ({ history, location, text, customPodProviders }) => {\n const classes = useStyles();\n const notify = useNotify();\n const locale = useLocale();\n const translate = useTranslate();\n const authProvider = useAuthProvider();\n const dataProvider = useDataProvider();\n const [podProviders, setPodProviders] = useState(customPodProviders || []);\n const searchParams = new URLSearchParams(location.search);\n\n useEffect(() => {\n (async () => {\n if (podProviders.length === 0) {\n const results = await fetch('https://data.activitypods.org/pod-providers', {\n headers: {\n Accept: 'application/ld+json'\n }\n });\n if (results.ok) {\n const json = await results.json();\n // Filter POD providers by available locales\n const podProviders = json['ldp:contains'].filter(provider =>\n Array.isArray(provider['apods:locales'])\n ? provider['apods:locales'].includes(locale)\n : provider['apods:locales'] === locale\n );\n setPodProviders(podProviders);\n } else {\n notify('auth.message.pod_providers_not_loaded', 'error');\n }\n }\n })();\n }, [podProviders, setPodProviders, notify, locale]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n const response = await fetch(webId, {\n headers: {\n Accept: 'application/json'\n }\n });\n if (!response.ok) {\n notify('auth.message.unable_to_fetch_user_data', 'error');\n } else {\n const data = await response.json();\n if (!authProvider.checkUser(data)) {\n notify('auth.message.user_not_allowed_to_login', 'error');\n history.replace('/login');\n } else {\n localStorage.setItem('token', token);\n notify('auth.message.user_connected', 'info');\n // Reload to ensure the dataServers config is reset\n window.location.reload();\n window.location.href = '/?addUser=true';\n }\n }\n } else if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', 'info');\n history.push('/');\n }\n })();\n }, [searchParams, dataProvider]);\n\n if (searchParams.has('token') || searchParams.has('addUser') || searchParams.has('logout')) {\n return null;\n }\n\n return (\n \n \n
\n \n \n \n
\n \n \n {text || translate('auth.message.choose_pod_provider')}\n \n \n \n \n {podProviders.map((podProvider, i) => {\n const url = new URL(\n '/auth',\n (podProvider['apods:domainName'].includes(':') ? 'http://' : 'https://') +\n podProvider['apods:domainName']\n );\n if (searchParams.has('signup')) url.searchParams.set('signup', 'true');\n url.searchParams.set('redirect', window.location.href);\n return (\n \n \n (window.location.href = url.toString())}\n className={classes.listItem}\n >\n \n \n \n \n \n \n \n \n );\n })}\n \n \n
\n
\n );\n};\n\nexport default PodLoginPageView;\n","import React, { useEffect, useMemo } from 'react';\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom';\nimport { useTranslate, useGetIdentity } from 'react-admin';\nimport { Card, Typography } from '@mui/material';\nimport LockIcon from '@mui/icons-material/Lock';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SignupForm from './SignupForm';\nimport LoginForm from './LoginForm';\nimport NewPasswordForm from './NewPasswordForm';\nimport ResetPasswordForm from './ResetPasswordForm';\nimport SimpleBox from './SimpleBox';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(() => ({\n switch: {\n marginBottom: '1em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n }\n}));\n\n/**\n * @param {object} props Props\n * @param {boolean} props.hasSignup If to show signup form.\n * @param {boolean} props.allowUsername Indicates, if login is allowed with username (instead of email).\n * @param {string} props.postSignupRedirect Location to redirect to after signup.\n * @param {string} props.postLoginRedirect Location to redirect to after login.\n * @param {object} props.additionalSignupValues\n * @param {object} props.passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst LocalLoginPage = ({\n hasSignup,\n allowUsername,\n postSignupRedirect,\n postLoginRedirect,\n additionalSignupValues,\n passwordScorer = defaultScorer\n}) => {\n const classes = useStyles();\n const navigate = useNavigate();\n const translate = useTranslate();\n const [searchParams] = useSearchParams();\n const isSignup = hasSignup && searchParams.has('signup');\n const isResetPassword = searchParams.has('reset_password');\n const isNewPassword = searchParams.has('new_password');\n const isLogin = !isSignup && !isResetPassword && !isNewPassword;\n const redirectTo = searchParams.get('redirect');\n const { identity, isLoading } = useGetIdentity();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n if (postLoginRedirect) {\n navigate(`${postLoginRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`);\n } else if (redirectTo && redirectTo.startsWith('http')) {\n window.location.href = redirectTo;\n } else {\n navigate(redirectTo || '/');\n }\n }\n }, [identity, isLoading, navigate, redirectTo, postLoginRedirect]);\n\n const [title, text] = useMemo(() => {\n if (isSignup) {\n return ['auth.action.signup', 'auth.helper.signup'];\n }\n if (isLogin) {\n return ['auth.action.login', 'auth.helper.login'];\n }\n if (isResetPassword) {\n return ['auth.action.reset_password', 'auth.helper.reset_password'];\n }\n if (isNewPassword) {\n return ['auth.action.set_new_password', 'auth.helper.set_new_password'];\n }\n }, [isSignup, isLogin, isResetPassword, isNewPassword]);\n\n if (isLoading || identity?.id) return null;\n if (isLoading || identity?.id) return null;\n\n return (\n }>\n \n {isSignup && (\n \n )}\n {isResetPassword && }\n {isNewPassword && }\n {isLogin && }\n
\n {isSignup && (\n \n {translate('auth.action.login')}\n \n )}\n {isLogin && (\n <>\n {hasSignup && (\n
\n \n {translate('auth.action.signup')}\n \n
\n )}\n
\n \n {translate('auth.action.reset_password')}\n \n
\n \n )}\n
\n
\n
\n );\n};\n\nLocalLoginPage.defaultProps = {\n hasSignup: true,\n allowUsername: false,\n additionalSignupValues: {}\n};\n\nexport default LocalLoginPage;\n","import * as React from 'react';\nimport createSlug from 'speakingurl';\nimport {\n Form,\n useTranslate,\n useNotify,\n useSafeSetState,\n TextInput,\n required,\n email,\n useLocaleState\n} from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useSignup from '../../hooks/useSignup';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n * @param postSignupRedirect\n * @param additionalSignupValues\n * @param delayBeforeRedirect\n * @param {string} redirectTo\n * @param {object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst SignupForm = ({\n redirectTo,\n passwordScorer = defaultScorer,\n postSignupRedirect,\n additionalSignupValues,\n delayBeforeRedirect\n}) => {\n const [loading, setLoading] = useSafeSetState(false);\n const signup = useSignup();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const [locale] = useLocaleState();\n const [password, setPassword] = React.useState('');\n\n const submit = values => {\n setLoading(true);\n signup({\n ...values,\n ...additionalSignupValues\n })\n .then(webId => {\n if (delayBeforeRedirect) {\n setTimeout(() => {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }, delayBeforeRedirect);\n } else {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }\n notify('auth.message.new_user_created', { type: 'info' });\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n );\n });\n };\n\n return (\n
\n \n \n value\n ? createSlug(value, {\n lang: locale || 'fr',\n separator: '_',\n custom: ['.', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n })\n : ''\n }\n />\n \n {passwordScorer && password && !(searchParams.has('email') && searchParams.has('force-email')) && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n \n \n )}\n setPassword(e.target.value)}\n label={translate('ra.auth.password')}\n autoComplete=\"new-password\"\n fullWidth\n disabled={loading || (searchParams.has('email') && searchParams.has('force-email'))}\n validate={[required(), validatePasswordStrength(passwordScorer)]}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.signup')\n )}\n \n \n
\n );\n};\n\nSignupForm.defaultValues = {\n redirectTo: '/',\n additionalSignupValues: {}\n};\n\nexport default SignupForm;\n","import { useCallback } from 'react';\nimport { useAuthProvider } from 'react-admin';\n\nconst useSignup = () => {\n const authProvider = useAuthProvider();\n\n return useCallback((params = {}) => authProvider.signup(params), [authProvider]);\n};\n\nexport default useSignup;\n","import { defaultScorer } from '../../passwordScorer';\n\nconst validatePasswordStrength = (scorer = defaultScorer) => value => {\n if (!scorer) return undefined;\n const strength = scorer.scoreFn(value);\n if (strength < scorer.minRequiredScore) {\n return 'auth.input.password_too_weak';\n }\n return undefined;\n};\n\nexport default validatePasswordStrength;\n","// Inspired by https://github.com/bartlomiejzuber/password-strength-score\n\n/**\n * @typedef PasswordStrengthOptions\n * @property {number} isVeryLongLength - Required characters for a very long password (default: 12)\n * @property {number} isLongLength - Required characters for a long password (default: 6)\n * @property {number} isVeryLongScore - Score for a very long password (default: 2.5)\n * @property {number} isLongScore - Score for a long password (default: 1.5)\n * @property {number} uppercaseScore - Score for a password with uppercase letters (default: 1)\n * @property {number} lowercaseScore - Score for a password with lowercase letters (default: 1)\n * @property {number} numbersScore - Score for a password with numbers (default: 1)\n * @property {number} nonAlphanumericsScore - Score for a password without non-alphanumeric characters (default: 1)\n */\n\n/** @type {PasswordStrengthOptions} */\nexport const defaultOptions = {\n isVeryLongLength: 14,\n isLongLength: 8,\n isLongScore: 2,\n isVeryLongScore: 4,\n uppercaseScore: 1,\n lowercaseScore: 1,\n numbersScore: 1,\n nonAlphanumericsScore: 1\n};\n\n/**\n *\n * @param {string} password Password text.\n * @param {PasswordStrengthOptions} options Password options.\n * @returns {number} The password strength score.\n */\nexport const passwordStrength = (password, options) => {\n if (!password) {\n return 0;\n }\n\n const mergedOptions = { ...defaultOptions, ...options };\n\n const longScore = (password.length >= mergedOptions.isLongLength && mergedOptions.isLongScore) || 0;\n const veryLongScore = (password.length >= mergedOptions.isVeryLongLength && mergedOptions.isVeryLongScore) || 0;\n const lowercaseScore = (/[a-z]/.test(password) && mergedOptions.lowercaseScore) || 0;\n const uppercaseScore = (/[A-Z]/.test(password) && mergedOptions.uppercaseScore) || 0;\n const numbersScore = (/\\d/.test(password) && mergedOptions.numbersScore) || 0;\n const nonalphasScore = (/\\W/.test(password) && mergedOptions.nonAlphanumericsScore) || 0;\n\n return uppercaseScore + lowercaseScore + numbersScore + nonalphasScore + longScore + veryLongScore;\n};\n\nexport const createPasswordScorer = (options = defaultOptions, minRequiredScore = 5) => {\n const mergedOptions = { ...defaultOptions, ...options };\n\n return {\n scoreFn: password => passwordStrength(password, mergedOptions),\n minRequiredScore,\n maxScore:\n mergedOptions.uppercaseScore +\n mergedOptions.lowercaseScore +\n mergedOptions.numbersScore +\n mergedOptions.nonAlphanumericsScore +\n mergedOptions.isLongScore +\n mergedOptions.isVeryLongScore\n };\n};\n\nexport const defaultScorer = createPasswordScorer(defaultOptions, 5);\n","import React from 'react';\nimport ColorGradientProgressBar from './ColorGradientProgressBar';\nimport { defaultScorer } from '../../passwordScorer';\n\nexport default function PasswordStrengthIndicator({ scorer = defaultScorer, password, ...restProps }) {\n const strength = scorer.scoreFn(password);\n return ;\n}\n","import React from 'react';\nimport { LinearProgress } from '@mui/material';\nimport { withStyles } from '@mui/styles';\n\n/**\n * @typedef {Object} Color\n * @property {number} red\n * @property {number} green\n * @property {number} blue\n */\n\n/** Calculate a rgb-color from a gradient between `color1` and `color2`\n * @param {number} fade - Indicates the fade between `color1` and `color2` in the range [0, 1].\n * @param {Color} color1\n * @param {Color} color2\n * @returns {string} `` `rgb(${red}, ${green}, ${blue})` ``\n */\nconst colorGradient = (fade, color1, color2) => {\n var diffRed = color2.red - color1.red;\n var diffGreen = color2.green - color1.green;\n var diffBlue = color2.blue - color1.blue;\n\n var gradient = {\n red: Math.floor(color1.red + diffRed * fade),\n green: Math.floor(color1.green + diffGreen * fade),\n blue: Math.floor(color1.blue + diffBlue * fade)\n };\n\n return 'rgb(' + gradient.red + ',' + gradient.green + ',' + gradient.blue + ')';\n};\n\n/** A progress bar that changes its color between its min an max value.\n * @param {Object} props\n * @param {Color} [props.badColor = { red: 0xff, green: 0x40, blue: 0x47 }] - default: `#FF4047`\n * @param {Color} [props.goodColor = { red: 0x00, green: 0xff, blue: 0x6e }] - default: `#00FF6E`\n * @param {number} props.maxVal\n * @param {number} props.minVal\n * @param {number} props.currentVal\n */\nexport default function ColorGradientProgressBar(props) {\n const { minVal, maxVal, currentVal, badColor, goodColor, ...restProps } = props;\n\n const color1 = badColor || { red: 0xff, green: 0x40, blue: 0x47 };\n const color2 = goodColor || { red: 0x00, green: 0xff, blue: 0x6e };\n\n const fade = Math.max(0, Math.min(1, (currentVal - minVal) / (maxVal - minVal)));\n const currentColor = colorGradient(fade, color1, color2);\n\n const StyledLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: '#e0e0e0'\n },\n barColorPrimary: {\n backgroundColor: currentColor\n }\n })(LinearProgress);\n\n return ;\n}\n","import * as React from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, TextInput, required, email, useLogin } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst LoginForm = ({ redirectTo, allowUsername }) => {\n const [loading, setLoading] = useSafeSetState(false);\n const login = useLogin();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n\n const submit = values => {\n setLoading(true);\n login(values, redirectTo)\n .then(() => {\n setLoading(false);\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n validate={allowUsername ? [required()] : [required(), email()]}\n />\n \n \n {loading ? (\n \n ) : (\n translate('auth.action.login')\n )}\n \n \n
\n );\n};\n\nLoginForm.defaultValues = {\n redirectTo: '/',\n allowUsername: false\n};\n\nexport default LoginForm;\n","import React, { useState } from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, useAuthProvider, TextInput, required } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n *\n * @param {string} redirectTo\n * @param {Object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst NewPasswordForm = ({ redirectTo, passwordScorer = defaultScorer }) => {\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const token = searchParams.get('token');\n\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const [newPassword, setNewPassword] = useState('');\n\n const submit = values => {\n setLoading(true);\n authProvider\n .setNewPassword({ ...values, token })\n .then(res => {\n setTimeout(() => {\n window.location.href = `/login${redirectTo ? `?redirect=${encodeURIComponent(redirectTo)}` : ''}`;\n setLoading(false);\n }, 2000);\n notify('auth.notification.password_changed', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n {passwordScorer && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n\n \n \n )}\n setNewPassword(e.target.value)}\n format={value => (value ? value.toLowerCase() : '')}\n />\n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.set_new_password')\n )}\n \n \n
\n );\n};\n\nexport default NewPasswordForm;\n","import React from 'react';\nimport { Form, TextInput, required, useTranslate, useNotify, useSafeSetState, useAuthProvider } from 'react-admin';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst ResetPasswordForm = () => {\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const submit = values => {\n setLoading(true);\n authProvider\n .resetPassword({ ...values })\n .then(res => {\n setLoading(false);\n notify('auth.notification.reset_password_submitted', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.reset_password')\n )}\n \n \n
\n );\n};\n\nexport default ResetPasswordForm;\n","import React from 'react';\nimport { Box, Card, Typography } from '@mui/material';\nimport { Notification } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.secondary.main\n }\n },\n root: {\n backgroundColor: theme.palette.secondary.main\n },\n card: {\n minWidth: 300,\n maxWidth: 500,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n icon: {\n marginTop: 5,\n marginRight: 5\n },\n title: {\n [theme.breakpoints.down('sm')]: {\n fontWeight: 'bold',\n marginTop: 12\n }\n }\n}));\n\nconst SimpleBox = ({ title, icon, text, children }) => {\n const classes = useStyles();\n return (\n \n \n \n {icon && React.cloneElement(icon, { fontSize: 'large', className: classes.icon })}\n \n {title}\n \n \n \n {text}\n \n {children}\n \n \n \n );\n};\n\nexport default SimpleBox;\n","import React from 'react';\nimport { Resource, usePermissions } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport { rightsToCreate } from '../constants';\n\n// Not used for now. The ListWithPermissions component will handle the conditional display of the Create button.\nconst ResourceWithPermission = ({ name, create, ...rest }) => {\n const createContainer = useCreateContainer(name);\n const { permissions } = usePermissions(createContainer);\n return (\n rightsToCreate.includes(p['acl:mode'])) ? create : undefined}\n // Requesting permissions to list container is too long, we will avoid that for now\n // list={permissions && permissions.some(p => rightsToList.includes(p['acl:mode'])) ? list : undefined}\n />\n );\n};\n\nexport default ResourceWithPermission;\n","import React, { forwardRef, useCallback } from 'react';\nimport { Logout, UserMenu as RaUserMenu, useGetIdentity, useTranslate, useUserMenu } from 'react-admin';\nimport { MenuItem, ListItemIcon, ListItemText } from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\nimport EditIcon from '@mui/icons-material/Edit';\nimport { useNavigate } from 'react-router-dom';\n\n// It's important to pass the ref to allow Material UI to manage the keyboard navigation\nconst UserMenuItem = forwardRef(({ label, icon, to, ...rest }, ref) => {\n const { onClose } = useUserMenu();\n const translate = useTranslate();\n const navigate = useNavigate();\n const onClick = useCallback(() => {\n navigate(to);\n onClose();\n }, [to, onClose, navigate]);\n return (\n \n {icon && {React.cloneElement(icon, { fontSize: 'small' })}}\n {translate(label)}\n \n );\n});\n\nconst UserMenu = ({ logout, profileResource, ...otherProps }) => {\n const { identity } = useGetIdentity();\n return (\n \n {identity && identity.id !== ''\n ? [\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}/show`}\n />,\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}`}\n />,\n React.cloneElement(logout, { key: 'logout' })\n ]\n : [\n ,\n \n ]}\n \n );\n};\n\nUserMenu.defaultProps = {\n logout: ,\n profileResource: 'Person'\n};\n\nexport default UserMenu;\n","import React, { useEffect } from 'react';\nimport { useGetIdentity, useNotify, useRedirect } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\n\nconst useCheckAuthenticated = message => {\n const { identity, isLoading } = useGetIdentity();\n const notify = useNotify();\n const redirect = useRedirect();\n const location = useLocation();\n\n useEffect(() => {\n if (!isLoading && !identity?.id) {\n notify(message || 'ra.auth.auth_check_error', { type: 'error' });\n redirect(`/login?redirect=${encodeURIComponent(location.pathname + location.search)}`);\n }\n }, [isLoading, identity, redirect, notify, location]);\n\n return { identity, isLoading };\n};\n\nexport default useCheckAuthenticated;\n","import { useEffect, useCallback } from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { useGetPermissions, useSafeSetState } from 'react-admin';\n\nconst emptyParams = {};\n\n// keep a cache of already fetched permissions to initialize state for new\n// components and avoid a useless rerender if the permissions haven't changed\nconst alreadyFetchedPermissions = { '{}': undefined };\n\n// Fork of usePermissionsOptimized, with a refetch option\nconst usePermissionsWithRefetch = (params = emptyParams) => {\n const key = JSON.stringify(params);\n const [state, setState] = useSafeSetState({\n permissions: alreadyFetchedPermissions[key]\n });\n const getPermissions = useGetPermissions();\n\n const fetchPermissions = useCallback(\n () =>\n getPermissions(params)\n .then(permissions => {\n if (!isEqual(permissions, state.permissions)) {\n alreadyFetchedPermissions[key] = permissions;\n setState({ permissions });\n }\n })\n .catch(error => {\n setState({\n error\n });\n }),\n [key, params, getPermissions]\n );\n\n useEffect(() => {\n fetchPermissions();\n }, [key]);\n\n return { ...state, refetch: fetchPermissions };\n};\n\nexport default usePermissionsWithRefetch;\n","const englishMessages = {\n auth: {\n dialog: {\n container_permissions: 'Container permissions',\n resource_permissions: 'Resource permissions',\n login_required: 'Login required'\n },\n action: {\n permissions: 'Permissions',\n signup: 'Signup',\n reset_password: 'Reset password',\n set_new_password: 'Set new password',\n logout: 'Logout',\n login: 'Login',\n view_my_profile: 'View my profile',\n edit_my_profile: 'Edit my profile'\n },\n right: {\n resource: {\n read: 'Read',\n append: 'Append',\n write: 'Write',\n control: 'Control'\n },\n container: {\n read: 'List',\n append: 'Add',\n write: 'Add',\n control: 'Control'\n }\n },\n agent: {\n anonymous: 'All users',\n authenticated: 'Connected users'\n },\n input: {\n agent_select: 'Add an user...',\n name: 'Surname',\n username: 'User ID',\n email: 'Email address',\n username_or_email: 'User ID or email address',\n current_password: 'Current password',\n new_password: 'New password',\n confirm_new_password: 'Confirm new password',\n password_strength: 'Password strength',\n password_too_weak: 'Password too weak. Increase length or add special characters.'\n },\n helper: {\n login: 'Sign in to your account',\n signup: 'Create your account',\n reset_password: 'Enter your email address below and we will send you a link to reset your password',\n set_new_password: 'Please enter your email address and a new password below'\n },\n message: {\n resource_show_forbidden: 'You are not allowed to view this resource',\n resource_edit_forbidden: 'You are not allowed to edit this resource',\n resource_delete_forbidden: 'You are not allowed to delete this resource',\n resource_control_forbidden: 'You are not allowed to control this resource',\n container_create_forbidden: 'You are not allowed to create new resource',\n container_list_forbidden: 'You are not allowed to list these resources',\n user_not_allowed_to_login: 'You are not allowed to login with this account',\n user_email_not_found: 'No account found with this email address',\n user_email_exist: 'An account already exist with this email address',\n username_exist: 'An account already exist with this user ID',\n username_invalid: 'This username is invalid. Only lowercase characters, numbers, dots and hyphens are authorized',\n new_user_created: 'Your account has been successfully created',\n user_connected: 'You are now connected',\n user_disconnected: 'You are now disconnected',\n bad_request: 'Bad request (Error message returned by the server: %{error})',\n account_settings_updated: 'Your account settings have been successfully updated',\n login_to_continue: 'Please login to continue',\n choose_pod_provider:\n 'Please choose a POD provider in the list below. All application data will be saved on your POD.'\n },\n notification: {\n reset_password_submitted: 'An email has been sent with reset password instructions',\n reset_password_error: 'An error occurred',\n password_changed: 'Password changed successfully',\n new_password_error: 'An error occurred',\n invalid_password: 'Invalid password',\n get_settings_error: 'An error occurred',\n update_settings_error: 'An error occurred'\n }\n }\n};\n\nexport default englishMessages;\n","const frenchMessages = {\n auth: {\n dialog: {\n container_permissions: 'Permissions sur le container',\n resource_permissions: 'Permissions sur la ressource',\n login_required: 'Connexion requise'\n },\n action: {\n permissions: 'Permissions',\n signup: \"S'inscrire\",\n reset_password: 'Mot de passe oublié ?',\n set_new_password: 'Définir le mot de passe',\n logout: 'Se déconnecter',\n login: 'Se connecter',\n view_my_profile: 'Voir mon profil',\n edit_my_profile: 'Éditer mon profil'\n },\n right: {\n resource: {\n read: 'Lire',\n append: 'Enrichir',\n write: 'Modifier',\n control: 'Administrer'\n },\n container: {\n read: 'Lister',\n append: 'Ajouter',\n write: 'Ajouter',\n control: 'Administrer'\n }\n },\n agent: {\n anonymous: 'Tous les utilisateurs',\n authenticated: 'Utilisateurs connectés'\n },\n input: {\n agent_select: 'Ajouter un utilisateur...',\n name: 'Prénom',\n username: 'Identifiant unique',\n email: 'Adresse e-mail',\n username_or_email: 'Identifiant ou adresse e-mail',\n current_password: 'Mot de passe actuel',\n new_password: 'Nouveau mot de passe',\n confirm_new_password: 'Confirmer le nouveau mot de passe',\n password_strength: 'Force du mot de passe',\n password_too_weak: 'Mot de passe trop faible. Augmenter la longueur ou ajouter des caractères spéciaux.'\n },\n helper: {\n login: 'Connectez-vous à votre compte.',\n signup: 'Créez votre compte',\n reset_password:\n 'Entrez votre adresse mail ci-dessous et nous vous enverrons un lien pour réinitialiser votre mot de passe',\n set_new_password: 'Veuillez entrer votre adresse mail et un nouveau mot de passe ci-dessous'\n },\n message: {\n resource_show_forbidden: \"Vous n'avez pas la permission de voir cette ressource\",\n resource_edit_forbidden: \"Vous n'avez pas la permission d'éditer cette ressource\",\n resource_delete_forbidden: \"Vous n'avez pas la permission d'effacer cette ressource\",\n resource_control_forbidden: \"Vous n'avez pas la permission d'administrer cette ressource\",\n container_create_forbidden: \"Vous n'avez pas la permission de créer des ressources\",\n container_list_forbidden: \"Vous n'avez pas la permission de voir ces ressources\",\n user_not_allowed_to_login: \"Vous n'avez pas le droit de vous connecter avec ce compte\",\n user_email_not_found: 'Aucun compte trouvé avec cette adresse mail',\n user_email_exist: 'Un compte existe déjà avec cette adresse mail',\n username_exist: 'Un compte existe déjà avec cet identifiant',\n username_invalid:\n \"Cet identifiant n'est pas valide. Seuls les lettres minuscules, les chiffres, les points et les tirets sont autorisés\",\n new_user_created: 'Votre compte a été créé avec succès',\n user_connected: 'Vous êtes maintenant connecté',\n user_disconnected: 'Vous êtes maintenant déconnecté',\n bad_request: \"Requête erronée (Message d'erreur renvoyé par le serveur: %{error})\",\n account_settings_updated: 'Les paramètres de votre compte ont été mis à jour avec succès',\n login_to_continue: 'Veuillez vous connecter pour continuer',\n choose_pod_provider:\n \"Veuillez choisir un fournisseur de PODs dans la liste ci-dessous. Toutes les données de l'application seront enregistrées sur votre POD.\"\n },\n notification: {\n reset_password_submitted: 'Un e-mail a été envoyé avec les instructions de réinitialisation du mot de passe',\n reset_password_error: \"Une erreur s'est produite\",\n password_changed: 'Le mot de passe a été changé avec succès',\n new_password_error: \"Une erreur s'est produite\",\n invalid_password: 'Mot de passe incorrect',\n get_settings_error: \"Une erreur s'est produite\",\n update_settings_error: \"Une erreur s'est produite\"\n }\n }\n};\n\nexport default frenchMessages;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/auth-provider/src/index.js","packages/auth-provider/src/authProvider.js","packages/auth-provider/src/utils.js","packages/auth-provider/src/crud/create/CreateWithPermissions.js","packages/auth-provider/src/hooks/useCheckPermissions.js","packages/auth-provider/src/constants.js","packages/auth-provider/src/crud/edit/EditWithPermissions.js","packages/auth-provider/src/crud/edit/EditActionsWithPermissions.js","packages/auth-provider/src/components/PermissionsButton/PermissionsButton.js","packages/auth-provider/src/components/PermissionsButton/PermissionsDialog.js","packages/auth-provider/src/components/PermissionsButton/AddPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/EditPermissionsForm.js","packages/auth-provider/src/components/PermissionsButton/AgentItem.js","packages/auth-provider/src/components/PermissionsButton/AgentIcon.js","packages/auth-provider/src/hooks/useAgents.js","packages/auth-provider/src/crud/edit/EditToolbarWithPermissions.js","packages/auth-provider/src/crud/edit/DeleteButtonWithPermissions.js","packages/auth-provider/src/crud/edit/EditButtonWithPermissions.js","packages/auth-provider/src/crud/list/ListWithPermissions.js","packages/auth-provider/src/crud/list/ListActionsWithPermissions.js","packages/auth-provider/src/crud/show/ShowWithPermissions.js","packages/auth-provider/src/crud/show/ShowActionsWithPermissions.js","packages/auth-provider/src/components/AuthDialog.js","packages/auth-provider/src/components/SsoLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPage.js","packages/auth-provider/src/components/PodLoginPage/PodLoginPageView.js","packages/auth-provider/src/components/LocalLoginPage/LocalLoginPage.js","packages/auth-provider/src/components/LocalLoginPage/SignupForm.js","packages/auth-provider/src/hooks/useSignup.js","packages/auth-provider/src/components/LocalLoginPage/validatePasswordStrength.js","packages/auth-provider/src/passwordScorer.js","packages/auth-provider/src/components/LocalLoginPage/PasswordStrengthIndicator.js","packages/auth-provider/src/components/LocalLoginPage/ColorGradientProgressBar.js","packages/auth-provider/src/components/LocalLoginPage/LoginForm.js","packages/auth-provider/src/components/LocalLoginPage/NewPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/ResetPasswordForm.js","packages/auth-provider/src/components/LocalLoginPage/SimpleBox.js","packages/auth-provider/src/components/ResourceWithPermissions.js","packages/auth-provider/src/components/UserMenu.js","packages/auth-provider/src/hooks/useCheckAuthenticated.js","packages/auth-provider/src/hooks/usePermissionsWithRefetch.js","packages/auth-provider/src/messages/english.js","packages/auth-provider/src/messages/french.js"],"sourcesContent":["export { default as authProvider } from './authProvider';\n\n// Create\nexport { default as CreateWithPermissions } from './crud/create/CreateWithPermissions';\n\n// Edit\nexport { default as EditWithPermissions } from './crud/edit/EditWithPermissions';\nexport { default as EditActionsWithPermissions } from './crud/edit/EditActionsWithPermissions';\nexport { default as EditToolbarWithPermissions } from './crud/edit/EditToolbarWithPermissions';\nexport { default as EditButtonWithPermissions } from './crud/edit/EditButtonWithPermissions';\nexport { default as DeleteButtonWithPermissions } from './crud/edit/DeleteButtonWithPermissions';\n\n// List\nexport { default as ListWithPermissions } from './crud/list/ListWithPermissions';\nexport { default as ListActionsWithPermissions } from './crud/list/ListActionsWithPermissions';\n\n// Show\nexport { default as ShowWithPermissions } from './crud/show/ShowWithPermissions';\nexport { default as ShowActionsWithPermissions } from './crud/show/ShowActionsWithPermissions';\n\nexport { default as PermissionsButton } from './components/PermissionsButton/PermissionsButton';\nexport { default as AuthDialog } from './components/AuthDialog';\nexport { default as SsoLoginPage, default as LoginPage } from './components/SsoLoginPage';\nexport { default as PodLoginPage } from './components/PodLoginPage/PodLoginPage';\nexport { default as LocalLoginPage } from './components/LocalLoginPage/LocalLoginPage';\nexport { default as ResourceWithPermissions } from './components/ResourceWithPermissions';\nexport { default as UserMenu } from './components/UserMenu';\n\nexport { default as useAgents } from './hooks/useAgents';\nexport { default as useCheckAuthenticated } from './hooks/useCheckAuthenticated';\nexport { default as useCheckPermissions } from './hooks/useCheckPermissions';\nexport { default as usePermissionsWithRefetch } from './hooks/usePermissionsWithRefetch';\nexport { default as useSignup } from './hooks/useSignup';\n\n// Password scoring\nexport { default as PasswordStrengthIndicator } from './components/LocalLoginPage/PasswordStrengthIndicator';\nexport { default as validatePasswordStrength } from './components/LocalLoginPage/validatePasswordStrength';\nexport {\n defaultScorer as defaultPasswordScorer,\n defaultOptions as defaultPasswordScorerOptions,\n createPasswordScorer\n} from './passwordScorer';\n\nexport { default as englishMessages } from './messages/english';\nexport { default as frenchMessages } from './messages/french';\n","import jwtDecode from 'jwt-decode';\nimport urlJoin from 'url-join';\nimport { defaultToArray, getAclUri, getAclContext, getAuthServerUrl } from './utils';\n\nconst AUTH_TYPE_SSO = 'sso';\nconst AUTH_TYPE_LOCAL = 'local';\nconst AUTH_TYPE_POD = 'pod';\n\nconst authProvider = ({ dataProvider, authType, allowAnonymous = true, checkUser, checkPermissions = false }) => {\n if (![AUTH_TYPE_SSO, AUTH_TYPE_LOCAL, AUTH_TYPE_POD].includes(authType))\n throw new Error('The authType parameter is missing from the auth provider');\n return {\n login: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, password } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/login'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n password: password.trim()\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n } catch (e) {\n throw new Error('ra.auth.sign_in_error');\n }\n } else {\n let redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n if (params.redirect) redirectUrl += `&redirect=${encodeURIComponent(params.redirect)}`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n signup: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n if (authType === AUTH_TYPE_LOCAL) {\n const { username, email, password, domain, ...profileData } = params;\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/signup'), {\n method: 'POST',\n body: JSON.stringify({\n username: username.trim(),\n email: email.trim(),\n password: password.trim(),\n ...profileData\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n const { token } = json;\n localStorage.setItem('token', token);\n const { webId } = jwtDecode(token);\n return webId;\n } catch (e) {\n if (e.message === 'email.already.exists') {\n throw new Error('auth.message.user_email_exist');\n } else if (e.message === 'username.already.exists') {\n throw new Error('auth.message.username_exist');\n } else if (e.message === 'username.invalid') {\n throw new Error('auth.message.username_invalid');\n } else {\n throw new Error(e.message || 'ra.auth.sign_in_error');\n }\n }\n } else {\n const redirectUrl = `${new URL(window.location.href).origin}/login?login=true`;\n window.location.href = urlJoin(authServerUrl, `auth?redirectUrl=${encodeURIComponent(redirectUrl)}`);\n }\n },\n logout: async () => {\n switch (authType) {\n case AUTH_TYPE_LOCAL:\n // Delete token but also any other value in local storage\n localStorage.clear();\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = '/';\n break;\n\n case AUTH_TYPE_SSO:\n const authServerUrl = await getAuthServerUrl(dataProvider);\n const baseUrl = new URL(window.location.href).origin;\n window.location.href = urlJoin(\n authServerUrl,\n `auth/logout?redirectUrl=${encodeURIComponent(`${urlJoin(baseUrl, 'login')}?logout=true`)}`\n );\n break;\n\n case AUTH_TYPE_POD:\n const token = localStorage.getItem('token');\n const { webId } = jwtDecode(token);\n // Delete token but also any other value in local storage\n localStorage.clear();\n window.location.href =\n urlJoin(webId, 'openApp') +\n '?type=' +\n encodeURIComponent('http://activitypods.org/ns/core#FrontAppRegistration');\n break;\n }\n\n // Avoid displaying immediately the login page\n return '/';\n },\n checkAuth: async () => {\n const token = localStorage.getItem('token');\n if (!token && !allowAnonymous) throw new Error();\n },\n checkUser: userData => {\n if (checkUser) {\n return checkUser(userData);\n }\n return true;\n },\n checkError: error => Promise.resolve(),\n getPermissions: async uri => {\n if (!checkPermissions) return;\n\n // React-admin calls getPermissions with an empty object on every page refresh\n // It also passes an object `{ params: { route: 'dashboard' } }` on the Dashboard\n // Ignore all this until we found a way to bypass these redundant calls\n if (typeof uri === 'object') return;\n\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to getPermissions must be an URL');\n\n const aclUri = getAclUri(uri);\n\n try {\n const { json } = await dataProvider.fetch(aclUri);\n return json['@graph'];\n } catch (e) {\n console.warn(`Could not fetch ACL URI ${uri}`);\n return [];\n }\n },\n addPermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to addPermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n const authorization = {\n '@id': `#${mode.replace('acl:', '')}`,\n '@type': 'acl:Authorization',\n [predicate]: agentId,\n 'acl:accessTo': uri,\n 'acl:mode': mode\n };\n\n await dataProvider.fetch(aclUri, {\n method: 'PATCH',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': [authorization]\n })\n });\n },\n removePermission: async (uri, agentId, predicate, mode) => {\n if (!uri || !uri.startsWith('http'))\n throw new Error('The first parameter passed to removePermission must be an URL');\n\n const aclUri = getAclUri(uri);\n\n // Fetch current permissions\n const { json } = await dataProvider.fetch(aclUri);\n\n const updatedPermissions = json['@graph']\n .filter(authorization => !authorization['@id'].includes('#Default'))\n .map(authorization => {\n const modes = defaultToArray(authorization['acl:mode']);\n let agents = defaultToArray(authorization[predicate]);\n if (mode && modes.includes(mode) && agents && agents.includes(agentId)) {\n agents = agents.filter(agent => agent !== agentId);\n }\n return { ...authorization, [predicate]: agents };\n });\n\n await dataProvider.fetch(aclUri, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': getAclContext(aclUri),\n '@graph': updatedPermissions\n })\n });\n },\n getIdentity: async () => {\n const token = localStorage.getItem('token');\n if (token) {\n const { webId } = jwtDecode(token);\n\n const { json: webIdData } = await dataProvider.fetch(webId);\n const { json: profileData } = webIdData.url ? await dataProvider.fetch(webIdData.url) : {};\n\n return {\n id: webId,\n fullName:\n profileData?.['vcard:given-name'] ||\n profileData?.['pair:label'] ||\n webIdData['foaf:name'] ||\n webIdData['pair:label'],\n profileData,\n webIdData\n };\n }\n },\n resetPassword: async params => {\n const { email } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/reset_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim() }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.reset_password_error');\n }\n },\n setNewPassword: async params => {\n const { email, token, password } = params;\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/new_password'), {\n method: 'POST',\n body: JSON.stringify({ email: email.trim(), token, password }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n throw new Error('auth.notification.new_password_error');\n }\n },\n getAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { json } = await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'));\n return json;\n } catch (e) {\n throw new Error('auth.notification.get_settings_error');\n }\n },\n updateAccountSettings: async params => {\n const authServerUrl = await getAuthServerUrl(dataProvider);\n try {\n const { email, currentPassword, newPassword } = params;\n\n await dataProvider.fetch(urlJoin(authServerUrl, 'auth/account'), {\n method: 'POST',\n body: JSON.stringify({\n currentPassword,\n email: email?.trim(),\n newPassword\n }),\n headers: new Headers({ 'Content-Type': 'application/json' })\n });\n } catch (e) {\n if (e.message === 'auth.account.invalid_password') {\n throw new Error('auth.notification.invalid_password');\n }\n\n throw new Error('auth.notification.update_settings_error');\n }\n }\n };\n};\n\nexport default authProvider;\n","import urlJoin from 'url-join';\n\nexport const defaultToArray = value => (!value ? undefined : Array.isArray(value) ? value : [value]);\n\n// Transform the URI to the one used to find the ACL\n// To be compatible with all servers, we should do a HEAD request to the resource URI\nexport const getAclUri = resourceUri => {\n const parsedUrl = new URL(resourceUri);\n return urlJoin(parsedUrl.origin, '_acl', parsedUrl.pathname);\n};\n\nexport const getAclContext = baseUri => ({\n '@base': baseUri,\n acl: 'http://www.w3.org/ns/auth/acl#',\n foaf: 'http://xmlns.com/foaf/0.1/',\n 'acl:agent': { '@type': '@id' },\n 'acl:agentGroup': { '@type': '@id' },\n 'acl:agentClass': { '@type': '@id' },\n 'acl:mode': { '@type': '@id' },\n 'acl:accessTo': { '@type': '@id' }\n});\n\nexport const getAuthServerUrl = async dataProvider => {\n const dataServers = await dataProvider.getDataServers();\n const authServer = Object.values(dataServers).find(server => server.authServer === true);\n if (!authServer) throw new Error('Could not find a server with authServer: true. Check your dataServers config.');\n // If the server is a POD, return the root URL instead of https://domain.com/user/data\n return authServer.pod ? new URL(authServer.baseUrl).origin : authServer.baseUrl;\n};\n","import React from 'react';\nimport { Create, CreateActions, useResourceContext } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst CreateWithPermissions = props => {\n const resource = useResourceContext();\n const createContainerUri = useCreateContainer(resource);\n useCheckPermissions(createContainerUri, 'create');\n return ;\n};\n\nCreateWithPermissions.defaultProps = {\n actions: \n};\n\nexport default CreateWithPermissions;\n","import React, { useEffect } from 'react';\nimport { usePermissions, useRedirect, useNotify, useGetIdentity } from 'react-admin';\nimport { rights, forbiddenErrors } from '../constants';\n\nconst useCheckPermissions = (uri, mode, redirectUrl = '/') => {\n const { identity, isLoading } = useGetIdentity();\n const { permissions } = usePermissions(uri);\n const notify = useNotify();\n const redirect = useRedirect();\n\n useEffect(() => {\n if (!isLoading && identity && permissions && !permissions.some(p => rights[mode].includes(p['acl:mode']))) {\n notify(forbiddenErrors[mode], { type: 'error' });\n redirect(redirectUrl);\n }\n }, [permissions, identity, redirect, notify, isLoading]);\n\n return permissions;\n};\n\nexport default useCheckPermissions;\n","export const ACL_READ = 'acl:Read';\nexport const ACL_APPEND = 'acl:Append';\nexport const ACL_WRITE = 'acl:Write';\nexport const ACL_CONTROL = 'acl:Control';\n\nexport const USER_AGENT = 'acl:agent';\nexport const GROUP_AGENT = 'acl:agentGroup';\nexport const CLASS_AGENT = 'acl:agentClass';\n\nexport const ANONYMOUS_AGENT = 'foaf:Agent';\nexport const AUTHENTICATED_AGENT = 'acl:AuthenticatedAgent';\n\nexport const rightsToShow = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToList = [ACL_READ, ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToCreate = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToEdit = [ACL_APPEND, ACL_WRITE, ACL_CONTROL];\nexport const rightsToDelete = [ACL_WRITE, ACL_CONTROL];\nexport const rightsToControl = [ACL_CONTROL];\n\nexport const rights = {\n show: rightsToShow,\n list: rightsToList,\n create: rightsToCreate,\n edit: rightsToEdit,\n delete: rightsToDelete,\n control: rightsToControl\n};\n\nexport const forbiddenErrors = {\n show: 'auth.message.resource_show_forbidden',\n edit: 'auth.message.resource_edit_forbidden',\n delete: 'auth.message.resource_delete_forbidden',\n control: 'auth.message.resource_control_forbidden',\n list: 'auth.message.container_list_forbidden',\n create: 'auth.message.container_create_forbidden'\n};\n\nexport const resourceRightsLabels = {\n [ACL_READ]: 'auth.right.resource.read',\n [ACL_APPEND]: 'auth.right.resource.append',\n [ACL_WRITE]: 'auth.right.resource.write',\n [ACL_CONTROL]: 'auth.right.resource.control'\n};\n\nexport const containerRightsLabels = {\n [ACL_READ]: 'auth.right.container.read',\n [ACL_WRITE]: 'auth.right.container.write',\n [ACL_CONTROL]: 'auth.right.container.control'\n};\n","import React from 'react';\nimport { Edit, useGetRecordId } from 'react-admin';\nimport EditActionsWithPermissions from './EditActionsWithPermissions';\nimport EditToolbarWithPermissions from './EditToolbarWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst EditWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'edit');\n return (\n \n {React.cloneElement(props.children, {\n toolbar: ,\n // Allow to override toolbar\n ...props.children.props\n })}\n \n );\n};\n\nEditWithPermissions.defaultProps = {\n actions: \n};\n\nexport default EditWithPermissions;\n","import React from 'react';\nimport {\n usePermissionsOptimized,\n ShowButton,\n ListButton,\n TopToolbar,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl } from '../../constants';\n\nconst EditActionsWithPermissions = () => {\n const { hasList, hasShow } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissionsOptimized(record?.id);\n return (\n \n {hasList && }\n {hasShow && }\n {!!permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default EditActionsWithPermissions;\n","import React, { useState } from 'react';\nimport { Button, useRecordContext, useResourceContext } from 'react-admin';\nimport ShareIcon from '@mui/icons-material/Share';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsDialog from './PermissionsDialog';\n\nconst PermissionsButton = ({ isContainer }) => {\n const record = useRecordContext();\n const resource = useResourceContext();\n const [showDialog, setShowDialog] = useState(false);\n const createContainer = useCreateContainer(resource);\n const uri = isContainer ? createContainer : record.id || record['@id'];\n return (\n <>\n \n setShowDialog(false)} />\n \n );\n};\n\nPermissionsButton.defaultProps = {\n isContainer: false\n};\n\nexport default PermissionsButton;\n","import React from 'react';\nimport { Button, useTranslate } from 'react-admin';\nimport { Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddPermissionsForm from './AddPermissionsForm';\nimport EditPermissionsForm from './EditPermissionsForm';\nimport useAgents from '../../hooks/useAgents';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingTop: 0,\n paddingBottom: 0,\n paddingRight: 0,\n maxHeight: 210\n }\n}));\n\nconst PermissionsDialog = ({ open, onClose, uri, isContainer }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const { agents, addPermission, removePermission } = useAgents(uri);\n\n return (\n \n \n {translate(isContainer ? 'auth.dialog.container_permissions' : 'auth.dialog.resource_permissions')}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default PermissionsDialog;\n","import React, { useEffect, useState } from 'react';\nimport { useGetList, useTranslate } from 'react-admin';\nimport { TextField, List, ListItem, ListItemAvatar, ListItemText, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport PersonIcon from '@mui/icons-material/Person';\nimport { USER_AGENT, ACL_READ } from '../../constants';\n\nconst useStyles = makeStyles(() => ({\n list: {\n padding: 0,\n width: '100%'\n },\n option: {\n padding: 0\n }\n}));\n\nconst AddPermissionsForm = ({ agents, addPermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const [value, setValue] = useState(null);\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState([]);\n\n const { data } = useGetList(\n 'Person',\n {\n pagination: { page: 1, perPage: 100 },\n sort: { field: 'pair:label', order: 'ASC' },\n filter: { q: inputValue }\n },\n {\n enabled: inputValue.length > 0\n }\n );\n\n useEffect(() => {\n setOptions(data?.length > 0 ? Object.values(data) : []);\n }, [data]);\n\n return (\n option['pair:label']}\n // Do not return agents which have already been added\n filterOptions={x => x.filter(agent => !Object.keys(agents).includes(agent.id))}\n options={options}\n noOptionsText={translate('ra.navigation.no_results')}\n autoComplete\n blurOnSelect\n clearOnBlur\n disableClearable\n value={value}\n onChange={(event, record) => {\n addPermission(record.id || record['@id'], USER_AGENT, ACL_READ);\n setValue(null);\n setInputValue('');\n setOptions([]);\n }}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={params => (\n \n )}\n renderOption={(props, option) => (\n \n \n \n \n \n \n \n \n \n \n )}\n />\n );\n};\n\nexport default AddPermissionsForm;\n","import React from 'react';\nimport { List } from '@mui/material';\nimport { styled } from '@mui/system';\nimport AgentItem from './AgentItem';\n\nconst StyledList = styled(List)(({ theme }) => ({\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper\n}));\n\nconst EditPermissionsForm = ({ isContainer, agents, addPermission, removePermission }) => {\n return (\n \n {Object.entries(agents).map(([agentId, agent]) => (\n \n ))}\n \n );\n};\n\nexport default EditPermissionsForm;\n","import React, { useState, useEffect } from 'react';\nimport { useDataProvider, useTranslate, Loading, Error } from 'react-admin';\nimport {\n Avatar,\n ListItem,\n ListItemIcon,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n IconButton,\n Menu,\n MenuItem\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport EditIcon from '@mui/icons-material/Edit';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, resourceRightsLabels, containerRightsLabels } from '../../constants';\nimport AgentIcon from './AgentIcon';\n\nconst useStyles = makeStyles(() => ({\n listItem: {\n paddingLeft: 4,\n paddingRight: 36\n },\n primaryText: {\n width: '30%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n secondaryText: {\n textAlign: 'center',\n width: '60%',\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst AgentItem = ({ isContainer, agent, addPermission, removePermission }) => {\n const classes = useStyles();\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [user, setUser] = useState();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState();\n\n useEffect(() => {\n if (agent.predicate === USER_AGENT) {\n dataProvider\n .getOne('Person', { id: agent.id })\n .then(({ data }) => {\n setUser(data);\n setLoading(false);\n })\n .catch(error => {\n setError(error);\n setLoading(false);\n });\n } else {\n setLoading(false);\n }\n }, [agent.id, agent.predicate]);\n\n // For now, do not display groups\n if (agent.predicate === GROUP_AGENT) return null;\n\n const openMenu = event => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const labels = isContainer ? containerRightsLabels : resourceRightsLabels;\n\n if (loading) return ;\n if (error) return ;\n\n return (\n \n \n \n \n \n \n \n translate(labels[p])).join(', ')}\n />\n \n \n \n \n \n {Object.entries(labels).map(([rightKey, rightLabel]) => {\n const hasPermission = agent.permissions && agent.permissions.includes(rightKey);\n return (\n {\n if (hasPermission) {\n removePermission(agent.id, agent.predicate, rightKey);\n } else {\n addPermission(agent.id, agent.predicate, rightKey);\n }\n closeMenu();\n }}\n >\n {hasPermission ? : null}\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default AgentItem;\n","import React from 'react';\nimport PublicIcon from '@mui/icons-material/Public';\nimport VpnLockIcon from '@mui/icons-material/VpnLock';\nimport PersonIcon from '@mui/icons-material/Person';\nimport GroupIcon from '@mui/icons-material/Group';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT } from '../../constants';\n\nconst AgentIcon = ({ agent }) => {\n switch (agent.predicate) {\n case CLASS_AGENT:\n return agent.id === ANONYMOUS_AGENT ? : ;\n case USER_AGENT:\n return ;\n case GROUP_AGENT:\n return ;\n default:\n throw new Error(`Unknown agent predicate: ${agent.predicate}`);\n }\n};\n\nexport default AgentIcon;\n","import { useEffect, useCallback, useState } from 'react';\nimport { usePermissions, useAuthProvider } from 'react-admin';\nimport { defaultToArray } from '../utils';\nimport { CLASS_AGENT, GROUP_AGENT, USER_AGENT, ANONYMOUS_AGENT, AUTHENTICATED_AGENT } from '../constants';\n\nconst useAgents = uri => {\n const { permissions } = usePermissions(uri);\n const authProvider = useAuthProvider();\n const [agents, setAgents] = useState({});\n\n // Format list of authorized agents, based on the permissions returned for the resource\n useEffect(() => {\n const result = {\n [ANONYMOUS_AGENT]: {\n id: ANONYMOUS_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n },\n [AUTHENTICATED_AGENT]: {\n id: AUTHENTICATED_AGENT,\n predicate: CLASS_AGENT,\n permissions: []\n }\n };\n\n const appendPermission = (agentId, predicate, mode) => {\n if (result[agentId]) {\n result[agentId].permissions.push(mode);\n } else {\n result[agentId] = {\n id: agentId,\n predicate,\n permissions: [mode]\n };\n }\n };\n\n if (permissions) {\n for (const p of permissions) {\n if (p[CLASS_AGENT]) {\n defaultToArray(p[CLASS_AGENT]).forEach(agentId => appendPermission(agentId, CLASS_AGENT, p['acl:mode']));\n }\n if (p[USER_AGENT]) {\n defaultToArray(p[USER_AGENT]).forEach(userUri => appendPermission(userUri, USER_AGENT, p['acl:mode']));\n }\n if (p[GROUP_AGENT]) {\n defaultToArray(p[GROUP_AGENT]).forEach(groupUri => appendPermission(groupUri, GROUP_AGENT, p['acl:mode']));\n }\n }\n setAgents(result);\n }\n }, [permissions]);\n\n const addPermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents({\n ...agents,\n [agentId]: {\n id: agentId,\n predicate,\n permissions: agents[agentId] ? [...agents[agentId]?.permissions, mode] : [mode]\n }\n });\n authProvider.addPermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n const removePermission = useCallback(\n (agentId, predicate, mode) => {\n const prevAgents = { ...agents };\n setAgents(\n Object.fromEntries(\n Object.entries(agents)\n .map(([key, agent]) => {\n if (agent.id === agentId) {\n agent.permissions = agent.permissions.filter(m => m !== mode);\n }\n return [key, agent];\n })\n // Remove agents if they have no permissions (except if they are class agents)\n .filter(([_, agent]) => agent.predicate === CLASS_AGENT || agent.permissions.length > 0)\n )\n );\n authProvider.removePermission(uri, agentId, predicate, mode).catch(e => {\n // If there was an error, revert the optimistic update\n setAgents(prevAgents);\n });\n },\n [agents, setAgents, uri, authProvider]\n );\n\n return { agents, addPermission, removePermission };\n};\n\nexport default useAgents;\n","import React from 'react';\nimport { SaveButton, Toolbar } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\nimport DeleteButtonWithPermissions from './DeleteButtonWithPermissions';\n\nconst useStyles = makeStyles(() => ({\n toolbar: {\n flex: 1,\n display: 'flex',\n justifyContent: 'space-between'\n }\n}));\n\nconst EditToolbarWithPermissions = props => {\n const classes = useStyles();\n return (\n \n \n \n \n );\n};\n\nexport default EditToolbarWithPermissions;\n","import React from 'react';\nimport { DeleteButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToDelete } from '../../constants';\n\nconst DeleteButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToDelete.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default DeleteButtonWithPermissions;\n","import React from 'react';\nimport { EditButton, useGetRecordId, usePermissions } from 'react-admin';\nimport { rightsToEdit } from '../../constants';\n\nconst EditButtonWithPermissions = props => {\n const recordId = useGetRecordId();\n const { permissions, isLoading } = usePermissions(recordId);\n if (!isLoading && permissions?.some(p => rightsToEdit.includes(p['acl:mode']))) {\n return ;\n }\n return null;\n};\n\nexport default EditButtonWithPermissions;\n","import React from 'react';\nimport { List } from 'react-admin';\nimport ListActionsWithPermissions from './ListActionsWithPermissions';\n\nconst ListWithPermissions = props => ;\n\nListWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ListWithPermissions;\n","import React from 'react';\nimport {\n CreateButton,\n ExportButton,\n useResourceDefinition,\n TopToolbar,\n usePermissions,\n useResourceContext\n} from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToCreate, rightsToControl } from '../../constants';\n\n// Do not show Export and Refresh buttons on mobile\nconst ListActionsWithPermissions = ({\n bulkActions,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total\n}) => {\n const resource = useResourceContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('xs'));\n const resourceDefinition = useResourceDefinition();\n const createContainerUri = useCreateContainer(resource);\n const { permissions } = usePermissions(createContainerUri);\n return (\n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && permissions && permissions.some(p => rightsToCreate.includes(p['acl:mode'])) && (\n \n )}\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && (\n \n )}\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithPermissions;\n","import React from 'react';\nimport { Show, useGetRecordId } from 'react-admin';\nimport ShowActionsWithPermissions from './ShowActionsWithPermissions';\nimport useCheckPermissions from '../../hooks/useCheckPermissions';\n\nconst ShowWithPermissions = props => {\n const recordId = useGetRecordId();\n useCheckPermissions(recordId, 'show');\n return ;\n};\n\nShowWithPermissions.defaultProps = {\n actions: \n};\n\nexport default ShowWithPermissions;\n","import React from 'react';\nimport {\n EditButton,\n ListButton,\n TopToolbar,\n usePermissions,\n useResourceDefinition,\n useRecordContext\n} from 'react-admin';\nimport PermissionsButton from '../../components/PermissionsButton/PermissionsButton';\nimport { rightsToControl, rightsToEdit } from '../../constants';\n\nconst ShowActionsWithPermissions = () => {\n const { hasList, hasEdit } = useResourceDefinition();\n const record = useRecordContext();\n const { permissions } = usePermissions(record?.id);\n return (\n \n {hasList && }\n {hasEdit && permissions && permissions.some(p => rightsToEdit.includes(p['acl:mode'])) && }\n {permissions && permissions.some(p => rightsToControl.includes(p['acl:mode'])) && }\n \n );\n};\n\nexport default ShowActionsWithPermissions;\n","import React from 'react';\nimport { useLogin, useTranslate } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\n\nconst AuthDialog = ({ open, onClose, title, message, redirect, ...rest }) => {\n const login = useLogin();\n const translate = useTranslate();\n return (\n \n {translate(title)}\n \n {translate(message)}\n \n \n \n login({ redirect: redirect || window.location.pathname + window.location.search })}\n color=\"primary\"\n variant=\"contained\"\n >\n {translate('auth.action.login')}\n \n \n \n );\n};\n\nAuthDialog.defaultProps = {\n title: 'auth.dialog.login_required',\n message: 'auth.message.login_to_continue'\n};\n\nexport default AuthDialog;\n","import React, { useRef, useEffect } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { useDataProvider, useAuthProvider, useLogin, useGetIdentity, useNotify } from 'react-admin';\nimport { Card, Avatar, Typography, Button, CardActions } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport LockIcon from '@mui/icons-material/Lock';\n\nconst delay = async t => new Promise(resolve => setTimeout(resolve, t));\n\n// Inspired from https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/auth/Login.tsx\nconst SsoLoginPage = ({ children, backgroundImage, buttons, userResource, propertiesExist, text, ...rest }) => {\n const containerRef = useRef();\n let backgroundImageLoaded = false;\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const { identity, isLoading } = useGetIdentity();\n\n const notify = useNotify();\n const login = useLogin();\n const dataProvider = useDataProvider();\n const authProvider = useAuthProvider();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n // Already authenticated, redirect to the home page\n navigate(searchParams.get('redirect') || '/');\n }\n }, [identity, isLoading, navigate, searchParams]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('login')) {\n if (searchParams.has('error')) {\n if (searchParams.get('error') === 'registration.not-allowed') {\n notify('auth.message.user_email_not_found', { type: 'error' });\n } else {\n notify('auth.message.bad_request', { type: 'error', error: searchParams.get('error') });\n }\n } else if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n\n localStorage.setItem('token', token);\n\n let userData;\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n\n if (propertiesExist.length > 0) {\n let allPropertiesExist = propertiesExist.every(p => userData[p]);\n while (!allPropertiesExist) {\n console.log('Waiting for all properties to have been created', propertiesExist);\n await delay(500);\n ({ data: userData } = await dataProvider.getOne(userResource, { id: webId }));\n allPropertiesExist = propertiesExist.every(p => userData[p]);\n }\n }\n\n if (!authProvider.checkUser(userData)) {\n localStorage.removeItem('token');\n notify('auth.message.user_not_allowed_to_login', { type: 'error' });\n navigate.replace('/login');\n } else if (searchParams.has('redirect')) {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = searchParams.get('redirect');\n } else if (searchParams.has('new') && searchParams.get('new') === 'true') {\n notify('auth.message.new_user_created', { type: 'info' });\n window.location.href = `/${userResource}/${encodeURIComponent(webId)}`;\n } else {\n notify('auth.message.user_connected', { type: 'info' });\n window.location.href = '/';\n }\n }\n }\n\n if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', { type: 'info' });\n navigate('/');\n }\n })();\n }, [searchParams, navigate, notify, userResource]);\n\n const updateBackgroundImage = () => {\n if (!backgroundImageLoaded && containerRef.current) {\n containerRef.current.style.backgroundImage = `url(${backgroundImage})`;\n backgroundImageLoaded = true;\n }\n };\n\n // Load background image asynchronously to speed up time to interactive\n const lazyLoadBackgroundImage = () => {\n if (backgroundImage) {\n const img = new Image();\n img.onload = updateBackgroundImage;\n img.src = backgroundImage;\n }\n };\n\n useEffect(() => {\n if (!backgroundImageLoaded) {\n lazyLoadBackgroundImage();\n }\n });\n\n if (isLoading) return null;\n\n return (\n \n \n
\n \n \n \n
\n {text && {text}}\n {buttons?.map((button, i) => (\n \n {React.cloneElement(button, {\n fullWidth: true,\n variant: 'outlined',\n type: 'submit',\n onClick: () => login({}, '/login')\n })}\n \n ))}\n
\n
\n );\n};\n\nconst PREFIX = 'SsoLoginPage';\n\nexport const SsoLoginPageClasses = {\n card: `${PREFIX}-card`,\n avatar: `${PREFIX}-avatar`,\n icon: `${PREFIX}-icon`,\n switch: `${PREFIX}-switch`\n};\n\nconst Root = styled('div', {\n name: PREFIX,\n overridesResolver: (props, styles) => styles.root\n})(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100vh',\n height: '1px',\n alignItems: 'center',\n justifyContent: 'flex-start',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundImage: 'radial-gradient(circle at 50% 14em, #313264 0%, #00023b 60%, #00023b 100%)',\n [`& .${SsoLoginPageClasses.card}`]: {\n minWidth: 300,\n marginTop: '6em'\n },\n [`& .${SsoLoginPageClasses.avatar}`]: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n [`& .${SsoLoginPageClasses.icon}`]: {\n backgroundColor: theme.palette.secondary[500]\n },\n [`& .${SsoLoginPageClasses.switch}`]: {\n marginBottom: '1em',\n display: 'flex',\n justifyContent: 'center'\n }\n}));\n\nSsoLoginPage.defaultProps = {\n propertiesExist: [],\n // TODO deprecate this\n buttons: [],\n userResource: 'Person'\n};\n\nexport default SsoLoginPage;\n","import React, { useMemo } from 'react';\nimport { Notification } from 'react-admin';\nimport { ThemeProvider } from '@mui/system';\nimport { createTheme } from '@mui/material/styles';\nimport { StyledEngineProvider } from '@mui/material';\nimport PodLoginPageView from './PodLoginPageView';\n\nconst PodLoginPage = props => {\n const muiTheme = useMemo(() => createTheme(props.theme), [props.theme]);\n return (\n \n \n \n \n \n \n );\n};\n\nexport default PodLoginPage;\n","import React, { useEffect, useState } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport { useNotify, useAuthProvider, useDataProvider, useLocale, useTranslate } from 'react-admin';\nimport { Box, List, ListItem, ListItemText, ListItemAvatar, Avatar, Divider, Card, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LockIcon from '@mui/icons-material/Lock';\nimport StorageIcon from '@mui/icons-material/Storage';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.primary.main\n }\n },\n text: {\n textAlign: 'center',\n padding: '4px 8px 8px'\n },\n card: {\n minWidth: 300,\n maxWidth: 350,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n lockIconAvatar: {\n margin: '1em',\n display: 'flex',\n justifyContent: 'center'\n },\n lockIcon: {\n backgroundColor: theme.palette.grey['500']\n },\n list: {\n paddingTop: 0,\n paddingBottom: 0\n },\n listItem: {\n paddingTop: 5,\n paddingBottom: 5\n }\n}));\n\nconst PodLoginPageView = ({ history, location, text, customPodProviders }) => {\n const classes = useStyles();\n const notify = useNotify();\n const locale = useLocale();\n const translate = useTranslate();\n const authProvider = useAuthProvider();\n const dataProvider = useDataProvider();\n const [podProviders, setPodProviders] = useState(customPodProviders || []);\n const searchParams = new URLSearchParams(location.search);\n\n useEffect(() => {\n (async () => {\n if (podProviders.length === 0) {\n const results = await fetch('https://data.activitypods.org/pod-providers', {\n headers: {\n Accept: 'application/ld+json'\n }\n });\n if (results.ok) {\n const json = await results.json();\n // Filter POD providers by available locales\n const podProviders = json['ldp:contains'].filter(provider =>\n Array.isArray(provider['apods:locales'])\n ? provider['apods:locales'].includes(locale)\n : provider['apods:locales'] === locale\n );\n setPodProviders(podProviders);\n } else {\n notify('auth.message.pod_providers_not_loaded', 'error');\n }\n }\n })();\n }, [podProviders, setPodProviders, notify, locale]);\n\n useEffect(() => {\n (async () => {\n if (searchParams.has('token')) {\n const token = searchParams.get('token');\n const { webId } = jwtDecode(token);\n const response = await fetch(webId, {\n headers: {\n Accept: 'application/json'\n }\n });\n if (!response.ok) {\n notify('auth.message.unable_to_fetch_user_data', 'error');\n } else {\n const data = await response.json();\n if (!authProvider.checkUser(data)) {\n notify('auth.message.user_not_allowed_to_login', 'error');\n history.replace('/login');\n } else {\n localStorage.setItem('token', token);\n notify('auth.message.user_connected', 'info');\n // Reload to ensure the dataServers config is reset\n window.location.reload();\n window.location.href = '/?addUser=true';\n }\n }\n } else if (searchParams.has('logout')) {\n // Delete token and any other value in local storage\n localStorage.clear();\n notify('auth.message.user_disconnected', 'info');\n history.push('/');\n }\n })();\n }, [searchParams, dataProvider]);\n\n if (searchParams.has('token') || searchParams.has('addUser') || searchParams.has('logout')) {\n return null;\n }\n\n return (\n \n \n
\n \n \n \n
\n \n \n {text || translate('auth.message.choose_pod_provider')}\n \n \n \n \n {podProviders.map((podProvider, i) => {\n const url = new URL(\n '/auth',\n (podProvider['apods:domainName'].includes(':') ? 'http://' : 'https://') +\n podProvider['apods:domainName']\n );\n if (searchParams.has('signup')) url.searchParams.set('signup', 'true');\n url.searchParams.set('redirect', window.location.href);\n return (\n \n \n (window.location.href = url.toString())}\n className={classes.listItem}\n >\n \n \n \n \n \n \n \n \n );\n })}\n \n \n
\n
\n );\n};\n\nexport default PodLoginPageView;\n","import React, { useEffect, useMemo } from 'react';\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom';\nimport { useTranslate, useGetIdentity } from 'react-admin';\nimport { Card, Typography } from '@mui/material';\nimport LockIcon from '@mui/icons-material/Lock';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SignupForm from './SignupForm';\nimport LoginForm from './LoginForm';\nimport NewPasswordForm from './NewPasswordForm';\nimport ResetPasswordForm from './ResetPasswordForm';\nimport SimpleBox from './SimpleBox';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(() => ({\n switch: {\n marginBottom: '1em',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center'\n }\n}));\n\n/**\n * @param {object} props Props\n * @param {boolean} props.hasSignup If to show signup form.\n * @param {boolean} props.allowUsername Indicates, if login is allowed with username (instead of email).\n * @param {string} props.postSignupRedirect Location to redirect to after signup.\n * @param {string} props.postLoginRedirect Location to redirect to after login.\n * @param {object} props.additionalSignupValues\n * @param {object} props.passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst LocalLoginPage = ({\n hasSignup,\n allowUsername,\n postSignupRedirect,\n postLoginRedirect,\n additionalSignupValues,\n passwordScorer = defaultScorer\n}) => {\n const classes = useStyles();\n const navigate = useNavigate();\n const translate = useTranslate();\n const [searchParams] = useSearchParams();\n const isSignup = hasSignup && searchParams.has('signup');\n const isResetPassword = searchParams.has('reset_password');\n const isNewPassword = searchParams.has('new_password');\n const isLogin = !isSignup && !isResetPassword && !isNewPassword;\n const redirectTo = searchParams.get('redirect');\n const { identity, isLoading } = useGetIdentity();\n\n useEffect(() => {\n if (!isLoading && identity?.id) {\n if (postLoginRedirect) {\n navigate(`${postLoginRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`);\n } else if (redirectTo && redirectTo.startsWith('http')) {\n window.location.href = redirectTo;\n } else {\n navigate(redirectTo || '/');\n }\n }\n }, [identity, isLoading, navigate, redirectTo, postLoginRedirect]);\n\n const [title, text] = useMemo(() => {\n if (isSignup) {\n return ['auth.action.signup', 'auth.helper.signup'];\n }\n if (isLogin) {\n return ['auth.action.login', 'auth.helper.login'];\n }\n if (isResetPassword) {\n return ['auth.action.reset_password', 'auth.helper.reset_password'];\n }\n if (isNewPassword) {\n return ['auth.action.set_new_password', 'auth.helper.set_new_password'];\n }\n }, [isSignup, isLogin, isResetPassword, isNewPassword]);\n\n if (isLoading || identity?.id) return null;\n if (isLoading || identity?.id) return null;\n\n return (\n }>\n \n {isSignup && (\n \n )}\n {isResetPassword && }\n {isNewPassword && }\n {isLogin && }\n
\n {isSignup && (\n \n {translate('auth.action.login')}\n \n )}\n {isLogin && (\n <>\n {hasSignup && (\n
\n \n {translate('auth.action.signup')}\n \n
\n )}\n
\n \n {translate('auth.action.reset_password')}\n \n
\n \n )}\n
\n
\n
\n );\n};\n\nLocalLoginPage.defaultProps = {\n hasSignup: true,\n allowUsername: false,\n additionalSignupValues: {}\n};\n\nexport default LocalLoginPage;\n","import * as React from 'react';\nimport createSlug from 'speakingurl';\nimport {\n Form,\n useTranslate,\n useNotify,\n useSafeSetState,\n TextInput,\n required,\n email,\n useLocaleState\n} from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useSignup from '../../hooks/useSignup';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n * @param postSignupRedirect\n * @param additionalSignupValues\n * @param delayBeforeRedirect\n * @param {string} redirectTo\n * @param {object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst SignupForm = ({\n redirectTo,\n passwordScorer = defaultScorer,\n postSignupRedirect,\n additionalSignupValues,\n delayBeforeRedirect\n}) => {\n const [loading, setLoading] = useSafeSetState(false);\n const signup = useSignup();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const [locale] = useLocaleState();\n const [password, setPassword] = React.useState('');\n\n const submit = values => {\n setLoading(true);\n signup({\n ...values,\n ...additionalSignupValues\n })\n .then(webId => {\n if (delayBeforeRedirect) {\n setTimeout(() => {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }, delayBeforeRedirect);\n } else {\n // Reload to ensure the dataServer config is reset\n window.location.reload();\n window.location.href = postSignupRedirect\n ? `${postSignupRedirect}?redirect=${encodeURIComponent(redirectTo || '/')}`\n : redirectTo || '/';\n setLoading(false);\n }\n notify('auth.message.new_user_created', { type: 'info' });\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n );\n });\n };\n\n return (\n
\n \n \n value\n ? createSlug(value, {\n lang: locale || 'fr',\n separator: '_',\n custom: ['.', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']\n })\n : ''\n }\n />\n \n {passwordScorer && password && !(searchParams.has('email') && searchParams.has('force-email')) && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n \n \n )}\n setPassword(e.target.value)}\n label={translate('ra.auth.password')}\n autoComplete=\"new-password\"\n fullWidth\n disabled={loading || (searchParams.has('email') && searchParams.has('force-email'))}\n validate={[required(), validatePasswordStrength(passwordScorer)]}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.signup')\n )}\n \n \n
\n );\n};\n\nSignupForm.defaultValues = {\n redirectTo: '/',\n additionalSignupValues: {}\n};\n\nexport default SignupForm;\n","import { useCallback } from 'react';\nimport { useAuthProvider } from 'react-admin';\n\nconst useSignup = () => {\n const authProvider = useAuthProvider();\n\n return useCallback((params = {}) => authProvider.signup(params), [authProvider]);\n};\n\nexport default useSignup;\n","import { defaultScorer } from '../../passwordScorer';\n\nconst validatePasswordStrength = (scorer = defaultScorer) => value => {\n if (!scorer) return undefined;\n const strength = scorer.scoreFn(value);\n if (strength < scorer.minRequiredScore) {\n return 'auth.input.password_too_weak';\n }\n return undefined;\n};\n\nexport default validatePasswordStrength;\n","// Inspired by https://github.com/bartlomiejzuber/password-strength-score\n\n/**\n * @typedef PasswordStrengthOptions\n * @property {number} isVeryLongLength - Required characters for a very long password (default: 12)\n * @property {number} isLongLength - Required characters for a long password (default: 6)\n * @property {number} isVeryLongScore - Score for a very long password (default: 2.5)\n * @property {number} isLongScore - Score for a long password (default: 1.5)\n * @property {number} uppercaseScore - Score for a password with uppercase letters (default: 1)\n * @property {number} lowercaseScore - Score for a password with lowercase letters (default: 1)\n * @property {number} numbersScore - Score for a password with numbers (default: 1)\n * @property {number} nonAlphanumericsScore - Score for a password without non-alphanumeric characters (default: 1)\n */\n\n/** @type {PasswordStrengthOptions} */\nexport const defaultOptions = {\n isVeryLongLength: 14,\n isLongLength: 8,\n isLongScore: 2,\n isVeryLongScore: 4,\n uppercaseScore: 1,\n lowercaseScore: 1,\n numbersScore: 1,\n nonAlphanumericsScore: 1\n};\n\n/**\n *\n * @param {string} password Password text.\n * @param {PasswordStrengthOptions} options Password options.\n * @returns {number} The password strength score.\n */\nexport const passwordStrength = (password, options) => {\n if (!password) {\n return 0;\n }\n\n const mergedOptions = { ...defaultOptions, ...options };\n\n const longScore = (password.length >= mergedOptions.isLongLength && mergedOptions.isLongScore) || 0;\n const veryLongScore = (password.length >= mergedOptions.isVeryLongLength && mergedOptions.isVeryLongScore) || 0;\n const lowercaseScore = (/[a-z]/.test(password) && mergedOptions.lowercaseScore) || 0;\n const uppercaseScore = (/[A-Z]/.test(password) && mergedOptions.uppercaseScore) || 0;\n const numbersScore = (/\\d/.test(password) && mergedOptions.numbersScore) || 0;\n const nonalphasScore = (/\\W/.test(password) && mergedOptions.nonAlphanumericsScore) || 0;\n\n return uppercaseScore + lowercaseScore + numbersScore + nonalphasScore + longScore + veryLongScore;\n};\n\nexport const createPasswordScorer = (options = defaultOptions, minRequiredScore = 5) => {\n const mergedOptions = { ...defaultOptions, ...options };\n\n return {\n scoreFn: password => passwordStrength(password, mergedOptions),\n minRequiredScore,\n maxScore:\n mergedOptions.uppercaseScore +\n mergedOptions.lowercaseScore +\n mergedOptions.numbersScore +\n mergedOptions.nonAlphanumericsScore +\n mergedOptions.isLongScore +\n mergedOptions.isVeryLongScore\n };\n};\n\nexport const defaultScorer = createPasswordScorer(defaultOptions, 5);\n","import React from 'react';\nimport ColorGradientProgressBar from './ColorGradientProgressBar';\nimport { defaultScorer } from '../../passwordScorer';\n\nexport default function PasswordStrengthIndicator({ scorer = defaultScorer, password, ...restProps }) {\n const strength = scorer.scoreFn(password);\n return ;\n}\n","import React from 'react';\nimport { LinearProgress } from '@mui/material';\nimport { withStyles } from '@mui/styles';\n\n/**\n * @typedef {Object} Color\n * @property {number} red\n * @property {number} green\n * @property {number} blue\n */\n\n/** Calculate a rgb-color from a gradient between `color1` and `color2`\n * @param {number} fade - Indicates the fade between `color1` and `color2` in the range [0, 1].\n * @param {Color} color1\n * @param {Color} color2\n * @returns {string} `` `rgb(${red}, ${green}, ${blue})` ``\n */\nconst colorGradient = (fade, color1, color2) => {\n var diffRed = color2.red - color1.red;\n var diffGreen = color2.green - color1.green;\n var diffBlue = color2.blue - color1.blue;\n\n var gradient = {\n red: Math.floor(color1.red + diffRed * fade),\n green: Math.floor(color1.green + diffGreen * fade),\n blue: Math.floor(color1.blue + diffBlue * fade)\n };\n\n return 'rgb(' + gradient.red + ',' + gradient.green + ',' + gradient.blue + ')';\n};\n\n/** A progress bar that changes its color between its min an max value.\n * @param {Object} props\n * @param {Color} [props.badColor = { red: 0xff, green: 0x40, blue: 0x47 }] - default: `#FF4047`\n * @param {Color} [props.goodColor = { red: 0x00, green: 0xff, blue: 0x6e }] - default: `#00FF6E`\n * @param {number} props.maxVal\n * @param {number} props.minVal\n * @param {number} props.currentVal\n */\nexport default function ColorGradientProgressBar(props) {\n const { minVal, maxVal, currentVal, badColor, goodColor, ...restProps } = props;\n\n const color1 = badColor || { red: 0xff, green: 0x40, blue: 0x47 };\n const color2 = goodColor || { red: 0x00, green: 0xff, blue: 0x6e };\n\n const fade = Math.max(0, Math.min(1, (currentVal - minVal) / (maxVal - minVal)));\n const currentColor = colorGradient(fade, color1, color2);\n\n const StyledLinearProgress = withStyles({\n colorPrimary: {\n backgroundColor: '#e0e0e0'\n },\n barColorPrimary: {\n backgroundColor: currentColor\n }\n })(LinearProgress);\n\n return ;\n}\n","import * as React from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, TextInput, required, email, useLogin } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n width: 450\n },\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst LoginForm = ({ redirectTo, allowUsername }) => {\n const [loading, setLoading] = useSafeSetState(false);\n const login = useLogin();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n\n const submit = values => {\n setLoading(true);\n login(values, redirectTo)\n .then(() => {\n setLoading(false);\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'ra.auth.sign_in_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n validate={allowUsername ? [required()] : [required(), email()]}\n />\n \n \n {loading ? (\n \n ) : (\n translate('auth.action.login')\n )}\n \n \n
\n );\n};\n\nLoginForm.defaultValues = {\n redirectTo: '/',\n allowUsername: false\n};\n\nexport default LoginForm;\n","import React, { useState } from 'react';\nimport { Form, useTranslate, useNotify, useSafeSetState, useAuthProvider, TextInput, required } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { Button, CardContent, CircularProgress, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport PasswordStrengthIndicator from './PasswordStrengthIndicator';\nimport validatePasswordStrength from './validatePasswordStrength';\nimport { defaultScorer } from '../../passwordScorer';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\n/**\n *\n * @param {string} redirectTo\n * @param {Object} passwordScorer Scorer to evaluate and indicate password strength.\n * Set to `null` or `false`, if you don't want password strength checks. Default is\n * passwordStrength's `defaultScorer`.\n * @returns\n */\nconst NewPasswordForm = ({ redirectTo, passwordScorer = defaultScorer }) => {\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const token = searchParams.get('token');\n\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const [newPassword, setNewPassword] = useState('');\n\n const submit = values => {\n setLoading(true);\n authProvider\n .setNewPassword({ ...values, token })\n .then(res => {\n setTimeout(() => {\n window.location.href = `/login${redirectTo ? `?redirect=${encodeURIComponent(redirectTo)}` : ''}`;\n setLoading(false);\n }, 2000);\n notify('auth.notification.password_changed', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n {passwordScorer && (\n <>\n \n {translate('auth.input.password_strength')}:{' '}\n \n\n \n \n )}\n setNewPassword(e.target.value)}\n format={value => (value ? value.toLowerCase() : '')}\n />\n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.set_new_password')\n )}\n \n \n
\n );\n};\n\nexport default NewPasswordForm;\n","import React from 'react';\nimport { Form, TextInput, required, useTranslate, useNotify, useSafeSetState, useAuthProvider } from 'react-admin';\nimport { Button, CardContent, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: theme.spacing(0.3)\n }\n}));\n\nconst ResetPasswordForm = () => {\n const [loading, setLoading] = useSafeSetState(false);\n const authProvider = useAuthProvider();\n const translate = useTranslate();\n const notify = useNotify();\n const classes = useStyles();\n\n const submit = values => {\n setLoading(true);\n authProvider\n .resetPassword({ ...values })\n .then(res => {\n setLoading(false);\n notify('auth.notification.reset_password_submitted', 'info');\n })\n .catch(error => {\n setLoading(false);\n notify(\n typeof error === 'string'\n ? error\n : typeof error === 'undefined' || !error.message\n ? 'auth.notification.reset_password_error'\n : error.message,\n {\n type: 'warning',\n messageArgs: {\n _: typeof error === 'string' ? error : error && error.message ? error.message : undefined\n }\n }\n );\n });\n };\n\n return (\n
\n \n (value ? value.toLowerCase() : '')}\n />\n \n {loading ? (\n \n ) : (\n translate('auth.action.reset_password')\n )}\n \n \n
\n );\n};\n\nexport default ResetPasswordForm;\n","import React from 'react';\nimport { Box, Card, Typography } from '@mui/material';\nimport { Notification } from 'react-admin';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(theme => ({\n '@global': {\n body: {\n backgroundColor: theme.palette.secondary.main\n }\n },\n root: {\n backgroundColor: theme.palette.secondary.main\n },\n card: {\n minWidth: 300,\n maxWidth: 500,\n marginTop: '6em',\n [theme.breakpoints.down('sm')]: {\n margin: '1em'\n }\n },\n icon: {\n marginTop: 5,\n marginRight: 5\n },\n title: {\n [theme.breakpoints.down('sm')]: {\n fontWeight: 'bold',\n marginTop: 12\n }\n }\n}));\n\nconst SimpleBox = ({ title, icon, text, children }) => {\n const classes = useStyles();\n return (\n \n \n \n {icon && React.cloneElement(icon, { fontSize: 'large', className: classes.icon })}\n \n {title}\n \n \n \n {text}\n \n {children}\n \n \n \n );\n};\n\nexport default SimpleBox;\n","import React from 'react';\nimport { Resource, usePermissions } from 'react-admin';\nimport { useCreateContainer } from '@semapps/semantic-data-provider';\nimport { rightsToCreate } from '../constants';\n\n// Not used for now. The ListWithPermissions component will handle the conditional display of the Create button.\nconst ResourceWithPermission = ({ name, create, ...rest }) => {\n const createContainer = useCreateContainer(name);\n const { permissions } = usePermissions(createContainer);\n return (\n rightsToCreate.includes(p['acl:mode'])) ? create : undefined}\n // Requesting permissions to list container is too long, we will avoid that for now\n // list={permissions && permissions.some(p => rightsToList.includes(p['acl:mode'])) ? list : undefined}\n />\n );\n};\n\nexport default ResourceWithPermission;\n","import React, { forwardRef, useCallback } from 'react';\nimport { Logout, UserMenu as RaUserMenu, useGetIdentity, useTranslate, useUserMenu } from 'react-admin';\nimport { MenuItem, ListItemIcon, ListItemText } from '@mui/material';\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\nimport EditIcon from '@mui/icons-material/Edit';\nimport { useNavigate } from 'react-router-dom';\n\n// It's important to pass the ref to allow Material UI to manage the keyboard navigation\nconst UserMenuItem = forwardRef(({ label, icon, to, ...rest }, ref) => {\n const { onClose } = useUserMenu();\n const translate = useTranslate();\n const navigate = useNavigate();\n const onClick = useCallback(() => {\n navigate(to);\n onClose();\n }, [to, onClose, navigate]);\n return (\n \n {icon && {React.cloneElement(icon, { fontSize: 'small' })}}\n {translate(label)}\n \n );\n});\n\nconst UserMenu = ({ logout, profileResource, ...otherProps }) => {\n const { identity } = useGetIdentity();\n return (\n \n {identity && identity.id !== ''\n ? [\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}/show`}\n />,\n }\n to={`/${profileResource}/${encodeURIComponent(identity?.profileData?.id || identity.id)}`}\n />,\n React.cloneElement(logout, { key: 'logout' })\n ]\n : [\n ,\n \n ]}\n \n );\n};\n\nUserMenu.defaultProps = {\n logout: ,\n profileResource: 'Person'\n};\n\nexport default UserMenu;\n","import React, { useEffect } from 'react';\nimport { useGetIdentity, useNotify, useRedirect } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\n\nconst useCheckAuthenticated = message => {\n const { identity, isLoading } = useGetIdentity();\n const notify = useNotify();\n const redirect = useRedirect();\n const location = useLocation();\n\n useEffect(() => {\n if (!isLoading && !identity?.id) {\n notify(message || 'ra.auth.auth_check_error', { type: 'error' });\n redirect(`/login?redirect=${encodeURIComponent(location.pathname + location.search)}`);\n }\n }, [isLoading, identity, redirect, notify, location]);\n\n return { identity, isLoading };\n};\n\nexport default useCheckAuthenticated;\n","import { useEffect, useCallback } from 'react';\nimport isEqual from 'lodash/isEqual';\nimport { useGetPermissions, useSafeSetState } from 'react-admin';\n\nconst emptyParams = {};\n\n// keep a cache of already fetched permissions to initialize state for new\n// components and avoid a useless rerender if the permissions haven't changed\nconst alreadyFetchedPermissions = { '{}': undefined };\n\n// Fork of usePermissionsOptimized, with a refetch option\nconst usePermissionsWithRefetch = (params = emptyParams) => {\n const key = JSON.stringify(params);\n const [state, setState] = useSafeSetState({\n permissions: alreadyFetchedPermissions[key]\n });\n const getPermissions = useGetPermissions();\n\n const fetchPermissions = useCallback(\n () =>\n getPermissions(params)\n .then(permissions => {\n if (!isEqual(permissions, state.permissions)) {\n alreadyFetchedPermissions[key] = permissions;\n setState({ permissions });\n }\n })\n .catch(error => {\n setState({\n error\n });\n }),\n [key, params, getPermissions]\n );\n\n useEffect(() => {\n fetchPermissions();\n }, [key]);\n\n return { ...state, refetch: fetchPermissions };\n};\n\nexport default usePermissionsWithRefetch;\n","const englishMessages = {\n auth: {\n dialog: {\n container_permissions: 'Container permissions',\n resource_permissions: 'Resource permissions',\n login_required: 'Login required'\n },\n action: {\n permissions: 'Permissions',\n signup: 'Signup',\n reset_password: 'Reset password',\n set_new_password: 'Set new password',\n logout: 'Logout',\n login: 'Login',\n view_my_profile: 'View my profile',\n edit_my_profile: 'Edit my profile'\n },\n right: {\n resource: {\n read: 'Read',\n append: 'Append',\n write: 'Write',\n control: 'Control'\n },\n container: {\n read: 'List',\n append: 'Add',\n write: 'Add',\n control: 'Control'\n }\n },\n agent: {\n anonymous: 'All users',\n authenticated: 'Connected users'\n },\n input: {\n agent_select: 'Add an user...',\n name: 'Surname',\n username: 'User ID',\n email: 'Email address',\n username_or_email: 'User ID or email address',\n current_password: 'Current password',\n new_password: 'New password',\n confirm_new_password: 'Confirm new password',\n password_strength: 'Password strength',\n password_too_weak: 'Password too weak. Increase length or add special characters.'\n },\n helper: {\n login: 'Sign in to your account',\n signup: 'Create your account',\n reset_password: 'Enter your email address below and we will send you a link to reset your password',\n set_new_password: 'Please enter your email address and a new password below'\n },\n message: {\n resource_show_forbidden: 'You are not allowed to view this resource',\n resource_edit_forbidden: 'You are not allowed to edit this resource',\n resource_delete_forbidden: 'You are not allowed to delete this resource',\n resource_control_forbidden: 'You are not allowed to control this resource',\n container_create_forbidden: 'You are not allowed to create new resource',\n container_list_forbidden: 'You are not allowed to list these resources',\n user_not_allowed_to_login: 'You are not allowed to login with this account',\n user_email_not_found: 'No account found with this email address',\n user_email_exist: 'An account already exist with this email address',\n username_exist: 'An account already exist with this user ID',\n username_invalid: 'This username is invalid. Only lowercase characters, numbers, dots and hyphens are authorized',\n new_user_created: 'Your account has been successfully created',\n user_connected: 'You are now connected',\n user_disconnected: 'You are now disconnected',\n bad_request: 'Bad request (Error message returned by the server: %{error})',\n account_settings_updated: 'Your account settings have been successfully updated',\n login_to_continue: 'Please login to continue',\n choose_pod_provider:\n 'Please choose a POD provider in the list below. All application data will be saved on your POD.'\n },\n notification: {\n reset_password_submitted: 'An email has been sent with reset password instructions',\n reset_password_error: 'An error occurred',\n password_changed: 'Password changed successfully',\n new_password_error: 'An error occurred',\n invalid_password: 'Invalid password',\n get_settings_error: 'An error occurred',\n update_settings_error: 'An error occurred'\n }\n }\n};\n\nexport default englishMessages;\n","const frenchMessages = {\n auth: {\n dialog: {\n container_permissions: 'Permissions sur le container',\n resource_permissions: 'Permissions sur la ressource',\n login_required: 'Connexion requise'\n },\n action: {\n permissions: 'Permissions',\n signup: \"S'inscrire\",\n reset_password: 'Mot de passe oublié ?',\n set_new_password: 'Définir le mot de passe',\n logout: 'Se déconnecter',\n login: 'Se connecter',\n view_my_profile: 'Voir mon profil',\n edit_my_profile: 'Éditer mon profil'\n },\n right: {\n resource: {\n read: 'Lire',\n append: 'Enrichir',\n write: 'Modifier',\n control: 'Administrer'\n },\n container: {\n read: 'Lister',\n append: 'Ajouter',\n write: 'Ajouter',\n control: 'Administrer'\n }\n },\n agent: {\n anonymous: 'Tous les utilisateurs',\n authenticated: 'Utilisateurs connectés'\n },\n input: {\n agent_select: 'Ajouter un utilisateur...',\n name: 'Prénom',\n username: 'Identifiant unique',\n email: 'Adresse e-mail',\n username_or_email: 'Identifiant ou adresse e-mail',\n current_password: 'Mot de passe actuel',\n new_password: 'Nouveau mot de passe',\n confirm_new_password: 'Confirmer le nouveau mot de passe',\n password_strength: 'Force du mot de passe',\n password_too_weak: 'Mot de passe trop faible. Augmenter la longueur ou ajouter des caractères spéciaux.'\n },\n helper: {\n login: 'Connectez-vous à votre compte.',\n signup: 'Créez votre compte',\n reset_password:\n 'Entrez votre adresse mail ci-dessous et nous vous enverrons un lien pour réinitialiser votre mot de passe',\n set_new_password: 'Veuillez entrer votre adresse mail et un nouveau mot de passe ci-dessous'\n },\n message: {\n resource_show_forbidden: \"Vous n'avez pas la permission de voir cette ressource\",\n resource_edit_forbidden: \"Vous n'avez pas la permission d'éditer cette ressource\",\n resource_delete_forbidden: \"Vous n'avez pas la permission d'effacer cette ressource\",\n resource_control_forbidden: \"Vous n'avez pas la permission d'administrer cette ressource\",\n container_create_forbidden: \"Vous n'avez pas la permission de créer des ressources\",\n container_list_forbidden: \"Vous n'avez pas la permission de voir ces ressources\",\n user_not_allowed_to_login: \"Vous n'avez pas le droit de vous connecter avec ce compte\",\n user_email_not_found: 'Aucun compte trouvé avec cette adresse mail',\n user_email_exist: 'Un compte existe déjà avec cette adresse mail',\n username_exist: 'Un compte existe déjà avec cet identifiant',\n username_invalid:\n \"Cet identifiant n'est pas valide. Seuls les lettres minuscules, les chiffres, les points et les tirets sont autorisés\",\n new_user_created: 'Votre compte a été créé avec succès',\n user_connected: 'Vous êtes maintenant connecté',\n user_disconnected: 'Vous êtes maintenant déconnecté',\n bad_request: \"Requête erronée (Message d'erreur renvoyé par le serveur: %{error})\",\n account_settings_updated: 'Les paramètres de votre compte ont été mis à jour avec succès',\n login_to_continue: 'Veuillez vous connecter pour continuer',\n choose_pod_provider:\n \"Veuillez choisir un fournisseur de PODs dans la liste ci-dessous. Toutes les données de l'application seront enregistrées sur votre POD.\"\n },\n notification: {\n reset_password_submitted: 'Un e-mail a été envoyé avec les instructions de réinitialisation du mot de passe',\n reset_password_error: \"Une erreur s'est produite\",\n password_changed: 'Le mot de passe a été changé avec succès',\n new_password_error: \"Une erreur s'est produite\",\n invalid_password: 'Mot de passe incorrect',\n get_settings_error: \"Une erreur s'est produite\",\n update_settings_error: \"Une erreur s'est produite\"\n }\n }\n};\n\nexport default frenchMessages;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/date-components/dist/index.cjs.js b/src/frontend/packages/date-components/dist/index.cjs.js index e62a1b737..87f9127db 100644 --- a/src/frontend/packages/date-components/dist/index.cjs.js +++ b/src/frontend/packages/date-components/dist/index.cjs.js @@ -13,9 +13,11 @@ var $3RhHq$muistylesmakeStyles = require("@mui/styles/makeStyles"); var $3RhHq$reactrouterdom = require("react-router-dom"); var $3RhHq$fullcalendarlist = require("@fullcalendar/list"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } @@ -61,7 +63,7 @@ const $c332daa71b957685$var$Picker = ({ PickerComponent: PickerComponent, label: }), isRequired && /*#__PURE__*/ (0, $3RhHq$reactjsxruntime.jsx)("span", { "aria-hidden": "true", - children: " *" + children: "\u2009*" }) ] }); diff --git a/src/frontend/packages/date-components/dist/index.cjs.js.map b/src/frontend/packages/date-components/dist/index.cjs.js.map index 3b86b1560..38180522d 100644 --- a/src/frontend/packages/date-components/dist/index.cjs.js.map +++ b/src/frontend/packages/date-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/date-components/src/index.tsx","packages/date-components/src/Picker.tsx","packages/date-components/src/CalendarList.js","packages/date-components/src/useFullCalendarProps.js","packages/date-components/src/DaysList.js"],"sourcesContent":["/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { DatePicker, DatePickerProps } from '@mui/x-date-pickers/DatePicker';\nimport { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker';\nimport { DateTimePicker, DateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';\nimport Picker, { Props as PickerProps } from './Picker';\n\nconst DateInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst TimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst DateTimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\n\nexport { DateInput, TimeInput, DateTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useCallback, ComponentType } from 'react';\nimport { useInput, InputHelperText, TextInputProps, useTranslateLabel } from 'react-admin';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { getPickersLocalization } from '@mui/x-date-pickers/locales/utils/getPickersLocalization';\nimport { Locale } from 'date-fns';\n\nexport type Props = TextInputProps &\n Omit & {\n PickerComponent: ComponentType;\n locale?: Locale;\n translations?: ReturnType;\n stringFormat?: string;\n };\n\nconst Picker = ({\n PickerComponent,\n label,\n source,\n helperText,\n fullWidth,\n onBlur,\n onChange,\n format,\n parse,\n validate,\n defaultValue,\n locale,\n translations,\n stringFormat = 'ISO',\n ...rest\n}: Props) => {\n const {\n field,\n isRequired,\n fieldState: { error, isTouched, invalid },\n formState: { isSubmitted }\n } = useInput({\n format,\n onBlur,\n onChange,\n parse,\n source,\n validate,\n defaultValue\n });\n\n const handleChange = useCallback(\n (value: Date) => {\n if (value instanceof Date) {\n field.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString());\n } else {\n field.onChange(null);\n }\n },\n [field, stringFormat]\n );\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = (\n \n {translateLabel({\n label,\n source\n })}\n {isRequired &&  *}\n \n );\n\n return (\n \n \n )\n }\n }}\n value={field.value ? new Date(field.value) : null}\n onChange={handleChange}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...rest}\n />\n \n );\n};\n\nexport default Picker;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: `${theme.palette.secondary.light} !important`\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n \n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React, { useMemo, useCallback } from 'react';\nimport { useSearchParams, useNavigate } from 'react-router-dom';\nimport { useListContext, useCreatePath } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const { data, isLoading, resource } = useListContext();\n const [searchParams, setSearchParams] = useSearchParams();\n const navigate = useNavigate();\n const createPath = useCreatePath();\n\n const query = new URLSearchParams(location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n navigate(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n setSearchParams(params => ({\n ...params,\n month: view.currentStart.getMonth() + 1,\n year: view.currentStart.getFullYear()\n }));\n },\n [setSearchParams]\n );\n\n const events = useMemo(\n () =>\n !isLoading &&\n data\n .filter(record => record)\n .map(record => ({\n id: record.id,\n title: typeof label === 'string' ? record[label] : label(record),\n start: typeof startDate === 'string' ? record[startDate] : startDate(record),\n end: typeof endDate === 'string' ? record[endDate] : endDate(record),\n url: createPath({ resource, id: record.id, type: linkType })\n })),\n [isLoading, data, resource, createPath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return ;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/date-components/src/index.tsx","packages/date-components/src/Picker.tsx","packages/date-components/src/CalendarList.js","packages/date-components/src/useFullCalendarProps.js","packages/date-components/src/DaysList.js"],"sourcesContent":["/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { DatePicker, DatePickerProps } from '@mui/x-date-pickers/DatePicker';\nimport { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker';\nimport { DateTimePicker, DateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';\nimport Picker, { Props as PickerProps } from './Picker';\n\nconst DateInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst TimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst DateTimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\n\nexport { DateInput, TimeInput, DateTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useCallback, ComponentType } from 'react';\nimport { useInput, InputHelperText, TextInputProps, useTranslateLabel } from 'react-admin';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { getPickersLocalization } from '@mui/x-date-pickers/locales/utils/getPickersLocalization';\nimport { Locale } from 'date-fns';\n\nexport type Props = TextInputProps &\n Omit & {\n PickerComponent: ComponentType;\n locale?: Locale;\n translations?: ReturnType;\n stringFormat?: string;\n };\n\nconst Picker = ({\n PickerComponent,\n label,\n source,\n helperText,\n fullWidth,\n onBlur,\n onChange,\n format,\n parse,\n validate,\n defaultValue,\n locale,\n translations,\n stringFormat = 'ISO',\n ...rest\n}: Props) => {\n const {\n field,\n isRequired,\n fieldState: { error, isTouched, invalid },\n formState: { isSubmitted }\n } = useInput({\n format,\n onBlur,\n onChange,\n parse,\n source,\n validate,\n defaultValue\n });\n\n const handleChange = useCallback(\n (value: Date) => {\n if (value instanceof Date) {\n field.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString());\n } else {\n field.onChange(null);\n }\n },\n [field, stringFormat]\n );\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = (\n \n {translateLabel({\n label,\n source\n })}\n {isRequired &&  *}\n \n );\n\n return (\n \n \n )\n }\n }}\n value={field.value ? new Date(field.value) : null}\n onChange={handleChange}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...rest}\n />\n \n );\n};\n\nexport default Picker;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: `${theme.palette.secondary.light} !important`\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n \n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React, { useMemo, useCallback } from 'react';\nimport { useSearchParams, useNavigate } from 'react-router-dom';\nimport { useListContext, useCreatePath } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const { data, isLoading, resource } = useListContext();\n const [searchParams, setSearchParams] = useSearchParams();\n const navigate = useNavigate();\n const createPath = useCreatePath();\n\n const query = new URLSearchParams(location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n navigate(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n setSearchParams(params => ({\n ...params,\n month: view.currentStart.getMonth() + 1,\n year: view.currentStart.getFullYear()\n }));\n },\n [setSearchParams]\n );\n\n const events = useMemo(\n () =>\n !isLoading &&\n data\n .filter(record => record)\n .map(record => ({\n id: record.id,\n title: typeof label === 'string' ? record[label] : label(record),\n start: typeof startDate === 'string' ? record[startDate] : startDate(record),\n end: typeof endDate === 'string' ? record[endDate] : endDate(record),\n url: createPath({ resource, id: record.id, type: linkType })\n })),\n [isLoading, data, resource, createPath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return ;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/date-components/dist/index.es.js b/src/frontend/packages/date-components/dist/index.es.js index 31f26825d..73259b295 100644 --- a/src/frontend/packages/date-components/dist/index.es.js +++ b/src/frontend/packages/date-components/dist/index.es.js @@ -48,7 +48,7 @@ const $610808f89222f9cc$var$Picker = ({ PickerComponent: PickerComponent, label: }), isRequired && /*#__PURE__*/ (0, $5Ihaz$jsx)("span", { "aria-hidden": "true", - children: " *" + children: "\u2009*" }) ] }); diff --git a/src/frontend/packages/date-components/dist/index.es.js.map b/src/frontend/packages/date-components/dist/index.es.js.map index fb8d454e3..50e641a22 100644 --- a/src/frontend/packages/date-components/dist/index.es.js.map +++ b/src/frontend/packages/date-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/date-components/src/index.tsx","packages/date-components/src/Picker.tsx","packages/date-components/src/CalendarList.js","packages/date-components/src/useFullCalendarProps.js","packages/date-components/src/DaysList.js"],"sourcesContent":["/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { DatePicker, DatePickerProps } from '@mui/x-date-pickers/DatePicker';\nimport { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker';\nimport { DateTimePicker, DateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';\nimport Picker, { Props as PickerProps } from './Picker';\n\nconst DateInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst TimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst DateTimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\n\nexport { DateInput, TimeInput, DateTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useCallback, ComponentType } from 'react';\nimport { useInput, InputHelperText, TextInputProps, useTranslateLabel } from 'react-admin';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { getPickersLocalization } from '@mui/x-date-pickers/locales/utils/getPickersLocalization';\nimport { Locale } from 'date-fns';\n\nexport type Props = TextInputProps &\n Omit & {\n PickerComponent: ComponentType;\n locale?: Locale;\n translations?: ReturnType;\n stringFormat?: string;\n };\n\nconst Picker = ({\n PickerComponent,\n label,\n source,\n helperText,\n fullWidth,\n onBlur,\n onChange,\n format,\n parse,\n validate,\n defaultValue,\n locale,\n translations,\n stringFormat = 'ISO',\n ...rest\n}: Props) => {\n const {\n field,\n isRequired,\n fieldState: { error, isTouched, invalid },\n formState: { isSubmitted }\n } = useInput({\n format,\n onBlur,\n onChange,\n parse,\n source,\n validate,\n defaultValue\n });\n\n const handleChange = useCallback(\n (value: Date) => {\n if (value instanceof Date) {\n field.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString());\n } else {\n field.onChange(null);\n }\n },\n [field, stringFormat]\n );\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = (\n \n {translateLabel({\n label,\n source\n })}\n {isRequired &&  *}\n \n );\n\n return (\n \n \n )\n }\n }}\n value={field.value ? new Date(field.value) : null}\n onChange={handleChange}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...rest}\n />\n \n );\n};\n\nexport default Picker;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: `${theme.palette.secondary.light} !important`\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n \n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React, { useMemo, useCallback } from 'react';\nimport { useSearchParams, useNavigate } from 'react-router-dom';\nimport { useListContext, useCreatePath } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const { data, isLoading, resource } = useListContext();\n const [searchParams, setSearchParams] = useSearchParams();\n const navigate = useNavigate();\n const createPath = useCreatePath();\n\n const query = new URLSearchParams(location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n navigate(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n setSearchParams(params => ({\n ...params,\n month: view.currentStart.getMonth() + 1,\n year: view.currentStart.getFullYear()\n }));\n },\n [setSearchParams]\n );\n\n const events = useMemo(\n () =>\n !isLoading &&\n data\n .filter(record => record)\n .map(record => ({\n id: record.id,\n title: typeof label === 'string' ? record[label] : label(record),\n start: typeof startDate === 'string' ? record[startDate] : startDate(record),\n end: typeof endDate === 'string' ? record[endDate] : endDate(record),\n url: createPath({ resource, id: record.id, type: linkType })\n })),\n [isLoading, data, resource, createPath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return ;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/date-components/src/index.tsx","packages/date-components/src/Picker.tsx","packages/date-components/src/CalendarList.js","packages/date-components/src/useFullCalendarProps.js","packages/date-components/src/DaysList.js"],"sourcesContent":["/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/jsx-props-no-spreading */\nimport { DatePicker, DatePickerProps } from '@mui/x-date-pickers/DatePicker';\nimport { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker';\nimport { DateTimePicker, DateTimePickerProps } from '@mui/x-date-pickers/DateTimePicker';\nimport Picker, { Props as PickerProps } from './Picker';\n\nconst DateInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst TimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\nconst DateTimeInput = (props: Omit>, 'PickerComponent'>) => (\n \n);\n\nexport { DateInput, TimeInput, DateTimeInput };\n\nexport { default as CalendarList } from './CalendarList';\nexport { default as DaysList } from './DaysList';\nexport { default as useFullCalendarProps } from './useFullCalendarProps';\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useCallback, ComponentType } from 'react';\nimport { useInput, InputHelperText, TextInputProps, useTranslateLabel } from 'react-admin';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { getPickersLocalization } from '@mui/x-date-pickers/locales/utils/getPickersLocalization';\nimport { Locale } from 'date-fns';\n\nexport type Props = TextInputProps &\n Omit & {\n PickerComponent: ComponentType;\n locale?: Locale;\n translations?: ReturnType;\n stringFormat?: string;\n };\n\nconst Picker = ({\n PickerComponent,\n label,\n source,\n helperText,\n fullWidth,\n onBlur,\n onChange,\n format,\n parse,\n validate,\n defaultValue,\n locale,\n translations,\n stringFormat = 'ISO',\n ...rest\n}: Props) => {\n const {\n field,\n isRequired,\n fieldState: { error, isTouched, invalid },\n formState: { isSubmitted }\n } = useInput({\n format,\n onBlur,\n onChange,\n parse,\n source,\n validate,\n defaultValue\n });\n\n const handleChange = useCallback(\n (value: Date) => {\n if (value instanceof Date) {\n field.onChange(stringFormat === 'ISO' ? value.toISOString() : value.toString());\n } else {\n field.onChange(null);\n }\n },\n [field, stringFormat]\n );\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = (\n \n {translateLabel({\n label,\n source\n })}\n {isRequired &&  *}\n \n );\n\n return (\n \n \n )\n }\n }}\n value={field.value ? new Date(field.value) : null}\n onChange={handleChange}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...rest}\n />\n \n );\n};\n\nexport default Picker;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport dayGridPlugin from '@fullcalendar/daygrid';\nimport { useTheme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n },\n '.fc-day-today': {\n backgroundColor: `${theme.palette.secondary.light} !important`\n },\n // Overwrite violet color of links\n 'a.fc-daygrid-dot-event': {\n color: 'black !important'\n }\n }\n}));\n\nconst CalendarList = props => {\n const theme = useTheme();\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return (\n \n );\n};\n\nCalendarList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default CalendarList;\n","import React, { useMemo, useCallback } from 'react';\nimport { useSearchParams, useNavigate } from 'react-router-dom';\nimport { useListContext, useCreatePath } from 'react-admin';\n\nconst useFullCalendarProps = ({ label, startDate, endDate, linkType }) => {\n const { data, isLoading, resource } = useListContext();\n const [searchParams, setSearchParams] = useSearchParams();\n const navigate = useNavigate();\n const createPath = useCreatePath();\n\n const query = new URLSearchParams(location.search);\n\n // Bypass the link in order to use React-Router\n const eventClick = useCallback(({ event, jsEvent }) => {\n jsEvent.preventDefault();\n navigate(event.url);\n }, []);\n\n // Change the query string when month change\n const datesSet = useCallback(\n ({ view }) => {\n setSearchParams(params => ({\n ...params,\n month: view.currentStart.getMonth() + 1,\n year: view.currentStart.getFullYear()\n }));\n },\n [setSearchParams]\n );\n\n const events = useMemo(\n () =>\n !isLoading &&\n data\n .filter(record => record)\n .map(record => ({\n id: record.id,\n title: typeof label === 'string' ? record[label] : label(record),\n start: typeof startDate === 'string' ? record[startDate] : startDate(record),\n end: typeof endDate === 'string' ? record[endDate] : endDate(record),\n url: createPath({ resource, id: record.id, type: linkType })\n })),\n [isLoading, data, resource, createPath]\n );\n\n return {\n initialDate: query.has('month') ? new Date(query.get('year'), query.get('month') - 1) : new Date(),\n events,\n datesSet,\n eventClick\n };\n};\n\nexport default useFullCalendarProps;\n","import React from 'react';\nimport FullCalendar from '@fullcalendar/react';\nimport listPlugin from '@fullcalendar/list';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useFullCalendarProps from './useFullCalendarProps';\n\nconst useGlobalStyles = makeStyles(theme => ({\n '@global': {\n '.fc-button': {\n backgroundColor: `${theme.palette.primary.main} !important`,\n border: 'none !important',\n opacity: '1 !important'\n }\n }\n}));\n\nconst DaysList = props => {\n const fullCalendarProps = useFullCalendarProps(props);\n useGlobalStyles();\n\n return ;\n};\n\nDaysList.defaultProps = {\n linkType: 'edit'\n};\n\nexport default DaysList;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/date-components/package.json b/src/frontend/packages/date-components/package.json index f42fac54e..fe054a131 100644 --- a/src/frontend/packages/date-components/package.json +++ b/src/frontend/packages/date-components/package.json @@ -35,13 +35,8 @@ "access": "public" }, "devDependencies": { - "@mui/material": "^5.13.1", - "@mui/styles": "^5.13.1", "@parcel/packager-ts": "^2.9.3", "@parcel/transformer-typescript-types": "^2.9.3", - "parcel": "^2.9.3", - "react": "^18.2.0", - "react-admin": "^4.11.0", - "react-router-dom": "^6.1.0" + "parcel": "^2.9.3" } } diff --git a/src/frontend/packages/field-components/dist/index.cjs.js b/src/frontend/packages/field-components/dist/index.cjs.js index 5d132cc0a..35162944f 100644 --- a/src/frontend/packages/field-components/dist/index.cjs.js +++ b/src/frontend/packages/field-components/dist/index.cjs.js @@ -18,9 +18,11 @@ var $drrcw$muiiconsmaterialInstagram = require("@mui/icons-material/Instagram"); var $drrcw$muiiconsmaterialYouTube = require("@mui/icons-material/YouTube"); var $drrcw$reacticonsfi = require("react-icons/fi"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } @@ -422,7 +424,7 @@ const $9ac0ba4780250906$var$QuickAppendDialog = ({ open: open, onClose: onClose, } }); await appendLink(data.id); - notify(`La resource "${values.title}" a été créée`, { + notify(`La resource "${values.title}" a \xe9t\xe9 cr\xe9\xe9e`, { type: "success" }); }, [ @@ -446,7 +448,7 @@ const $9ac0ba4780250906$var$QuickAppendDialog = ({ open: open, onClose: onClose, className: classes.addForm, children: /*#__PURE__*/ (0, $drrcw$reactjsxruntime.jsx)((0, $drrcw$muimaterial.TextField), { autoFocus: true, - label: `Rechercher ou créer des ${getResourceLabel(reference, 2).toLowerCase()}`, + label: `Rechercher ou cr\xe9er des ${getResourceLabel(reference, 2).toLowerCase()}`, variant: "filled", margin: "dense", value: keyword, diff --git a/src/frontend/packages/field-components/dist/index.cjs.js.map b/src/frontend/packages/field-components/dist/index.cjs.js.map index 1b3d28b1b..71245747b 100644 --- a/src/frontend/packages/field-components/dist/index.cjs.js.map +++ b/src/frontend/packages/field-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/field-components/src/index.js","packages/field-components/src/AvatarWithLabelField.js","packages/field-components/src/ReferenceArrayField.js","packages/field-components/src/ReferenceField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendReferenceArrayField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendDialog.js","packages/field-components/src/QuickAppendReferenceArrayField/ResultsList.js","packages/field-components/src/MultiUrlField.js","packages/field-components/src/SeparatedListField.js"],"sourcesContent":["export { default as AvatarWithLabelField } from './AvatarWithLabelField';\nexport { default as ReferenceArrayField } from './ReferenceArrayField';\nexport { default as ReferenceField } from './ReferenceField';\nexport { default as QuickAppendReferenceArrayField } from './QuickAppendReferenceArrayField/QuickAppendReferenceArrayField';\nexport { default as MultiUrlField } from './MultiUrlField';\nexport { default as SeparatedListField } from './SeparatedListField';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Box, Avatar, Chip } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LaunchIcon from '@mui/icons-material/Launch';\n\nconst useStyles = makeStyles(theme => ({\n parent: props => ({\n position: 'relative',\n ...props.parent\n }),\n square: {\n width: '100%',\n paddingBottom: '100%',\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n // backgroundColor: theme.palette.primary.main,\n '& svg': {\n width: '55%',\n height: '55%'\n }\n },\n chip: {\n position: 'absolute',\n bottom: -10,\n left: 0,\n right: 0,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: 6,\n paddingRight: 6,\n marginBottom: 10,\n cursor: 'pointer'\n },\n launchIcon: {\n width: 14\n }\n}));\n\nconst handleClick = () => {};\n\nconst AvatarWithLabelField = ({ label, defaultLabel, image, fallback, externalLink, labelColor, classes, ...rest }) => {\n classes = useStyles(classes);\n const record = useRecordContext();\n\n const computedLabel = (typeof label === 'function' ? label(record) : record[label]) || defaultLabel;\n const computedImage = typeof image === 'function' ? image(record) : record[image];\n const computedFallback = typeof fallback === 'function' ? fallback(record) : fallback;\n\n return (\n \n
\n \n
\n {!computedLabel ? null : externalLink ? (\n }\n onDelete={handleClick}\n />\n ) : (\n \n )}\n
\n );\n};\n\nAvatarWithLabelField.defaultProps = {\n labelColor: 'secondary',\n externalLink: false\n};\n\nexport default AvatarWithLabelField;\n","import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceArrayField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceField;\n","import React, { useState, useMemo } from 'react';\nimport { useRecordContext, usePermissions } from 'react-admin';\nimport { ReferenceArrayField } from '../index';\nimport QuickAppendDialog from './QuickAppendDialog';\n\nconst QuickAppendReferenceArrayField = ({ reference, source, resource, children, ...otherProps }) => {\n const record = useRecordContext();\n const [showDialog, setShowDialog] = useState(false);\n const { permissions } = usePermissions(record.id);\n\n const canAppend = useMemo(\n () => !!permissions && permissions.some(p => ['acl:Append', 'acl:Write', 'acl:Control'].includes(p['acl:mode'])),\n [permissions]\n );\n\n return (\n <>\n \n {React.Children.only(children) &&\n React.cloneElement(children, { appendLink: canAppend ? () => setShowDialog(true) : undefined })}\n \n {canAppend && showDialog && (\n setShowDialog(false)}\n subjectUri={record.id}\n resource={resource}\n source={source}\n reference={reference}\n />\n )}\n \n );\n};\n\nexport default QuickAppendReferenceArrayField;\n","import React, { useState, useCallback } from 'react';\nimport {\n Button,\n useDataProvider,\n useTranslate,\n useRefresh,\n useNotify,\n useGetResourceLabel,\n useShowContext\n} from 'react-admin';\nimport { Dialog, DialogTitle, TextField, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useForm } from 'react-hook-form';\nimport AddIcon from '@mui/icons-material/Add';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport ResultsList from './ResultsList';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingLeft: 8,\n paddingRight: 8,\n paddingTop: 0,\n paddingBottom: 0,\n maxHeight: 210\n }\n}));\n\nconst QuickAppendDialog = ({ open, onClose, subjectUri, source, reference }) => {\n const classes = useStyles();\n const { resource } = useShowContext();\n const [keyword, setKeyword] = useState('');\n const [panel, setPanel] = useState('find');\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const refresh = useRefresh();\n const notify = useNotify();\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n const { register, setValue, handleSubmit } = useForm();\n\n const appendLink = useCallback(\n async objectUri => {\n // Get the freshest data so that the put operation doesn't overwrite anything\n const { data } = await dataProvider.getOne(resource, { id: subjectUri });\n\n await dataProvider.update(resource, {\n id: subjectUri,\n data: {\n ...data,\n [source]: data[source]\n ? Array.isArray(data[source])\n ? [...data[source], objectUri]\n : [data[source], objectUri]\n : objectUri\n },\n previousData: data\n });\n\n refresh();\n\n onClose();\n },\n [dataProvider, subjectUri, resource, source, refresh, onClose]\n );\n\n const create = useCallback(\n async values => {\n const { data } = await dataProvider.create(reference, {\n data: {\n [dataModel.fieldsMapping.title]: values.title\n }\n });\n\n await appendLink(data.id);\n\n notify(`La resource \"${values.title}\" a été créée`, { type: 'success' });\n },\n [dataProvider, dataModel, appendLink, reference, notify]\n );\n\n return (\n \n {panel === 'find' ? (\n <>\n Ajouter une relation\n \n setKeyword(e.target.value)}\n fullWidth\n />\n \n \n {\n setValue('title', keyword);\n setPanel('create');\n }}\n />\n \n \n \n );\n};\n\nexport default QuickAppendDialog;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n useDataProvider,\n useRecordContext,\n useCreatePath,\n useGetResourceLabel,\n useResourceDefinition,\n useTranslate\n} from 'react-admin';\nimport debounce from 'lodash.debounce';\nimport {\n Box,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n Avatar,\n CircularProgress\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddIcon from '@mui/icons-material/Add';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport { useDataServers, useDataModel } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper,\n paddingTop: 0,\n paddingBottom: 0\n },\n primaryText: {\n width: '30%'\n },\n secondaryText: {\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst getServerName = (resourceUri, dataServers) => {\n const server = dataServers && Object.values(dataServers).find(server => resourceUri.startsWith(server.baseUrl));\n return server ? server.name : 'Inconnu';\n};\n\nconst ResultsList = ({ keyword, source, reference, appendLink, switchToCreate }) => {\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [results, setResults] = useState([]);\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const dataServers = useDataServers();\n const record = useRecordContext();\n const createPath = useCreatePath();\n\n const referenceDefinition = useResourceDefinition({ resource: reference });\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n\n if (dataModel && Object.keys(dataModel).length > 0 && !dataModel?.fieldsMapping?.title) {\n throw new Error(`No fieldsMapping.title config found for ${reference} dataModel`);\n }\n\n const search = useMemo(\n () =>\n debounce(keyword => {\n dataProvider\n .getList(reference, {\n pagination: { page: 1, perPage: 100 },\n sort: { field: dataModel?.fieldsMapping?.title, order: 'ASC' },\n filter: { q: keyword, _predicates: [dataModel.fieldsMapping.title], _servers: '@all' }\n })\n .then(({ data }) => {\n const existingLinks = record[source]\n ? Array.isArray(record[source])\n ? record[source]\n : [record[source]]\n : [];\n const newLinks = data.filter(record => !existingLinks.includes(record.id));\n setResults(newLinks);\n setLoaded(true);\n setLoading(false);\n })\n .catch(e => {\n setLoading(false);\n });\n }, 700),\n [dataProvider, dataModel, record, source, reference, setResults, setLoading, setLoaded]\n );\n\n useEffect(() => {\n if (!keyword) {\n return undefined;\n }\n setLoading(true);\n setLoaded(false);\n search(keyword);\n\n return () => search.cancel();\n }, [keyword, search, setLoading]);\n\n if (!keyword) return null;\n\n return (\n \n {loaded &&\n results.map(resource => (\n appendLink(resource.id)}>\n \n {React.createElement(referenceDefinition.icon)}\n \n \n \n \n \n \n \n \n \n \n \n ))}\n {loaded && results.length === 0 && (\n \n \n \n \n \n \n \n \n )}\n {loaded && referenceDefinition.hasCreate && (\n \n \n \n \n \n \n \n \n )}\n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default ResultsList;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Chip, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport FacebookIcon from '@mui/icons-material/Facebook';\nimport GitHubIcon from '@mui/icons-material/GitHub';\nimport TwitterIcon from '@mui/icons-material/Twitter';\nimport InstagramIcon from '@mui/icons-material/Instagram';\nimport YouTubeIcon from '@mui/icons-material/YouTube';\nimport { FiGitlab } from 'react-icons/fi';\n\nconst defaultdomainMapping = {\n 'github.com': {\n label: 'GitHub',\n icon: ,\n color: 'black',\n contrastText: 'white'\n },\n 'gitlab.com': {\n label: 'GitLab',\n icon: ,\n color: 'orange',\n contrastText: 'black'\n },\n 'opencollective.com': {\n label: 'Open Collective',\n icon: ,\n color: 'white',\n contrastText: '#297EFF'\n },\n 'facebook.com': {\n label: 'Facebook',\n icon: ,\n color: '#4267B2',\n contrastText: 'white'\n },\n 'twitter.com': {\n label: 'Twitter',\n icon: ,\n color: '#00ACEE',\n contrastText: 'white'\n },\n 'instagram.com': {\n label: 'Instagram',\n icon: ,\n color: '#8a3ab9',\n contrastText: 'white'\n },\n 'youtube.com': {\n label: 'YouTube',\n icon: ,\n color: '#FF0000',\n contrastText: 'white'\n }\n};\n\nconst useStyles = makeStyles(() => ({\n link: {\n textDecoration: 'unset',\n '& :hover': {\n cursor: 'pointer'\n }\n },\n chip: {\n paddingLeft: 5,\n paddingRight: 5,\n marginRight: 5,\n marginBottom: 5\n },\n label: {\n marginTop: -1\n }\n}));\n\nconst MultiUrlField = ({ source, domainMapping }) => {\n const newDomainMapping = { ...defaultdomainMapping, ...domainMapping };\n const record = useRecordContext();\n const classes = useStyles();\n const urlArray = record[source] ? (Array.isArray(record[source]) ? record[source] : [record[source]]) : [];\n return urlArray.map((url, index) => {\n if (!url.startsWith('http')) url = `https://${url}`;\n const parsedUrl = new URL(url);\n if (!parsedUrl) return null;\n const chip = newDomainMapping[parsedUrl.hostname] || {\n label: 'Site web',\n icon: ,\n color: '#ea',\n contrastText: 'black'\n };\n return (\n \n \n \n );\n });\n};\n\nexport default MultiUrlField;\n","import * as React from 'react';\nimport { cloneElement, Children } from 'react';\nimport { useCreatePath, useListContext, Link, RecordContextProvider } from 'react-admin';\nimport { LinearProgress } from '@mui/material';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst SeparatedListField = props => {\n let { children, link = 'edit', linkType, separator = ',\\u00A0' } = props;\n const { data, isLoading, resource } = useListContext(props);\n const createPath = useCreatePath();\n\n if (linkType !== undefined) {\n console.warn(\"The 'linkType' prop is deprecated and should be named to 'link' in \");\n link = linkType;\n }\n\n if (isLoading) return ;\n\n return (\n <>\n {data.map((record, i) => {\n if (!record.id) return null;\n const resourceLinkPath =\n link !== false &&\n (typeof link === 'function' ? link(record.id) : createPath({ resource, id: record.id, type: link }));\n if (resourceLinkPath) {\n return (\n \n \n {cloneElement(Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n {i < data.length - 1 && separator}\n \n );\n }\n\n return (\n \n {children}\n {i < data.length - 1 && separator}\n \n );\n })}\n \n );\n};\n\nexport default SeparatedListField;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/field-components/src/index.js","packages/field-components/src/AvatarWithLabelField.js","packages/field-components/src/ReferenceArrayField.js","packages/field-components/src/ReferenceField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendReferenceArrayField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendDialog.js","packages/field-components/src/QuickAppendReferenceArrayField/ResultsList.js","packages/field-components/src/MultiUrlField.js","packages/field-components/src/SeparatedListField.js"],"sourcesContent":["export { default as AvatarWithLabelField } from './AvatarWithLabelField';\nexport { default as ReferenceArrayField } from './ReferenceArrayField';\nexport { default as ReferenceField } from './ReferenceField';\nexport { default as QuickAppendReferenceArrayField } from './QuickAppendReferenceArrayField/QuickAppendReferenceArrayField';\nexport { default as MultiUrlField } from './MultiUrlField';\nexport { default as SeparatedListField } from './SeparatedListField';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Box, Avatar, Chip } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LaunchIcon from '@mui/icons-material/Launch';\n\nconst useStyles = makeStyles(theme => ({\n parent: props => ({\n position: 'relative',\n ...props.parent\n }),\n square: {\n width: '100%',\n paddingBottom: '100%',\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n // backgroundColor: theme.palette.primary.main,\n '& svg': {\n width: '55%',\n height: '55%'\n }\n },\n chip: {\n position: 'absolute',\n bottom: -10,\n left: 0,\n right: 0,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: 6,\n paddingRight: 6,\n marginBottom: 10,\n cursor: 'pointer'\n },\n launchIcon: {\n width: 14\n }\n}));\n\nconst handleClick = () => {};\n\nconst AvatarWithLabelField = ({ label, defaultLabel, image, fallback, externalLink, labelColor, classes, ...rest }) => {\n classes = useStyles(classes);\n const record = useRecordContext();\n\n const computedLabel = (typeof label === 'function' ? label(record) : record[label]) || defaultLabel;\n const computedImage = typeof image === 'function' ? image(record) : record[image];\n const computedFallback = typeof fallback === 'function' ? fallback(record) : fallback;\n\n return (\n \n
\n \n
\n {!computedLabel ? null : externalLink ? (\n }\n onDelete={handleClick}\n />\n ) : (\n \n )}\n
\n );\n};\n\nAvatarWithLabelField.defaultProps = {\n labelColor: 'secondary',\n externalLink: false\n};\n\nexport default AvatarWithLabelField;\n","import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceArrayField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceField;\n","import React, { useState, useMemo } from 'react';\nimport { useRecordContext, usePermissions } from 'react-admin';\nimport { ReferenceArrayField } from '../index';\nimport QuickAppendDialog from './QuickAppendDialog';\n\nconst QuickAppendReferenceArrayField = ({ reference, source, resource, children, ...otherProps }) => {\n const record = useRecordContext();\n const [showDialog, setShowDialog] = useState(false);\n const { permissions } = usePermissions(record.id);\n\n const canAppend = useMemo(\n () => !!permissions && permissions.some(p => ['acl:Append', 'acl:Write', 'acl:Control'].includes(p['acl:mode'])),\n [permissions]\n );\n\n return (\n <>\n \n {React.Children.only(children) &&\n React.cloneElement(children, { appendLink: canAppend ? () => setShowDialog(true) : undefined })}\n \n {canAppend && showDialog && (\n setShowDialog(false)}\n subjectUri={record.id}\n resource={resource}\n source={source}\n reference={reference}\n />\n )}\n \n );\n};\n\nexport default QuickAppendReferenceArrayField;\n","import React, { useState, useCallback } from 'react';\nimport {\n Button,\n useDataProvider,\n useTranslate,\n useRefresh,\n useNotify,\n useGetResourceLabel,\n useShowContext\n} from 'react-admin';\nimport { Dialog, DialogTitle, TextField, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useForm } from 'react-hook-form';\nimport AddIcon from '@mui/icons-material/Add';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport ResultsList from './ResultsList';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingLeft: 8,\n paddingRight: 8,\n paddingTop: 0,\n paddingBottom: 0,\n maxHeight: 210\n }\n}));\n\nconst QuickAppendDialog = ({ open, onClose, subjectUri, source, reference }) => {\n const classes = useStyles();\n const { resource } = useShowContext();\n const [keyword, setKeyword] = useState('');\n const [panel, setPanel] = useState('find');\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const refresh = useRefresh();\n const notify = useNotify();\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n const { register, setValue, handleSubmit } = useForm();\n\n const appendLink = useCallback(\n async objectUri => {\n // Get the freshest data so that the put operation doesn't overwrite anything\n const { data } = await dataProvider.getOne(resource, { id: subjectUri });\n\n await dataProvider.update(resource, {\n id: subjectUri,\n data: {\n ...data,\n [source]: data[source]\n ? Array.isArray(data[source])\n ? [...data[source], objectUri]\n : [data[source], objectUri]\n : objectUri\n },\n previousData: data\n });\n\n refresh();\n\n onClose();\n },\n [dataProvider, subjectUri, resource, source, refresh, onClose]\n );\n\n const create = useCallback(\n async values => {\n const { data } = await dataProvider.create(reference, {\n data: {\n [dataModel.fieldsMapping.title]: values.title\n }\n });\n\n await appendLink(data.id);\n\n notify(`La resource \"${values.title}\" a été créée`, { type: 'success' });\n },\n [dataProvider, dataModel, appendLink, reference, notify]\n );\n\n return (\n \n {panel === 'find' ? (\n <>\n Ajouter une relation\n \n setKeyword(e.target.value)}\n fullWidth\n />\n \n \n {\n setValue('title', keyword);\n setPanel('create');\n }}\n />\n \n \n \n );\n};\n\nexport default QuickAppendDialog;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n useDataProvider,\n useRecordContext,\n useCreatePath,\n useGetResourceLabel,\n useResourceDefinition,\n useTranslate\n} from 'react-admin';\nimport debounce from 'lodash.debounce';\nimport {\n Box,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n Avatar,\n CircularProgress\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddIcon from '@mui/icons-material/Add';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport { useDataServers, useDataModel } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper,\n paddingTop: 0,\n paddingBottom: 0\n },\n primaryText: {\n width: '30%'\n },\n secondaryText: {\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst getServerName = (resourceUri, dataServers) => {\n const server = dataServers && Object.values(dataServers).find(server => resourceUri.startsWith(server.baseUrl));\n return server ? server.name : 'Inconnu';\n};\n\nconst ResultsList = ({ keyword, source, reference, appendLink, switchToCreate }) => {\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [results, setResults] = useState([]);\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const dataServers = useDataServers();\n const record = useRecordContext();\n const createPath = useCreatePath();\n\n const referenceDefinition = useResourceDefinition({ resource: reference });\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n\n if (dataModel && Object.keys(dataModel).length > 0 && !dataModel?.fieldsMapping?.title) {\n throw new Error(`No fieldsMapping.title config found for ${reference} dataModel`);\n }\n\n const search = useMemo(\n () =>\n debounce(keyword => {\n dataProvider\n .getList(reference, {\n pagination: { page: 1, perPage: 100 },\n sort: { field: dataModel?.fieldsMapping?.title, order: 'ASC' },\n filter: { q: keyword, _predicates: [dataModel.fieldsMapping.title], _servers: '@all' }\n })\n .then(({ data }) => {\n const existingLinks = record[source]\n ? Array.isArray(record[source])\n ? record[source]\n : [record[source]]\n : [];\n const newLinks = data.filter(record => !existingLinks.includes(record.id));\n setResults(newLinks);\n setLoaded(true);\n setLoading(false);\n })\n .catch(e => {\n setLoading(false);\n });\n }, 700),\n [dataProvider, dataModel, record, source, reference, setResults, setLoading, setLoaded]\n );\n\n useEffect(() => {\n if (!keyword) {\n return undefined;\n }\n setLoading(true);\n setLoaded(false);\n search(keyword);\n\n return () => search.cancel();\n }, [keyword, search, setLoading]);\n\n if (!keyword) return null;\n\n return (\n \n {loaded &&\n results.map(resource => (\n appendLink(resource.id)}>\n \n {React.createElement(referenceDefinition.icon)}\n \n \n \n \n \n \n \n \n \n \n \n ))}\n {loaded && results.length === 0 && (\n \n \n \n \n \n \n \n \n )}\n {loaded && referenceDefinition.hasCreate && (\n \n \n \n \n \n \n \n \n )}\n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default ResultsList;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Chip, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport FacebookIcon from '@mui/icons-material/Facebook';\nimport GitHubIcon from '@mui/icons-material/GitHub';\nimport TwitterIcon from '@mui/icons-material/Twitter';\nimport InstagramIcon from '@mui/icons-material/Instagram';\nimport YouTubeIcon from '@mui/icons-material/YouTube';\nimport { FiGitlab } from 'react-icons/fi';\n\nconst defaultdomainMapping = {\n 'github.com': {\n label: 'GitHub',\n icon: ,\n color: 'black',\n contrastText: 'white'\n },\n 'gitlab.com': {\n label: 'GitLab',\n icon: ,\n color: 'orange',\n contrastText: 'black'\n },\n 'opencollective.com': {\n label: 'Open Collective',\n icon: ,\n color: 'white',\n contrastText: '#297EFF'\n },\n 'facebook.com': {\n label: 'Facebook',\n icon: ,\n color: '#4267B2',\n contrastText: 'white'\n },\n 'twitter.com': {\n label: 'Twitter',\n icon: ,\n color: '#00ACEE',\n contrastText: 'white'\n },\n 'instagram.com': {\n label: 'Instagram',\n icon: ,\n color: '#8a3ab9',\n contrastText: 'white'\n },\n 'youtube.com': {\n label: 'YouTube',\n icon: ,\n color: '#FF0000',\n contrastText: 'white'\n }\n};\n\nconst useStyles = makeStyles(() => ({\n link: {\n textDecoration: 'unset',\n '& :hover': {\n cursor: 'pointer'\n }\n },\n chip: {\n paddingLeft: 5,\n paddingRight: 5,\n marginRight: 5,\n marginBottom: 5\n },\n label: {\n marginTop: -1\n }\n}));\n\nconst MultiUrlField = ({ source, domainMapping }) => {\n const newDomainMapping = { ...defaultdomainMapping, ...domainMapping };\n const record = useRecordContext();\n const classes = useStyles();\n const urlArray = record[source] ? (Array.isArray(record[source]) ? record[source] : [record[source]]) : [];\n return urlArray.map((url, index) => {\n if (!url.startsWith('http')) url = `https://${url}`;\n const parsedUrl = new URL(url);\n if (!parsedUrl) return null;\n const chip = newDomainMapping[parsedUrl.hostname] || {\n label: 'Site web',\n icon: ,\n color: '#ea',\n contrastText: 'black'\n };\n return (\n \n \n \n );\n });\n};\n\nexport default MultiUrlField;\n","import * as React from 'react';\nimport { cloneElement, Children } from 'react';\nimport { useCreatePath, useListContext, Link, RecordContextProvider } from 'react-admin';\nimport { LinearProgress } from '@mui/material';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst SeparatedListField = props => {\n let { children, link = 'edit', linkType, separator = ',\\u00A0' } = props;\n const { data, isLoading, resource } = useListContext(props);\n const createPath = useCreatePath();\n\n if (linkType !== undefined) {\n console.warn(\"The 'linkType' prop is deprecated and should be named to 'link' in \");\n link = linkType;\n }\n\n if (isLoading) return ;\n\n return (\n <>\n {data.map((record, i) => {\n if (!record.id) return null;\n const resourceLinkPath =\n link !== false &&\n (typeof link === 'function' ? link(record.id) : createPath({ resource, id: record.id, type: link }));\n if (resourceLinkPath) {\n return (\n \n \n {cloneElement(Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n {i < data.length - 1 && separator}\n \n );\n }\n\n return (\n \n {children}\n {i < data.length - 1 && separator}\n \n );\n })}\n \n );\n};\n\nexport default SeparatedListField;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/field-components/dist/index.es.js b/src/frontend/packages/field-components/dist/index.es.js index 438b4e6f9..70f69b1f1 100644 --- a/src/frontend/packages/field-components/dist/index.es.js +++ b/src/frontend/packages/field-components/dist/index.es.js @@ -409,7 +409,7 @@ const $3d5bffcd1289119f$var$QuickAppendDialog = ({ open: open, onClose: onClose, } }); await appendLink(data.id); - notify(`La resource "${values.title}" a été créée`, { + notify(`La resource "${values.title}" a \xe9t\xe9 cr\xe9\xe9e`, { type: "success" }); }, [ @@ -433,7 +433,7 @@ const $3d5bffcd1289119f$var$QuickAppendDialog = ({ open: open, onClose: onClose, className: classes.addForm, children: /*#__PURE__*/ (0, $iSi6A$jsx)((0, $iSi6A$TextField), { autoFocus: true, - label: `Rechercher ou créer des ${getResourceLabel(reference, 2).toLowerCase()}`, + label: `Rechercher ou cr\xe9er des ${getResourceLabel(reference, 2).toLowerCase()}`, variant: "filled", margin: "dense", value: keyword, diff --git a/src/frontend/packages/field-components/dist/index.es.js.map b/src/frontend/packages/field-components/dist/index.es.js.map index 8b2c84f75..fd9826792 100644 --- a/src/frontend/packages/field-components/dist/index.es.js.map +++ b/src/frontend/packages/field-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/field-components/src/index.js","packages/field-components/src/AvatarWithLabelField.js","packages/field-components/src/ReferenceArrayField.js","packages/field-components/src/ReferenceField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendReferenceArrayField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendDialog.js","packages/field-components/src/QuickAppendReferenceArrayField/ResultsList.js","packages/field-components/src/MultiUrlField.js","packages/field-components/src/SeparatedListField.js"],"sourcesContent":["export { default as AvatarWithLabelField } from './AvatarWithLabelField';\nexport { default as ReferenceArrayField } from './ReferenceArrayField';\nexport { default as ReferenceField } from './ReferenceField';\nexport { default as QuickAppendReferenceArrayField } from './QuickAppendReferenceArrayField/QuickAppendReferenceArrayField';\nexport { default as MultiUrlField } from './MultiUrlField';\nexport { default as SeparatedListField } from './SeparatedListField';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Box, Avatar, Chip } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LaunchIcon from '@mui/icons-material/Launch';\n\nconst useStyles = makeStyles(theme => ({\n parent: props => ({\n position: 'relative',\n ...props.parent\n }),\n square: {\n width: '100%',\n paddingBottom: '100%',\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n // backgroundColor: theme.palette.primary.main,\n '& svg': {\n width: '55%',\n height: '55%'\n }\n },\n chip: {\n position: 'absolute',\n bottom: -10,\n left: 0,\n right: 0,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: 6,\n paddingRight: 6,\n marginBottom: 10,\n cursor: 'pointer'\n },\n launchIcon: {\n width: 14\n }\n}));\n\nconst handleClick = () => {};\n\nconst AvatarWithLabelField = ({ label, defaultLabel, image, fallback, externalLink, labelColor, classes, ...rest }) => {\n classes = useStyles(classes);\n const record = useRecordContext();\n\n const computedLabel = (typeof label === 'function' ? label(record) : record[label]) || defaultLabel;\n const computedImage = typeof image === 'function' ? image(record) : record[image];\n const computedFallback = typeof fallback === 'function' ? fallback(record) : fallback;\n\n return (\n \n
\n \n
\n {!computedLabel ? null : externalLink ? (\n }\n onDelete={handleClick}\n />\n ) : (\n \n )}\n
\n );\n};\n\nAvatarWithLabelField.defaultProps = {\n labelColor: 'secondary',\n externalLink: false\n};\n\nexport default AvatarWithLabelField;\n","import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceArrayField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceField;\n","import React, { useState, useMemo } from 'react';\nimport { useRecordContext, usePermissions } from 'react-admin';\nimport { ReferenceArrayField } from '../index';\nimport QuickAppendDialog from './QuickAppendDialog';\n\nconst QuickAppendReferenceArrayField = ({ reference, source, resource, children, ...otherProps }) => {\n const record = useRecordContext();\n const [showDialog, setShowDialog] = useState(false);\n const { permissions } = usePermissions(record.id);\n\n const canAppend = useMemo(\n () => !!permissions && permissions.some(p => ['acl:Append', 'acl:Write', 'acl:Control'].includes(p['acl:mode'])),\n [permissions]\n );\n\n return (\n <>\n \n {React.Children.only(children) &&\n React.cloneElement(children, { appendLink: canAppend ? () => setShowDialog(true) : undefined })}\n \n {canAppend && showDialog && (\n setShowDialog(false)}\n subjectUri={record.id}\n resource={resource}\n source={source}\n reference={reference}\n />\n )}\n \n );\n};\n\nexport default QuickAppendReferenceArrayField;\n","import React, { useState, useCallback } from 'react';\nimport {\n Button,\n useDataProvider,\n useTranslate,\n useRefresh,\n useNotify,\n useGetResourceLabel,\n useShowContext\n} from 'react-admin';\nimport { Dialog, DialogTitle, TextField, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useForm } from 'react-hook-form';\nimport AddIcon from '@mui/icons-material/Add';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport ResultsList from './ResultsList';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingLeft: 8,\n paddingRight: 8,\n paddingTop: 0,\n paddingBottom: 0,\n maxHeight: 210\n }\n}));\n\nconst QuickAppendDialog = ({ open, onClose, subjectUri, source, reference }) => {\n const classes = useStyles();\n const { resource } = useShowContext();\n const [keyword, setKeyword] = useState('');\n const [panel, setPanel] = useState('find');\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const refresh = useRefresh();\n const notify = useNotify();\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n const { register, setValue, handleSubmit } = useForm();\n\n const appendLink = useCallback(\n async objectUri => {\n // Get the freshest data so that the put operation doesn't overwrite anything\n const { data } = await dataProvider.getOne(resource, { id: subjectUri });\n\n await dataProvider.update(resource, {\n id: subjectUri,\n data: {\n ...data,\n [source]: data[source]\n ? Array.isArray(data[source])\n ? [...data[source], objectUri]\n : [data[source], objectUri]\n : objectUri\n },\n previousData: data\n });\n\n refresh();\n\n onClose();\n },\n [dataProvider, subjectUri, resource, source, refresh, onClose]\n );\n\n const create = useCallback(\n async values => {\n const { data } = await dataProvider.create(reference, {\n data: {\n [dataModel.fieldsMapping.title]: values.title\n }\n });\n\n await appendLink(data.id);\n\n notify(`La resource \"${values.title}\" a été créée`, { type: 'success' });\n },\n [dataProvider, dataModel, appendLink, reference, notify]\n );\n\n return (\n \n {panel === 'find' ? (\n <>\n Ajouter une relation\n \n setKeyword(e.target.value)}\n fullWidth\n />\n \n \n {\n setValue('title', keyword);\n setPanel('create');\n }}\n />\n \n \n \n );\n};\n\nexport default QuickAppendDialog;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n useDataProvider,\n useRecordContext,\n useCreatePath,\n useGetResourceLabel,\n useResourceDefinition,\n useTranslate\n} from 'react-admin';\nimport debounce from 'lodash.debounce';\nimport {\n Box,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n Avatar,\n CircularProgress\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddIcon from '@mui/icons-material/Add';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport { useDataServers, useDataModel } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper,\n paddingTop: 0,\n paddingBottom: 0\n },\n primaryText: {\n width: '30%'\n },\n secondaryText: {\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst getServerName = (resourceUri, dataServers) => {\n const server = dataServers && Object.values(dataServers).find(server => resourceUri.startsWith(server.baseUrl));\n return server ? server.name : 'Inconnu';\n};\n\nconst ResultsList = ({ keyword, source, reference, appendLink, switchToCreate }) => {\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [results, setResults] = useState([]);\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const dataServers = useDataServers();\n const record = useRecordContext();\n const createPath = useCreatePath();\n\n const referenceDefinition = useResourceDefinition({ resource: reference });\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n\n if (dataModel && Object.keys(dataModel).length > 0 && !dataModel?.fieldsMapping?.title) {\n throw new Error(`No fieldsMapping.title config found for ${reference} dataModel`);\n }\n\n const search = useMemo(\n () =>\n debounce(keyword => {\n dataProvider\n .getList(reference, {\n pagination: { page: 1, perPage: 100 },\n sort: { field: dataModel?.fieldsMapping?.title, order: 'ASC' },\n filter: { q: keyword, _predicates: [dataModel.fieldsMapping.title], _servers: '@all' }\n })\n .then(({ data }) => {\n const existingLinks = record[source]\n ? Array.isArray(record[source])\n ? record[source]\n : [record[source]]\n : [];\n const newLinks = data.filter(record => !existingLinks.includes(record.id));\n setResults(newLinks);\n setLoaded(true);\n setLoading(false);\n })\n .catch(e => {\n setLoading(false);\n });\n }, 700),\n [dataProvider, dataModel, record, source, reference, setResults, setLoading, setLoaded]\n );\n\n useEffect(() => {\n if (!keyword) {\n return undefined;\n }\n setLoading(true);\n setLoaded(false);\n search(keyword);\n\n return () => search.cancel();\n }, [keyword, search, setLoading]);\n\n if (!keyword) return null;\n\n return (\n \n {loaded &&\n results.map(resource => (\n appendLink(resource.id)}>\n \n {React.createElement(referenceDefinition.icon)}\n \n \n \n \n \n \n \n \n \n \n \n ))}\n {loaded && results.length === 0 && (\n \n \n \n \n \n \n \n \n )}\n {loaded && referenceDefinition.hasCreate && (\n \n \n \n \n \n \n \n \n )}\n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default ResultsList;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Chip, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport FacebookIcon from '@mui/icons-material/Facebook';\nimport GitHubIcon from '@mui/icons-material/GitHub';\nimport TwitterIcon from '@mui/icons-material/Twitter';\nimport InstagramIcon from '@mui/icons-material/Instagram';\nimport YouTubeIcon from '@mui/icons-material/YouTube';\nimport { FiGitlab } from 'react-icons/fi';\n\nconst defaultdomainMapping = {\n 'github.com': {\n label: 'GitHub',\n icon: ,\n color: 'black',\n contrastText: 'white'\n },\n 'gitlab.com': {\n label: 'GitLab',\n icon: ,\n color: 'orange',\n contrastText: 'black'\n },\n 'opencollective.com': {\n label: 'Open Collective',\n icon: ,\n color: 'white',\n contrastText: '#297EFF'\n },\n 'facebook.com': {\n label: 'Facebook',\n icon: ,\n color: '#4267B2',\n contrastText: 'white'\n },\n 'twitter.com': {\n label: 'Twitter',\n icon: ,\n color: '#00ACEE',\n contrastText: 'white'\n },\n 'instagram.com': {\n label: 'Instagram',\n icon: ,\n color: '#8a3ab9',\n contrastText: 'white'\n },\n 'youtube.com': {\n label: 'YouTube',\n icon: ,\n color: '#FF0000',\n contrastText: 'white'\n }\n};\n\nconst useStyles = makeStyles(() => ({\n link: {\n textDecoration: 'unset',\n '& :hover': {\n cursor: 'pointer'\n }\n },\n chip: {\n paddingLeft: 5,\n paddingRight: 5,\n marginRight: 5,\n marginBottom: 5\n },\n label: {\n marginTop: -1\n }\n}));\n\nconst MultiUrlField = ({ source, domainMapping }) => {\n const newDomainMapping = { ...defaultdomainMapping, ...domainMapping };\n const record = useRecordContext();\n const classes = useStyles();\n const urlArray = record[source] ? (Array.isArray(record[source]) ? record[source] : [record[source]]) : [];\n return urlArray.map((url, index) => {\n if (!url.startsWith('http')) url = `https://${url}`;\n const parsedUrl = new URL(url);\n if (!parsedUrl) return null;\n const chip = newDomainMapping[parsedUrl.hostname] || {\n label: 'Site web',\n icon: ,\n color: '#ea',\n contrastText: 'black'\n };\n return (\n \n \n \n );\n });\n};\n\nexport default MultiUrlField;\n","import * as React from 'react';\nimport { cloneElement, Children } from 'react';\nimport { useCreatePath, useListContext, Link, RecordContextProvider } from 'react-admin';\nimport { LinearProgress } from '@mui/material';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst SeparatedListField = props => {\n let { children, link = 'edit', linkType, separator = ',\\u00A0' } = props;\n const { data, isLoading, resource } = useListContext(props);\n const createPath = useCreatePath();\n\n if (linkType !== undefined) {\n console.warn(\"The 'linkType' prop is deprecated and should be named to 'link' in \");\n link = linkType;\n }\n\n if (isLoading) return ;\n\n return (\n <>\n {data.map((record, i) => {\n if (!record.id) return null;\n const resourceLinkPath =\n link !== false &&\n (typeof link === 'function' ? link(record.id) : createPath({ resource, id: record.id, type: link }));\n if (resourceLinkPath) {\n return (\n \n \n {cloneElement(Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n {i < data.length - 1 && separator}\n \n );\n }\n\n return (\n \n {children}\n {i < data.length - 1 && separator}\n \n );\n })}\n \n );\n};\n\nexport default SeparatedListField;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/field-components/src/index.js","packages/field-components/src/AvatarWithLabelField.js","packages/field-components/src/ReferenceArrayField.js","packages/field-components/src/ReferenceField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendReferenceArrayField.js","packages/field-components/src/QuickAppendReferenceArrayField/QuickAppendDialog.js","packages/field-components/src/QuickAppendReferenceArrayField/ResultsList.js","packages/field-components/src/MultiUrlField.js","packages/field-components/src/SeparatedListField.js"],"sourcesContent":["export { default as AvatarWithLabelField } from './AvatarWithLabelField';\nexport { default as ReferenceArrayField } from './ReferenceArrayField';\nexport { default as ReferenceField } from './ReferenceField';\nexport { default as QuickAppendReferenceArrayField } from './QuickAppendReferenceArrayField/QuickAppendReferenceArrayField';\nexport { default as MultiUrlField } from './MultiUrlField';\nexport { default as SeparatedListField } from './SeparatedListField';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Box, Avatar, Chip } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LaunchIcon from '@mui/icons-material/Launch';\n\nconst useStyles = makeStyles(theme => ({\n parent: props => ({\n position: 'relative',\n ...props.parent\n }),\n square: {\n width: '100%',\n paddingBottom: '100%',\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n // backgroundColor: theme.palette.primary.main,\n '& svg': {\n width: '55%',\n height: '55%'\n }\n },\n chip: {\n position: 'absolute',\n bottom: -10,\n left: 0,\n right: 0,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: 6,\n paddingRight: 6,\n marginBottom: 10,\n cursor: 'pointer'\n },\n launchIcon: {\n width: 14\n }\n}));\n\nconst handleClick = () => {};\n\nconst AvatarWithLabelField = ({ label, defaultLabel, image, fallback, externalLink, labelColor, classes, ...rest }) => {\n classes = useStyles(classes);\n const record = useRecordContext();\n\n const computedLabel = (typeof label === 'function' ? label(record) : record[label]) || defaultLabel;\n const computedImage = typeof image === 'function' ? image(record) : record[image];\n const computedFallback = typeof fallback === 'function' ? fallback(record) : fallback;\n\n return (\n \n
\n \n
\n {!computedLabel ? null : externalLink ? (\n }\n onDelete={handleClick}\n />\n ) : (\n \n )}\n
\n );\n};\n\nAvatarWithLabelField.defaultProps = {\n labelColor: 'secondary',\n externalLink: false\n};\n\nexport default AvatarWithLabelField;\n","import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceArrayField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField, useRecordContext, RecordContextProvider } from 'react-admin';\n\nconst ReferenceField = ({ source, ...otherProps }) => {\n const record = useRecordContext();\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return (\n \n \n \n );\n};\n\nexport default ReferenceField;\n","import React, { useState, useMemo } from 'react';\nimport { useRecordContext, usePermissions } from 'react-admin';\nimport { ReferenceArrayField } from '../index';\nimport QuickAppendDialog from './QuickAppendDialog';\n\nconst QuickAppendReferenceArrayField = ({ reference, source, resource, children, ...otherProps }) => {\n const record = useRecordContext();\n const [showDialog, setShowDialog] = useState(false);\n const { permissions } = usePermissions(record.id);\n\n const canAppend = useMemo(\n () => !!permissions && permissions.some(p => ['acl:Append', 'acl:Write', 'acl:Control'].includes(p['acl:mode'])),\n [permissions]\n );\n\n return (\n <>\n \n {React.Children.only(children) &&\n React.cloneElement(children, { appendLink: canAppend ? () => setShowDialog(true) : undefined })}\n \n {canAppend && showDialog && (\n setShowDialog(false)}\n subjectUri={record.id}\n resource={resource}\n source={source}\n reference={reference}\n />\n )}\n \n );\n};\n\nexport default QuickAppendReferenceArrayField;\n","import React, { useState, useCallback } from 'react';\nimport {\n Button,\n useDataProvider,\n useTranslate,\n useRefresh,\n useNotify,\n useGetResourceLabel,\n useShowContext\n} from 'react-admin';\nimport { Dialog, DialogTitle, TextField, DialogContent, DialogActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { useForm } from 'react-hook-form';\nimport AddIcon from '@mui/icons-material/Add';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport ResultsList from './ResultsList';\n\nconst useStyles = makeStyles(() => ({\n title: {\n paddingBottom: 8\n },\n actions: {\n padding: 15\n },\n addForm: {\n paddingTop: 0\n },\n listForm: {\n paddingLeft: 8,\n paddingRight: 8,\n paddingTop: 0,\n paddingBottom: 0,\n maxHeight: 210\n }\n}));\n\nconst QuickAppendDialog = ({ open, onClose, subjectUri, source, reference }) => {\n const classes = useStyles();\n const { resource } = useShowContext();\n const [keyword, setKeyword] = useState('');\n const [panel, setPanel] = useState('find');\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n const refresh = useRefresh();\n const notify = useNotify();\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n const { register, setValue, handleSubmit } = useForm();\n\n const appendLink = useCallback(\n async objectUri => {\n // Get the freshest data so that the put operation doesn't overwrite anything\n const { data } = await dataProvider.getOne(resource, { id: subjectUri });\n\n await dataProvider.update(resource, {\n id: subjectUri,\n data: {\n ...data,\n [source]: data[source]\n ? Array.isArray(data[source])\n ? [...data[source], objectUri]\n : [data[source], objectUri]\n : objectUri\n },\n previousData: data\n });\n\n refresh();\n\n onClose();\n },\n [dataProvider, subjectUri, resource, source, refresh, onClose]\n );\n\n const create = useCallback(\n async values => {\n const { data } = await dataProvider.create(reference, {\n data: {\n [dataModel.fieldsMapping.title]: values.title\n }\n });\n\n await appendLink(data.id);\n\n notify(`La resource \"${values.title}\" a été créée`, { type: 'success' });\n },\n [dataProvider, dataModel, appendLink, reference, notify]\n );\n\n return (\n \n {panel === 'find' ? (\n <>\n Ajouter une relation\n \n setKeyword(e.target.value)}\n fullWidth\n />\n \n \n {\n setValue('title', keyword);\n setPanel('create');\n }}\n />\n \n \n \n );\n};\n\nexport default QuickAppendDialog;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n useDataProvider,\n useRecordContext,\n useCreatePath,\n useGetResourceLabel,\n useResourceDefinition,\n useTranslate\n} from 'react-admin';\nimport debounce from 'lodash.debounce';\nimport {\n Box,\n IconButton,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n ListItemSecondaryAction,\n Avatar,\n CircularProgress\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddIcon from '@mui/icons-material/Add';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport { useDataServers, useDataModel } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: '100%',\n maxWidth: '100%',\n backgroundColor: theme.palette.background.paper,\n paddingTop: 0,\n paddingBottom: 0\n },\n primaryText: {\n width: '30%'\n },\n secondaryText: {\n fontStyle: 'italic',\n color: 'grey'\n }\n}));\n\nconst getServerName = (resourceUri, dataServers) => {\n const server = dataServers && Object.values(dataServers).find(server => resourceUri.startsWith(server.baseUrl));\n return server ? server.name : 'Inconnu';\n};\n\nconst ResultsList = ({ keyword, source, reference, appendLink, switchToCreate }) => {\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [results, setResults] = useState([]);\n const translate = useTranslate();\n const dataProvider = useDataProvider();\n const dataServers = useDataServers();\n const record = useRecordContext();\n const createPath = useCreatePath();\n\n const referenceDefinition = useResourceDefinition({ resource: reference });\n const getResourceLabel = useGetResourceLabel();\n const dataModel = useDataModel(reference);\n\n if (dataModel && Object.keys(dataModel).length > 0 && !dataModel?.fieldsMapping?.title) {\n throw new Error(`No fieldsMapping.title config found for ${reference} dataModel`);\n }\n\n const search = useMemo(\n () =>\n debounce(keyword => {\n dataProvider\n .getList(reference, {\n pagination: { page: 1, perPage: 100 },\n sort: { field: dataModel?.fieldsMapping?.title, order: 'ASC' },\n filter: { q: keyword, _predicates: [dataModel.fieldsMapping.title], _servers: '@all' }\n })\n .then(({ data }) => {\n const existingLinks = record[source]\n ? Array.isArray(record[source])\n ? record[source]\n : [record[source]]\n : [];\n const newLinks = data.filter(record => !existingLinks.includes(record.id));\n setResults(newLinks);\n setLoaded(true);\n setLoading(false);\n })\n .catch(e => {\n setLoading(false);\n });\n }, 700),\n [dataProvider, dataModel, record, source, reference, setResults, setLoading, setLoaded]\n );\n\n useEffect(() => {\n if (!keyword) {\n return undefined;\n }\n setLoading(true);\n setLoaded(false);\n search(keyword);\n\n return () => search.cancel();\n }, [keyword, search, setLoading]);\n\n if (!keyword) return null;\n\n return (\n \n {loaded &&\n results.map(resource => (\n appendLink(resource.id)}>\n \n {React.createElement(referenceDefinition.icon)}\n \n \n \n \n \n \n \n \n \n \n \n ))}\n {loaded && results.length === 0 && (\n \n \n \n \n \n \n \n \n )}\n {loaded && referenceDefinition.hasCreate && (\n \n \n \n \n \n \n \n \n )}\n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default ResultsList;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { Chip, Avatar } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport FacebookIcon from '@mui/icons-material/Facebook';\nimport GitHubIcon from '@mui/icons-material/GitHub';\nimport TwitterIcon from '@mui/icons-material/Twitter';\nimport InstagramIcon from '@mui/icons-material/Instagram';\nimport YouTubeIcon from '@mui/icons-material/YouTube';\nimport { FiGitlab } from 'react-icons/fi';\n\nconst defaultdomainMapping = {\n 'github.com': {\n label: 'GitHub',\n icon: ,\n color: 'black',\n contrastText: 'white'\n },\n 'gitlab.com': {\n label: 'GitLab',\n icon: ,\n color: 'orange',\n contrastText: 'black'\n },\n 'opencollective.com': {\n label: 'Open Collective',\n icon: ,\n color: 'white',\n contrastText: '#297EFF'\n },\n 'facebook.com': {\n label: 'Facebook',\n icon: ,\n color: '#4267B2',\n contrastText: 'white'\n },\n 'twitter.com': {\n label: 'Twitter',\n icon: ,\n color: '#00ACEE',\n contrastText: 'white'\n },\n 'instagram.com': {\n label: 'Instagram',\n icon: ,\n color: '#8a3ab9',\n contrastText: 'white'\n },\n 'youtube.com': {\n label: 'YouTube',\n icon: ,\n color: '#FF0000',\n contrastText: 'white'\n }\n};\n\nconst useStyles = makeStyles(() => ({\n link: {\n textDecoration: 'unset',\n '& :hover': {\n cursor: 'pointer'\n }\n },\n chip: {\n paddingLeft: 5,\n paddingRight: 5,\n marginRight: 5,\n marginBottom: 5\n },\n label: {\n marginTop: -1\n }\n}));\n\nconst MultiUrlField = ({ source, domainMapping }) => {\n const newDomainMapping = { ...defaultdomainMapping, ...domainMapping };\n const record = useRecordContext();\n const classes = useStyles();\n const urlArray = record[source] ? (Array.isArray(record[source]) ? record[source] : [record[source]]) : [];\n return urlArray.map((url, index) => {\n if (!url.startsWith('http')) url = `https://${url}`;\n const parsedUrl = new URL(url);\n if (!parsedUrl) return null;\n const chip = newDomainMapping[parsedUrl.hostname] || {\n label: 'Site web',\n icon: ,\n color: '#ea',\n contrastText: 'black'\n };\n return (\n \n \n \n );\n });\n};\n\nexport default MultiUrlField;\n","import * as React from 'react';\nimport { cloneElement, Children } from 'react';\nimport { useCreatePath, useListContext, Link, RecordContextProvider } from 'react-admin';\nimport { LinearProgress } from '@mui/material';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst SeparatedListField = props => {\n let { children, link = 'edit', linkType, separator = ',\\u00A0' } = props;\n const { data, isLoading, resource } = useListContext(props);\n const createPath = useCreatePath();\n\n if (linkType !== undefined) {\n console.warn(\"The 'linkType' prop is deprecated and should be named to 'link' in \");\n link = linkType;\n }\n\n if (isLoading) return ;\n\n return (\n <>\n {data.map((record, i) => {\n if (!record.id) return null;\n const resourceLinkPath =\n link !== false &&\n (typeof link === 'function' ? link(record.id) : createPath({ resource, id: record.id, type: link }));\n if (resourceLinkPath) {\n return (\n \n \n {cloneElement(Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n {i < data.length - 1 && separator}\n \n );\n }\n\n return (\n \n {children}\n {i < data.length - 1 && separator}\n \n );\n })}\n \n );\n};\n\nexport default SeparatedListField;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/geo-components/dist/index.cjs.js b/src/frontend/packages/geo-components/dist/index.cjs.js index d36e793e7..908452083 100644 --- a/src/frontend/packages/geo-components/dist/index.cjs.js +++ b/src/frontend/packages/geo-components/dist/index.cjs.js @@ -18,9 +18,11 @@ var $02DsL$reactleafletcore = require("@react-leaflet/core"); require("leaflet.markercluster"); var $02DsL$muiiconsmaterialClear = require("@mui/icons-material/Clear"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } diff --git a/src/frontend/packages/geo-components/dist/index.cjs.js.map b/src/frontend/packages/geo-components/dist/index.cjs.js.map index 9ea0a655b..533b0db67 100644 --- a/src/frontend/packages/geo-components/dist/index.cjs.js.map +++ b/src/frontend/packages/geo-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/geo-components/src/index.js","packages/geo-components/src/extractContext.js","packages/geo-components/src/LocationInput.js","packages/geo-components/src/MapList/MapList.js","packages/geo-components/src/MapList/MarkerClusterGroup.js","packages/geo-components/src/MapList/DefaultPopupContent.js","packages/geo-components/src/MapList/QueryStringUpdater.js","packages/geo-components/src/MapList/MobileDrawer.js","packages/geo-components/src/MapField/MapField.js","packages/geo-components/src/MapField/ChangeView.js"],"sourcesContent":["export { default as extractContext } from './extractContext';\nexport { default as LocationInput } from './LocationInput';\nexport { default as MapList } from './MapList/MapList';\nexport { default as MapField } from './MapField/MapField';\n","const extractContext = (context, key) => {\n const property = context.find(property => property.id.startsWith(`${key}.`));\n if (property) return property.text;\n};\n\nexport default extractContext;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport {\n FieldTitle,\n InputHelperText,\n useInput,\n useTranslate,\n useLocale,\n useRecordContext,\n useResourceContext,\n useTheme\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LocationOnIcon from '@mui/icons-material/LocationOn';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\nimport { styled } from '@mui/system';\n\nconst StyledLocationOnIcon = styled(LocationOnIcon)(({ theme }) => ({\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (option.place_name) {\n return option.place_name;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst LocationInput = ({ mapboxConfig, source, label, parse, optionText, helperText, ...rest }) => {\n if (!mapboxConfig) {\n throw new Error('@semapps/geo-components : No mapbox configuration');\n }\n if (!mapboxConfig.access_token) {\n throw new Error('@semapps/geo-components : No access token in mapbox configuration');\n }\n\n const record = useRecordContext();\n const resource = useResourceContext();\n const locale = useLocale();\n const translate = useTranslate();\n\n const [keyword, setKeyword] = useState(''); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur /* , onFocus */ },\n isRequired,\n fieldState: { error, /* submitError, */ isTouched }\n } = useInput({ resource, source, ...rest });\n\n const fetchMapbox = useMemo(\n () =>\n throttle((keyword, callback) => {\n const fetchUrl = new URL(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json`);\n\n // Use locale as default language\n if (!mapboxConfig.language) mapboxConfig.language = locale;\n\n // All options available at https://docs.mapbox.com/api/search/geocoding/#forward-geocoding\n Object.entries(mapboxConfig).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value = value.join(',');\n } else if (typeof value === 'boolean') {\n value = value ? 'true' : 'false';\n }\n fetchUrl.searchParams.set(key, value);\n });\n\n fetch(fetchUrl.toString())\n .then(res => res.json())\n .then(json => callback(json));\n }, 200),\n [mapboxConfig, locale]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty or if it is the same as the current value\n if (!keyword || keyword === selectOptionText(value, optionText)) {\n return undefined;\n }\n fetchMapbox(keyword, results => setOptions(results.features));\n }, [value, keyword, fetchMapbox]);\n\n return (\n x}\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n } /* ,\n onFocus: e => {\n onFocus(e);\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n } */\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!((isTouched && error) /* || submitError */)}\n helperText={\n \n }\n {...rest}\n />\n );\n }}\n renderOption={(props, option, state) => {\n const matches = highlightMatch(option.text, keyword);\n const parts = highlightParse(option.text, matches);\n\n return (\n
  • \n \n \n \n \n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.place_name}\n \n \n \n
  • \n );\n }}\n {...rest}\n />\n );\n};\n\nLocationInput.defaultProps = {\n variant: 'outlined',\n size: 'small'\n};\n\nexport default LocationInput;\n","import React, { useState } from 'react';\nimport { useListContext, RecordContextProvider } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { useMediaQuery, Box } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport 'leaflet-defaulticon-compatibility';\nimport { MapContainer, TileLayer, Marker, Popup, Polyline } from 'react-leaflet';\nimport MarkerClusterGroup from './MarkerClusterGroup';\nimport DefaultPopupContent from './DefaultPopupContent';\nimport QueryStringUpdater from './QueryStringUpdater';\nimport MobileDrawer from './MobileDrawer';\n\nconst useStyles = makeStyles(() => ({\n isLoading: {\n zIndex: 1000,\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 }\n}));\n\nconst MapList = ({\n latitude,\n longitude,\n label,\n description,\n popupContent,\n height,\n center,\n zoom,\n groupClusters,\n boundToMarkers,\n connectMarkers,\n ...otherProps\n}) => {\n const { data, isLoading } = useListContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n const [drawerRecord, setDrawerRecord] = useState(null);\n const classes = useStyles();\n\n // Get the zoom and center from query string, if available\n const location = useLocation();\n const query = new URLSearchParams(location.search);\n center = query.has('lat') && query.has('lng') ? [query.get('lat'), query.get('lng')] : center;\n zoom = query.has('zoom') ? query.get('zoom') : zoom;\n\n let previousRecord;\n\n const records = isLoading\n ? []\n : data\n .map(record => ({\n ...record,\n latitude: latitude && latitude(record),\n longitude: longitude && longitude(record),\n label: label && label(record),\n description: description && description(record)\n }))\n .filter(record => record.latitude && record.longitude);\n\n const bounds =\n boundToMarkers && records.length > 0 ? records.map(record => [record.latitude, record.longitude]) : undefined;\n\n // Do not display anything if the bounds are not ready, otherwise the MapContainer will not be initialized correctly\n if (boundToMarkers && !bounds) return null;\n\n const markers = records.map((record, i) => {\n const marker = (\n \n setDrawerRecord(record)\n }\n : undefined\n }\n >\n {!xs && (\n \n {React.createElement(popupContent)}\n \n )}\n \n {connectMarkers && previousRecord && (\n \n )}\n \n );\n\n // Save record so that we can trace lines\n previousRecord = record;\n\n return marker;\n });\n\n return (\n \n \n {isLoading && (\n \n \n \n )}\n {groupClusters ? {markers} : markers}\n \n \n setDrawerRecord(null)} />\n \n \n );\n};\n\nMapList.defaultProps = {\n height: 700,\n center: [47, 2.213749],\n zoom: 6,\n groupClusters: true,\n connectMarkers: false,\n scrollWheelZoom: false,\n popupContent: DefaultPopupContent\n};\n\nexport default MapList;\n","import L from 'leaflet';\nimport { createPathComponent } from '@react-leaflet/core';\nimport 'leaflet.markercluster';\n\n// Taken from https://github.com/changey/react-leaflet-markercluster/blob/60992857087c181ada1e8e6659a6666a13c1f868/src/react-leaflet-markercluster.js\nfunction createMarkerCluster({ children: _c, ...props }, context) {\n const clusterProps = {};\n const clusterEvents = {};\n // Splitting props and events to different objects\n Object.entries(props).forEach(([propName, prop]) =>\n propName.startsWith('on') ? (clusterEvents[propName] = prop) : (clusterProps[propName] = prop)\n );\n\n const instance = new L.MarkerClusterGroup(clusterProps);\n\n // Initializing event listeners\n Object.entries(clusterEvents).forEach(([eventAsProp, callback]) => {\n const clusterEvent = `cluster${eventAsProp.substring(2).toLowerCase()}`;\n instance.on(clusterEvent, callback);\n });\n return {\n instance,\n context: {\n ...context,\n layerContainer: instance\n }\n };\n}\n\nconst MarkerClusterGroup = createPathComponent(createMarkerCluster);\n\nexport default MarkerClusterGroup;\n","import React from 'react';\nimport { ShowButton, EditButton, useResourceDefinition, useRecordContext } from 'react-admin';\nimport { Typography } from '@mui/material';\n\nconst DefaultPopupContent = () => {\n const record = useRecordContext();\n const resourceDefinition = useResourceDefinition({});\n if (!record) return null;\n return (\n <>\n {record.label && {record.label}}\n {record.description && (\n \n {record.description.length > 150 ? `${record.description.substring(0, 150)}...` : record.description}\n \n )}\n {resourceDefinition.hasShow && }\n {resourceDefinition.hasEdit && }\n \n );\n};\n\nexport default DefaultPopupContent;\n","import { useMapEvents } from 'react-leaflet';\nimport { useSearchParams } from 'react-router-dom';\n\n// Keep the zoom and center in query string, so that when we navigate back to the page, it stays focused on the same area\nconst QueryStringUpdater = () => {\n const [searchParams, setSearchParams] = useSearchParams();\n\n useMapEvents({\n moveend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n lat: test.target.getCenter().lat,\n lng: test.target.getCenter().lng,\n zoom: test.target.getZoom()\n }));\n },\n zoomend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n zoom: test.target.getZoom()\n }));\n }\n });\n\n return null;\n};\n\nexport default QueryStringUpdater;\n","import React, { useEffect } from 'react';\nimport { useMap } from 'react-leaflet';\nimport { useRecordContext } from 'react-admin';\nimport { Drawer, Box, IconButton } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nconst useStyles = makeStyles(() => ({\n closeButton: {\n position: 'absolute',\n zIndex: 1400,\n top: 0,\n right: 0\n }\n}));\n\nconst MobileDrawer = ({ popupContent, onClose }) => {\n const classes = useStyles();\n const record = useRecordContext();\n const map = useMap();\n useEffect(() => {\n if (record) {\n map.setView([record.latitude, record.longitude]);\n }\n }, [record, map]);\n\n return (\n \n \n \n \n \n {React.createElement(popupContent)}\n \n \n );\n};\n\nexport default MobileDrawer;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { MapContainer, TileLayer, Marker } from 'react-leaflet';\nimport { Box, Typography } from '@mui/material';\nimport ChangeView from './ChangeView';\n\nconst MapField = ({ latitude, longitude, address, height, typographyProps, ...rest }) => {\n const record = useRecordContext();\n const position = [latitude(record), longitude(record)];\n\n // Do not display the component if it has no latitude or longitude\n\n if (!position[0] || !position[1]) return null;\n\n return (\n \n {address && (\n \n {address(record)}\n \n )}\n \n \n \n \n \n \n );\n};\n\nMapField.defaultProps = {\n height: 400,\n zoom: 11\n};\n\nexport default MapField;\n","import React from 'react';\nimport { useMap } from 'react-leaflet';\n\nconst ChangeView = ({ center, zoom }) => {\n const map = useMap();\n map.setView(center, zoom);\n return null;\n};\n\nexport default ChangeView;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/geo-components/src/index.js","packages/geo-components/src/extractContext.js","packages/geo-components/src/LocationInput.js","packages/geo-components/src/MapList/MapList.js","packages/geo-components/src/MapList/MarkerClusterGroup.js","packages/geo-components/src/MapList/DefaultPopupContent.js","packages/geo-components/src/MapList/QueryStringUpdater.js","packages/geo-components/src/MapList/MobileDrawer.js","packages/geo-components/src/MapField/MapField.js","packages/geo-components/src/MapField/ChangeView.js"],"sourcesContent":["export { default as extractContext } from './extractContext';\nexport { default as LocationInput } from './LocationInput';\nexport { default as MapList } from './MapList/MapList';\nexport { default as MapField } from './MapField/MapField';\n","const extractContext = (context, key) => {\n const property = context.find(property => property.id.startsWith(`${key}.`));\n if (property) return property.text;\n};\n\nexport default extractContext;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport {\n FieldTitle,\n InputHelperText,\n useInput,\n useTranslate,\n useLocale,\n useRecordContext,\n useResourceContext,\n useTheme\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LocationOnIcon from '@mui/icons-material/LocationOn';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\nimport { styled } from '@mui/system';\n\nconst StyledLocationOnIcon = styled(LocationOnIcon)(({ theme }) => ({\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (option.place_name) {\n return option.place_name;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst LocationInput = ({ mapboxConfig, source, label, parse, optionText, helperText, ...rest }) => {\n if (!mapboxConfig) {\n throw new Error('@semapps/geo-components : No mapbox configuration');\n }\n if (!mapboxConfig.access_token) {\n throw new Error('@semapps/geo-components : No access token in mapbox configuration');\n }\n\n const record = useRecordContext();\n const resource = useResourceContext();\n const locale = useLocale();\n const translate = useTranslate();\n\n const [keyword, setKeyword] = useState(''); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur /* , onFocus */ },\n isRequired,\n fieldState: { error, /* submitError, */ isTouched }\n } = useInput({ resource, source, ...rest });\n\n const fetchMapbox = useMemo(\n () =>\n throttle((keyword, callback) => {\n const fetchUrl = new URL(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json`);\n\n // Use locale as default language\n if (!mapboxConfig.language) mapboxConfig.language = locale;\n\n // All options available at https://docs.mapbox.com/api/search/geocoding/#forward-geocoding\n Object.entries(mapboxConfig).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value = value.join(',');\n } else if (typeof value === 'boolean') {\n value = value ? 'true' : 'false';\n }\n fetchUrl.searchParams.set(key, value);\n });\n\n fetch(fetchUrl.toString())\n .then(res => res.json())\n .then(json => callback(json));\n }, 200),\n [mapboxConfig, locale]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty or if it is the same as the current value\n if (!keyword || keyword === selectOptionText(value, optionText)) {\n return undefined;\n }\n fetchMapbox(keyword, results => setOptions(results.features));\n }, [value, keyword, fetchMapbox]);\n\n return (\n x}\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n } /* ,\n onFocus: e => {\n onFocus(e);\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n } */\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!((isTouched && error) /* || submitError */)}\n helperText={\n \n }\n {...rest}\n />\n );\n }}\n renderOption={(props, option, state) => {\n const matches = highlightMatch(option.text, keyword);\n const parts = highlightParse(option.text, matches);\n\n return (\n
  • \n \n \n \n \n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.place_name}\n \n \n \n
  • \n );\n }}\n {...rest}\n />\n );\n};\n\nLocationInput.defaultProps = {\n variant: 'outlined',\n size: 'small'\n};\n\nexport default LocationInput;\n","import React, { useState } from 'react';\nimport { useListContext, RecordContextProvider } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { useMediaQuery, Box } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport 'leaflet-defaulticon-compatibility';\nimport { MapContainer, TileLayer, Marker, Popup, Polyline } from 'react-leaflet';\nimport MarkerClusterGroup from './MarkerClusterGroup';\nimport DefaultPopupContent from './DefaultPopupContent';\nimport QueryStringUpdater from './QueryStringUpdater';\nimport MobileDrawer from './MobileDrawer';\n\nconst useStyles = makeStyles(() => ({\n isLoading: {\n zIndex: 1000,\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 }\n}));\n\nconst MapList = ({\n latitude,\n longitude,\n label,\n description,\n popupContent,\n height,\n center,\n zoom,\n groupClusters,\n boundToMarkers,\n connectMarkers,\n ...otherProps\n}) => {\n const { data, isLoading } = useListContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n const [drawerRecord, setDrawerRecord] = useState(null);\n const classes = useStyles();\n\n // Get the zoom and center from query string, if available\n const location = useLocation();\n const query = new URLSearchParams(location.search);\n center = query.has('lat') && query.has('lng') ? [query.get('lat'), query.get('lng')] : center;\n zoom = query.has('zoom') ? query.get('zoom') : zoom;\n\n let previousRecord;\n\n const records = isLoading\n ? []\n : data\n .map(record => ({\n ...record,\n latitude: latitude && latitude(record),\n longitude: longitude && longitude(record),\n label: label && label(record),\n description: description && description(record)\n }))\n .filter(record => record.latitude && record.longitude);\n\n const bounds =\n boundToMarkers && records.length > 0 ? records.map(record => [record.latitude, record.longitude]) : undefined;\n\n // Do not display anything if the bounds are not ready, otherwise the MapContainer will not be initialized correctly\n if (boundToMarkers && !bounds) return null;\n\n const markers = records.map((record, i) => {\n const marker = (\n \n setDrawerRecord(record)\n }\n : undefined\n }\n >\n {!xs && (\n \n {React.createElement(popupContent)}\n \n )}\n \n {connectMarkers && previousRecord && (\n \n )}\n \n );\n\n // Save record so that we can trace lines\n previousRecord = record;\n\n return marker;\n });\n\n return (\n \n \n {isLoading && (\n \n \n \n )}\n {groupClusters ? {markers} : markers}\n \n \n setDrawerRecord(null)} />\n \n \n );\n};\n\nMapList.defaultProps = {\n height: 700,\n center: [47, 2.213749],\n zoom: 6,\n groupClusters: true,\n connectMarkers: false,\n scrollWheelZoom: false,\n popupContent: DefaultPopupContent\n};\n\nexport default MapList;\n","import L from 'leaflet';\nimport { createPathComponent } from '@react-leaflet/core';\nimport 'leaflet.markercluster';\n\n// Taken from https://github.com/changey/react-leaflet-markercluster/blob/60992857087c181ada1e8e6659a6666a13c1f868/src/react-leaflet-markercluster.js\nfunction createMarkerCluster({ children: _c, ...props }, context) {\n const clusterProps = {};\n const clusterEvents = {};\n // Splitting props and events to different objects\n Object.entries(props).forEach(([propName, prop]) =>\n propName.startsWith('on') ? (clusterEvents[propName] = prop) : (clusterProps[propName] = prop)\n );\n\n const instance = new L.MarkerClusterGroup(clusterProps);\n\n // Initializing event listeners\n Object.entries(clusterEvents).forEach(([eventAsProp, callback]) => {\n const clusterEvent = `cluster${eventAsProp.substring(2).toLowerCase()}`;\n instance.on(clusterEvent, callback);\n });\n return {\n instance,\n context: {\n ...context,\n layerContainer: instance\n }\n };\n}\n\nconst MarkerClusterGroup = createPathComponent(createMarkerCluster);\n\nexport default MarkerClusterGroup;\n","import React from 'react';\nimport { ShowButton, EditButton, useResourceDefinition, useRecordContext } from 'react-admin';\nimport { Typography } from '@mui/material';\n\nconst DefaultPopupContent = () => {\n const record = useRecordContext();\n const resourceDefinition = useResourceDefinition({});\n if (!record) return null;\n return (\n <>\n {record.label && {record.label}}\n {record.description && (\n \n {record.description.length > 150 ? `${record.description.substring(0, 150)}...` : record.description}\n \n )}\n {resourceDefinition.hasShow && }\n {resourceDefinition.hasEdit && }\n \n );\n};\n\nexport default DefaultPopupContent;\n","import { useMapEvents } from 'react-leaflet';\nimport { useSearchParams } from 'react-router-dom';\n\n// Keep the zoom and center in query string, so that when we navigate back to the page, it stays focused on the same area\nconst QueryStringUpdater = () => {\n const [searchParams, setSearchParams] = useSearchParams();\n\n useMapEvents({\n moveend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n lat: test.target.getCenter().lat,\n lng: test.target.getCenter().lng,\n zoom: test.target.getZoom()\n }));\n },\n zoomend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n zoom: test.target.getZoom()\n }));\n }\n });\n\n return null;\n};\n\nexport default QueryStringUpdater;\n","import React, { useEffect } from 'react';\nimport { useMap } from 'react-leaflet';\nimport { useRecordContext } from 'react-admin';\nimport { Drawer, Box, IconButton } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nconst useStyles = makeStyles(() => ({\n closeButton: {\n position: 'absolute',\n zIndex: 1400,\n top: 0,\n right: 0\n }\n}));\n\nconst MobileDrawer = ({ popupContent, onClose }) => {\n const classes = useStyles();\n const record = useRecordContext();\n const map = useMap();\n useEffect(() => {\n if (record) {\n map.setView([record.latitude, record.longitude]);\n }\n }, [record, map]);\n\n return (\n \n \n \n \n \n {React.createElement(popupContent)}\n \n \n );\n};\n\nexport default MobileDrawer;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { MapContainer, TileLayer, Marker } from 'react-leaflet';\nimport { Box, Typography } from '@mui/material';\nimport ChangeView from './ChangeView';\n\nconst MapField = ({ latitude, longitude, address, height, typographyProps, ...rest }) => {\n const record = useRecordContext();\n const position = [latitude(record), longitude(record)];\n\n // Do not display the component if it has no latitude or longitude\n\n if (!position[0] || !position[1]) return null;\n\n return (\n \n {address && (\n \n {address(record)}\n \n )}\n \n \n \n \n \n \n );\n};\n\nMapField.defaultProps = {\n height: 400,\n zoom: 11\n};\n\nexport default MapField;\n","import React from 'react';\nimport { useMap } from 'react-leaflet';\n\nconst ChangeView = ({ center, zoom }) => {\n const map = useMap();\n map.setView(center, zoom);\n return null;\n};\n\nexport default ChangeView;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/geo-components/dist/index.es.js.map b/src/frontend/packages/geo-components/dist/index.es.js.map index 72eb9014b..ca2af2c72 100644 --- a/src/frontend/packages/geo-components/dist/index.es.js.map +++ b/src/frontend/packages/geo-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/geo-components/src/index.js","packages/geo-components/src/extractContext.js","packages/geo-components/src/LocationInput.js","packages/geo-components/src/MapList/MapList.js","packages/geo-components/src/MapList/MarkerClusterGroup.js","packages/geo-components/src/MapList/DefaultPopupContent.js","packages/geo-components/src/MapList/QueryStringUpdater.js","packages/geo-components/src/MapList/MobileDrawer.js","packages/geo-components/src/MapField/MapField.js","packages/geo-components/src/MapField/ChangeView.js"],"sourcesContent":["export { default as extractContext } from './extractContext';\nexport { default as LocationInput } from './LocationInput';\nexport { default as MapList } from './MapList/MapList';\nexport { default as MapField } from './MapField/MapField';\n","const extractContext = (context, key) => {\n const property = context.find(property => property.id.startsWith(`${key}.`));\n if (property) return property.text;\n};\n\nexport default extractContext;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport {\n FieldTitle,\n InputHelperText,\n useInput,\n useTranslate,\n useLocale,\n useRecordContext,\n useResourceContext,\n useTheme\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LocationOnIcon from '@mui/icons-material/LocationOn';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\nimport { styled } from '@mui/system';\n\nconst StyledLocationOnIcon = styled(LocationOnIcon)(({ theme }) => ({\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (option.place_name) {\n return option.place_name;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst LocationInput = ({ mapboxConfig, source, label, parse, optionText, helperText, ...rest }) => {\n if (!mapboxConfig) {\n throw new Error('@semapps/geo-components : No mapbox configuration');\n }\n if (!mapboxConfig.access_token) {\n throw new Error('@semapps/geo-components : No access token in mapbox configuration');\n }\n\n const record = useRecordContext();\n const resource = useResourceContext();\n const locale = useLocale();\n const translate = useTranslate();\n\n const [keyword, setKeyword] = useState(''); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur /* , onFocus */ },\n isRequired,\n fieldState: { error, /* submitError, */ isTouched }\n } = useInput({ resource, source, ...rest });\n\n const fetchMapbox = useMemo(\n () =>\n throttle((keyword, callback) => {\n const fetchUrl = new URL(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json`);\n\n // Use locale as default language\n if (!mapboxConfig.language) mapboxConfig.language = locale;\n\n // All options available at https://docs.mapbox.com/api/search/geocoding/#forward-geocoding\n Object.entries(mapboxConfig).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value = value.join(',');\n } else if (typeof value === 'boolean') {\n value = value ? 'true' : 'false';\n }\n fetchUrl.searchParams.set(key, value);\n });\n\n fetch(fetchUrl.toString())\n .then(res => res.json())\n .then(json => callback(json));\n }, 200),\n [mapboxConfig, locale]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty or if it is the same as the current value\n if (!keyword || keyword === selectOptionText(value, optionText)) {\n return undefined;\n }\n fetchMapbox(keyword, results => setOptions(results.features));\n }, [value, keyword, fetchMapbox]);\n\n return (\n x}\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n } /* ,\n onFocus: e => {\n onFocus(e);\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n } */\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!((isTouched && error) /* || submitError */)}\n helperText={\n \n }\n {...rest}\n />\n );\n }}\n renderOption={(props, option, state) => {\n const matches = highlightMatch(option.text, keyword);\n const parts = highlightParse(option.text, matches);\n\n return (\n
  • \n \n \n \n \n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.place_name}\n \n \n \n
  • \n );\n }}\n {...rest}\n />\n );\n};\n\nLocationInput.defaultProps = {\n variant: 'outlined',\n size: 'small'\n};\n\nexport default LocationInput;\n","import React, { useState } from 'react';\nimport { useListContext, RecordContextProvider } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { useMediaQuery, Box } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport 'leaflet-defaulticon-compatibility';\nimport { MapContainer, TileLayer, Marker, Popup, Polyline } from 'react-leaflet';\nimport MarkerClusterGroup from './MarkerClusterGroup';\nimport DefaultPopupContent from './DefaultPopupContent';\nimport QueryStringUpdater from './QueryStringUpdater';\nimport MobileDrawer from './MobileDrawer';\n\nconst useStyles = makeStyles(() => ({\n isLoading: {\n zIndex: 1000,\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 }\n}));\n\nconst MapList = ({\n latitude,\n longitude,\n label,\n description,\n popupContent,\n height,\n center,\n zoom,\n groupClusters,\n boundToMarkers,\n connectMarkers,\n ...otherProps\n}) => {\n const { data, isLoading } = useListContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n const [drawerRecord, setDrawerRecord] = useState(null);\n const classes = useStyles();\n\n // Get the zoom and center from query string, if available\n const location = useLocation();\n const query = new URLSearchParams(location.search);\n center = query.has('lat') && query.has('lng') ? [query.get('lat'), query.get('lng')] : center;\n zoom = query.has('zoom') ? query.get('zoom') : zoom;\n\n let previousRecord;\n\n const records = isLoading\n ? []\n : data\n .map(record => ({\n ...record,\n latitude: latitude && latitude(record),\n longitude: longitude && longitude(record),\n label: label && label(record),\n description: description && description(record)\n }))\n .filter(record => record.latitude && record.longitude);\n\n const bounds =\n boundToMarkers && records.length > 0 ? records.map(record => [record.latitude, record.longitude]) : undefined;\n\n // Do not display anything if the bounds are not ready, otherwise the MapContainer will not be initialized correctly\n if (boundToMarkers && !bounds) return null;\n\n const markers = records.map((record, i) => {\n const marker = (\n \n setDrawerRecord(record)\n }\n : undefined\n }\n >\n {!xs && (\n \n {React.createElement(popupContent)}\n \n )}\n \n {connectMarkers && previousRecord && (\n \n )}\n \n );\n\n // Save record so that we can trace lines\n previousRecord = record;\n\n return marker;\n });\n\n return (\n \n \n {isLoading && (\n \n \n \n )}\n {groupClusters ? {markers} : markers}\n \n \n setDrawerRecord(null)} />\n \n \n );\n};\n\nMapList.defaultProps = {\n height: 700,\n center: [47, 2.213749],\n zoom: 6,\n groupClusters: true,\n connectMarkers: false,\n scrollWheelZoom: false,\n popupContent: DefaultPopupContent\n};\n\nexport default MapList;\n","import L from 'leaflet';\nimport { createPathComponent } from '@react-leaflet/core';\nimport 'leaflet.markercluster';\n\n// Taken from https://github.com/changey/react-leaflet-markercluster/blob/60992857087c181ada1e8e6659a6666a13c1f868/src/react-leaflet-markercluster.js\nfunction createMarkerCluster({ children: _c, ...props }, context) {\n const clusterProps = {};\n const clusterEvents = {};\n // Splitting props and events to different objects\n Object.entries(props).forEach(([propName, prop]) =>\n propName.startsWith('on') ? (clusterEvents[propName] = prop) : (clusterProps[propName] = prop)\n );\n\n const instance = new L.MarkerClusterGroup(clusterProps);\n\n // Initializing event listeners\n Object.entries(clusterEvents).forEach(([eventAsProp, callback]) => {\n const clusterEvent = `cluster${eventAsProp.substring(2).toLowerCase()}`;\n instance.on(clusterEvent, callback);\n });\n return {\n instance,\n context: {\n ...context,\n layerContainer: instance\n }\n };\n}\n\nconst MarkerClusterGroup = createPathComponent(createMarkerCluster);\n\nexport default MarkerClusterGroup;\n","import React from 'react';\nimport { ShowButton, EditButton, useResourceDefinition, useRecordContext } from 'react-admin';\nimport { Typography } from '@mui/material';\n\nconst DefaultPopupContent = () => {\n const record = useRecordContext();\n const resourceDefinition = useResourceDefinition({});\n if (!record) return null;\n return (\n <>\n {record.label && {record.label}}\n {record.description && (\n \n {record.description.length > 150 ? `${record.description.substring(0, 150)}...` : record.description}\n \n )}\n {resourceDefinition.hasShow && }\n {resourceDefinition.hasEdit && }\n \n );\n};\n\nexport default DefaultPopupContent;\n","import { useMapEvents } from 'react-leaflet';\nimport { useSearchParams } from 'react-router-dom';\n\n// Keep the zoom and center in query string, so that when we navigate back to the page, it stays focused on the same area\nconst QueryStringUpdater = () => {\n const [searchParams, setSearchParams] = useSearchParams();\n\n useMapEvents({\n moveend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n lat: test.target.getCenter().lat,\n lng: test.target.getCenter().lng,\n zoom: test.target.getZoom()\n }));\n },\n zoomend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n zoom: test.target.getZoom()\n }));\n }\n });\n\n return null;\n};\n\nexport default QueryStringUpdater;\n","import React, { useEffect } from 'react';\nimport { useMap } from 'react-leaflet';\nimport { useRecordContext } from 'react-admin';\nimport { Drawer, Box, IconButton } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nconst useStyles = makeStyles(() => ({\n closeButton: {\n position: 'absolute',\n zIndex: 1400,\n top: 0,\n right: 0\n }\n}));\n\nconst MobileDrawer = ({ popupContent, onClose }) => {\n const classes = useStyles();\n const record = useRecordContext();\n const map = useMap();\n useEffect(() => {\n if (record) {\n map.setView([record.latitude, record.longitude]);\n }\n }, [record, map]);\n\n return (\n \n \n \n \n \n {React.createElement(popupContent)}\n \n \n );\n};\n\nexport default MobileDrawer;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { MapContainer, TileLayer, Marker } from 'react-leaflet';\nimport { Box, Typography } from '@mui/material';\nimport ChangeView from './ChangeView';\n\nconst MapField = ({ latitude, longitude, address, height, typographyProps, ...rest }) => {\n const record = useRecordContext();\n const position = [latitude(record), longitude(record)];\n\n // Do not display the component if it has no latitude or longitude\n\n if (!position[0] || !position[1]) return null;\n\n return (\n \n {address && (\n \n {address(record)}\n \n )}\n \n \n \n \n \n \n );\n};\n\nMapField.defaultProps = {\n height: 400,\n zoom: 11\n};\n\nexport default MapField;\n","import React from 'react';\nimport { useMap } from 'react-leaflet';\n\nconst ChangeView = ({ center, zoom }) => {\n const map = useMap();\n map.setView(center, zoom);\n return null;\n};\n\nexport default ChangeView;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/geo-components/src/index.js","packages/geo-components/src/extractContext.js","packages/geo-components/src/LocationInput.js","packages/geo-components/src/MapList/MapList.js","packages/geo-components/src/MapList/MarkerClusterGroup.js","packages/geo-components/src/MapList/DefaultPopupContent.js","packages/geo-components/src/MapList/QueryStringUpdater.js","packages/geo-components/src/MapList/MobileDrawer.js","packages/geo-components/src/MapField/MapField.js","packages/geo-components/src/MapField/ChangeView.js"],"sourcesContent":["export { default as extractContext } from './extractContext';\nexport { default as LocationInput } from './LocationInput';\nexport { default as MapList } from './MapList/MapList';\nexport { default as MapField } from './MapField/MapField';\n","const extractContext = (context, key) => {\n const property = context.find(property => property.id.startsWith(`${key}.`));\n if (property) return property.text;\n};\n\nexport default extractContext;\n","import React, { useState, useMemo, useEffect } from 'react';\nimport {\n FieldTitle,\n InputHelperText,\n useInput,\n useTranslate,\n useLocale,\n useRecordContext,\n useResourceContext,\n useTheme\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LocationOnIcon from '@mui/icons-material/LocationOn';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\nimport { styled } from '@mui/system';\n\nconst StyledLocationOnIcon = styled(LocationOnIcon)(({ theme }) => ({\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (option.place_name) {\n return option.place_name;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst LocationInput = ({ mapboxConfig, source, label, parse, optionText, helperText, ...rest }) => {\n if (!mapboxConfig) {\n throw new Error('@semapps/geo-components : No mapbox configuration');\n }\n if (!mapboxConfig.access_token) {\n throw new Error('@semapps/geo-components : No access token in mapbox configuration');\n }\n\n const record = useRecordContext();\n const resource = useResourceContext();\n const locale = useLocale();\n const translate = useTranslate();\n\n const [keyword, setKeyword] = useState(''); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur /* , onFocus */ },\n isRequired,\n fieldState: { error, /* submitError, */ isTouched }\n } = useInput({ resource, source, ...rest });\n\n const fetchMapbox = useMemo(\n () =>\n throttle((keyword, callback) => {\n const fetchUrl = new URL(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json`);\n\n // Use locale as default language\n if (!mapboxConfig.language) mapboxConfig.language = locale;\n\n // All options available at https://docs.mapbox.com/api/search/geocoding/#forward-geocoding\n Object.entries(mapboxConfig).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value = value.join(',');\n } else if (typeof value === 'boolean') {\n value = value ? 'true' : 'false';\n }\n fetchUrl.searchParams.set(key, value);\n });\n\n fetch(fetchUrl.toString())\n .then(res => res.json())\n .then(json => callback(json));\n }, 200),\n [mapboxConfig, locale]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty or if it is the same as the current value\n if (!keyword || keyword === selectOptionText(value, optionText)) {\n return undefined;\n }\n fetchMapbox(keyword, results => setOptions(results.features));\n }, [value, keyword, fetchMapbox]);\n\n return (\n x}\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n } /* ,\n onFocus: e => {\n onFocus(e);\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n } */\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!((isTouched && error) /* || submitError */)}\n helperText={\n \n }\n {...rest}\n />\n );\n }}\n renderOption={(props, option, state) => {\n const matches = highlightMatch(option.text, keyword);\n const parts = highlightParse(option.text, matches);\n\n return (\n
  • \n \n \n \n \n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.place_name}\n \n \n \n
  • \n );\n }}\n {...rest}\n />\n );\n};\n\nLocationInput.defaultProps = {\n variant: 'outlined',\n size: 'small'\n};\n\nexport default LocationInput;\n","import React, { useState } from 'react';\nimport { useListContext, RecordContextProvider } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport { useMediaQuery, Box } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport 'leaflet-defaulticon-compatibility';\nimport { MapContainer, TileLayer, Marker, Popup, Polyline } from 'react-leaflet';\nimport MarkerClusterGroup from './MarkerClusterGroup';\nimport DefaultPopupContent from './DefaultPopupContent';\nimport QueryStringUpdater from './QueryStringUpdater';\nimport MobileDrawer from './MobileDrawer';\n\nconst useStyles = makeStyles(() => ({\n isLoading: {\n zIndex: 1000,\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 }\n}));\n\nconst MapList = ({\n latitude,\n longitude,\n label,\n description,\n popupContent,\n height,\n center,\n zoom,\n groupClusters,\n boundToMarkers,\n connectMarkers,\n ...otherProps\n}) => {\n const { data, isLoading } = useListContext();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n const [drawerRecord, setDrawerRecord] = useState(null);\n const classes = useStyles();\n\n // Get the zoom and center from query string, if available\n const location = useLocation();\n const query = new URLSearchParams(location.search);\n center = query.has('lat') && query.has('lng') ? [query.get('lat'), query.get('lng')] : center;\n zoom = query.has('zoom') ? query.get('zoom') : zoom;\n\n let previousRecord;\n\n const records = isLoading\n ? []\n : data\n .map(record => ({\n ...record,\n latitude: latitude && latitude(record),\n longitude: longitude && longitude(record),\n label: label && label(record),\n description: description && description(record)\n }))\n .filter(record => record.latitude && record.longitude);\n\n const bounds =\n boundToMarkers && records.length > 0 ? records.map(record => [record.latitude, record.longitude]) : undefined;\n\n // Do not display anything if the bounds are not ready, otherwise the MapContainer will not be initialized correctly\n if (boundToMarkers && !bounds) return null;\n\n const markers = records.map((record, i) => {\n const marker = (\n \n setDrawerRecord(record)\n }\n : undefined\n }\n >\n {!xs && (\n \n {React.createElement(popupContent)}\n \n )}\n \n {connectMarkers && previousRecord && (\n \n )}\n \n );\n\n // Save record so that we can trace lines\n previousRecord = record;\n\n return marker;\n });\n\n return (\n \n \n {isLoading && (\n \n \n \n )}\n {groupClusters ? {markers} : markers}\n \n \n setDrawerRecord(null)} />\n \n \n );\n};\n\nMapList.defaultProps = {\n height: 700,\n center: [47, 2.213749],\n zoom: 6,\n groupClusters: true,\n connectMarkers: false,\n scrollWheelZoom: false,\n popupContent: DefaultPopupContent\n};\n\nexport default MapList;\n","import L from 'leaflet';\nimport { createPathComponent } from '@react-leaflet/core';\nimport 'leaflet.markercluster';\n\n// Taken from https://github.com/changey/react-leaflet-markercluster/blob/60992857087c181ada1e8e6659a6666a13c1f868/src/react-leaflet-markercluster.js\nfunction createMarkerCluster({ children: _c, ...props }, context) {\n const clusterProps = {};\n const clusterEvents = {};\n // Splitting props and events to different objects\n Object.entries(props).forEach(([propName, prop]) =>\n propName.startsWith('on') ? (clusterEvents[propName] = prop) : (clusterProps[propName] = prop)\n );\n\n const instance = new L.MarkerClusterGroup(clusterProps);\n\n // Initializing event listeners\n Object.entries(clusterEvents).forEach(([eventAsProp, callback]) => {\n const clusterEvent = `cluster${eventAsProp.substring(2).toLowerCase()}`;\n instance.on(clusterEvent, callback);\n });\n return {\n instance,\n context: {\n ...context,\n layerContainer: instance\n }\n };\n}\n\nconst MarkerClusterGroup = createPathComponent(createMarkerCluster);\n\nexport default MarkerClusterGroup;\n","import React from 'react';\nimport { ShowButton, EditButton, useResourceDefinition, useRecordContext } from 'react-admin';\nimport { Typography } from '@mui/material';\n\nconst DefaultPopupContent = () => {\n const record = useRecordContext();\n const resourceDefinition = useResourceDefinition({});\n if (!record) return null;\n return (\n <>\n {record.label && {record.label}}\n {record.description && (\n \n {record.description.length > 150 ? `${record.description.substring(0, 150)}...` : record.description}\n \n )}\n {resourceDefinition.hasShow && }\n {resourceDefinition.hasEdit && }\n \n );\n};\n\nexport default DefaultPopupContent;\n","import { useMapEvents } from 'react-leaflet';\nimport { useSearchParams } from 'react-router-dom';\n\n// Keep the zoom and center in query string, so that when we navigate back to the page, it stays focused on the same area\nconst QueryStringUpdater = () => {\n const [searchParams, setSearchParams] = useSearchParams();\n\n useMapEvents({\n moveend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n lat: test.target.getCenter().lat,\n lng: test.target.getCenter().lng,\n zoom: test.target.getZoom()\n }));\n },\n zoomend: test => {\n setSearchParams(params => ({\n ...Object.fromEntries(params),\n zoom: test.target.getZoom()\n }));\n }\n });\n\n return null;\n};\n\nexport default QueryStringUpdater;\n","import React, { useEffect } from 'react';\nimport { useMap } from 'react-leaflet';\nimport { useRecordContext } from 'react-admin';\nimport { Drawer, Box, IconButton } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ClearIcon from '@mui/icons-material/Clear';\n\nconst useStyles = makeStyles(() => ({\n closeButton: {\n position: 'absolute',\n zIndex: 1400,\n top: 0,\n right: 0\n }\n}));\n\nconst MobileDrawer = ({ popupContent, onClose }) => {\n const classes = useStyles();\n const record = useRecordContext();\n const map = useMap();\n useEffect(() => {\n if (record) {\n map.setView([record.latitude, record.longitude]);\n }\n }, [record, map]);\n\n return (\n \n \n \n \n \n {React.createElement(popupContent)}\n \n \n );\n};\n\nexport default MobileDrawer;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport { MapContainer, TileLayer, Marker } from 'react-leaflet';\nimport { Box, Typography } from '@mui/material';\nimport ChangeView from './ChangeView';\n\nconst MapField = ({ latitude, longitude, address, height, typographyProps, ...rest }) => {\n const record = useRecordContext();\n const position = [latitude(record), longitude(record)];\n\n // Do not display the component if it has no latitude or longitude\n\n if (!position[0] || !position[1]) return null;\n\n return (\n \n {address && (\n \n {address(record)}\n \n )}\n \n \n \n \n \n \n );\n};\n\nMapField.defaultProps = {\n height: 400,\n zoom: 11\n};\n\nexport default MapField;\n","import React from 'react';\nimport { useMap } from 'react-leaflet';\n\nconst ChangeView = ({ center, zoom }) => {\n const map = useMap();\n map.setView(center, zoom);\n return null;\n};\n\nexport default ChangeView;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/input-components/dist/index.cjs.js b/src/frontend/packages/input-components/dist/index.cjs.js index fc9e75e67..17b42cd6b 100644 --- a/src/frontend/packages/input-components/dist/index.cjs.js +++ b/src/frontend/packages/input-components/dist/index.cjs.js @@ -4,9 +4,11 @@ var $jhbHd$reactadmin = require("react-admin"); var $jhbHd$semappssemanticdataprovider = require("@semapps/semantic-data-provider"); var $jhbHd$reacthookform = require("react-hook-form"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } diff --git a/src/frontend/packages/input-components/dist/index.cjs.js.map b/src/frontend/packages/input-components/dist/index.cjs.js.map index 0c1feca39..ad9ab5b6f 100644 --- a/src/frontend/packages/input-components/dist/index.cjs.js.map +++ b/src/frontend/packages/input-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":";;;;;;;;;;;;;;;;;;;;;;ACGA,yEAAyE;AACzE,kJAAkJ;AAClJ,MAAM,sCAAgB,CAAA;IACpB,MAAM,UAAU,IAAI,gBAAgB;IACpC,OAAO;QACL,SAAS;QACT,KAAK;QACL,OAAO,KAAK;IACd;AACF;AAEA,MAAM,+BAAS,CAAA;IACb,IAAI,OAAO,MAAM,UACf,OAAO;QAAE,KAAK;IAAE;IAElB,IAAI,MAAM,QAAQ,IAChB,OAAO,EAAE,IAAI,CAAA,IAAM,OAAO,MAAM,WAAW;YAAE,KAAK;QAAE,IAAI;IAE1D,OAAO;AACT;AAEA,MAAM,8BAAQ,CAAA;IACZ,IAAI,aAAa,MACf,OAAO,oCAAc;IAEvB,IAAI,KAAK,EAAE,OAAO,CAAC,EAAE,SACnB,OAAO,EAAE;IAEX,IAAI,MAAM,QAAQ,IAChB,OAAO,EAAE,IAAI,CAAA,IAAK,4BAAM;IAE1B,OAAO;AACT;AAEA,MAAM,mCAAa,CAAA,sBAAS,gCAAC,CAAA,GAAA,4BAAW;QAAG,GAAG,KAAK;QAAE,QAAQ;QAAQ,OAAO;;IAE5E,2CAAe;;;;;;;;;;AEpCf,MAAM,uCAAiB,CAAC,cAAE,UAAU,eAAE,WAAW,EAAE;IACjD,MAAM,SAAS,CAAA,GAAA,kCAAe;IAC9B,MAAM,SAAS,eAAe,OAAO,OAAO,aAAa,KAAK,CAAA,SAAU,OAAO,GAAG,WAAW,OAAO;IACpG,qBACE,iCAAC;;YACE,MAAM,CAAC,WAAW;YAClB,wBACC,iCAAC;gBAAG,WAAU;gBAAa,OAAO;oBAAE,OAAO;gBAAO;;oBAAG;oBAC3C,OAAO;oBAAK;;;;;AAK9B;IAEA,2CAAe;;;ADbf,MAAM,0DAAoC,CAAC,cAAE,UAAU,EAAE,GAAG,MAAM;IAChE,MAAM,cAAc,CAAA,GAAA,iDAAa;IACjC,MAAM,kBAAkB,CAAA,GAAA,wBAAU,EAChC,CAAC,aAAa,SAAW,MAAM,CAAC,WAAW,CAAC,cAAc,MAAM,YAAY,gBAC5E;QAAC;KAAW;IAEd,qBACE,gCAAC,CAAA,GAAA,wCAAqB;QACpB,iBAAiB;QACjB,0BAAY,gCAAC,CAAA,GAAA,wCAAa;YAAE,YAAY;YAAY,aAAa;;QACjE,WAAW,CAAA,SAAU,MAAM,CAAC,WAAW;QACtC,GAAG,IAAI;;AAGd;IAEA,2CAAe;;;;;;;AEjBf,MAAM,qDAA+B,CAAC,cAAE,UAAU,EAAE,GAAG,MAAM;IAC3D,MAAM,cAAc,CAAA,GAAA,iDAAa;IACjC,oHAAoH;IACpH,MAAM,2BAA2B,CAAA,GAAA,wBAAU,EACzC,CAAA;QACE,IAAI,UAAU,aAAa;YACzB,MAAM,SAAS,OAAO,OAAO,aAAa,KAAK,CAAA,SAAU,OAAO,GAAG,WAAW,OAAO;YACrF,OAAO,MAAM,CAAC,WAAW,GAAI,CAAA,SAAS,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,GAAG,EAAC;QAC/D;IACF,GACA;QAAC;QAAY;KAAY;IAE3B,qBAAO,gCAAC,CAAA,GAAA,mCAAgB;QAAE,YAAY;QAA2B,GAAG,IAAI;;AAC1E;IAEA,2CAAe;;;;;;AChBf,MAAM,wCAAkB,CAAA,sBACtB,gCAAC,CAAA,GAAA,2BAAQ;QACP,SAAS;QACT,SAAS;QACT,QAAQ,CAAA,QAAU,QAAS,MAAM,QAAQ,SAAS,MAAM,KAAK,QAAQ,QAAS;QAC9E,OAAO,CAAA,QAAS,MAAM,MAAM;QAC3B,GAAG,KAAK;;IAIb,2CAAe;;;;;;;ACTf,MAAM,4CAAsB,CAAA;IAC1B,MAAM,EACJ,OAAO,SAAE,KAAK,YAAE,QAAQ,EAAE,EAC3B,GAAG,CAAA,GAAA,kCAAY,EAAE;QAAE,MAAM,MAAM;IAAO;IAEvC,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,SAAS,CAAC,MAAM,QAAQ,QAC1B,SAAS;YAAC;SAAM;IAEpB,GAAG;QAAC;QAAO;KAAS;IAEpB,6DAA6D;IAC7D,6DAA6D;IAC7D,IAAI,SAAS,CAAC,MAAM,QAAQ,QAAQ,OAAO;IAE3C,qBAAO,gCAAC,CAAA,GAAA,qCAAoB;QAAG,GAAG,KAAK;;AACzC;IAEA,2CAAe;;;;;;ACnBf,MAAM,+BAAS,CAAA;IACb,2CAA2C;IAC3C,IAAI,CAAC,OAAO,OAAO;IACnB,8DAA8D;IAC9D,OAAO,OAAO,UAAU,WAAW,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG;AAChE;AAEA,MAAM,uCAAiB,CAAC,YAAE,QAAQ,EAAE,GAAG,MAAM;IAC3C,MAAM,QAAQ,CAAA,GAAA,sCAAI,EAAE,SAAS,KAAK;IAClC,qBAAO,gCAAC,CAAA,GAAA,gCAAe;QAAG,GAAG,IAAI;kBAAG,cAAA,CAAA,GAAA,sCAAI,EAAE,aAAa,OAAO;oBAAE;QAAO;;AACzE;IAEA,2CAAe;;","sources":["packages/input-components/src/index.js","packages/input-components/src/ImageInput.js","packages/input-components/src/MultiServerAutocompleteArrayInput.js","packages/input-components/src/OptionRenderer.js","packages/input-components/src/MultiServerAutocompleteInput.js","packages/input-components/src/MultiLinesInput.js","packages/input-components/src/ReferenceArrayInput.js","packages/input-components/src/ReferenceInput.js"],"sourcesContent":["export { default as ImageInput } from './ImageInput';\nexport { default as MultiServerAutocompleteArrayInput } from './MultiServerAutocompleteArrayInput';\nexport { default as MultiServerAutocompleteInput } from './MultiServerAutocompleteInput';\nexport { default as MultiLinesInput } from './MultiLinesInput';\nexport { default as ReferenceArrayInput } from './ReferenceArrayInput';\nexport { default as ReferenceInput } from './ReferenceInput';\n","import React from 'react';\nimport { ImageInput as RaImageInput } from 'react-admin';\n\n// Since we overwrite FileInput default parse, we must transform the file\n// See https://github.com/marmelab/react-admin/blob/2d6a1982981b0f1882e52dd1a974a60eef333e59/packages/ra-ui-materialui/src/input/FileInput.tsx#L57\nconst transformFile = file => {\n const preview = URL.createObjectURL(file);\n return {\n rawFile: file,\n src: preview,\n title: file.name\n };\n};\n\nconst format = v => {\n if (typeof v === 'string') {\n return { src: v };\n }\n if (Array.isArray(v)) {\n return v.map(e => (typeof e === 'string' ? { src: e } : e));\n }\n return v;\n};\n\nconst parse = v => {\n if (v instanceof File) {\n return transformFile(v);\n }\n if (v && v.src && !v.rawFile) {\n return v.src;\n }\n if (Array.isArray(v)) {\n return v.map(e => parse(e));\n }\n return v;\n};\n\nconst ImageInput = props => ;\n\nexport default ImageInput;\n","import React, { useCallback } from 'react';\nimport { AutocompleteArrayInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\nimport OptionRenderer from './OptionRenderer';\n\nconst MultiServerAutocompleteArrayInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n const matchSuggestion = useCallback(\n (filterValue, choice) => choice[optionText].toLowerCase().match(filterValue.toLowerCase()),\n [optionText]\n );\n return (\n }\n inputText={choice => choice[optionText]}\n {...rest}\n />\n );\n};\n\nexport default MultiServerAutocompleteArrayInput;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\n\nconst OptionRenderer = ({ optionText, dataServers }) => {\n const record = useRecordContext();\n const server = dataServers && Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return (\n \n {record[optionText]}\n {server && (\n \n  ({server.name})\n \n )}\n \n );\n};\n\nexport default OptionRenderer;\n","import React, { useCallback } from 'react';\nimport { AutocompleteInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\n\nconst MultiServerAutocompleteInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n // We cannot use OptionRenderer like MultiServerAutocompleteArrayInput because there is a bug with AutocompleteInput\n const optionTextWithServerName = useCallback(\n record => {\n if (record && dataServers) {\n const server = Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return record[optionText] + (server ? ` (${server.name})` : '');\n }\n },\n [optionText, dataServers]\n );\n return ;\n};\n\nexport default MultiServerAutocompleteInput;\n","import React from 'react';\nimport { TextInput } from 'react-admin';\n\nconst MultiLinesInput = props => (\n (value ? (Array.isArray(value) ? value.join('\\n') : value) : '')}\n parse={value => value.split(/\\r?\\n/)}\n {...props}\n />\n);\n\nexport default MultiLinesInput;\n","import React, { useEffect } from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput } from 'react-admin';\nimport { useController } from 'react-hook-form';\n\nconst ReferenceArrayInput = props => {\n const {\n field: { value, onChange }\n } = useController({ name: props.source });\n\n useEffect(() => {\n if (value && !Array.isArray(value)) {\n onChange([value]);\n }\n }, [value, onChange]);\n\n // Wait for change to be effective before rendering component\n // Otherwise it will be wrongly initialized and it won't work\n if (value && !Array.isArray(value)) return null;\n\n return ;\n};\n\nexport default ReferenceArrayInput;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput } from 'react-admin';\n\nconst format = value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n};\n\nconst ReferenceInput = ({ children, ...rest }) => {\n const child = React.Children.only(children);\n return {React.cloneElement(child, { format })};\n};\n\nexport default ReferenceInput;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/input-components/src/index.js","packages/input-components/src/ImageInput.js","packages/input-components/src/MultiServerAutocompleteArrayInput.js","packages/input-components/src/OptionRenderer.js","packages/input-components/src/MultiServerAutocompleteInput.js","packages/input-components/src/MultiLinesInput.js","packages/input-components/src/ReferenceArrayInput.js","packages/input-components/src/ReferenceInput.js"],"sourcesContent":["export { default as ImageInput } from './ImageInput';\nexport { default as MultiServerAutocompleteArrayInput } from './MultiServerAutocompleteArrayInput';\nexport { default as MultiServerAutocompleteInput } from './MultiServerAutocompleteInput';\nexport { default as MultiLinesInput } from './MultiLinesInput';\nexport { default as ReferenceArrayInput } from './ReferenceArrayInput';\nexport { default as ReferenceInput } from './ReferenceInput';\n","import React from 'react';\nimport { ImageInput as RaImageInput } from 'react-admin';\n\n// Since we overwrite FileInput default parse, we must transform the file\n// See https://github.com/marmelab/react-admin/blob/2d6a1982981b0f1882e52dd1a974a60eef333e59/packages/ra-ui-materialui/src/input/FileInput.tsx#L57\nconst transformFile = file => {\n const preview = URL.createObjectURL(file);\n return {\n rawFile: file,\n src: preview,\n title: file.name\n };\n};\n\nconst format = v => {\n if (typeof v === 'string') {\n return { src: v };\n }\n if (Array.isArray(v)) {\n return v.map(e => (typeof e === 'string' ? { src: e } : e));\n }\n return v;\n};\n\nconst parse = v => {\n if (v instanceof File) {\n return transformFile(v);\n }\n if (v && v.src && !v.rawFile) {\n return v.src;\n }\n if (Array.isArray(v)) {\n return v.map(e => parse(e));\n }\n return v;\n};\n\nconst ImageInput = props => ;\n\nexport default ImageInput;\n","import React, { useCallback } from 'react';\nimport { AutocompleteArrayInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\nimport OptionRenderer from './OptionRenderer';\n\nconst MultiServerAutocompleteArrayInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n const matchSuggestion = useCallback(\n (filterValue, choice) => choice[optionText].toLowerCase().match(filterValue.toLowerCase()),\n [optionText]\n );\n return (\n }\n inputText={choice => choice[optionText]}\n {...rest}\n />\n );\n};\n\nexport default MultiServerAutocompleteArrayInput;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\n\nconst OptionRenderer = ({ optionText, dataServers }) => {\n const record = useRecordContext();\n const server = dataServers && Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return (\n \n {record[optionText]}\n {server && (\n \n  ({server.name})\n \n )}\n \n );\n};\n\nexport default OptionRenderer;\n","import React, { useCallback } from 'react';\nimport { AutocompleteInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\n\nconst MultiServerAutocompleteInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n // We cannot use OptionRenderer like MultiServerAutocompleteArrayInput because there is a bug with AutocompleteInput\n const optionTextWithServerName = useCallback(\n record => {\n if (record && dataServers) {\n const server = Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return record[optionText] + (server ? ` (${server.name})` : '');\n }\n },\n [optionText, dataServers]\n );\n return ;\n};\n\nexport default MultiServerAutocompleteInput;\n","import React from 'react';\nimport { TextInput } from 'react-admin';\n\nconst MultiLinesInput = props => (\n (value ? (Array.isArray(value) ? value.join('\\n') : value) : '')}\n parse={value => value.split(/\\r?\\n/)}\n {...props}\n />\n);\n\nexport default MultiLinesInput;\n","import React, { useEffect } from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput } from 'react-admin';\nimport { useController } from 'react-hook-form';\n\nconst ReferenceArrayInput = props => {\n const {\n field: { value, onChange }\n } = useController({ name: props.source });\n\n useEffect(() => {\n if (value && !Array.isArray(value)) {\n onChange([value]);\n }\n }, [value, onChange]);\n\n // Wait for change to be effective before rendering component\n // Otherwise it will be wrongly initialized and it won't work\n if (value && !Array.isArray(value)) return null;\n\n return ;\n};\n\nexport default ReferenceArrayInput;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput } from 'react-admin';\n\nconst format = value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n};\n\nconst ReferenceInput = ({ children, ...rest }) => {\n const child = React.Children.only(children);\n return {React.cloneElement(child, { format })};\n};\n\nexport default ReferenceInput;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/input-components/dist/index.es.js.map b/src/frontend/packages/input-components/dist/index.es.js.map index df0ee582f..83e81ac7d 100644 --- a/src/frontend/packages/input-components/dist/index.es.js.map +++ b/src/frontend/packages/input-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/input-components/src/index.js","packages/input-components/src/ImageInput.js","packages/input-components/src/MultiServerAutocompleteArrayInput.js","packages/input-components/src/OptionRenderer.js","packages/input-components/src/MultiServerAutocompleteInput.js","packages/input-components/src/MultiLinesInput.js","packages/input-components/src/ReferenceArrayInput.js","packages/input-components/src/ReferenceInput.js"],"sourcesContent":["export { default as ImageInput } from './ImageInput';\nexport { default as MultiServerAutocompleteArrayInput } from './MultiServerAutocompleteArrayInput';\nexport { default as MultiServerAutocompleteInput } from './MultiServerAutocompleteInput';\nexport { default as MultiLinesInput } from './MultiLinesInput';\nexport { default as ReferenceArrayInput } from './ReferenceArrayInput';\nexport { default as ReferenceInput } from './ReferenceInput';\n","import React from 'react';\nimport { ImageInput as RaImageInput } from 'react-admin';\n\n// Since we overwrite FileInput default parse, we must transform the file\n// See https://github.com/marmelab/react-admin/blob/2d6a1982981b0f1882e52dd1a974a60eef333e59/packages/ra-ui-materialui/src/input/FileInput.tsx#L57\nconst transformFile = file => {\n const preview = URL.createObjectURL(file);\n return {\n rawFile: file,\n src: preview,\n title: file.name\n };\n};\n\nconst format = v => {\n if (typeof v === 'string') {\n return { src: v };\n }\n if (Array.isArray(v)) {\n return v.map(e => (typeof e === 'string' ? { src: e } : e));\n }\n return v;\n};\n\nconst parse = v => {\n if (v instanceof File) {\n return transformFile(v);\n }\n if (v && v.src && !v.rawFile) {\n return v.src;\n }\n if (Array.isArray(v)) {\n return v.map(e => parse(e));\n }\n return v;\n};\n\nconst ImageInput = props => ;\n\nexport default ImageInput;\n","import React, { useCallback } from 'react';\nimport { AutocompleteArrayInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\nimport OptionRenderer from './OptionRenderer';\n\nconst MultiServerAutocompleteArrayInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n const matchSuggestion = useCallback(\n (filterValue, choice) => choice[optionText].toLowerCase().match(filterValue.toLowerCase()),\n [optionText]\n );\n return (\n }\n inputText={choice => choice[optionText]}\n {...rest}\n />\n );\n};\n\nexport default MultiServerAutocompleteArrayInput;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\n\nconst OptionRenderer = ({ optionText, dataServers }) => {\n const record = useRecordContext();\n const server = dataServers && Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return (\n \n {record[optionText]}\n {server && (\n \n  ({server.name})\n \n )}\n \n );\n};\n\nexport default OptionRenderer;\n","import React, { useCallback } from 'react';\nimport { AutocompleteInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\n\nconst MultiServerAutocompleteInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n // We cannot use OptionRenderer like MultiServerAutocompleteArrayInput because there is a bug with AutocompleteInput\n const optionTextWithServerName = useCallback(\n record => {\n if (record && dataServers) {\n const server = Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return record[optionText] + (server ? ` (${server.name})` : '');\n }\n },\n [optionText, dataServers]\n );\n return ;\n};\n\nexport default MultiServerAutocompleteInput;\n","import React from 'react';\nimport { TextInput } from 'react-admin';\n\nconst MultiLinesInput = props => (\n (value ? (Array.isArray(value) ? value.join('\\n') : value) : '')}\n parse={value => value.split(/\\r?\\n/)}\n {...props}\n />\n);\n\nexport default MultiLinesInput;\n","import React, { useEffect } from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput } from 'react-admin';\nimport { useController } from 'react-hook-form';\n\nconst ReferenceArrayInput = props => {\n const {\n field: { value, onChange }\n } = useController({ name: props.source });\n\n useEffect(() => {\n if (value && !Array.isArray(value)) {\n onChange([value]);\n }\n }, [value, onChange]);\n\n // Wait for change to be effective before rendering component\n // Otherwise it will be wrongly initialized and it won't work\n if (value && !Array.isArray(value)) return null;\n\n return ;\n};\n\nexport default ReferenceArrayInput;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput } from 'react-admin';\n\nconst format = value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n};\n\nconst ReferenceInput = ({ children, ...rest }) => {\n const child = React.Children.only(children);\n return {React.cloneElement(child, { format })};\n};\n\nexport default ReferenceInput;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/input-components/src/index.js","packages/input-components/src/ImageInput.js","packages/input-components/src/MultiServerAutocompleteArrayInput.js","packages/input-components/src/OptionRenderer.js","packages/input-components/src/MultiServerAutocompleteInput.js","packages/input-components/src/MultiLinesInput.js","packages/input-components/src/ReferenceArrayInput.js","packages/input-components/src/ReferenceInput.js"],"sourcesContent":["export { default as ImageInput } from './ImageInput';\nexport { default as MultiServerAutocompleteArrayInput } from './MultiServerAutocompleteArrayInput';\nexport { default as MultiServerAutocompleteInput } from './MultiServerAutocompleteInput';\nexport { default as MultiLinesInput } from './MultiLinesInput';\nexport { default as ReferenceArrayInput } from './ReferenceArrayInput';\nexport { default as ReferenceInput } from './ReferenceInput';\n","import React from 'react';\nimport { ImageInput as RaImageInput } from 'react-admin';\n\n// Since we overwrite FileInput default parse, we must transform the file\n// See https://github.com/marmelab/react-admin/blob/2d6a1982981b0f1882e52dd1a974a60eef333e59/packages/ra-ui-materialui/src/input/FileInput.tsx#L57\nconst transformFile = file => {\n const preview = URL.createObjectURL(file);\n return {\n rawFile: file,\n src: preview,\n title: file.name\n };\n};\n\nconst format = v => {\n if (typeof v === 'string') {\n return { src: v };\n }\n if (Array.isArray(v)) {\n return v.map(e => (typeof e === 'string' ? { src: e } : e));\n }\n return v;\n};\n\nconst parse = v => {\n if (v instanceof File) {\n return transformFile(v);\n }\n if (v && v.src && !v.rawFile) {\n return v.src;\n }\n if (Array.isArray(v)) {\n return v.map(e => parse(e));\n }\n return v;\n};\n\nconst ImageInput = props => ;\n\nexport default ImageInput;\n","import React, { useCallback } from 'react';\nimport { AutocompleteArrayInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\nimport OptionRenderer from './OptionRenderer';\n\nconst MultiServerAutocompleteArrayInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n const matchSuggestion = useCallback(\n (filterValue, choice) => choice[optionText].toLowerCase().match(filterValue.toLowerCase()),\n [optionText]\n );\n return (\n }\n inputText={choice => choice[optionText]}\n {...rest}\n />\n );\n};\n\nexport default MultiServerAutocompleteArrayInput;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\n\nconst OptionRenderer = ({ optionText, dataServers }) => {\n const record = useRecordContext();\n const server = dataServers && Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return (\n \n {record[optionText]}\n {server && (\n \n  ({server.name})\n \n )}\n \n );\n};\n\nexport default OptionRenderer;\n","import React, { useCallback } from 'react';\nimport { AutocompleteInput } from 'react-admin';\nimport { useDataServers } from '@semapps/semantic-data-provider';\n\nconst MultiServerAutocompleteInput = ({ optionText, ...rest }) => {\n const dataServers = useDataServers();\n // We cannot use OptionRenderer like MultiServerAutocompleteArrayInput because there is a bug with AutocompleteInput\n const optionTextWithServerName = useCallback(\n record => {\n if (record && dataServers) {\n const server = Object.values(dataServers).find(server => record.id.startsWith(server.baseUrl));\n return record[optionText] + (server ? ` (${server.name})` : '');\n }\n },\n [optionText, dataServers]\n );\n return ;\n};\n\nexport default MultiServerAutocompleteInput;\n","import React from 'react';\nimport { TextInput } from 'react-admin';\n\nconst MultiLinesInput = props => (\n (value ? (Array.isArray(value) ? value.join('\\n') : value) : '')}\n parse={value => value.split(/\\r?\\n/)}\n {...props}\n />\n);\n\nexport default MultiLinesInput;\n","import React, { useEffect } from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput } from 'react-admin';\nimport { useController } from 'react-hook-form';\n\nconst ReferenceArrayInput = props => {\n const {\n field: { value, onChange }\n } = useController({ name: props.source });\n\n useEffect(() => {\n if (value && !Array.isArray(value)) {\n onChange([value]);\n }\n }, [value, onChange]);\n\n // Wait for change to be effective before rendering component\n // Otherwise it will be wrongly initialized and it won't work\n if (value && !Array.isArray(value)) return null;\n\n return ;\n};\n\nexport default ReferenceArrayInput;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput } from 'react-admin';\n\nconst format = value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n};\n\nconst ReferenceInput = ({ children, ...rest }) => {\n const child = React.Children.only(children);\n return {React.cloneElement(child, { format })};\n};\n\nexport default ReferenceInput;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/interop-components/dist/index.cjs.js b/src/frontend/packages/interop-components/dist/index.cjs.js index c162bcf19..c7d2a2713 100644 --- a/src/frontend/packages/interop-components/dist/index.cjs.js +++ b/src/frontend/packages/interop-components/dist/index.cjs.js @@ -15,9 +15,11 @@ var $91PtX$semappsinputcomponents = require("@semapps/input-components"); var $91PtX$urljoin = require("url-join"); var $91PtX$muiiconsmaterialStarBorder = require("@mui/icons-material/StarBorder"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } @@ -541,7 +543,7 @@ const $17a31747492cb646$var$fetchESCO = (apiUrl = "https://ec.europa.eu/esco/api const json = await response.json(); return json._embedded.results.map((r)=>({ uri: r.uri, - label: $17a31747492cb646$var$capitalize(r.title.replace("’", "'")), + label: $17a31747492cb646$var$capitalize(r.title.replace("\u2019", "'")), icon: (0, ($parcel$interopDefault($91PtX$muiiconsmaterialStarBorder))) })); } diff --git a/src/frontend/packages/interop-components/dist/index.cjs.js.map b/src/frontend/packages/interop-components/dist/index.cjs.js.map index f1536652a..ca2280689 100644 --- a/src/frontend/packages/interop-components/dist/index.cjs.js.map +++ b/src/frontend/packages/interop-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/interop-components/src/index.js","packages/interop-components/src/dialogs/LexiconCreateDialog.js","packages/interop-components/src/inputs/LexiconAutocompleteInput.js","packages/interop-components/src/forms/CreateOrImportForm.js","packages/interop-components/src/forms/ImportForm.js","packages/interop-components/src/hooks/useFork.js","packages/interop-components/src/hooks/useSync.js","packages/interop-components/src/forms/LexiconImportForm.js","packages/interop-components/src/fetch/fetchWikidata.js","packages/interop-components/src/fetch/fetchESCO.js"],"sourcesContent":["// Dialogs\nexport { default as LexiconCreateDialog } from './dialogs/LexiconCreateDialog';\n\n// Forms\nexport { default as CreateOrImportForm } from './forms/CreateOrImportForm';\nexport { default as ImportForm } from './forms/ImportForm';\nexport { default as LexiconImportForm } from './forms/LexiconImportForm';\n\n// Inputs\nexport { default as LexiconAutocompleteInput } from './inputs/LexiconAutocompleteInput';\n\n// Fetch\nexport { default as fetchWikidata } from './fetch/fetchWikidata';\nexport { default as fetchESCO } from './fetch/fetchESCO';\n\n// Hooks\nexport { default as useFork } from './hooks/useFork';\nexport { default as useSync } from './hooks/useSync';\n","import React, { useCallback, useState } from 'react';\nimport { useCreate, useCreateSuggestionContext, useResourceContext } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent } from '@mui/material';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconCreateDialog = ({ fetchLexicon, selectData }) => {\n const { filter, onCancel, onCreate } = useCreateSuggestionContext();\n const resource = useResourceContext();\n const [value, setValue] = useState(filter || '');\n const [create] = useCreate();\n\n const onClose = useCallback(() => {\n setValue('');\n onCancel();\n }, [setValue, onCancel]);\n\n const onSubmit = useCallback(() => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!value.uri) delete value.summary;\n create(\n resource,\n { data: selectData(value) },\n {\n onSuccess: data => {\n console.log('onSuccess', data);\n setValue('');\n onCreate(data);\n }\n }\n );\n }, [create, onCreate, selectData, value, setValue, resource]);\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default LexiconCreateDialog;\n","import React, { useState, useMemo, useEffect, forwardRef } from 'react';\nimport {\n FieldTitle,\n useInput,\n useTranslate,\n useLocale,\n useNotify,\n useResourceContext,\n InputHelperText\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport AddIcon from '@mui/icons-material/Add';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n }\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (typeof option === 'string') {\n return option;\n }\n if (option.label) {\n return option.label;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst capitalizeFirstLetter = string => string && string.charAt(0).toUpperCase() + string.slice(1);\n\nconst LexiconAutocompleteInput = forwardRef(\n ({ fetchLexicon, source, defaultValue, label, parse, optionText, helperText, ...rest }, ref) => {\n const resource = useResourceContext();\n const classes = useStyles();\n const locale = useLocale();\n const translate = useTranslate();\n const notify = useNotify();\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur },\n fieldState: { isTouched, error },\n formState: { submitError },\n isRequired\n } = useInput({ source, defaultValue, ...rest });\n\n const [keyword, setKeyword] = useState(defaultValue); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n const throttledFetchLexicon = useMemo(\n () =>\n throttle((keyword, callback) => {\n fetchLexicon({ keyword, locale })\n .then(data => callback(data))\n .catch(e => notify(e.message, { type: 'error' }));\n }, 200),\n [locale, fetchLexicon, notify]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty\n if (!keyword) {\n return undefined;\n }\n throttledFetchLexicon(keyword, results => setOptions(results));\n }, [value, keyword, throttledFetchLexicon]);\n\n return (\n {\n // Suggest the creation of a new value\n if (keyword) {\n options.push({\n label: capitalizeFirstLetter(keyword),\n summary: `Ajouter \"${capitalizeFirstLetter(keyword)}\" au dictionnaire`,\n icon: AddIcon\n });\n }\n return options;\n }}\n clearOnBlur // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n selectOnFocus // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n handleHomeEndKeys // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n },\n onFocus: e => {\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n }\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!(isTouched && (error || submitError))}\n helperText={}\n />\n );\n }}\n renderOption={(props, option) => {\n const matches = highlightMatch(option.label, keyword);\n const parts = highlightParse(option.label, matches);\n return (\n \n {React.createElement(option.icon || LanguageIcon, { className: classes.icon })}\n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.summary}\n \n \n \n );\n }}\n />\n );\n }\n);\n\nLexiconAutocompleteInput.defaultProps = {\n optionText: 'label'\n};\n\nexport default LexiconAutocompleteInput;\n","import React, { useState } from 'react';\nimport { SimpleForm } from 'react-admin';\nimport { Box, Tabs, Tab, Divider, useMediaQuery } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ImportForm from './ImportForm';\n\nconst useStyles = makeStyles(() => ({\n tab: {\n maxWidth: 'unset',\n padding: '6px 24px'\n }\n}));\n\nconst CreateOrImportForm = ({ stripProperties, ...rest }) => {\n const [tab, setTab] = useState(0);\n const classes = useStyles();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n return (\n <>\n \n setTab(v)} indicatorColor=\"primary\">\n \n \n \n \n \n {tab === 0 && }\n {tab === 1 && }\n \n );\n};\n\nexport default CreateOrImportForm;\n","import React, { useCallback, useEffect } from 'react';\nimport { SimpleForm, TextInput, RadioButtonGroupInput, useResourceContext } from 'react-admin';\nimport { useFormContext } from 'react-hook-form';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\nimport { ReferenceInput, MultiServerAutocompleteInput } from '@semapps/input-components';\nimport useFork from '../hooks/useFork';\nimport useSync from '../hooks/useSync';\n\nconst ImportFormInputs = () => {\n const resource = useResourceContext();\n const containers = useContainers(resource, '@remote');\n const dataModel = useDataModel(resource);\n\n const { watch, setValue } = useFormContext();\n const watchRemoteUri = watch('remoteUri');\n const watchPlainUri = watch('plainUri');\n\n useEffect(() => {\n if (watchRemoteUri) {\n setValue('plainUri', watchRemoteUri);\n }\n }, [watchRemoteUri]);\n\n useEffect(() => {\n if (watchPlainUri && watchPlainUri !== watchRemoteUri) {\n setValue('remoteUri', null);\n }\n }, [watchRemoteUri, watchPlainUri]);\n\n if (!dataModel) return null;\n\n return (\n <>\n {containers && Object.keys(containers).length > 0 && (\n !!(q && q.length > 1)}\n >\n value.length > 1}\n noOptionsText=\"Tapez au moins deux lettres\"\n emptyText=\"Rechercher...\"\n label=\"Resource distante\"\n fullWidth\n />\n \n )}\n \n \n \n );\n};\n\nconst ImportForm = ({ stripProperties }) => {\n const resource = useResourceContext();\n const fork = useFork(resource);\n const sync = useSync(resource);\n\n const onSubmit = useCallback(\n async ({ plainUri, method }) => {\n if (method === 'fork') {\n await fork(plainUri, stripProperties);\n } else {\n await sync(plainUri);\n }\n },\n [fork, sync, stripProperties]\n );\n\n return (\n \n \n \n );\n};\n\nexport default ImportForm;\n","import { useCallback } from 'react';\nimport { useDataProvider, useRedirect, useNotify } from 'react-admin';\n\nconst useFork = resourceId => {\n const dataProvider = useDataProvider();\n const redirect = useRedirect();\n const notify = useNotify();\n\n return useCallback(\n async (remoteRecordUri, stripProperties = []) => {\n const { data: remoteData } = await dataProvider.getOne(resourceId, { id: remoteRecordUri });\n\n const strippedData = { ...remoteData };\n strippedData['http://www.w3.org/ns/prov#wasDerivedFrom'] = strippedData.id;\n delete strippedData.id;\n delete strippedData['@context'];\n stripProperties.forEach(prop => {\n delete strippedData[prop];\n });\n\n const { data: localData } = await dataProvider.create(resourceId, { data: strippedData });\n\n redirect(`/${resourceId}/${encodeURIComponent(localData.id)}/show`);\n notify('La ressource a bien été copiée', { type: 'success' });\n },\n [resourceId, dataProvider, redirect, notify]\n );\n};\n\nexport default useFork;\n","import { useCallback } from 'react';\nimport { useNotify, useDataProvider, useRedirect } from 'react-admin';\n\nconst useSync = resourceId => {\n const dataProvider = useDataProvider();\n const notify = useNotify();\n const redirect = useRedirect();\n\n return useCallback(\n async remoteRecordUri => {\n await dataProvider.create(resourceId, { id: remoteRecordUri });\n\n redirect(`/${resourceId}/${encodeURIComponent(remoteRecordUri)}/show`);\n notify('La ressource a bien été importée', { type: 'success' });\n },\n [dataProvider, redirect, notify]\n );\n};\n\nexport default useSync;\n","import React, { useCallback } from 'react';\nimport { required, SimpleForm, useSaveContext } from 'react-admin';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconImportForm = ({ fetchLexicon, selectData }) => {\n const { save } = useSaveContext();\n\n const onSubmit = useCallback(\n async ({ lexicon }) => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!lexicon.uri) delete lexicon.summary;\n\n // If the user doesn't select any option, use the text as the label\n if (typeof lexicon === 'string') {\n lexicon = { label: lexicon };\n }\n\n await save(selectData(lexicon));\n },\n [selectData, save]\n );\n\n return (\n \n \n \n );\n};\n\nexport default LexiconImportForm;\n","import LanguageIcon from '@mui/icons-material/Language';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchWikidata =\n (apiUrl = 'https://www.wikidata.org/w/api.php') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n `${apiUrl}?action=wbsearchentities&format=json&language=${locale}&uselang=${locale}&type=item&limit=10&origin=*&search=${encodeURIComponent(\n keyword\n )}`\n );\n if (response.ok) {\n const json = await response.json();\n return json.search.map(r => ({\n uri: r.concepturi,\n label: capitalize(r.match.text),\n summary: capitalize(r.description),\n icon: LanguageIcon\n }));\n }\n throw new Error('Failed to fetch Wikidata server');\n };\n\nexport default fetchWikidata;\n","import urlJoin from 'url-join';\nimport StarBorderIcon from '@mui/icons-material/StarBorder';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchESCO =\n (apiUrl = 'https://ec.europa.eu/esco/api', type = 'skill') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n urlJoin(\n apiUrl,\n `suggest2?text=${encodeURIComponent(\n keyword\n )}&language=${locale}&type=${type}&isInScheme=&facet=&offset=&limit=&full=&selectedVersion=&viewObsolete=`\n )\n );\n if (response.ok) {\n const json = await response.json();\n return json._embedded.results.map(r => ({\n uri: r.uri,\n label: capitalize(r.title.replace('’', \"'\")),\n icon: StarBorderIcon\n }));\n }\n throw new Error('Failed to fetch ESCO server');\n };\n\nexport default fetchESCO;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/interop-components/src/index.js","packages/interop-components/src/dialogs/LexiconCreateDialog.js","packages/interop-components/src/inputs/LexiconAutocompleteInput.js","packages/interop-components/src/forms/CreateOrImportForm.js","packages/interop-components/src/forms/ImportForm.js","packages/interop-components/src/hooks/useFork.js","packages/interop-components/src/hooks/useSync.js","packages/interop-components/src/forms/LexiconImportForm.js","packages/interop-components/src/fetch/fetchWikidata.js","packages/interop-components/src/fetch/fetchESCO.js"],"sourcesContent":["// Dialogs\nexport { default as LexiconCreateDialog } from './dialogs/LexiconCreateDialog';\n\n// Forms\nexport { default as CreateOrImportForm } from './forms/CreateOrImportForm';\nexport { default as ImportForm } from './forms/ImportForm';\nexport { default as LexiconImportForm } from './forms/LexiconImportForm';\n\n// Inputs\nexport { default as LexiconAutocompleteInput } from './inputs/LexiconAutocompleteInput';\n\n// Fetch\nexport { default as fetchWikidata } from './fetch/fetchWikidata';\nexport { default as fetchESCO } from './fetch/fetchESCO';\n\n// Hooks\nexport { default as useFork } from './hooks/useFork';\nexport { default as useSync } from './hooks/useSync';\n","import React, { useCallback, useState } from 'react';\nimport { useCreate, useCreateSuggestionContext, useResourceContext } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent } from '@mui/material';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconCreateDialog = ({ fetchLexicon, selectData }) => {\n const { filter, onCancel, onCreate } = useCreateSuggestionContext();\n const resource = useResourceContext();\n const [value, setValue] = useState(filter || '');\n const [create] = useCreate();\n\n const onClose = useCallback(() => {\n setValue('');\n onCancel();\n }, [setValue, onCancel]);\n\n const onSubmit = useCallback(() => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!value.uri) delete value.summary;\n create(\n resource,\n { data: selectData(value) },\n {\n onSuccess: data => {\n console.log('onSuccess', data);\n setValue('');\n onCreate(data);\n }\n }\n );\n }, [create, onCreate, selectData, value, setValue, resource]);\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default LexiconCreateDialog;\n","import React, { useState, useMemo, useEffect, forwardRef } from 'react';\nimport {\n FieldTitle,\n useInput,\n useTranslate,\n useLocale,\n useNotify,\n useResourceContext,\n InputHelperText\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport AddIcon from '@mui/icons-material/Add';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n }\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (typeof option === 'string') {\n return option;\n }\n if (option.label) {\n return option.label;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst capitalizeFirstLetter = string => string && string.charAt(0).toUpperCase() + string.slice(1);\n\nconst LexiconAutocompleteInput = forwardRef(\n ({ fetchLexicon, source, defaultValue, label, parse, optionText, helperText, ...rest }, ref) => {\n const resource = useResourceContext();\n const classes = useStyles();\n const locale = useLocale();\n const translate = useTranslate();\n const notify = useNotify();\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur },\n fieldState: { isTouched, error },\n formState: { submitError },\n isRequired\n } = useInput({ source, defaultValue, ...rest });\n\n const [keyword, setKeyword] = useState(defaultValue); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n const throttledFetchLexicon = useMemo(\n () =>\n throttle((keyword, callback) => {\n fetchLexicon({ keyword, locale })\n .then(data => callback(data))\n .catch(e => notify(e.message, { type: 'error' }));\n }, 200),\n [locale, fetchLexicon, notify]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty\n if (!keyword) {\n return undefined;\n }\n throttledFetchLexicon(keyword, results => setOptions(results));\n }, [value, keyword, throttledFetchLexicon]);\n\n return (\n {\n // Suggest the creation of a new value\n if (keyword) {\n options.push({\n label: capitalizeFirstLetter(keyword),\n summary: `Ajouter \"${capitalizeFirstLetter(keyword)}\" au dictionnaire`,\n icon: AddIcon\n });\n }\n return options;\n }}\n clearOnBlur // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n selectOnFocus // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n handleHomeEndKeys // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n },\n onFocus: e => {\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n }\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!(isTouched && (error || submitError))}\n helperText={}\n />\n );\n }}\n renderOption={(props, option) => {\n const matches = highlightMatch(option.label, keyword);\n const parts = highlightParse(option.label, matches);\n return (\n \n {React.createElement(option.icon || LanguageIcon, { className: classes.icon })}\n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.summary}\n \n \n \n );\n }}\n />\n );\n }\n);\n\nLexiconAutocompleteInput.defaultProps = {\n optionText: 'label'\n};\n\nexport default LexiconAutocompleteInput;\n","import React, { useState } from 'react';\nimport { SimpleForm } from 'react-admin';\nimport { Box, Tabs, Tab, Divider, useMediaQuery } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ImportForm from './ImportForm';\n\nconst useStyles = makeStyles(() => ({\n tab: {\n maxWidth: 'unset',\n padding: '6px 24px'\n }\n}));\n\nconst CreateOrImportForm = ({ stripProperties, ...rest }) => {\n const [tab, setTab] = useState(0);\n const classes = useStyles();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n return (\n <>\n \n setTab(v)} indicatorColor=\"primary\">\n \n \n \n \n \n {tab === 0 && }\n {tab === 1 && }\n \n );\n};\n\nexport default CreateOrImportForm;\n","import React, { useCallback, useEffect } from 'react';\nimport { SimpleForm, TextInput, RadioButtonGroupInput, useResourceContext } from 'react-admin';\nimport { useFormContext } from 'react-hook-form';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\nimport { ReferenceInput, MultiServerAutocompleteInput } from '@semapps/input-components';\nimport useFork from '../hooks/useFork';\nimport useSync from '../hooks/useSync';\n\nconst ImportFormInputs = () => {\n const resource = useResourceContext();\n const containers = useContainers(resource, '@remote');\n const dataModel = useDataModel(resource);\n\n const { watch, setValue } = useFormContext();\n const watchRemoteUri = watch('remoteUri');\n const watchPlainUri = watch('plainUri');\n\n useEffect(() => {\n if (watchRemoteUri) {\n setValue('plainUri', watchRemoteUri);\n }\n }, [watchRemoteUri]);\n\n useEffect(() => {\n if (watchPlainUri && watchPlainUri !== watchRemoteUri) {\n setValue('remoteUri', null);\n }\n }, [watchRemoteUri, watchPlainUri]);\n\n if (!dataModel) return null;\n\n return (\n <>\n {containers && Object.keys(containers).length > 0 && (\n !!(q && q.length > 1)}\n >\n value.length > 1}\n noOptionsText=\"Tapez au moins deux lettres\"\n emptyText=\"Rechercher...\"\n label=\"Resource distante\"\n fullWidth\n />\n \n )}\n \n \n \n );\n};\n\nconst ImportForm = ({ stripProperties }) => {\n const resource = useResourceContext();\n const fork = useFork(resource);\n const sync = useSync(resource);\n\n const onSubmit = useCallback(\n async ({ plainUri, method }) => {\n if (method === 'fork') {\n await fork(plainUri, stripProperties);\n } else {\n await sync(plainUri);\n }\n },\n [fork, sync, stripProperties]\n );\n\n return (\n \n \n \n );\n};\n\nexport default ImportForm;\n","import { useCallback } from 'react';\nimport { useDataProvider, useRedirect, useNotify } from 'react-admin';\n\nconst useFork = resourceId => {\n const dataProvider = useDataProvider();\n const redirect = useRedirect();\n const notify = useNotify();\n\n return useCallback(\n async (remoteRecordUri, stripProperties = []) => {\n const { data: remoteData } = await dataProvider.getOne(resourceId, { id: remoteRecordUri });\n\n const strippedData = { ...remoteData };\n strippedData['http://www.w3.org/ns/prov#wasDerivedFrom'] = strippedData.id;\n delete strippedData.id;\n delete strippedData['@context'];\n stripProperties.forEach(prop => {\n delete strippedData[prop];\n });\n\n const { data: localData } = await dataProvider.create(resourceId, { data: strippedData });\n\n redirect(`/${resourceId}/${encodeURIComponent(localData.id)}/show`);\n notify('La ressource a bien été copiée', { type: 'success' });\n },\n [resourceId, dataProvider, redirect, notify]\n );\n};\n\nexport default useFork;\n","import { useCallback } from 'react';\nimport { useNotify, useDataProvider, useRedirect } from 'react-admin';\n\nconst useSync = resourceId => {\n const dataProvider = useDataProvider();\n const notify = useNotify();\n const redirect = useRedirect();\n\n return useCallback(\n async remoteRecordUri => {\n await dataProvider.create(resourceId, { id: remoteRecordUri });\n\n redirect(`/${resourceId}/${encodeURIComponent(remoteRecordUri)}/show`);\n notify('La ressource a bien été importée', { type: 'success' });\n },\n [dataProvider, redirect, notify]\n );\n};\n\nexport default useSync;\n","import React, { useCallback } from 'react';\nimport { required, SimpleForm, useSaveContext } from 'react-admin';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconImportForm = ({ fetchLexicon, selectData }) => {\n const { save } = useSaveContext();\n\n const onSubmit = useCallback(\n async ({ lexicon }) => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!lexicon.uri) delete lexicon.summary;\n\n // If the user doesn't select any option, use the text as the label\n if (typeof lexicon === 'string') {\n lexicon = { label: lexicon };\n }\n\n await save(selectData(lexicon));\n },\n [selectData, save]\n );\n\n return (\n \n \n \n );\n};\n\nexport default LexiconImportForm;\n","import LanguageIcon from '@mui/icons-material/Language';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchWikidata =\n (apiUrl = 'https://www.wikidata.org/w/api.php') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n `${apiUrl}?action=wbsearchentities&format=json&language=${locale}&uselang=${locale}&type=item&limit=10&origin=*&search=${encodeURIComponent(\n keyword\n )}`\n );\n if (response.ok) {\n const json = await response.json();\n return json.search.map(r => ({\n uri: r.concepturi,\n label: capitalize(r.match.text),\n summary: capitalize(r.description),\n icon: LanguageIcon\n }));\n }\n throw new Error('Failed to fetch Wikidata server');\n };\n\nexport default fetchWikidata;\n","import urlJoin from 'url-join';\nimport StarBorderIcon from '@mui/icons-material/StarBorder';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchESCO =\n (apiUrl = 'https://ec.europa.eu/esco/api', type = 'skill') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n urlJoin(\n apiUrl,\n `suggest2?text=${encodeURIComponent(\n keyword\n )}&language=${locale}&type=${type}&isInScheme=&facet=&offset=&limit=&full=&selectedVersion=&viewObsolete=`\n )\n );\n if (response.ok) {\n const json = await response.json();\n return json._embedded.results.map(r => ({\n uri: r.uri,\n label: capitalize(r.title.replace('’', \"'\")),\n icon: StarBorderIcon\n }));\n }\n throw new Error('Failed to fetch ESCO server');\n };\n\nexport default fetchESCO;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/interop-components/dist/index.es.js b/src/frontend/packages/interop-components/dist/index.es.js index 7094f54bd..7376e8d2e 100644 --- a/src/frontend/packages/interop-components/dist/index.es.js +++ b/src/frontend/packages/interop-components/dist/index.es.js @@ -525,7 +525,7 @@ const $1cadde849f110c85$var$fetchESCO = (apiUrl = "https://ec.europa.eu/esco/api const json = await response.json(); return json._embedded.results.map((r)=>({ uri: r.uri, - label: $1cadde849f110c85$var$capitalize(r.title.replace("’", "'")), + label: $1cadde849f110c85$var$capitalize(r.title.replace("\u2019", "'")), icon: (0, $e5Hbp$muiiconsmaterialStarBorder) })); } diff --git a/src/frontend/packages/interop-components/dist/index.es.js.map b/src/frontend/packages/interop-components/dist/index.es.js.map index 8bcb811e4..aceb62c73 100644 --- a/src/frontend/packages/interop-components/dist/index.es.js.map +++ b/src/frontend/packages/interop-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/interop-components/src/index.js","packages/interop-components/src/dialogs/LexiconCreateDialog.js","packages/interop-components/src/inputs/LexiconAutocompleteInput.js","packages/interop-components/src/forms/CreateOrImportForm.js","packages/interop-components/src/forms/ImportForm.js","packages/interop-components/src/hooks/useFork.js","packages/interop-components/src/hooks/useSync.js","packages/interop-components/src/forms/LexiconImportForm.js","packages/interop-components/src/fetch/fetchWikidata.js","packages/interop-components/src/fetch/fetchESCO.js"],"sourcesContent":["// Dialogs\nexport { default as LexiconCreateDialog } from './dialogs/LexiconCreateDialog';\n\n// Forms\nexport { default as CreateOrImportForm } from './forms/CreateOrImportForm';\nexport { default as ImportForm } from './forms/ImportForm';\nexport { default as LexiconImportForm } from './forms/LexiconImportForm';\n\n// Inputs\nexport { default as LexiconAutocompleteInput } from './inputs/LexiconAutocompleteInput';\n\n// Fetch\nexport { default as fetchWikidata } from './fetch/fetchWikidata';\nexport { default as fetchESCO } from './fetch/fetchESCO';\n\n// Hooks\nexport { default as useFork } from './hooks/useFork';\nexport { default as useSync } from './hooks/useSync';\n","import React, { useCallback, useState } from 'react';\nimport { useCreate, useCreateSuggestionContext, useResourceContext } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent } from '@mui/material';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconCreateDialog = ({ fetchLexicon, selectData }) => {\n const { filter, onCancel, onCreate } = useCreateSuggestionContext();\n const resource = useResourceContext();\n const [value, setValue] = useState(filter || '');\n const [create] = useCreate();\n\n const onClose = useCallback(() => {\n setValue('');\n onCancel();\n }, [setValue, onCancel]);\n\n const onSubmit = useCallback(() => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!value.uri) delete value.summary;\n create(\n resource,\n { data: selectData(value) },\n {\n onSuccess: data => {\n console.log('onSuccess', data);\n setValue('');\n onCreate(data);\n }\n }\n );\n }, [create, onCreate, selectData, value, setValue, resource]);\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default LexiconCreateDialog;\n","import React, { useState, useMemo, useEffect, forwardRef } from 'react';\nimport {\n FieldTitle,\n useInput,\n useTranslate,\n useLocale,\n useNotify,\n useResourceContext,\n InputHelperText\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport AddIcon from '@mui/icons-material/Add';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n }\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (typeof option === 'string') {\n return option;\n }\n if (option.label) {\n return option.label;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst capitalizeFirstLetter = string => string && string.charAt(0).toUpperCase() + string.slice(1);\n\nconst LexiconAutocompleteInput = forwardRef(\n ({ fetchLexicon, source, defaultValue, label, parse, optionText, helperText, ...rest }, ref) => {\n const resource = useResourceContext();\n const classes = useStyles();\n const locale = useLocale();\n const translate = useTranslate();\n const notify = useNotify();\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur },\n fieldState: { isTouched, error },\n formState: { submitError },\n isRequired\n } = useInput({ source, defaultValue, ...rest });\n\n const [keyword, setKeyword] = useState(defaultValue); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n const throttledFetchLexicon = useMemo(\n () =>\n throttle((keyword, callback) => {\n fetchLexicon({ keyword, locale })\n .then(data => callback(data))\n .catch(e => notify(e.message, { type: 'error' }));\n }, 200),\n [locale, fetchLexicon, notify]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty\n if (!keyword) {\n return undefined;\n }\n throttledFetchLexicon(keyword, results => setOptions(results));\n }, [value, keyword, throttledFetchLexicon]);\n\n return (\n {\n // Suggest the creation of a new value\n if (keyword) {\n options.push({\n label: capitalizeFirstLetter(keyword),\n summary: `Ajouter \"${capitalizeFirstLetter(keyword)}\" au dictionnaire`,\n icon: AddIcon\n });\n }\n return options;\n }}\n clearOnBlur // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n selectOnFocus // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n handleHomeEndKeys // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n },\n onFocus: e => {\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n }\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!(isTouched && (error || submitError))}\n helperText={}\n />\n );\n }}\n renderOption={(props, option) => {\n const matches = highlightMatch(option.label, keyword);\n const parts = highlightParse(option.label, matches);\n return (\n \n {React.createElement(option.icon || LanguageIcon, { className: classes.icon })}\n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.summary}\n \n \n \n );\n }}\n />\n );\n }\n);\n\nLexiconAutocompleteInput.defaultProps = {\n optionText: 'label'\n};\n\nexport default LexiconAutocompleteInput;\n","import React, { useState } from 'react';\nimport { SimpleForm } from 'react-admin';\nimport { Box, Tabs, Tab, Divider, useMediaQuery } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ImportForm from './ImportForm';\n\nconst useStyles = makeStyles(() => ({\n tab: {\n maxWidth: 'unset',\n padding: '6px 24px'\n }\n}));\n\nconst CreateOrImportForm = ({ stripProperties, ...rest }) => {\n const [tab, setTab] = useState(0);\n const classes = useStyles();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n return (\n <>\n \n setTab(v)} indicatorColor=\"primary\">\n \n \n \n \n \n {tab === 0 && }\n {tab === 1 && }\n \n );\n};\n\nexport default CreateOrImportForm;\n","import React, { useCallback, useEffect } from 'react';\nimport { SimpleForm, TextInput, RadioButtonGroupInput, useResourceContext } from 'react-admin';\nimport { useFormContext } from 'react-hook-form';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\nimport { ReferenceInput, MultiServerAutocompleteInput } from '@semapps/input-components';\nimport useFork from '../hooks/useFork';\nimport useSync from '../hooks/useSync';\n\nconst ImportFormInputs = () => {\n const resource = useResourceContext();\n const containers = useContainers(resource, '@remote');\n const dataModel = useDataModel(resource);\n\n const { watch, setValue } = useFormContext();\n const watchRemoteUri = watch('remoteUri');\n const watchPlainUri = watch('plainUri');\n\n useEffect(() => {\n if (watchRemoteUri) {\n setValue('plainUri', watchRemoteUri);\n }\n }, [watchRemoteUri]);\n\n useEffect(() => {\n if (watchPlainUri && watchPlainUri !== watchRemoteUri) {\n setValue('remoteUri', null);\n }\n }, [watchRemoteUri, watchPlainUri]);\n\n if (!dataModel) return null;\n\n return (\n <>\n {containers && Object.keys(containers).length > 0 && (\n !!(q && q.length > 1)}\n >\n value.length > 1}\n noOptionsText=\"Tapez au moins deux lettres\"\n emptyText=\"Rechercher...\"\n label=\"Resource distante\"\n fullWidth\n />\n \n )}\n \n \n \n );\n};\n\nconst ImportForm = ({ stripProperties }) => {\n const resource = useResourceContext();\n const fork = useFork(resource);\n const sync = useSync(resource);\n\n const onSubmit = useCallback(\n async ({ plainUri, method }) => {\n if (method === 'fork') {\n await fork(plainUri, stripProperties);\n } else {\n await sync(plainUri);\n }\n },\n [fork, sync, stripProperties]\n );\n\n return (\n \n \n \n );\n};\n\nexport default ImportForm;\n","import { useCallback } from 'react';\nimport { useDataProvider, useRedirect, useNotify } from 'react-admin';\n\nconst useFork = resourceId => {\n const dataProvider = useDataProvider();\n const redirect = useRedirect();\n const notify = useNotify();\n\n return useCallback(\n async (remoteRecordUri, stripProperties = []) => {\n const { data: remoteData } = await dataProvider.getOne(resourceId, { id: remoteRecordUri });\n\n const strippedData = { ...remoteData };\n strippedData['http://www.w3.org/ns/prov#wasDerivedFrom'] = strippedData.id;\n delete strippedData.id;\n delete strippedData['@context'];\n stripProperties.forEach(prop => {\n delete strippedData[prop];\n });\n\n const { data: localData } = await dataProvider.create(resourceId, { data: strippedData });\n\n redirect(`/${resourceId}/${encodeURIComponent(localData.id)}/show`);\n notify('La ressource a bien été copiée', { type: 'success' });\n },\n [resourceId, dataProvider, redirect, notify]\n );\n};\n\nexport default useFork;\n","import { useCallback } from 'react';\nimport { useNotify, useDataProvider, useRedirect } from 'react-admin';\n\nconst useSync = resourceId => {\n const dataProvider = useDataProvider();\n const notify = useNotify();\n const redirect = useRedirect();\n\n return useCallback(\n async remoteRecordUri => {\n await dataProvider.create(resourceId, { id: remoteRecordUri });\n\n redirect(`/${resourceId}/${encodeURIComponent(remoteRecordUri)}/show`);\n notify('La ressource a bien été importée', { type: 'success' });\n },\n [dataProvider, redirect, notify]\n );\n};\n\nexport default useSync;\n","import React, { useCallback } from 'react';\nimport { required, SimpleForm, useSaveContext } from 'react-admin';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconImportForm = ({ fetchLexicon, selectData }) => {\n const { save } = useSaveContext();\n\n const onSubmit = useCallback(\n async ({ lexicon }) => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!lexicon.uri) delete lexicon.summary;\n\n // If the user doesn't select any option, use the text as the label\n if (typeof lexicon === 'string') {\n lexicon = { label: lexicon };\n }\n\n await save(selectData(lexicon));\n },\n [selectData, save]\n );\n\n return (\n \n \n \n );\n};\n\nexport default LexiconImportForm;\n","import LanguageIcon from '@mui/icons-material/Language';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchWikidata =\n (apiUrl = 'https://www.wikidata.org/w/api.php') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n `${apiUrl}?action=wbsearchentities&format=json&language=${locale}&uselang=${locale}&type=item&limit=10&origin=*&search=${encodeURIComponent(\n keyword\n )}`\n );\n if (response.ok) {\n const json = await response.json();\n return json.search.map(r => ({\n uri: r.concepturi,\n label: capitalize(r.match.text),\n summary: capitalize(r.description),\n icon: LanguageIcon\n }));\n }\n throw new Error('Failed to fetch Wikidata server');\n };\n\nexport default fetchWikidata;\n","import urlJoin from 'url-join';\nimport StarBorderIcon from '@mui/icons-material/StarBorder';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchESCO =\n (apiUrl = 'https://ec.europa.eu/esco/api', type = 'skill') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n urlJoin(\n apiUrl,\n `suggest2?text=${encodeURIComponent(\n keyword\n )}&language=${locale}&type=${type}&isInScheme=&facet=&offset=&limit=&full=&selectedVersion=&viewObsolete=`\n )\n );\n if (response.ok) {\n const json = await response.json();\n return json._embedded.results.map(r => ({\n uri: r.uri,\n label: capitalize(r.title.replace('’', \"'\")),\n icon: StarBorderIcon\n }));\n }\n throw new Error('Failed to fetch ESCO server');\n };\n\nexport default fetchESCO;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/interop-components/src/index.js","packages/interop-components/src/dialogs/LexiconCreateDialog.js","packages/interop-components/src/inputs/LexiconAutocompleteInput.js","packages/interop-components/src/forms/CreateOrImportForm.js","packages/interop-components/src/forms/ImportForm.js","packages/interop-components/src/hooks/useFork.js","packages/interop-components/src/hooks/useSync.js","packages/interop-components/src/forms/LexiconImportForm.js","packages/interop-components/src/fetch/fetchWikidata.js","packages/interop-components/src/fetch/fetchESCO.js"],"sourcesContent":["// Dialogs\nexport { default as LexiconCreateDialog } from './dialogs/LexiconCreateDialog';\n\n// Forms\nexport { default as CreateOrImportForm } from './forms/CreateOrImportForm';\nexport { default as ImportForm } from './forms/ImportForm';\nexport { default as LexiconImportForm } from './forms/LexiconImportForm';\n\n// Inputs\nexport { default as LexiconAutocompleteInput } from './inputs/LexiconAutocompleteInput';\n\n// Fetch\nexport { default as fetchWikidata } from './fetch/fetchWikidata';\nexport { default as fetchESCO } from './fetch/fetchESCO';\n\n// Hooks\nexport { default as useFork } from './hooks/useFork';\nexport { default as useSync } from './hooks/useSync';\n","import React, { useCallback, useState } from 'react';\nimport { useCreate, useCreateSuggestionContext, useResourceContext } from 'react-admin';\nimport { Button, Dialog, DialogActions, DialogContent } from '@mui/material';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconCreateDialog = ({ fetchLexicon, selectData }) => {\n const { filter, onCancel, onCreate } = useCreateSuggestionContext();\n const resource = useResourceContext();\n const [value, setValue] = useState(filter || '');\n const [create] = useCreate();\n\n const onClose = useCallback(() => {\n setValue('');\n onCancel();\n }, [setValue, onCancel]);\n\n const onSubmit = useCallback(() => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!value.uri) delete value.summary;\n create(\n resource,\n { data: selectData(value) },\n {\n onSuccess: data => {\n console.log('onSuccess', data);\n setValue('');\n onCreate(data);\n }\n }\n );\n }, [create, onCreate, selectData, value, setValue, resource]);\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default LexiconCreateDialog;\n","import React, { useState, useMemo, useEffect, forwardRef } from 'react';\nimport {\n FieldTitle,\n useInput,\n useTranslate,\n useLocale,\n useNotify,\n useResourceContext,\n InputHelperText\n} from 'react-admin';\nimport { TextField, Typography, Grid } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport LanguageIcon from '@mui/icons-material/Language';\nimport AddIcon from '@mui/icons-material/Add';\nimport { default as highlightMatch } from 'autosuggest-highlight/match';\nimport { default as highlightParse } from 'autosuggest-highlight/parse';\nimport throttle from 'lodash.throttle';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n color: theme.palette.text.secondary,\n marginRight: theme.spacing(2)\n }\n}));\n\nconst selectOptionText = (option, optionText) => {\n if (typeof option === 'string') {\n return option;\n }\n if (option.label) {\n return option.label;\n }\n if (typeof optionText === 'string') {\n return option[optionText];\n }\n if (typeof optionText === 'function') {\n return optionText(option);\n }\n};\n\nconst capitalizeFirstLetter = string => string && string.charAt(0).toUpperCase() + string.slice(1);\n\nconst LexiconAutocompleteInput = forwardRef(\n ({ fetchLexicon, source, defaultValue, label, parse, optionText, helperText, ...rest }, ref) => {\n const resource = useResourceContext();\n const classes = useStyles();\n const locale = useLocale();\n const translate = useTranslate();\n const notify = useNotify();\n\n // Do not pass the `parse` prop to useInput, as we manually call it on the onChange prop below\n const {\n field: { value, onChange, onBlur },\n fieldState: { isTouched, error },\n formState: { submitError },\n isRequired\n } = useInput({ source, defaultValue, ...rest });\n\n const [keyword, setKeyword] = useState(defaultValue); // Typed keywords\n const [options, setOptions] = useState([]); // Options returned by MapBox\n\n const throttledFetchLexicon = useMemo(\n () =>\n throttle((keyword, callback) => {\n fetchLexicon({ keyword, locale })\n .then(data => callback(data))\n .catch(e => notify(e.message, { type: 'error' }));\n }, 200),\n [locale, fetchLexicon, notify]\n );\n\n useEffect(() => {\n // Do not trigger search if text input is empty\n if (!keyword) {\n return undefined;\n }\n throttledFetchLexicon(keyword, results => setOptions(results));\n }, [value, keyword, throttledFetchLexicon]);\n\n return (\n {\n // Suggest the creation of a new value\n if (keyword) {\n options.push({\n label: capitalizeFirstLetter(keyword),\n summary: `Ajouter \"${capitalizeFirstLetter(keyword)}\" au dictionnaire`,\n icon: AddIcon\n });\n }\n return options;\n }}\n clearOnBlur // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n selectOnFocus // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n handleHomeEndKeys // Recommended for https://v4.mui.com/components/autocomplete/#creatable\n getOptionLabel={option => selectOptionText(option, optionText)}\n isOptionEqualToValue={(option, value) =>\n selectOptionText(option, optionText) === selectOptionText(value, optionText)\n }\n // This function is called when the user selects an option\n onChange={(event, newValue) => {\n // Parse only if the value is not null (happens if the user clears the value)\n if (newValue && parse) newValue = parse(newValue);\n onChange(newValue);\n setOptions([]);\n }}\n onInputChange={(event, newKeyword) => setKeyword(newKeyword)}\n noOptionsText={translate('ra.navigation.no_results')}\n renderInput={params => {\n // Autocomplete=off doesn't work anymore in modern browsers\n // https://stackoverflow.com/a/40791726/7900695\n params.inputProps.autoComplete = 'new-password';\n return (\n {\n onBlur(e);\n if (params.inputProps.onBlur) {\n params.inputProps.onBlur(e);\n }\n },\n onFocus: e => {\n if (params.inputProps.onFocus) {\n params.inputProps.onFocus(e);\n }\n }\n }}\n label={\n label !== '' &&\n label !== false && (\n \n )\n }\n error={!!(isTouched && (error || submitError))}\n helperText={}\n />\n );\n }}\n renderOption={(props, option) => {\n const matches = highlightMatch(option.label, keyword);\n const parts = highlightParse(option.label, matches);\n return (\n \n {React.createElement(option.icon || LanguageIcon, { className: classes.icon })}\n \n {typeof parts === 'string'\n ? parts\n : parts.map((part, index) => (\n \n {part.text}\n \n ))}\n \n {option.summary}\n \n \n \n );\n }}\n />\n );\n }\n);\n\nLexiconAutocompleteInput.defaultProps = {\n optionText: 'label'\n};\n\nexport default LexiconAutocompleteInput;\n","import React, { useState } from 'react';\nimport { SimpleForm } from 'react-admin';\nimport { Box, Tabs, Tab, Divider, useMediaQuery } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ImportForm from './ImportForm';\n\nconst useStyles = makeStyles(() => ({\n tab: {\n maxWidth: 'unset',\n padding: '6px 24px'\n }\n}));\n\nconst CreateOrImportForm = ({ stripProperties, ...rest }) => {\n const [tab, setTab] = useState(0);\n const classes = useStyles();\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'), { noSsr: true });\n return (\n <>\n \n setTab(v)} indicatorColor=\"primary\">\n \n \n \n \n \n {tab === 0 && }\n {tab === 1 && }\n \n );\n};\n\nexport default CreateOrImportForm;\n","import React, { useCallback, useEffect } from 'react';\nimport { SimpleForm, TextInput, RadioButtonGroupInput, useResourceContext } from 'react-admin';\nimport { useFormContext } from 'react-hook-form';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\nimport { ReferenceInput, MultiServerAutocompleteInput } from '@semapps/input-components';\nimport useFork from '../hooks/useFork';\nimport useSync from '../hooks/useSync';\n\nconst ImportFormInputs = () => {\n const resource = useResourceContext();\n const containers = useContainers(resource, '@remote');\n const dataModel = useDataModel(resource);\n\n const { watch, setValue } = useFormContext();\n const watchRemoteUri = watch('remoteUri');\n const watchPlainUri = watch('plainUri');\n\n useEffect(() => {\n if (watchRemoteUri) {\n setValue('plainUri', watchRemoteUri);\n }\n }, [watchRemoteUri]);\n\n useEffect(() => {\n if (watchPlainUri && watchPlainUri !== watchRemoteUri) {\n setValue('remoteUri', null);\n }\n }, [watchRemoteUri, watchPlainUri]);\n\n if (!dataModel) return null;\n\n return (\n <>\n {containers && Object.keys(containers).length > 0 && (\n !!(q && q.length > 1)}\n >\n value.length > 1}\n noOptionsText=\"Tapez au moins deux lettres\"\n emptyText=\"Rechercher...\"\n label=\"Resource distante\"\n fullWidth\n />\n \n )}\n \n \n \n );\n};\n\nconst ImportForm = ({ stripProperties }) => {\n const resource = useResourceContext();\n const fork = useFork(resource);\n const sync = useSync(resource);\n\n const onSubmit = useCallback(\n async ({ plainUri, method }) => {\n if (method === 'fork') {\n await fork(plainUri, stripProperties);\n } else {\n await sync(plainUri);\n }\n },\n [fork, sync, stripProperties]\n );\n\n return (\n \n \n \n );\n};\n\nexport default ImportForm;\n","import { useCallback } from 'react';\nimport { useDataProvider, useRedirect, useNotify } from 'react-admin';\n\nconst useFork = resourceId => {\n const dataProvider = useDataProvider();\n const redirect = useRedirect();\n const notify = useNotify();\n\n return useCallback(\n async (remoteRecordUri, stripProperties = []) => {\n const { data: remoteData } = await dataProvider.getOne(resourceId, { id: remoteRecordUri });\n\n const strippedData = { ...remoteData };\n strippedData['http://www.w3.org/ns/prov#wasDerivedFrom'] = strippedData.id;\n delete strippedData.id;\n delete strippedData['@context'];\n stripProperties.forEach(prop => {\n delete strippedData[prop];\n });\n\n const { data: localData } = await dataProvider.create(resourceId, { data: strippedData });\n\n redirect(`/${resourceId}/${encodeURIComponent(localData.id)}/show`);\n notify('La ressource a bien été copiée', { type: 'success' });\n },\n [resourceId, dataProvider, redirect, notify]\n );\n};\n\nexport default useFork;\n","import { useCallback } from 'react';\nimport { useNotify, useDataProvider, useRedirect } from 'react-admin';\n\nconst useSync = resourceId => {\n const dataProvider = useDataProvider();\n const notify = useNotify();\n const redirect = useRedirect();\n\n return useCallback(\n async remoteRecordUri => {\n await dataProvider.create(resourceId, { id: remoteRecordUri });\n\n redirect(`/${resourceId}/${encodeURIComponent(remoteRecordUri)}/show`);\n notify('La ressource a bien été importée', { type: 'success' });\n },\n [dataProvider, redirect, notify]\n );\n};\n\nexport default useSync;\n","import React, { useCallback } from 'react';\nimport { required, SimpleForm, useSaveContext } from 'react-admin';\nimport LexiconAutocompleteInput from '../inputs/LexiconAutocompleteInput';\n\nconst LexiconImportForm = ({ fetchLexicon, selectData }) => {\n const { save } = useSaveContext();\n\n const onSubmit = useCallback(\n async ({ lexicon }) => {\n // If we have no URI, it means we are creating a new definition\n // Delete the summary as it is \"Ajouter XXX au dictionaire\"\n if (!lexicon.uri) delete lexicon.summary;\n\n // If the user doesn't select any option, use the text as the label\n if (typeof lexicon === 'string') {\n lexicon = { label: lexicon };\n }\n\n await save(selectData(lexicon));\n },\n [selectData, save]\n );\n\n return (\n \n \n \n );\n};\n\nexport default LexiconImportForm;\n","import LanguageIcon from '@mui/icons-material/Language';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchWikidata =\n (apiUrl = 'https://www.wikidata.org/w/api.php') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n `${apiUrl}?action=wbsearchentities&format=json&language=${locale}&uselang=${locale}&type=item&limit=10&origin=*&search=${encodeURIComponent(\n keyword\n )}`\n );\n if (response.ok) {\n const json = await response.json();\n return json.search.map(r => ({\n uri: r.concepturi,\n label: capitalize(r.match.text),\n summary: capitalize(r.description),\n icon: LanguageIcon\n }));\n }\n throw new Error('Failed to fetch Wikidata server');\n };\n\nexport default fetchWikidata;\n","import urlJoin from 'url-join';\nimport StarBorderIcon from '@mui/icons-material/StarBorder';\n\nconst capitalize = s => (s && s[0].toUpperCase() + s.slice(1)) || '';\n\nconst fetchESCO =\n (apiUrl = 'https://ec.europa.eu/esco/api', type = 'skill') =>\n async ({ keyword, locale }) => {\n const response = await fetch(\n urlJoin(\n apiUrl,\n `suggest2?text=${encodeURIComponent(\n keyword\n )}&language=${locale}&type=${type}&isInScheme=&facet=&offset=&limit=&full=&selectedVersion=&viewObsolete=`\n )\n );\n if (response.ok) {\n const json = await response.json();\n return json._embedded.results.map(r => ({\n uri: r.uri,\n label: capitalize(r.title.replace('’', \"'\")),\n icon: StarBorderIcon\n }));\n }\n throw new Error('Failed to fetch ESCO server');\n };\n\nexport default fetchESCO;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/list-components/dist/index.cjs.js b/src/frontend/packages/list-components/dist/index.cjs.js index 33de17b39..b9833f3ae 100644 --- a/src/frontend/packages/list-components/dist/index.cjs.js +++ b/src/frontend/packages/list-components/dist/index.cjs.js @@ -9,9 +9,11 @@ var $1w0zd$semappssemanticdataprovider = require("@semapps/semantic-data-provide var $1w0zd$reactmasonrycss = require("react-masonry-css"); var $1w0zd$reactrouter = require("react-router"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } diff --git a/src/frontend/packages/list-components/dist/index.cjs.js.map b/src/frontend/packages/list-components/dist/index.cjs.js.map index ad27aa05a..02caeb635 100644 --- a/src/frontend/packages/list-components/dist/index.cjs.js.map +++ b/src/frontend/packages/list-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/list-components/src/index.js","packages/list-components/src/ChipList.js","packages/list-components/src/GridList.js","packages/list-components/src/MasonryList.js","packages/list-components/src/ReferenceFilter.js","packages/list-components/src/MultiViewsList/MultiViewsList.js","packages/list-components/src/MultiViewsList/ListActionsWithViews.js","packages/list-components/src/MultiViewsList/ViewsButtons.js","packages/list-components/src/MultiViewsList/ListViewContext.js"],"sourcesContent":["export { default as ChipList } from './ChipList';\nexport { default as GridList } from './GridList';\nexport { default as MasonryList } from './MasonryList';\nexport { default as ReferenceFilter } from './ReferenceFilter';\n\nexport { default as MultiViewsList } from './MultiViewsList/MultiViewsList';\nexport { default as ListActionsWithViews } from './MultiViewsList/ListActionsWithViews';\nexport { default as ListViewContext } from './MultiViewsList/ListViewContext';\nexport { default as ViewsButtons } from './MultiViewsList/ViewsButtons';\n","import React from 'react';\nimport {\n ChipField,\n useCreatePath,\n useListContext,\n sanitizeListRestProps,\n RecordContextProvider,\n Link\n} from 'react-admin';\nimport { LinearProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n link: {\n textDecoration: 'none',\n maxWidth: '100%'\n },\n chipField: {\n maxWidth: '100%'\n },\n addIcon: {\n cursor: 'pointer',\n fontSize: 35,\n position: 'relative',\n top: 2\n },\n launchIcon: {\n width: 20,\n paddingRight: 6,\n marginLeft: -10\n }\n}));\n\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst ChipList = props => {\n const {\n classes: classesOverride,\n className,\n children,\n linkType = 'edit',\n component = 'div',\n primaryText,\n appendLink,\n externalLinks = false,\n ...rest\n } = props;\n const { data, isLoading, resource } = useListContext(props);\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n\n const classes = useStyles(props);\n const Component = component;\n\n if (isLoading) return ;\n\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n if (externalLink) {\n return (\n \n \n }\n // Workaround to force ChipField to be clickable\n onClick={handleClick}\n // Required to display the delete icon\n onDelete={handleClick}\n />\n \n \n );\n }\n if (linkType) {\n return (\n \n \n \n \n \n );\n }\n return (\n \n \n \n );\n })}\n {appendLink && }\n \n );\n};\n\nexport default ChipList;\n","import * as React from 'react';\nimport { useListContext, useCreatePath, Link, RecordContextProvider } from 'react-admin';\nimport { Grid } from '@mui/material';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst GridList = ({ children, linkType, externalLinks, spacing, xs, sm, md, lg, xl }) => {\n const { data, resource, isLoading } = useListContext();\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n if (isLoading || !data) return null;\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n let child;\n\n if (externalLink) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n externalLink: true,\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else if (linkType) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else {\n child = children;\n }\n\n return (\n \n {child}\n \n );\n })}\n \n );\n};\n\nGridList.defaultProps = {\n xs: 6,\n spacing: 3,\n linkType: 'edit',\n externalLinks: false\n};\n\nexport default GridList;\n","import React from 'react';\nimport { useListContext, Link, useCreatePath, RecordContextProvider } from 'react-admin';\nimport { Card, CardActionArea, CardMedia, CardContent, CardActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Masonry from 'react-masonry-css';\n\nconst useStyles = makeStyles(() => ({\n grid: {\n display: 'flex',\n marginLeft: -20,\n marginBottom: -20,\n width: 'auto'\n },\n column: {\n paddingLeft: 20,\n backgroundClip: 'padding-box'\n },\n card: {\n marginBottom: 20\n },\n media: {\n height: 0,\n paddingTop: '56.25%' // 16:9\n }\n}));\n\n/**\n * @example\n * \n * record.image}\n * content={record => (\n * <>\n * {record.title}\n * {record.description}\n * \n * )}\n * linkType=\"show\"\n * />\n * \n */\nconst MasonryList = ({ image, content, actions, breakpointCols, linkType }) => {\n const classes = useStyles();\n const { data, resource } = useListContext();\n const createPath = useCreatePath();\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const imageUrl = typeof image === 'function' ? image(record) : image;\n return (\n \n \n \n \n {imageUrl && }\n {content && {content(record)}}\n \n \n {actions && {actions.map(action => React.createElement(action))}}\n \n \n );\n })}\n \n );\n};\n\nMasonryList.defaultProps = {\n breakpointCols: { default: 3, 1050: 2, 700: 1 },\n linkType: 'edit'\n};\n\nexport default MasonryList;\n","import React, { useEffect } from 'react';\nimport {\n FilterList,\n FilterListItem,\n useGetList,\n useResourceContext,\n useListContext,\n useResourceDefinition\n} from 'react-admin';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\n\n/**\n * @example\n * const FilterAside = () => (\n * \n * \n * \n * \n * \n * \n * \n * );\n */\n\nconst ReferenceFilterCounter = ({ source, id }) => {\n const resourceContext = useResourceContext();\n const { data, isLoading } = useGetList(resourceContext);\n return (\n <>\n  \n {!isLoading && (\n {`(${\n Object.values(data).filter(d => [].concat(d[source]).includes(id)).length\n })`}\n )}\n \n );\n};\n\nconst ReferenceFilter = ({ reference, source, inverseSource, limit, sort, filter, label, icon, showCounters }) => {\n const { data, isLoading } = useGetList(reference, { page: 1, perPage: limit }, sort, filter);\n const currentResource = useResourceDefinition({ resource: reference });\n const resourceContext = useResourceContext();\n const resourceContextDataModel = useDataModel(resourceContext);\n const resourceContextContainers = useContainers(resourceContext);\n\n const { displayedFilters, filterValues, setFilters, hideFilter } = useListContext();\n useEffect(() => {\n // Needed when filter item is active and its last relation is removed\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n if (!params.filter && !isLoading) {\n setFilters({});\n }\n }, []);\n\n const itemIsUsed = itemData => {\n if (!inverseSource) {\n return true;\n }\n if (!resourceContextContainers || !itemData) {\n return false;\n }\n let itemIsUsed = false;\n Object.values(resourceContextContainers).forEach(value => {\n value.forEach(containerUrl => {\n [].concat(itemData[inverseSource]).forEach(inverseSourceData => {\n if (inverseSourceData?.startsWith(containerUrl)) {\n itemIsUsed = true;\n }\n });\n });\n });\n return itemIsUsed;\n };\n\n return (\n \n {data &&\n data\n .filter(itemData => itemIsUsed(itemData))\n .map(itemData => (\n \n {itemData['pair:label']}\n {showCounters && }\n \n }\n value={{ [source]: itemData.id }}\n />\n ))}\n \n );\n};\n\nReferenceFilter.defaultProps = {\n limit: 25,\n showCounters: true\n};\n\nexport default ReferenceFilter;\n","import React, { useState } from 'react';\nimport { List } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListActionsWithViews from './ListActionsWithViews';\nimport ListViewContext from './ListViewContext';\n\nconst MultiViewsList = ({ children, actions, views, ListComponent, ...otherProps }) => {\n const query = new URLSearchParams(useLocation().search);\n const initialView = query.has('view') ? query.get('view') : Object.keys(views)[0];\n const [currentView, setView] = useState(initialView);\n return (\n \n \n {views[currentView].list}\n \n \n );\n};\n\nMultiViewsList.defaultProps = {\n actions: ,\n ListComponent: List\n};\n\nexport default MultiViewsList;\n","import React from 'react';\nimport { CreateButton, ExportButton, useResourceDefinition, TopToolbar, useResourceContext } from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport ViewsButtons from './ViewsButtons';\n\nconst ListActionsWithViews = ({\n bulkActions,\n basePath,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total,\n ...rest\n}) => {\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'));\n const resourceDefinition = useResourceDefinition(rest);\n return (\n \n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && }\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithViews;\n","import React from 'react';\nimport { Button, Link } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListViewContext from './ListViewContext';\n\nconst ViewsButtons = () => {\n const query = new URLSearchParams(useLocation().search);\n const { views, currentView, setView } = React.useContext(ListViewContext);\n return views\n ? Object.entries(views)\n .filter(([key]) => key !== currentView)\n .map(([key, view]) => {\n query.set('view', key);\n query.set('page', 1);\n query.set('perPage', view.perPage);\n if (view.sort) {\n query.set('sort', view.sort.field);\n query.set('order', view.sort.order);\n }\n return (\n \n \n \n );\n })\n : null;\n};\n\nexport default ViewsButtons;\n","import React from 'react';\n\nconst ListViewContext = React.createContext({ views: null, currentView: null, setView: () => null });\n\nexport default ListViewContext;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/list-components/src/index.js","packages/list-components/src/ChipList.js","packages/list-components/src/GridList.js","packages/list-components/src/MasonryList.js","packages/list-components/src/ReferenceFilter.js","packages/list-components/src/MultiViewsList/MultiViewsList.js","packages/list-components/src/MultiViewsList/ListActionsWithViews.js","packages/list-components/src/MultiViewsList/ViewsButtons.js","packages/list-components/src/MultiViewsList/ListViewContext.js"],"sourcesContent":["export { default as ChipList } from './ChipList';\nexport { default as GridList } from './GridList';\nexport { default as MasonryList } from './MasonryList';\nexport { default as ReferenceFilter } from './ReferenceFilter';\n\nexport { default as MultiViewsList } from './MultiViewsList/MultiViewsList';\nexport { default as ListActionsWithViews } from './MultiViewsList/ListActionsWithViews';\nexport { default as ListViewContext } from './MultiViewsList/ListViewContext';\nexport { default as ViewsButtons } from './MultiViewsList/ViewsButtons';\n","import React from 'react';\nimport {\n ChipField,\n useCreatePath,\n useListContext,\n sanitizeListRestProps,\n RecordContextProvider,\n Link\n} from 'react-admin';\nimport { LinearProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n link: {\n textDecoration: 'none',\n maxWidth: '100%'\n },\n chipField: {\n maxWidth: '100%'\n },\n addIcon: {\n cursor: 'pointer',\n fontSize: 35,\n position: 'relative',\n top: 2\n },\n launchIcon: {\n width: 20,\n paddingRight: 6,\n marginLeft: -10\n }\n}));\n\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst ChipList = props => {\n const {\n classes: classesOverride,\n className,\n children,\n linkType = 'edit',\n component = 'div',\n primaryText,\n appendLink,\n externalLinks = false,\n ...rest\n } = props;\n const { data, isLoading, resource } = useListContext(props);\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n\n const classes = useStyles(props);\n const Component = component;\n\n if (isLoading) return ;\n\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n if (externalLink) {\n return (\n \n \n }\n // Workaround to force ChipField to be clickable\n onClick={handleClick}\n // Required to display the delete icon\n onDelete={handleClick}\n />\n \n \n );\n }\n if (linkType) {\n return (\n \n \n \n \n \n );\n }\n return (\n \n \n \n );\n })}\n {appendLink && }\n \n );\n};\n\nexport default ChipList;\n","import * as React from 'react';\nimport { useListContext, useCreatePath, Link, RecordContextProvider } from 'react-admin';\nimport { Grid } from '@mui/material';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst GridList = ({ children, linkType, externalLinks, spacing, xs, sm, md, lg, xl }) => {\n const { data, resource, isLoading } = useListContext();\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n if (isLoading || !data) return null;\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n let child;\n\n if (externalLink) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n externalLink: true,\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else if (linkType) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else {\n child = children;\n }\n\n return (\n \n {child}\n \n );\n })}\n \n );\n};\n\nGridList.defaultProps = {\n xs: 6,\n spacing: 3,\n linkType: 'edit',\n externalLinks: false\n};\n\nexport default GridList;\n","import React from 'react';\nimport { useListContext, Link, useCreatePath, RecordContextProvider } from 'react-admin';\nimport { Card, CardActionArea, CardMedia, CardContent, CardActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Masonry from 'react-masonry-css';\n\nconst useStyles = makeStyles(() => ({\n grid: {\n display: 'flex',\n marginLeft: -20,\n marginBottom: -20,\n width: 'auto'\n },\n column: {\n paddingLeft: 20,\n backgroundClip: 'padding-box'\n },\n card: {\n marginBottom: 20\n },\n media: {\n height: 0,\n paddingTop: '56.25%' // 16:9\n }\n}));\n\n/**\n * @example\n * \n * record.image}\n * content={record => (\n * <>\n * {record.title}\n * {record.description}\n * \n * )}\n * linkType=\"show\"\n * />\n * \n */\nconst MasonryList = ({ image, content, actions, breakpointCols, linkType }) => {\n const classes = useStyles();\n const { data, resource } = useListContext();\n const createPath = useCreatePath();\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const imageUrl = typeof image === 'function' ? image(record) : image;\n return (\n \n \n \n \n {imageUrl && }\n {content && {content(record)}}\n \n \n {actions && {actions.map(action => React.createElement(action))}}\n \n \n );\n })}\n \n );\n};\n\nMasonryList.defaultProps = {\n breakpointCols: { default: 3, 1050: 2, 700: 1 },\n linkType: 'edit'\n};\n\nexport default MasonryList;\n","import React, { useEffect } from 'react';\nimport {\n FilterList,\n FilterListItem,\n useGetList,\n useResourceContext,\n useListContext,\n useResourceDefinition\n} from 'react-admin';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\n\n/**\n * @example\n * const FilterAside = () => (\n * \n * \n * \n * \n * \n * \n * \n * );\n */\n\nconst ReferenceFilterCounter = ({ source, id }) => {\n const resourceContext = useResourceContext();\n const { data, isLoading } = useGetList(resourceContext);\n return (\n <>\n  \n {!isLoading && (\n {`(${\n Object.values(data).filter(d => [].concat(d[source]).includes(id)).length\n })`}\n )}\n \n );\n};\n\nconst ReferenceFilter = ({ reference, source, inverseSource, limit, sort, filter, label, icon, showCounters }) => {\n const { data, isLoading } = useGetList(reference, { page: 1, perPage: limit }, sort, filter);\n const currentResource = useResourceDefinition({ resource: reference });\n const resourceContext = useResourceContext();\n const resourceContextDataModel = useDataModel(resourceContext);\n const resourceContextContainers = useContainers(resourceContext);\n\n const { displayedFilters, filterValues, setFilters, hideFilter } = useListContext();\n useEffect(() => {\n // Needed when filter item is active and its last relation is removed\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n if (!params.filter && !isLoading) {\n setFilters({});\n }\n }, []);\n\n const itemIsUsed = itemData => {\n if (!inverseSource) {\n return true;\n }\n if (!resourceContextContainers || !itemData) {\n return false;\n }\n let itemIsUsed = false;\n Object.values(resourceContextContainers).forEach(value => {\n value.forEach(containerUrl => {\n [].concat(itemData[inverseSource]).forEach(inverseSourceData => {\n if (inverseSourceData?.startsWith(containerUrl)) {\n itemIsUsed = true;\n }\n });\n });\n });\n return itemIsUsed;\n };\n\n return (\n \n {data &&\n data\n .filter(itemData => itemIsUsed(itemData))\n .map(itemData => (\n \n {itemData['pair:label']}\n {showCounters && }\n \n }\n value={{ [source]: itemData.id }}\n />\n ))}\n \n );\n};\n\nReferenceFilter.defaultProps = {\n limit: 25,\n showCounters: true\n};\n\nexport default ReferenceFilter;\n","import React, { useState } from 'react';\nimport { List } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListActionsWithViews from './ListActionsWithViews';\nimport ListViewContext from './ListViewContext';\n\nconst MultiViewsList = ({ children, actions, views, ListComponent, ...otherProps }) => {\n const query = new URLSearchParams(useLocation().search);\n const initialView = query.has('view') ? query.get('view') : Object.keys(views)[0];\n const [currentView, setView] = useState(initialView);\n return (\n \n \n {views[currentView].list}\n \n \n );\n};\n\nMultiViewsList.defaultProps = {\n actions: ,\n ListComponent: List\n};\n\nexport default MultiViewsList;\n","import React from 'react';\nimport { CreateButton, ExportButton, useResourceDefinition, TopToolbar, useResourceContext } from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport ViewsButtons from './ViewsButtons';\n\nconst ListActionsWithViews = ({\n bulkActions,\n basePath,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total,\n ...rest\n}) => {\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'));\n const resourceDefinition = useResourceDefinition(rest);\n return (\n \n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && }\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithViews;\n","import React from 'react';\nimport { Button, Link } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListViewContext from './ListViewContext';\n\nconst ViewsButtons = () => {\n const query = new URLSearchParams(useLocation().search);\n const { views, currentView, setView } = React.useContext(ListViewContext);\n return views\n ? Object.entries(views)\n .filter(([key]) => key !== currentView)\n .map(([key, view]) => {\n query.set('view', key);\n query.set('page', 1);\n query.set('perPage', view.perPage);\n if (view.sort) {\n query.set('sort', view.sort.field);\n query.set('order', view.sort.order);\n }\n return (\n \n \n \n );\n })\n : null;\n};\n\nexport default ViewsButtons;\n","import React from 'react';\n\nconst ListViewContext = React.createContext({ views: null, currentView: null, setView: () => null });\n\nexport default ListViewContext;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/list-components/dist/index.es.js.map b/src/frontend/packages/list-components/dist/index.es.js.map index 7c33c6cb4..3113064e1 100644 --- a/src/frontend/packages/list-components/dist/index.es.js.map +++ b/src/frontend/packages/list-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/list-components/src/index.js","packages/list-components/src/ChipList.js","packages/list-components/src/GridList.js","packages/list-components/src/MasonryList.js","packages/list-components/src/ReferenceFilter.js","packages/list-components/src/MultiViewsList/MultiViewsList.js","packages/list-components/src/MultiViewsList/ListActionsWithViews.js","packages/list-components/src/MultiViewsList/ViewsButtons.js","packages/list-components/src/MultiViewsList/ListViewContext.js"],"sourcesContent":["export { default as ChipList } from './ChipList';\nexport { default as GridList } from './GridList';\nexport { default as MasonryList } from './MasonryList';\nexport { default as ReferenceFilter } from './ReferenceFilter';\n\nexport { default as MultiViewsList } from './MultiViewsList/MultiViewsList';\nexport { default as ListActionsWithViews } from './MultiViewsList/ListActionsWithViews';\nexport { default as ListViewContext } from './MultiViewsList/ListViewContext';\nexport { default as ViewsButtons } from './MultiViewsList/ViewsButtons';\n","import React from 'react';\nimport {\n ChipField,\n useCreatePath,\n useListContext,\n sanitizeListRestProps,\n RecordContextProvider,\n Link\n} from 'react-admin';\nimport { LinearProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n link: {\n textDecoration: 'none',\n maxWidth: '100%'\n },\n chipField: {\n maxWidth: '100%'\n },\n addIcon: {\n cursor: 'pointer',\n fontSize: 35,\n position: 'relative',\n top: 2\n },\n launchIcon: {\n width: 20,\n paddingRight: 6,\n marginLeft: -10\n }\n}));\n\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst ChipList = props => {\n const {\n classes: classesOverride,\n className,\n children,\n linkType = 'edit',\n component = 'div',\n primaryText,\n appendLink,\n externalLinks = false,\n ...rest\n } = props;\n const { data, isLoading, resource } = useListContext(props);\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n\n const classes = useStyles(props);\n const Component = component;\n\n if (isLoading) return ;\n\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n if (externalLink) {\n return (\n \n \n }\n // Workaround to force ChipField to be clickable\n onClick={handleClick}\n // Required to display the delete icon\n onDelete={handleClick}\n />\n \n \n );\n }\n if (linkType) {\n return (\n \n \n \n \n \n );\n }\n return (\n \n \n \n );\n })}\n {appendLink && }\n \n );\n};\n\nexport default ChipList;\n","import * as React from 'react';\nimport { useListContext, useCreatePath, Link, RecordContextProvider } from 'react-admin';\nimport { Grid } from '@mui/material';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst GridList = ({ children, linkType, externalLinks, spacing, xs, sm, md, lg, xl }) => {\n const { data, resource, isLoading } = useListContext();\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n if (isLoading || !data) return null;\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n let child;\n\n if (externalLink) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n externalLink: true,\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else if (linkType) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else {\n child = children;\n }\n\n return (\n \n {child}\n \n );\n })}\n \n );\n};\n\nGridList.defaultProps = {\n xs: 6,\n spacing: 3,\n linkType: 'edit',\n externalLinks: false\n};\n\nexport default GridList;\n","import React from 'react';\nimport { useListContext, Link, useCreatePath, RecordContextProvider } from 'react-admin';\nimport { Card, CardActionArea, CardMedia, CardContent, CardActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Masonry from 'react-masonry-css';\n\nconst useStyles = makeStyles(() => ({\n grid: {\n display: 'flex',\n marginLeft: -20,\n marginBottom: -20,\n width: 'auto'\n },\n column: {\n paddingLeft: 20,\n backgroundClip: 'padding-box'\n },\n card: {\n marginBottom: 20\n },\n media: {\n height: 0,\n paddingTop: '56.25%' // 16:9\n }\n}));\n\n/**\n * @example\n * \n * record.image}\n * content={record => (\n * <>\n * {record.title}\n * {record.description}\n * \n * )}\n * linkType=\"show\"\n * />\n * \n */\nconst MasonryList = ({ image, content, actions, breakpointCols, linkType }) => {\n const classes = useStyles();\n const { data, resource } = useListContext();\n const createPath = useCreatePath();\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const imageUrl = typeof image === 'function' ? image(record) : image;\n return (\n \n \n \n \n {imageUrl && }\n {content && {content(record)}}\n \n \n {actions && {actions.map(action => React.createElement(action))}}\n \n \n );\n })}\n \n );\n};\n\nMasonryList.defaultProps = {\n breakpointCols: { default: 3, 1050: 2, 700: 1 },\n linkType: 'edit'\n};\n\nexport default MasonryList;\n","import React, { useEffect } from 'react';\nimport {\n FilterList,\n FilterListItem,\n useGetList,\n useResourceContext,\n useListContext,\n useResourceDefinition\n} from 'react-admin';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\n\n/**\n * @example\n * const FilterAside = () => (\n * \n * \n * \n * \n * \n * \n * \n * );\n */\n\nconst ReferenceFilterCounter = ({ source, id }) => {\n const resourceContext = useResourceContext();\n const { data, isLoading } = useGetList(resourceContext);\n return (\n <>\n  \n {!isLoading && (\n {`(${\n Object.values(data).filter(d => [].concat(d[source]).includes(id)).length\n })`}\n )}\n \n );\n};\n\nconst ReferenceFilter = ({ reference, source, inverseSource, limit, sort, filter, label, icon, showCounters }) => {\n const { data, isLoading } = useGetList(reference, { page: 1, perPage: limit }, sort, filter);\n const currentResource = useResourceDefinition({ resource: reference });\n const resourceContext = useResourceContext();\n const resourceContextDataModel = useDataModel(resourceContext);\n const resourceContextContainers = useContainers(resourceContext);\n\n const { displayedFilters, filterValues, setFilters, hideFilter } = useListContext();\n useEffect(() => {\n // Needed when filter item is active and its last relation is removed\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n if (!params.filter && !isLoading) {\n setFilters({});\n }\n }, []);\n\n const itemIsUsed = itemData => {\n if (!inverseSource) {\n return true;\n }\n if (!resourceContextContainers || !itemData) {\n return false;\n }\n let itemIsUsed = false;\n Object.values(resourceContextContainers).forEach(value => {\n value.forEach(containerUrl => {\n [].concat(itemData[inverseSource]).forEach(inverseSourceData => {\n if (inverseSourceData?.startsWith(containerUrl)) {\n itemIsUsed = true;\n }\n });\n });\n });\n return itemIsUsed;\n };\n\n return (\n \n {data &&\n data\n .filter(itemData => itemIsUsed(itemData))\n .map(itemData => (\n \n {itemData['pair:label']}\n {showCounters && }\n \n }\n value={{ [source]: itemData.id }}\n />\n ))}\n \n );\n};\n\nReferenceFilter.defaultProps = {\n limit: 25,\n showCounters: true\n};\n\nexport default ReferenceFilter;\n","import React, { useState } from 'react';\nimport { List } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListActionsWithViews from './ListActionsWithViews';\nimport ListViewContext from './ListViewContext';\n\nconst MultiViewsList = ({ children, actions, views, ListComponent, ...otherProps }) => {\n const query = new URLSearchParams(useLocation().search);\n const initialView = query.has('view') ? query.get('view') : Object.keys(views)[0];\n const [currentView, setView] = useState(initialView);\n return (\n \n \n {views[currentView].list}\n \n \n );\n};\n\nMultiViewsList.defaultProps = {\n actions: ,\n ListComponent: List\n};\n\nexport default MultiViewsList;\n","import React from 'react';\nimport { CreateButton, ExportButton, useResourceDefinition, TopToolbar, useResourceContext } from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport ViewsButtons from './ViewsButtons';\n\nconst ListActionsWithViews = ({\n bulkActions,\n basePath,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total,\n ...rest\n}) => {\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'));\n const resourceDefinition = useResourceDefinition(rest);\n return (\n \n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && }\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithViews;\n","import React from 'react';\nimport { Button, Link } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListViewContext from './ListViewContext';\n\nconst ViewsButtons = () => {\n const query = new URLSearchParams(useLocation().search);\n const { views, currentView, setView } = React.useContext(ListViewContext);\n return views\n ? Object.entries(views)\n .filter(([key]) => key !== currentView)\n .map(([key, view]) => {\n query.set('view', key);\n query.set('page', 1);\n query.set('perPage', view.perPage);\n if (view.sort) {\n query.set('sort', view.sort.field);\n query.set('order', view.sort.order);\n }\n return (\n \n \n \n );\n })\n : null;\n};\n\nexport default ViewsButtons;\n","import React from 'react';\n\nconst ListViewContext = React.createContext({ views: null, currentView: null, setView: () => null });\n\nexport default ListViewContext;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/list-components/src/index.js","packages/list-components/src/ChipList.js","packages/list-components/src/GridList.js","packages/list-components/src/MasonryList.js","packages/list-components/src/ReferenceFilter.js","packages/list-components/src/MultiViewsList/MultiViewsList.js","packages/list-components/src/MultiViewsList/ListActionsWithViews.js","packages/list-components/src/MultiViewsList/ViewsButtons.js","packages/list-components/src/MultiViewsList/ListViewContext.js"],"sourcesContent":["export { default as ChipList } from './ChipList';\nexport { default as GridList } from './GridList';\nexport { default as MasonryList } from './MasonryList';\nexport { default as ReferenceFilter } from './ReferenceFilter';\n\nexport { default as MultiViewsList } from './MultiViewsList/MultiViewsList';\nexport { default as ListActionsWithViews } from './MultiViewsList/ListActionsWithViews';\nexport { default as ListViewContext } from './MultiViewsList/ListViewContext';\nexport { default as ViewsButtons } from './MultiViewsList/ViewsButtons';\n","import React from 'react';\nimport {\n ChipField,\n useCreatePath,\n useListContext,\n sanitizeListRestProps,\n RecordContextProvider,\n Link\n} from 'react-admin';\nimport { LinearProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport LaunchIcon from '@mui/icons-material/Launch';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n link: {\n textDecoration: 'none',\n maxWidth: '100%'\n },\n chipField: {\n maxWidth: '100%'\n },\n addIcon: {\n cursor: 'pointer',\n fontSize: 35,\n position: 'relative',\n top: 2\n },\n launchIcon: {\n width: 20,\n paddingRight: 6,\n marginLeft: -10\n }\n}));\n\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst ChipList = props => {\n const {\n classes: classesOverride,\n className,\n children,\n linkType = 'edit',\n component = 'div',\n primaryText,\n appendLink,\n externalLinks = false,\n ...rest\n } = props;\n const { data, isLoading, resource } = useListContext(props);\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n\n const classes = useStyles(props);\n const Component = component;\n\n if (isLoading) return ;\n\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n if (externalLink) {\n return (\n \n \n }\n // Workaround to force ChipField to be clickable\n onClick={handleClick}\n // Required to display the delete icon\n onDelete={handleClick}\n />\n \n \n );\n }\n if (linkType) {\n return (\n \n \n \n \n \n );\n }\n return (\n \n \n \n );\n })}\n {appendLink && }\n \n );\n};\n\nexport default ChipList;\n","import * as React from 'react';\nimport { useListContext, useCreatePath, Link, RecordContextProvider } from 'react-admin';\nimport { Grid } from '@mui/material';\nimport { useGetExternalLink } from '@semapps/semantic-data-provider';\n\n// useful to prevent click bubbling in a datagrid with rowClick\nconst stopPropagation = e => e.stopPropagation();\n\n// Our handleClick does nothing as we wrap the children inside a Link but it is\n// required by ChipField, which uses a Chip from material-ui.\n// The material-ui Chip requires an onClick handler to behave like a clickable element.\nconst handleClick = () => {};\n\nconst GridList = ({ children, linkType, externalLinks, spacing, xs, sm, md, lg, xl }) => {\n const { data, resource, isLoading } = useListContext();\n const getExternalLink = useGetExternalLink(externalLinks);\n const createPath = useCreatePath();\n if (isLoading || !data) return null;\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const externalLink = getExternalLink(record);\n let child;\n\n if (externalLink) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n externalLink: true,\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else if (linkType) {\n child = (\n \n {React.cloneElement(React.Children.only(children), {\n // Workaround to force ChipField to be clickable\n onClick: handleClick\n })}\n \n );\n } else {\n child = children;\n }\n\n return (\n \n {child}\n \n );\n })}\n \n );\n};\n\nGridList.defaultProps = {\n xs: 6,\n spacing: 3,\n linkType: 'edit',\n externalLinks: false\n};\n\nexport default GridList;\n","import React from 'react';\nimport { useListContext, Link, useCreatePath, RecordContextProvider } from 'react-admin';\nimport { Card, CardActionArea, CardMedia, CardContent, CardActions } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Masonry from 'react-masonry-css';\n\nconst useStyles = makeStyles(() => ({\n grid: {\n display: 'flex',\n marginLeft: -20,\n marginBottom: -20,\n width: 'auto'\n },\n column: {\n paddingLeft: 20,\n backgroundClip: 'padding-box'\n },\n card: {\n marginBottom: 20\n },\n media: {\n height: 0,\n paddingTop: '56.25%' // 16:9\n }\n}));\n\n/**\n * @example\n * \n * record.image}\n * content={record => (\n * <>\n * {record.title}\n * {record.description}\n * \n * )}\n * linkType=\"show\"\n * />\n * \n */\nconst MasonryList = ({ image, content, actions, breakpointCols, linkType }) => {\n const classes = useStyles();\n const { data, resource } = useListContext();\n const createPath = useCreatePath();\n return (\n \n {data.map(record => {\n if (!record || record._error) return null;\n const imageUrl = typeof image === 'function' ? image(record) : image;\n return (\n \n \n \n \n {imageUrl && }\n {content && {content(record)}}\n \n \n {actions && {actions.map(action => React.createElement(action))}}\n \n \n );\n })}\n \n );\n};\n\nMasonryList.defaultProps = {\n breakpointCols: { default: 3, 1050: 2, 700: 1 },\n linkType: 'edit'\n};\n\nexport default MasonryList;\n","import React, { useEffect } from 'react';\nimport {\n FilterList,\n FilterListItem,\n useGetList,\n useResourceContext,\n useListContext,\n useResourceDefinition\n} from 'react-admin';\nimport { useContainers, useDataModel } from '@semapps/semantic-data-provider';\n\n/**\n * @example\n * const FilterAside = () => (\n * \n * \n * \n * \n * \n * \n * \n * );\n */\n\nconst ReferenceFilterCounter = ({ source, id }) => {\n const resourceContext = useResourceContext();\n const { data, isLoading } = useGetList(resourceContext);\n return (\n <>\n  \n {!isLoading && (\n {`(${\n Object.values(data).filter(d => [].concat(d[source]).includes(id)).length\n })`}\n )}\n \n );\n};\n\nconst ReferenceFilter = ({ reference, source, inverseSource, limit, sort, filter, label, icon, showCounters }) => {\n const { data, isLoading } = useGetList(reference, { page: 1, perPage: limit }, sort, filter);\n const currentResource = useResourceDefinition({ resource: reference });\n const resourceContext = useResourceContext();\n const resourceContextDataModel = useDataModel(resourceContext);\n const resourceContextContainers = useContainers(resourceContext);\n\n const { displayedFilters, filterValues, setFilters, hideFilter } = useListContext();\n useEffect(() => {\n // Needed when filter item is active and its last relation is removed\n const urlSearchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(urlSearchParams.entries());\n if (!params.filter && !isLoading) {\n setFilters({});\n }\n }, []);\n\n const itemIsUsed = itemData => {\n if (!inverseSource) {\n return true;\n }\n if (!resourceContextContainers || !itemData) {\n return false;\n }\n let itemIsUsed = false;\n Object.values(resourceContextContainers).forEach(value => {\n value.forEach(containerUrl => {\n [].concat(itemData[inverseSource]).forEach(inverseSourceData => {\n if (inverseSourceData?.startsWith(containerUrl)) {\n itemIsUsed = true;\n }\n });\n });\n });\n return itemIsUsed;\n };\n\n return (\n \n {data &&\n data\n .filter(itemData => itemIsUsed(itemData))\n .map(itemData => (\n \n {itemData['pair:label']}\n {showCounters && }\n \n }\n value={{ [source]: itemData.id }}\n />\n ))}\n \n );\n};\n\nReferenceFilter.defaultProps = {\n limit: 25,\n showCounters: true\n};\n\nexport default ReferenceFilter;\n","import React, { useState } from 'react';\nimport { List } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListActionsWithViews from './ListActionsWithViews';\nimport ListViewContext from './ListViewContext';\n\nconst MultiViewsList = ({ children, actions, views, ListComponent, ...otherProps }) => {\n const query = new URLSearchParams(useLocation().search);\n const initialView = query.has('view') ? query.get('view') : Object.keys(views)[0];\n const [currentView, setView] = useState(initialView);\n return (\n \n \n {views[currentView].list}\n \n \n );\n};\n\nMultiViewsList.defaultProps = {\n actions: ,\n ListComponent: List\n};\n\nexport default MultiViewsList;\n","import React from 'react';\nimport { CreateButton, ExportButton, useResourceDefinition, TopToolbar, useResourceContext } from 'react-admin';\nimport { useMediaQuery } from '@mui/material';\nimport ViewsButtons from './ViewsButtons';\n\nconst ListActionsWithViews = ({\n bulkActions,\n basePath,\n sort,\n displayedFilters,\n exporter,\n filters,\n filterValues,\n onUnselectItems,\n selectedIds,\n showFilter,\n total,\n ...rest\n}) => {\n const xs = useMediaQuery(theme => theme.breakpoints.down('sm'));\n const resourceDefinition = useResourceDefinition(rest);\n return (\n \n \n {filters &&\n React.cloneElement(filters, {\n showFilter,\n displayedFilters,\n filterValues,\n context: 'button'\n })}\n {resourceDefinition.hasCreate && }\n {!xs && exporter !== false && (\n \n )}\n {bulkActions &&\n React.cloneElement(bulkActions, {\n filterValues,\n selectedIds,\n onUnselectItems\n })}\n \n );\n};\n\nexport default ListActionsWithViews;\n","import React from 'react';\nimport { Button, Link } from 'react-admin';\nimport { useLocation } from 'react-router';\nimport ListViewContext from './ListViewContext';\n\nconst ViewsButtons = () => {\n const query = new URLSearchParams(useLocation().search);\n const { views, currentView, setView } = React.useContext(ListViewContext);\n return views\n ? Object.entries(views)\n .filter(([key]) => key !== currentView)\n .map(([key, view]) => {\n query.set('view', key);\n query.set('page', 1);\n query.set('perPage', view.perPage);\n if (view.sort) {\n query.set('sort', view.sort.field);\n query.set('order', view.sort.order);\n }\n return (\n \n \n \n );\n })\n : null;\n};\n\nexport default ViewsButtons;\n","import React from 'react';\n\nconst ListViewContext = React.createContext({ views: null, currentView: null, setView: () => null });\n\nexport default ListViewContext;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/markdown-components/dist/index.cjs.js b/src/frontend/packages/markdown-components/dist/index.cjs.js index f0dd464a4..f057d0f1f 100644 --- a/src/frontend/packages/markdown-components/dist/index.cjs.js +++ b/src/frontend/packages/markdown-components/dist/index.cjs.js @@ -7,9 +7,11 @@ var $7rG7r$reactmde = require("react-mde"); var $7rG7r$muimaterial = require("@mui/material"); var $7rG7r$muimaterialstyles = require("@mui/material/styles"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } diff --git a/src/frontend/packages/markdown-components/dist/index.cjs.js.map b/src/frontend/packages/markdown-components/dist/index.cjs.js.map index 1e7f1bb40..a11c472d7 100644 --- a/src/frontend/packages/markdown-components/dist/index.cjs.js.map +++ b/src/frontend/packages/markdown-components/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/markdown-components/src/index.ts","packages/markdown-components/src/MarkdownField.js","packages/markdown-components/src/MarkdownInput.tsx","packages/markdown-components/src/useLoadLinks.js"],"sourcesContent":["export { default as MarkdownField } from './MarkdownField';\nexport { default as MarkdownInput } from './MarkdownInput';\nexport { default as useLoadLinks } from './useLoadLinks';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash/get';\n\nconst MarkdownField = ({ source, LabelComponent, overrides = {}, ...rest }) => {\n const record = useRecordContext();\n if (!record || !get(record, source)) return null;\n\n return (\n \n {props.label}\n {React.createElement(type, props, children)}\n \n );\n }\n return React.createElement(type, props, children);\n },\n overrides: {\n h1: LabelComponent,\n ...overrides\n },\n ...rest\n }}\n >\n {get(record, source)}\n \n );\n};\n\nMarkdownField.defaultProps = {\n LabelComponent: 'h2'\n};\n\nexport default MarkdownField;\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useState, FunctionComponent } from 'react';\nimport ReactMde, { ReactMdeProps } from 'react-mde';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useInput, InputHelperText, useTranslateLabel, TextInputProps } from 'react-admin';\nimport { FormControl, FormHelperText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst StyledFormControl = styled(FormControl)(({ theme }) => ({\n '& > fieldset': {\n borderWidth: 1,\n borderStyle: 'solid',\n padding: 0,\n borderRadius: theme.shape.borderRadius,\n margin: 1\n },\n\n '& > fieldset:hover': {\n borderColor: theme.palette.text.primary\n },\n\n '& > fieldset:focus-within': {\n borderColor: theme.palette.primary.main,\n borderWidth: 2,\n marginLeft: 0\n },\n\n '& > fieldset > legend': {\n color: theme.palette.text.secondary,\n marginLeft: 10,\n fontSize: theme.typography.caption.fontSize\n },\n\n '& > fieldset:focus-within > legend': {\n color: theme.palette.primary.main\n },\n\n '& .react-mde': {\n borderWidth: 0,\n borderRadius: theme.shape.borderRadius,\n marginTop: -5\n },\n\n '& .mde-header': {\n background: 'transparent'\n },\n\n '& .mde-text:focus': {\n outline: 'none'\n },\n\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n\n '&.empty': {\n '& > fieldset': {\n paddingTop: 10,\n marginTop: 9\n },\n '& > fieldset:focus-within': {\n paddingTop: 0,\n margin: 0,\n marginTop: 1\n },\n '& > fieldset > legend': {\n display: 'none'\n },\n '& > fieldset:focus-within > legend': {\n display: 'block'\n }\n },\n\n '&.validationError': {\n '& > fieldset': {\n borderColor: theme.palette.error.main\n },\n '& > fieldset > legend, & .mde-text::placeholder': {\n color: theme.palette.error.main\n },\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n '& p.MuiFormHelperText-root': {\n color: theme.palette.error.main\n }\n }\n}));\n\ntype Props = TextInputProps & {\n overrides?: MarkdownToJSX.Overrides;\n reactMdeProps?: ReactMdeProps;\n};\n\nconst MarkdownInput: FunctionComponent = props => {\n const { label, source, helperText, fullWidth, validate, overrides, reactMdeProps } = props;\n const [tab, setTab] = useState<'write' | 'preview'>('write');\n const {\n field: { value, onChange },\n fieldState: { isDirty, invalid, error, isTouched },\n formState: { isSubmitted },\n isRequired\n } = useInput({ source, validate });\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = `${translateLabel({ label, source })}${isRequired ? '*' : ''}`;\n\n return (\n \n
    \n {translatedLabel}\n onChange(val)}\n onTabChange={newTab => setTab(newTab)}\n /* eslint-disable-next-line react/no-unstable-nested-components */\n generateMarkdownPreview={async markdown => (\n \n {markdown}\n \n )}\n selectedTab={tab}\n childProps={{ textArea: { placeholder: translatedLabel } }}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...reactMdeProps}\n />\n
    \n \n \n \n \n );\n};\n\nexport default MarkdownInput;\n","import { useDataProvider, useTranslate } from 'react-admin';\n\nconst useLoadLinks = (resourceType, labelProp) => {\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n return async keyword => {\n if (keyword) {\n const results = await dataProvider.getList(resourceType, {\n pagination: {\n page: 1,\n perPage: 5\n },\n filter: { q: keyword }\n });\n if (results.total > 0) {\n return results.data.map(record => ({\n preview: record[labelProp],\n value: `[${record[labelProp]}](/${resourceType}/${encodeURIComponent(record.id)}/show)`\n }));\n }\n return [{ preview: translate('ra.navigation.no_results'), value: `[${keyword}` }];\n }\n return [{ preview: translate('ra.action.search'), value: `[${keyword}` }];\n };\n};\n\nexport default useLoadLinks;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file +{"mappings":"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","sources":["packages/markdown-components/src/index.ts","packages/markdown-components/src/MarkdownField.js","packages/markdown-components/src/MarkdownInput.tsx","packages/markdown-components/src/useLoadLinks.js"],"sourcesContent":["export { default as MarkdownField } from './MarkdownField';\nexport { default as MarkdownInput } from './MarkdownInput';\nexport { default as useLoadLinks } from './useLoadLinks';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash/get';\n\nconst MarkdownField = ({ source, LabelComponent, overrides = {}, ...rest }) => {\n const record = useRecordContext();\n if (!record || !get(record, source)) return null;\n\n return (\n \n {props.label}\n {React.createElement(type, props, children)}\n \n );\n }\n return React.createElement(type, props, children);\n },\n overrides: {\n h1: LabelComponent,\n ...overrides\n },\n ...rest\n }}\n >\n {get(record, source)}\n \n );\n};\n\nMarkdownField.defaultProps = {\n LabelComponent: 'h2'\n};\n\nexport default MarkdownField;\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useState, FunctionComponent } from 'react';\nimport ReactMde, { ReactMdeProps } from 'react-mde';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useInput, InputHelperText, useTranslateLabel, TextInputProps } from 'react-admin';\nimport { FormControl, FormHelperText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst StyledFormControl = styled(FormControl)(({ theme }) => ({\n '& > fieldset': {\n borderWidth: 1,\n borderStyle: 'solid',\n padding: 0,\n borderRadius: theme.shape.borderRadius,\n margin: 1\n },\n\n '& > fieldset:hover': {\n borderColor: theme.palette.text.primary\n },\n\n '& > fieldset:focus-within': {\n borderColor: theme.palette.primary.main,\n borderWidth: 2,\n marginLeft: 0\n },\n\n '& > fieldset > legend': {\n color: theme.palette.text.secondary,\n marginLeft: 10,\n fontSize: theme.typography.caption.fontSize\n },\n\n '& > fieldset:focus-within > legend': {\n color: theme.palette.primary.main\n },\n\n '& .react-mde': {\n borderWidth: 0,\n borderRadius: theme.shape.borderRadius,\n marginTop: -5\n },\n\n '& .mde-header': {\n background: 'transparent'\n },\n\n '& .mde-text:focus': {\n outline: 'none'\n },\n\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n\n '&.empty': {\n '& > fieldset': {\n paddingTop: 10,\n marginTop: 9\n },\n '& > fieldset:focus-within': {\n paddingTop: 0,\n margin: 0,\n marginTop: 1\n },\n '& > fieldset > legend': {\n display: 'none'\n },\n '& > fieldset:focus-within > legend': {\n display: 'block'\n }\n },\n\n '&.validationError': {\n '& > fieldset': {\n borderColor: theme.palette.error.main\n },\n '& > fieldset > legend, & .mde-text::placeholder': {\n color: theme.palette.error.main\n },\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n '& p.MuiFormHelperText-root': {\n color: theme.palette.error.main\n }\n }\n}));\n\ntype Props = TextInputProps & {\n overrides?: MarkdownToJSX.Overrides;\n reactMdeProps?: ReactMdeProps;\n};\n\nconst MarkdownInput: FunctionComponent = props => {\n const { label, source, helperText, fullWidth, validate, overrides, reactMdeProps } = props;\n const [tab, setTab] = useState<'write' | 'preview'>('write');\n const {\n field: { value, onChange },\n fieldState: { isDirty, invalid, error, isTouched },\n formState: { isSubmitted },\n isRequired\n } = useInput({ source, validate });\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = `${translateLabel({ label, source })}${isRequired ? '*' : ''}`;\n\n return (\n \n
    \n {translatedLabel}\n onChange(val)}\n onTabChange={newTab => setTab(newTab)}\n /* eslint-disable-next-line react/no-unstable-nested-components */\n generateMarkdownPreview={async markdown => (\n \n {markdown}\n \n )}\n selectedTab={tab}\n childProps={{ textArea: { placeholder: translatedLabel } }}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...reactMdeProps}\n />\n
    \n \n \n \n \n );\n};\n\nexport default MarkdownInput;\n","import { useDataProvider, useTranslate } from 'react-admin';\n\nconst useLoadLinks = (resourceType, labelProp) => {\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n return async keyword => {\n if (keyword) {\n const results = await dataProvider.getList(resourceType, {\n pagination: {\n page: 1,\n perPage: 5\n },\n filter: { q: keyword }\n });\n if (results.total > 0) {\n return results.data.map(record => ({\n preview: record[labelProp],\n value: `[${record[labelProp]}](/${resourceType}/${encodeURIComponent(record.id)}/show)`\n }));\n }\n return [{ preview: translate('ra.navigation.no_results'), value: `[${keyword}` }];\n }\n return [{ preview: translate('ra.action.search'), value: `[${keyword}` }];\n };\n};\n\nexport default useLoadLinks;\n"],"names":[],"version":3,"file":"index.cjs.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/markdown-components/dist/index.es.js.map b/src/frontend/packages/markdown-components/dist/index.es.js.map index 2365c5811..ea0413b3b 100644 --- a/src/frontend/packages/markdown-components/dist/index.es.js.map +++ b/src/frontend/packages/markdown-components/dist/index.es.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/markdown-components/src/index.ts","packages/markdown-components/src/MarkdownField.js","packages/markdown-components/src/MarkdownInput.tsx","packages/markdown-components/src/useLoadLinks.js"],"sourcesContent":["export { default as MarkdownField } from './MarkdownField';\nexport { default as MarkdownInput } from './MarkdownInput';\nexport { default as useLoadLinks } from './useLoadLinks';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash/get';\n\nconst MarkdownField = ({ source, LabelComponent, overrides = {}, ...rest }) => {\n const record = useRecordContext();\n if (!record || !get(record, source)) return null;\n\n return (\n \n {props.label}\n {React.createElement(type, props, children)}\n \n );\n }\n return React.createElement(type, props, children);\n },\n overrides: {\n h1: LabelComponent,\n ...overrides\n },\n ...rest\n }}\n >\n {get(record, source)}\n \n );\n};\n\nMarkdownField.defaultProps = {\n LabelComponent: 'h2'\n};\n\nexport default MarkdownField;\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useState, FunctionComponent } from 'react';\nimport ReactMde, { ReactMdeProps } from 'react-mde';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useInput, InputHelperText, useTranslateLabel, TextInputProps } from 'react-admin';\nimport { FormControl, FormHelperText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst StyledFormControl = styled(FormControl)(({ theme }) => ({\n '& > fieldset': {\n borderWidth: 1,\n borderStyle: 'solid',\n padding: 0,\n borderRadius: theme.shape.borderRadius,\n margin: 1\n },\n\n '& > fieldset:hover': {\n borderColor: theme.palette.text.primary\n },\n\n '& > fieldset:focus-within': {\n borderColor: theme.palette.primary.main,\n borderWidth: 2,\n marginLeft: 0\n },\n\n '& > fieldset > legend': {\n color: theme.palette.text.secondary,\n marginLeft: 10,\n fontSize: theme.typography.caption.fontSize\n },\n\n '& > fieldset:focus-within > legend': {\n color: theme.palette.primary.main\n },\n\n '& .react-mde': {\n borderWidth: 0,\n borderRadius: theme.shape.borderRadius,\n marginTop: -5\n },\n\n '& .mde-header': {\n background: 'transparent'\n },\n\n '& .mde-text:focus': {\n outline: 'none'\n },\n\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n\n '&.empty': {\n '& > fieldset': {\n paddingTop: 10,\n marginTop: 9\n },\n '& > fieldset:focus-within': {\n paddingTop: 0,\n margin: 0,\n marginTop: 1\n },\n '& > fieldset > legend': {\n display: 'none'\n },\n '& > fieldset:focus-within > legend': {\n display: 'block'\n }\n },\n\n '&.validationError': {\n '& > fieldset': {\n borderColor: theme.palette.error.main\n },\n '& > fieldset > legend, & .mde-text::placeholder': {\n color: theme.palette.error.main\n },\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n '& p.MuiFormHelperText-root': {\n color: theme.palette.error.main\n }\n }\n}));\n\ntype Props = TextInputProps & {\n overrides?: MarkdownToJSX.Overrides;\n reactMdeProps?: ReactMdeProps;\n};\n\nconst MarkdownInput: FunctionComponent = props => {\n const { label, source, helperText, fullWidth, validate, overrides, reactMdeProps } = props;\n const [tab, setTab] = useState<'write' | 'preview'>('write');\n const {\n field: { value, onChange },\n fieldState: { isDirty, invalid, error, isTouched },\n formState: { isSubmitted },\n isRequired\n } = useInput({ source, validate });\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = `${translateLabel({ label, source })}${isRequired ? '*' : ''}`;\n\n return (\n \n
    \n {translatedLabel}\n onChange(val)}\n onTabChange={newTab => setTab(newTab)}\n /* eslint-disable-next-line react/no-unstable-nested-components */\n generateMarkdownPreview={async markdown => (\n \n {markdown}\n \n )}\n selectedTab={tab}\n childProps={{ textArea: { placeholder: translatedLabel } }}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...reactMdeProps}\n />\n
    \n \n \n \n \n );\n};\n\nexport default MarkdownInput;\n","import { useDataProvider, useTranslate } from 'react-admin';\n\nconst useLoadLinks = (resourceType, labelProp) => {\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n return async keyword => {\n if (keyword) {\n const results = await dataProvider.getList(resourceType, {\n pagination: {\n page: 1,\n perPage: 5\n },\n filter: { q: keyword }\n });\n if (results.total > 0) {\n return results.data.map(record => ({\n preview: record[labelProp],\n value: `[${record[labelProp]}](/${resourceType}/${encodeURIComponent(record.id)}/show)`\n }));\n }\n return [{ preview: translate('ra.navigation.no_results'), value: `[${keyword}` }];\n }\n return [{ preview: translate('ra.action.search'), value: `[${keyword}` }];\n };\n};\n\nexport default useLoadLinks;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file +{"mappings":";;;;;;;;;;;;;;ACKA,MAAM,sCAAgB,CAAC,UAAE,MAAM,kBAAE,cAAc,aAAE,YAAY,CAAC,GAAG,GAAG,MAAM;IACxE,MAAM,SAAS,CAAA,GAAA,uBAAe;IAC9B,IAAI,CAAC,UAAU,CAAC,CAAA,GAAA,gBAAE,EAAE,QAAQ,SAAS,OAAO;IAE5C,qBACE,gBAAC,CAAA,GAAA,oBAAO;QACN,SAAS;YACP,eAAc,IAAI,EAAE,KAAK,EAAE,QAAQ;gBACjC,IAAI,MAAM,KAAK,EACb,qBACE;;sCACE,gBAAC;sCAAgB,MAAM,KAAK;;sCAC3B,CAAA,GAAA,YAAI,EAAE,aAAa,CAAC,MAAM,OAAO;;;gBAIxC,qBAAO,CAAA,GAAA,YAAI,EAAE,aAAa,CAAC,MAAM,OAAO;YAC1C;YACA,WAAW;gBACT,IAAI;gBACJ,GAAG,SAAS;YACd;YACA,GAAG,IAAI;QACT;kBAEC,CAAA,GAAA,gBAAE,EAAE,QAAQ;;AAGnB;AAEA,oCAAc,YAAY,GAAG;IAC3B,gBAAgB;AAClB;IAEA,2CAAe;;;ACvCf,2CAA2C,GAC3C,8CAA8C;;;;;;;AAQ9C,MAAM,0CAAoB,CAAA,GAAA,aAAK,EAAE,CAAA,GAAA,kBAAU,GAAG,CAAC,SAAE,KAAK,EAAE,GAAM,CAAA;QAC5D,gBAAgB;YACd,aAAa;YACb,aAAa;YACb,SAAS;YACT,cAAc,MAAM,KAAK,CAAC,YAAY;YACtC,QAAQ;QACV;QAEA,sBAAsB;YACpB,aAAa,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO;QACzC;QAEA,6BAA6B;YAC3B,aAAa,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI;YACvC,aAAa;YACb,YAAY;QACd;QAEA,yBAAyB;YACvB,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS;YACnC,YAAY;YACZ,UAAU,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ;QAC7C;QAEA,sCAAsC;YACpC,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI;QACnC;QAEA,gBAAgB;YACd,aAAa;YACb,cAAc,MAAM,KAAK,CAAC,YAAY;YACtC,WAAW;QACb;QAEA,iBAAiB;YACf,YAAY;QACd;QAEA,qBAAqB;YACnB,SAAS;QACX;QAEA,kCAAkC;YAChC,OAAO;QACT;QAEA,WAAW;YACT,gBAAgB;gBACd,YAAY;gBACZ,WAAW;YACb;YACA,6BAA6B;gBAC3B,YAAY;gBACZ,QAAQ;gBACR,WAAW;YACb;YACA,yBAAyB;gBACvB,SAAS;YACX;YACA,sCAAsC;gBACpC,SAAS;YACX;QACF;QAEA,qBAAqB;YACnB,gBAAgB;gBACd,aAAa,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI;YACvC;YACA,mDAAmD;gBACjD,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI;YACjC;YACA,kCAAkC;gBAChC,OAAO;YACT;YACA,8BAA8B;gBAC5B,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI;YACjC;QACF;IACF,CAAA;AAOA,MAAM,sCAA0C,CAAA;IAC9C,MAAM,SAAE,KAAK,UAAE,MAAM,cAAE,UAAU,aAAE,SAAS,YAAE,QAAQ,aAAE,SAAS,iBAAE,aAAa,EAAE,GAAG;IACrF,MAAM,CAAC,KAAK,OAAO,GAAG,CAAA,GAAA,eAAO,EAAuB;IACpD,MAAM,EACJ,OAAO,SAAE,KAAK,YAAE,QAAQ,EAAE,EAC1B,YAAY,WAAE,OAAO,WAAE,OAAO,SAAE,KAAK,aAAE,SAAS,EAAE,EAClD,WAAW,eAAE,WAAW,EAAE,cAC1B,UAAU,EACX,GAAG,CAAA,GAAA,eAAO,EAAE;gBAAE;kBAAQ;IAAS;IAEhC,MAAM,iBAAiB,CAAA,GAAA,wBAAgB;IACvC,MAAM,kBAAkB,CAAC,EAAE,eAAe;eAAE;gBAAO;IAAO,GAAG,EAAE,aAAa,MAAM,GAAG,CAAC;IAEtF,qBACE,iBAAC;QACC,WAAW;QACX,WAAW,CAAC,EAAE,UAAU,oBAAoB,GAAG,CAAC,EAAE,UAAU,KAAK,UAAU,GAAG,CAAC;;0BAE/E,iBAAC;;kCACC,gBAAC;kCAAQ;;kCACT,gBAAC,CAAA,GAAA,eAAO;wBACN,OAAO;wBACP,UAAU,CAAA,MAAO,SAAS;wBAC1B,aAAa,CAAA,SAAU,OAAO;wBAC9B,gEAAgE,GAChE,yBAAyB,OAAM,yBAC7B,gBAAC,CAAA,GAAA,oBAAO;gCACN,SAAS;oCACP,WAAW,aAAa,CAAC;gCAC3B;0CAEC;;wBAGL,aAAa;wBACb,YAAY;4BAAE,UAAU;gCAAE,aAAa;4BAAgB;wBAAE;wBAExD,GAAG,aAAa;;;;0BAGrB,gBAAC,CAAA,GAAA,qBAAa;gBAAE,OAAO,WAAW;gBAAS,QAAO;gBAAQ,SAAQ;0BAChE,cAAA,gBAAC,CAAA,GAAA,sBAAc;oBAAE,OAAO,OAAO;oBAAS,YAAY;oBAAY,SAAS,aAAa;;;;;AAI9F;IAEA,2CAAe;;;;AC5If,MAAM,qCAAe,CAAC,cAAc;IAClC,MAAM,eAAe,CAAA,GAAA,sBAAc;IACnC,MAAM,YAAY,CAAA,GAAA,mBAAW;IAC7B,OAAO,OAAM;QACX,IAAI,SAAS;YACX,MAAM,UAAU,MAAM,aAAa,OAAO,CAAC,cAAc;gBACvD,YAAY;oBACV,MAAM;oBACN,SAAS;gBACX;gBACA,QAAQ;oBAAE,GAAG;gBAAQ;YACvB;YACA,IAAI,QAAQ,KAAK,GAAG,GAClB,OAAO,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAA,SAAW,CAAA;oBACjC,SAAS,MAAM,CAAC,UAAU;oBAC1B,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,mBAAmB,OAAO,EAAE,EAAE,MAAM,CAAC;gBACzF,CAAA;YAEF,OAAO;gBAAC;oBAAE,SAAS,UAAU;oBAA6B,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAAC;aAAE;QACnF;QACA,OAAO;YAAC;gBAAE,SAAS,UAAU;gBAAqB,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC;YAAC;SAAE;IAC3E;AACF;IAEA,2CAAe;","sources":["packages/markdown-components/src/index.ts","packages/markdown-components/src/MarkdownField.js","packages/markdown-components/src/MarkdownInput.tsx","packages/markdown-components/src/useLoadLinks.js"],"sourcesContent":["export { default as MarkdownField } from './MarkdownField';\nexport { default as MarkdownInput } from './MarkdownInput';\nexport { default as useLoadLinks } from './useLoadLinks';\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport Markdown from 'markdown-to-jsx';\nimport get from 'lodash/get';\n\nconst MarkdownField = ({ source, LabelComponent, overrides = {}, ...rest }) => {\n const record = useRecordContext();\n if (!record || !get(record, source)) return null;\n\n return (\n \n {props.label}\n {React.createElement(type, props, children)}\n \n );\n }\n return React.createElement(type, props, children);\n },\n overrides: {\n h1: LabelComponent,\n ...overrides\n },\n ...rest\n }}\n >\n {get(record, source)}\n \n );\n};\n\nMarkdownField.defaultProps = {\n LabelComponent: 'h2'\n};\n\nexport default MarkdownField;\n","/* eslint-disable react/react-in-jsx-scope */\n/* eslint-disable react/require-default-props */\nimport { useState, FunctionComponent } from 'react';\nimport ReactMde, { ReactMdeProps } from 'react-mde';\nimport Markdown, { MarkdownToJSX } from 'markdown-to-jsx';\nimport { useInput, InputHelperText, useTranslateLabel, TextInputProps } from 'react-admin';\nimport { FormControl, FormHelperText } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst StyledFormControl = styled(FormControl)(({ theme }) => ({\n '& > fieldset': {\n borderWidth: 1,\n borderStyle: 'solid',\n padding: 0,\n borderRadius: theme.shape.borderRadius,\n margin: 1\n },\n\n '& > fieldset:hover': {\n borderColor: theme.palette.text.primary\n },\n\n '& > fieldset:focus-within': {\n borderColor: theme.palette.primary.main,\n borderWidth: 2,\n marginLeft: 0\n },\n\n '& > fieldset > legend': {\n color: theme.palette.text.secondary,\n marginLeft: 10,\n fontSize: theme.typography.caption.fontSize\n },\n\n '& > fieldset:focus-within > legend': {\n color: theme.palette.primary.main\n },\n\n '& .react-mde': {\n borderWidth: 0,\n borderRadius: theme.shape.borderRadius,\n marginTop: -5\n },\n\n '& .mde-header': {\n background: 'transparent'\n },\n\n '& .mde-text:focus': {\n outline: 'none'\n },\n\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n\n '&.empty': {\n '& > fieldset': {\n paddingTop: 10,\n marginTop: 9\n },\n '& > fieldset:focus-within': {\n paddingTop: 0,\n margin: 0,\n marginTop: 1\n },\n '& > fieldset > legend': {\n display: 'none'\n },\n '& > fieldset:focus-within > legend': {\n display: 'block'\n }\n },\n\n '&.validationError': {\n '& > fieldset': {\n borderColor: theme.palette.error.main\n },\n '& > fieldset > legend, & .mde-text::placeholder': {\n color: theme.palette.error.main\n },\n '& .mde-text:focus::placeholder': {\n color: 'transparent'\n },\n '& p.MuiFormHelperText-root': {\n color: theme.palette.error.main\n }\n }\n}));\n\ntype Props = TextInputProps & {\n overrides?: MarkdownToJSX.Overrides;\n reactMdeProps?: ReactMdeProps;\n};\n\nconst MarkdownInput: FunctionComponent = props => {\n const { label, source, helperText, fullWidth, validate, overrides, reactMdeProps } = props;\n const [tab, setTab] = useState<'write' | 'preview'>('write');\n const {\n field: { value, onChange },\n fieldState: { isDirty, invalid, error, isTouched },\n formState: { isSubmitted },\n isRequired\n } = useInput({ source, validate });\n\n const translateLabel = useTranslateLabel();\n const translatedLabel = `${translateLabel({ label, source })}${isRequired ? '*' : ''}`;\n\n return (\n \n
    \n {translatedLabel}\n onChange(val)}\n onTabChange={newTab => setTab(newTab)}\n /* eslint-disable-next-line react/no-unstable-nested-components */\n generateMarkdownPreview={async markdown => (\n \n {markdown}\n \n )}\n selectedTab={tab}\n childProps={{ textArea: { placeholder: translatedLabel } }}\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n {...reactMdeProps}\n />\n
    \n \n \n \n \n );\n};\n\nexport default MarkdownInput;\n","import { useDataProvider, useTranslate } from 'react-admin';\n\nconst useLoadLinks = (resourceType, labelProp) => {\n const dataProvider = useDataProvider();\n const translate = useTranslate();\n return async keyword => {\n if (keyword) {\n const results = await dataProvider.getList(resourceType, {\n pagination: {\n page: 1,\n perPage: 5\n },\n filter: { q: keyword }\n });\n if (results.total > 0) {\n return results.data.map(record => ({\n preview: record[labelProp],\n value: `[${record[labelProp]}](/${resourceType}/${encodeURIComponent(record.id)}/show)`\n }));\n }\n return [{ preview: translate('ra.navigation.no_results'), value: `[${keyword}` }];\n }\n return [{ preview: translate('ra.action.search'), value: `[${keyword}` }];\n };\n};\n\nexport default useLoadLinks;\n"],"names":[],"version":3,"file":"index.es.js.map"} \ No newline at end of file diff --git a/src/frontend/packages/markdown-components/package.json b/src/frontend/packages/markdown-components/package.json index c978d1dbe..5c8318091 100644 --- a/src/frontend/packages/markdown-components/package.json +++ b/src/frontend/packages/markdown-components/package.json @@ -30,11 +30,8 @@ "access": "public" }, "devDependencies": { - "@mui/material": "^5.13.1", "@parcel/packager-ts": "^2.9.3", "@parcel/transformer-typescript-types": "^2.9.3", - "parcel": "^2.9.3", - "react": "^18.2.0", - "react-admin": "^4.11.0" + "parcel": "^2.9.3" } } diff --git a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js index 008db519c..35ad4f10b 100644 --- a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js +++ b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js @@ -11,9 +11,11 @@ var $3pVuQ$react = require("react"); var $3pVuQ$reactjsxruntime = require("react/jsx-runtime"); var $3pVuQ$muistylesmakeStyles = require("@mui/styles/makeStyles"); + function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } + function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } diff --git a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map index c55ceed7b..f9905f3aa 100644 --- a/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map +++ b/src/frontend/packages/semantic-data-provider/dist/index.cjs.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["packages/semantic-data-provider/src/index.js","packages/semantic-data-provider/src/dataProvider/dataProvider.js","packages/semantic-data-provider/src/dataProvider/methods/create.js","packages/semantic-data-provider/src/dataProvider/methods/getOne.js","packages/semantic-data-provider/src/dataProvider/utils/fetchResource.js","packages/semantic-data-provider/src/dataProvider/utils/uploadAllFiles.js","packages/semantic-data-provider/src/dataProvider/utils/findContainersWithTypes.js","packages/semantic-data-provider/src/dataProvider/utils/parseServerKeys.js","packages/semantic-data-provider/src/dataProvider/utils/getServerKeyFromType.js","packages/semantic-data-provider/src/dataProvider/methods/delete.js","packages/semantic-data-provider/src/dataProvider/methods/deleteMany.js","packages/semantic-data-provider/src/dataProvider/methods/getDataServers.js","packages/semantic-data-provider/src/dataProvider/methods/getDataModels.js","packages/semantic-data-provider/src/dataProvider/methods/getList.js","packages/semantic-data-provider/src/dataProvider/utils/fetchContainers.js","packages/semantic-data-provider/src/dataProvider/utils/fetchSparqlEndpoints.js","packages/semantic-data-provider/src/dataProvider/utils/getEmbedFrame.js","packages/semantic-data-provider/src/dataProvider/utils/buildSparqlQuery.js","packages/semantic-data-provider/src/dataProvider/utils/buildBaseQuery.js","packages/semantic-data-provider/src/dataProvider/utils/resolvePrefix.js","packages/semantic-data-provider/src/dataProvider/utils/buildBlankNodesQuery.js","packages/semantic-data-provider/src/dataProvider/utils/buildAutoDetectBlankNodesQuery.js","packages/semantic-data-provider/src/dataProvider/utils/findContainersWithPath.js","packages/semantic-data-provider/src/dataProvider/methods/getMany.js","packages/semantic-data-provider/src/dataProvider/methods/getManyReference.js","packages/semantic-data-provider/src/dataProvider/methods/update.js","packages/semantic-data-provider/src/dataProvider/utils/fetchUserConfig.js","packages/semantic-data-provider/src/dataProvider/utils/fetchVoidEndpoints.js","packages/semantic-data-provider/src/dataProvider/httpClient.js","packages/semantic-data-provider/src/dataProvider/utils/getServerKeyFromUri.js","packages/semantic-data-provider/src/hooks/useGetExternalLink.js","packages/semantic-data-provider/src/hooks/useContainers.js","packages/semantic-data-provider/src/hooks/useDataModel.js","packages/semantic-data-provider/src/hooks/useDataServers.js","packages/semantic-data-provider/src/hooks/useCreateContainer.js","packages/semantic-data-provider/src/dataProvider/utils/findCreateContainerWithTypes.js","packages/semantic-data-provider/src/hooks/useDataModels.js","packages/semantic-data-provider/src/reification/FilterHandler.js","packages/semantic-data-provider/src/reification/GroupedReferenceHandler.js","packages/semantic-data-provider/src/reification/ReificationArrayInput.js"],"sourcesContent":["export { default as dataProvider } from './dataProvider/dataProvider';\n\nexport { default as buildSparqlQuery } from './dataProvider/utils/buildSparqlQuery';\nexport { default as buildBlankNodesQuery } from './dataProvider/utils/buildBlankNodesQuery';\n\nexport { default as useGetExternalLink } from './hooks/useGetExternalLink';\nexport { default as useContainers } from './hooks/useContainers';\nexport { default as useCreateContainer } from './hooks/useCreateContainer';\nexport { default as useDataModel } from './hooks/useDataModel';\nexport { default as useDataModels } from './hooks/useDataModels';\nexport { default as useDataServers } from './hooks/useDataServers';\n\nexport { default as FilterHandler } from './reification/FilterHandler';\nexport { default as GroupedReferenceHandler } from './reification/GroupedReferenceHandler';\nexport { default as ReificationArrayInput } from './reification/ReificationArrayInput';\n","import createMethod from './methods/create';\nimport deleteMethod from './methods/delete';\nimport deleteManyMethod from './methods/deleteMany';\nimport getDataServersMethod from './methods/getDataServers';\nimport getDataModelsMethod from './methods/getDataModels';\nimport getListMethod from './methods/getList';\nimport getManyMethod from './methods/getMany';\nimport getManyReferenceMethod from './methods/getManyReference';\nimport getOneMethod from './methods/getOne';\nimport updateMethod from './methods/update';\nimport fetchUserConfig from './utils/fetchUserConfig';\nimport fetchVoidEndpoints from './utils/fetchVoidEndpoints';\nimport getServerKeyFromType from './utils/getServerKeyFromType';\nimport httpClient from './httpClient';\n\nconst dataProvider = config => {\n // TODO verify all data provider config + data models\n if (!getServerKeyFromType('default', config.dataServers))\n throw new Error('You must define a default server in your dataServers config');\n\n if (!config.jsonContext) config.jsonContext = Object.fromEntries(config.ontologies.map(o => [o.prefix, o.url]));\n if (!config.returnFailedResources) config.returnFailedResources = false;\n\n // Configure httpClient with data servers (this is needed for proxy calls)\n config.httpClient = httpClient(config.dataServers);\n\n const fetchUserConfigPromise = fetchUserConfig(config);\n const fetchVoidEndpointsPromise = fetchVoidEndpoints(config);\n\n const waitForVoidEndpoints =\n method =>\n async (...arg) => {\n await fetchUserConfigPromise;\n await fetchVoidEndpointsPromise; // Return immediately if promise is fulfilled\n return await method(...arg);\n };\n\n return {\n getList: waitForVoidEndpoints(getListMethod(config)),\n getMany: waitForVoidEndpoints(getManyMethod(config)),\n getManyReference: waitForVoidEndpoints(getManyReferenceMethod(config)),\n getOne: waitForVoidEndpoints(getOneMethod(config)),\n create: waitForVoidEndpoints(createMethod(config)),\n update: waitForVoidEndpoints(updateMethod(config)),\n updateMany: () => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: waitForVoidEndpoints(deleteMethod(config)),\n deleteMany: waitForVoidEndpoints(deleteManyMethod(config)),\n // Custom methods\n getDataModels: waitForVoidEndpoints(getDataModelsMethod(config)),\n getDataServers: waitForVoidEndpoints(getDataServersMethod(config)),\n getLocalDataServers: getDataServersMethod(config),\n fetch: waitForVoidEndpoints(config.httpClient)\n };\n};\n\nexport default dataProvider;\n","import urlJoin from 'url-join';\nimport getOne from './getOne';\nimport uploadAllFiles from '../utils/uploadAllFiles';\nimport findContainersWithTypes from '../utils/findContainersWithTypes';\n\nconst createMethod = config => async (resourceId, params) => {\n const { dataServers, resources, httpClient, jsonContext } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const headers = new Headers();\n\n let containerUri;\n let serverKey;\n if (dataModel.create?.container) {\n serverKey = Object.keys(dataModel.create.container)[0];\n containerUri = urlJoin(dataServers[serverKey].baseUrl, Object.values(dataModel.create.container)[0]);\n } else {\n serverKey = dataModel.create?.server || Object.keys(dataServers).find(key => dataServers[key].default === true);\n if (!serverKey) throw new Error('You must define a server for the creation, or a container, or a default server');\n\n const containers = findContainersWithTypes(dataModel.types, [serverKey], dataServers);\n // Extract the containerUri from the results (and ensure there is only one)\n const serverKeys = Object.keys(containers);\n\n if (!serverKeys || serverKeys.length === 0)\n throw new Error(`No container with types ${JSON.stringify(dataModel.types)} found on server ${serverKey}`);\n if (serverKeys.length > 1 || containers[serverKeys[0]].length > 1)\n throw new Error(\n `More than one container detected with types ${JSON.stringify(dataModel.types)} on server ${serverKey}`\n );\n containerUri = containers[serverKeys[0]][0];\n }\n\n if (params.data) {\n if (dataModel.fieldsMapping?.title) {\n if (Array.isArray(dataModel.fieldsMapping.title)) {\n headers.set('Slug', dataModel.fieldsMapping.title.map(f => params.data[f]).join(' '));\n } else {\n headers.set('Slug', params.data[dataModel.fieldsMapping.title]);\n }\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data, config);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext,\n '@type': dataModel.types,\n ...params.data\n })\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n return await getOne(config)(resourceId, { id: resourceUri });\n }\n if (params.id) {\n headers.set('Content-Type', 'application/sparql-update');\n\n await httpClient(containerUri, {\n method: 'PATCH',\n headers,\n body: `\n PREFIX ldp: \n INSERT DATA { <${containerUri}> ldp:contains <${params.id}>. };\n `\n });\n\n // Create must return the new data, so get them from the remote URI\n return await getOne(config)(resourceId, { id: params.id });\n }\n};\n\nexport default createMethod;\n","import fetchResource from '../utils/fetchResource';\n\nconst getOneMethod = config => async (resourceId, params) => {\n const { resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const data = await fetchResource(params.id, config);\n\n // Transform single value into array if forceArray is set\n if (dataModel.list?.forceArray) {\n for (const forceArrayItem of dataModel.list?.forceArray || []) {\n if (data[forceArrayItem] && !Array.isArray(data[forceArrayItem])) {\n data[forceArrayItem] = [data[forceArrayItem]];\n }\n }\n }\n\n // TODO activate defaultFetchPlan option\n // if (dataModel.list?.defaultFetchPlan) {\n // for (const node of dataModel.list?.defaultFetchPlan) {\n // if (\n // data[node] &&\n // typeof data[node] === 'string' &&\n // data[node].startsWith('http')\n // ) {\n // try {\n // const dataToEmbed = await fetchResource(data[node], config);\n // delete dataToEmbed['@context'];\n // data[node] = dataToEmbed;\n // } catch (e) {\n // // Ignore errors (this may happen if user does not have rights to see the resource)\n // }\n // }\n // }\n // }\n\n return { data };\n};\n\nexport default getOneMethod;\n","import jsonld from 'jsonld';\n\nconst fetchResource = async (resourceUri, config) => {\n const { httpClient, jsonContext } = config;\n\n let { json: data } = await httpClient(resourceUri);\n\n if (!data) throw new Error(`Not a valid JSON: ${resourceUri}`);\n\n data.id = data.id || data['@id'];\n\n // We compact only if the context is different between the frontend and the middleware\n // TODO deep compare if the context is an object\n if (data['@context'] !== jsonContext) {\n data = await jsonld.compact(data, jsonContext);\n }\n\n return data;\n};\n\nexport default fetchResource;\n","import createSlug from 'speakingurl';\nimport urlJoin from 'url-join';\n\nexport const getSlugWithExtension = fileName => {\n let fileExtension = '';\n const splitFileName = fileName.split('.');\n if (splitFileName.length > 1) {\n fileExtension = splitFileName.pop();\n fileName = splitFileName.join('.');\n }\n return `${createSlug(fileName, { lang: 'fr' })}.${fileExtension}`;\n};\n\nexport const isFile = o => o?.rawFile && o.rawFile instanceof File;\n\nconst getUploadsContainerUri = config => {\n const serverKey = Object.keys(config.dataServers).find(key => config.dataServers[key].uploadsContainer);\n if (serverKey) {\n return urlJoin(config.dataServers[serverKey].baseUrl, config.dataServers[serverKey].uploadsContainer);\n }\n};\n\nconst uploadFile = async (rawFile, config) => {\n const uploadsContainerUri = getUploadsContainerUri(config);\n if (!uploadsContainerUri) throw new Error(\"You must define an uploadsContainer in one of the server's configuration\");\n\n const response = await config.httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n};\n\n/*\n * Look for raw files in the record data.\n * If there are any, upload them and replace the file by its URL.\n */\nconst uploadAllFiles = async (record, config) => {\n for (const property in record) {\n if (Object.prototype.hasOwnProperty.call(record, property)) {\n if (Array.isArray(record[property])) {\n for (let i = 0; i < record[property].length; i++) {\n if (isFile(record[property][i])) {\n record[property][i] = await uploadFile(record[property][i].rawFile, config);\n }\n }\n } else if (isFile(record[property])) {\n record[property] = await uploadFile(record[property].rawFile, config);\n }\n }\n }\n return record;\n};\n\nexport default uploadAllFiles;\n","import urlJoin from 'url-join';\nimport parseServerKeys from './parseServerKeys';\n\nconst findContainersWithTypes = (types, serverKeys, dataServers) => {\n const containers = {};\n const existingContainers = [];\n\n serverKeys = parseServerKeys(serverKeys, dataServers);\n\n Object.keys(dataServers).forEach(key1 => {\n Object.keys(dataServers[key1].containers).forEach(key2 => {\n if (!serverKeys || serverKeys.includes(key2)) {\n Object.keys(dataServers[key1].containers[key2]).forEach(type => {\n if (types.includes(type)) {\n dataServers[key1].containers[key2][type].map(path => {\n const containerUri = urlJoin(dataServers[key2].baseUrl, path);\n\n // Avoid returning the same container several times\n if (!existingContainers.includes(containerUri)) {\n existingContainers.push(containerUri);\n\n if (!containers[key1]) containers[key1] = [];\n containers[key1].push(containerUri);\n }\n });\n }\n });\n }\n });\n });\n return containers;\n};\n\nexport default findContainersWithTypes;\n","import getServerKeyFromType from './getServerKeyFromType';\n\nconst parseServerKey = (serverKey, dataServers) => {\n switch (serverKey) {\n case '@default':\n return getServerKeyFromType('default', dataServers);\n case '@pod':\n return getServerKeyFromType('pod', dataServers);\n case '@authServer':\n return getServerKeyFromType('authServer', dataServers);\n default:\n return serverKey;\n }\n};\n\n// Return the list of servers keys in an array\n// parsing keywords like @all, @default, @pod and @authServer\nconst parseServerKeys = (serverKeys, dataServers) => {\n if (Array.isArray(serverKeys)) {\n if (serverKeys.includes('@all')) {\n return Object.keys(dataServers);\n }\n return serverKeys.map(serverKey => parseServerKey(serverKey, dataServers));\n }\n if (typeof serverKeys === 'string') {\n if (serverKeys === '@all') {\n return Object.keys(dataServers);\n }\n if (serverKeys === '@remote') {\n const defaultServerKey = getServerKeyFromType('default', dataServers);\n return Object.keys(dataServers).filter(serverKey => serverKey !== defaultServerKey);\n }\n return [parseServerKey(serverKeys, dataServers)];\n }\n // If server key is empty\n return false;\n};\n\nexport default parseServerKeys;\n","const getServerKeyFromType = (type, dataServers) => {\n return Object.keys(dataServers).find(key => {\n return dataServers[key][type];\n });\n};\n\nexport default getServerKeyFromType;\n","const deleteMethod = config => async (resourceId, params) => {\n const { httpClient } = config;\n\n await httpClient(params.id, {\n method: 'DELETE'\n });\n\n return { data: { id: params.id } };\n};\n\nexport default deleteMethod;\n","const deleteManyMethod = config => async (resourceId, params) => {\n const { httpClient } = config;\n const ids = [];\n\n for (const id of params.ids) {\n try {\n await httpClient(id, {\n method: 'DELETE'\n });\n ids.push(id);\n } catch (e) {\n // Do nothing if we fail to delete a resource\n }\n }\n\n return { data: ids };\n};\n\nexport default deleteManyMethod;\n","const getDataServers = config => () => {\n return config.dataServers;\n};\n\nexport default getDataServers;\n","const getDataModels = config => () => {\n return config.resources;\n};\n\nexport default getDataModels;\n","import findContainersWithTypes from '../utils/findContainersWithTypes';\nimport fetchContainers from '../utils/fetchContainers';\nimport fetchSparqlEndpoints from '../utils/fetchSparqlEndpoints';\nimport findContainersWithPaths from '../utils/findContainersWithPath';\n\nconst getListMethod =\n config =>\n async (resourceId, params = {}) => {\n const { dataServers, resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n let containers;\n if (!params.filter?._servers && dataModel.list?.containers) {\n if (Array.isArray(dataModel.list?.containers))\n throw new Error(\n `The list.containers property of ${resourceId} dataModel must be of type object ({ serverKey: [containerUri] })`\n );\n // If containers are set explicitly, use them\n containers = findContainersWithPaths(dataModel.list.containers, dataServers);\n } else {\n // Otherwise find the container URIs on the given servers (either in the filter or the data model)\n containers = findContainersWithTypes(\n dataModel.types,\n params.filter?._servers || dataModel.list?.servers,\n dataServers\n );\n }\n\n if (dataModel.list?.fetchContainer) {\n return fetchContainers(containers, resourceId, params, config);\n }\n return fetchSparqlEndpoints(containers, resourceId, params, config);\n };\n\nexport default getListMethod;\n","import jsonld from 'jsonld';\nimport isobject from 'isobject';\n\nexport const isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst fetchContainers = async (containers, resourceId, params, config) => {\n const { httpClient, jsonContext } = config;\n\n // Transform in an containerUri:serverKey object\n const containersServers = Object.keys(containers).reduce(\n (acc, serverKey) => ({\n ...acc,\n ...Object.fromEntries(containers[serverKey].map(containerUri => [containerUri, serverKey]))\n }),\n {}\n );\n\n const fetchPromises = Object.keys(containersServers).map(containerUri =>\n httpClient(containerUri)\n .then(({ json }) => {\n // If container's context is different, compact it to have an uniform result\n // TODO deep compare if the context is an object\n if (json['@context'] !== jsonContext) {\n return jsonld.compact(json, jsonContext);\n }\n return json;\n })\n .then(json => {\n if (isType('ldp:Container', json)) {\n return json['ldp:contains'];\n }\n throw new Error(`${containerUri} is not a LDP container`);\n })\n );\n\n // Fetch simultaneously all containers\n let results = await Promise.all(fetchPromises);\n\n if (results.length === 0) {\n return { data: [], total: 0 };\n }\n // Merge all results in one array\n results = [].concat.apply(...results);\n\n let returnData = results.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // For SPARQL queries, we use \"a\" to filter types, but in containers it must be \"type\"\n if (params.filter.a) {\n params.filter.type = params.filter.a;\n delete params.filter.a;\n }\n\n if (Object.keys(params.filter).length > 0) {\n returnData = returnData.filter(resource => {\n return Object.entries(params.filter).every(([k, v]) => {\n if (k == 'q') {\n return Object.entries(resource).some(([kr, vr]) => {\n if (!isobject(vr)) {\n const arrayValues = Array.isArray(vr) ? vr : [vr];\n return arrayValues.some(va => {\n if (typeof va === 'string' || va instanceof String) {\n return va.toLowerCase().normalize('NFD').includes(v.toLowerCase().normalize('NFD'));\n }\n });\n }\n return false;\n });\n }\n if (resource[k]) {\n return Array.isArray(resource[k]) ? resource[k].some(va => va.includes(v)) : resource[k].includes(v);\n }\n return false;\n });\n });\n }\n }\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n }\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n return true;\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: results.length };\n};\n\nexport default fetchContainers;\n","import jsonld from 'jsonld';\nimport getEmbedFrame from './getEmbedFrame';\nimport buildSparqlQuery from './buildSparqlQuery';\n\nconst compare = (a, b) => {\n switch (typeof a) {\n case 'string':\n return a.localeCompare(b);\n case 'number':\n case 'bigint':\n return a - b;\n default:\n return 0;\n }\n};\n\nconst fetchSparqlEndpoints = async (containers, resourceId, params, config) => {\n const { dataServers, resources, httpClient, jsonContext, ontologies } = config;\n const dataModel = resources[resourceId];\n\n const sparqlQueryPromises = Object.keys(containers).map(\n serverKey =>\n new Promise((resolve, reject) => {\n const blankNodes = params.filter?.blankNodes || dataModel.list?.blankNodes;\n\n // When the SPARQL request comes from the browser's URL, it comes as JSON string which must must be parsed\n if (\n params.filter?.sparqlWhere &&\n (typeof params.filter.sparqlWhere === 'string' || params.filter.sparqlWhere instanceof String)\n ) {\n params.filter.sparqlWhere = JSON.parse(decodeURIComponent(params.filter.sparqlWhere));\n }\n const sparqlQuery = buildSparqlQuery({\n containers: containers[serverKey],\n params,\n dataModel,\n ontologies\n });\n\n httpClient(dataServers[serverKey].sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery\n })\n .then(({ json }) => {\n // By default, embed only the blank nodes we explicitly asked to dereference\n // Otherwise we may have same-type resources embedded in other resources\n // To increase performances, you can set explicitEmbedOnFraming to false (make sure the result is still OK)\n const frame =\n dataModel.list?.explicitEmbedOnFraming !== false\n ? {\n '@context': jsonContext,\n '@type': dataModel.types,\n '@embed': '@never',\n ...getEmbedFrame(blankNodes)\n }\n : {\n '@context': jsonContext,\n '@type': dataModel.types\n };\n\n // omitGraph option force results to be in a @graph, even if we have a single result\n return jsonld.frame(json, frame, { omitGraph: false });\n })\n .then(compactJson => {\n if (compactJson['@id']) {\n const { '@context': context, ...rest } = compactJson;\n compactJson = {\n '@context': context,\n '@graph': [rest]\n };\n }\n resolve(compactJson['@graph'] || []);\n })\n .catch(e => reject(e));\n })\n );\n\n // Run simultaneous SPARQL queries\n let results = await Promise.all(sparqlQueryPromises);\n\n if (results.length === 0) {\n return { data: [], total: 0 };\n }\n // Merge all results in one array\n results = [].concat(...results);\n\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = results.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // TODO sort and paginate the results in the SPARQL query to improve performances\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] !== undefined && b[params.sort.field] !== undefined) {\n if (params.sort.order === 'ASC') {\n return compare(a[params.sort.field], b[params.sort.field]);\n }\n return compare(b[params.sort.field], a[params.sort.field]);\n }\n return 0;\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: results.length };\n};\n\nexport default fetchSparqlEndpoints;\n","const getEmbedFrame = blankNodes => {\n let embedFrame = {};\n let predicates;\n if (blankNodes) {\n for (const blankNode of blankNodes) {\n if (blankNode.includes('/')) {\n predicates = blankNode.split('/').reverse();\n } else {\n predicates = [blankNode];\n }\n embedFrame = {\n ...embedFrame,\n ...predicates.reduce(\n (accumulator, predicate) => ({\n [predicate]: {\n '@embed': '@last',\n ...accumulator\n }\n }),\n {}\n )\n };\n }\n return embedFrame;\n }\n};\n\nexport default getEmbedFrame;\n","import DataFactory from '@rdfjs/data-model';\nimport { Generator as SparqlGenerator } from 'sparqljs';\nimport buildBaseQuery from './buildBaseQuery';\nimport buildBlankNodesQuery from './buildBlankNodesQuery';\nimport buildAutoDetectBlankNodesQuery from './buildAutoDetectBlankNodesQuery';\nimport resolvePrefix from './resolvePrefix';\n\nconst { literal, namedNode, triple, variable } = DataFactory;\n\nconst generator = new SparqlGenerator({\n /* prefixes, baseIRI, factory, sparqlStar */\n});\n\nconst reservedFilterKeys = ['q', 'sparqlWhere', 'blankNodes', 'blankNodesDepth', '_servers', '_predicates'];\n\nconst buildSparqlQuery = ({ containers, params, dataModel, ontologies }) => {\n const blankNodes = params.filter?.blankNodes || dataModel.list?.blankNodes;\n const predicates = params.filter?._predicates || dataModel.list?.predicates;\n const blankNodesDepth = params.filter?.blankNodesDepth ?? dataModel.list?.blankNodesDepth ?? 2;\n const filter = { ...dataModel.list?.filter, ...params.filter };\n const baseQuery = buildBaseQuery(predicates, ontologies);\n\n const sparqlJsParams = {\n queryType: 'CONSTRUCT',\n template: baseQuery.construct,\n where: [],\n type: 'query',\n prefixes: Object.fromEntries(ontologies.map(ontology => [ontology.prefix, ontology.url]))\n };\n\n const containerWhere = [\n {\n type: 'values',\n values: containers.map(containerUri => ({ '?containerUri': namedNode(containerUri) }))\n },\n triple(variable('containerUri'), namedNode('http://www.w3.org/ns/ldp#contains'), variable('s1')),\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'isiri',\n args: [variable('s1')]\n }\n }\n ];\n\n let resourceWhere = [];\n\n if (filter && Object.keys(filter).length > 0) {\n const hasSPARQLFilter = filter.sparqlWhere && Object.keys(filter.sparqlWhere).length > 0;\n const hasFullTextSearch = filter.q && filter.q.length > 0;\n\n if (hasSPARQLFilter) {\n /* \n Example of usage :\n {\n \"sparqlWhere\": {\n \"type\": \"bgp\",\n \"triples\": [{\n \"subject\": {\"termType\": \"Variable\", \"value\": \"s1\"},\n \"predicate\": {\"termType\": \"NameNode\", \"value\": \"http://virtual-assembly.org/ontologies/pair#label\"},\n \"object\": {\"termType\": \"Literal\", \"value\": \"My Organization\"}\n }]\n }\n }\n */\n // initialize array in case of single value :\n [].concat(filter.sparqlWhere).forEach(sw => {\n resourceWhere.push(sw);\n });\n }\n\n if (hasFullTextSearch) {\n resourceWhere.push({\n type: 'group',\n patterns: [\n {\n queryType: 'SELECT',\n variables: [variable('s1')],\n where: [\n triple(variable('s1'), variable('p1'), variable('o1')),\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'isliteral',\n args: [variable('o1')]\n }\n },\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'regex',\n args: [\n {\n type: 'operation',\n operator: 'lcase',\n args: [\n {\n type: 'operation',\n operator: 'str',\n args: [variable('o1')]\n }\n ]\n },\n literal(filter.q.toLowerCase(), '', namedNode('http://www.w3.org/2001/XMLSchema#string'))\n ]\n }\n }\n ],\n type: 'query'\n }\n ]\n });\n }\n\n // Other filters\n // SPARQL keyword a = filter based on the class of a resource (example => 'a': 'pair:OrganizationType')\n // Other filters are based on a value (example => 'petr:hasAudience': 'http://localhost:3000/audiences/tout-public')\n Object.entries(filter).forEach(([predicate, object]) => {\n if (!reservedFilterKeys.includes(predicate)) {\n resourceWhere.unshift(\n triple(\n variable('s1'),\n namedNode(resolvePrefix(predicate, ontologies)),\n namedNode(resolvePrefix(object, ontologies))\n )\n );\n }\n });\n }\n\n // Blank nodes\n const blankNodesQuery = blankNodes\n ? buildBlankNodesQuery(blankNodes, baseQuery, ontologies)\n : buildAutoDetectBlankNodesQuery(blankNodesDepth, baseQuery);\n\n if (blankNodesQuery && blankNodesQuery.construct) {\n resourceWhere = resourceWhere.concat(blankNodesQuery.where);\n sparqlJsParams.template = sparqlJsParams.template.concat(blankNodesQuery.construct);\n } else {\n resourceWhere.push(baseQuery.where);\n }\n\n sparqlJsParams.where.push(\n {\n type: 'union',\n patterns: [\n containerWhere,\n {\n type: 'graph',\n name: namedNode('http://semapps.org/mirror'),\n patterns: containerWhere\n }\n ]\n },\n {\n type: 'union',\n patterns: [\n resourceWhere,\n {\n type: 'graph',\n name: namedNode('http://semapps.org/mirror'),\n patterns: resourceWhere\n }\n ]\n }\n );\n\n return generator.stringify(sparqlJsParams);\n};\n\nexport default buildSparqlQuery;\n","import { namedNode, triple, variable } from '@rdfjs/data-model';\nimport resolvePrefix from './resolvePrefix';\n\nconst defaultToArray = value => (!value ? [] : Array.isArray(value) ? value : [value]);\n\n// We need to always include the type or React-Admin will not work properly\nconst typeQuery = triple(\n variable('s1'),\n namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),\n variable('type')\n);\n\nconst buildBaseQuery = (predicates, ontologies) => {\n let baseTriples;\n if (predicates) {\n baseTriples = defaultToArray(predicates).map((predicate, i) =>\n triple(variable('s1'), namedNode(resolvePrefix(predicate, ontologies)), variable(`o${i + 1}`))\n );\n return {\n construct: [typeQuery, ...baseTriples],\n where: [typeQuery, ...baseTriples.map(triple => ({ type: 'optional', patterns: [triple] }))]\n };\n }\n baseTriples = [triple(variable('s1'), variable('p1'), variable('o1'))];\n return {\n construct: baseTriples,\n where: baseTriples\n };\n};\n\nexport default buildBaseQuery;\n","const resolvePrefix = (item, ontologies) => {\n if (item.startsWith('http://') || item.startsWith('https://')) {\n // Already resolved, return the URI\n return item;\n }\n if (item === 'a') {\n // Special case\n return 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';\n }\n const [prefix, value] = item.split(':');\n if (value) {\n const ontology = ontologies.find(ontology => ontology.prefix === prefix);\n if (ontology) {\n return ontology.url + value;\n }\n throw new Error(`No ontology found with prefix ${prefix}`);\n } else {\n throw new Error(`The value \"${item}\" is not correct. It must include a prefix or be a full URI.`);\n }\n};\n\nexport default resolvePrefix;\n","import md5 from 'crypto-js/md5';\nimport { namedNode, triple, variable } from '@rdfjs/data-model';\nimport resolvePrefix from './resolvePrefix';\n\n// Transform ['ont:predicate1/ont:predicate2'] to ['ont:predicate1', 'ont:predicate1/ont:predicate2']\nconst extractNodes = blankNodes => {\n const nodes = [];\n if (blankNodes) {\n for (const predicate of blankNodes) {\n if (predicate.includes('/')) {\n const nodeNames = predicate.split('/');\n for (let i = 1; i <= nodeNames.length; i++) {\n nodes.push(nodeNames.slice(0, i).join('/'));\n }\n } else {\n nodes.push(predicate);\n }\n }\n }\n return nodes;\n};\n\nconst generateSparqlVarName = node => md5(node);\n\nconst getParentNode = node => node.includes('/') && node.split('/')[0];\n\nconst getPredicate = node => (node.includes('/') ? node.split('/')[1] : node);\n\nconst buildUnionQuery = queries =>\n queries.map(q => {\n let triples = q.query;\n const firstTriple = queries.find(q2 => q.parentNode === q2.node);\n if (firstTriple !== undefined) {\n triples = triples.concat(firstTriple.query[0]);\n }\n return {\n type: 'bgp',\n triples\n };\n });\n\nconst buildBlankNodesQuery = (blankNodes, baseQuery, ontologies) => {\n const queries = [];\n const nodes = extractNodes(blankNodes);\n\n if (nodes && ontologies && ontologies.length > 0) {\n for (const node of nodes) {\n const parentNode = getParentNode(node);\n const predicate = getPredicate(node);\n const varName = generateSparqlVarName(node);\n const parentVarName = parentNode ? generateSparqlVarName(parentNode) : '1';\n\n const query = [\n triple(variable(`s${parentVarName}`), namedNode(resolvePrefix(predicate, ontologies)), variable(`s${varName}`)),\n triple(variable(`s${varName}`), variable(`p${varName}`), variable(`o${varName}`))\n ];\n\n queries.push({\n node,\n parentNode,\n query,\n filter: '' // `FILTER(isBLANK(?s${varName})) .`\n });\n }\n\n return {\n construct: queries.length > 0 ? queries.map(q => q.query).reduce((pre, cur) => pre.concat(cur)) : null,\n where: {\n type: 'union',\n patterns: [baseQuery.where, ...buildUnionQuery(queries)]\n }\n };\n }\n return {\n construct: '',\n where: ''\n };\n};\n\nexport default buildBlankNodesQuery;\n","import { triple, variable } from '@rdfjs/data-model';\n\nconst buildAutoDetectBlankNodesQuery = (depth, baseQuery) => {\n const construct = [...baseQuery.construct];\n let where = {};\n if (depth > 0) {\n const whereQueries = [];\n whereQueries.push([baseQuery.where]);\n for (let i = 1; i <= depth; i++) {\n construct.push(triple(variable(`o${i}`), variable(`p${i + 1}`), variable(`o${i + 1}`)));\n whereQueries.push([\n ...whereQueries[whereQueries.length - 1],\n {\n type: 'filter',\n expression: {\n type: 'operation',\n operator: 'isblank',\n args: [variable(`o${i}`)]\n }\n },\n triple(variable(`o${i}`), variable(`p${i + 1}`), variable(`o${i + 1}`))\n ]);\n }\n where = {\n type: 'union',\n patterns: whereQueries\n };\n } else if (depth === 0) {\n where = baseQuery.where;\n } else {\n throw new Error('The depth of buildAutoDetectBlankNodesQuery should be 0 or more');\n }\n\n return { construct, where };\n};\n\nexport default buildAutoDetectBlankNodesQuery;\n","import urlJoin from 'url-join';\n\nconst findContainersWithPaths = (paths, dataServers) => {\n const containers = {};\n Object.keys(paths).forEach(serverKey => {\n if (dataServers[serverKey]) {\n containers[serverKey] = [];\n paths[serverKey].forEach(path => {\n containers[serverKey].push(urlJoin(dataServers[serverKey].baseUrl, path));\n });\n } else {\n throw new Error(`No server found with key ${serverKey}`);\n }\n });\n return containers;\n};\n\nexport default findContainersWithPaths;\n","import getOne from './getOne';\n\nconst getManyMethod = config => async (resourceId, params) => {\n const { returnFailedResources } = config;\n\n let returnData = await Promise.all(\n params.ids.map(id =>\n getOne(config)(resourceId, { id: typeof id === 'object' ? id['@id'] : id })\n .then(({ data }) => data)\n .catch(() => {\n // Catch if one resource fails to load\n // Otherwise no references will be show if only one is missing\n // See https://github.com/marmelab/react-admin/issues/5190\n if (returnFailedResources) {\n return { id, _error: true };\n }\n // Returning nothing\n })\n )\n );\n\n // We don't want undefined results to appear in the results as it will break with react-admin\n returnData = returnData.filter(e => e);\n\n return { data: returnData };\n};\n\nexport default getManyMethod;\n","import getList from './getList';\n\nconst getManyReferenceMethod = config => async (resourceId, params) => {\n params.filter = { ...params.filter, [params.target]: params.id };\n delete params.target;\n return await getList(config)(resourceId, params);\n};\n\nexport default getManyReferenceMethod;\n","import uploadAllFiles from '../utils/uploadAllFiles';\n\nconst updateMethod = config => async (resourceId, params) => {\n const { httpClient, jsonContext } = config;\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data, config);\n\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext,\n ...params.data\n })\n });\n\n return { data: params.data };\n};\n\nexport default updateMethod;\n","import jwtDecode from 'jwt-decode';\nimport urlJoin from 'url-join';\nimport getServerKeyFromType from './getServerKeyFromType';\n\nconst fetchUserConfig = async config => {\n const { dataServers, httpClient } = config;\n const token = localStorage.getItem('token');\n const podKey = getServerKeyFromType('pod', dataServers);\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n\n // If the user is logged in\n if (token) {\n const { webId } = jwtDecode(token);\n let userData;\n\n try {\n const { json } = await httpClient(webId);\n userData = json;\n } catch (e) {\n console.error(e);\n // If the webId cannot be fetched, assume an invalid token and disconnect the user\n localStorage.clear();\n window.location.reload();\n return;\n }\n\n // If we have a POD server\n if (podKey) {\n // Fill the config provided to the data provider\n // We must modify the config object directly\n config.dataServers[podKey].name = 'My Pod';\n config.dataServers[podKey].baseUrl = urlJoin(webId, 'data'); // TODO find POD URI from user profile\n config.dataServers[podKey].sparqlEndpoint =\n userData.endpoints?.['void:sparqlEndpoint'] || urlJoin(webId, 'sparql');\n }\n\n if (authServerKey) {\n // Fill the config provided to the data provider\n // We must modify the config object directly\n config.dataServers[authServerKey].proxyUrl = userData.endpoints?.proxyUrl;\n }\n } else if (podKey) {\n // If the user is not logged in, ignore the POD server\n delete config.dataServers[podKey];\n }\n};\n\nexport default fetchUserConfig;\n","const defaultToArray = value => (!value ? undefined : Array.isArray(value) ? value : [value]);\n\nconst fetchVoidEndpoints = async config => {\n const fetchPromises = Object.entries(config.dataServers)\n .filter(([key, server]) => server.pod !== true)\n .map(([key, server]) =>\n config\n .httpClient(new URL('/.well-known/void', server.baseUrl).toString())\n .then(result => ({ key, datasets: result.json['@graph'] }))\n .catch(e => {\n if (e.status === 404 || e.status === 401 || e.status === 500) {\n return { key, error: e };\n }\n throw e;\n })\n );\n\n let results = [];\n\n try {\n results = await Promise.all(fetchPromises);\n } catch (e) {\n // Do not throw error if no endpoint found\n }\n\n for (const result of results) {\n config.dataServers[result.key].containers = config.dataServers[result.key].containers || {};\n config.dataServers[result.key].blankNodes = config.dataServers[result.key].blankNodes || {};\n\n // Ignore unfetchable endpoints\n if (result.datasets) {\n for (const dataset of result.datasets) {\n const datasetServerKey = Object.keys(config.dataServers).find(\n key => dataset['void:uriSpace'] === config.dataServers[key].baseUrl\n );\n\n // If the dataset is not part of a server mapped in the dataServers, ignore it\n if (datasetServerKey) {\n // If this is the local dataset, add the base information\n if (datasetServerKey === result.key) {\n config.dataServers[result.key].name = config.dataServers[result.key].name || dataset['dc:title'];\n config.dataServers[result.key].description =\n config.dataServers[result.key].description || dataset['dc:description'];\n config.dataServers[result.key].sparqlEndpoint =\n config.dataServers[result.key].sparqlEndpoint || dataset['void:sparqlEndpoint'];\n }\n\n config.dataServers[result.key].containers[datasetServerKey] =\n config.dataServers[result.key].containers[datasetServerKey] || {};\n\n for (const partition of defaultToArray(dataset['void:classPartition'])) {\n for (const type of defaultToArray(partition['void:class'])) {\n // Set containers by type\n const path = partition['void:uriSpace'].replace(dataset['void:uriSpace'], '/');\n if (config.dataServers[result.key].containers[datasetServerKey][type]) {\n config.dataServers[result.key].containers[datasetServerKey][type].push(path);\n } else {\n config.dataServers[result.key].containers[datasetServerKey][type] = [path];\n }\n }\n }\n }\n }\n }\n }\n};\n\nexport default fetchVoidEndpoints;\n","import { fetchUtils } from 'react-admin';\nimport getServerKeyFromUri from './utils/getServerKeyFromUri';\nimport getServerKeyFromType from './utils/getServerKeyFromType';\n\n/*\n * HTTP client used by all calls in data provider and auth provider\n * Do proxy calls if a proxy endpoint is available and the server is different from the auth server\n */\nconst httpClient =\n dataServers =>\n (url, options = {}) => {\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n const serverKey = getServerKeyFromUri(url, dataServers);\n const useProxy =\n serverKey !== authServerKey && dataServers[authServerKey]?.proxyUrl && dataServers[serverKey]?.noProxy !== true;\n\n if (!options.headers) options.headers = new Headers();\n\n switch (options.method) {\n case 'POST':\n case 'PATCH':\n case 'PUT':\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n if (!options.headers.has('Content-Type')) options.headers.set('Content-Type', 'application/ld+json');\n break;\n\n case 'DELETE':\n break;\n\n case 'GET':\n default:\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n break;\n }\n\n if (useProxy) {\n const formData = new FormData();\n\n formData.append('id', url);\n formData.append('method', options.method || 'GET');\n formData.append('headers', JSON.stringify(Object.fromEntries(options.headers.entries())));\n\n if (options.body) {\n if (options.body instanceof File) {\n formData.append('body', options.body, options.body.name);\n } else {\n formData.append('body', options.body);\n }\n }\n\n // Post to proxy endpoint with multipart/form-data format\n return fetchUtils.fetchJson(dataServers[authServerKey].proxyUrl, {\n method: 'POST',\n headers: new Headers({\n Authorization: `Bearer ${localStorage.getItem('token')}`\n }),\n body: formData\n });\n }\n // Add token if the server is the same as the auth server\n if (serverKey === authServerKey) {\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n }\n return fetchUtils.fetchJson(url, options);\n };\n\nexport default httpClient;\n","// Return the first server matching with the baseUrl\nconst getServerKeyFromUri = (uri, dataServers) => {\n return Object.keys(dataServers).find(key => {\n if (dataServers[key].pod) {\n // The baseUrl ends with /data so remove this part to match with the webId and webId-related URLs (/inbox, /outbox...)\n return dataServers[key].baseUrl && uri.startsWith(dataServers[key].baseUrl.replace('/data', ''));\n }\n return uri.startsWith(dataServers[key].baseUrl);\n });\n};\n\nexport default getServerKeyFromUri;\n","import { useCallback, useMemo, useContext } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst compute = (externalLinks, record) =>\n typeof externalLinks === 'function' ? externalLinks(record) : externalLinks;\nconst isURL = url => typeof url === 'string' && url.startsWith('http');\n\nconst useGetExternalLink = componentExternalLinks => {\n // Since the externalLinks config is defined only locally, we don't need to wait for VOID endpoints fetching\n const dataProvider = useContext(DataProviderContext);\n const dataServers = dataProvider.getLocalDataServers();\n\n const serversExternalLinks = useMemo(() => {\n if (dataServers) {\n return Object.fromEntries(\n Object.values(dataServers).map(server => {\n // If externalLinks is not defined in the data server, use external links for non-default servers\n const externalLinks = server.externalLinks !== undefined ? server.externalLinks : !server.default;\n return [server.baseUrl, externalLinks];\n })\n );\n }\n }, [dataServers]);\n\n return useCallback(\n record => {\n const computedComponentExternalLinks = compute(componentExternalLinks, record);\n // If the component explicitly asks not to display as external links, use an internal link\n if (computedComponentExternalLinks === false) return false;\n\n if (!record?.id) return false;\n\n const serverBaseUrl = Object.keys(serversExternalLinks).find(baseUrl => record?.id.startsWith(baseUrl));\n // If no matching data servers could be found, assume we have an internal link\n if (!serverBaseUrl) return false;\n\n const computedServerExternalLinks = compute(serversExternalLinks[serverBaseUrl], record);\n // If the data server explicitly asks not to display as external links, use an internal link\n if (computedServerExternalLinks === false) return false;\n\n if (isURL(computedComponentExternalLinks)) {\n return computedComponentExternalLinks;\n }\n if (isURL(computedServerExternalLinks)) {\n return computedServerExternalLinks;\n }\n return record.id;\n },\n [serversExternalLinks, componentExternalLinks]\n );\n};\n\nexport default useGetExternalLink;\n","import { useState, useEffect } from 'react';\nimport useDataModel from './useDataModel';\nimport useDataServers from './useDataServers';\nimport findContainersWithTypes from '../dataProvider/utils/findContainersWithTypes';\n\nconst useContainers = (resourceId, serverKeys = '@all') => {\n const dataModel = useDataModel(resourceId);\n const dataServers = useDataServers();\n const [containers, setContainers] = useState();\n\n useEffect(() => {\n if (dataModel && dataServers) {\n setContainers(findContainersWithTypes(dataModel.types, serverKeys, dataServers));\n }\n }, [dataModel, dataServers, serverKeys]);\n\n return containers;\n};\n\nexport default useContainers;\n","import { useContext, useState, useEffect } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst useDataModel = resourceId => {\n // Get the raw data provider, since useDataProvider returns a wrapper\n const dataProvider = useContext(DataProviderContext);\n const [dataModel, setDataModel] = useState();\n\n useEffect(() => {\n dataProvider.getDataModels().then(results => setDataModel(results[resourceId]));\n }, [dataProvider, resourceId, setDataModel]);\n\n return dataModel;\n};\n\nexport default useDataModel;\n","import { useContext, useState, useEffect } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst useDataServers = () => {\n // Get the raw data provider, since useDataProvider returns a wrapper\n const dataProvider = useContext(DataProviderContext);\n const [dataServers, setDataServers] = useState();\n\n useEffect(() => {\n dataProvider.getDataServers().then(results => setDataServers(results));\n }, [dataProvider, setDataServers]);\n\n return dataServers;\n};\n\nexport default useDataServers;\n","import { useState, useEffect } from 'react';\nimport urlJoin from 'url-join';\nimport useDataModel from './useDataModel';\nimport useDataServers from './useDataServers';\nimport findCreateContainerWithTypes from '../dataProvider/utils/findCreateContainerWithTypes';\nimport getServerKeyFromType from '../dataProvider/utils/getServerKeyFromType';\n\nconst useCreateContainer = resourceId => {\n const dataModel = useDataModel(resourceId);\n const dataServers = useDataServers();\n const [createContainer, setCreateContainer] = useState();\n\n useEffect(() => {\n if (dataModel && dataServers) {\n if (dataModel.create?.container) {\n const [serverKey, path] = Object.entries(dataModel.create.container)[0];\n if (!serverKey || !dataServers[serverKey]) {\n throw new Error(`Wrong key for the dataModel.create.container config of resource ${resourceId}`);\n }\n setCreateContainer(urlJoin(dataServers[serverKey].baseUrl, path));\n } else if (dataModel.create?.server) {\n setCreateContainer(findCreateContainerWithTypes(dataModel.types, dataModel.create?.server, dataServers));\n } else {\n const defaultServerKey = getServerKeyFromType('default', dataServers);\n setCreateContainer(findCreateContainerWithTypes(dataModel.types, defaultServerKey, dataServers));\n }\n }\n }, [dataModel, dataServers, setCreateContainer]);\n\n return createContainer;\n};\n\nexport default useCreateContainer;\n","import urlJoin from 'url-join';\n\nconst findCreateContainerWithTypes = (types, createServerKey, dataServers) => {\n const containers = [];\n\n if (Object.keys(dataServers[createServerKey].containers[createServerKey]).length > 0) {\n Object.keys(dataServers[createServerKey].containers[createServerKey]).forEach(type => {\n if (types.includes(type)) {\n dataServers[createServerKey].containers[createServerKey][type].map(path => {\n const containerUri = urlJoin(dataServers[createServerKey].baseUrl, path);\n if (!containers.includes(containerUri)) {\n containers.push(containerUri);\n }\n });\n }\n });\n }\n\n if (containers.length === 0) {\n throw new Error(\n `No container found matching with types ${JSON.stringify(\n types\n )}. You can set explicitely the create.container property of the resource.`\n );\n } else if (containers.length > 1) {\n throw new Error(\n `More than one container found matching with types ${JSON.stringify(\n types\n )}. You must set the create.server or create.container property for the resource.`\n );\n }\n\n return containers[0];\n};\n\nexport default findCreateContainerWithTypes;\n","import { useContext, useState, useEffect } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst useDataModels = () => {\n // Get the raw data provider, since useDataProvider returns a wrapper\n const dataProvider = useContext(DataProviderContext);\n const [dataModels, setDataModels] = useState();\n\n useEffect(() => {\n dataProvider.getDataModels().then(results => setDataModels(results));\n }, [dataProvider, setDataModels]);\n\n return dataModels;\n};\n\nexport default useDataModels;\n","import React, { useState, useEffect } from 'react';\n\n/**\n * @example\n * \n * \n * \n * \n * \n * \n */\n\nconst FilterHandler = ({ children, record, filter, source, ...otherProps }) => {\n const [filtered, setFiltered] = useState();\n useEffect(() => {\n if (record && source && Array.isArray(record?.[source])) {\n const filteredData = record?.[source].filter(r => {\n let eq = true;\n for (const key in filter) {\n const value = r[key];\n if (Array.isArray(value)) {\n if (!value.includes(filter[key])) {\n eq = false;\n }\n } else if (value !== filter[key]) {\n eq = false;\n }\n }\n return eq;\n });\n const newRecord = {\n ...record\n };\n // undefined setted if no data to obtain no render in RightLabel or equivalent\n newRecord[source] = filteredData.length > 0 ? filteredData : undefined;\n setFiltered(newRecord);\n }\n }, [record, source, filter]);\n\n return (\n <>\n {React.Children.map(children, (child, i) => {\n return React.cloneElement(child, {\n ...otherProps,\n record: filtered,\n source\n });\n })}\n \n );\n};\nexport default FilterHandler;\n","import React from 'react';\nimport { useGetList } from 'react-admin';\nimport { default as FilterHandler } from './FilterHandler';\n\n/*\n * @example Label used in examples\n * const Label = ({label, ...otherProps})=>{\n * return

    {label}

    \n * }\n *\n * @example show header for each group with group property thanks to groupHeader\n * }\n * filterProperty=\"property of source filtered by groupReference\"\n * >\n * // same props as GroupedArrayField source\n * \n * \n * \n * \n *\n * @example call chhildren with label thanks to groupLabel\n * \n *