@semapps/semantic-data-provider 0.3.8 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),t=e(r),n=require("react-admin"),a=require("@material-ui/core/styles"),o=e(require("jsonld"));function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,r,t,n,a,o,i){try{var c=e[o](i),u=c.value}catch(e){return void t(e)}c.done?r(u):Promise.resolve(u).then(n,a)}function u(e){return function(){var r=this,t=arguments;return new Promise((function(n,a){var o=e.apply(r,t);function i(e){c(o,n,a,i,u,"next",e)}function u(e){c(o,n,a,i,u,"throw",e)}i(void 0)}))}}function s(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function l(){return(l=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function f(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function p(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?f(Object(t),!0).forEach((function(r){s(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):f(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function d(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function y(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,a=!1,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(n=(i=c.next()).done)&&(t.push(i.value),!r||t.length!==r);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(a)throw o}}return t}(e,r)||m(e,r)||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 m(e,r){if(e){if("string"==typeof e)return h(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?h(e,r):void 0}}function h(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function b(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=m(e))){var r=0,t=function(){};return{s:t,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,a,o=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}var v=function(e){var r=e.record,a=e.source,o=d(e,["record","source"]);return(null==r?void 0:r[a])&&(Array.isArray(r[a])||(r[a]=[r[a]]),r[a]=r[a].map((function(e){return e["@id"]||e.id||e}))),t.createElement(n.ReferenceArrayField,l({record:r,source:a},o))};v.defaultProps={addLabel:!0};var g=function(e){var r=e.record,a=e.source,o=d(e,["record","source"]);return r[a]&&"object"===i(r[a])&&(r[a]=r[a]["@id"]||r[a].id),t.createElement(n.ReferenceField,l({record:r,source:a},o))};g.defaultProps={addLabel:!0};var x=function(e){var n=e.children,a=e.record,o=e.filter,i=e.source,c=d(e,["children","record","filter","source"]),u=y(r.useState(),2),s=u[0],l=u[1];return r.useEffect((function(){if(a&&i&&Array.isArray(null==a?void 0:a[i])){var e=null==a?void 0:a[i].filter((function(e){var r=!0;for(var t in o){var n=e[t];Array.isArray(n)?n.includes(o[t])||(r=!1):n!==o[t]&&(r=!1)}return r})),r=p({},a);r[i]=e.length>0?e:void 0,l(r)}}),[a,i,o]),t.createElement(t.Fragment,null,t.Children.map(n,(function(e,r){return t.cloneElement(e,p(p({},c),{},{record:s,addLabel:!0,source:i}))})))},j=function(e){var r=n.useResourceContext({});return t.createElement(n.ReferenceArrayInput,l({},e,{resource:r,format:function(r){return r?(Array.isArray(r)||(r=[r]),e.format&&(r=e.format(r)),r.map((function(e){return"object"===i(e)?e.id||e["@id"]:e}))):r}}))},w=a.makeStyles({form:{display:"flex"},input:{paddingRight:"20px"}}),O=a.makeStyles({root:{display:"none"}}),E=function(e){return e.split(":").map((function(e){return e[0].toUpperCase()+e.slice(1)})).join("")},A=function(e){var r,t={};if(e){var n,a=b(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;r=o.includes("/")?o.split("/").reverse():[o],t=p(p({},t),r.reduce((function(e,r){return s({},r,p({"@embed":"@last"},e))}),{}))}}catch(e){a.e(e)}finally{a.f()}return t}},R=function(e){var r=e.types,t=e.params.filter,n=e.dereference,a=e.ontologies,o="";t&&(t.q&&t.q.length>0&&(o+='\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), "'.concat(t.q.toLowerCase(),'")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n '),delete t.q),Object.keys(t).forEach((function(e){if(t[e]){var r=t[e].startsWith("http")?"<".concat(t[e],">"):t[e];o+="?s1 ".concat(e," ").concat(r," .")}})));var i=function(e){var r=[];if(e)for(var t=e.reduce((function(e,r){return function e(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"root";if(t.includes("/")){var a=t.split(/\/(.+)/);r[a[0]]=n,e(r,a[1],a[0])}else r[t]=n;return r}(e,r)}),{}),n=0,a=Object.entries(t);n<a.length;n++){var o=y(a[n],2),i=o[0],c=o[1],u=E(i),s="root"===c?"1":E(c),l="root"===c?i:c;r[l]||(r[l]=[]),r[l].push("\n ?s".concat(s," ").concat(i," ?s").concat(u," .\n ?s").concat(u," ?p").concat(u," ?o").concat(u," .\n "))}return{construct:Object.values(r).map((function(e){return Object.values(e).join("\n")})).join("\n"),where:Object.values(r).map((function(e){return"OPTIONAL { ".concat(Object.values(e).join("\n")," }")})).join("\n")}}(n);return"\n ".concat(function(e){return e.map((function(e){return"PREFIX ".concat(e.prefix,": <").concat(e.url,">")})).join("\n")}(a),"\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ").concat(i.construct,"\n }\n WHERE {\n ?s1 a ?type .\n FILTER( ?type IN (").concat(r.join(", "),") ) .\n FILTER( (isIRI(?s1)) ) .\n ").concat(o,"\n ").concat(i.where,"\n ?s1 ?p2 ?o2 .\n }\n ")},k=require("speakingurl"),S=function(e){var r={};return e.forEach((function(e){return r[e.prefix]=e.url})),r},P=function(e){return e&&e.rawFile&&e.rawFile instanceof File};exports.DateTimeInput=function(e){return t.createElement(n.DateTimeInput,l({},e,{format:function(e){return e&&e.replace(" ","T").replace("Z","")}}))},exports.FilterHandler=x,exports.GroupedReferenceHandler=function(e){var r=e.children,a=e.groupReference,o=e.groupLabel,i=e.groupHeader,c=e.filterProperty,u=d(e,["children","groupReference","groupLabel","groupHeader","filterProperty"]),s=n.useQueryWithStore({type:"getList",resource:a,payload:{}}).data;return t.createElement(t.Fragment,null,null==s?void 0:s.map((function(e,n){var a={};return a[c]=e.id,t.createElement(t.Fragment,null,i&&i(p(p({},u),{},{group:e})),t.createElement(x,l({},u,{filter:a,label:e[o]}),r))})))},exports.ImageField=function(e){var r=e.record,a=e.source,o=d(e,["record","source"]);return"string"==typeof r&&(r=s({},a,r)),t.createElement(n.ImageField,l({record:r,source:a},o))},exports.ReferenceArrayField=v,exports.ReferenceArrayInput=j,exports.ReferenceField=g,exports.ReferenceInput=function(e){var r=n.useResourceContext({});return t.createElement(n.ReferenceInput,l({},e,{resource:r,format:function(r){return r?(e.format&&(r=e.format(r)),"object"===i(r)?r.id||r["@id"]:r):r}}))},exports.ReificationArrayInput=function(e){var r=e.reificationClass,a=(e.children,d(e,["reificationClass","children"])),o=w(),i=O();return t.createElement(n.ArrayInput,a,t.createElement(n.SimpleFormIterator,{classes:{form:o.form}},t.Children.map(e.children,(function(e,r){return t.cloneElement(e,{className:o.input})})),t.createElement(n.TextInput,{className:i.root,source:"type",initialValue:r})))},exports.UriArrayField=v,exports.UriArrayInput=j,exports.dataProvider=function(e){var r,t,n,a,c,s,l=e.sparqlEndpoint,f=e.httpClient,d=e.resources,m=e.ontologies,h=e.jsonContext,v=e.uploadsContainerUri,g=e.returnFailedResources,x=void 0!==g&&g,j=function(){var e=u(regeneratorRuntime.mark((function e(r){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(v){e.next=2;break}throw new Error("No uploadsContainerUri defined for the data provider");case 2:return e.next=4,f(v,{method:"POST",body:r,headers:new Headers({Slug:(n=r.name,a=void 0,o=void 0,a="",o=n.split("."),o.length>1&&(a=o.pop(),n=o.join(".")),k(n,{lang:"fr"})+"."+a),"Content-Type":r.type})});case 4:if(201!==(t=e.sent).status){e.next=7;break}return e.abrupt("return",t.headers.get("Location"));case 7:case"end":return e.stop()}var n,a,o}),e)})));return function(r){return e.apply(this,arguments)}}(),w=function(){var e=u(regeneratorRuntime.mark((function e(r){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=regeneratorRuntime.keys(r);case 1:if((e.t1=e.t0()).done){e.next=22;break}if(t=e.t1.value,!r.hasOwnProperty(t)){e.next=20;break}if(!Array.isArray(r[t])){e.next=16;break}n=0;case 6:if(!(n<r[t].length)){e.next=14;break}if(!P(r[t][n])){e.next=11;break}return e.next=10,j(r[t][n].rawFile);case 10:r[t][n]=e.sent;case 11:n++,e.next=6;break;case 14:e.next=20;break;case 16:if(!P(r[t])){e.next=20;break}return e.next=19,j(r[t].rawFile);case 19:r[t]=e.sent;case 20:e.next=1;break;case 22:return e.abrupt("return",r);case 23:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}();return{getList:(s=u(regeneratorRuntime.mark((function e(r,t){var n,a,i,c,u,s,b,v,g,x,j,w,O;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d[r],!t.id&&!t["@id"]&&d[r].types){e.next=26;break}return n=t.id||t["@id"]||d[r].containerUri,e.next=5,f(n);case 5:if(a=e.sent,i=a.json,E="ldp:Container",P=void 0,P=(k=i).type||k["@type"],!(Array.isArray(P)?P.includes(E):P===E)){e.next=14;break}return c=i["ldp:contains"].map((function(e){return e.id=e.id||e["@id"],e})),t.filter&&(t.filter.q&&delete t.filter.q,Object.keys(t.filter).length>0&&(c=c.filter((function(e){return Object.entries(t.filter).some((function(r){var t=y(r,2),n=t[0],a=t[1];return Array.isArray(e[n])?e[n].includes(a):e[n]===a}))})))),t.pagination&&(c=c.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:c,total:i["ldp:contains"].length});case 14:if(!i.first){e.next=19;break}return e.next=17,f(i.first);case 17:u=e.sent,i=u.json;case 19:if(s=["as:orderedItems","orderedItems","as:items","items"].find((function(e){return i[e]}))){e.next=22;break}return e.abrupt("return",{data:[],total:0});case 22:return b=i[s].map((function(e){return e.id=e.id||e["@id"],e})),e.abrupt("return",{data:b,total:i.totalItems});case 24:e.next=43;break;case 26:return v=R({types:d[r].types,params:p(p({},t),{},{filter:p(p({},d[r].filter),t.filter)}),dereference:d[r].dereference,ontologies:m}),e.next=29,f(l,{method:"POST",body:v});case 29:return g=e.sent,x=g.json,j=p({"@context":h||S(m),"@type":d[r].types,"@embed":"@never"},A(d[r].dereference)),e.next=34,o.frame(x,j,{omitGraph:!1});case 34:if(w=e.sent,1!==Object.keys(w).length){e.next=39;break}return e.abrupt("return",{data:[],total:0});case 39:return O=w["@graph"].map((function(e){return e.id=e.id||e["@id"],e})),t.sort&&(O=O.sort((function(e,r){return!(t.sort&&e[t.sort.field]&&r[t.sort.field])||("ASC"===t.sort.order?e[t.sort.field].localeCompare(r[t.sort.field]):r[t.sort.field].localeCompare(e[t.sort.field]))}))),t.pagination&&(O=O.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:O,total:w["@graph"].length});case 43:case"end":return e.stop()}var E,k,P}),e)}))),function(e,r){return s.apply(this,arguments)}),getOne:(c=u(regeneratorRuntime.mark((function e(r,t){var n,a,i,c,u,s,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return d[r],n=d[r],e.next=4,f(t.id);case 4:return a=e.sent,(i=a.json).id=i.id||i["@id"],e.next=9,o.compact(i,h||S(m));case 9:if(c=e.sent,n.forceArray){u=b(n.forceArray);try{for(u.s();!(s=u.n()).done;)l=s.value,c[l]&&!Array.isArray(c[l])&&(c[l]=[c[l]])}catch(e){u.e(e)}finally{u.f()}}return e.abrupt("return",{data:c});case 12:case"end":return e.stop()}}),e)}))),function(e,r){return c.apply(this,arguments)}),getMany:(a=u(regeneratorRuntime.mark((function e(r,t){var n,a,o,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=b(t.ids),e.prev=2,a.s();case 4:if((o=a.n()).done){e.next=21;break}return c="object"===i(c=o.value)?c["@id"]:c,e.prev=7,e.next=10,f(c);case 10:u=e.sent,(s=u.json).id=c,n.push(s),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(7),x&&n.push({id:c});case 19:e.next=4;break;case 21:e.next=26;break;case 23:e.prev=23,e.t1=e.catch(2),a.e(e.t1);case 26:return e.prev=26,a.f(),e.finish(26);case 29:return e.abrupt("return",{data:n});case 30:case"end":return e.stop()}}),e,null,[[2,23,26,29],[7,16]])}))),function(e,r){return a.apply(this,arguments)}),getManyReference:function(e,r){throw new Error("getManyReference is not implemented yet")},create:(n=u(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u,s,l,y,b;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return d[r],n=d[r],a=n.slugField,o=n.containerUri,i=n.types,c=new Headers,a&&c.set("Slug",Array.isArray(a)?a.map((function(e){return t.data[e]})).join(" "):t.data[a]),e.next=6,w(t.data);case 6:return t.data=e.sent,e.next=9,f(o,{method:"POST",headers:c,body:JSON.stringify(p({"@context":h||S(m),"@type":i},t.data))});case 9:return u=e.sent,s=u.headers,l=s.get("Location"),e.next=14,f(l);case 14:return y=e.sent,(b=y.json).id=b.id||b["@id"],e.abrupt("return",{data:b});case 18:case"end":return e.stop()}}),e)}))),function(e,r){return n.apply(this,arguments)}),update:(t=u(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,w(t.data);case 2:return t.data=e.sent,e.next=5,f(t.id,{method:"PUT",body:JSON.stringify(p({"@context":h||S(m)},t.data))});case 5:return e.abrupt("return",{data:t.data});case 6:case"end":return e.stop()}}),e)}))),function(e,r){return t.apply(this,arguments)}),updateMany:function(e,r){throw new Error("updateMany is not implemented yet")},delete:(r=u(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f(t.id,{method:"DELETE"});case 2:return e.abrupt("return",{data:{id:t.id}});case 3:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)}),deleteMany:function(e,r){throw new Error("deleteMany is not implemented yet")}}},exports.httpClient=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(r.headers||(r.headers=new Headers),r.method){case"POST":case"PATCH":case"PUT":r.headers.has("Accept")||r.headers.set("Accept","application/ld+json"),r.headers.has("Content-Type")||r.headers.set("Content-Type","application/ld+json");break;case"DELETE":break;case"GET":default:r.headers.has("Accept")||r.headers.set("Accept","application/ld+json")}var t=localStorage.getItem("token");return t&&r.headers.set("Authorization","Bearer ".concat(t)),n.fetchUtils.fetchJson(e,r)};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),t=e(r),n=require("react-admin"),a=require("@material-ui/core/styles"),o=e(require("jsonld"));function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function c(e,r,t,n,a,o,i){try{var c=e[o](i),u=c.value}catch(e){return void t(e)}c.done?r(u):Promise.resolve(u).then(n,a)}function u(e){return function(){var r=this,t=arguments;return new Promise((function(n,a){var o=e.apply(r,t);function i(e){c(o,n,a,i,u,"next",e)}function u(e){c(o,n,a,i,u,"throw",e)}i(void 0)}))}}function s(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function f(){return(f=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function l(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function p(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?l(Object(t),!0).forEach((function(r){s(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function d(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function y(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,a=!1,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(n=(i=c.next()).done)&&(t.push(i.value),!r||t.length!==r);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(a)throw o}}return t}(e,r)||m(e,r)||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 m(e,r){if(e){if("string"==typeof e)return h(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?h(e,r):void 0}}function h(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function v(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=m(e))){var r=0,t=function(){};return{s:t,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,a,o=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}var b=function(e){var r=e.record,a=e.source,o=d(e,["record","source"]);return(null==r?void 0:r[a])&&(Array.isArray(r[a])||(r[a]=[r[a]]),r[a]=r[a].map((function(e){return e["@id"]||e.id||e}))),t.createElement(n.ReferenceArrayField,f({record:r,source:a},o))};b.defaultProps={addLabel:!0};var g=function(e){var r=e.record,a=e.source,o=d(e,["record","source"]);return r[a]&&"object"===i(r[a])&&(r[a]=r[a]["@id"]||r[a].id),t.createElement(n.ReferenceField,f({record:r,source:a},o))};g.defaultProps={addLabel:!0};var x=function(e){var n=e.children,a=e.record,o=e.filter,i=e.source,c=d(e,["children","record","filter","source"]),u=y(r.useState(),2),s=u[0],f=u[1];return r.useEffect((function(){if(a&&i&&Array.isArray(null==a?void 0:a[i])){var e=null==a?void 0:a[i].filter((function(e){var r=!0;for(var t in o){var n=e[t];Array.isArray(n)?n.includes(o[t])||(r=!1):n!==o[t]&&(r=!1)}return r})),r=p({},a);r[i]=e.length>0?e:void 0,f(r)}}),[a,i,o]),t.createElement(t.Fragment,null,t.Children.map(n,(function(e,r){return t.cloneElement(e,p(p({},c),{},{record:s,addLabel:!0,source:i}))})))},j=function(e){var r=n.useResourceContext({});return t.createElement(n.ReferenceArrayInput,f({},e,{resource:r,format:function(r){return r?(Array.isArray(r)||(r=[r]),e.format&&(r=e.format(r)),r.map((function(e){return"object"===i(e)?e.id||e["@id"]:e}))):r}}))},w=a.makeStyles({form:{display:"flex"},input:{paddingRight:"20px"}}),O=a.makeStyles({root:{display:"none"}}),R=function(e){return e.split(":").map((function(e){return e[0].toUpperCase()+e.slice(1)})).join("")},k=function(e){var r,t={};if(e){var n,a=v(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;r=o.includes("/")?o.split("/").reverse():[o],t=p(p({},t),r.reduce((function(e,r){return s({},r,p({"@embed":"@last"},e))}),{}))}}catch(e){a.e(e)}finally{a.f()}return t}},E=function(e){var r=e.types,t=e.params.filter,n=e.dereference,a=e.ontologies,o="",i="";t&&(t.q&&t.q.length>0&&(o+='\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), "'.concat(t.q.toLowerCase(),'")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n '),delete t.q),Object.keys(t).forEach((function(e){if(t[e]){var r=t[e].startsWith("http")?"<".concat(t[e],">"):t[e];i+="?s1 ".concat(e," ").concat(r," .")}})));var c=function(e){var r=[];if(e)for(var t=e.reduce((function(e,r){return function e(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"root";if(t.includes("/")){var a=t.split(/\/(.+)/);r[a[0]]=n,e(r,a[1],a[0])}else r[t]=n;return r}(e,r)}),{}),n=0,a=Object.entries(t);n<a.length;n++){var o=y(a[n],2),i=o[0],c=o[1],u=R(i),s="root"===c?"1":R(c),f="root"===c?i:c;r[f]||(r[f]=[]),r[f].push("\n ?s".concat(s," ").concat(i," ?s").concat(u," .\n ?s").concat(u," ?p").concat(u," ?o").concat(u," .\n "))}return{construct:Object.values(r).map((function(e){return Object.values(e).join("\n")})).join("\n"),where:Object.values(r).map((function(e){return"OPTIONAL { ".concat(Object.values(e).join("\n")," }")})).join("\n")}}(n);return"\n ".concat(function(e){return e.map((function(e){return"PREFIX ".concat(e.prefix,": <").concat(e.url,">")})).join("\n")}(a),"\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ").concat(c.construct,"\n }\n WHERE {\n ").concat(i,"\n ?s1 a ?type .\n FILTER( ?type IN (").concat(r.join(", "),") ) .\n FILTER( (isIRI(?s1)) ) .\n ").concat(o,"\n ").concat(c.where,"\n ?s1 ?p2 ?o2 .\n }\n ")},A=require("speakingurl"),S=function(e){var r={};return e.forEach((function(e){return r[e.prefix]=e.url})),r},P=function(e){return e&&e.rawFile&&e.rawFile instanceof File};exports.DateTimeInput=function(e){return t.createElement(n.DateTimeInput,f({},e,{format:function(e){return e&&e.replace(" ","T").replace("Z","")}}))},exports.FilterHandler=x,exports.GroupedReferenceHandler=function(e){var r=e.children,a=e.groupReference,o=e.groupLabel,i=e.groupHeader,c=e.filterProperty,u=d(e,["children","groupReference","groupLabel","groupHeader","filterProperty"]),s=n.useQueryWithStore({type:"getList",resource:a,payload:{}}).data;return t.createElement(t.Fragment,null,null==s?void 0:s.map((function(e,n){var a={};return a[c]=e.id,t.createElement(t.Fragment,null,i&&i(p(p({},u),{},{group:e})),t.createElement(x,f({},u,{filter:a,label:e[o]}),r))})))},exports.ImageField=function(e){var r=e.record,a=e.source,o=d(e,["record","source"]);return"string"==typeof r&&(r=s({},a,r)),t.createElement(n.ImageField,f({record:r,source:a},o))},exports.ReferenceArrayField=b,exports.ReferenceArrayInput=j,exports.ReferenceField=g,exports.ReferenceInput=function(e){var r=n.useResourceContext({});return t.createElement(n.ReferenceInput,f({},e,{resource:r,format:function(r){return r?(e.format&&(r=e.format(r)),"object"===i(r)?r.id||r["@id"]:r):r}}))},exports.ReificationArrayInput=function(e){var r=e.reificationClass,a=(e.children,d(e,["reificationClass","children"])),o=w(),i=O();return t.createElement(n.ArrayInput,a,t.createElement(n.SimpleFormIterator,{classes:{form:o.form}},t.Children.map(e.children,(function(e,r){return t.cloneElement(e,{className:o.input})})),t.createElement(n.TextInput,{className:i.root,source:"type",initialValue:r})))},exports.UriArrayField=b,exports.UriArrayInput=j,exports.dataProvider=function(e){var r,t,n,a,c,f,l,d,m=e.sparqlEndpoint,h=e.httpClient,b=e.resources,g=e.ontologies,x=e.jsonContext,j=e.uploadsContainerUri,w=e.returnFailedResources,O=void 0!==w&&w,R=function(){var e=u(regeneratorRuntime.mark((function e(r){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(j){e.next=2;break}throw new Error("No uploadsContainerUri defined for the data provider");case 2:return e.next=4,h(j,{method:"POST",body:r,headers:new Headers({Slug:(n=r.name,a=void 0,o=void 0,a="",o=n.split("."),o.length>1&&(a=o.pop(),n=o.join(".")),A(n,{lang:"fr"})+"."+a),"Content-Type":r.type})});case 4:if(201!==(t=e.sent).status){e.next=7;break}return e.abrupt("return",t.headers.get("Location"));case 7:case"end":return e.stop()}var n,a,o}),e)})));return function(r){return e.apply(this,arguments)}}(),I=function(){var e=u(regeneratorRuntime.mark((function e(r){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=regeneratorRuntime.keys(r);case 1:if((e.t1=e.t0()).done){e.next=22;break}if(t=e.t1.value,!r.hasOwnProperty(t)){e.next=20;break}if(!Array.isArray(r[t])){e.next=16;break}n=0;case 6:if(!(n<r[t].length)){e.next=14;break}if(!P(r[t][n])){e.next=11;break}return e.next=10,R(r[t][n].rawFile);case 10:r[t][n]=e.sent;case 11:n++,e.next=6;break;case 14:e.next=20;break;case 16:if(!P(r[t])){e.next=20;break}return e.next=19,R(r[t].rawFile);case 19:r[t]=e.sent;case 20:e.next=1;break;case 22:return e.abrupt("return",r);case 23:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}(),T=function(){var e=u(regeneratorRuntime.mark((function e(r,t){var n,a,i,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=E({types:b[r].types,params:p(p({},t),{},{filter:p(p({},b[r].filter),t.filter)}),dereference:b[r].dereference,ontologies:g}),e.next=3,h(m,{method:"POST",body:n});case 3:return a=e.sent,i=a.json,c=p({"@context":x||S(g),"@type":b[r].types,"@embed":"@never"},k(b[r].dereference)),e.next=8,o.frame(i,c,{omitGraph:!1});case 8:if(u=e.sent,1!==Object.keys(u).length){e.next=13;break}return e.abrupt("return",{data:[],total:0});case 13:return s=u["@graph"].map((function(e){return e.id=e.id||e["@id"],e})),t.sort&&(s=s.sort((function(e,r){return!e[t.sort.field]||!r[t.sort.field]||("ASC"===t.sort.order?e[t.sort.field].localeCompare(r[t.sort.field]):r[t.sort.field].localeCompare(e[t.sort.field]))}))),t.pagination&&(s=s.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:s,total:u["@graph"].length});case 17:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}();return{getList:(d=u(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(b[r],!(t.id||t["@id"]||b[r].fetchContainer)){e.next=27;break}return n=t.id||t["@id"]||b[r].containerUri,e.next=5,h(n);case 5:if(a=e.sent,o=a.json,f="ldp:Container",p=void 0,p=(l=o).type||l["@type"],!(Array.isArray(p)?p.includes(f):p===f)){e.next=15;break}return i=o["ldp:contains"].map((function(e){return e.id=e.id||e["@id"],e})),t.filter&&(t.filter.q&&delete t.filter.q,Object.keys(t.filter).length>0&&(i=i.filter((function(e){return Object.entries(t.filter).some((function(r){var t=y(r,2),n=t[0],a=t[1];return Array.isArray(e[n])?e[n].includes(a):e[n]===a}))})))),t.sort&&(i=i.sort((function(e,r){return!e[t.sort.field]||!r[t.sort.field]||("ASC"===t.sort.order?e[t.sort.field].localeCompare(r[t.sort.field]):r[t.sort.field].localeCompare(e[t.sort.field]))}))),t.pagination&&(i=i.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:i,total:o["ldp:contains"].length});case 15:if(!o.first){e.next=20;break}return e.next=18,h(o.first);case 18:c=e.sent,o=c.json;case 20:if(u=["as:orderedItems","orderedItems","as:items","items"].find((function(e){return o[e]}))){e.next=23;break}return e.abrupt("return",{data:[],total:0});case 23:return s=o[u].map((function(e){return e.id=e.id||e["@id"],e})),e.abrupt("return",{data:s,total:o.totalItems});case 25:e.next=30;break;case 27:return e.next=29,T(r,t);case 29:return e.abrupt("return",e.sent);case 30:case"end":return e.stop()}var f,l,p}),e)}))),function(e,r){return d.apply(this,arguments)}),getOne:(l=u(regeneratorRuntime.mark((function e(r,t){var n,a,i,c,u,s,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return b[r],n=b[r],e.next=4,h(t.id);case 4:return a=e.sent,(i=a.json).id=i.id||i["@id"],e.next=9,o.compact(i,x||S(g));case 9:if(c=e.sent,n.forceArray){u=v(n.forceArray);try{for(u.s();!(s=u.n()).done;)f=s.value,c[f]&&!Array.isArray(c[f])&&(c[f]=[c[f]])}catch(e){u.e(e)}finally{u.f()}}return e.abrupt("return",{data:c});case 12:case"end":return e.stop()}}),e)}))),function(e,r){return l.apply(this,arguments)}),getMany:(f=u(regeneratorRuntime.mark((function e(r,t){var n,a,o,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=v(t.ids),e.prev=2,a.s();case 4:if((o=a.n()).done){e.next=21;break}return c="object"===i(c=o.value)?c["@id"]:c,e.prev=7,e.next=10,h(c);case 10:u=e.sent,(s=u.json).id=c,n.push(s),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(7),O&&n.push({id:c});case 19:e.next=4;break;case 21:e.next=26;break;case 23:e.prev=23,e.t1=e.catch(2),a.e(e.t1);case 26:return e.prev=26,a.f(),e.finish(26);case 29:return e.abrupt("return",{data:n});case 30:case"end":return e.stop()}}),e,null,[[2,23,26,29],[7,16]])}))),function(e,r){return f.apply(this,arguments)}),getManyReference:(c=u(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.filter=p(p({},t.filter),{},s({},t.target,t.id)),e.next=3,T(r,t);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)}))),function(e,r){return c.apply(this,arguments)}),create:(a=u(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u,s,f,l,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return b[r],n=b[r],a=n.slugField,o=n.containerUri,i=n.types,c=new Headers,a&&c.set("Slug",Array.isArray(a)?a.map((function(e){return t.data[e]})).join(" "):t.data[a]),e.next=6,I(t.data);case 6:return t.data=e.sent,e.next=9,h(o,{method:"POST",headers:c,body:JSON.stringify(p({"@context":x||S(g),"@type":i},t.data))});case 9:return u=e.sent,s=u.headers,f=s.get("Location"),e.next=14,h(f);case 14:return l=e.sent,(d=l.json).id=d.id||d["@id"],e.abrupt("return",{data:d});case 18:case"end":return e.stop()}}),e)}))),function(e,r){return a.apply(this,arguments)}),update:(n=u(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I(t.data);case 2:return t.data=e.sent,e.next=5,h(t.id,{method:"PUT",body:JSON.stringify(p({"@context":x||S(g)},t.data))});case 5:return e.abrupt("return",{data:t.data});case 6:case"end":return e.stop()}}),e)}))),function(e,r){return n.apply(this,arguments)}),updateMany:function(e,r){throw new Error("updateMany is not implemented yet")},delete:(t=u(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h(t.id,{method:"DELETE"});case 2:return e.abrupt("return",{data:{id:t.id}});case 3:case"end":return e.stop()}}),e)}))),function(e,r){return t.apply(this,arguments)}),deleteMany:(r=u(regeneratorRuntime.mark((function e(r,t){var n,a,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=v(t.ids),e.prev=2,a.s();case 4:if((o=a.n()).done){e.next=16;break}return i=o.value,e.prev=6,e.next=9,h(i,{method:"DELETE"});case 9:n.push(i),e.next=14;break;case 12:e.prev=12,e.t0=e.catch(6);case 14:e.next=4;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(2),a.e(e.t1);case 21:return e.prev=21,a.f(),e.finish(21);case 24:return e.abrupt("return",{data:n});case 25:case"end":return e.stop()}}),e,null,[[2,18,21,24],[6,12]])}))),function(e,t){return r.apply(this,arguments)})}},exports.httpClient=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(r.headers||(r.headers=new Headers),r.method){case"POST":case"PATCH":case"PUT":r.headers.has("Accept")||r.headers.set("Accept","application/ld+json"),r.headers.has("Content-Type")||r.headers.set("Content-Type","application/ld+json");break;case"DELETE":break;case"GET":default:r.headers.has("Accept")||r.headers.set("Accept","application/ld+json")}var t=localStorage.getItem("token");return t&&r.headers.set("Authorization","Bearer ".concat(t)),n.fetchUtils.fetchJson(e,r)};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/fields/ReferenceArrayField.js","../src/fields/ReferenceField.js","../src/dataHandling/FilterHandler.js","../src/inputs/ReferenceArrayInput.js","../src/inputs/ReificationArrayInput.js","../src/dereference.js","../src/buildSparqlQuery.js","../src/dataProvider.js","../src/inputs/DateTimeInput.js","../src/dataHandling/GroupedReferenceHandler.js","../src/fields/ImageField.js","../src/inputs/ReferenceInput.js","../src/httpClient.js"],"sourcesContent":["import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField } from 'react-admin';\n\nconst ReferenceArrayField = ({ record, source, ...otherProps }) => {\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return <RaReferenceArrayField record={record} source={source} {...otherProps} />;\n};\n\nReferenceArrayField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField } from 'react-admin';\n\nconst ReferenceField = ({ record, source, ...otherProps }) => {\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return <RaReferenceField record={record} source={source} {...otherProps} />;\n};\n\nReferenceField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceField;\n","import React, { useState, useEffect } from 'react';\nimport { ArrayField } from 'react-admin';\n\n/**\n * @example\n * <Show>\n * <FilterHandler\n * source=\"property\" // ex pair:organizationOfMembership\n * filter={{\n * 'propertyToFilter':'value'\n * }} // ex {{'pair:membershipRole':'http://localhost:3000/membership-roles/role-1'}}\n * >\n * <SingleFieldList>\n * </SingleFieldList>\n * </FilterHandler>\n * </Show>\n */\n\nconst FilterHandler = ({ children, record, filter, source, ...otherProps }) => {\n const [filtered, setFiltered] = useState();\n useEffect(() => {\n if (record && source && Array.isArray(record?.[source])) {\n const filteredData = record?.[source].filter(r => {\n let eq = true;\n for (const key in filter) {\n const value = r[key];\n if (Array.isArray(value)) {\n if (!value.includes(filter[key])) {\n eq = false;\n }\n } else {\n if (value !== filter[key]) {\n eq = false;\n }\n }\n }\n return eq;\n });\n let newRecord = {\n ...record\n };\n //undefined setted if no data to obtain no render in RightLabel or equivalent\n newRecord[source] = filteredData.length > 0 ? filteredData : undefined;\n setFiltered(newRecord);\n }\n }, [record, source, filter]);\n\n return (\n <>\n {React.Children.map(children, (child, i) => {\n return React.cloneElement(child, {\n ...otherProps,\n record: filtered,\n addLabel: true,\n source\n });\n })}\n </>\n );\n};\nexport default FilterHandler;\n","import React from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput, useResourceContext } from 'react-admin';\n\nconst ReferenceArrayInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceArrayInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // if the linked field value is not an array, turns it into an array.\n // Necessary as JSON-LD are sometimes arrays, sometimes not (when there is one value)\n // and the ReferenceArrayInput component only accept arrays\n if (!Array.isArray(value)) value = [value];\n // If a format prop was defined, apply it to the array\n if (props.format) value = props.format(value);\n // If the values are objects with @id field, turn it to a simple string\n return value.map(v => (typeof v === 'object' ? v.id || v['@id'] : v));\n }}\n />\n );\n};\n\nexport default ReferenceArrayInput;\n","import React, { useEffect, useState } from 'react';\nimport { ArrayInput, SimpleFormIterator, TextInput } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useReferenceInputStyles = makeStyles({\n form: {\n display: 'flex'\n },\n input: {\n paddingRight: '20px'\n }\n});\n\nconst useHideInputStyles = makeStyles({\n root: {\n display: 'none'\n }\n});\n\nconst ReificationArrayInput = props => {\n const { reificationClass, children, ...otherProps } = props;\n const flexFormClasses = useReferenceInputStyles();\n const hideInputStyles = useHideInputStyles();\n\n return (\n <ArrayInput {...otherProps}>\n <SimpleFormIterator classes={{ form: flexFormClasses.form }}>\n {React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n className: flexFormClasses.input\n });\n })}\n <TextInput className={hideInputStyles.root} source=\"type\" initialValue={reificationClass} />\n </SimpleFormIterator>\n </ArrayInput>\n );\n};\n\nexport default ReificationArrayInput;\n","// Return an object in the form of predicate => parentPredicate\nconst flattenPredicate = (accumulator, predicate, parent = 'root') => {\n if (predicate.includes('/')) {\n const matches = predicate.split(/\\/(.+)/);\n accumulator[matches[0]] = parent;\n flattenPredicate(accumulator, matches[1], matches[0]);\n } else {\n accumulator[predicate] = parent;\n }\n return accumulator;\n};\n\n// Transform ontology:predicate to OntologyPredicate in order to use it as a variable name\nconst generateSparqlVarName = predicate =>\n predicate\n .split(':')\n .map(s => s[0].toUpperCase() + s.slice(1))\n .join('');\n\nexport const buildDereferenceQuery = predicates => {\n let queries = [];\n\n if (predicates) {\n const flattenedPredicates = predicates.reduce((acc, predicate) => flattenPredicate(acc, predicate), {});\n\n for (const [predicate, parent] of Object.entries(flattenedPredicates)) {\n const varName = generateSparqlVarName(predicate);\n const parentVarName = parent === 'root' ? '1' : generateSparqlVarName(parent);\n\n // Group queries by parent, so that we can group WHERE triples in the same OPTIONAL tag\n const groupKey = parent === 'root' ? predicate : parent;\n if (!queries[groupKey]) queries[groupKey] = [];\n\n queries[groupKey].push(`\n ?s${parentVarName} ${predicate} ?s${varName} .\n ?s${varName} ?p${varName} ?o${varName} .\n `);\n }\n }\n\n return {\n construct: Object.values(queries)\n .map(groupedQueries => Object.values(groupedQueries).join('\\n'))\n .join('\\n'),\n where: Object.values(queries)\n .map(groupedQueries => `OPTIONAL { ${Object.values(groupedQueries).join('\\n')} }`)\n .join('\\n')\n };\n};\n\nexport const getEmbedFrame = paths => {\n let embedFrame = {},\n predicates;\n if (paths) {\n for (let path of paths) {\n if (path.includes('/')) {\n predicates = path.split('/').reverse();\n } else {\n predicates = [path];\n }\n embedFrame = {\n ...embedFrame,\n ...predicates.reduce(\n (accumulator, predicate) => ({\n [predicate]: {\n '@embed': '@last',\n ...accumulator\n }\n }),\n {}\n )\n };\n }\n return embedFrame;\n }\n};\n","import { buildDereferenceQuery } from './dereference';\n\nconst getPrefixRdf = ontologies => {\n return ontologies.map(ontology => `PREFIX ${ontology.prefix}: <${ontology.url}>`).join('\\n');\n};\n\nconst buildSparqlQuery = ({ types, params: { filter }, dereference, ontologies }) => {\n let whereQuery = '';\n\n if (filter) {\n if (filter.q && filter.q.length > 0) {\n whereQuery += `\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), \"${filter.q.toLowerCase()}\")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n `;\n delete filter.q;\n }\n Object.keys(filter).forEach(predicate => {\n if (filter[predicate]) {\n const object = filter[predicate].startsWith('http') ? `<${filter[predicate]}>` : filter[predicate];\n whereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const dereferenceQuery = buildDereferenceQuery(dereference);\n\n return `\n ${getPrefixRdf(ontologies)}\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ${dereferenceQuery.construct}\n }\n WHERE {\n ?s1 a ?type .\n FILTER( ?type IN (${types.join(', ')}) ) .\n FILTER( (isIRI(?s1)) ) .\n ${whereQuery}\n ${dereferenceQuery.where}\n ?s1 ?p2 ?o2 .\n }\n `;\n};\n\nexport default buildSparqlQuery;\n","import jsonld from 'jsonld';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport { getEmbedFrame } from './dereference';\nconst createSlug = require('speakingurl');\n\nconst buildJsonContext = ontologies => {\n let pattern = {};\n ontologies.forEach(ontology => (pattern[ontology.prefix] = ontology.url));\n return pattern;\n};\n\nconst isFile = o => o && o.rawFile && o.rawFile instanceof File;\n\nconst getSlugWithExtension = fileName => {\n let fileExtension = '';\n let splitFileName = fileName.split('.');\n if (splitFileName.length > 1) {\n fileExtension = splitFileName.pop();\n fileName = splitFileName.join('.');\n }\n return createSlug(fileName, { lang: 'fr' }) + '.' + fileExtension;\n};\n\nconst isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst dataProvider = ({\n sparqlEndpoint,\n httpClient,\n resources,\n ontologies,\n jsonContext,\n uploadsContainerUri,\n returnFailedResources = false\n}) => {\n const uploadFile = async rawFile => {\n if (!uploadsContainerUri) throw new Error('No uploadsContainerUri defined for the data provider');\n\n const response = await httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n };\n\n /*\n * Look for raw files in the resource data.\n * If there are any, upload them and replace the file by its URL.\n */\n const uploadAllFiles = async resource => {\n for (let property in resource) {\n if (resource.hasOwnProperty(property)) {\n if (Array.isArray(resource[property])) {\n for (let i = 0; i < resource[property].length; i++) {\n if (isFile(resource[property][i])) {\n resource[property][i] = await uploadFile(resource[property][i].rawFile);\n }\n }\n } else {\n if (isFile(resource[property])) {\n resource[property] = await uploadFile(resource[property].rawFile);\n }\n }\n }\n }\n return resource;\n };\n\n return {\n getList: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n if (params.id || params['@id'] || !resources[resourceId].types) {\n const url = params.id || params['@id'] || resources[resourceId].containerUri;\n let { json } = await httpClient(url);\n\n if (isType('ldp:Container', json)) {\n /*\n * LDP Container\n */\n let returnData = json['ldp:contains'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // Remove search params from filter\n if (params.filter.q) {\n delete params.filter.q;\n }\n if (Object.keys(params.filter).length > 0) {\n returnData = returnData.filter(resource =>\n Object.entries(params.filter).some(([k, v]) =>\n Array.isArray(resource[k]) ? resource[k].includes(v) : resource[k] === v\n )\n );\n }\n }\n\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: json['ldp:contains'].length };\n } else {\n /*\n * ActivityPub collection\n */\n\n // If the collection is split amongst several pages, get the first page\n if (json.first) {\n const result = await httpClient(json.first);\n json = result.json;\n }\n\n const listProperty = ['as:orderedItems', 'orderedItems', 'as:items', 'items'].find(p => json[p]);\n if (!listProperty) return { data: [], total: 0 };\n\n // TODO fetch several pages depending on params.pagination\n\n let returnData = json[listProperty].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n return { data: returnData, total: json.totalItems };\n }\n } else {\n const sparqlQuery = buildSparqlQuery({\n types: resources[resourceId].types,\n params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n dereference: resources[resourceId].dereference,\n ontologies\n });\n\n const { json } = await httpClient(sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery\n });\n\n const frame = {\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': resources[resourceId].types,\n // Embed only what we explicitly asked to dereference\n // Otherwise we may have same-type resources embedded in other resources\n '@embed': '@never',\n ...getEmbedFrame(resources[resourceId].dereference)\n };\n\n // omitGraph option force results to be in a @graph, even if we have a single result\n const compactJson = await jsonld.frame(json, frame, { omitGraph: false });\n\n if (Object.keys(compactJson).length === 1) {\n // If we have only the context, it means there is no match\n return { data: [], total: 0 };\n } else {\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = compactJson['@graph'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (params.sort && a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n } else {\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n } else {\n return true;\n }\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: compactJson['@graph'].length };\n }\n\n // OTHER METHOD: FETCH ONLY RESOURCES URIs AND FETCH THEM INDEPENDENTLY\n // TODO compare the performance of the two methods, and eventually allow both of them\n //\n // const sparqlQuery = buildSparqlUriQuery({\n // types: resources[resourceId].types,\n // params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n // ontologies\n // });\n //\n // let { json } = await httpClient(sparqlEndpoint, {\n // method: 'POST',\n // body: sparqlQuery\n // });\n //\n // const total = json.length;\n //\n // if (params.pagination) {\n // json = json.slice(\n // (params.pagination.page - 1) * params.pagination.perPage,\n // params.pagination.page * params.pagination.perPage\n // );\n // }\n //\n // let data = await Promise.allSettled(\n // json.map(result => httpClient(result.resource.value).then(result => result.json))\n // );\n //\n // // Ignore resources we were not able to fetch\n // data = data.filter(r => r.status === 'fulfilled').map(r => r.value);\n //\n // return { data, total };\n }\n },\n getOne: async (resourceId, params) => {\n if (!resources[resourceId]) {\n Error(`Resource ${resourceId} is not mapped in resources file`);\n }\n const dataModel = resources[resourceId];\n\n let { json } = await httpClient(params.id);\n json.id = json.id || json['@id'];\n // TODO compact only if remote context is different from local context\n const compactJson = await jsonld.compact(json, jsonContext || buildJsonContext(ontologies));\n // transform single value into array concidering forceArray predicates\n if (dataModel.forceArray) {\n for (const forceArrayItem of dataModel.forceArray) {\n if (compactJson[forceArrayItem] && !Array.isArray(compactJson[forceArrayItem])) {\n compactJson[forceArrayItem] = [compactJson[forceArrayItem]];\n }\n }\n }\n return { data: compactJson };\n },\n getMany: async (resourceId, params) => {\n let returnData = [];\n\n for (let id of params.ids) {\n id = typeof id === 'object' ? id['@id'] : id;\n\n try {\n let { json } = await httpClient(id);\n json.id = id;\n returnData.push(json);\n } catch (e) {\n // Catch if one resource fails to load\n // Otherwise no references will be show if only one is missing\n // See https://github.com/marmelab/react-admin/issues/5190\n if (returnFailedResources) {\n // Return only the ID of the resource\n returnData.push({ id });\n } else {\n // Do nothing. The resource will not appear in the results.\n }\n }\n }\n\n return { data: returnData };\n },\n getManyReference: (resourceId, params) => {\n throw new Error('getManyReference is not implemented yet');\n },\n create: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const { slugField, containerUri, types } = resources[resourceId];\n const headers = new Headers();\n\n if (slugField) {\n headers.set(\n 'Slug',\n Array.isArray(slugField) ? slugField.map(f => params.data[f]).join(' ') : params.data[slugField]\n );\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': types,\n ...params.data\n })\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n let { json } = await httpClient(resourceUri);\n json.id = json.id || json['@id'];\n return { data: json };\n },\n update: async (resourceId, params) => {\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n ...params.data\n })\n });\n\n return { data: params.data };\n },\n updateMany: (resourceId, params) => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: async (resourceId, params) => {\n await httpClient(params.id, {\n method: 'DELETE'\n });\n return { data: { id: params.id } };\n },\n deleteMany: (resourceId, params) => {\n throw new Error('deleteMany is not implemented yet');\n }\n };\n};\n\nexport default dataProvider;\n","import React from 'react';\nimport { DateTimeInput as RaDateTimeInput } from 'react-admin';\n\n/**\n * @deprecated Use the component from the @semapps/date-components instead\n */\nconst DateTimeInput = props => (\n <RaDateTimeInput {...props} format={value => value && value.replace(' ', 'T').replace('Z', '')} />\n);\n\nexport default DateTimeInput;\n","import React from 'react';\nimport { useQueryWithStore } from 'react-admin';\nimport { default as FilterHandler } from './FilterHandler';\n\n/*\n * @example Label used in examples\n * const Label = ({label, ...otherProps})=>{\n * return <h2>{label}</h2>\n * }\n *\n * @example show header for each group with group property thanks to groupHeader\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupHeader={({group,...otherProps}) => <Label {...otherProps} label={group['pair:label']}></Label> }\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example call chhildren with label thanks to groupLabel\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example conditional show of group if no data in source. Conditionale groupHeader is not possible because GroupedArrayField define group before filter ; need use chhildren.\n * const ConditionalSourceDefinedHandler = ({record,source,children,...otherProps})=>{\n * if (record?.[source] && (!Array.isArray(record[source])||record[source].length>0)){\n * return React.Children.map(children, (child, i) => {\n * return React.cloneElement(child, {...otherProps,record,source});\n * })\n * }else{\n * return <></>\n * }\n * }\n *\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ConditionalSourceDefinedHandler>\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </ConditionalSourceDefinedHandler>\n * </GroupedReferenceHandler>\n *\n *\n */\nconst GroupedReferenceHandler = ({\n children,\n groupReference,\n groupLabel,\n groupHeader,\n filterProperty,\n ...otherProps\n}) => {\n const { data } = useQueryWithStore({\n type: 'getList',\n resource: groupReference,\n payload: {}\n });\n\n return (\n <>\n {data?.map((data, index) => {\n let filter = {};\n filter[filterProperty] = data.id;\n return (\n <>\n {groupHeader && groupHeader({ ...otherProps, group: data })}\n <FilterHandler {...otherProps} filter={filter} label={data[groupLabel]}>\n {children}\n </FilterHandler>\n </>\n );\n })}\n </>\n );\n};\n\nexport default GroupedReferenceHandler;\n","import React from 'react';\nimport { ImageField as RaImageField } from 'react-admin';\n\nconst ImageField = ({ record, source, ...otherProps }) => {\n // For the display, we need to have the URI in a src property\n if (typeof record === 'string') record = { [source]: record };\n return <RaImageField record={record} source={source} {...otherProps} />;\n};\n\nexport default ImageField;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput, useResourceContext } from 'react-admin';\n\nconst ReferenceInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If a format prop was defined, apply it\n if (props.format) value = props.format(value);\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n }}\n />\n );\n};\n\nexport default ReferenceInput;\n","import { fetchUtils } from 'react-admin';\n\nconst httpClient = (url, options = {}) => {\n if (!options.headers) options.headers = new Headers();\n\n switch (options.method) {\n case 'POST':\n case 'PATCH':\n case 'PUT':\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n if (!options.headers.has('Content-Type')) options.headers.set('Content-Type', 'application/ld+json');\n break;\n\n case 'DELETE':\n break;\n\n case 'GET':\n default:\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n break;\n }\n\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n\n return fetchUtils.fetchJson(url, options);\n};\n\nexport default httpClient;\n"],"names":["ReferenceArrayField","record","source","otherProps","Array","isArray","map","i","id","React","RaReferenceArrayField","defaultProps","addLabel","ReferenceField","_typeof","RaReferenceField","FilterHandler","children","filter","useState","filtered","setFiltered","useEffect","filteredData","r","eq","key","value","includes","newRecord","length","undefined","Children","child","cloneElement","ReferenceArrayInput","props","resource","useResourceContext","RaReferenceArrayInput","format","v","useReferenceInputStyles","makeStyles","form","display","input","paddingRight","useHideInputStyles","root","generateSparqlVarName","predicate","split","s","toUpperCase","slice","join","getEmbedFrame","paths","predicates","embedFrame","path","reverse","reduce","accumulator","buildSparqlQuery","types","params","dereference","ontologies","whereQuery","q","toLowerCase","Object","keys","forEach","object","startsWith","dereferenceQuery","queries","flattenedPredicates","acc","flattenPredicate","parent","matches","entries","varName","parentVarName","groupKey","push","construct","values","groupedQueries","where","buildDereferenceQuery","ontology","prefix","url","getPrefixRdf","createSlug","require","buildJsonContext","pattern","isFile","o","rawFile","File","RaDateTimeInput","replace","groupReference","groupLabel","groupHeader","filterProperty","data","useQueryWithStore","type","payload","index","group","label","RaImageField","RaReferenceInput","reificationClass","flexFormClasses","hideInputStyles","ArrayInput","SimpleFormIterator","classes","className","TextInput","initialValue","sparqlEndpoint","httpClient","resources","jsonContext","uploadsContainerUri","returnFailedResources","uploadFile","Error","method","body","headers","Headers","Slug","fileName","name","fileExtension","splitFileName","pop","lang","response","status","get","uploadAllFiles","property","hasOwnProperty","getList","resourceId","containerUri","json","resourceType","returnData","item","some","k","pagination","page","perPage","total","first","result","listProperty","find","p","totalItems","sparqlQuery","frame","jsonld","omitGraph","compactJson","sort","a","b","field","order","localeCompare","getOne","dataModel","compact","forceArray","forceArrayItem","getMany","ids","getManyReference","create","slugField","set","f","JSON","stringify","responseHeaders","resourceUri","update","updateMany","deleteMany","options","has","token","localStorage","getItem","fetchUtils","fetchJson"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/fields/ReferenceArrayField.js","../src/fields/ReferenceField.js","../src/dataHandling/FilterHandler.js","../src/inputs/ReferenceArrayInput.js","../src/inputs/ReificationArrayInput.js","../src/dereference.js","../src/buildSparqlQuery.js","../src/dataProvider.js","../src/inputs/DateTimeInput.js","../src/dataHandling/GroupedReferenceHandler.js","../src/fields/ImageField.js","../src/inputs/ReferenceInput.js","../src/httpClient.js"],"sourcesContent":["import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField } from 'react-admin';\n\nconst ReferenceArrayField = ({ record, source, ...otherProps }) => {\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return <RaReferenceArrayField record={record} source={source} {...otherProps} />;\n};\n\nReferenceArrayField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField } from 'react-admin';\n\nconst ReferenceField = ({ record, source, ...otherProps }) => {\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return <RaReferenceField record={record} source={source} {...otherProps} />;\n};\n\nReferenceField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceField;\n","import React, { useState, useEffect } from 'react';\nimport { ArrayField } from 'react-admin';\n\n/**\n * @example\n * <Show>\n * <FilterHandler\n * source=\"property\" // ex pair:organizationOfMembership\n * filter={{\n * 'propertyToFilter':'value'\n * }} // ex {{'pair:membershipRole':'http://localhost:3000/membership-roles/role-1'}}\n * >\n * <SingleFieldList>\n * </SingleFieldList>\n * </FilterHandler>\n * </Show>\n */\n\nconst FilterHandler = ({ children, record, filter, source, ...otherProps }) => {\n const [filtered, setFiltered] = useState();\n useEffect(() => {\n if (record && source && Array.isArray(record?.[source])) {\n const filteredData = record?.[source].filter(r => {\n let eq = true;\n for (const key in filter) {\n const value = r[key];\n if (Array.isArray(value)) {\n if (!value.includes(filter[key])) {\n eq = false;\n }\n } else {\n if (value !== filter[key]) {\n eq = false;\n }\n }\n }\n return eq;\n });\n let newRecord = {\n ...record\n };\n //undefined setted if no data to obtain no render in RightLabel or equivalent\n newRecord[source] = filteredData.length > 0 ? filteredData : undefined;\n setFiltered(newRecord);\n }\n }, [record, source, filter]);\n\n return (\n <>\n {React.Children.map(children, (child, i) => {\n return React.cloneElement(child, {\n ...otherProps,\n record: filtered,\n addLabel: true,\n source\n });\n })}\n </>\n );\n};\nexport default FilterHandler;\n","import React from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput, useResourceContext } from 'react-admin';\n\nconst ReferenceArrayInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceArrayInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // if the linked field value is not an array, turns it into an array.\n // Necessary as JSON-LD are sometimes arrays, sometimes not (when there is one value)\n // and the ReferenceArrayInput component only accept arrays\n if (!Array.isArray(value)) value = [value];\n // If a format prop was defined, apply it to the array\n if (props.format) value = props.format(value);\n // If the values are objects with @id field, turn it to a simple string\n return value.map(v => (typeof v === 'object' ? v.id || v['@id'] : v));\n }}\n />\n );\n};\n\nexport default ReferenceArrayInput;\n","import React, { useEffect, useState } from 'react';\nimport { ArrayInput, SimpleFormIterator, TextInput } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useReferenceInputStyles = makeStyles({\n form: {\n display: 'flex'\n },\n input: {\n paddingRight: '20px'\n }\n});\n\nconst useHideInputStyles = makeStyles({\n root: {\n display: 'none'\n }\n});\n\nconst ReificationArrayInput = props => {\n const { reificationClass, children, ...otherProps } = props;\n const flexFormClasses = useReferenceInputStyles();\n const hideInputStyles = useHideInputStyles();\n\n return (\n <ArrayInput {...otherProps}>\n <SimpleFormIterator classes={{ form: flexFormClasses.form }}>\n {React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n className: flexFormClasses.input\n });\n })}\n <TextInput className={hideInputStyles.root} source=\"type\" initialValue={reificationClass} />\n </SimpleFormIterator>\n </ArrayInput>\n );\n};\n\nexport default ReificationArrayInput;\n","// Return an object in the form of predicate => parentPredicate\nconst flattenPredicate = (accumulator, predicate, parent = 'root') => {\n if (predicate.includes('/')) {\n const matches = predicate.split(/\\/(.+)/);\n accumulator[matches[0]] = parent;\n flattenPredicate(accumulator, matches[1], matches[0]);\n } else {\n accumulator[predicate] = parent;\n }\n return accumulator;\n};\n\n// Transform ontology:predicate to OntologyPredicate in order to use it as a variable name\nconst generateSparqlVarName = predicate =>\n predicate\n .split(':')\n .map(s => s[0].toUpperCase() + s.slice(1))\n .join('');\n\nexport const buildDereferenceQuery = predicates => {\n let queries = [];\n\n if (predicates) {\n const flattenedPredicates = predicates.reduce((acc, predicate) => flattenPredicate(acc, predicate), {});\n\n for (const [predicate, parent] of Object.entries(flattenedPredicates)) {\n const varName = generateSparqlVarName(predicate);\n const parentVarName = parent === 'root' ? '1' : generateSparqlVarName(parent);\n\n // Group queries by parent, so that we can group WHERE triples in the same OPTIONAL tag\n const groupKey = parent === 'root' ? predicate : parent;\n if (!queries[groupKey]) queries[groupKey] = [];\n\n queries[groupKey].push(`\n ?s${parentVarName} ${predicate} ?s${varName} .\n ?s${varName} ?p${varName} ?o${varName} .\n `);\n }\n }\n\n return {\n construct: Object.values(queries)\n .map(groupedQueries => Object.values(groupedQueries).join('\\n'))\n .join('\\n'),\n where: Object.values(queries)\n .map(groupedQueries => `OPTIONAL { ${Object.values(groupedQueries).join('\\n')} }`)\n .join('\\n')\n };\n};\n\nexport const getEmbedFrame = paths => {\n let embedFrame = {},\n predicates;\n if (paths) {\n for (let path of paths) {\n if (path.includes('/')) {\n predicates = path.split('/').reverse();\n } else {\n predicates = [path];\n }\n embedFrame = {\n ...embedFrame,\n ...predicates.reduce(\n (accumulator, predicate) => ({\n [predicate]: {\n '@embed': '@last',\n ...accumulator\n }\n }),\n {}\n )\n };\n }\n return embedFrame;\n }\n};\n","import { buildDereferenceQuery } from './dereference';\n\nconst getPrefixRdf = ontologies => {\n return ontologies.map(ontology => `PREFIX ${ontology.prefix}: <${ontology.url}>`).join('\\n');\n};\n\nconst buildSparqlQuery = ({ types, params: { filter }, dereference, ontologies }) => {\n let searchWhereQuery = '',\n filterWhereQuery = '';\n\n if (filter) {\n if (filter.q && filter.q.length > 0) {\n searchWhereQuery += `\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), \"${filter.q.toLowerCase()}\")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n `;\n delete filter.q;\n }\n Object.keys(filter).forEach(predicate => {\n if (filter[predicate]) {\n const object = filter[predicate].startsWith('http') ? `<${filter[predicate]}>` : filter[predicate];\n filterWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const dereferenceQuery = buildDereferenceQuery(dereference);\n\n return `\n ${getPrefixRdf(ontologies)}\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ${dereferenceQuery.construct}\n }\n WHERE {\n ${filterWhereQuery}\n ?s1 a ?type .\n FILTER( ?type IN (${types.join(', ')}) ) .\n FILTER( (isIRI(?s1)) ) .\n ${searchWhereQuery}\n ${dereferenceQuery.where}\n ?s1 ?p2 ?o2 .\n }\n `;\n};\n\nexport default buildSparqlQuery;\n","import jsonld from 'jsonld';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport { getEmbedFrame } from './dereference';\nconst createSlug = require('speakingurl');\n\nconst buildJsonContext = ontologies => {\n let pattern = {};\n ontologies.forEach(ontology => (pattern[ontology.prefix] = ontology.url));\n return pattern;\n};\n\nconst isFile = o => o && o.rawFile && o.rawFile instanceof File;\n\nconst getSlugWithExtension = fileName => {\n let fileExtension = '';\n let splitFileName = fileName.split('.');\n if (splitFileName.length > 1) {\n fileExtension = splitFileName.pop();\n fileName = splitFileName.join('.');\n }\n return createSlug(fileName, { lang: 'fr' }) + '.' + fileExtension;\n};\n\nconst isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst dataProvider = ({\n sparqlEndpoint,\n httpClient,\n resources,\n ontologies,\n jsonContext,\n uploadsContainerUri,\n returnFailedResources = false\n}) => {\n const uploadFile = async rawFile => {\n if (!uploadsContainerUri) throw new Error('No uploadsContainerUri defined for the data provider');\n\n const response = await httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n };\n\n /*\n * Look for raw files in the resource data.\n * If there are any, upload them and replace the file by its URL.\n */\n const uploadAllFiles = async resource => {\n for (let property in resource) {\n if (resource.hasOwnProperty(property)) {\n if (Array.isArray(resource[property])) {\n for (let i = 0; i < resource[property].length; i++) {\n if (isFile(resource[property][i])) {\n resource[property][i] = await uploadFile(resource[property][i].rawFile);\n }\n }\n } else {\n if (isFile(resource[property])) {\n resource[property] = await uploadFile(resource[property].rawFile);\n }\n }\n }\n }\n return resource;\n };\n\n const ExecuteSparql = async (resourceId, params) => {\n const sparqlQuery = buildSparqlQuery({\n types: resources[resourceId].types,\n params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n dereference: resources[resourceId].dereference,\n ontologies\n });\n\n const { json } = await httpClient(sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery\n });\n\n const frame = {\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': resources[resourceId].types,\n // Embed only what we explicitly asked to dereference\n // Otherwise we may have same-type resources embedded in other resources\n '@embed': '@never',\n ...getEmbedFrame(resources[resourceId].dereference)\n };\n\n // omitGraph option force results to be in a @graph, even if we have a single result\n const compactJson = await jsonld.frame(json, frame, { omitGraph: false });\n\n if (Object.keys(compactJson).length === 1) {\n // If we have only the context, it means there is no match\n return { data: [], total: 0 };\n } else {\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = compactJson['@graph'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n } else {\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n } else {\n return true;\n }\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: compactJson['@graph'].length };\n }\n };\n\n return {\n getList: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n if (params.id || params['@id'] || resources[resourceId].fetchContainer) {\n const url = params.id || params['@id'] || resources[resourceId].containerUri;\n let { json } = await httpClient(url);\n\n if (isType('ldp:Container', json)) {\n /*\n * LDP Container\n */\n let returnData = json['ldp:contains'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // Remove search params from filter\n if (params.filter.q) {\n delete params.filter.q;\n }\n if (Object.keys(params.filter).length > 0) {\n returnData = returnData.filter(resource =>\n Object.entries(params.filter).some(([k, v]) =>\n Array.isArray(resource[k]) ? resource[k].includes(v) : resource[k] === v\n )\n );\n }\n }\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n } else {\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n } else {\n return true;\n }\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: json['ldp:contains'].length };\n } else {\n /*\n * ActivityPub collection\n */\n\n // If the collection is split amongst several pages, get the first page\n if (json.first) {\n const result = await httpClient(json.first);\n json = result.json;\n }\n\n const listProperty = ['as:orderedItems', 'orderedItems', 'as:items', 'items'].find(p => json[p]);\n if (!listProperty) return { data: [], total: 0 };\n\n // TODO fetch several pages depending on params.pagination\n\n let returnData = json[listProperty].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n return { data: returnData, total: json.totalItems };\n }\n } else {\n return await ExecuteSparql(resourceId, params);\n // OTHER METHOD: FETCH ONLY RESOURCES URIs AND FETCH THEM INDEPENDENTLY\n // TODO compare the performance of the two methods, and eventually allow both of them\n //\n // const sparqlQuery = buildSparqlUriQuery({\n // types: resources[resourceId].types,\n // params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n // ontologies\n // });\n //\n // let { json } = await httpClient(sparqlEndpoint, {\n // method: 'POST',\n // body: sparqlQuery\n // });\n //\n // const total = json.length;\n //\n // if (params.pagination) {\n // json = json.slice(\n // (params.pagination.page - 1) * params.pagination.perPage,\n // params.pagination.page * params.pagination.perPage\n // );\n // }\n //\n // let data = await Promise.allSettled(\n // json.map(result => httpClient(result.resource.value).then(result => result.json))\n // );\n //\n // // Ignore resources we were not able to fetch\n // data = data.filter(r => r.status === 'fulfilled').map(r => r.value);\n //\n // return { data, total };\n }\n },\n getOne: async (resourceId, params) => {\n if (!resources[resourceId]) {\n Error(`Resource ${resourceId} is not mapped in resources file`);\n }\n const dataModel = resources[resourceId];\n\n let { json } = await httpClient(params.id);\n json.id = json.id || json['@id'];\n // TODO compact only if remote context is different from local context\n const compactJson = await jsonld.compact(json, jsonContext || buildJsonContext(ontologies));\n // transform single value into array concidering forceArray predicates\n if (dataModel.forceArray) {\n for (const forceArrayItem of dataModel.forceArray) {\n if (compactJson[forceArrayItem] && !Array.isArray(compactJson[forceArrayItem])) {\n compactJson[forceArrayItem] = [compactJson[forceArrayItem]];\n }\n }\n }\n return { data: compactJson };\n },\n getMany: async (resourceId, params) => {\n let returnData = [];\n\n for (let id of params.ids) {\n id = typeof id === 'object' ? id['@id'] : id;\n\n try {\n let { json } = await httpClient(id);\n json.id = id;\n returnData.push(json);\n } catch (e) {\n // Catch if one resource fails to load\n // Otherwise no references will be show if only one is missing\n // See https://github.com/marmelab/react-admin/issues/5190\n if (returnFailedResources) {\n // Return only the ID of the resource\n returnData.push({ id });\n } else {\n // Do nothing. The resource will not appear in the results.\n }\n }\n }\n\n return { data: returnData };\n },\n getManyReference: async (resourceId, params) => {\n params.filter = { ...params.filter, [params.target]: params.id };\n return await ExecuteSparql(resourceId, params);\n },\n create: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const { slugField, containerUri, types } = resources[resourceId];\n const headers = new Headers();\n\n if (slugField) {\n headers.set(\n 'Slug',\n Array.isArray(slugField) ? slugField.map(f => params.data[f]).join(' ') : params.data[slugField]\n );\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': types,\n ...params.data\n })\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n let { json } = await httpClient(resourceUri);\n json.id = json.id || json['@id'];\n return { data: json };\n },\n update: async (resourceId, params) => {\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n ...params.data\n })\n });\n\n return { data: params.data };\n },\n updateMany: (resourceId, params) => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: async (resourceId, params) => {\n await httpClient(params.id, {\n method: 'DELETE'\n });\n return { data: { id: params.id } };\n },\n deleteMany: async (resourceId, params) => {\n let ids = [];\n for (let id of params.ids) {\n try {\n await httpClient(id, {\n method: 'DELETE'\n });\n ids.push(id);\n } catch (e) {}\n }\n return { data: ids };\n }\n };\n};\n\nexport default dataProvider;\n","import React from 'react';\nimport { DateTimeInput as RaDateTimeInput } from 'react-admin';\n\n/**\n * @deprecated Use the component from the @semapps/date-components instead\n */\nconst DateTimeInput = props => (\n <RaDateTimeInput {...props} format={value => value && value.replace(' ', 'T').replace('Z', '')} />\n);\n\nexport default DateTimeInput;\n","import React from 'react';\nimport { useQueryWithStore } from 'react-admin';\nimport { default as FilterHandler } from './FilterHandler';\n\n/*\n * @example Label used in examples\n * const Label = ({label, ...otherProps})=>{\n * return <h2>{label}</h2>\n * }\n *\n * @example show header for each group with group property thanks to groupHeader\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupHeader={({group,...otherProps}) => <Label {...otherProps} label={group['pair:label']}></Label> }\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example call chhildren with label thanks to groupLabel\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example conditional show of group if no data in source. Conditionale groupHeader is not possible because GroupedArrayField define group before filter ; need use chhildren.\n * const ConditionalSourceDefinedHandler = ({record,source,children,...otherProps})=>{\n * if (record?.[source] && (!Array.isArray(record[source])||record[source].length>0)){\n * return React.Children.map(children, (child, i) => {\n * return React.cloneElement(child, {...otherProps,record,source});\n * })\n * }else{\n * return <></>\n * }\n * }\n *\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ConditionalSourceDefinedHandler>\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </ConditionalSourceDefinedHandler>\n * </GroupedReferenceHandler>\n *\n *\n */\nconst GroupedReferenceHandler = ({\n children,\n groupReference,\n groupLabel,\n groupHeader,\n filterProperty,\n ...otherProps\n}) => {\n const { data } = useQueryWithStore({\n type: 'getList',\n resource: groupReference,\n payload: {}\n });\n\n return (\n <>\n {data?.map((data, index) => {\n let filter = {};\n filter[filterProperty] = data.id;\n return (\n <>\n {groupHeader && groupHeader({ ...otherProps, group: data })}\n <FilterHandler {...otherProps} filter={filter} label={data[groupLabel]}>\n {children}\n </FilterHandler>\n </>\n );\n })}\n </>\n );\n};\n\nexport default GroupedReferenceHandler;\n","import React from 'react';\nimport { ImageField as RaImageField } from 'react-admin';\n\nconst ImageField = ({ record, source, ...otherProps }) => {\n // For the display, we need to have the URI in a src property\n if (typeof record === 'string') record = { [source]: record };\n return <RaImageField record={record} source={source} {...otherProps} />;\n};\n\nexport default ImageField;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput, useResourceContext } from 'react-admin';\n\nconst ReferenceInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If a format prop was defined, apply it\n if (props.format) value = props.format(value);\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n }}\n />\n );\n};\n\nexport default ReferenceInput;\n","import { fetchUtils } from 'react-admin';\n\nconst httpClient = (url, options = {}) => {\n if (!options.headers) options.headers = new Headers();\n\n switch (options.method) {\n case 'POST':\n case 'PATCH':\n case 'PUT':\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n if (!options.headers.has('Content-Type')) options.headers.set('Content-Type', 'application/ld+json');\n break;\n\n case 'DELETE':\n break;\n\n case 'GET':\n default:\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n break;\n }\n\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n\n return fetchUtils.fetchJson(url, options);\n};\n\nexport default httpClient;\n"],"names":["ReferenceArrayField","record","source","otherProps","Array","isArray","map","i","id","React","RaReferenceArrayField","defaultProps","addLabel","ReferenceField","_typeof","RaReferenceField","FilterHandler","children","filter","useState","filtered","setFiltered","useEffect","filteredData","r","eq","key","value","includes","newRecord","length","undefined","Children","child","cloneElement","ReferenceArrayInput","props","resource","useResourceContext","RaReferenceArrayInput","format","v","useReferenceInputStyles","makeStyles","form","display","input","paddingRight","useHideInputStyles","root","generateSparqlVarName","predicate","split","s","toUpperCase","slice","join","getEmbedFrame","paths","predicates","embedFrame","path","reverse","reduce","accumulator","buildSparqlQuery","types","params","dereference","ontologies","searchWhereQuery","filterWhereQuery","q","toLowerCase","Object","keys","forEach","object","startsWith","dereferenceQuery","queries","flattenedPredicates","acc","flattenPredicate","parent","matches","entries","varName","parentVarName","groupKey","push","construct","values","groupedQueries","where","buildDereferenceQuery","ontology","prefix","url","getPrefixRdf","createSlug","require","buildJsonContext","pattern","isFile","o","rawFile","File","RaDateTimeInput","replace","groupReference","groupLabel","groupHeader","filterProperty","data","useQueryWithStore","type","payload","index","group","label","RaImageField","RaReferenceInput","reificationClass","flexFormClasses","hideInputStyles","ArrayInput","SimpleFormIterator","classes","className","TextInput","initialValue","sparqlEndpoint","httpClient","resources","jsonContext","uploadsContainerUri","returnFailedResources","uploadFile","Error","method","body","headers","Headers","Slug","fileName","name","fileExtension","splitFileName","pop","lang","response","status","get","uploadAllFiles","property","hasOwnProperty","ExecuteSparql","resourceId","sparqlQuery","json","frame","jsonld","omitGraph","compactJson","total","returnData","item","sort","a","b","field","order","localeCompare","pagination","page","perPage","getList","fetchContainer","containerUri","resourceType","some","k","first","result","listProperty","find","p","totalItems","getOne","dataModel","compact","forceArray","forceArrayItem","getMany","ids","getManyReference","target","create","slugField","set","f","JSON","stringify","responseHeaders","resourceUri","update","updateMany","deleteMany","options","has","token","localStorage","getItem","fetchUtils","fetchJson"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -1,2 +1,2 @@
1
- import e,{useState as r,useEffect as t}from"react";import{ImageField as n,ReferenceArrayField as a,ReferenceField as o,useQueryWithStore as i,DateTimeInput as c,useResourceContext as u,ReferenceArrayInput as s,ReferenceInput as l,ArrayInput as f,SimpleFormIterator as p,TextInput as d,fetchUtils as y}from"react-admin";import{makeStyles as m}from"@material-ui/core/styles";import h from"jsonld";function b(e){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(e,r,t,n,a,o,i){try{var c=e[o](i),u=c.value}catch(e){return void t(e)}c.done?r(u):Promise.resolve(u).then(n,a)}function g(e){return function(){var r=this,t=arguments;return new Promise((function(n,a){var o=e.apply(r,t);function i(e){v(o,n,a,i,c,"next",e)}function c(e){v(o,n,a,i,c,"throw",e)}i(void 0)}))}}function x(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function j(){return(j=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function w(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function O(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?w(Object(t),!0).forEach((function(r){x(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):w(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function E(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function A(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,a=!1,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(n=(i=c.next()).done)&&(t.push(i.value),!r||t.length!==r);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(a)throw o}}return t}(e,r)||k(e,r)||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 k(e,r){if(e){if("string"==typeof e)return R(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?R(e,r):void 0}}function R(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function S(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=k(e))){var r=0,t=function(){};return{s:t,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,a,o=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}var P=function(r){var t=r.record,a=r.source,o=E(r,["record","source"]);return"string"==typeof t&&(t=x({},a,t)),e.createElement(n,j({record:t,source:a},o))},T=function(r){var t=r.record,n=r.source,o=E(r,["record","source"]);return(null==t?void 0:t[n])&&(Array.isArray(t[n])||(t[n]=[t[n]]),t[n]=t[n].map((function(e){return e["@id"]||e.id||e}))),e.createElement(a,j({record:t,source:n},o))};T.defaultProps={addLabel:!0};var I=function(r){var t=r.record,n=r.source,a=E(r,["record","source"]);return t[n]&&"object"===b(t[n])&&(t[n]=t[n]["@id"]||t[n].id),e.createElement(o,j({record:t,source:n},a))};I.defaultProps={addLabel:!0};var C=function(n){var a=n.children,o=n.record,i=n.filter,c=n.source,u=E(n,["children","record","filter","source"]),s=A(r(),2),l=s[0],f=s[1];return t((function(){if(o&&c&&Array.isArray(null==o?void 0:o[c])){var e=null==o?void 0:o[c].filter((function(e){var r=!0;for(var t in i){var n=e[t];Array.isArray(n)?n.includes(i[t])||(r=!1):n!==i[t]&&(r=!1)}return r})),r=O({},o);r[c]=e.length>0?e:void 0,f(r)}}),[o,c,i]),e.createElement(e.Fragment,null,e.Children.map(a,(function(r,t){return e.cloneElement(r,O(O({},u),{},{record:l,addLabel:!0,source:c}))})))},F=function(r){var t=r.children,n=r.groupReference,a=r.groupLabel,o=r.groupHeader,c=r.filterProperty,u=E(r,["children","groupReference","groupLabel","groupHeader","filterProperty"]),s=i({type:"getList",resource:n,payload:{}}).data;return e.createElement(e.Fragment,null,null==s?void 0:s.map((function(r,n){var i={};return i[c]=r.id,e.createElement(e.Fragment,null,o&&o(O(O({},u),{},{group:r})),e.createElement(C,j({},u,{filter:i,label:r[a]}),t))})))},L=function(r){return e.createElement(c,j({},r,{format:function(e){return e&&e.replace(" ","T").replace("Z","")}}))},U=function(r){var t=u({});return e.createElement(s,j({},r,{resource:t,format:function(e){return e?(Array.isArray(e)||(e=[e]),r.format&&(e=r.format(e)),e.map((function(e){return"object"===b(e)?e.id||e["@id"]:e}))):e}}))},N=function(r){var t=u({});return e.createElement(l,j({},r,{resource:t,format:function(e){return e?(r.format&&(e=r.format(e)),"object"===b(e)?e.id||e["@id"]:e):e}}))},q=m({form:{display:"flex"},input:{paddingRight:"20px"}}),H=m({root:{display:"none"}}),M=function(r){var t=r.reificationClass,n=(r.children,E(r,["reificationClass","children"])),a=q(),o=H();return e.createElement(f,n,e.createElement(p,{classes:{form:a.form}},e.Children.map(r.children,(function(r,t){return e.cloneElement(r,{className:a.input})})),e.createElement(d,{className:o.root,source:"type",initialValue:t})))},D=function(e){return e.split(":").map((function(e){return e[0].toUpperCase()+e.slice(1)})).join("")},J=function(e){var r,t={};if(e){var n,a=S(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;r=o.includes("/")?o.split("/").reverse():[o],t=O(O({},t),r.reduce((function(e,r){return x({},r,O({"@embed":"@last"},e))}),{}))}}catch(e){a.e(e)}finally{a.f()}return t}},W=function(e){var r=e.types,t=e.params.filter,n=e.dereference,a=e.ontologies,o="";t&&(t.q&&t.q.length>0&&(o+='\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), "'.concat(t.q.toLowerCase(),'")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n '),delete t.q),Object.keys(t).forEach((function(e){if(t[e]){var r=t[e].startsWith("http")?"<".concat(t[e],">"):t[e];o+="?s1 ".concat(e," ").concat(r," .")}})));var i=function(e){var r=[];if(e)for(var t=e.reduce((function(e,r){return function e(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"root";if(t.includes("/")){var a=t.split(/\/(.+)/);r[a[0]]=n,e(r,a[1],a[0])}else r[t]=n;return r}(e,r)}),{}),n=0,a=Object.entries(t);n<a.length;n++){var o=A(a[n],2),i=o[0],c=o[1],u=D(i),s="root"===c?"1":D(c),l="root"===c?i:c;r[l]||(r[l]=[]),r[l].push("\n ?s".concat(s," ").concat(i," ?s").concat(u," .\n ?s").concat(u," ?p").concat(u," ?o").concat(u," .\n "))}return{construct:Object.values(r).map((function(e){return Object.values(e).join("\n")})).join("\n"),where:Object.values(r).map((function(e){return"OPTIONAL { ".concat(Object.values(e).join("\n")," }")})).join("\n")}}(n);return"\n ".concat(function(e){return e.map((function(e){return"PREFIX ".concat(e.prefix,": <").concat(e.url,">")})).join("\n")}(a),"\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ").concat(i.construct,"\n }\n WHERE {\n ?s1 a ?type .\n FILTER( ?type IN (").concat(r.join(", "),") ) .\n FILTER( (isIRI(?s1)) ) .\n ").concat(o,"\n ").concat(i.where,"\n ?s1 ?p2 ?o2 .\n }\n ")},G=require("speakingurl"),X=function(e){var r={};return e.forEach((function(e){return r[e.prefix]=e.url})),r},z=function(e){return e&&e.rawFile&&e.rawFile instanceof File},B=function(e){var r,t,n,a,o,i,c=e.sparqlEndpoint,u=e.httpClient,s=e.resources,l=e.ontologies,f=e.jsonContext,p=e.uploadsContainerUri,d=e.returnFailedResources,y=void 0!==d&&d,m=function(){var e=g(regeneratorRuntime.mark((function e(r){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(p){e.next=2;break}throw new Error("No uploadsContainerUri defined for the data provider");case 2:return e.next=4,u(p,{method:"POST",body:r,headers:new Headers({Slug:(n=r.name,a=void 0,o=void 0,a="",o=n.split("."),o.length>1&&(a=o.pop(),n=o.join(".")),G(n,{lang:"fr"})+"."+a),"Content-Type":r.type})});case 4:if(201!==(t=e.sent).status){e.next=7;break}return e.abrupt("return",t.headers.get("Location"));case 7:case"end":return e.stop()}var n,a,o}),e)})));return function(r){return e.apply(this,arguments)}}(),v=function(){var e=g(regeneratorRuntime.mark((function e(r){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=regeneratorRuntime.keys(r);case 1:if((e.t1=e.t0()).done){e.next=22;break}if(t=e.t1.value,!r.hasOwnProperty(t)){e.next=20;break}if(!Array.isArray(r[t])){e.next=16;break}n=0;case 6:if(!(n<r[t].length)){e.next=14;break}if(!z(r[t][n])){e.next=11;break}return e.next=10,m(r[t][n].rawFile);case 10:r[t][n]=e.sent;case 11:n++,e.next=6;break;case 14:e.next=20;break;case 16:if(!z(r[t])){e.next=20;break}return e.next=19,m(r[t].rawFile);case 19:r[t]=e.sent;case 20:e.next=1;break;case 22:return e.abrupt("return",r);case 23:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}();return{getList:(i=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,p,d,y,m,b,v,g,x,j;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s[r],!t.id&&!t["@id"]&&s[r].types){e.next=26;break}return n=t.id||t["@id"]||s[r].containerUri,e.next=5,u(n);case 5:if(a=e.sent,o=a.json,w="ldp:Container",k=void 0,k=(E=o).type||E["@type"],!(Array.isArray(k)?k.includes(w):k===w)){e.next=14;break}return i=o["ldp:contains"].map((function(e){return e.id=e.id||e["@id"],e})),t.filter&&(t.filter.q&&delete t.filter.q,Object.keys(t.filter).length>0&&(i=i.filter((function(e){return Object.entries(t.filter).some((function(r){var t=A(r,2),n=t[0],a=t[1];return Array.isArray(e[n])?e[n].includes(a):e[n]===a}))})))),t.pagination&&(i=i.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:i,total:o["ldp:contains"].length});case 14:if(!o.first){e.next=19;break}return e.next=17,u(o.first);case 17:p=e.sent,o=p.json;case 19:if(d=["as:orderedItems","orderedItems","as:items","items"].find((function(e){return o[e]}))){e.next=22;break}return e.abrupt("return",{data:[],total:0});case 22:return y=o[d].map((function(e){return e.id=e.id||e["@id"],e})),e.abrupt("return",{data:y,total:o.totalItems});case 24:e.next=43;break;case 26:return m=W({types:s[r].types,params:O(O({},t),{},{filter:O(O({},s[r].filter),t.filter)}),dereference:s[r].dereference,ontologies:l}),e.next=29,u(c,{method:"POST",body:m});case 29:return b=e.sent,v=b.json,g=O({"@context":f||X(l),"@type":s[r].types,"@embed":"@never"},J(s[r].dereference)),e.next=34,h.frame(v,g,{omitGraph:!1});case 34:if(x=e.sent,1!==Object.keys(x).length){e.next=39;break}return e.abrupt("return",{data:[],total:0});case 39:return j=x["@graph"].map((function(e){return e.id=e.id||e["@id"],e})),t.sort&&(j=j.sort((function(e,r){return!(t.sort&&e[t.sort.field]&&r[t.sort.field])||("ASC"===t.sort.order?e[t.sort.field].localeCompare(r[t.sort.field]):r[t.sort.field].localeCompare(e[t.sort.field]))}))),t.pagination&&(j=j.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:j,total:x["@graph"].length});case 43:case"end":return e.stop()}var w,E,k}),e)}))),function(e,r){return i.apply(this,arguments)}),getOne:(o=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,p,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s[r],n=s[r],e.next=4,u(t.id);case 4:return a=e.sent,(o=a.json).id=o.id||o["@id"],e.next=9,h.compact(o,f||X(l));case 9:if(i=e.sent,n.forceArray){c=S(n.forceArray);try{for(c.s();!(p=c.n()).done;)d=p.value,i[d]&&!Array.isArray(i[d])&&(i[d]=[i[d]])}catch(e){c.e(e)}finally{c.f()}}return e.abrupt("return",{data:i});case 12:case"end":return e.stop()}}),e)}))),function(e,r){return o.apply(this,arguments)}),getMany:(a=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=S(t.ids),e.prev=2,a.s();case 4:if((o=a.n()).done){e.next=21;break}return i="object"===b(i=o.value)?i["@id"]:i,e.prev=7,e.next=10,u(i);case 10:c=e.sent,(s=c.json).id=i,n.push(s),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(7),y&&n.push({id:i});case 19:e.next=4;break;case 21:e.next=26;break;case 23:e.prev=23,e.t1=e.catch(2),a.e(e.t1);case 26:return e.prev=26,a.f(),e.finish(26);case 29:return e.abrupt("return",{data:n});case 30:case"end":return e.stop()}}),e,null,[[2,23,26,29],[7,16]])}))),function(e,r){return a.apply(this,arguments)}),getManyReference:function(e,r){throw new Error("getManyReference is not implemented yet")},create:(n=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,p,d,y,m,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s[r],n=s[r],a=n.slugField,o=n.containerUri,i=n.types,c=new Headers,a&&c.set("Slug",Array.isArray(a)?a.map((function(e){return t.data[e]})).join(" "):t.data[a]),e.next=6,v(t.data);case 6:return t.data=e.sent,e.next=9,u(o,{method:"POST",headers:c,body:JSON.stringify(O({"@context":f||X(l),"@type":i},t.data))});case 9:return p=e.sent,d=p.headers,y=d.get("Location"),e.next=14,u(y);case 14:return m=e.sent,(h=m.json).id=h.id||h["@id"],e.abrupt("return",{data:h});case 18:case"end":return e.stop()}}),e)}))),function(e,r){return n.apply(this,arguments)}),update:(t=g(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,v(t.data);case 2:return t.data=e.sent,e.next=5,u(t.id,{method:"PUT",body:JSON.stringify(O({"@context":f||X(l)},t.data))});case 5:return e.abrupt("return",{data:t.data});case 6:case"end":return e.stop()}}),e)}))),function(e,r){return t.apply(this,arguments)}),updateMany:function(e,r){throw new Error("updateMany is not implemented yet")},delete:(r=g(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u(t.id,{method:"DELETE"});case 2:return e.abrupt("return",{data:{id:t.id}});case 3:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)}),deleteMany:function(e,r){throw new Error("deleteMany is not implemented yet")}}},V=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(r.headers||(r.headers=new Headers),r.method){case"POST":case"PATCH":case"PUT":r.headers.has("Accept")||r.headers.set("Accept","application/ld+json"),r.headers.has("Content-Type")||r.headers.set("Content-Type","application/ld+json");break;case"DELETE":break;case"GET":default:r.headers.has("Accept")||r.headers.set("Accept","application/ld+json")}var t=localStorage.getItem("token");return t&&r.headers.set("Authorization","Bearer ".concat(t)),y.fetchJson(e,r)};export{L as DateTimeInput,C as FilterHandler,F as GroupedReferenceHandler,P as ImageField,T as ReferenceArrayField,U as ReferenceArrayInput,I as ReferenceField,N as ReferenceInput,M as ReificationArrayInput,T as UriArrayField,U as UriArrayInput,B as dataProvider,V as httpClient};
1
+ import e,{useState as r,useEffect as t}from"react";import{ImageField as n,ReferenceArrayField as a,ReferenceField as o,useQueryWithStore as i,DateTimeInput as c,useResourceContext as u,ReferenceArrayInput as s,ReferenceInput as f,ArrayInput as l,SimpleFormIterator as p,TextInput as d,fetchUtils as m}from"react-admin";import{makeStyles as y}from"@material-ui/core/styles";import h from"jsonld";function v(e){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function b(e,r,t,n,a,o,i){try{var c=e[o](i),u=c.value}catch(e){return void t(e)}c.done?r(u):Promise.resolve(u).then(n,a)}function g(e){return function(){var r=this,t=arguments;return new Promise((function(n,a){var o=e.apply(r,t);function i(e){b(o,n,a,i,c,"next",e)}function c(e){b(o,n,a,i,c,"throw",e)}i(void 0)}))}}function x(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function w(){return(w=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function j(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function O(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?j(Object(t),!0).forEach((function(r){x(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function E(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function k(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var t=[],n=!0,a=!1,o=void 0;try{for(var i,c=e[Symbol.iterator]();!(n=(i=c.next()).done)&&(t.push(i.value),!r||t.length!==r);n=!0);}catch(e){a=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(a)throw o}}return t}(e,r)||A(e,r)||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 A(e,r){if(e){if("string"==typeof e)return R(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?R(e,r):void 0}}function R(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function S(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=A(e))){var r=0,t=function(){};return{s:t,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,a,o=!0,i=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(i)throw a}}}}var P=function(r){var t=r.record,a=r.source,o=E(r,["record","source"]);return"string"==typeof t&&(t=x({},a,t)),e.createElement(n,w({record:t,source:a},o))},T=function(r){var t=r.record,n=r.source,o=E(r,["record","source"]);return(null==t?void 0:t[n])&&(Array.isArray(t[n])||(t[n]=[t[n]]),t[n]=t[n].map((function(e){return e["@id"]||e.id||e}))),e.createElement(a,w({record:t,source:n},o))};T.defaultProps={addLabel:!0};var C=function(r){var t=r.record,n=r.source,a=E(r,["record","source"]);return t[n]&&"object"===v(t[n])&&(t[n]=t[n]["@id"]||t[n].id),e.createElement(o,w({record:t,source:n},a))};C.defaultProps={addLabel:!0};var I=function(n){var a=n.children,o=n.record,i=n.filter,c=n.source,u=E(n,["children","record","filter","source"]),s=k(r(),2),f=s[0],l=s[1];return t((function(){if(o&&c&&Array.isArray(null==o?void 0:o[c])){var e=null==o?void 0:o[c].filter((function(e){var r=!0;for(var t in i){var n=e[t];Array.isArray(n)?n.includes(i[t])||(r=!1):n!==i[t]&&(r=!1)}return r})),r=O({},o);r[c]=e.length>0?e:void 0,l(r)}}),[o,c,i]),e.createElement(e.Fragment,null,e.Children.map(a,(function(r,t){return e.cloneElement(r,O(O({},u),{},{record:f,addLabel:!0,source:c}))})))},F=function(r){var t=r.children,n=r.groupReference,a=r.groupLabel,o=r.groupHeader,c=r.filterProperty,u=E(r,["children","groupReference","groupLabel","groupHeader","filterProperty"]),s=i({type:"getList",resource:n,payload:{}}).data;return e.createElement(e.Fragment,null,null==s?void 0:s.map((function(r,n){var i={};return i[c]=r.id,e.createElement(e.Fragment,null,o&&o(O(O({},u),{},{group:r})),e.createElement(I,w({},u,{filter:i,label:r[a]}),t))})))},L=function(r){return e.createElement(c,w({},r,{format:function(e){return e&&e.replace(" ","T").replace("Z","")}}))},U=function(r){var t=u({});return e.createElement(s,w({},r,{resource:t,format:function(e){return e?(Array.isArray(e)||(e=[e]),r.format&&(e=r.format(e)),e.map((function(e){return"object"===v(e)?e.id||e["@id"]:e}))):e}}))},N=function(r){var t=u({});return e.createElement(f,w({},r,{resource:t,format:function(e){return e?(r.format&&(e=r.format(e)),"object"===v(e)?e.id||e["@id"]:e):e}}))},q=y({form:{display:"flex"},input:{paddingRight:"20px"}}),D=y({root:{display:"none"}}),H=function(r){var t=r.reificationClass,n=(r.children,E(r,["reificationClass","children"])),a=q(),o=D();return e.createElement(l,n,e.createElement(p,{classes:{form:a.form}},e.Children.map(r.children,(function(r,t){return e.cloneElement(r,{className:a.input})})),e.createElement(d,{className:o.root,source:"type",initialValue:t})))},M=function(e){return e.split(":").map((function(e){return e[0].toUpperCase()+e.slice(1)})).join("")},J=function(e){var r,t={};if(e){var n,a=S(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;r=o.includes("/")?o.split("/").reverse():[o],t=O(O({},t),r.reduce((function(e,r){return x({},r,O({"@embed":"@last"},e))}),{}))}}catch(e){a.e(e)}finally{a.f()}return t}},W=function(e){var r=e.types,t=e.params.filter,n=e.dereference,a=e.ontologies,o="",i="";t&&(t.q&&t.q.length>0&&(o+='\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), "'.concat(t.q.toLowerCase(),'")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n '),delete t.q),Object.keys(t).forEach((function(e){if(t[e]){var r=t[e].startsWith("http")?"<".concat(t[e],">"):t[e];i+="?s1 ".concat(e," ").concat(r," .")}})));var c=function(e){var r=[];if(e)for(var t=e.reduce((function(e,r){return function e(r,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"root";if(t.includes("/")){var a=t.split(/\/(.+)/);r[a[0]]=n,e(r,a[1],a[0])}else r[t]=n;return r}(e,r)}),{}),n=0,a=Object.entries(t);n<a.length;n++){var o=k(a[n],2),i=o[0],c=o[1],u=M(i),s="root"===c?"1":M(c),f="root"===c?i:c;r[f]||(r[f]=[]),r[f].push("\n ?s".concat(s," ").concat(i," ?s").concat(u," .\n ?s").concat(u," ?p").concat(u," ?o").concat(u," .\n "))}return{construct:Object.values(r).map((function(e){return Object.values(e).join("\n")})).join("\n"),where:Object.values(r).map((function(e){return"OPTIONAL { ".concat(Object.values(e).join("\n")," }")})).join("\n")}}(n);return"\n ".concat(function(e){return e.map((function(e){return"PREFIX ".concat(e.prefix,": <").concat(e.url,">")})).join("\n")}(a),"\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ").concat(c.construct,"\n }\n WHERE {\n ").concat(i,"\n ?s1 a ?type .\n FILTER( ?type IN (").concat(r.join(", "),") ) .\n FILTER( (isIRI(?s1)) ) .\n ").concat(o,"\n ").concat(c.where,"\n ?s1 ?p2 ?o2 .\n }\n ")},G=require("speakingurl"),X=function(e){var r={};return e.forEach((function(e){return r[e.prefix]=e.url})),r},z=function(e){return e&&e.rawFile&&e.rawFile instanceof File},B=function(e){var r,t,n,a,o,i,c,u,s=e.sparqlEndpoint,f=e.httpClient,l=e.resources,p=e.ontologies,d=e.jsonContext,m=e.uploadsContainerUri,y=e.returnFailedResources,b=void 0!==y&&y,w=function(){var e=g(regeneratorRuntime.mark((function e(r){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(m){e.next=2;break}throw new Error("No uploadsContainerUri defined for the data provider");case 2:return e.next=4,f(m,{method:"POST",body:r,headers:new Headers({Slug:(n=r.name,a=void 0,o=void 0,a="",o=n.split("."),o.length>1&&(a=o.pop(),n=o.join(".")),G(n,{lang:"fr"})+"."+a),"Content-Type":r.type})});case 4:if(201!==(t=e.sent).status){e.next=7;break}return e.abrupt("return",t.headers.get("Location"));case 7:case"end":return e.stop()}var n,a,o}),e)})));return function(r){return e.apply(this,arguments)}}(),j=function(){var e=g(regeneratorRuntime.mark((function e(r){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=regeneratorRuntime.keys(r);case 1:if((e.t1=e.t0()).done){e.next=22;break}if(t=e.t1.value,!r.hasOwnProperty(t)){e.next=20;break}if(!Array.isArray(r[t])){e.next=16;break}n=0;case 6:if(!(n<r[t].length)){e.next=14;break}if(!z(r[t][n])){e.next=11;break}return e.next=10,w(r[t][n].rawFile);case 10:r[t][n]=e.sent;case 11:n++,e.next=6;break;case 14:e.next=20;break;case 16:if(!z(r[t])){e.next=20;break}return e.next=19,w(r[t].rawFile);case 19:r[t]=e.sent;case 20:e.next=1;break;case 22:return e.abrupt("return",r);case 23:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}(),E=function(){var e=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=W({types:l[r].types,params:O(O({},t),{},{filter:O(O({},l[r].filter),t.filter)}),dereference:l[r].dereference,ontologies:p}),e.next=3,f(s,{method:"POST",body:n});case 3:return a=e.sent,o=a.json,i=O({"@context":d||X(p),"@type":l[r].types,"@embed":"@never"},J(l[r].dereference)),e.next=8,h.frame(o,i,{omitGraph:!1});case 8:if(c=e.sent,1!==Object.keys(c).length){e.next=13;break}return e.abrupt("return",{data:[],total:0});case 13:return u=c["@graph"].map((function(e){return e.id=e.id||e["@id"],e})),t.sort&&(u=u.sort((function(e,r){return!e[t.sort.field]||!r[t.sort.field]||("ASC"===t.sort.order?e[t.sort.field].localeCompare(r[t.sort.field]):r[t.sort.field].localeCompare(e[t.sort.field]))}))),t.pagination&&(u=u.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:u,total:c["@graph"].length});case 17:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}();return{getList:(u=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l[r],!(t.id||t["@id"]||l[r].fetchContainer)){e.next=27;break}return n=t.id||t["@id"]||l[r].containerUri,e.next=5,f(n);case 5:if(a=e.sent,o=a.json,p="ldp:Container",m=void 0,m=(d=o).type||d["@type"],!(Array.isArray(m)?m.includes(p):m===p)){e.next=15;break}return i=o["ldp:contains"].map((function(e){return e.id=e.id||e["@id"],e})),t.filter&&(t.filter.q&&delete t.filter.q,Object.keys(t.filter).length>0&&(i=i.filter((function(e){return Object.entries(t.filter).some((function(r){var t=k(r,2),n=t[0],a=t[1];return Array.isArray(e[n])?e[n].includes(a):e[n]===a}))})))),t.sort&&(i=i.sort((function(e,r){return!e[t.sort.field]||!r[t.sort.field]||("ASC"===t.sort.order?e[t.sort.field].localeCompare(r[t.sort.field]):r[t.sort.field].localeCompare(e[t.sort.field]))}))),t.pagination&&(i=i.slice((t.pagination.page-1)*t.pagination.perPage,t.pagination.page*t.pagination.perPage)),e.abrupt("return",{data:i,total:o["ldp:contains"].length});case 15:if(!o.first){e.next=20;break}return e.next=18,f(o.first);case 18:c=e.sent,o=c.json;case 20:if(u=["as:orderedItems","orderedItems","as:items","items"].find((function(e){return o[e]}))){e.next=23;break}return e.abrupt("return",{data:[],total:0});case 23:return s=o[u].map((function(e){return e.id=e.id||e["@id"],e})),e.abrupt("return",{data:s,total:o.totalItems});case 25:e.next=30;break;case 27:return e.next=29,E(r,t);case 29:return e.abrupt("return",e.sent);case 30:case"end":return e.stop()}var p,d,m}),e)}))),function(e,r){return u.apply(this,arguments)}),getOne:(c=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l[r],n=l[r],e.next=4,f(t.id);case 4:return a=e.sent,(o=a.json).id=o.id||o["@id"],e.next=9,h.compact(o,d||X(p));case 9:if(i=e.sent,n.forceArray){c=S(n.forceArray);try{for(c.s();!(u=c.n()).done;)s=u.value,i[s]&&!Array.isArray(i[s])&&(i[s]=[i[s]])}catch(e){c.e(e)}finally{c.f()}}return e.abrupt("return",{data:i});case 12:case"end":return e.stop()}}),e)}))),function(e,r){return c.apply(this,arguments)}),getMany:(i=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=S(t.ids),e.prev=2,a.s();case 4:if((o=a.n()).done){e.next=21;break}return i="object"===v(i=o.value)?i["@id"]:i,e.prev=7,e.next=10,f(i);case 10:c=e.sent,(u=c.json).id=i,n.push(u),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(7),b&&n.push({id:i});case 19:e.next=4;break;case 21:e.next=26;break;case 23:e.prev=23,e.t1=e.catch(2),a.e(e.t1);case 26:return e.prev=26,a.f(),e.finish(26);case 29:return e.abrupt("return",{data:n});case 30:case"end":return e.stop()}}),e,null,[[2,23,26,29],[7,16]])}))),function(e,r){return i.apply(this,arguments)}),getManyReference:(o=g(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.filter=O(O({},t.filter),{},x({},t.target,t.id)),e.next=3,E(r,t);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e)}))),function(e,r){return o.apply(this,arguments)}),create:(a=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i,c,u,s,m,y,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l[r],n=l[r],a=n.slugField,o=n.containerUri,i=n.types,c=new Headers,a&&c.set("Slug",Array.isArray(a)?a.map((function(e){return t.data[e]})).join(" "):t.data[a]),e.next=6,j(t.data);case 6:return t.data=e.sent,e.next=9,f(o,{method:"POST",headers:c,body:JSON.stringify(O({"@context":d||X(p),"@type":i},t.data))});case 9:return u=e.sent,s=u.headers,m=s.get("Location"),e.next=14,f(m);case 14:return y=e.sent,(h=y.json).id=h.id||h["@id"],e.abrupt("return",{data:h});case 18:case"end":return e.stop()}}),e)}))),function(e,r){return a.apply(this,arguments)}),update:(n=g(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,j(t.data);case 2:return t.data=e.sent,e.next=5,f(t.id,{method:"PUT",body:JSON.stringify(O({"@context":d||X(p)},t.data))});case 5:return e.abrupt("return",{data:t.data});case 6:case"end":return e.stop()}}),e)}))),function(e,r){return n.apply(this,arguments)}),updateMany:function(e,r){throw new Error("updateMany is not implemented yet")},delete:(t=g(regeneratorRuntime.mark((function e(r,t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f(t.id,{method:"DELETE"});case 2:return e.abrupt("return",{data:{id:t.id}});case 3:case"end":return e.stop()}}),e)}))),function(e,r){return t.apply(this,arguments)}),deleteMany:(r=g(regeneratorRuntime.mark((function e(r,t){var n,a,o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=[],a=S(t.ids),e.prev=2,a.s();case 4:if((o=a.n()).done){e.next=16;break}return i=o.value,e.prev=6,e.next=9,f(i,{method:"DELETE"});case 9:n.push(i),e.next=14;break;case 12:e.prev=12,e.t0=e.catch(6);case 14:e.next=4;break;case 16:e.next=21;break;case 18:e.prev=18,e.t1=e.catch(2),a.e(e.t1);case 21:return e.prev=21,a.f(),e.finish(21);case 24:return e.abrupt("return",{data:n});case 25:case"end":return e.stop()}}),e,null,[[2,18,21,24],[6,12]])}))),function(e,t){return r.apply(this,arguments)})}},V=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(r.headers||(r.headers=new Headers),r.method){case"POST":case"PATCH":case"PUT":r.headers.has("Accept")||r.headers.set("Accept","application/ld+json"),r.headers.has("Content-Type")||r.headers.set("Content-Type","application/ld+json");break;case"DELETE":break;case"GET":default:r.headers.has("Accept")||r.headers.set("Accept","application/ld+json")}var t=localStorage.getItem("token");return t&&r.headers.set("Authorization","Bearer ".concat(t)),m.fetchJson(e,r)};export{L as DateTimeInput,I as FilterHandler,F as GroupedReferenceHandler,P as ImageField,T as ReferenceArrayField,U as ReferenceArrayInput,C as ReferenceField,N as ReferenceInput,H as ReificationArrayInput,T as UriArrayField,U as UriArrayInput,B as dataProvider,V as httpClient};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/fields/ImageField.js","../src/fields/ReferenceArrayField.js","../src/fields/ReferenceField.js","../src/dataHandling/FilterHandler.js","../src/dataHandling/GroupedReferenceHandler.js","../src/inputs/DateTimeInput.js","../src/inputs/ReferenceArrayInput.js","../src/inputs/ReferenceInput.js","../src/inputs/ReificationArrayInput.js","../src/dereference.js","../src/buildSparqlQuery.js","../src/dataProvider.js","../src/httpClient.js"],"sourcesContent":["import React from 'react';\nimport { ImageField as RaImageField } from 'react-admin';\n\nconst ImageField = ({ record, source, ...otherProps }) => {\n // For the display, we need to have the URI in a src property\n if (typeof record === 'string') record = { [source]: record };\n return <RaImageField record={record} source={source} {...otherProps} />;\n};\n\nexport default ImageField;\n","import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField } from 'react-admin';\n\nconst ReferenceArrayField = ({ record, source, ...otherProps }) => {\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return <RaReferenceArrayField record={record} source={source} {...otherProps} />;\n};\n\nReferenceArrayField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField } from 'react-admin';\n\nconst ReferenceField = ({ record, source, ...otherProps }) => {\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return <RaReferenceField record={record} source={source} {...otherProps} />;\n};\n\nReferenceField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceField;\n","import React, { useState, useEffect } from 'react';\nimport { ArrayField } from 'react-admin';\n\n/**\n * @example\n * <Show>\n * <FilterHandler\n * source=\"property\" // ex pair:organizationOfMembership\n * filter={{\n * 'propertyToFilter':'value'\n * }} // ex {{'pair:membershipRole':'http://localhost:3000/membership-roles/role-1'}}\n * >\n * <SingleFieldList>\n * </SingleFieldList>\n * </FilterHandler>\n * </Show>\n */\n\nconst FilterHandler = ({ children, record, filter, source, ...otherProps }) => {\n const [filtered, setFiltered] = useState();\n useEffect(() => {\n if (record && source && Array.isArray(record?.[source])) {\n const filteredData = record?.[source].filter(r => {\n let eq = true;\n for (const key in filter) {\n const value = r[key];\n if (Array.isArray(value)) {\n if (!value.includes(filter[key])) {\n eq = false;\n }\n } else {\n if (value !== filter[key]) {\n eq = false;\n }\n }\n }\n return eq;\n });\n let newRecord = {\n ...record\n };\n //undefined setted if no data to obtain no render in RightLabel or equivalent\n newRecord[source] = filteredData.length > 0 ? filteredData : undefined;\n setFiltered(newRecord);\n }\n }, [record, source, filter]);\n\n return (\n <>\n {React.Children.map(children, (child, i) => {\n return React.cloneElement(child, {\n ...otherProps,\n record: filtered,\n addLabel: true,\n source\n });\n })}\n </>\n );\n};\nexport default FilterHandler;\n","import React from 'react';\nimport { useQueryWithStore } from 'react-admin';\nimport { default as FilterHandler } from './FilterHandler';\n\n/*\n * @example Label used in examples\n * const Label = ({label, ...otherProps})=>{\n * return <h2>{label}</h2>\n * }\n *\n * @example show header for each group with group property thanks to groupHeader\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupHeader={({group,...otherProps}) => <Label {...otherProps} label={group['pair:label']}></Label> }\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example call chhildren with label thanks to groupLabel\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example conditional show of group if no data in source. Conditionale groupHeader is not possible because GroupedArrayField define group before filter ; need use chhildren.\n * const ConditionalSourceDefinedHandler = ({record,source,children,...otherProps})=>{\n * if (record?.[source] && (!Array.isArray(record[source])||record[source].length>0)){\n * return React.Children.map(children, (child, i) => {\n * return React.cloneElement(child, {...otherProps,record,source});\n * })\n * }else{\n * return <></>\n * }\n * }\n *\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ConditionalSourceDefinedHandler>\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </ConditionalSourceDefinedHandler>\n * </GroupedReferenceHandler>\n *\n *\n */\nconst GroupedReferenceHandler = ({\n children,\n groupReference,\n groupLabel,\n groupHeader,\n filterProperty,\n ...otherProps\n}) => {\n const { data } = useQueryWithStore({\n type: 'getList',\n resource: groupReference,\n payload: {}\n });\n\n return (\n <>\n {data?.map((data, index) => {\n let filter = {};\n filter[filterProperty] = data.id;\n return (\n <>\n {groupHeader && groupHeader({ ...otherProps, group: data })}\n <FilterHandler {...otherProps} filter={filter} label={data[groupLabel]}>\n {children}\n </FilterHandler>\n </>\n );\n })}\n </>\n );\n};\n\nexport default GroupedReferenceHandler;\n","import React from 'react';\nimport { DateTimeInput as RaDateTimeInput } from 'react-admin';\n\n/**\n * @deprecated Use the component from the @semapps/date-components instead\n */\nconst DateTimeInput = props => (\n <RaDateTimeInput {...props} format={value => value && value.replace(' ', 'T').replace('Z', '')} />\n);\n\nexport default DateTimeInput;\n","import React from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput, useResourceContext } from 'react-admin';\n\nconst ReferenceArrayInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceArrayInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // if the linked field value is not an array, turns it into an array.\n // Necessary as JSON-LD are sometimes arrays, sometimes not (when there is one value)\n // and the ReferenceArrayInput component only accept arrays\n if (!Array.isArray(value)) value = [value];\n // If a format prop was defined, apply it to the array\n if (props.format) value = props.format(value);\n // If the values are objects with @id field, turn it to a simple string\n return value.map(v => (typeof v === 'object' ? v.id || v['@id'] : v));\n }}\n />\n );\n};\n\nexport default ReferenceArrayInput;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput, useResourceContext } from 'react-admin';\n\nconst ReferenceInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If a format prop was defined, apply it\n if (props.format) value = props.format(value);\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n }}\n />\n );\n};\n\nexport default ReferenceInput;\n","import React, { useEffect, useState } from 'react';\nimport { ArrayInput, SimpleFormIterator, TextInput } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useReferenceInputStyles = makeStyles({\n form: {\n display: 'flex'\n },\n input: {\n paddingRight: '20px'\n }\n});\n\nconst useHideInputStyles = makeStyles({\n root: {\n display: 'none'\n }\n});\n\nconst ReificationArrayInput = props => {\n const { reificationClass, children, ...otherProps } = props;\n const flexFormClasses = useReferenceInputStyles();\n const hideInputStyles = useHideInputStyles();\n\n return (\n <ArrayInput {...otherProps}>\n <SimpleFormIterator classes={{ form: flexFormClasses.form }}>\n {React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n className: flexFormClasses.input\n });\n })}\n <TextInput className={hideInputStyles.root} source=\"type\" initialValue={reificationClass} />\n </SimpleFormIterator>\n </ArrayInput>\n );\n};\n\nexport default ReificationArrayInput;\n","// Return an object in the form of predicate => parentPredicate\nconst flattenPredicate = (accumulator, predicate, parent = 'root') => {\n if (predicate.includes('/')) {\n const matches = predicate.split(/\\/(.+)/);\n accumulator[matches[0]] = parent;\n flattenPredicate(accumulator, matches[1], matches[0]);\n } else {\n accumulator[predicate] = parent;\n }\n return accumulator;\n};\n\n// Transform ontology:predicate to OntologyPredicate in order to use it as a variable name\nconst generateSparqlVarName = predicate =>\n predicate\n .split(':')\n .map(s => s[0].toUpperCase() + s.slice(1))\n .join('');\n\nexport const buildDereferenceQuery = predicates => {\n let queries = [];\n\n if (predicates) {\n const flattenedPredicates = predicates.reduce((acc, predicate) => flattenPredicate(acc, predicate), {});\n\n for (const [predicate, parent] of Object.entries(flattenedPredicates)) {\n const varName = generateSparqlVarName(predicate);\n const parentVarName = parent === 'root' ? '1' : generateSparqlVarName(parent);\n\n // Group queries by parent, so that we can group WHERE triples in the same OPTIONAL tag\n const groupKey = parent === 'root' ? predicate : parent;\n if (!queries[groupKey]) queries[groupKey] = [];\n\n queries[groupKey].push(`\n ?s${parentVarName} ${predicate} ?s${varName} .\n ?s${varName} ?p${varName} ?o${varName} .\n `);\n }\n }\n\n return {\n construct: Object.values(queries)\n .map(groupedQueries => Object.values(groupedQueries).join('\\n'))\n .join('\\n'),\n where: Object.values(queries)\n .map(groupedQueries => `OPTIONAL { ${Object.values(groupedQueries).join('\\n')} }`)\n .join('\\n')\n };\n};\n\nexport const getEmbedFrame = paths => {\n let embedFrame = {},\n predicates;\n if (paths) {\n for (let path of paths) {\n if (path.includes('/')) {\n predicates = path.split('/').reverse();\n } else {\n predicates = [path];\n }\n embedFrame = {\n ...embedFrame,\n ...predicates.reduce(\n (accumulator, predicate) => ({\n [predicate]: {\n '@embed': '@last',\n ...accumulator\n }\n }),\n {}\n )\n };\n }\n return embedFrame;\n }\n};\n","import { buildDereferenceQuery } from './dereference';\n\nconst getPrefixRdf = ontologies => {\n return ontologies.map(ontology => `PREFIX ${ontology.prefix}: <${ontology.url}>`).join('\\n');\n};\n\nconst buildSparqlQuery = ({ types, params: { filter }, dereference, ontologies }) => {\n let whereQuery = '';\n\n if (filter) {\n if (filter.q && filter.q.length > 0) {\n whereQuery += `\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), \"${filter.q.toLowerCase()}\")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n `;\n delete filter.q;\n }\n Object.keys(filter).forEach(predicate => {\n if (filter[predicate]) {\n const object = filter[predicate].startsWith('http') ? `<${filter[predicate]}>` : filter[predicate];\n whereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const dereferenceQuery = buildDereferenceQuery(dereference);\n\n return `\n ${getPrefixRdf(ontologies)}\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ${dereferenceQuery.construct}\n }\n WHERE {\n ?s1 a ?type .\n FILTER( ?type IN (${types.join(', ')}) ) .\n FILTER( (isIRI(?s1)) ) .\n ${whereQuery}\n ${dereferenceQuery.where}\n ?s1 ?p2 ?o2 .\n }\n `;\n};\n\nexport default buildSparqlQuery;\n","import jsonld from 'jsonld';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport { getEmbedFrame } from './dereference';\nconst createSlug = require('speakingurl');\n\nconst buildJsonContext = ontologies => {\n let pattern = {};\n ontologies.forEach(ontology => (pattern[ontology.prefix] = ontology.url));\n return pattern;\n};\n\nconst isFile = o => o && o.rawFile && o.rawFile instanceof File;\n\nconst getSlugWithExtension = fileName => {\n let fileExtension = '';\n let splitFileName = fileName.split('.');\n if (splitFileName.length > 1) {\n fileExtension = splitFileName.pop();\n fileName = splitFileName.join('.');\n }\n return createSlug(fileName, { lang: 'fr' }) + '.' + fileExtension;\n};\n\nconst isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst dataProvider = ({\n sparqlEndpoint,\n httpClient,\n resources,\n ontologies,\n jsonContext,\n uploadsContainerUri,\n returnFailedResources = false\n}) => {\n const uploadFile = async rawFile => {\n if (!uploadsContainerUri) throw new Error('No uploadsContainerUri defined for the data provider');\n\n const response = await httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n };\n\n /*\n * Look for raw files in the resource data.\n * If there are any, upload them and replace the file by its URL.\n */\n const uploadAllFiles = async resource => {\n for (let property in resource) {\n if (resource.hasOwnProperty(property)) {\n if (Array.isArray(resource[property])) {\n for (let i = 0; i < resource[property].length; i++) {\n if (isFile(resource[property][i])) {\n resource[property][i] = await uploadFile(resource[property][i].rawFile);\n }\n }\n } else {\n if (isFile(resource[property])) {\n resource[property] = await uploadFile(resource[property].rawFile);\n }\n }\n }\n }\n return resource;\n };\n\n return {\n getList: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n if (params.id || params['@id'] || !resources[resourceId].types) {\n const url = params.id || params['@id'] || resources[resourceId].containerUri;\n let { json } = await httpClient(url);\n\n if (isType('ldp:Container', json)) {\n /*\n * LDP Container\n */\n let returnData = json['ldp:contains'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // Remove search params from filter\n if (params.filter.q) {\n delete params.filter.q;\n }\n if (Object.keys(params.filter).length > 0) {\n returnData = returnData.filter(resource =>\n Object.entries(params.filter).some(([k, v]) =>\n Array.isArray(resource[k]) ? resource[k].includes(v) : resource[k] === v\n )\n );\n }\n }\n\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: json['ldp:contains'].length };\n } else {\n /*\n * ActivityPub collection\n */\n\n // If the collection is split amongst several pages, get the first page\n if (json.first) {\n const result = await httpClient(json.first);\n json = result.json;\n }\n\n const listProperty = ['as:orderedItems', 'orderedItems', 'as:items', 'items'].find(p => json[p]);\n if (!listProperty) return { data: [], total: 0 };\n\n // TODO fetch several pages depending on params.pagination\n\n let returnData = json[listProperty].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n return { data: returnData, total: json.totalItems };\n }\n } else {\n const sparqlQuery = buildSparqlQuery({\n types: resources[resourceId].types,\n params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n dereference: resources[resourceId].dereference,\n ontologies\n });\n\n const { json } = await httpClient(sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery\n });\n\n const frame = {\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': resources[resourceId].types,\n // Embed only what we explicitly asked to dereference\n // Otherwise we may have same-type resources embedded in other resources\n '@embed': '@never',\n ...getEmbedFrame(resources[resourceId].dereference)\n };\n\n // omitGraph option force results to be in a @graph, even if we have a single result\n const compactJson = await jsonld.frame(json, frame, { omitGraph: false });\n\n if (Object.keys(compactJson).length === 1) {\n // If we have only the context, it means there is no match\n return { data: [], total: 0 };\n } else {\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = compactJson['@graph'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (params.sort && a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n } else {\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n } else {\n return true;\n }\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: compactJson['@graph'].length };\n }\n\n // OTHER METHOD: FETCH ONLY RESOURCES URIs AND FETCH THEM INDEPENDENTLY\n // TODO compare the performance of the two methods, and eventually allow both of them\n //\n // const sparqlQuery = buildSparqlUriQuery({\n // types: resources[resourceId].types,\n // params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n // ontologies\n // });\n //\n // let { json } = await httpClient(sparqlEndpoint, {\n // method: 'POST',\n // body: sparqlQuery\n // });\n //\n // const total = json.length;\n //\n // if (params.pagination) {\n // json = json.slice(\n // (params.pagination.page - 1) * params.pagination.perPage,\n // params.pagination.page * params.pagination.perPage\n // );\n // }\n //\n // let data = await Promise.allSettled(\n // json.map(result => httpClient(result.resource.value).then(result => result.json))\n // );\n //\n // // Ignore resources we were not able to fetch\n // data = data.filter(r => r.status === 'fulfilled').map(r => r.value);\n //\n // return { data, total };\n }\n },\n getOne: async (resourceId, params) => {\n if (!resources[resourceId]) {\n Error(`Resource ${resourceId} is not mapped in resources file`);\n }\n const dataModel = resources[resourceId];\n\n let { json } = await httpClient(params.id);\n json.id = json.id || json['@id'];\n // TODO compact only if remote context is different from local context\n const compactJson = await jsonld.compact(json, jsonContext || buildJsonContext(ontologies));\n // transform single value into array concidering forceArray predicates\n if (dataModel.forceArray) {\n for (const forceArrayItem of dataModel.forceArray) {\n if (compactJson[forceArrayItem] && !Array.isArray(compactJson[forceArrayItem])) {\n compactJson[forceArrayItem] = [compactJson[forceArrayItem]];\n }\n }\n }\n return { data: compactJson };\n },\n getMany: async (resourceId, params) => {\n let returnData = [];\n\n for (let id of params.ids) {\n id = typeof id === 'object' ? id['@id'] : id;\n\n try {\n let { json } = await httpClient(id);\n json.id = id;\n returnData.push(json);\n } catch (e) {\n // Catch if one resource fails to load\n // Otherwise no references will be show if only one is missing\n // See https://github.com/marmelab/react-admin/issues/5190\n if (returnFailedResources) {\n // Return only the ID of the resource\n returnData.push({ id });\n } else {\n // Do nothing. The resource will not appear in the results.\n }\n }\n }\n\n return { data: returnData };\n },\n getManyReference: (resourceId, params) => {\n throw new Error('getManyReference is not implemented yet');\n },\n create: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const { slugField, containerUri, types } = resources[resourceId];\n const headers = new Headers();\n\n if (slugField) {\n headers.set(\n 'Slug',\n Array.isArray(slugField) ? slugField.map(f => params.data[f]).join(' ') : params.data[slugField]\n );\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': types,\n ...params.data\n })\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n let { json } = await httpClient(resourceUri);\n json.id = json.id || json['@id'];\n return { data: json };\n },\n update: async (resourceId, params) => {\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n ...params.data\n })\n });\n\n return { data: params.data };\n },\n updateMany: (resourceId, params) => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: async (resourceId, params) => {\n await httpClient(params.id, {\n method: 'DELETE'\n });\n return { data: { id: params.id } };\n },\n deleteMany: (resourceId, params) => {\n throw new Error('deleteMany is not implemented yet');\n }\n };\n};\n\nexport default dataProvider;\n","import { fetchUtils } from 'react-admin';\n\nconst httpClient = (url, options = {}) => {\n if (!options.headers) options.headers = new Headers();\n\n switch (options.method) {\n case 'POST':\n case 'PATCH':\n case 'PUT':\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n if (!options.headers.has('Content-Type')) options.headers.set('Content-Type', 'application/ld+json');\n break;\n\n case 'DELETE':\n break;\n\n case 'GET':\n default:\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n break;\n }\n\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n\n return fetchUtils.fetchJson(url, options);\n};\n\nexport default httpClient;\n"],"names":["ImageField","record","source","otherProps","React","RaImageField","ReferenceArrayField","Array","isArray","map","i","id","RaReferenceArrayField","defaultProps","addLabel","ReferenceField","_typeof","RaReferenceField","FilterHandler","children","filter","useState","filtered","setFiltered","useEffect","filteredData","r","eq","key","value","includes","newRecord","length","undefined","Children","child","cloneElement","GroupedReferenceHandler","groupReference","groupLabel","groupHeader","filterProperty","data","useQueryWithStore","type","resource","payload","index","group","label","DateTimeInput","props","RaDateTimeInput","format","replace","ReferenceArrayInput","useResourceContext","RaReferenceArrayInput","v","ReferenceInput","RaReferenceInput","useReferenceInputStyles","makeStyles","form","display","input","paddingRight","useHideInputStyles","root","ReificationArrayInput","reificationClass","flexFormClasses","hideInputStyles","ArrayInput","SimpleFormIterator","classes","className","TextInput","initialValue","generateSparqlVarName","predicate","split","s","toUpperCase","slice","join","getEmbedFrame","paths","predicates","embedFrame","path","reverse","reduce","accumulator","buildSparqlQuery","types","params","dereference","ontologies","whereQuery","q","toLowerCase","Object","keys","forEach","object","startsWith","dereferenceQuery","queries","flattenedPredicates","acc","flattenPredicate","parent","matches","entries","varName","parentVarName","groupKey","push","construct","values","groupedQueries","where","buildDereferenceQuery","ontology","prefix","url","getPrefixRdf","createSlug","require","buildJsonContext","pattern","isFile","o","rawFile","File","dataProvider","sparqlEndpoint","httpClient","resources","jsonContext","uploadsContainerUri","returnFailedResources","uploadFile","Error","method","body","headers","Headers","Slug","fileName","name","fileExtension","splitFileName","pop","lang","response","status","get","uploadAllFiles","property","hasOwnProperty","getList","resourceId","containerUri","json","resourceType","returnData","item","some","k","pagination","page","perPage","total","first","result","listProperty","find","p","totalItems","sparqlQuery","frame","jsonld","omitGraph","compactJson","sort","a","b","field","order","localeCompare","getOne","dataModel","compact","forceArray","forceArrayItem","getMany","ids","getManyReference","create","slugField","set","f","JSON","stringify","responseHeaders","resourceUri","update","updateMany","deleteMany","options","has","token","localStorage","getItem","fetchUtils","fetchJson"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/fields/ImageField.js","../src/fields/ReferenceArrayField.js","../src/fields/ReferenceField.js","../src/dataHandling/FilterHandler.js","../src/dataHandling/GroupedReferenceHandler.js","../src/inputs/DateTimeInput.js","../src/inputs/ReferenceArrayInput.js","../src/inputs/ReferenceInput.js","../src/inputs/ReificationArrayInput.js","../src/dereference.js","../src/buildSparqlQuery.js","../src/dataProvider.js","../src/httpClient.js"],"sourcesContent":["import React from 'react';\nimport { ImageField as RaImageField } from 'react-admin';\n\nconst ImageField = ({ record, source, ...otherProps }) => {\n // For the display, we need to have the URI in a src property\n if (typeof record === 'string') record = { [source]: record };\n return <RaImageField record={record} source={source} {...otherProps} />;\n};\n\nexport default ImageField;\n","import React from 'react';\nimport { ReferenceArrayField as RaReferenceArrayField } from 'react-admin';\n\nconst ReferenceArrayField = ({ record, source, ...otherProps }) => {\n if (record?.[source]) {\n if (!Array.isArray(record[source])) {\n record[source] = [record[source]];\n }\n record[source] = record[source].map(i => i['@id'] || i.id || i);\n }\n return <RaReferenceArrayField record={record} source={source} {...otherProps} />;\n};\n\nReferenceArrayField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceArrayField;\n","import React from 'react';\nimport { ReferenceField as RaReferenceField } from 'react-admin';\n\nconst ReferenceField = ({ record, source, ...otherProps }) => {\n if (record[source]) {\n if (typeof record[source] === 'object') {\n record[source] = record[source]['@id'] || record[source].id;\n }\n }\n return <RaReferenceField record={record} source={source} {...otherProps} />;\n};\n\nReferenceField.defaultProps = {\n addLabel: true\n};\n\nexport default ReferenceField;\n","import React, { useState, useEffect } from 'react';\nimport { ArrayField } from 'react-admin';\n\n/**\n * @example\n * <Show>\n * <FilterHandler\n * source=\"property\" // ex pair:organizationOfMembership\n * filter={{\n * 'propertyToFilter':'value'\n * }} // ex {{'pair:membershipRole':'http://localhost:3000/membership-roles/role-1'}}\n * >\n * <SingleFieldList>\n * </SingleFieldList>\n * </FilterHandler>\n * </Show>\n */\n\nconst FilterHandler = ({ children, record, filter, source, ...otherProps }) => {\n const [filtered, setFiltered] = useState();\n useEffect(() => {\n if (record && source && Array.isArray(record?.[source])) {\n const filteredData = record?.[source].filter(r => {\n let eq = true;\n for (const key in filter) {\n const value = r[key];\n if (Array.isArray(value)) {\n if (!value.includes(filter[key])) {\n eq = false;\n }\n } else {\n if (value !== filter[key]) {\n eq = false;\n }\n }\n }\n return eq;\n });\n let newRecord = {\n ...record\n };\n //undefined setted if no data to obtain no render in RightLabel or equivalent\n newRecord[source] = filteredData.length > 0 ? filteredData : undefined;\n setFiltered(newRecord);\n }\n }, [record, source, filter]);\n\n return (\n <>\n {React.Children.map(children, (child, i) => {\n return React.cloneElement(child, {\n ...otherProps,\n record: filtered,\n addLabel: true,\n source\n });\n })}\n </>\n );\n};\nexport default FilterHandler;\n","import React from 'react';\nimport { useQueryWithStore } from 'react-admin';\nimport { default as FilterHandler } from './FilterHandler';\n\n/*\n * @example Label used in examples\n * const Label = ({label, ...otherProps})=>{\n * return <h2>{label}</h2>\n * }\n *\n * @example show header for each group with group property thanks to groupHeader\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupHeader={({group,...otherProps}) => <Label {...otherProps} label={group['pair:label']}></Label> }\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example call chhildren with label thanks to groupLabel\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </GroupedReferenceHandler>\n *\n * @example conditional show of group if no data in source. Conditionale groupHeader is not possible because GroupedArrayField define group before filter ; need use chhildren.\n * const ConditionalSourceDefinedHandler = ({record,source,children,...otherProps})=>{\n * if (record?.[source] && (!Array.isArray(record[source])||record[source].length>0)){\n * return React.Children.map(children, (child, i) => {\n * return React.cloneElement(child, {...otherProps,record,source});\n * })\n * }else{\n * return <></>\n * }\n * }\n *\n * <GroupedReferenceHandler\n * source=\"property\" // predicat of main record to show / ex pair:organizationOfMembership\n * groupReference=\"RAresource\" // React-Admin resource reference. this is the \"group by\" ressource. / ex MembershipRole\n * groupLabel=\"property of RAresource display\" // property of React-Admin resource to display. children call whith props \"label\" filled by groupLabel property of groupReference\n * filterProperty=\"property of source filtered by groupReference\"\n * addLabel={false}\n * >\n * <ConditionalSourceDefinedHandler>\n * <Label>\n * <ArrayField source=\"property\"> // same props as GroupedArrayField source\n * <GridList>\n * </GridList>\n * </ArrayField>\n * </ConditionalSourceDefinedHandler>\n * </GroupedReferenceHandler>\n *\n *\n */\nconst GroupedReferenceHandler = ({\n children,\n groupReference,\n groupLabel,\n groupHeader,\n filterProperty,\n ...otherProps\n}) => {\n const { data } = useQueryWithStore({\n type: 'getList',\n resource: groupReference,\n payload: {}\n });\n\n return (\n <>\n {data?.map((data, index) => {\n let filter = {};\n filter[filterProperty] = data.id;\n return (\n <>\n {groupHeader && groupHeader({ ...otherProps, group: data })}\n <FilterHandler {...otherProps} filter={filter} label={data[groupLabel]}>\n {children}\n </FilterHandler>\n </>\n );\n })}\n </>\n );\n};\n\nexport default GroupedReferenceHandler;\n","import React from 'react';\nimport { DateTimeInput as RaDateTimeInput } from 'react-admin';\n\n/**\n * @deprecated Use the component from the @semapps/date-components instead\n */\nconst DateTimeInput = props => (\n <RaDateTimeInput {...props} format={value => value && value.replace(' ', 'T').replace('Z', '')} />\n);\n\nexport default DateTimeInput;\n","import React from 'react';\nimport { ReferenceArrayInput as RaReferenceArrayInput, useResourceContext } from 'react-admin';\n\nconst ReferenceArrayInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceArrayInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // if the linked field value is not an array, turns it into an array.\n // Necessary as JSON-LD are sometimes arrays, sometimes not (when there is one value)\n // and the ReferenceArrayInput component only accept arrays\n if (!Array.isArray(value)) value = [value];\n // If a format prop was defined, apply it to the array\n if (props.format) value = props.format(value);\n // If the values are objects with @id field, turn it to a simple string\n return value.map(v => (typeof v === 'object' ? v.id || v['@id'] : v));\n }}\n />\n );\n};\n\nexport default ReferenceArrayInput;\n","import React from 'react';\nimport { ReferenceInput as RaReferenceInput, useResourceContext } from 'react-admin';\n\nconst ReferenceInput = props => {\n const resource = useResourceContext({});\n return (\n <RaReferenceInput\n {...props}\n resource={resource}\n format={value => {\n // If there is no value, return immediately\n if (!value) return value;\n // If a format prop was defined, apply it\n if (props.format) value = props.format(value);\n // If the value is an object with an @id field, return the uri\n return typeof value === 'object' ? value.id || value['@id'] : value;\n }}\n />\n );\n};\n\nexport default ReferenceInput;\n","import React, { useEffect, useState } from 'react';\nimport { ArrayInput, SimpleFormIterator, TextInput } from 'react-admin';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useReferenceInputStyles = makeStyles({\n form: {\n display: 'flex'\n },\n input: {\n paddingRight: '20px'\n }\n});\n\nconst useHideInputStyles = makeStyles({\n root: {\n display: 'none'\n }\n});\n\nconst ReificationArrayInput = props => {\n const { reificationClass, children, ...otherProps } = props;\n const flexFormClasses = useReferenceInputStyles();\n const hideInputStyles = useHideInputStyles();\n\n return (\n <ArrayInput {...otherProps}>\n <SimpleFormIterator classes={{ form: flexFormClasses.form }}>\n {React.Children.map(props.children, (child, i) => {\n return React.cloneElement(child, {\n className: flexFormClasses.input\n });\n })}\n <TextInput className={hideInputStyles.root} source=\"type\" initialValue={reificationClass} />\n </SimpleFormIterator>\n </ArrayInput>\n );\n};\n\nexport default ReificationArrayInput;\n","// Return an object in the form of predicate => parentPredicate\nconst flattenPredicate = (accumulator, predicate, parent = 'root') => {\n if (predicate.includes('/')) {\n const matches = predicate.split(/\\/(.+)/);\n accumulator[matches[0]] = parent;\n flattenPredicate(accumulator, matches[1], matches[0]);\n } else {\n accumulator[predicate] = parent;\n }\n return accumulator;\n};\n\n// Transform ontology:predicate to OntologyPredicate in order to use it as a variable name\nconst generateSparqlVarName = predicate =>\n predicate\n .split(':')\n .map(s => s[0].toUpperCase() + s.slice(1))\n .join('');\n\nexport const buildDereferenceQuery = predicates => {\n let queries = [];\n\n if (predicates) {\n const flattenedPredicates = predicates.reduce((acc, predicate) => flattenPredicate(acc, predicate), {});\n\n for (const [predicate, parent] of Object.entries(flattenedPredicates)) {\n const varName = generateSparqlVarName(predicate);\n const parentVarName = parent === 'root' ? '1' : generateSparqlVarName(parent);\n\n // Group queries by parent, so that we can group WHERE triples in the same OPTIONAL tag\n const groupKey = parent === 'root' ? predicate : parent;\n if (!queries[groupKey]) queries[groupKey] = [];\n\n queries[groupKey].push(`\n ?s${parentVarName} ${predicate} ?s${varName} .\n ?s${varName} ?p${varName} ?o${varName} .\n `);\n }\n }\n\n return {\n construct: Object.values(queries)\n .map(groupedQueries => Object.values(groupedQueries).join('\\n'))\n .join('\\n'),\n where: Object.values(queries)\n .map(groupedQueries => `OPTIONAL { ${Object.values(groupedQueries).join('\\n')} }`)\n .join('\\n')\n };\n};\n\nexport const getEmbedFrame = paths => {\n let embedFrame = {},\n predicates;\n if (paths) {\n for (let path of paths) {\n if (path.includes('/')) {\n predicates = path.split('/').reverse();\n } else {\n predicates = [path];\n }\n embedFrame = {\n ...embedFrame,\n ...predicates.reduce(\n (accumulator, predicate) => ({\n [predicate]: {\n '@embed': '@last',\n ...accumulator\n }\n }),\n {}\n )\n };\n }\n return embedFrame;\n }\n};\n","import { buildDereferenceQuery } from './dereference';\n\nconst getPrefixRdf = ontologies => {\n return ontologies.map(ontology => `PREFIX ${ontology.prefix}: <${ontology.url}>`).join('\\n');\n};\n\nconst buildSparqlQuery = ({ types, params: { filter }, dereference, ontologies }) => {\n let searchWhereQuery = '',\n filterWhereQuery = '';\n\n if (filter) {\n if (filter.q && filter.q.length > 0) {\n searchWhereQuery += `\n {\n SELECT ?s1\n WHERE {\n ?s1 ?p1 ?o1 .\n FILTER regex(lcase(str(?o1)), \"${filter.q.toLowerCase()}\")\n FILTER NOT EXISTS {?s1 a ?o1}\n }\n }\n `;\n delete filter.q;\n }\n Object.keys(filter).forEach(predicate => {\n if (filter[predicate]) {\n const object = filter[predicate].startsWith('http') ? `<${filter[predicate]}>` : filter[predicate];\n filterWhereQuery += `?s1 ${predicate} ${object} .`;\n }\n });\n }\n\n const dereferenceQuery = buildDereferenceQuery(dereference);\n\n return `\n ${getPrefixRdf(ontologies)}\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ${dereferenceQuery.construct}\n }\n WHERE {\n ${filterWhereQuery}\n ?s1 a ?type .\n FILTER( ?type IN (${types.join(', ')}) ) .\n FILTER( (isIRI(?s1)) ) .\n ${searchWhereQuery}\n ${dereferenceQuery.where}\n ?s1 ?p2 ?o2 .\n }\n `;\n};\n\nexport default buildSparqlQuery;\n","import jsonld from 'jsonld';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport { getEmbedFrame } from './dereference';\nconst createSlug = require('speakingurl');\n\nconst buildJsonContext = ontologies => {\n let pattern = {};\n ontologies.forEach(ontology => (pattern[ontology.prefix] = ontology.url));\n return pattern;\n};\n\nconst isFile = o => o && o.rawFile && o.rawFile instanceof File;\n\nconst getSlugWithExtension = fileName => {\n let fileExtension = '';\n let splitFileName = fileName.split('.');\n if (splitFileName.length > 1) {\n fileExtension = splitFileName.pop();\n fileName = splitFileName.join('.');\n }\n return createSlug(fileName, { lang: 'fr' }) + '.' + fileExtension;\n};\n\nconst isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst dataProvider = ({\n sparqlEndpoint,\n httpClient,\n resources,\n ontologies,\n jsonContext,\n uploadsContainerUri,\n returnFailedResources = false\n}) => {\n const uploadFile = async rawFile => {\n if (!uploadsContainerUri) throw new Error('No uploadsContainerUri defined for the data provider');\n\n const response = await httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n };\n\n /*\n * Look for raw files in the resource data.\n * If there are any, upload them and replace the file by its URL.\n */\n const uploadAllFiles = async resource => {\n for (let property in resource) {\n if (resource.hasOwnProperty(property)) {\n if (Array.isArray(resource[property])) {\n for (let i = 0; i < resource[property].length; i++) {\n if (isFile(resource[property][i])) {\n resource[property][i] = await uploadFile(resource[property][i].rawFile);\n }\n }\n } else {\n if (isFile(resource[property])) {\n resource[property] = await uploadFile(resource[property].rawFile);\n }\n }\n }\n }\n return resource;\n };\n\n const ExecuteSparql = async (resourceId, params) => {\n const sparqlQuery = buildSparqlQuery({\n types: resources[resourceId].types,\n params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n dereference: resources[resourceId].dereference,\n ontologies\n });\n\n const { json } = await httpClient(sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery\n });\n\n const frame = {\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': resources[resourceId].types,\n // Embed only what we explicitly asked to dereference\n // Otherwise we may have same-type resources embedded in other resources\n '@embed': '@never',\n ...getEmbedFrame(resources[resourceId].dereference)\n };\n\n // omitGraph option force results to be in a @graph, even if we have a single result\n const compactJson = await jsonld.frame(json, frame, { omitGraph: false });\n\n if (Object.keys(compactJson).length === 1) {\n // If we have only the context, it means there is no match\n return { data: [], total: 0 };\n } else {\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = compactJson['@graph'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n } else {\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n } else {\n return true;\n }\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: compactJson['@graph'].length };\n }\n };\n\n return {\n getList: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n if (params.id || params['@id'] || resources[resourceId].fetchContainer) {\n const url = params.id || params['@id'] || resources[resourceId].containerUri;\n let { json } = await httpClient(url);\n\n if (isType('ldp:Container', json)) {\n /*\n * LDP Container\n */\n let returnData = json['ldp:contains'].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // Remove search params from filter\n if (params.filter.q) {\n delete params.filter.q;\n }\n if (Object.keys(params.filter).length > 0) {\n returnData = returnData.filter(resource =>\n Object.entries(params.filter).some(([k, v]) =>\n Array.isArray(resource[k]) ? resource[k].includes(v) : resource[k] === v\n )\n );\n }\n }\n\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && b[params.sort.field]) {\n if (params.sort.order === 'ASC') {\n return a[params.sort.field].localeCompare(b[params.sort.field]);\n } else {\n return b[params.sort.field].localeCompare(a[params.sort.field]);\n }\n } else {\n return true;\n }\n });\n }\n if (params.pagination) {\n returnData = returnData.slice(\n (params.pagination.page - 1) * params.pagination.perPage,\n params.pagination.page * params.pagination.perPage\n );\n }\n\n return { data: returnData, total: json['ldp:contains'].length };\n } else {\n /*\n * ActivityPub collection\n */\n\n // If the collection is split amongst several pages, get the first page\n if (json.first) {\n const result = await httpClient(json.first);\n json = result.json;\n }\n\n const listProperty = ['as:orderedItems', 'orderedItems', 'as:items', 'items'].find(p => json[p]);\n if (!listProperty) return { data: [], total: 0 };\n\n // TODO fetch several pages depending on params.pagination\n\n let returnData = json[listProperty].map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n return { data: returnData, total: json.totalItems };\n }\n } else {\n return await ExecuteSparql(resourceId, params);\n // OTHER METHOD: FETCH ONLY RESOURCES URIs AND FETCH THEM INDEPENDENTLY\n // TODO compare the performance of the two methods, and eventually allow both of them\n //\n // const sparqlQuery = buildSparqlUriQuery({\n // types: resources[resourceId].types,\n // params: { ...params, filter: { ...resources[resourceId].filter, ...params.filter } },\n // ontologies\n // });\n //\n // let { json } = await httpClient(sparqlEndpoint, {\n // method: 'POST',\n // body: sparqlQuery\n // });\n //\n // const total = json.length;\n //\n // if (params.pagination) {\n // json = json.slice(\n // (params.pagination.page - 1) * params.pagination.perPage,\n // params.pagination.page * params.pagination.perPage\n // );\n // }\n //\n // let data = await Promise.allSettled(\n // json.map(result => httpClient(result.resource.value).then(result => result.json))\n // );\n //\n // // Ignore resources we were not able to fetch\n // data = data.filter(r => r.status === 'fulfilled').map(r => r.value);\n //\n // return { data, total };\n }\n },\n getOne: async (resourceId, params) => {\n if (!resources[resourceId]) {\n Error(`Resource ${resourceId} is not mapped in resources file`);\n }\n const dataModel = resources[resourceId];\n\n let { json } = await httpClient(params.id);\n json.id = json.id || json['@id'];\n // TODO compact only if remote context is different from local context\n const compactJson = await jsonld.compact(json, jsonContext || buildJsonContext(ontologies));\n // transform single value into array concidering forceArray predicates\n if (dataModel.forceArray) {\n for (const forceArrayItem of dataModel.forceArray) {\n if (compactJson[forceArrayItem] && !Array.isArray(compactJson[forceArrayItem])) {\n compactJson[forceArrayItem] = [compactJson[forceArrayItem]];\n }\n }\n }\n return { data: compactJson };\n },\n getMany: async (resourceId, params) => {\n let returnData = [];\n\n for (let id of params.ids) {\n id = typeof id === 'object' ? id['@id'] : id;\n\n try {\n let { json } = await httpClient(id);\n json.id = id;\n returnData.push(json);\n } catch (e) {\n // Catch if one resource fails to load\n // Otherwise no references will be show if only one is missing\n // See https://github.com/marmelab/react-admin/issues/5190\n if (returnFailedResources) {\n // Return only the ID of the resource\n returnData.push({ id });\n } else {\n // Do nothing. The resource will not appear in the results.\n }\n }\n }\n\n return { data: returnData };\n },\n getManyReference: async (resourceId, params) => {\n params.filter = { ...params.filter, [params.target]: params.id };\n return await ExecuteSparql(resourceId, params);\n },\n create: async (resourceId, params) => {\n if (!resources[resourceId]) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const { slugField, containerUri, types } = resources[resourceId];\n const headers = new Headers();\n\n if (slugField) {\n headers.set(\n 'Slug',\n Array.isArray(slugField) ? slugField.map(f => params.data[f]).join(' ') : params.data[slugField]\n );\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n '@type': types,\n ...params.data\n })\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n let { json } = await httpClient(resourceUri);\n json.id = json.id || json['@id'];\n return { data: json };\n },\n update: async (resourceId, params) => {\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data);\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext || buildJsonContext(ontologies),\n ...params.data\n })\n });\n\n return { data: params.data };\n },\n updateMany: (resourceId, params) => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: async (resourceId, params) => {\n await httpClient(params.id, {\n method: 'DELETE'\n });\n return { data: { id: params.id } };\n },\n deleteMany: async (resourceId, params) => {\n let ids = [];\n for (let id of params.ids) {\n try {\n await httpClient(id, {\n method: 'DELETE'\n });\n ids.push(id);\n } catch (e) {}\n }\n return { data: ids };\n }\n };\n};\n\nexport default dataProvider;\n","import { fetchUtils } from 'react-admin';\n\nconst httpClient = (url, options = {}) => {\n if (!options.headers) options.headers = new Headers();\n\n switch (options.method) {\n case 'POST':\n case 'PATCH':\n case 'PUT':\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n if (!options.headers.has('Content-Type')) options.headers.set('Content-Type', 'application/ld+json');\n break;\n\n case 'DELETE':\n break;\n\n case 'GET':\n default:\n if (!options.headers.has('Accept')) options.headers.set('Accept', 'application/ld+json');\n break;\n }\n\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n\n return fetchUtils.fetchJson(url, options);\n};\n\nexport default httpClient;\n"],"names":["ImageField","record","source","otherProps","React","RaImageField","ReferenceArrayField","Array","isArray","map","i","id","RaReferenceArrayField","defaultProps","addLabel","ReferenceField","_typeof","RaReferenceField","FilterHandler","children","filter","useState","filtered","setFiltered","useEffect","filteredData","r","eq","key","value","includes","newRecord","length","undefined","Children","child","cloneElement","GroupedReferenceHandler","groupReference","groupLabel","groupHeader","filterProperty","data","useQueryWithStore","type","resource","payload","index","group","label","DateTimeInput","props","RaDateTimeInput","format","replace","ReferenceArrayInput","useResourceContext","RaReferenceArrayInput","v","ReferenceInput","RaReferenceInput","useReferenceInputStyles","makeStyles","form","display","input","paddingRight","useHideInputStyles","root","ReificationArrayInput","reificationClass","flexFormClasses","hideInputStyles","ArrayInput","SimpleFormIterator","classes","className","TextInput","initialValue","generateSparqlVarName","predicate","split","s","toUpperCase","slice","join","getEmbedFrame","paths","predicates","embedFrame","path","reverse","reduce","accumulator","buildSparqlQuery","types","params","dereference","ontologies","searchWhereQuery","filterWhereQuery","q","toLowerCase","Object","keys","forEach","object","startsWith","dereferenceQuery","queries","flattenedPredicates","acc","flattenPredicate","parent","matches","entries","varName","parentVarName","groupKey","push","construct","values","groupedQueries","where","buildDereferenceQuery","ontology","prefix","url","getPrefixRdf","createSlug","require","buildJsonContext","pattern","isFile","o","rawFile","File","dataProvider","sparqlEndpoint","httpClient","resources","jsonContext","uploadsContainerUri","returnFailedResources","uploadFile","Error","method","body","headers","Headers","Slug","fileName","name","fileExtension","splitFileName","pop","lang","response","status","get","uploadAllFiles","property","hasOwnProperty","ExecuteSparql","resourceId","sparqlQuery","json","frame","jsonld","omitGraph","compactJson","total","returnData","item","sort","a","b","field","order","localeCompare","pagination","page","perPage","getList","fetchContainer","containerUri","resourceType","some","k","first","result","listProperty","find","p","totalItems","getOne","dataModel","compact","forceArray","forceArrayItem","getMany","ids","getManyReference","target","create","slugField","set","f","JSON","stringify","responseHeaders","resourceUri","update","updateMany","deleteMany","options","has","token","localStorage","getItem","fetchUtils","fetchJson"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semapps/semantic-data-provider",
3
- "version": "0.3.8",
3
+ "version": "0.3.11",
4
4
  "description": "React-Admin data provider for LDP servers",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Virtual Assembly",
@@ -35,5 +35,5 @@
35
35
  "rollup-plugin-replace": "^2.2.0",
36
36
  "rollup-plugin-terser": "^5.3.0"
37
37
  },
38
- "gitHead": "4a0667817089b067ca5b40d969c4bc62d0c4199f"
38
+ "gitHead": "ac907b4599a5f6389372eb374cceb1e80144a581"
39
39
  }