@semapps/activitypub-components 0.4.0-alpha.33 → 0.4.0-alpha.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("react-admin"),n=require("ra-richtext-tiptap"),r=require("react-final-form"),o=require("@material-ui/core"),a=require("@material-ui/icons/Send"),i=require("@semapps/semantic-data-provider"),u=require("@tiptap/core"),l=require("@tiptap/extension-mention"),c=require("@semapps/field-components"),s=require("@tiptap/react"),d=require("tippy.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=f(e),m=f(a),b=f(l),v=f(d);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){w(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function y(e,t,n,r,o,a,i){try{var u=e[a](i),l=u.value}catch(e){return void n(e)}u.done?t(l):Promise.resolve(l).then(r,o)}function E(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){y(a,r,o,i,u,"next",e)}function u(e){y(a,r,o,i,u,"throw",e)}i(void 0)}))}}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function x(){return(x=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function I(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function T(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,u=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(u)throw o}}return a}(e,t)||R(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function O(e){return function(e){if(Array.isArray(e))return A(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||R(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e,t){if(e){if("string"==typeof e)return A(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?A(e,t):void 0}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var C={ARTICLE:"Article",AUDIO:"Audio",DOCUMENT:"Document",EVENT:"Event",IMAGE:"Image",NOTE:"Note",PAGE:"Page",PLACE:"Place",PROFILE:"Profile",RELATIONSHIP:"Relationship",TOMBSTONE:"Tombstone",VIDEO:"Video"},k="https://www.w3.org/ns/activitystreams#Public",S=function(){var n=t.useGetIdentity().identity,r=e.useMemo((function(){var e;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e?void 0:e.outbox}),[n]),o=e.useMemo((function(){var e,t;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e||null===(t=e.endpoints)||void 0===t?void 0:t["void:sparqlEndpoint"]}),[n]);return{post:e.useCallback(function(){var e=E(regeneratorRuntime.mark((function e(n){var o,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=localStorage.getItem("token"),e.next=3,t.fetchUtils.fetchJson(r,{method:"POST",body:JSON.stringify(g({"@context":"https://www.w3.org/ns/activitystreams"},n)),headers:new Headers({"Content-Type":"application/ld+json",Authorization:"Bearer ".concat(o)})});case 3:return a=e.sent,i=a.headers,e.abrupt("return",i.get("Location"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[r]),fetch:e.useCallback(E(regeneratorRuntime.mark((function e(){var n,a,u,l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o&&r){e.next=2;break}return e.abrupt("return");case 2:return n=localStorage.getItem("token"),a=i.buildBlankNodesQuery(["as:object"]),u="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(a.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ").concat(a.where,"\n }\n "),e.next=7,t.fetchUtils.fetchJson(o,{method:"POST",body:u,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+n})});case 7:if(l=e.sent,!(c=l.json)["@graph"]){e.next=13;break}return e.abrupt("return",c["@graph"]);case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)}))),[o,r]),url:r,owner:null==n?void 0:n.id}},P=b.default.extend({renderHTML:function(e){var t=e.node,n=e.HTMLAttributes;return["span",u.mergeAttributes(this.options.HTMLAttributes,n),"@".concat(t.attrs.id.label)]},addAttributes:function(){return{label:{default:null,parseHTML:function(e){return{label:e.getAttribute("data-mention-label")}},renderHTML:function(e){return e.id.label?{"data-mention-label":e.id.label}:{}}},id:{default:null,parseHTML:function(e){return{id:e.getAttribute("data-mention-id")}},renderHTML:function(e){return e.id.id?{"data-mention-id":e.id.id}:{}}}}}}),N=o.makeStyles((function(e){return{form:{marginTop:-12},container:{paddingLeft:80,position:"relative"},avatar:{position:"absolute",top:16,left:0,bottom:0,width:64,height:64},editorContent:{"& > div":{backgroundColor:"rgba(0, 0, 0, 0.09)",padding:"2px 12px",borderWidth:"0px !important",borderRadius:0,borderBottom:"1px solid #FFF",minHeight:60,outline:"unset !important"},"& > div > p":{marginTop:12,marginBottom:12,fontFamily:e.typography.body1.fontFamily,marginBlockStart:"0.5em",marginBlockEnd:"0.5em"},marginBottom:-19},button:{marginBottom:15}}})),L=function(a){var u=a.context,l=a.helperText,c=a.mentions,s=a.userResource,d=a.addItem,f=a.removeItem,b=t.useRecordContext(),v=t.useGetIdentity().identity,h=i.useDataModel(s),y=N(),w=t.useNotify(),x=S(),I=T(e.useState(!1),2),R=I[0],A=I[1],L=e.useCallback(function(){var e=E(regeneratorRuntime.mark((function e(t,n){var r,o,a,i,l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.reset,o=(new DOMParser).parseFromString(t.comment,"text/html"),a=Array.from(o.body.getElementsByClassName("mention")),i=[],a.forEach((function(e){var t=e.attributes["data-mention-id"].value,n=e.attributes["data-mention-label"].value,r=o.createElement("a");r.setAttribute("href",new URL(window.location.href).origin+"/"+s+"/"+encodeURIComponent(t)+"/show"),r.textContent="@"+n,e.parentNode.replaceChild(r,e),i.push(t)})),"undefined"!==o.body.innerHTML){e.next=9;break}w("Votre commentaire est vide","error"),e.next=24;break;case 9:return l=Date.now(),c={type:C.NOTE,attributedTo:x.owner,content:o.body.innerHTML,inReplyTo:b[u],published:(new Date).toISOString()},e.prev=11,d(g({id:l},c)),r(),A(!1),e.next=17,x.post(g(g({},c),{},{to:[].concat(i,[k])}));case 17:w("Commentaire posté avec succès","success"),e.next=24;break;case 20:e.prev=20,e.t0=e.catch(11),f(l),w(e.t0.message,"error");case 24:case"end":return e.stop()}}),e,null,[[11,20]])})));return function(t,n){return e.apply(this,arguments)}}(),[x,w,A,d,f]);return c&&!c.items?null:p.default.createElement(r.Form,{onSubmit:L,subscription:{submitting:!0,pristine:!0},render:function(e){var t,r,a=e.handleSubmit,i=e.submitting;if(e.pristine){var u=document.getElementById("comment");u&&(u.innerHTML="")}return p.default.createElement("form",{onSubmit:a,className:y.form},p.default.createElement(o.Box,{className:y.container},p.default.createElement(o.Avatar,{src:null==v||null===(t=v.webIdData)||void 0===t?void 0:t[null==h||null===(r=h.fieldsMapping)||void 0===r?void 0:r.image],className:y.avatar}),p.default.createElement(n.RichTextInput,{source:"comment",label:"",toolbar:null,fullWidth:!0,classes:{editorContent:y.editorContent},editorOptions:g(g({},n.DefaultEditorOptions),{},{onFocus:function(){A(!0)},extensions:[].concat(O(n.DefaultEditorOptions.extensions),[c?P.configure({HTMLAttributes:{class:"mention"},suggestion:c}):null])}),helperText:l}),R&&p.default.createElement(o.Button,{type:"submit",size:"small",variant:"contained",color:"primary",endIcon:p.default.createElement(m.default,null),disabled:i,className:y.button},"Envoyer")))}})},D=o.makeStyles((function(){return{container:{paddingLeft:80,marginTop:8,minHeight:80,position:"relative"},avatar:{position:"absolute",top:0,left:0,bottom:0,width:64,height:64},text:{paddingTop:2,paddingBottom:8},label:{fontWeight:"bold"},content:{"& p":{marginBlockStart:"0.5em",marginBlockEnd:"0.5em"}},loading:{zIndex:1e3,backgroundColor:"white",opacity:.5,position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",minHeight:200,marginTop:5}}})),j=function(e){var n=e.comments,r=e.userResource,a=e.loading,u=D(),l=i.useDataModel(r);return p.default.createElement(o.Box,{position:"relative"},n&&n.sort((function(e,t){return new Date(t.published)-new Date(e.published)})).map((function(e){var n,r;return p.default.createElement(o.Box,{className:u.container},p.default.createElement(o.Box,{className:u.avatar},p.default.createElement(i.ReferenceField,{record:e,reference:"Person",source:"attributedTo",linkType:!1},p.default.createElement(c.AvatarWithLabelField,{image:null==l||null===(n=l.fieldsMapping)||void 0===n?void 0:n.image}))),p.default.createElement(o.Box,{className:u.text},p.default.createElement(o.Typography,{variant:"body2"},p.default.createElement(i.ReferenceField,{record:e,reference:"Person",source:"attributedTo"},p.default.createElement(t.TextField,{variant:"body2",source:null==l||null===(r=l.fieldsMapping)||void 0===r?void 0:r.title,className:u.label}))," • ",p.default.createElement(t.DateField,{record:e,variant:"body2",source:"published",showTime:!0})),p.default.createElement(t.RichTextField,{record:e,variant:"body1",source:"content",className:u.content})))})),a&&p.default.createElement(o.Box,{minHeight:200},p.default.createElement(o.Box,{alignItems:"center",className:u.loading},p.default.createElement(o.CircularProgress,{size:60,thickness:6}))))},M=function(n){var r=t.useGetIdentity().identity,o=T(e.useState([]),2),a=o[0],i=o[1],u=T(e.useState(!1),2),l=u[0],c=u[1],s=T(e.useState(!1),2),d=s[0],f=s[1],p=T(e.useState(!1),2),m=p[0],b=p[1],v=e.useMemo((function(){if(n){if(n.startsWith("http"))return n;var e;if(null!=r&&r.webIdData)return null==r||null===(e=r.webIdData)||void 0===e?void 0:e[n]}}),[r,n]),h=e.useCallback(E(regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(v){e.next=2;break}return e.abrupt("return");case 2:c(!0),n=new Headers({Accept:"application/ld+json",Authorization:"Bearer "+localStorage.getItem("token")}),t.fetchUtils.fetchJson(v,{headers:n}).then((function(e){var t=e.json;t&&t.items?i(t.items):t&&t.orderedItems?i(t.orderedItems):i([]),b(!1),f(!0),c(!1)})).catch((function(){b(!0),f(!0),c(!1)}));case 5:case"end":return e.stop()}}),e)}))),[i,f,c,b,v]);e.useEffect((function(){l||d||m||h()}),[h,l,d,m]);var g=e.useCallback((function(e){i((function(t){return[].concat(O(t),[e])}))}),[i]),y=e.useCallback((function(e){i((function(t){return t.filter((function(t){return"string"==typeof t?t!==e:t.id!==e}))}))}),[i]);return{items:a,loading:l,loaded:d,error:m,refetch:h,addItem:g,removeItem:y,url:v}},B=function(e){e.source;var n=e.context,r=e.helperText,o=e.userResource,a=e.mentions,i=t.useRecordContext(),u=M(i.replies),l=u.items,c=u.loading,s=u.addItem,d=u.removeItem;if(!o)throw new Error("No userResource defined for CommentsField");return p.default.createElement(p.default.Fragment,null,p.default.createElement(L,{context:n,helperText:r,userResource:o,mentions:a,addItem:s,removeItem:d}),p.default.createElement(j,{comments:l,loading:c,userResource:o}))};B.defaultProps={addLabel:!0,label:"Commentaires",source:"id",context:"id"};var F=["collectionUrl","resource","children"],U=function(e){var n=e.collectionUrl,r=e.resource,o=e.children,a=I(e,F);if(1!==p.default.Children.count(o))throw new Error("<CollectionList> only accepts a single child");var u=t.useGetOne(r,n,{enabled:!!n}),l=u.data;return u.loading?p.default.createElement("div",{style:{marginTop:8}},p.default.createElement(t.LinearProgress,null)):l?p.default.createElement(i.ReferenceArrayField,x({reference:r,record:l,source:"items"},a),o):null},H=["source","record","reference","children"],V=function(e){var t=e.source,n=e.record,r=e.reference,o=e.children,a=I(e,H);if(1!==p.default.Children.count(o))throw new Error("<ReferenceCollectionField> only accepts a single child");return n&&n[t]?p.default.createElement(U,x({resource:r,collectionUrl:n[t]},a),o):null};V.defaultProps={addLabel:!0};var q=o.makeStyles((function(e){return{items:{background:"#fff",borderRadius:"0.5rem",boxShadow:"0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)",color:"rgba(0, 0, 0, 0.8)",fontSize:"0.9rem",overflow:"hidden",padding:"0.2rem",position:"relative"},item:{background:"transparent",border:"1px solid transparent",borderRadius:"0.4rem",display:"block",margin:0,padding:"0.2rem 0.4rem",textAlign:"left",width:"100%","&.selected":{borderColor:"#000"}}}})),G=e.forwardRef((function(t,n){var r=T(e.useState(0),2),o=r[0],a=r[1],i=q(),u=function(e){var n=t.items[e];n&&t.command({id:n})};return e.useEffect((function(){return a(0)}),[t.items]),e.useImperativeHandle(n,(function(){return{onKeyDown:function(e){var n=e.event;return"ArrowUp"===n.key?(a((o+t.items.length-1)%t.items.length),!0):"ArrowDown"===n.key?(a((o+1)%t.items.length),!0):"Enter"===n.key&&(u(o),!0)}}})),p.default.createElement("div",{className:i.items},t.items.length?t.items.map((function(e,t){return p.default.createElement("button",{className:i.item+(t===o?" selected":""),key:t,onClick:function(){return u(t)}},e.label)})):p.default.createElement("div",{className:i.item},"Aucun résultat"))})),W=function(){var e,t;return{onStart:function(n){e=new s.ReactRenderer(G,{props:n,editor:n.editor}),t=v.default("body",{getReferenceClientRect:n.clientRect,appendTo:function(){return document.body},content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"})},onUpdate:function(n){e.updateProps(n),t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown:function(n){var r;return"Escape"===n.event.key?(t[0].hide(),!0):null===(r=e.ref)||void 0===r?void 0:r.onKeyDown(n)},onExit:function(){t[0].destroy(),e.destroy()}}};exports.ACTIVITY_TYPES={ACCEPT:"Accept",ADD:"Add",ANNOUNCE:"Announce",ARRIVE:"Arrive",BLOCK:"Block",CREATE:"Create",DELETE:"Delete",DISLIKE:"Dislike",FLAG:"Flag",FOLLOW:"Follow",IGNORE:"Ignore",INVITE:"Invite",JOIN:"Join",LEAVE:"Leave",LIKE:"Like",LISTEN:"Listen",MOVE:"Move",OFFER:"Offer",QUESTION:"Question",REJECT:"Reject",READ:"Read",REMOVE:"Remove",TENTATIVE_REJECT:"TentativeReject",TENTATIVE_ACCEPT:"TentativeAccept",TRAVAL:"Travel",UNDO:"Undo",UPDATE:"Update",VIEW:"View"},exports.ACTOR_TYPES={APPLICATION:"Application",GROUP:"Group",ORGANIZATION:"Organization",PERSON:"Person",SERVICE:"Service"},exports.CollectionList=U,exports.CommentsField=B,exports.OBJECT_TYPES=C,exports.PUBLIC_URI=k,exports.ReferenceCollectionField=V,exports.useCollection=M,exports.useInbox=function(){var n=t.useGetIdentity().identity,r=e.useMemo((function(){var e;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e?void 0:e.inbox}),[n]),o=e.useMemo((function(){var e,t;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e||null===(t=e.endpoints)||void 0===t?void 0:t["void:sparqlEndpoint"]}),[n]);return{fetch:e.useCallback(function(){var e=E(regeneratorRuntime.mark((function e(n){var a,u,l,c,s,d,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.filters,o&&r){e.next=3;break}return e.abrupt("return");case 3:return u=localStorage.getItem("token"),l=i.buildBlankNodesQuery(["as:object"]),c="",a&&Object.keys(a).forEach((function(e){if(a[e]){var t=a[e].startsWith("http")?"<".concat(a[e],">"):a[e];c+="?s1 ".concat(e," ").concat(t," .")}})),s="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(l.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ").concat(c,"\n ").concat(l.where,"\n }\n "),e.next=10,t.fetchUtils.fetchJson(o,{method:"POST",body:s,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+u})});case 10:if(d=e.sent,!(f=d.json)["@graph"]){e.next=16;break}return e.abrupt("return",f["@graph"]);case 16:return e.abrupt("return",null);case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[o,r]),url:r,owner:null==n?void 0:n.id}},exports.useMentions=function(n){var r,o,a=i.useDataModel(n),u=t.useQuery({type:"getList",resource:n,payload:{filter:{_predicates:[null==a||null===(r=a.fieldsMapping)||void 0===r?void 0:r.title],blankNodes:[]}}},{enabled:!(null==a||null===(o=a.fieldsMapping)||void 0===o||!o.title)}).data,l=e.useMemo((function(){if(u)return u.map((function(e){var t;return{id:e.id,label:e[null==a||null===(t=a.fieldsMapping)||void 0===t?void 0:t.title]}}))}),[u]);return{items:e.useMemo((function(){if(l)return function(e){var t=e.query;return l.filter((function(e){return e.label.toLowerCase().startsWith(t.toLowerCase())})).slice(0,5)}}),[l]),render:W}},exports.useOutbox=S,exports.useWebfinger=function(){return{fetch:e.useCallback(function(){var e=E(regeneratorRuntime.mark((function e(n){var r,o,a,i,u,l,c,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.split("@"),o=T(r,3),a=o[1],!(i=o[2])){e.next=18;break}return u=i.includes(":")?"http":"https",l="".concat(u,"://").concat(i,"/.well-known/webfinger?resource=acct:").concat(a,"@").concat(i),e.prev=4,e.next=7,t.fetchUtils.fetchJson(l);case 7:return c=e.sent,s=c.json,d=s.links.find((function(e){return"application/activity+json"===e.type})),e.abrupt("return",d?d.href:null);case 13:return e.prev=13,e.t0=e.catch(4),e.abrupt("return",null);case 16:e.next=19;break;case 18:return e.abrupt("return",null);case 19:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t){return e.apply(this,arguments)}}(),[])}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("react-admin"),n=require("ra-richtext-tiptap"),r=require("react-final-form"),o=require("@material-ui/core"),a=require("@material-ui/icons/Send"),i=require("@semapps/semantic-data-provider"),u=require("@semapps/auth-provider"),l=require("@tiptap/core"),c=require("@tiptap/extension-mention"),s=require("@semapps/field-components"),d=require("@tiptap/react"),f=require("tippy.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=p(e),b=p(a),v=p(c),h=p(f);function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){x(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function E(e,t,n,r,o,a,i){try{var u=e[a](i),l=u.value}catch(e){return void n(e)}u.done?t(l):Promise.resolve(l).then(r,o)}function w(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){E(a,r,o,i,u,"next",e)}function u(e){E(a,r,o,i,u,"throw",e)}i(void 0)}))}}function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(){return(I=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function T(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,a=[],i=!0,u=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(u)throw o}}return a}(e,t)||A(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||A(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var k={ARTICLE:"Article",AUDIO:"Audio",DOCUMENT:"Document",EVENT:"Event",IMAGE:"Image",NOTE:"Note",PAGE:"Page",PLACE:"Place",PROFILE:"Profile",RELATIONSHIP:"Relationship",TOMBSTONE:"Tombstone",VIDEO:"Video"},S="https://www.w3.org/ns/activitystreams#Public",P=function(){var n=t.useGetIdentity().identity,r=e.useMemo((function(){var e;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e?void 0:e.outbox}),[n]),o=e.useMemo((function(){var e,t;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e||null===(t=e.endpoints)||void 0===t?void 0:t["void:sparqlEndpoint"]}),[n]);return{post:e.useCallback(function(){var e=w(regeneratorRuntime.mark((function e(n){var o,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=localStorage.getItem("token"),e.next=3,t.fetchUtils.fetchJson(r,{method:"POST",body:JSON.stringify(y({"@context":"https://www.w3.org/ns/activitystreams"},n)),headers:new Headers({"Content-Type":"application/ld+json",Authorization:"Bearer ".concat(o)})});case 3:return a=e.sent,i=a.headers,e.abrupt("return",i.get("Location"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[r]),fetch:e.useCallback(w(regeneratorRuntime.mark((function e(){var n,a,u,l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o&&r){e.next=2;break}return e.abrupt("return");case 2:return n=localStorage.getItem("token"),a=i.buildBlankNodesQuery(["as:object"]),u="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(a.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ").concat(a.where,"\n }\n "),e.next=7,t.fetchUtils.fetchJson(o,{method:"POST",body:u,headers:new Headers({Accept:"application/ld+json",Authorization:n?"Bearer ".concat(n):void 0})});case 7:if(l=e.sent,!(c=l.json)["@graph"]){e.next=13;break}return e.abrupt("return",c["@graph"]);case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)}))),[o,r]),url:r,owner:null==n?void 0:n.id}},N=v.default.extend({renderHTML:function(e){var t=e.node,n=e.HTMLAttributes;return["span",l.mergeAttributes(this.options.HTMLAttributes,n),"@".concat(t.attrs.id.label)]},addAttributes:function(){return{label:{default:null,parseHTML:function(e){return{label:e.getAttribute("data-mention-label")}},renderHTML:function(e){return e.id.label?{"data-mention-label":e.id.label}:{}}},id:{default:null,parseHTML:function(e){return{id:e.getAttribute("data-mention-id")}},renderHTML:function(e){return e.id.id?{"data-mention-id":e.id.id}:{}}}}}}),D=o.makeStyles((function(e){return{form:{marginTop:-12},container:{paddingLeft:80,position:"relative"},avatar:{position:"absolute",top:16,left:0,bottom:0,width:64,height:64},editorContent:{"& > div":{backgroundColor:"rgba(0, 0, 0, 0.09)",padding:"2px 12px",borderWidth:"0px !important",borderRadius:0,borderBottom:"1px solid #FFF",minHeight:60,outline:"unset !important"},"& > div > p":{marginTop:12,marginBottom:12,fontFamily:e.typography.body1.fontFamily,marginBlockStart:"0.5em",marginBlockEnd:"0.5em"},marginBottom:-19},button:{marginBottom:15}}})),L=function(a){var l=a.context,c=a.helperText,s=a.mentions,d=a.userResource,f=a.addItem,p=a.removeItem,v=t.useRecordContext(),h=t.useGetIdentity().identity,g=i.useDataModel(d),E=D(),x=t.useNotify(),I=P(),T=O(e.useState(!1),2),A=T[0],C=T[1],L=O(e.useState(!1),2),j=L[0],M=L[1],F=e.useCallback(function(){var e=w(regeneratorRuntime.mark((function e(t,n){var r,o,a,i,u,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.reset,o=(new DOMParser).parseFromString(t.comment,"text/html"),a=Array.from(o.body.getElementsByClassName("mention")),i=[],a.forEach((function(e){var t=e.attributes["data-mention-id"].value,n=e.attributes["data-mention-label"].value,r=o.createElement("a");r.setAttribute("href",new URL(window.location.href).origin+"/"+d+"/"+encodeURIComponent(t)+"/show"),r.textContent="@"+n,e.parentNode.replaceChild(r,e),i.push(t)})),"undefined"!==o.body.innerHTML){e.next=9;break}x("Votre commentaire est vide","error"),e.next=24;break;case 9:return u=Date.now(),c={type:k.NOTE,attributedTo:I.owner,content:o.body.innerHTML,inReplyTo:v[l],published:(new Date).toISOString()},e.prev=11,f(y({id:u},c)),r(),C(!1),e.next=17,I.post(y(y({},c),{},{to:[].concat(i,[S])}));case 17:x("Commentaire posté avec succès","success"),e.next=24;break;case 20:e.prev=20,e.t0=e.catch(11),p(u),x(e.t0.message,"error");case 24:case"end":return e.stop()}}),e,null,[[11,20]])})));return function(t,n){return e.apply(this,arguments)}}(),[I,x,C,f,p]),B=e.useCallback((function(){h.id||M(!0)}),[h,M]);return s&&!s.items||!h?null:m.default.createElement(m.default.Fragment,null,m.default.createElement(r.Form,{onSubmit:F,subscription:{submitting:!0,pristine:!0},render:function(e){var t,r,a=e.handleSubmit,i=e.submitting;if(e.pristine){var u=document.getElementById("comment");u&&(u.innerHTML="")}return m.default.createElement("form",{onSubmit:a,className:E.form},m.default.createElement(o.Box,{className:E.container,onClick:B},m.default.createElement(o.Avatar,{src:null==h||null===(t=h.webIdData)||void 0===t?void 0:t[null==g||null===(r=g.fieldsMapping)||void 0===r?void 0:r.image],className:E.avatar}),m.default.createElement(n.RichTextInput,{source:"comment",label:"",toolbar:null,fullWidth:!0,classes:{editorContent:E.editorContent},editorOptions:y(y({},n.DefaultEditorOptions),{},{onFocus:function(){C(!0)},extensions:[].concat(R(n.DefaultEditorOptions.extensions),[s?N.configure({HTMLAttributes:{class:"mention"},suggestion:s}):null]),editable:!!h.id}),helperText:c}),A&&m.default.createElement(o.Button,{type:"submit",size:"small",variant:"contained",color:"primary",endIcon:m.default.createElement(b.default,null),disabled:i,className:E.button},"Envoyer")))}}),m.default.createElement(u.AuthDialog,{open:j,onClose:function(){return M(!1)},message:"Pour poster un commentaire, vous devez être connecté."}))},j=o.makeStyles((function(){return{container:{paddingLeft:80,marginTop:8,minHeight:80,position:"relative"},avatar:{position:"absolute",top:0,left:0,bottom:0,width:64,height:64},text:{paddingTop:2,paddingBottom:8},label:{fontWeight:"bold"},content:{"& p":{marginBlockStart:"0.5em",marginBlockEnd:"0.5em"}},loading:{zIndex:1e3,backgroundColor:"white",opacity:.5,position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",minHeight:200,marginTop:5}}})),M=function(e){var n=e.comments,r=e.userResource,a=e.loading,u=j(),l=i.useDataModel(r);return m.default.createElement(o.Box,{position:"relative"},n&&n.sort((function(e,t){return new Date(t.published)-new Date(e.published)})).map((function(e){var n,r;return m.default.createElement(o.Box,{className:u.container},m.default.createElement(o.Box,{className:u.avatar},m.default.createElement(i.ReferenceField,{record:e,reference:"Person",source:"attributedTo",linkType:"show"},m.default.createElement(s.AvatarWithLabelField,{image:null==l||null===(n=l.fieldsMapping)||void 0===n?void 0:n.image}))),m.default.createElement(o.Box,{className:u.text},m.default.createElement(o.Typography,{variant:"body2"},m.default.createElement(i.ReferenceField,{record:e,reference:"Person",source:"attributedTo",linkType:"show"},m.default.createElement(t.TextField,{variant:"body2",source:null==l||null===(r=l.fieldsMapping)||void 0===r?void 0:r.title,className:u.label}))," • ",m.default.createElement(t.DateField,{record:e,variant:"body2",source:"published",showTime:!0})),m.default.createElement(t.RichTextField,{record:e,variant:"body1",source:"content",className:u.content})))})),a&&m.default.createElement(o.Box,{minHeight:200},m.default.createElement(o.Box,{alignItems:"center",className:u.loading},m.default.createElement(o.CircularProgress,{size:60,thickness:6}))))},F=function(n){var r=t.useGetIdentity().identity,o=O(e.useState([]),2),a=o[0],i=o[1],u=O(e.useState(!1),2),l=u[0],c=u[1],s=O(e.useState(!1),2),d=s[0],f=s[1],p=O(e.useState(!1),2),m=p[0],b=p[1],v=e.useMemo((function(){if(n){if(n.startsWith("http"))return n;var e;if(null!=r&&r.webIdData)return null==r||null===(e=r.webIdData)||void 0===e?void 0:e[n]}}),[r,n]),h=e.useCallback(w(regeneratorRuntime.mark((function e(){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(v){e.next=2;break}return e.abrupt("return");case 2:c(!0),n=localStorage.getItem("token"),r=new Headers({Accept:"application/ld+json",Authorization:n?"Bearer ".concat(n):void 0}),t.fetchUtils.fetchJson(v,{headers:r}).then((function(e){var t=e.json;t&&t.items?i(t.items):t&&t.orderedItems?i(t.orderedItems):i([]),b(!1),f(!0),c(!1)})).catch((function(){b(!0),f(!0),c(!1)}));case 6:case"end":return e.stop()}}),e)}))),[i,f,c,b,v]);e.useEffect((function(){l||d||m||h()}),[h,l,d,m]);var g=e.useCallback((function(e){i((function(t){return[].concat(R(t),[e])}))}),[i]),y=e.useCallback((function(e){i((function(t){return t.filter((function(t){return"string"==typeof t?t!==e:t.id!==e}))}))}),[i]);return{items:a,loading:l,loaded:d,error:m,refetch:h,addItem:g,removeItem:y,url:v}},B=function(e){e.source;var n=e.context,r=e.helperText,o=e.userResource,a=e.mentions,i=t.useRecordContext(),u=F(i.replies),l=u.items,c=u.loading,s=u.addItem,d=u.removeItem;if(!o)throw new Error("No userResource defined for CommentsField");return m.default.createElement(m.default.Fragment,null,m.default.createElement(L,{context:n,helperText:r,userResource:o,mentions:a,addItem:s,removeItem:d}),m.default.createElement(M,{comments:l,loading:c,userResource:o}))};B.defaultProps={addLabel:!0,label:"Commentaires",source:"id",context:"id"};var U=["collectionUrl","resource","children"],H=function(e){var n=e.collectionUrl,r=e.resource,o=e.children,a=T(e,U);if(1!==m.default.Children.count(o))throw new Error("<CollectionList> only accepts a single child");var u=t.useGetOne(r,n,{enabled:!!n}),l=u.data;return u.loading?m.default.createElement("div",{style:{marginTop:8}},m.default.createElement(t.LinearProgress,null)):l?m.default.createElement(i.ReferenceArrayField,I({reference:r,record:l,source:"items"},a),o):null},q=["source","record","reference","children"],V=function(e){var t=e.source,n=e.record,r=e.reference,o=e.children,a=T(e,q);if(1!==m.default.Children.count(o))throw new Error("<ReferenceCollectionField> only accepts a single child");return n&&n[t]?m.default.createElement(H,I({resource:r,collectionUrl:n[t]},a),o):null};V.defaultProps={addLabel:!0};var G=o.makeStyles((function(e){return{items:{background:"#fff",borderRadius:"0.5rem",boxShadow:"0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)",color:"rgba(0, 0, 0, 0.8)",fontSize:"0.9rem",overflow:"hidden",padding:"0.2rem",position:"relative"},item:{background:"transparent",border:"1px solid transparent",borderRadius:"0.4rem",display:"block",margin:0,padding:"0.2rem 0.4rem",textAlign:"left",width:"100%","&.selected":{borderColor:"#000"}}}})),W=e.forwardRef((function(t,n){var r=O(e.useState(0),2),o=r[0],a=r[1],i=G(),u=function(e){var n=t.items[e];n&&t.command({id:n})};return e.useEffect((function(){return a(0)}),[t.items]),e.useImperativeHandle(n,(function(){return{onKeyDown:function(e){var n=e.event;return"ArrowUp"===n.key?(a((o+t.items.length-1)%t.items.length),!0):"ArrowDown"===n.key?(a((o+1)%t.items.length),!0):"Enter"===n.key&&(u(o),!0)}}})),m.default.createElement("div",{className:i.items},t.items.length?t.items.map((function(e,t){return m.default.createElement("button",{className:i.item+(t===o?" selected":""),key:t,onClick:function(){return u(t)}},e.label)})):m.default.createElement("div",{className:i.item},"Aucun résultat"))})),J=function(){var e,t;return{onStart:function(n){e=new d.ReactRenderer(W,{props:n,editor:n.editor}),t=h.default("body",{getReferenceClientRect:n.clientRect,appendTo:function(){return document.body},content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"})},onUpdate:function(n){e.updateProps(n),t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown:function(n){var r;return"Escape"===n.event.key?(t[0].hide(),!0):null===(r=e.ref)||void 0===r?void 0:r.onKeyDown(n)},onExit:function(){t[0].destroy(),e.destroy()}}};exports.ACTIVITY_TYPES={ACCEPT:"Accept",ADD:"Add",ANNOUNCE:"Announce",ARRIVE:"Arrive",BLOCK:"Block",CREATE:"Create",DELETE:"Delete",DISLIKE:"Dislike",FLAG:"Flag",FOLLOW:"Follow",IGNORE:"Ignore",INVITE:"Invite",JOIN:"Join",LEAVE:"Leave",LIKE:"Like",LISTEN:"Listen",MOVE:"Move",OFFER:"Offer",QUESTION:"Question",REJECT:"Reject",READ:"Read",REMOVE:"Remove",TENTATIVE_REJECT:"TentativeReject",TENTATIVE_ACCEPT:"TentativeAccept",TRAVAL:"Travel",UNDO:"Undo",UPDATE:"Update",VIEW:"View"},exports.ACTOR_TYPES={APPLICATION:"Application",GROUP:"Group",ORGANIZATION:"Organization",PERSON:"Person",SERVICE:"Service"},exports.CollectionList=H,exports.CommentsField=B,exports.OBJECT_TYPES=k,exports.PUBLIC_URI=S,exports.ReferenceCollectionField=V,exports.useCollection=F,exports.useInbox=function(){var n=t.useGetIdentity().identity,r=e.useMemo((function(){var e;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e?void 0:e.inbox}),[n]),o=e.useMemo((function(){var e,t;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e||null===(t=e.endpoints)||void 0===t?void 0:t["void:sparqlEndpoint"]}),[n]);return{fetch:e.useCallback(function(){var e=w(regeneratorRuntime.mark((function e(n){var a,u,l,c,s,d,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.filters,o&&r){e.next=3;break}return e.abrupt("return");case 3:return u=localStorage.getItem("token"),l=i.buildBlankNodesQuery(["as:object"]),c="",a&&Object.keys(a).forEach((function(e){if(a[e]){var t=a[e].startsWith("http")?"<".concat(a[e],">"):a[e];c+="?s1 ".concat(e," ").concat(t," .")}})),s="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(l.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ").concat(c,"\n ").concat(l.where,"\n }\n "),e.next=10,t.fetchUtils.fetchJson(o,{method:"POST",body:s,headers:new Headers({Accept:"application/ld+json",Authorization:u?"Bearer ".concat(u):void 0})});case 10:if(d=e.sent,!(f=d.json)["@graph"]){e.next=16;break}return e.abrupt("return",f["@graph"]);case 16:return e.abrupt("return",null);case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[o,r]),url:r,owner:null==n?void 0:n.id}},exports.useMentions=function(n){var r,o,a=i.useDataModel(n),u=t.useQuery({type:"getList",resource:n,payload:{filter:{_predicates:[null==a||null===(r=a.fieldsMapping)||void 0===r?void 0:r.title],blankNodes:[]}}},{enabled:!(null==a||null===(o=a.fieldsMapping)||void 0===o||!o.title)}).data,l=e.useMemo((function(){if(u)return u.map((function(e){var t;return{id:e.id,label:e[null==a||null===(t=a.fieldsMapping)||void 0===t?void 0:t.title]}}))}),[u]);return{items:e.useMemo((function(){if(l)return function(e){var t=e.query;return l.filter((function(e){return e.label.toLowerCase().startsWith(t.toLowerCase())})).slice(0,5)}}),[l]),render:J}},exports.useOutbox=P,exports.useWebfinger=function(){return{fetch:e.useCallback(function(){var e=w(regeneratorRuntime.mark((function e(n){var r,o,a,i,u,l,c,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.split("@"),o=O(r,3),a=o[1],!(i=o[2])){e.next=18;break}return u=i.includes(":")?"http":"https",l="".concat(u,"://").concat(i,"/.well-known/webfinger?resource=acct:").concat(a,"@").concat(i),e.prev=4,e.next=7,t.fetchUtils.fetchJson(l);case 7:return c=e.sent,s=c.json,d=s.links.find((function(e){return"application/activity+json"===e.type})),e.abrupt("return",d?d.href:null);case 13:return e.prev=13,e.t0=e.catch(4),e.abrupt("return",null);case 16:e.next=19;break;case 18:return e.abrupt("return",null);case 19:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t){return e.apply(this,arguments)}}(),[])}};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useInbox.js","../src/hooks/useMentions/useMentions.js","../src/hooks/useWebfinger.js"],"sourcesContent":["export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVAL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'];\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: 'Bearer ' + token\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { 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 marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n\n const onSubmit = useCallback(\n async (values, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n new URL(window.location.href).origin + '/' + userResource + '/' + encodeURIComponent(userUri) + '/show'\n );\n link.textContent = '@' + userLabel;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', 'error');\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, 'error');\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n // Don't init the comment field until the mentions are loaded, as the suggestion field can only be initialized once\n if (mentions && !mentions.items) return null;\n\n return (\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement) commentElement.innerHTML = '';\n }\n\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <Box className={classes.container}>\n <Avatar src={identity?.webIdData?.[userDataModel?.fieldsMapping?.image]} className={classes.avatar} />\n <RichTextInput\n source=\"comment\"\n label=\"\"\n toolbar={null}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ]\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\n );\n};\n\nexport default PostCommentForm;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\nimport { ReferenceField, useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\" linkType={false}>\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: 'Bearer ' + localStorage.getItem('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]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n addLabel: true,\n label: 'Commentaires',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/semantic-data-provider';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<ReferenceCollectionField> only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n <CollectionList resource={reference} collectionUrl={record[source]} {...rest}>\n {children}\n </CollectionList>\n );\n};\n\nReferenceCollectionField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceCollectionField;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import { 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'];\n }\n }, [identity]);\n\n const fetch = useCallback(\n async ({ filters }) => {\n if (!sparqlEndpoint || !inboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n let filtersWhereQuery = '';\n if (filters) {\n Object.keys(filters).forEach(predicate => {\n if (filters[predicate]) {\n const object = filters[predicate].startsWith('http') ? `<${filters[predicate]}>` : filters[predicate];\n filtersWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${inboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ${filtersWhereQuery}\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: 'Bearer ' + token\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n"],"names":["OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","webIdData","_identity$webIdData","outbox","sparqlEndpoint","_identity$webIdData2","endpoints","_identity$webIdData2$","post","useCallback","activity","token","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","headers","Headers","Authorization","get","fetch","blankNodesQuery","buildBlankNodesQuery","query","construct","where","Accept","json","url","owner","id","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","this","options","attrs","label","addAttributes","parseHTML","element","getAttribute","attributes","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","button","PostCommentForm","context","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","useState","expanded","setExpanded","onSubmit","values","reset","document","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","mentionedUsersUris","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","tempId","Date","now","note","type","attributedTo","content","inReplyTo","published","toISOString","to","_context","message","items","React","Form","subscription","submitting","pristine","render","handleSubmit","commentElement","getElementById","className","Box","Avatar","src","fieldsMapping","_userDataModel$fields","image","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","configure","suggestion","Button","size","variant","color","endIcon","SendIcon","disabled","text","paddingTop","paddingBottom","fontWeight","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","_userDataModel$fields2","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","loaded","setLoaded","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","Children","count","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","ReferenceCollectionField","background","boxShadow","fontSize","overflow","border","margin","textAlign","borderColor","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","onClick","renderMentions","component","popup","onStart","ReactRenderer","MentionsList","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","hide","_component$ref","onExit","destroy","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","inboxUrl","inbox","filters","filtersWhereQuery","Object","keys","predicate","object","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice","split","username","host","protocol","includes","webfingerUrl","links","find","l"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useInbox.js","../src/hooks/useMentions/useMentions.js","../src/hooks/useWebfinger.js"],"sourcesContent":["export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVAL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'];\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AuthDialog } from '@semapps/auth-provider';\nimport { OBJECT_TYPES, PUBLIC_URI } from '../../constants';\nimport useOutbox from '../../hooks/useOutbox';\nimport CustomMention from './CustomMention';\n\nconst useStyles = makeStyles(theme => ({\n form: {\n marginTop: -12 // Negative margin to keep the form close to the label\n },\n container: {\n paddingLeft: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 16,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n editorContent: {\n '& > div': {\n backgroundColor: 'rgba(0, 0, 0, 0.09)',\n padding: '2px 12px',\n borderWidth: '0px !important',\n borderRadius: 0,\n borderBottom: '1px solid #FFF',\n minHeight: 60,\n outline: 'unset !important'\n },\n '& > div > p': {\n marginTop: 12,\n marginBottom: 12,\n fontFamily: theme.typography.body1.fontFamily,\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n },\n marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n\n const onSubmit = useCallback(\n async (values, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n new URL(window.location.href).origin + '/' + userResource + '/' + encodeURIComponent(userUri) + '/show'\n );\n link.textContent = '@' + userLabel;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', 'error');\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, 'error');\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n const openAuthIfDisconnected = useCallback(() => {\n if (!identity.id) {\n setOpenAuth(true);\n }\n }, [identity, setOpenAuth]);\n\n // Don't init the editor options until mentions and identity are loaded, as they can only be initialized once\n if ((mentions && !mentions.items) || !identity) return null;\n\n return (\n <>\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement) commentElement.innerHTML = '';\n }\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar src={identity?.webIdData?.[userDataModel?.fieldsMapping?.image]} className={classes.avatar} />\n <RichTextInput\n source=\"comment\"\n label=\"\"\n toolbar={null}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ],\n // Disable editor if user is not connected\n editable: !!identity.id\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\n <AuthDialog\n open={openAuth}\n onClose={() => setOpenAuth(false)}\n message=\"Pour poster un commentaire, vous devez être connecté.\"\n />\n </>\n );\n};\n\nexport default PostCommentForm;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\nimport { ReferenceField, useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\" linkType=\"show\">\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\" linkType=\"show\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const token = localStorage.getItem('token');\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n });\n\n fetchUtils\n .fetchJson(collectionUrl, { headers })\n .then(({ json }) => {\n if (json && json.items) {\n setItems(json.items);\n } else if (json && json.orderedItems) {\n setItems(json.orderedItems);\n } else {\n setItems([]);\n }\n setError(false);\n setLoaded(true);\n setLoading(false);\n })\n .catch(() => {\n setError(true);\n setLoaded(true);\n setLoading(false);\n });\n }, [setItems, setLoaded, setLoading, setError, collectionUrl]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n addLabel: true,\n label: 'Commentaires',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/semantic-data-provider';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<ReferenceCollectionField> only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n <CollectionList resource={reference} collectionUrl={record[source]} {...rest}>\n {children}\n </CollectionList>\n );\n};\n\nReferenceCollectionField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceCollectionField;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import { 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'];\n }\n }, [identity]);\n\n const fetch = useCallback(\n async ({ filters }) => {\n if (!sparqlEndpoint || !inboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n let filtersWhereQuery = '';\n if (filters) {\n Object.keys(filters).forEach(predicate => {\n if (filters[predicate]) {\n const object = filters[predicate].startsWith('http') ? `<${filters[predicate]}>` : filters[predicate];\n filtersWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${inboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ${filtersWhereQuery}\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n"],"names":["OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","webIdData","_identity$webIdData","outbox","sparqlEndpoint","_identity$webIdData2","endpoints","_identity$webIdData2$","post","useCallback","activity","token","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","headers","Headers","Authorization","get","fetch","blankNodesQuery","buildBlankNodesQuery","query","construct","where","Accept","undefined","json","url","owner","id","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","this","options","attrs","label","addAttributes","parseHTML","element","getAttribute","attributes","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","button","PostCommentForm","context","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","useState","expanded","setExpanded","openAuth","setOpenAuth","onSubmit","values","reset","document","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","mentionedUsersUris","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","tempId","Date","now","note","type","attributedTo","content","inReplyTo","published","toISOString","to","_context","message","openAuthIfDisconnected","items","React","Form","subscription","submitting","pristine","render","handleSubmit","commentElement","getElementById","className","Box","onClick","Avatar","src","fieldsMapping","_userDataModel$fields","image","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","configure","suggestion","editable","Button","size","variant","color","endIcon","SendIcon","disabled","AuthDialog","open","onClose","text","paddingTop","paddingBottom","fontWeight","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","_userDataModel$fields2","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","loaded","setLoaded","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","Children","count","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","ReferenceCollectionField","background","boxShadow","fontSize","overflow","border","margin","textAlign","borderColor","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","renderMentions","component","popup","onStart","ReactRenderer","MentionsList","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","hide","_component$ref","onExit","destroy","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","inboxUrl","inbox","filters","filtersWhereQuery","Object","keys","predicate","object","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice","split","username","host","protocol","includes","webfingerUrl","links","find","l"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useMemo as t,useCallback as n,useState as r,useEffect as o,forwardRef as i,useImperativeHandle as a}from"react";import{useGetIdentity as c,fetchUtils as l,useRecordContext as u,useNotify as s,TextField as d,DateField as m,RichTextField as p,useGetOne as f,LinearProgress as b,useQuery as v}from"react-admin";import{RichTextInput as g,DefaultEditorOptions as h}from"ra-richtext-tiptap";import{Form as y}from"react-final-form";import{makeStyles as E,Box as w,Avatar as I,Button as T,Typography as O,CircularProgress as R}from"@material-ui/core";import x from"@material-ui/icons/Send";import{buildBlankNodesQuery as A,useDataModel as k,ReferenceField as C,ReferenceArrayField as N}from"@semapps/semantic-data-provider";import{mergeAttributes as P}from"@tiptap/core";import S from"@tiptap/extension-mention";import{AvatarWithLabelField as L}from"@semapps/field-components";import{ReactRenderer as j}from"@tiptap/react";import D from"tippy.js";function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function H(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?M(Object(n),!0).forEach((function(t){B(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function F(e,t,n,r,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}function U(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){F(i,r,o,a,c,"next",e)}function c(e){F(i,r,o,a,c,"throw",e)}a(void 0)}))}}function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function V(){return(V=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function J(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function W(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],a=!0,c=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(c)throw o}}return i}(e,t)||G(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(e){return function(e){if(Array.isArray(e))return K(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||G(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e,t){if(e){if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?K(e,t):void 0}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var q={ACCEPT:"Accept",ADD:"Add",ANNOUNCE:"Announce",ARRIVE:"Arrive",BLOCK:"Block",CREATE:"Create",DELETE:"Delete",DISLIKE:"Dislike",FLAG:"Flag",FOLLOW:"Follow",IGNORE:"Ignore",INVITE:"Invite",JOIN:"Join",LEAVE:"Leave",LIKE:"Like",LISTEN:"Listen",MOVE:"Move",OFFER:"Offer",QUESTION:"Question",REJECT:"Reject",READ:"Read",REMOVE:"Remove",TENTATIVE_REJECT:"TentativeReject",TENTATIVE_ACCEPT:"TentativeAccept",TRAVAL:"Travel",UNDO:"Undo",UPDATE:"Update",VIEW:"View"},_={APPLICATION:"Application",GROUP:"Group",ORGANIZATION:"Organization",PERSON:"Person",SERVICE:"Service"},Q={ARTICLE:"Article",AUDIO:"Audio",DOCUMENT:"Document",EVENT:"Event",IMAGE:"Image",NOTE:"Note",PAGE:"Page",PLACE:"Place",PROFILE:"Profile",RELATIONSHIP:"Relationship",TOMBSTONE:"Tombstone",VIDEO:"Video"},X="https://www.w3.org/ns/activitystreams#Public",Z=function(){var e=c().identity,r=t((function(){var t;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t?void 0:t.outbox}),[e]),o=t((function(){var t,n;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t||null===(n=t.endpoints)||void 0===n?void 0:n["void:sparqlEndpoint"]}),[e]);return{post:n(function(){var e=U(regeneratorRuntime.mark((function e(t){var n,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=localStorage.getItem("token"),e.next=3,l.fetchJson(r,{method:"POST",body:JSON.stringify(H({"@context":"https://www.w3.org/ns/activitystreams"},t)),headers:new Headers({"Content-Type":"application/ld+json",Authorization:"Bearer ".concat(n)})});case 3:return o=e.sent,i=o.headers,e.abrupt("return",i.get("Location"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[r]),fetch:n(U(regeneratorRuntime.mark((function e(){var t,n,i,a,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o&&r){e.next=2;break}return e.abrupt("return");case 2:return t=localStorage.getItem("token"),n=A(["as:object"]),i="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(n.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ").concat(n.where,"\n }\n "),e.next=7,l.fetchJson(o,{method:"POST",body:i,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+t})});case 7:if(a=e.sent,!(c=a.json)["@graph"]){e.next=13;break}return e.abrupt("return",c["@graph"]);case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)}))),[o,r]),url:r,owner:null==e?void 0:e.id}},$=S.extend({renderHTML:function(e){var t=e.node,n=e.HTMLAttributes;return["span",P(this.options.HTMLAttributes,n),"@".concat(t.attrs.id.label)]},addAttributes:function(){return{label:{default:null,parseHTML:function(e){return{label:e.getAttribute("data-mention-label")}},renderHTML:function(e){return e.id.label?{"data-mention-label":e.id.label}:{}}},id:{default:null,parseHTML:function(e){return{id:e.getAttribute("data-mention-id")}},renderHTML:function(e){return e.id.id?{"data-mention-id":e.id.id}:{}}}}}}),Y=E((function(e){return{form:{marginTop:-12},container:{paddingLeft:80,position:"relative"},avatar:{position:"absolute",top:16,left:0,bottom:0,width:64,height:64},editorContent:{"& > div":{backgroundColor:"rgba(0, 0, 0, 0.09)",padding:"2px 12px",borderWidth:"0px !important",borderRadius:0,borderBottom:"1px solid #FFF",minHeight:60,outline:"unset !important"},"& > div > p":{marginTop:12,marginBottom:12,fontFamily:e.typography.body1.fontFamily,marginBlockStart:"0.5em",marginBlockEnd:"0.5em"},marginBottom:-19},button:{marginBottom:15}}})),ee=function(t){var o=t.context,i=t.helperText,a=t.mentions,l=t.userResource,d=t.addItem,m=t.removeItem,p=u(),f=c().identity,b=k(l),v=Y(),E=s(),O=Z(),R=W(r(!1),2),A=R[0],C=R[1],N=n(function(){var e=U(regeneratorRuntime.mark((function e(t,n){var r,i,a,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.reset,i=(new DOMParser).parseFromString(t.comment,"text/html"),a=Array.from(i.body.getElementsByClassName("mention")),c=[],a.forEach((function(e){var t=e.attributes["data-mention-id"].value,n=e.attributes["data-mention-label"].value,r=i.createElement("a");r.setAttribute("href",new URL(window.location.href).origin+"/"+l+"/"+encodeURIComponent(t)+"/show"),r.textContent="@"+n,e.parentNode.replaceChild(r,e),c.push(t)})),"undefined"!==i.body.innerHTML){e.next=9;break}E("Votre commentaire est vide","error"),e.next=24;break;case 9:return u=Date.now(),s={type:Q.NOTE,attributedTo:O.owner,content:i.body.innerHTML,inReplyTo:p[o],published:(new Date).toISOString()},e.prev=11,d(H({id:u},s)),r(),C(!1),e.next=17,O.post(H(H({},s),{},{to:[].concat(c,[X])}));case 17:E("Commentaire posté avec succès","success"),e.next=24;break;case 20:e.prev=20,e.t0=e.catch(11),m(u),E(e.t0.message,"error");case 24:case"end":return e.stop()}}),e,null,[[11,20]])})));return function(t,n){return e.apply(this,arguments)}}(),[O,E,C,d,m]);return a&&!a.items?null:e.createElement(y,{onSubmit:N,subscription:{submitting:!0,pristine:!0},render:function(t){var n,r,o=t.handleSubmit,c=t.submitting;if(t.pristine){var l=document.getElementById("comment");l&&(l.innerHTML="")}return e.createElement("form",{onSubmit:o,className:v.form},e.createElement(w,{className:v.container},e.createElement(I,{src:null==f||null===(n=f.webIdData)||void 0===n?void 0:n[null==b||null===(r=b.fieldsMapping)||void 0===r?void 0:r.image],className:v.avatar}),e.createElement(g,{source:"comment",label:"",toolbar:null,fullWidth:!0,classes:{editorContent:v.editorContent},editorOptions:H(H({},h),{},{onFocus:function(){C(!0)},extensions:[].concat(z(h.extensions),[a?$.configure({HTMLAttributes:{class:"mention"},suggestion:a}):null])}),helperText:i}),A&&e.createElement(T,{type:"submit",size:"small",variant:"contained",color:"primary",endIcon:e.createElement(x,null),disabled:c,className:v.button},"Envoyer")))}})},te=E((function(){return{container:{paddingLeft:80,marginTop:8,minHeight:80,position:"relative"},avatar:{position:"absolute",top:0,left:0,bottom:0,width:64,height:64},text:{paddingTop:2,paddingBottom:8},label:{fontWeight:"bold"},content:{"& p":{marginBlockStart:"0.5em",marginBlockEnd:"0.5em"}},loading:{zIndex:1e3,backgroundColor:"white",opacity:.5,position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",minHeight:200,marginTop:5}}})),ne=function(t){var n=t.comments,r=t.userResource,o=t.loading,i=te(),a=k(r);return e.createElement(w,{position:"relative"},n&&n.sort((function(e,t){return new Date(t.published)-new Date(e.published)})).map((function(t){var n,r;return e.createElement(w,{className:i.container},e.createElement(w,{className:i.avatar},e.createElement(C,{record:t,reference:"Person",source:"attributedTo",linkType:!1},e.createElement(L,{image:null==a||null===(n=a.fieldsMapping)||void 0===n?void 0:n.image}))),e.createElement(w,{className:i.text},e.createElement(O,{variant:"body2"},e.createElement(C,{record:t,reference:"Person",source:"attributedTo"},e.createElement(d,{variant:"body2",source:null==a||null===(r=a.fieldsMapping)||void 0===r?void 0:r.title,className:i.label}))," • ",e.createElement(m,{record:t,variant:"body2",source:"published",showTime:!0})),e.createElement(p,{record:t,variant:"body1",source:"content",className:i.content})))})),o&&e.createElement(w,{minHeight:200},e.createElement(w,{alignItems:"center",className:i.loading},e.createElement(R,{size:60,thickness:6}))))},re=function(e){var i=c().identity,a=W(r([]),2),u=a[0],s=a[1],d=W(r(!1),2),m=d[0],p=d[1],f=W(r(!1),2),b=f[0],v=f[1],g=W(r(!1),2),h=g[0],y=g[1],E=t((function(){if(e){if(e.startsWith("http"))return e;var t;if(null!=i&&i.webIdData)return null==i||null===(t=i.webIdData)||void 0===t?void 0:t[e]}}),[i,e]),w=n(U(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(E){e.next=2;break}return e.abrupt("return");case 2:p(!0),t=new Headers({Accept:"application/ld+json",Authorization:"Bearer "+localStorage.getItem("token")}),l.fetchJson(E,{headers:t}).then((function(e){var t=e.json;t&&t.items?s(t.items):t&&t.orderedItems?s(t.orderedItems):s([]),y(!1),v(!0),p(!1)})).catch((function(){y(!0),v(!0),p(!1)}));case 5:case"end":return e.stop()}}),e)}))),[s,v,p,y,E]);o((function(){m||b||h||w()}),[w,m,b,h]);var I=n((function(e){s((function(t){return[].concat(z(t),[e])}))}),[s]),T=n((function(e){s((function(t){return t.filter((function(t){return"string"==typeof t?t!==e:t.id!==e}))}))}),[s]);return{items:u,loading:m,loaded:b,error:h,refetch:w,addItem:I,removeItem:T,url:E}},oe=function(t){t.source;var n=t.context,r=t.helperText,o=t.userResource,i=t.mentions,a=u(),c=re(a.replies),l=c.items,s=c.loading,d=c.addItem,m=c.removeItem;if(!o)throw new Error("No userResource defined for CommentsField");return e.createElement(e.Fragment,null,e.createElement(ee,{context:n,helperText:r,userResource:o,mentions:i,addItem:d,removeItem:m}),e.createElement(ne,{comments:l,loading:s,userResource:o}))};oe.defaultProps={addLabel:!0,label:"Commentaires",source:"id",context:"id"};var ie=["collectionUrl","resource","children"],ae=function(t){var n=t.collectionUrl,r=t.resource,o=t.children,i=J(t,ie);if(1!==e.Children.count(o))throw new Error("<CollectionList> only accepts a single child");var a=f(r,n,{enabled:!!n}),c=a.data;return a.loading?e.createElement("div",{style:{marginTop:8}},e.createElement(b,null)):c?e.createElement(N,V({reference:r,record:c,source:"items"},i),o):null},ce=["source","record","reference","children"],le=function(t){var n=t.source,r=t.record,o=t.reference,i=t.children,a=J(t,ce);if(1!==e.Children.count(i))throw new Error("<ReferenceCollectionField> only accepts a single child");return r&&r[n]?e.createElement(ae,V({resource:o,collectionUrl:r[n]},a),i):null};le.defaultProps={addLabel:!0};var ue=function(){var e=c().identity,r=t((function(){var t;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t?void 0:t.inbox}),[e]),o=t((function(){var t,n;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t||null===(n=t.endpoints)||void 0===n?void 0:n["void:sparqlEndpoint"]}),[e]);return{fetch:n(function(){var e=U(regeneratorRuntime.mark((function e(t){var n,i,a,c,u,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.filters,o&&r){e.next=3;break}return e.abrupt("return");case 3:return i=localStorage.getItem("token"),a=A(["as:object"]),c="",n&&Object.keys(n).forEach((function(e){if(n[e]){var t=n[e].startsWith("http")?"<".concat(n[e],">"):n[e];c+="?s1 ".concat(e," ").concat(t," .")}})),u="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(a.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ").concat(c,"\n ").concat(a.where,"\n }\n "),e.next=10,l.fetchJson(o,{method:"POST",body:u,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+i})});case 10:if(s=e.sent,!(d=s.json)["@graph"]){e.next=16;break}return e.abrupt("return",d["@graph"]);case 16:return e.abrupt("return",null);case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[o,r]),url:r,owner:null==e?void 0:e.id}},se=function(){return{fetch:n(function(){var e=U(regeneratorRuntime.mark((function e(t){var n,r,o,i,a,c,u,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.split("@"),r=W(n,3),o=r[1],!(i=r[2])){e.next=18;break}return a=i.includes(":")?"http":"https",c="".concat(a,"://").concat(i,"/.well-known/webfinger?resource=acct:").concat(o,"@").concat(i),e.prev=4,e.next=7,l.fetchJson(c);case 7:return u=e.sent,s=u.json,d=s.links.find((function(e){return"application/activity+json"===e.type})),e.abrupt("return",d?d.href:null);case 13:return e.prev=13,e.t0=e.catch(4),e.abrupt("return",null);case 16:e.next=19;break;case 18:return e.abrupt("return",null);case 19:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t){return e.apply(this,arguments)}}(),[])}},de=E((function(e){return{items:{background:"#fff",borderRadius:"0.5rem",boxShadow:"0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)",color:"rgba(0, 0, 0, 0.8)",fontSize:"0.9rem",overflow:"hidden",padding:"0.2rem",position:"relative"},item:{background:"transparent",border:"1px solid transparent",borderRadius:"0.4rem",display:"block",margin:0,padding:"0.2rem 0.4rem",textAlign:"left",width:"100%","&.selected":{borderColor:"#000"}}}})),me=i((function(t,n){var i=W(r(0),2),c=i[0],l=i[1],u=de(),s=function(e){var n=t.items[e];n&&t.command({id:n})};return o((function(){return l(0)}),[t.items]),a(n,(function(){return{onKeyDown:function(e){var n=e.event;return"ArrowUp"===n.key?(l((c+t.items.length-1)%t.items.length),!0):"ArrowDown"===n.key?(l((c+1)%t.items.length),!0):"Enter"===n.key&&(s(c),!0)}}})),e.createElement("div",{className:u.items},t.items.length?t.items.map((function(t,n){return e.createElement("button",{className:u.item+(n===c?" selected":""),key:n,onClick:function(){return s(n)}},t.label)})):e.createElement("div",{className:u.item},"Aucun résultat"))})),pe=function(){var e,t;return{onStart:function(n){e=new j(me,{props:n,editor:n.editor}),t=D("body",{getReferenceClientRect:n.clientRect,appendTo:function(){return document.body},content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"})},onUpdate:function(n){e.updateProps(n),t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown:function(n){var r;return"Escape"===n.event.key?(t[0].hide(),!0):null===(r=e.ref)||void 0===r?void 0:r.onKeyDown(n)},onExit:function(){t[0].destroy(),e.destroy()}}},fe=function(e){var n,r,o=k(e),i=v({type:"getList",resource:e,payload:{filter:{_predicates:[null==o||null===(n=o.fieldsMapping)||void 0===n?void 0:n.title],blankNodes:[]}}},{enabled:!(null==o||null===(r=o.fieldsMapping)||void 0===r||!r.title)}).data,a=t((function(){if(i)return i.map((function(e){var t;return{id:e.id,label:e[null==o||null===(t=o.fieldsMapping)||void 0===t?void 0:t.title]}}))}),[i]);return{items:t((function(){if(a)return function(e){var t=e.query;return a.filter((function(e){return e.label.toLowerCase().startsWith(t.toLowerCase())})).slice(0,5)}}),[a]),render:pe}};export{q as ACTIVITY_TYPES,_ as ACTOR_TYPES,ae as CollectionList,oe as CommentsField,Q as OBJECT_TYPES,X as PUBLIC_URI,le as ReferenceCollectionField,re as useCollection,ue as useInbox,fe as useMentions,Z as useOutbox,se as useWebfinger};
1
+ import e,{useMemo as t,useCallback as n,useState as r,useEffect as o,forwardRef as i,useImperativeHandle as a}from"react";import{useGetIdentity as c,fetchUtils as l,useRecordContext as u,useNotify as s,TextField as d,DateField as m,RichTextField as p,useGetOne as f,LinearProgress as b,useQuery as v}from"react-admin";import{RichTextInput as g,DefaultEditorOptions as h}from"ra-richtext-tiptap";import{Form as y}from"react-final-form";import{makeStyles as E,Box as w,Avatar as I,Button as T,Typography as O,CircularProgress as R}from"@material-ui/core";import x from"@material-ui/icons/Send";import{buildBlankNodesQuery as A,useDataModel as k,ReferenceField as C,ReferenceArrayField as P}from"@semapps/semantic-data-provider";import{AuthDialog as N}from"@semapps/auth-provider";import{mergeAttributes as S}from"@tiptap/core";import L from"@tiptap/extension-mention";import{AvatarWithLabelField as j}from"@semapps/field-components";import{ReactRenderer as D}from"@tiptap/react";import M from"tippy.js";function H(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function F(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?H(Object(n),!0).forEach((function(t){V(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):H(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function U(e,t,n,r,o,i,a){try{var c=e[i](a),l=c.value}catch(e){return void n(e)}c.done?t(l):Promise.resolve(l).then(r,o)}function B(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){U(i,r,o,a,c,"next",e)}function c(e){U(i,r,o,a,c,"throw",e)}a(void 0)}))}}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function z(){return(z=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function J(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function W(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,o,i=[],a=!0,c=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(c)throw o}}return i}(e,t)||K(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||K(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(e,t){if(e){if("string"==typeof e)return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var _={ACCEPT:"Accept",ADD:"Add",ANNOUNCE:"Announce",ARRIVE:"Arrive",BLOCK:"Block",CREATE:"Create",DELETE:"Delete",DISLIKE:"Dislike",FLAG:"Flag",FOLLOW:"Follow",IGNORE:"Ignore",INVITE:"Invite",JOIN:"Join",LEAVE:"Leave",LIKE:"Like",LISTEN:"Listen",MOVE:"Move",OFFER:"Offer",QUESTION:"Question",REJECT:"Reject",READ:"Read",REMOVE:"Remove",TENTATIVE_REJECT:"TentativeReject",TENTATIVE_ACCEPT:"TentativeAccept",TRAVAL:"Travel",UNDO:"Undo",UPDATE:"Update",VIEW:"View"},Q={APPLICATION:"Application",GROUP:"Group",ORGANIZATION:"Organization",PERSON:"Person",SERVICE:"Service"},X={ARTICLE:"Article",AUDIO:"Audio",DOCUMENT:"Document",EVENT:"Event",IMAGE:"Image",NOTE:"Note",PAGE:"Page",PLACE:"Place",PROFILE:"Profile",RELATIONSHIP:"Relationship",TOMBSTONE:"Tombstone",VIDEO:"Video"},Z="https://www.w3.org/ns/activitystreams#Public",$=function(){var e=c().identity,r=t((function(){var t;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t?void 0:t.outbox}),[e]),o=t((function(){var t,n;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t||null===(n=t.endpoints)||void 0===n?void 0:n["void:sparqlEndpoint"]}),[e]);return{post:n(function(){var e=B(regeneratorRuntime.mark((function e(t){var n,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=localStorage.getItem("token"),e.next=3,l.fetchJson(r,{method:"POST",body:JSON.stringify(F({"@context":"https://www.w3.org/ns/activitystreams"},t)),headers:new Headers({"Content-Type":"application/ld+json",Authorization:"Bearer ".concat(n)})});case 3:return o=e.sent,i=o.headers,e.abrupt("return",i.get("Location"));case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[r]),fetch:n(B(regeneratorRuntime.mark((function e(){var t,n,i,a,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o&&r){e.next=2;break}return e.abrupt("return");case 2:return t=localStorage.getItem("token"),n=A(["as:object"]),i="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(n.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ").concat(n.where,"\n }\n "),e.next=7,l.fetchJson(o,{method:"POST",body:i,headers:new Headers({Accept:"application/ld+json",Authorization:t?"Bearer ".concat(t):void 0})});case 7:if(a=e.sent,!(c=a.json)["@graph"]){e.next=13;break}return e.abrupt("return",c["@graph"]);case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)}))),[o,r]),url:r,owner:null==e?void 0:e.id}},Y=L.extend({renderHTML:function(e){var t=e.node,n=e.HTMLAttributes;return["span",S(this.options.HTMLAttributes,n),"@".concat(t.attrs.id.label)]},addAttributes:function(){return{label:{default:null,parseHTML:function(e){return{label:e.getAttribute("data-mention-label")}},renderHTML:function(e){return e.id.label?{"data-mention-label":e.id.label}:{}}},id:{default:null,parseHTML:function(e){return{id:e.getAttribute("data-mention-id")}},renderHTML:function(e){return e.id.id?{"data-mention-id":e.id.id}:{}}}}}}),ee=E((function(e){return{form:{marginTop:-12},container:{paddingLeft:80,position:"relative"},avatar:{position:"absolute",top:16,left:0,bottom:0,width:64,height:64},editorContent:{"& > div":{backgroundColor:"rgba(0, 0, 0, 0.09)",padding:"2px 12px",borderWidth:"0px !important",borderRadius:0,borderBottom:"1px solid #FFF",minHeight:60,outline:"unset !important"},"& > div > p":{marginTop:12,marginBottom:12,fontFamily:e.typography.body1.fontFamily,marginBlockStart:"0.5em",marginBlockEnd:"0.5em"},marginBottom:-19},button:{marginBottom:15}}})),te=function(t){var o=t.context,i=t.helperText,a=t.mentions,l=t.userResource,d=t.addItem,m=t.removeItem,p=u(),f=c().identity,b=k(l),v=ee(),E=s(),O=$(),R=W(r(!1),2),A=R[0],C=R[1],P=W(r(!1),2),S=P[0],L=P[1],j=n(function(){var e=B(regeneratorRuntime.mark((function e(t,n){var r,i,a,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.reset,i=(new DOMParser).parseFromString(t.comment,"text/html"),a=Array.from(i.body.getElementsByClassName("mention")),c=[],a.forEach((function(e){var t=e.attributes["data-mention-id"].value,n=e.attributes["data-mention-label"].value,r=i.createElement("a");r.setAttribute("href",new URL(window.location.href).origin+"/"+l+"/"+encodeURIComponent(t)+"/show"),r.textContent="@"+n,e.parentNode.replaceChild(r,e),c.push(t)})),"undefined"!==i.body.innerHTML){e.next=9;break}E("Votre commentaire est vide","error"),e.next=24;break;case 9:return u=Date.now(),s={type:X.NOTE,attributedTo:O.owner,content:i.body.innerHTML,inReplyTo:p[o],published:(new Date).toISOString()},e.prev=11,d(F({id:u},s)),r(),C(!1),e.next=17,O.post(F(F({},s),{},{to:[].concat(c,[Z])}));case 17:E("Commentaire posté avec succès","success"),e.next=24;break;case 20:e.prev=20,e.t0=e.catch(11),m(u),E(e.t0.message,"error");case 24:case"end":return e.stop()}}),e,null,[[11,20]])})));return function(t,n){return e.apply(this,arguments)}}(),[O,E,C,d,m]),D=n((function(){f.id||L(!0)}),[f,L]);return a&&!a.items||!f?null:e.createElement(e.Fragment,null,e.createElement(y,{onSubmit:j,subscription:{submitting:!0,pristine:!0},render:function(t){var n,r,o=t.handleSubmit,c=t.submitting;if(t.pristine){var l=document.getElementById("comment");l&&(l.innerHTML="")}return e.createElement("form",{onSubmit:o,className:v.form},e.createElement(w,{className:v.container,onClick:D},e.createElement(I,{src:null==f||null===(n=f.webIdData)||void 0===n?void 0:n[null==b||null===(r=b.fieldsMapping)||void 0===r?void 0:r.image],className:v.avatar}),e.createElement(g,{source:"comment",label:"",toolbar:null,fullWidth:!0,classes:{editorContent:v.editorContent},editorOptions:F(F({},h),{},{onFocus:function(){C(!0)},extensions:[].concat(G(h.extensions),[a?Y.configure({HTMLAttributes:{class:"mention"},suggestion:a}):null]),editable:!!f.id}),helperText:i}),A&&e.createElement(T,{type:"submit",size:"small",variant:"contained",color:"primary",endIcon:e.createElement(x,null),disabled:c,className:v.button},"Envoyer")))}}),e.createElement(N,{open:S,onClose:function(){return L(!1)},message:"Pour poster un commentaire, vous devez être connecté."}))},ne=E((function(){return{container:{paddingLeft:80,marginTop:8,minHeight:80,position:"relative"},avatar:{position:"absolute",top:0,left:0,bottom:0,width:64,height:64},text:{paddingTop:2,paddingBottom:8},label:{fontWeight:"bold"},content:{"& p":{marginBlockStart:"0.5em",marginBlockEnd:"0.5em"}},loading:{zIndex:1e3,backgroundColor:"white",opacity:.5,position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",minHeight:200,marginTop:5}}})),re=function(t){var n=t.comments,r=t.userResource,o=t.loading,i=ne(),a=k(r);return e.createElement(w,{position:"relative"},n&&n.sort((function(e,t){return new Date(t.published)-new Date(e.published)})).map((function(t){var n,r;return e.createElement(w,{className:i.container},e.createElement(w,{className:i.avatar},e.createElement(C,{record:t,reference:"Person",source:"attributedTo",linkType:"show"},e.createElement(j,{image:null==a||null===(n=a.fieldsMapping)||void 0===n?void 0:n.image}))),e.createElement(w,{className:i.text},e.createElement(O,{variant:"body2"},e.createElement(C,{record:t,reference:"Person",source:"attributedTo",linkType:"show"},e.createElement(d,{variant:"body2",source:null==a||null===(r=a.fieldsMapping)||void 0===r?void 0:r.title,className:i.label}))," • ",e.createElement(m,{record:t,variant:"body2",source:"published",showTime:!0})),e.createElement(p,{record:t,variant:"body1",source:"content",className:i.content})))})),o&&e.createElement(w,{minHeight:200},e.createElement(w,{alignItems:"center",className:i.loading},e.createElement(R,{size:60,thickness:6}))))},oe=function(e){var i=c().identity,a=W(r([]),2),u=a[0],s=a[1],d=W(r(!1),2),m=d[0],p=d[1],f=W(r(!1),2),b=f[0],v=f[1],g=W(r(!1),2),h=g[0],y=g[1],E=t((function(){if(e){if(e.startsWith("http"))return e;var t;if(null!=i&&i.webIdData)return null==i||null===(t=i.webIdData)||void 0===t?void 0:t[e]}}),[i,e]),w=n(B(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(E){e.next=2;break}return e.abrupt("return");case 2:p(!0),t=localStorage.getItem("token"),n=new Headers({Accept:"application/ld+json",Authorization:t?"Bearer ".concat(t):void 0}),l.fetchJson(E,{headers:n}).then((function(e){var t=e.json;t&&t.items?s(t.items):t&&t.orderedItems?s(t.orderedItems):s([]),y(!1),v(!0),p(!1)})).catch((function(){y(!0),v(!0),p(!1)}));case 6:case"end":return e.stop()}}),e)}))),[s,v,p,y,E]);o((function(){m||b||h||w()}),[w,m,b,h]);var I=n((function(e){s((function(t){return[].concat(G(t),[e])}))}),[s]),T=n((function(e){s((function(t){return t.filter((function(t){return"string"==typeof t?t!==e:t.id!==e}))}))}),[s]);return{items:u,loading:m,loaded:b,error:h,refetch:w,addItem:I,removeItem:T,url:E}},ie=function(t){t.source;var n=t.context,r=t.helperText,o=t.userResource,i=t.mentions,a=u(),c=oe(a.replies),l=c.items,s=c.loading,d=c.addItem,m=c.removeItem;if(!o)throw new Error("No userResource defined for CommentsField");return e.createElement(e.Fragment,null,e.createElement(te,{context:n,helperText:r,userResource:o,mentions:i,addItem:d,removeItem:m}),e.createElement(re,{comments:l,loading:s,userResource:o}))};ie.defaultProps={addLabel:!0,label:"Commentaires",source:"id",context:"id"};var ae=["collectionUrl","resource","children"],ce=function(t){var n=t.collectionUrl,r=t.resource,o=t.children,i=J(t,ae);if(1!==e.Children.count(o))throw new Error("<CollectionList> only accepts a single child");var a=f(r,n,{enabled:!!n}),c=a.data;return a.loading?e.createElement("div",{style:{marginTop:8}},e.createElement(b,null)):c?e.createElement(P,z({reference:r,record:c,source:"items"},i),o):null},le=["source","record","reference","children"],ue=function(t){var n=t.source,r=t.record,o=t.reference,i=t.children,a=J(t,le);if(1!==e.Children.count(i))throw new Error("<ReferenceCollectionField> only accepts a single child");return r&&r[n]?e.createElement(ce,z({resource:o,collectionUrl:r[n]},a),i):null};ue.defaultProps={addLabel:!0};var se=function(){var e=c().identity,r=t((function(){var t;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t?void 0:t.inbox}),[e]),o=t((function(){var t,n;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t||null===(n=t.endpoints)||void 0===n?void 0:n["void:sparqlEndpoint"]}),[e]);return{fetch:n(function(){var e=B(regeneratorRuntime.mark((function e(t){var n,i,a,c,u,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.filters,o&&r){e.next=3;break}return e.abrupt("return");case 3:return i=localStorage.getItem("token"),a=A(["as:object"]),c="",n&&Object.keys(n).forEach((function(e){if(n[e]){var t=n[e].startsWith("http")?"<".concat(n[e],">"):n[e];c+="?s1 ".concat(e," ").concat(t," .")}})),u="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(a.construct,"\n }\n WHERE {\n <").concat(r,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ").concat(c,"\n ").concat(a.where,"\n }\n "),e.next=10,l.fetchJson(o,{method:"POST",body:u,headers:new Headers({Accept:"application/ld+json",Authorization:i?"Bearer ".concat(i):void 0})});case 10:if(s=e.sent,!(d=s.json)["@graph"]){e.next=16;break}return e.abrupt("return",d["@graph"]);case 16:return e.abrupt("return",null);case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[o,r]),url:r,owner:null==e?void 0:e.id}},de=function(){return{fetch:n(function(){var e=B(regeneratorRuntime.mark((function e(t){var n,r,o,i,a,c,u,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.split("@"),r=W(n,3),o=r[1],!(i=r[2])){e.next=18;break}return a=i.includes(":")?"http":"https",c="".concat(a,"://").concat(i,"/.well-known/webfinger?resource=acct:").concat(o,"@").concat(i),e.prev=4,e.next=7,l.fetchJson(c);case 7:return u=e.sent,s=u.json,d=s.links.find((function(e){return"application/activity+json"===e.type})),e.abrupt("return",d?d.href:null);case 13:return e.prev=13,e.t0=e.catch(4),e.abrupt("return",null);case 16:e.next=19;break;case 18:return e.abrupt("return",null);case 19:case"end":return e.stop()}}),e,null,[[4,13]])})));return function(t){return e.apply(this,arguments)}}(),[])}},me=E((function(e){return{items:{background:"#fff",borderRadius:"0.5rem",boxShadow:"0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)",color:"rgba(0, 0, 0, 0.8)",fontSize:"0.9rem",overflow:"hidden",padding:"0.2rem",position:"relative"},item:{background:"transparent",border:"1px solid transparent",borderRadius:"0.4rem",display:"block",margin:0,padding:"0.2rem 0.4rem",textAlign:"left",width:"100%","&.selected":{borderColor:"#000"}}}})),pe=i((function(t,n){var i=W(r(0),2),c=i[0],l=i[1],u=me(),s=function(e){var n=t.items[e];n&&t.command({id:n})};return o((function(){return l(0)}),[t.items]),a(n,(function(){return{onKeyDown:function(e){var n=e.event;return"ArrowUp"===n.key?(l((c+t.items.length-1)%t.items.length),!0):"ArrowDown"===n.key?(l((c+1)%t.items.length),!0):"Enter"===n.key&&(s(c),!0)}}})),e.createElement("div",{className:u.items},t.items.length?t.items.map((function(t,n){return e.createElement("button",{className:u.item+(n===c?" selected":""),key:n,onClick:function(){return s(n)}},t.label)})):e.createElement("div",{className:u.item},"Aucun résultat"))})),fe=function(){var e,t;return{onStart:function(n){e=new D(pe,{props:n,editor:n.editor}),t=M("body",{getReferenceClientRect:n.clientRect,appendTo:function(){return document.body},content:e.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"})},onUpdate:function(n){e.updateProps(n),t[0].setProps({getReferenceClientRect:n.clientRect})},onKeyDown:function(n){var r;return"Escape"===n.event.key?(t[0].hide(),!0):null===(r=e.ref)||void 0===r?void 0:r.onKeyDown(n)},onExit:function(){t[0].destroy(),e.destroy()}}},be=function(e){var n,r,o=k(e),i=v({type:"getList",resource:e,payload:{filter:{_predicates:[null==o||null===(n=o.fieldsMapping)||void 0===n?void 0:n.title],blankNodes:[]}}},{enabled:!(null==o||null===(r=o.fieldsMapping)||void 0===r||!r.title)}).data,a=t((function(){if(i)return i.map((function(e){var t;return{id:e.id,label:e[null==o||null===(t=o.fieldsMapping)||void 0===t?void 0:t.title]}}))}),[i]);return{items:t((function(){if(a)return function(e){var t=e.query;return a.filter((function(e){return e.label.toLowerCase().startsWith(t.toLowerCase())})).slice(0,5)}}),[a]),render:fe}};export{_ as ACTIVITY_TYPES,Q as ACTOR_TYPES,ce as CollectionList,ie as CommentsField,X as OBJECT_TYPES,Z as PUBLIC_URI,ue as ReferenceCollectionField,oe as useCollection,se as useInbox,be as useMentions,$ as useOutbox,de as useWebfinger};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useWebfinger.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useMentions/useMentions.js"],"sourcesContent":["export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVAL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'];\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: 'Bearer ' + token\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { 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 marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n\n const onSubmit = useCallback(\n async (values, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n new URL(window.location.href).origin + '/' + userResource + '/' + encodeURIComponent(userUri) + '/show'\n );\n link.textContent = '@' + userLabel;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', 'error');\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, 'error');\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n // Don't init the comment field until the mentions are loaded, as the suggestion field can only be initialized once\n if (mentions && !mentions.items) return null;\n\n return (\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement) commentElement.innerHTML = '';\n }\n\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <Box className={classes.container}>\n <Avatar src={identity?.webIdData?.[userDataModel?.fieldsMapping?.image]} className={classes.avatar} />\n <RichTextInput\n source=\"comment\"\n label=\"\"\n toolbar={null}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ]\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\n );\n};\n\nexport default PostCommentForm;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\nimport { ReferenceField, useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\" linkType={false}>\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: 'Bearer ' + localStorage.getItem('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]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n addLabel: true,\n label: 'Commentaires',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/semantic-data-provider';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<ReferenceCollectionField> only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n <CollectionList resource={reference} collectionUrl={record[source]} {...rest}>\n {children}\n </CollectionList>\n );\n};\n\nReferenceCollectionField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceCollectionField;\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useInbox = () => {\n const { identity } = useGetIdentity();\n\n const inboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.inbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'];\n }\n }, [identity]);\n\n const fetch = useCallback(\n async ({ filters }) => {\n if (!sparqlEndpoint || !inboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n let filtersWhereQuery = '';\n if (filters) {\n Object.keys(filters).forEach(predicate => {\n if (filters[predicate]) {\n const object = filters[predicate].startsWith('http') ? `<${filters[predicate]}>` : filters[predicate];\n filtersWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${inboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ${filtersWhereQuery}\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: 'Bearer ' + token\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n"],"names":["ACTIVITY_TYPES","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","ACTOR_TYPES","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","webIdData","_identity$webIdData","outbox","sparqlEndpoint","_identity$webIdData2","endpoints","_identity$webIdData2$","post","useCallback","activity","token","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","headers","Headers","Authorization","get","fetch","blankNodesQuery","buildBlankNodesQuery","query","construct","where","Accept","json","url","owner","id","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","this","options","attrs","label","addAttributes","parseHTML","element","getAttribute","attributes","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","button","PostCommentForm","context","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","useState","expanded","setExpanded","onSubmit","values","reset","document","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","mentionedUsersUris","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","tempId","Date","now","note","type","attributedTo","content","inReplyTo","published","toISOString","to","_context","message","items","React","Form","subscription","submitting","pristine","render","handleSubmit","commentElement","getElementById","className","Box","Avatar","src","fieldsMapping","_userDataModel$fields","image","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","configure","suggestion","Button","size","variant","color","endIcon","SendIcon","disabled","text","paddingTop","paddingBottom","fontWeight","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","_userDataModel$fields2","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","loaded","setLoaded","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","Children","count","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","ReferenceCollectionField","useInbox","inboxUrl","inbox","filters","filtersWhereQuery","Object","keys","predicate","object","useWebfinger","split","username","host","protocol","includes","webfingerUrl","links","find","l","background","boxShadow","fontSize","overflow","border","margin","textAlign","borderColor","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","onClick","renderMentions","component","popup","onStart","ReactRenderer","MentionsList","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","hide","_component$ref","onExit","destroy","useMentions","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/constants.js","../src/hooks/useOutbox.js","../src/components/CommentsField/CustomMention.js","../src/components/CommentsField/PostCommentForm.js","../src/components/CommentsField/CommentsList.js","../src/hooks/useCollection.js","../src/components/CommentsField/CommentsField.js","../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useInbox.js","../src/hooks/useWebfinger.js","../src/hooks/useMentions/MentionsList.js","../src/hooks/useMentions/renderMentions.js","../src/hooks/useMentions/useMentions.js"],"sourcesContent":["export const ACTIVITY_TYPES = {\n ACCEPT: 'Accept',\n ADD: 'Add',\n ANNOUNCE: 'Announce',\n ARRIVE: 'Arrive',\n BLOCK: 'Block',\n CREATE: 'Create',\n DELETE: 'Delete',\n DISLIKE: 'Dislike',\n FLAG: 'Flag',\n FOLLOW: 'Follow',\n IGNORE: 'Ignore',\n INVITE: 'Invite',\n JOIN: 'Join',\n LEAVE: 'Leave',\n LIKE: 'Like',\n LISTEN: 'Listen',\n MOVE: 'Move',\n OFFER: 'Offer',\n QUESTION: 'Question',\n REJECT: 'Reject',\n READ: 'Read',\n REMOVE: 'Remove',\n TENTATIVE_REJECT: 'TentativeReject',\n TENTATIVE_ACCEPT: 'TentativeAccept',\n TRAVAL: 'Travel',\n UNDO: 'Undo',\n UPDATE: 'Update',\n VIEW: 'View'\n};\n\nexport const ACTOR_TYPES = {\n APPLICATION: 'Application',\n GROUP: 'Group',\n ORGANIZATION: 'Organization',\n PERSON: 'Person',\n SERVICE: 'Service'\n};\n\nexport const OBJECT_TYPES = {\n ARTICLE: 'Article',\n AUDIO: 'Audio',\n DOCUMENT: 'Document',\n EVENT: 'Event',\n IMAGE: 'Image',\n NOTE: 'Note',\n PAGE: 'Page',\n PLACE: 'Place',\n PROFILE: 'Profile',\n RELATIONSHIP: 'Relationship',\n TOMBSTONE: 'Tombstone',\n VIDEO: 'Video'\n};\n\nexport const PUBLIC_URI = 'https://www.w3.org/ns/activitystreams#Public';\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useOutbox = () => {\n const { identity } = useGetIdentity();\n\n const outboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.outbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'];\n }\n }, [identity]);\n\n // Post an activity to the logged user's outbox and return its URI\n const post = useCallback(\n async activity => {\n const token = localStorage.getItem('token');\n const { headers } = await fetchUtils.fetchJson(outboxUrl, {\n method: 'POST',\n body: JSON.stringify({\n '@context': 'https://www.w3.org/ns/activitystreams',\n ...activity\n }),\n headers: new Headers({\n 'Content-Type': 'application/ld+json',\n Authorization: `Bearer ${token}`\n })\n });\n return headers.get('Location');\n },\n [outboxUrl]\n );\n\n const fetch = useCallback(async () => {\n if (!sparqlEndpoint || !outboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${outboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n }, [sparqlEndpoint, outboxUrl]);\n\n return { post, fetch, url: outboxUrl, owner: identity?.id };\n};\n\nexport default useOutbox;\n","import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\n\n// Fix a bug in the current version of the mention extension\n// (The { id, label } object is located inside the id property)\n// See https://github.com/ueberdosis/tiptap/pull/1322\nconst CustomMention = Mention.extend({\n renderHTML({ node, HTMLAttributes }) {\n return ['span', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), `@${node.attrs.id.label}`];\n },\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => {\n return {\n label: element.getAttribute('data-mention-label')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.label) {\n return {};\n }\n return {\n 'data-mention-label': attributes.id.label\n };\n }\n },\n id: {\n default: null,\n parseHTML: element => {\n return {\n id: element.getAttribute('data-mention-id')\n };\n },\n renderHTML: attributes => {\n if (!attributes.id.id) {\n return {};\n }\n return {\n 'data-mention-id': attributes.id.id\n };\n }\n }\n };\n }\n});\n\nexport default CustomMention;\n","import React, { useState, useCallback } from 'react';\nimport { useGetIdentity, useNotify, useRecordContext } from 'react-admin';\nimport { RichTextInput, DefaultEditorOptions } from 'ra-richtext-tiptap';\nimport { Form } from 'react-final-form';\nimport { Button, Box, makeStyles, Avatar } from '@material-ui/core';\nimport SendIcon from '@material-ui/icons/Send';\nimport { useDataModel } from '@semapps/semantic-data-provider';\nimport { AuthDialog } from '@semapps/auth-provider';\nimport { OBJECT_TYPES, PUBLIC_URI } from '../../constants';\nimport useOutbox from '../../hooks/useOutbox';\nimport CustomMention from './CustomMention';\n\nconst useStyles = makeStyles(theme => ({\n form: {\n marginTop: -12 // Negative margin to keep the form close to the label\n },\n container: {\n paddingLeft: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 16,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n editorContent: {\n '& > div': {\n backgroundColor: 'rgba(0, 0, 0, 0.09)',\n padding: '2px 12px',\n borderWidth: '0px !important',\n borderRadius: 0,\n borderBottom: '1px solid #FFF',\n minHeight: 60,\n outline: 'unset !important'\n },\n '& > div > p': {\n marginTop: 12,\n marginBottom: 12,\n fontFamily: theme.typography.body1.fontFamily,\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n },\n marginBottom: -19 // To hide helper text block\n },\n button: {\n marginBottom: 15\n }\n}));\n\nconst PostCommentForm = ({ context, helperText, mentions, userResource, addItem, removeItem }) => {\n const record = useRecordContext();\n const { identity } = useGetIdentity();\n const userDataModel = useDataModel(userResource);\n const classes = useStyles();\n const notify = useNotify();\n const outbox = useOutbox();\n const [expanded, setExpanded] = useState(false);\n const [openAuth, setOpenAuth] = useState(false);\n\n const onSubmit = useCallback(\n async (values, { reset }) => {\n const document = new DOMParser().parseFromString(values.comment, 'text/html');\n const mentions = Array.from(document.body.getElementsByClassName('mention'));\n let mentionedUsersUris = [];\n\n mentions.forEach(node => {\n const userUri = node.attributes['data-mention-id'].value;\n const userLabel = node.attributes['data-mention-label'].value;\n const link = document.createElement('a');\n link.setAttribute(\n 'href',\n new URL(window.location.href).origin + '/' + userResource + '/' + encodeURIComponent(userUri) + '/show'\n );\n link.textContent = '@' + userLabel;\n node.parentNode.replaceChild(link, node);\n mentionedUsersUris.push(userUri);\n });\n\n if (document.body.innerHTML === 'undefined') {\n notify('Votre commentaire est vide', 'error');\n } else {\n const tempId = Date.now();\n\n const note = {\n type: OBJECT_TYPES.NOTE,\n attributedTo: outbox.owner,\n content: document.body.innerHTML,\n inReplyTo: record[context],\n published: new Date().toISOString()\n };\n\n try {\n addItem({ id: tempId, ...note });\n reset();\n setExpanded(false);\n await outbox.post({ ...note, to: [...mentionedUsersUris, PUBLIC_URI] });\n notify('Commentaire posté avec succès', 'success');\n } catch (e) {\n removeItem(tempId);\n notify(e.message, 'error');\n }\n }\n },\n [outbox, notify, setExpanded, addItem, removeItem]\n );\n\n const openAuthIfDisconnected = useCallback(() => {\n if (!identity.id) {\n setOpenAuth(true);\n }\n }, [identity, setOpenAuth]);\n\n // Don't init the editor options until mentions and identity are loaded, as they can only be initialized once\n if ((mentions && !mentions.items) || !identity) return null;\n\n return (\n <>\n <Form\n onSubmit={onSubmit}\n subscription={{ submitting: true, pristine: true }}\n render={({ handleSubmit, submitting, pristine }) => {\n // Hack to clear comment input when form is reset\n // TODO When we update to React-Admin 4, check if the new RichTextInput solves this bug\n if (pristine) {\n const commentElement = document.getElementById('comment');\n if (commentElement) commentElement.innerHTML = '';\n }\n return (\n <form onSubmit={handleSubmit} className={classes.form}>\n <Box className={classes.container} onClick={openAuthIfDisconnected}>\n <Avatar src={identity?.webIdData?.[userDataModel?.fieldsMapping?.image]} className={classes.avatar} />\n <RichTextInput\n source=\"comment\"\n label=\"\"\n toolbar={null}\n fullWidth\n classes={{ editorContent: classes.editorContent }}\n editorOptions={{\n ...DefaultEditorOptions,\n onFocus() {\n setExpanded(true);\n },\n extensions: [\n ...DefaultEditorOptions.extensions,\n mentions\n ? CustomMention.configure({\n HTMLAttributes: {\n class: 'mention'\n },\n suggestion: mentions\n })\n : null\n ],\n // Disable editor if user is not connected\n editable: !!identity.id\n }}\n helperText={helperText}\n />\n {expanded && (\n <Button\n type=\"submit\"\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n endIcon={<SendIcon />}\n disabled={submitting}\n className={classes.button}\n >\n Envoyer\n </Button>\n )}\n </Box>\n </form>\n );\n }}\n />\n <AuthDialog\n open={openAuth}\n onClose={() => setOpenAuth(false)}\n message=\"Pour poster un commentaire, vous devez être connecté.\"\n />\n </>\n );\n};\n\nexport default PostCommentForm;\n","import React from 'react';\nimport { TextField, RichTextField, DateField } from 'react-admin';\nimport { Box, Typography, CircularProgress, makeStyles } from '@material-ui/core';\nimport { ReferenceField, useDataModel } from '@semapps/semantic-data-provider';\nimport { AvatarWithLabelField } from '@semapps/field-components';\n\nconst useStyles = makeStyles(() => ({\n container: {\n paddingLeft: 80,\n marginTop: 8,\n minHeight: 80,\n position: 'relative'\n },\n avatar: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n width: 64,\n height: 64\n },\n text: {\n paddingTop: 2,\n paddingBottom: 8\n },\n label: {\n fontWeight: 'bold'\n },\n content: {\n '& p': {\n marginBlockStart: '0.5em',\n marginBlockEnd: '0.5em'\n }\n },\n loading: {\n zIndex: 1000,\n backgroundColor: 'white',\n opacity: 0.5,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: 200,\n marginTop: 5\n }\n}));\n\nconst CommentsList = ({ comments, userResource, loading }) => {\n const classes = useStyles();\n const userDataModel = useDataModel(userResource);\n return (\n <Box position=\"relative\">\n {comments &&\n comments\n .sort((a, b) => new Date(b.published) - new Date(a.published))\n .map(comment => (\n <Box className={classes.container}>\n <Box className={classes.avatar}>\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\" linkType=\"show\">\n <AvatarWithLabelField image={userDataModel?.fieldsMapping?.image} />\n </ReferenceField>\n </Box>\n <Box className={classes.text}>\n <Typography variant=\"body2\">\n <ReferenceField record={comment} reference=\"Person\" source=\"attributedTo\" linkType=\"show\">\n <TextField variant=\"body2\" source={userDataModel?.fieldsMapping?.title} className={classes.label} />\n </ReferenceField>\n &nbsp;•&nbsp;\n <DateField record={comment} variant=\"body2\" source=\"published\" showTime />\n </Typography>\n <RichTextField record={comment} variant=\"body1\" source=\"content\" className={classes.content} />\n </Box>\n </Box>\n ))}\n {loading && (\n <Box minHeight={200}>\n <Box alignItems=\"center\" className={classes.loading}>\n <CircularProgress size={60} thickness={6} />\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nexport default CommentsList;\n","import { useCallback, useMemo, useState, useEffect } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\n\nconst useCollection = predicateOrUrl => {\n const { identity } = useGetIdentity();\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState(false);\n\n const collectionUrl = useMemo(() => {\n if (predicateOrUrl) {\n if (predicateOrUrl.startsWith('http')) {\n return predicateOrUrl;\n } else if (identity?.webIdData) {\n return identity?.webIdData?.[predicateOrUrl];\n }\n }\n }, [identity, predicateOrUrl]);\n\n const fetch = useCallback(async () => {\n if (!collectionUrl) return;\n\n setLoading(true);\n const token = localStorage.getItem('token');\n const headers = new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n });\n\n fetchUtils\n .fetchJson(collectionUrl, { headers })\n .then(({ json }) => {\n if (json && json.items) {\n setItems(json.items);\n } else if (json && json.orderedItems) {\n setItems(json.orderedItems);\n } else {\n setItems([]);\n }\n setError(false);\n setLoaded(true);\n setLoading(false);\n })\n .catch(() => {\n setError(true);\n setLoaded(true);\n setLoading(false);\n });\n }, [setItems, setLoaded, setLoading, setError, collectionUrl]);\n\n useEffect(() => {\n if (!loading && !loaded && !error) {\n fetch();\n }\n }, [fetch, loading, loaded, error]);\n\n const addItem = useCallback(\n item => {\n setItems(oldItems => [...oldItems, item]);\n },\n [setItems]\n );\n\n const removeItem = useCallback(\n itemId => {\n setItems(oldItems => oldItems.filter(item => (typeof item === 'string' ? item !== itemId : item.id !== itemId)));\n },\n [setItems]\n );\n\n return { items, loading, loaded, error, refetch: fetch, addItem, removeItem, url: collectionUrl };\n};\n\nexport default useCollection;\n","import React from 'react';\nimport { useRecordContext } from 'react-admin';\nimport PostCommentForm from './PostCommentForm';\nimport CommentsList from './CommentsList';\nimport useCollection from '../../hooks/useCollection';\n\nconst CommentsField = ({ source, context, helperText, userResource, mentions }) => {\n const record = useRecordContext();\n const { items: comments, loading, addItem, removeItem } = useCollection(record.replies);\n if (!userResource) throw new Error('No userResource defined for CommentsField');\n return (\n <>\n <PostCommentForm\n context={context}\n helperText={helperText}\n userResource={userResource}\n mentions={mentions}\n addItem={addItem}\n removeItem={removeItem}\n />\n <CommentsList comments={comments} loading={loading} userResource={userResource} />\n </>\n );\n};\n\nCommentsField.defaultProps = {\n addLabel: true,\n label: 'Commentaires',\n source: 'id', // Ensure the field is always displayed\n context: 'id'\n};\n\nexport default CommentsField;\n","import React from 'react';\nimport { useGetOne, LinearProgress } from 'react-admin';\nimport { ReferenceArrayField } from '@semapps/semantic-data-provider';\n\nconst CollectionList = ({ collectionUrl, resource, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<CollectionList> only accepts a single child');\n }\n\n // TODO use a simple fetch call, as the resource is not good and it is useless\n const { data: collection, loading } = useGetOne(resource, collectionUrl, { enabled: !!collectionUrl });\n\n if (loading) {\n return (\n <div style={{ marginTop: 8 }}>\n <LinearProgress />\n </div>\n );\n } else if (!collection) {\n return null;\n }\n\n return (\n <ReferenceArrayField reference={resource} record={collection} source=\"items\" {...rest}>\n {children}\n </ReferenceArrayField>\n );\n};\n\nexport default CollectionList;\n","import React from 'react';\nimport CollectionList from './CollectionList';\n\nconst ReferenceCollectionField = ({ source, record, reference, children, ...rest }) => {\n if (React.Children.count(children) !== 1) {\n throw new Error('<ReferenceCollectionField> only accepts a single child');\n }\n\n if (!record || !record[source]) return null;\n\n return (\n <CollectionList resource={reference} collectionUrl={record[source]} {...rest}>\n {children}\n </CollectionList>\n );\n};\n\nReferenceCollectionField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceCollectionField;\n","import { useCallback, useMemo } from 'react';\nimport { useGetIdentity, fetchUtils } from 'react-admin';\nimport { buildBlankNodesQuery } from '@semapps/semantic-data-provider';\n\nconst useInbox = () => {\n const { identity } = useGetIdentity();\n\n const inboxUrl = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.inbox;\n }\n }, [identity]);\n\n const sparqlEndpoint = useMemo(() => {\n if (identity?.webIdData) {\n return identity?.webIdData?.endpoints?.['void:sparqlEndpoint'];\n }\n }, [identity]);\n\n const fetch = useCallback(\n async ({ filters }) => {\n if (!sparqlEndpoint || !inboxUrl) return;\n\n const token = localStorage.getItem('token');\n const blankNodesQuery = buildBlankNodesQuery(['as:object']);\n\n let filtersWhereQuery = '';\n if (filters) {\n Object.keys(filters).forEach(predicate => {\n if (filters[predicate]) {\n const object = filters[predicate].startsWith('http') ? `<${filters[predicate]}>` : filters[predicate];\n filtersWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const query = `\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ${blankNodesQuery.construct}\n }\n WHERE {\n <${inboxUrl}> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ${filtersWhereQuery}\n ${blankNodesQuery.where}\n }\n `;\n\n const { json } = await fetchUtils.fetchJson(sparqlEndpoint, {\n method: 'POST',\n body: query,\n headers: new Headers({\n Accept: 'application/ld+json',\n Authorization: token ? `Bearer ${token}` : undefined\n })\n });\n\n if (json['@graph']) {\n return json['@graph'];\n } else {\n return null;\n }\n },\n [sparqlEndpoint, inboxUrl]\n );\n\n return { fetch, url: inboxUrl, owner: identity?.id };\n};\n\nexport default useInbox;\n","import { useCallback } from 'react';\nimport { fetchUtils } from 'react-admin';\n\nconst useWebfinger = () => {\n // Post an activity to the logged user's outbox and return its URI\n const fetch = useCallback(async id => {\n // eslint-disable-next-line\n const [_, username, host] = id.split('@');\n if (host) {\n const protocol = host.includes(':') ? 'http' : 'https'; // If the host has a port, we are most likely on localhost\n const webfingerUrl = `${protocol}://${host}/.well-known/webfinger?resource=acct:${username}@${host}`;\n\n try {\n const { json } = await fetchUtils.fetchJson(webfingerUrl);\n\n const link = json.links.find(l => l.type === 'application/activity+json');\n\n return link ? link.href : null;\n } catch (e) {\n return null;\n }\n } else {\n return null;\n }\n }, []);\n\n return { fetch };\n};\n\nexport default useWebfinger;\n","import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n items: {\n background: '#fff',\n borderRadius: '0.5rem',\n boxShadow: '0 0 0 1px rgba(0, 0, 0, 0.05), 0px 10px 20px rgba(0, 0, 0, 0.1)',\n color: 'rgba(0, 0, 0, 0.8)',\n fontSize: '0.9rem',\n overflow: 'hidden',\n padding: '0.2rem',\n position: 'relative'\n },\n item: {\n background: 'transparent',\n border: '1px solid transparent',\n borderRadius: '0.4rem',\n display: 'block',\n margin: 0,\n padding: '0.2rem 0.4rem',\n textAlign: 'left',\n width: '100%',\n '&.selected': {\n borderColor: '#000'\n }\n }\n}));\n\nexport default forwardRef((props, ref) => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const classes = useStyles();\n\n const selectItem = index => {\n const item = props.items[index];\n\n if (item) {\n props.command({ id: item });\n }\n };\n\n const upHandler = () => {\n setSelectedIndex((selectedIndex + props.items.length - 1) % props.items.length);\n };\n\n const downHandler = () => {\n setSelectedIndex((selectedIndex + 1) % props.items.length);\n };\n\n const enterHandler = () => {\n selectItem(selectedIndex);\n };\n\n useEffect(() => setSelectedIndex(0), [props.items]);\n\n useImperativeHandle(ref, () => ({\n onKeyDown: ({ event }) => {\n if (event.key === 'ArrowUp') {\n upHandler();\n return true;\n }\n\n if (event.key === 'ArrowDown') {\n downHandler();\n return true;\n }\n\n if (event.key === 'Enter') {\n enterHandler();\n return true;\n }\n\n return false;\n }\n }));\n\n return (\n <div className={classes.items}>\n {props.items.length ? (\n props.items.map((item, index) => (\n <button\n className={classes.item + (index === selectedIndex ? ' selected' : '')}\n key={index}\n onClick={() => selectItem(index)}\n >\n {item.label}\n </button>\n ))\n ) : (\n <div className={classes.item}>Aucun résultat</div>\n )}\n </div>\n );\n});\n","import { ReactRenderer } from '@tiptap/react';\nimport tippy from 'tippy.js';\nimport MentionsList from './MentionsList';\n\nconst renderMentions = () => {\n let component;\n let popup;\n\n return {\n onStart: props => {\n component = new ReactRenderer(MentionsList, {\n props,\n editor: props.editor\n });\n\n popup = tippy('body', {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: component.element,\n showOnCreate: true,\n interactive: true,\n trigger: 'manual',\n placement: 'bottom-start'\n });\n },\n\n onUpdate(props) {\n component.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === 'Escape') {\n popup[0].hide();\n\n return true;\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n component.destroy();\n }\n };\n};\n\nexport default renderMentions;\n","import { useMemo } from 'react';\nimport { useQuery } from 'react-admin';\nimport renderMentions from './renderMentions';\nimport { useDataModel } from '@semapps/semantic-data-provider';\n\nconst useMentions = userResource => {\n const userDataModel = useDataModel(userResource);\n\n // The \"enabled\" option doesn't work with useQueryWithStore\n const { data } = useQuery(\n {\n type: 'getList',\n resource: userResource,\n payload: {\n filter: {\n _predicates: [userDataModel?.fieldsMapping?.title],\n blankNodes: []\n }\n }\n },\n {\n enabled: !!userDataModel?.fieldsMapping?.title\n }\n );\n\n const availableMentions = useMemo(() => {\n if (data) {\n return data.map(item => ({ id: item.id, label: item[userDataModel?.fieldsMapping?.title] }));\n }\n }, [data]);\n\n const items = useMemo(() => {\n if (availableMentions) {\n return ({ query }) => {\n return availableMentions.filter(({ label }) => label.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5);\n };\n }\n }, [availableMentions]);\n\n return {\n items,\n render: renderMentions\n };\n};\n\nexport default useMentions;\n"],"names":["ACTIVITY_TYPES","ACCEPT","ADD","ANNOUNCE","ARRIVE","BLOCK","CREATE","DELETE","DISLIKE","FLAG","FOLLOW","IGNORE","INVITE","JOIN","LEAVE","LIKE","LISTEN","MOVE","OFFER","QUESTION","REJECT","READ","REMOVE","TENTATIVE_REJECT","TENTATIVE_ACCEPT","TRAVAL","UNDO","UPDATE","VIEW","ACTOR_TYPES","APPLICATION","GROUP","ORGANIZATION","PERSON","SERVICE","OBJECT_TYPES","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","PUBLIC_URI","useOutbox","identity","useGetIdentity","outboxUrl","useMemo","webIdData","_identity$webIdData","outbox","sparqlEndpoint","_identity$webIdData2","endpoints","_identity$webIdData2$","post","useCallback","activity","token","localStorage","getItem","fetchUtils","fetchJson","method","body","JSON","stringify","headers","Headers","Authorization","get","fetch","blankNodesQuery","buildBlankNodesQuery","query","construct","where","Accept","undefined","json","url","owner","id","CustomMention","Mention","extend","renderHTML","node","HTMLAttributes","mergeAttributes","this","options","attrs","label","addAttributes","parseHTML","element","getAttribute","attributes","useStyles","makeStyles","theme","form","marginTop","container","paddingLeft","position","avatar","top","left","bottom","width","height","editorContent","backgroundColor","padding","borderWidth","borderRadius","borderBottom","minHeight","outline","marginBottom","fontFamily","typography","body1","marginBlockStart","marginBlockEnd","button","PostCommentForm","context","helperText","mentions","userResource","addItem","removeItem","record","useRecordContext","userDataModel","useDataModel","classes","notify","useNotify","useState","expanded","setExpanded","openAuth","setOpenAuth","onSubmit","values","reset","document","DOMParser","parseFromString","comment","Array","from","getElementsByClassName","mentionedUsersUris","forEach","userUri","value","userLabel","link","createElement","setAttribute","URL","window","location","href","origin","encodeURIComponent","textContent","parentNode","replaceChild","push","innerHTML","tempId","Date","now","note","type","attributedTo","content","inReplyTo","published","toISOString","to","_context","message","openAuthIfDisconnected","items","React","Form","subscription","submitting","pristine","render","handleSubmit","commentElement","getElementById","className","Box","onClick","Avatar","src","fieldsMapping","_userDataModel$fields","image","RichTextInput","source","toolbar","fullWidth","editorOptions","DefaultEditorOptions","onFocus","extensions","configure","suggestion","editable","Button","size","variant","color","endIcon","SendIcon","disabled","AuthDialog","open","onClose","text","paddingTop","paddingBottom","fontWeight","loading","zIndex","opacity","right","display","alignItems","justifyContent","CommentsList","comments","sort","a","b","map","ReferenceField","reference","linkType","AvatarWithLabelField","Typography","TextField","_userDataModel$fields2","title","DateField","showTime","RichTextField","CircularProgress","thickness","useCollection","predicateOrUrl","setItems","setLoading","loaded","setLoaded","error","setError","collectionUrl","startsWith","then","orderedItems","useEffect","item","oldItems","itemId","filter","refetch","CommentsField","replies","Error","defaultProps","addLabel","CollectionList","resource","children","rest","Children","count","useGetOne","enabled","collection","data","style","LinearProgress","ReferenceArrayField","ReferenceCollectionField","useInbox","inboxUrl","inbox","filters","filtersWhereQuery","Object","keys","predicate","object","useWebfinger","split","username","host","protocol","includes","webfingerUrl","links","find","l","background","boxShadow","fontSize","overflow","border","margin","textAlign","borderColor","forwardRef","props","ref","selectedIndex","setSelectedIndex","selectItem","index","command","useImperativeHandle","onKeyDown","event","key","length","renderMentions","component","popup","onStart","ReactRenderer","MentionsList","editor","tippy","getReferenceClientRect","clientRect","appendTo","showOnCreate","interactive","trigger","placement","onUpdate","updateProps","setProps","hide","_component$ref","onExit","destroy","useMentions","useQuery","payload","_predicates","blankNodes","availableMentions","_userDataModel$fields3","toLowerCase","slice"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semapps/activitypub-components",
3
- "version": "0.4.0-alpha.33",
3
+ "version": "0.4.0-alpha.35",
4
4
  "description": "React-Admin components for ActivityPub display",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Virtual Assembly",
@@ -14,8 +14,9 @@
14
14
  "dev": "rollup --watch --sourcemap --config"
15
15
  },
16
16
  "dependencies": {
17
- "@semapps/field-components": "0.4.0-alpha.33",
18
- "@semapps/semantic-data-provider": "0.4.0-alpha.33",
17
+ "@semapps/auth-provider": "0.4.0-alpha.35",
18
+ "@semapps/field-components": "0.4.0-alpha.35",
19
+ "@semapps/semantic-data-provider": "0.4.0-alpha.35",
19
20
  "@tiptap/core": "^2.0.0-beta.95",
20
21
  "@tiptap/extension-mention": "^2.0.0-beta.95",
21
22
  "ra-richtext-tiptap": "^0.0.1",
@@ -41,5 +42,5 @@
41
42
  "rollup-plugin-terser": "^5.3.0",
42
43
  "rollup-pluginutils": "^2.8.2"
43
44
  },
44
- "gitHead": "b11d59bc3a847f8e9fdd00a4d780fa1e5470e40b"
45
+ "gitHead": "f4df7d045107dc2f7b6b0dbeba40bda3fab60314"
45
46
  }