@semapps/activitypub-components 0.4.0-alpha.30 → 0.4.0-alpha.33
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 +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/package.json +10 -3
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"),r=require("@semapps/semantic-data-provider");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e);function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){l(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t,r,n,o,a,i){try{var u=e[a](i),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,o)}function c(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){u(a,n,o,i,c,"next",e)}function c(e){u(a,n,o,i,c,"throw",e)}i(void 0)}))}}function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function f(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],i=!0,u=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){u=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(u)throw o}}return a}(e,t)||b(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 d(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||b(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 b(e,t){if(e){if("string"==typeof e)return v(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var h=["collectionUrl","resource","children"],m=function(e){var n=e.collectionUrl,a=e.resource,i=e.children,u=f(e,h);if(1!==o.default.Children.count(i))throw new Error("<CollectionList> only accepts a single child");var c=t.useGetOne(a,n,{enabled:!!n}),l=c.data;return c.loading?o.default.createElement("div",{style:{marginTop:8}},o.default.createElement(t.LinearProgress,null)):l?o.default.createElement(r.ReferenceArrayField,s({reference:a,record:l,source:"items"},u),i):null},y=["source","record","reference","children"],E=function(e){var t=e.source,r=e.record,n=e.reference,a=e.children,i=f(e,y);if(1!==o.default.Children.count(a))throw new Error("<ReferenceCollectionField> only accepts a single child");return r&&r[t]?o.default.createElement(m,s({resource:n,collectionUrl:r[t]},i),a):null};E.defaultProps={addLabel:!0};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=m,exports.OBJECT_TYPES={ARTICLE:"Article",AUDIO:"Audio",DOCUMENT:"Document",EVENT:"Event",IMAGE:"Image",NOTE:"Note",PAGE:"Page",PLACE:"Place",PROFILE:"Profile",RELATIONSHIP:"Relationship",TOMBSTONE:"Tombstone",VIDEO:"Video"},exports.PUBLIC_URI="https://www.w3.org/ns/activitystreams#Public",exports.ReferenceCollectionField=E,exports.useCollection=function(r){var n=t.useGetIdentity().identity,o=p(e.useState([]),2),a=o[0],i=o[1],u=p(e.useState(!1),2),l=u[0],s=u[1],f=p(e.useState(!1),2),b=f[0],v=f[1],h=p(e.useState(!1),2),m=h[0],y=h[1],E=e.useMemo((function(){if(r){if(r.startsWith("http"))return r;var e;if(null!=n&&n.webIdData)return null==n||null===(e=n.webIdData)||void 0===e?void 0:e[r]}}),[n,r]),w=e.useCallback(c(regeneratorRuntime.mark((function e(){var r;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:s(!0),r=new Headers({Accept:"application/ld+json",Authorization:"Bearer "+localStorage.getItem("token")}),t.fetchUtils.fetchJson(E,{headers:r}).then((function(e){var t=e.json;t&&t.items?i(t.items):t&&t.orderedItems?i(t.orderedItems):i([]),y(!1),v(!0),s(!1)})).catch((function(){y(!0),v(!0),s(!1)}));case 5:case"end":return e.stop()}}),e)}))),[i,v,s,y,E]);e.useEffect((function(){l||b||m||w()}),[w,l,b,m]);var O=e.useCallback((function(e){i((function(t){return[].concat(d(t),[e])}))}),[i]),I=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:b,error:m,refetch:w,addItem:O,removeItem:I,url:E}},exports.useInbox=function(){var n=t.useGetIdentity().identity,o=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]),a=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=c(regeneratorRuntime.mark((function e(n){var i,u,c,l,s,f,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=n.filters,a&&o){e.next=3;break}return e.abrupt("return");case 3:return u=localStorage.getItem("token"),c=r.buildBlankNodesQuery(["as:object"]),l="",i&&Object.keys(i).forEach((function(e){if(i[e]){var t=i[e].startsWith("http")?"<".concat(i[e],">"):i[e];l+="?s1 ".concat(e," ").concat(t," .")}})),s="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(c.construct,"\n }\n WHERE {\n <").concat(o,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ").concat(l,"\n ").concat(c.where,"\n }\n "),e.next=10,t.fetchUtils.fetchJson(a,{method:"POST",body:s,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+u})});case 10:if(f=e.sent,!(p=f.json)["@graph"]){e.next=16;break}return e.abrupt("return",p["@graph"]);case 16:return e.abrupt("return",null);case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[a,o]),url:o,owner:null==n?void 0:n.id}},exports.useOutbox=function(){var n=t.useGetIdentity().identity,o=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]),a=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=c(regeneratorRuntime.mark((function e(r){var n,a,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=localStorage.getItem("token"),e.prev=1,e.next=4,t.fetchUtils.fetchJson(o,{method:"POST",body:JSON.stringify(i({"@context":"https://www.w3.org/ns/activitystreams"},r)),headers:new Headers({"Content-Type":"application/ld+json",Authorization:"Bearer ".concat(n)})});case 4:return a=e.sent,u=a.headers,e.abrupt("return",u.get("Location"));case 9:return e.prev=9,e.t0=e.catch(1),e.abrupt("return",!1);case 12:case"end":return e.stop()}}),e,null,[[1,9]])})));return function(t){return e.apply(this,arguments)}}(),[o]),fetch:e.useCallback(c(regeneratorRuntime.mark((function e(){var n,i,u,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a&&o){e.next=2;break}return e.abrupt("return");case 2:return n=localStorage.getItem("token"),i=r.buildBlankNodesQuery(["as:object"]),u="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(i.construct,"\n }\n WHERE {\n <").concat(o,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ").concat(i.where,"\n }\n "),e.next=7,t.fetchUtils.fetchJson(a,{method:"POST",body:u,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+n})});case 7:if(c=e.sent,!(l=c.json)["@graph"]){e.next=13;break}return e.abrupt("return",l["@graph"]);case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)}))),[a,o]),url:o,owner:null==n?void 0:n.id}},exports.useWebfinger=function(){return{fetch:e.useCallback(function(){var e=c(regeneratorRuntime.mark((function e(r){var n,o,a,i,u,c,l,s,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.split("@"),o=p(n,3),a=o[1],!(i=o[2])){e.next=18;break}return u=i.includes(":")?"http":"https",c="".concat(u,"://").concat(i,"/.well-known/webfinger?resource=acct:").concat(a,"@").concat(i),e.prev=4,e.next=7,t.fetchUtils.fetchJson(c);case 7:return l=e.sent,s=l.json,f=s.links.find((function(e){return"application/activity+json"===e.type})),e.abrupt("return",f?f.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("@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)}}(),[])}};
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/constants.js","../src/hooks/useCollection.js","../src/hooks/useInbox.js","../src/hooks/useOutbox.js","../src/hooks/useWebfinger.js"],"sourcesContent":["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","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, 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 { 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, 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 try {\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 } catch (e) {\n return false;\n }\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 { 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":["CollectionList","collectionUrl","resource","children","rest","React","Children","count","Error","useGetOne","enabled","collection","data","loading","style","marginTop","LinearProgress","ReferenceArrayField","reference","record","source","ReferenceCollectionField","defaultProps","addLabel","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","ARTICLE","AUDIO","DOCUMENT","EVENT","IMAGE","NOTE","PAGE","PLACE","PROFILE","RELATIONSHIP","TOMBSTONE","VIDEO","predicateOrUrl","identity","useGetIdentity","useState","items","setItems","setLoading","loaded","setLoaded","error","setError","useMemo","startsWith","webIdData","_identity$webIdData","fetch","useCallback","headers","Headers","Accept","Authorization","localStorage","getItem","fetchUtils","fetchJson","then","json","orderedItems","useEffect","addItem","item","oldItems","removeItem","itemId","filter","id","refetch","url","inboxUrl","inbox","sparqlEndpoint","_identity$webIdData2","endpoints","_identity$webIdData2$","filters","token","blankNodesQuery","buildBlankNodesQuery","filtersWhereQuery","Object","keys","forEach","predicate","object","query","construct","where","method","body","owner","outboxUrl","outbox","post","activity","JSON","stringify","get","split","username","host","protocol","includes","webfingerUrl","link","links","find","l","type","href"],"mappings":"yoGAIMA,EAAiB,gBAAGC,IAAAA,cAAeC,IAAAA,SAAUC,IAAAA,SAAaC,YACvB,IAAnCC,UAAMC,SAASC,MAAMJ,SACjB,IAAIK,MAAM,sDAIoBC,YAAUP,EAAUD,EAAe,CAAES,UAAWT,IAAxEU,IAANC,cAAkBC,QAItBR,+BAAKS,MAAO,CAAEC,UAAW,IACvBV,wBAACW,wBAGKL,EAKVN,wBAACY,yBAAoBC,UAAWhB,EAAUiB,OAAQR,EAAYS,OAAO,SAAYhB,GAC9ED,GALI,mDChBLkB,EAA2B,gBAAGD,IAAAA,OAAQD,IAAAA,OAAQD,IAAAA,UAAWf,IAAAA,SAAaC,YACnC,IAAnCC,UAAMC,SAASC,MAAMJ,SACjB,IAAIK,MAAM,iEAGbW,GAAWA,EAAOC,GAGrBf,wBAACL,KAAeE,SAAUgB,EAAWjB,cAAekB,EAAOC,IAAahB,GACrED,GAJkC,MASzCkB,EAAyBC,aAAe,CACtCC,UAAU,0BClBkB,CAC5BC,OAAQ,SACRC,IAAK,MACLC,SAAU,WACVC,OAAQ,SACRC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,KAAM,OACNC,MAAO,QACPC,KAAM,OACNC,OAAQ,SACRC,KAAM,OACNC,MAAO,QACPC,SAAU,WACVC,OAAQ,SACRC,KAAM,OACNC,OAAQ,SACRC,iBAAkB,kBAClBC,iBAAkB,kBAClBC,OAAQ,SACRC,KAAM,OACNC,OAAQ,SACRC,KAAM,4BAGmB,CACzBC,YAAa,cACbC,MAAO,QACPC,aAAc,eACdC,OAAQ,SACRC,QAAS,yDAGiB,CAC1BC,QAAS,UACTC,MAAO,QACPC,SAAU,WACVC,MAAO,QACPC,MAAO,QACPC,KAAM,OACNC,KAAM,OACNC,MAAO,QACPC,QAAS,UACTC,aAAc,eACdC,UAAW,YACXC,MAAO,4BAGiB,wGCnDJ,SAAAC,OACZC,EAAaC,mBAAbD,aACkBE,WAAS,OAA5BC,OAAOC,WACgBF,YAAS,MAAhC3D,OAAS8D,WACYH,YAAS,MAA9BI,OAAQC,WACWL,YAAS,MAA5BM,OAAOC,OAER9E,EAAgB+E,WAAQ,cACxBX,EAAgB,IACdA,EAAeY,WAAW,eACrBZ,QACF,GAAIC,MAAAA,GAAAA,EAAUY,iBACZZ,MAAAA,aAAAA,EAAUY,8BAAVC,EAAsBd,MAGhC,CAACC,EAAUD,IAERe,EAAQC,yCAAY,sGACnBpF,mDAEL0E,GAAW,GACLW,EAAU,IAAIC,QAAQ,CAC1BC,OAAQ,sBACRC,cAAe,UAAYC,aAAaC,QAAQ,WAGlDC,aACGC,UAAU5F,EAAe,CAAEqF,QAAAA,IAC3BQ,MAAK,gBAAGC,IAAAA,KACHA,GAAQA,EAAKtB,MACfC,EAASqB,EAAKtB,OACLsB,GAAQA,EAAKC,aACtBtB,EAASqB,EAAKC,cAEdtB,EAAS,IAEXK,GAAS,GACTF,GAAU,GACVF,GAAW,aAEN,WACLI,GAAS,GACTF,GAAU,GACVF,GAAW,iDAEd,CAACD,EAAUG,EAAWF,EAAYI,EAAU9E,IAE/CgG,aAAU,WACHpF,GAAY+D,GAAWE,GAC1BM,MAED,CAACA,EAAOvE,EAAS+D,EAAQE,QAEtBoB,EAAUb,eACd,SAAAc,GACEzB,GAAS,SAAA0B,qBAAgBA,IAAUD,SAErC,CAACzB,IAGG2B,EAAahB,eACjB,SAAAiB,GACE5B,GAAS,SAAA0B,UAAYA,EAASG,QAAO,SAAAJ,SAAyB,iBAATA,EAAoBA,IAASG,EAASH,EAAKK,KAAOF,UAEzG,CAAC5B,UAGI,CAAED,MAAAA,EAAO5D,QAAAA,EAAS+D,OAAAA,EAAQE,MAAAA,EAAO2B,QAASrB,EAAOc,QAAAA,EAASG,WAAAA,EAAYK,IAAKzG,qBClEnE,eACPqE,EAAaC,mBAAbD,SAEFqC,EAAW3B,WAAQ,oBACnBV,MAAAA,GAAAA,EAAUY,iBACLZ,MAAAA,aAAAA,EAAUY,8BAAVC,EAAqByB,QAE7B,CAACtC,IAEEuC,EAAiB7B,WAAQ,sBACzBV,MAAAA,GAAAA,EAAUY,iBACLZ,MAAAA,aAAAA,EAAUY,kCAAV4B,EAAqBC,8BAArBC,EAAiC,yBAEzC,CAAC1C,UAoDG,CAAEc,MAlDKC,0DACZ,mHAAS4B,IAAAA,QACFJ,GAAmBF,0DAElBO,EAAQxB,aAAaC,QAAQ,SAC7BwB,EAAkBC,uBAAqB,CAAC,cAE1CC,EAAoB,GACpBJ,GACFK,OAAOC,KAAKN,GAASO,SAAQ,SAAAC,MACvBR,EAAQQ,GAAY,KAChBC,EAAST,EAAQQ,GAAWxC,WAAW,mBAAcgC,EAAQQ,QAAgBR,EAAQQ,GAC3FJ,iBAA4BI,cAAaC,YAKzCC,mIAIAR,EAAgBS,8DAGfjB,sGAGDU,yBACAF,EAAgBU,uCAICjC,aAAWC,UAAUgB,EAAgB,CAC1DiB,OAAQ,OACRC,KAAMJ,EACNrC,QAAS,IAAIC,QAAQ,CACnBC,OAAQ,sBACRC,cAAe,UAAYyB,4BALvBnB,IAAAA,MASC,oDACAA,EAAK,4CAEL,wGAGX,CAACc,EAAgBF,IAGHD,IAAKC,EAAUqB,MAAO1D,MAAAA,SAAAA,EAAUkC,uBCjEhC,eACRlC,EAAaC,mBAAbD,SAEF2D,EAAYjD,WAAQ,oBACpBV,MAAAA,GAAAA,EAAUY,iBACLZ,MAAAA,aAAAA,EAAUY,8BAAVC,EAAqB+C,SAE7B,CAAC5D,IAEEuC,EAAiB7B,WAAQ,sBACzBV,MAAAA,GAAAA,EAAUY,iBACLZ,MAAAA,aAAAA,EAAUY,kCAAV4B,EAAqBC,8BAArBC,EAAiC,yBAEzC,CAAC1C,UA6DG,CAAE6D,KA1DI9C,0DACX,WAAM+C,oGACElB,EAAQxB,aAAaC,QAAQ,2BAEPC,aAAWC,UAAUoC,EAAW,CACxDH,OAAQ,OACRC,KAAMM,KAAKC,wBACG,yCACTF,IAEL9C,QAAS,IAAIC,QAAQ,gBACH,sBAChBE,+BAAyByB,8BARrB5B,IAAAA,0BAWDA,EAAQiD,IAAI,uEAEZ,kHAGX,CAACN,IAsCY7C,MAnCDC,yCAAY,8GACnBwB,GAAmBoB,0DAElBf,EAAQxB,aAAaC,QAAQ,SAC7BwB,EAAkBC,uBAAqB,CAAC,cAExCO,2HAIAR,EAAgBS,wDAGfK,8DAEDd,EAAgBU,kCAICjC,aAAWC,UAAUgB,EAAgB,CAC1DiB,OAAQ,OACRC,KAAMJ,EACNrC,QAAS,IAAIC,QAAQ,CACnBC,OAAQ,sBACRC,cAAe,UAAYyB,2BALvBnB,IAAAA,MASC,oDACAA,EAAK,4CAEL,kDAER,CAACc,EAAgBoB,IAEEvB,IAAKuB,EAAWD,MAAO1D,MAAAA,SAAAA,EAAUkC,0BC3EpC,iBAuBZ,CAAEpB,MArBKC,0DAAY,WAAMmB,8GAEFA,EAAGgC,MAAM,cAA3BC,SAAUC,gCAEZC,EAAWD,EAAKE,SAAS,KAAO,OAAS,QACzCC,YAAkBF,gBAAcD,kDAA4CD,cAAYC,qBAGrE9C,aAAWC,UAAUgD,0BAApC9C,IAAAA,KAEF+C,EAAO/C,EAAKgD,MAAMC,MAAK,SAAAC,SAAgB,8BAAXA,EAAEC,0BAE7BJ,EAAOA,EAAKK,KAAO,iEAEnB,+DAGF,sHAER"}
|
|
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 • \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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"}
|
package/dist/index.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useState as t,useMemo as r,useCallback as n,useEffect as o}from"react";import{useGetOne as a,LinearProgress as i,useGetIdentity as c,fetchUtils as u}from"react-admin";import{ReferenceArrayField as l,buildBlankNodesQuery as s}from"@semapps/semantic-data-provider";function f(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?f(Object(r),!0).forEach((function(t){h(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):f(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function d(e,t,r,n,o,a,i){try{var c=e[a](i),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,o)}function v(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){d(a,n,o,i,c,"next",e)}function c(e){d(a,n,o,i,c,"throw",e)}i(void 0)}))}}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function b(){return(b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function m(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],i=!0,c=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(c)throw o}}return a}(e,t)||E(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 w(e){return function(e){if(Array.isArray(e))return O(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||E(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 E(e,t){if(e){if("string"==typeof e)return O(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?O(e,t):void 0}}function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var g=["collectionUrl","resource","children"],I=function(t){var r=t.collectionUrl,n=t.resource,o=t.children,c=m(t,g);if(1!==e.Children.count(o))throw new Error("<CollectionList> only accepts a single child");var u=a(n,r,{enabled:!!r}),s=u.data;return u.loading?e.createElement("div",{style:{marginTop:8}},e.createElement(i,null)):s?e.createElement(l,b({reference:n,record:s,source:"items"},c),o):null},A=["source","record","reference","children"],T=function(t){var r=t.source,n=t.record,o=t.reference,a=t.children,i=m(t,A);if(1!==e.Children.count(a))throw new Error("<ReferenceCollectionField> only accepts a single child");return n&&n[r]?e.createElement(I,b({resource:o,collectionUrl:n[r]},i),a):null};T.defaultProps={addLabel:!0};var R=function(e){var a=c().identity,i=y(t([]),2),l=i[0],s=i[1],f=y(t(!1),2),p=f[0],d=f[1],h=y(t(!1),2),b=h[0],m=h[1],E=y(t(!1),2),O=E[0],g=E[1],I=r((function(){if(e){if(e.startsWith("http"))return e;var t;if(null!=a&&a.webIdData)return null==a||null===(t=a.webIdData)||void 0===t?void 0:t[e]}}),[a,e]),A=n(v(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(I){e.next=2;break}return e.abrupt("return");case 2:d(!0),t=new Headers({Accept:"application/ld+json",Authorization:"Bearer "+localStorage.getItem("token")}),u.fetchJson(I,{headers:t}).then((function(e){var t=e.json;t&&t.items?s(t.items):t&&t.orderedItems?s(t.orderedItems):s([]),g(!1),m(!0),d(!1)})).catch((function(){g(!0),m(!0),d(!1)}));case 5:case"end":return e.stop()}}),e)}))),[s,m,d,g,I]);o((function(){p||b||O||A()}),[A,p,b,O]);var T=n((function(e){s((function(t){return[].concat(w(t),[e])}))}),[s]),R=n((function(e){s((function(t){return t.filter((function(t){return"string"==typeof t?t!==e:t.id!==e}))}))}),[s]);return{items:l,loading:p,loaded:b,error:O,refetch:A,addItem:T,removeItem:R,url:I}},j=function(){var e=c().identity,t=r((function(){var t;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t?void 0:t.inbox}),[e]),o=r((function(){var t,r;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t||null===(r=t.endpoints)||void 0===r?void 0:r["void:sparqlEndpoint"]}),[e]);return{fetch:n(function(){var e=v(regeneratorRuntime.mark((function e(r){var n,a,i,c,l,f,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.filters,o&&t){e.next=3;break}return e.abrupt("return");case 3:return a=localStorage.getItem("token"),i=s(["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," .")}})),l="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(i.construct,"\n }\n WHERE {\n <").concat(t,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n FILTER( (isIRI(?s1)) ) .\n ").concat(c,"\n ").concat(i.where,"\n }\n "),e.next=10,u.fetchJson(o,{method:"POST",body:l,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+a})});case 10:if(f=e.sent,!(p=f.json)["@graph"]){e.next=16;break}return e.abrupt("return",p["@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,t]),url:t,owner:null==e?void 0:e.id}},P=function(){var e=c().identity,t=r((function(){var t;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t?void 0:t.outbox}),[e]),o=r((function(){var t,r;if(null!=e&&e.webIdData)return null==e||null===(t=e.webIdData)||void 0===t||null===(r=t.endpoints)||void 0===r?void 0:r["void:sparqlEndpoint"]}),[e]);return{post:n(function(){var e=v(regeneratorRuntime.mark((function e(r){var n,o,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=localStorage.getItem("token"),e.prev=1,e.next=4,u.fetchJson(t,{method:"POST",body:JSON.stringify(p({"@context":"https://www.w3.org/ns/activitystreams"},r)),headers:new Headers({"Content-Type":"application/ld+json",Authorization:"Bearer ".concat(n)})});case 4:return o=e.sent,a=o.headers,e.abrupt("return",a.get("Location"));case 9:return e.prev=9,e.t0=e.catch(1),e.abrupt("return",!1);case 12:case"end":return e.stop()}}),e,null,[[1,9]])})));return function(t){return e.apply(this,arguments)}}(),[t]),fetch:n(v(regeneratorRuntime.mark((function e(){var r,n,a,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o&&t){e.next=2;break}return e.abrupt("return");case 2:return r=localStorage.getItem("token"),n=s(["as:object"]),a="\n PREFIX as: <https://www.w3.org/ns/activitystreams#>\n CONSTRUCT {\n ?s1 ?p1 ?o1 .\n ".concat(n.construct,"\n }\n WHERE {\n <").concat(t,"> as:items ?s1 .\n ?s1 ?p1 ?o1 .\n ").concat(n.where,"\n }\n "),e.next=7,u.fetchJson(o,{method:"POST",body:a,headers:new Headers({Accept:"application/ld+json",Authorization:"Bearer "+r})});case 7:if(i=e.sent,!(c=i.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,t]),url:t,owner:null==e?void 0:e.id}},S=function(){return{fetch:n(function(){var e=v(regeneratorRuntime.mark((function e(t){var r,n,o,a,i,c,l,s,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.split("@"),n=y(r,3),o=n[1],!(a=n[2])){e.next=18;break}return i=a.includes(":")?"http":"https",c="".concat(i,"://").concat(a,"/.well-known/webfinger?resource=acct:").concat(o,"@").concat(a),e.prev=4,e.next=7,u.fetchJson(c);case 7:return l=e.sent,s=l.json,f=s.links.find((function(e){return"application/activity+json"===e.type})),e.abrupt("return",f?f.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)}}(),[])}},D={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"},C={APPLICATION:"Application",GROUP:"Group",ORGANIZATION:"Organization",PERSON:"Person",SERVICE:"Service"},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"},x="https://www.w3.org/ns/activitystreams#Public";export{D as ACTIVITY_TYPES,C as ACTOR_TYPES,I as CollectionList,k as OBJECT_TYPES,x as PUBLIC_URI,T as ReferenceCollectionField,R as useCollection,j as useInbox,P as useOutbox,S 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 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};
|
|
2
2
|
//# sourceMappingURL=index.es.js.map
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/components/CollectionList.js","../src/components/ReferenceCollectionField.js","../src/hooks/useCollection.js","../src/hooks/useInbox.js","../src/hooks/useOutbox.js","../src/hooks/useWebfinger.js","../src/constants.js"],"sourcesContent":["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, 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 { 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, 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 try {\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 } catch (e) {\n return false;\n }\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 { 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","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"],"names":["CollectionList","collectionUrl","resource","children","rest","React","Children","count","Error","useGetOne","enabled","collection","data","loading","style","marginTop","LinearProgress","ReferenceArrayField","reference","record","source","ReferenceCollectionField","defaultProps","addLabel","useCollection","predicateOrUrl","identity","useGetIdentity","useState","items","setItems","setLoading","loaded","setLoaded","error","setError","useMemo","startsWith","webIdData","_identity$webIdData","fetch","useCallback","headers","Headers","Accept","Authorization","localStorage","getItem","fetchUtils","fetchJson","then","json","orderedItems","useEffect","addItem","item","oldItems","removeItem","itemId","filter","id","refetch","url","useInbox","inboxUrl","inbox","sparqlEndpoint","_identity$webIdData2","endpoints","_identity$webIdData2$","filters","token","blankNodesQuery","buildBlankNodesQuery","filtersWhereQuery","Object","keys","forEach","predicate","object","query","construct","where","method","body","owner","useOutbox","outboxUrl","outbox","post","activity","JSON","stringify","get","useWebfinger","split","username","host","protocol","includes","webfingerUrl","link","links","find","l","type","href","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"],"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: '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 • \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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semapps/activitypub-components",
|
|
3
|
-
"version": "0.4.0-alpha.
|
|
3
|
+
"version": "0.4.0-alpha.33",
|
|
4
4
|
"description": "React-Admin components for ActivityPub display",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Virtual Assembly",
|
|
@@ -13,8 +13,15 @@
|
|
|
13
13
|
"pre-publish": "rollup --sourcemap --config",
|
|
14
14
|
"dev": "rollup --watch --sourcemap --config"
|
|
15
15
|
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@semapps/field-components": "0.4.0-alpha.33",
|
|
18
|
+
"@semapps/semantic-data-provider": "0.4.0-alpha.33",
|
|
19
|
+
"@tiptap/core": "^2.0.0-beta.95",
|
|
20
|
+
"@tiptap/extension-mention": "^2.0.0-beta.95",
|
|
21
|
+
"ra-richtext-tiptap": "^0.0.1",
|
|
22
|
+
"tippy.js": "^6.3.7"
|
|
23
|
+
},
|
|
16
24
|
"peerDependencies": {
|
|
17
|
-
"@semapps/semantic-data-provider": "0.4.0-alpha.5",
|
|
18
25
|
"react": "^16.13.1 || ^17.0.0",
|
|
19
26
|
"react-admin": "^3.19.10"
|
|
20
27
|
},
|
|
@@ -34,5 +41,5 @@
|
|
|
34
41
|
"rollup-plugin-terser": "^5.3.0",
|
|
35
42
|
"rollup-pluginutils": "^2.8.2"
|
|
36
43
|
},
|
|
37
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "b11d59bc3a847f8e9fdd00a4d780fa1e5470e40b"
|
|
38
45
|
}
|