@semapps/semantic-data-provider 0.3.7 → 0.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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")),i=e(require("speakingurl")),c=e(require("crypto"));function u(e){return(u="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 s(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 l(e){return function(){var r=this,t=arguments;return new Promise((function(n,a){var o=e.apply(r,t);function i(e){s(o,n,a,i,c,"next",e)}function c(e){s(o,n,a,i,c,"throw",e)}i(void 0)}))}}function f(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function p(){return(p=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 d(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 v(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?d(Object(t),!0).forEach((function(r){f(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):d(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function h(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)||b(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){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||b(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,r){if(e){if("string"==typeof e)return g(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)?g(e,r):void 0}}function g(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 x(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=b(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 w=function(e){var r=e.record,a=e.source,o=h(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,p({record:r,source:a},o))};w.defaultProps={addLabel:!0};var k=function(e){var r=e.record,a=e.source,o=h(e,["record","source"]);return r[a]&&"object"===u(r[a])&&(r[a]=r[a]["@id"]||r[a].id),t.createElement(n.ReferenceField,p({record:r,source:a},o))};k.defaultProps={addLabel:!0};var S=function(e){var n=e.children,a=e.record,o=e.filter,i=e.source,c=h(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=v({},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,v(v({},c),{},{record:s,addLabel:!0,source:i}))})))},j=function(e){var r=n.useResourceContext({});return t.createElement(n.ReferenceArrayInput,p({},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"===u(e)?e.id||e["@id"]:e}))):r}}))},E=a.makeStyles({form:{display:"flex"},input:{paddingRight:"20px"}}),O=a.makeStyles({root:{display:"none"}}),R=function(e,r){return Object.keys(r).find((function(t){return r[t][e]}))},C=function(e,r){return Object.keys(r).find((function(t){return e.startsWith(r[t].baseUrl)}))},A=function(){var e=l(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:if(a=t.dataServers,i=t.httpClient,c=t.jsonContext,u=R("authServer",a),C(r,a)===u||!(null===(n=a[u])||void 0===n?void 0:n.proxyUrl)){e.next=9;break}return e.next=6,i(a[u].proxyUrl,{method:"POST",headers:new Headers({"Content-Type":"application/x-www-form-urlencoded"}),body:new URLSearchParams({id:r})});case 6:e.t0=e.sent,e.next=12;break;case 9:return e.next=11,i(r);case 11:e.t0=e.sent;case 12:if(s=e.t0,(l=s.json).id=l.id||l["@id"],l["@context"]===c){e.next=19;break}return e.next=18,o.compact(l,c);case 18:l=e.sent;case 19:return e.abrupt("return",l);case 20:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),T=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u,s,l,f,p,d,v,h,y,m;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=e.resources,c=i[t]){r.next=4;break}throw new Error("Resource ".concat(t," is not mapped in resources file"));case 4:return r.next=6,A(n.id,e);case 6:if(u=r.sent,null===(a=c.list)||void 0===a?void 0:a.forceArray){l=x(null===(s=c.list)||void 0===s?void 0:s.forceArray);try{for(l.s();!(f=l.n()).done;)p=f.value,u[p]&&!Array.isArray(u[p])&&(u[p]=[u[p]])}catch(e){l.e(e)}finally{l.f()}}if(!(null===(o=c.list)||void 0===o?void 0:o.dereference)){r.next=35;break}v=x(null===(d=c.list)||void 0===d?void 0:d.dereference),r.prev=10,v.s();case 12:if((h=v.n()).done){r.next=27;break}if(y=h.value,!u[y]||"string"!=typeof u[y]||!u[y].startsWith("http")){r.next=25;break}return r.prev=15,r.next=18,A(u[y],e);case 18:delete(m=r.sent)["@context"],u[y]=m,r.next=25;break;case 23:r.prev=23,r.t0=r.catch(15);case 25:r.next=12;break;case 27:r.next=32;break;case 29:r.prev=29,r.t1=r.catch(10),v.e(r.t1);case 32:return r.prev=32,v.f(),r.finish(32);case 35:return r.abrupt("return",{data:u});case 36:case"end":return r.stop()}}),r,null,[[10,29,32,35],[15,23]])})));return function(e,t){return r.apply(this,arguments)}}()},P="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var I=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r,t;r=P,t=function(){function e(e){var r=[];if(0===e.length)return"";if("string"!=typeof e[0])throw new TypeError("Url must be a string. Received "+e[0]);if(e[0].match(/^[^/:]+:\/*$/)&&e.length>1){var t=e.shift();e[0]=t+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n<e.length;n++){var a=e[n];if("string"!=typeof a)throw new TypeError("Url must be a string. Received "+a);""!==a&&(n>0&&(a=a.replace(/^[\/]+/,"")),a=n<e.length-1?a.replace(/[\/]+$/,""):a.replace(/[\/]+$/,"/"),r.push(a))}var o=r.join("/"),i=(o=o.replace(/\/(\?|&|#[^!])/g,"$1")).split("?");return o=i.shift()+(i.length>0?"?":"")+i.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=t():r.urljoin=t()})),F=function(e){return e&&e.rawFile&&e.rawFile instanceof File},U=function(e){var r=Object.keys(e.dataServers).find((function(r){return e.dataServers[r].uploadsContainer}));if(r)return I(e.dataServers[r].baseUrl,e.dataServers[r].uploadsContainer)},L=function(){var e=l(regeneratorRuntime.mark((function e(r,t){var n,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=U(t)){e.next=3;break}throw new Error("You must define an uploadsContainer in one of the server's configuration");case 3:return e.next=5,t.httpClient(n,{method:"POST",body:r,headers:new Headers({Slug:(o=r.name,c=void 0,u=void 0,c="",u=o.split("."),u.length>1&&(c=u.pop(),o=u.join(".")),i(o,{lang:"fr"})+"."+c),"Content-Type":r.type})});case 5:if(201!==(a=e.sent).status){e.next=8;break}return e.abrupt("return",a.headers.get("Location"));case 8:case"end":return e.stop()}var o,c,u}),e)})));return function(r,t){return e.apply(this,arguments)}}(),q=function(){var e=l(regeneratorRuntime.mark((function e(r,t){var n,a;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(n=e.t1.value,!r.hasOwnProperty(n)){e.next=20;break}if(!Array.isArray(r[n])){e.next=16;break}a=0;case 6:if(!(a<r[n].length)){e.next=14;break}if(!F(r[n][a])){e.next=11;break}return e.next=10,L(r[n][a].rawFile,t);case 10:r[n][a]=e.sent;case 11:a++,e.next=6;break;case 14:e.next=20;break;case 16:if(!F(r[n])){e.next=20;break}return e.next=19,L(r[n].rawFile,t);case 19:r[n]=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,t){return e.apply(this,arguments)}}(),N=function(e,r,t){var n={},a=[];return Object.keys(t).forEach((function(o){Object.keys(t[o].containers).forEach((function(i){r&&!(Array.isArray(r)?r.includes(i):r===i)||Object.keys(t[o].containers[i]).forEach((function(r){e.includes(r)&&t[o].containers[i][r].map((function(e){var r=I(t[i].baseUrl,e);a.includes(r)||(a.push(r),n[o]||(n[o]=[]),n[o].push(r))}))}))}))})),n},D=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u,s,l,f,p,d,h,y,m,b,g,x,w,k;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=e.dataServers,c=e.resources,u=e.httpClient,s=e.jsonContext,l=c[t],f=new Headers,(null===(a=l.fieldsMapping)||void 0===a?void 0:a.title)&&f.set("Slug",n.data[null===(p=l.fieldsMapping)||void 0===p?void 0:p.title]),!(null===(o=l.create)||void 0===o?void 0:o.container)){r.next=10;break}d=null===(y=l.create)||void 0===y?void 0:y.container,h=C(d,i),r.next=20;break;case 10:if(h=(null===(m=l.create)||void 0===m?void 0:m.server)||Object.keys(e.dataServers).find((function(r){return!0===e.dataServers[r].default}))){r.next=13;break}throw new Error("You must define a server for the creation, or a container, or a default server");case 13:if(b=N(l.types,[h],i),(g=Object.keys(b))&&0!==g.length){r.next=17;break}throw new Error("No container with types ".concat(JSON.stringify(l.types)," found on server ").concat(h));case 17:if(!(g.length>1||b[g[0]].length>1)){r.next=19;break}throw new Error("More than one container detected with types ".concat(JSON.stringify(l.types)," on server ").concat(h));case 19:d=b[g[0]][0];case 20:return r.next=22,q(n.data,e);case 22:return n.data=r.sent,r.next=25,u(d,{method:"POST",headers:f,body:JSON.stringify(v({"@context":s,"@type":l.types},n.data)),noToken:!0!==i[h].authServer});case 25:return x=r.sent,w=x.headers,k=w.get("Location"),r.next=30,T(e)(t,{id:k});case 30:return r.abrupt("return",r.sent);case 31:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()},H=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){var a,o,i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=e.dataServers,o=e.httpClient,i=C(n.id,a),r.next=4,o(n.id,{method:"DELETE",noToken:!i||!0!==a[i].authServer});case 4:return r.abrupt("return",{data:{id:n.id}});case 5:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()},M=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:a=e.httpClient,o=[],i=x(n.ids),r.prev=3,i.s();case 5:if((c=i.n()).done){r.next=17;break}return u=c.value,r.prev=7,r.next=10,a(u,{method:"DELETE"});case 10:o.push(u),r.next=15;break;case 13:r.prev=13,r.t0=r.catch(7);case 15:r.next=5;break;case 17:r.next=22;break;case 19:r.prev=19,r.t1=r.catch(3),i.e(r.t1);case 22:return r.prev=22,i.f(),r.finish(22);case 25:return r.abrupt("return",{data:o});case 26:case"end":return r.stop()}}),r,null,[[3,19,22,25],[7,13]])})));return function(e,t){return r.apply(this,arguments)}}()},J=function(e,r,t){var n=[];if(Object.keys(t[r].containers[r]).forEach((function(a){e.includes(a)&&t[r].containers[r][a].map((function(e){var a=I(t[r].baseUrl,e);n.includes(a)||n.push(a)}))})),0===n.length)throw new Error("No container found matching with types ".concat(JSON.stringify(e),". You can set explicitely the create.container property of the resource."));if(n.length>1)throw new Error("More than one container found matching with types ".concat(JSON.stringify(e),". You must set the create.server or create.container property for the resource."));return n[0]},$=function(e){return function(r){var t,n,a,o,i=e.dataServers,c=e.resources[r];if(!c)throw new Error("Resource ".concat(r," is not mapped in resources file"));if(null===(t=c.create)||void 0===t?void 0:t.container)return null===(a=c.create)||void 0===a?void 0:a.container;if(null===(n=c.create)||void 0===n?void 0:n.server)return J(c.types,null===(o=c.create)||void 0===o?void 0:o.server,i);var u=R("default",i);return J(c.types,u,i)}},W=function(){var e=l(regeneratorRuntime.mark((function e(r,t,n,a){var i,c,u,s,l,f,p,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.dataServers,c=a.httpClient,u=a.jsonContext,s=Object.keys(r).reduce((function(e,t){return v(v({},e),Object.fromEntries(r[t].map((function(e){return[e,t]}))))}),{}),l=Object.keys(s).map((function(e){return c(e,{noToken:!s[e]||!0!==i[s[e]].authServer}).then((function(e){var r=e.json;return r["@context"]!==u?o.compact(r,u):r})).then((function(r){if(t="ldp:Container",a=(n=r).type||n["@type"],Array.isArray(a)?a.includes(t):a===t)return r["ldp:contains"];throw new Error(e+" is not a LDP container");var t,n,a}))})),e.next=5,Promise.all(l);case 5:if(0!==(f=e.sent).length){e.next=10;break}return e.abrupt("return",{data:[],total:0});case 10:return f=(p=[].concat).apply.apply(p,m(f)),d=f.map((function(e){return e.id=e.id||e["@id"],e})),n.filter&&(n.filter.a&&(n.filter.type=n.filter.a,delete n.filter.a),n.filter.q&&delete n.filter.q,Object.keys(n.filter).length>0&&(d=d.filter((function(e){return Object.entries(n.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}))})))),n.sort&&(d=d.sort((function(e,r){return!e[n.sort.field]||!r[n.sort.field]||("ASC"===n.sort.order?e[n.sort.field].localeCompare(r[n.sort.field]):r[n.sort.field].localeCompare(e[n.sort.field]))}))),n.pagination&&(d=d.slice((n.pagination.page-1)*n.pagination.perPage,n.pagination.page*n.pagination.perPage)),e.abrupt("return",{data:d,total:f.length});case 16:case"end":return e.stop()}}),e)})));return function(r,t,n,a){return e.apply(this,arguments)}}(),Y=function(e){var r,t={};if(e){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;r=o.includes("/")?o.split("/").reverse():[o],t=v(v({},t),r.reduce((function(e,r){return f({},r,v({"@embed":"@last"},e))}),{}))}}catch(e){a.e(e)}finally{a.f()}return t}},G=function(e){return c.createHash("md5").update(e).digest("hex")},Q=function(e){return e.includes("/")&&e.split("/")[0]},X=function(e){return e.includes("/")?e.split("/")[1]:e},_=function e(r){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r.filter((function(e){return e.parentNode===t})).map((function(t){return"\n OPTIONAL { \n ".concat(t.query,"\n ").concat(t.filter,"\n ").concat(e(r,t.node),"\n }\n ")})).join("\n")},z=function(e){var r=[],t=function(e){var r=[];if(e){var t,n=x(e);try{for(n.s();!(t=n.n()).done;){var a=t.value;if(a.includes("/"))for(var o=a.split("/"),i=1;i<=o.length;i++)r.push(o.slice(0,i).join("/"));else r.push(a)}}catch(e){n.e(e)}finally{n.f()}}return r}(e);if(t){var n,a=x(t);try{for(a.s();!(n=a.n()).done;){var o=n.value,i=Q(o),c=X(o),u=G(o),s=i?G(i):"1";r.push({node:o,parentNode:i,query:"?s".concat(s," ").concat(c," ?s").concat(u," .\n?s").concat(u," ?p").concat(u," ?o").concat(u," ."),filter:""})}}catch(e){a.e(e)}finally{a.f()}return{construct:r.map((function(e){return e.query})).join("\n"),where:_(r)}}return{construct:"",where:""}},B=function(e){var r=e.containers,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=z(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 ?containerUri ldp:contains ?s1 .\n FILTER( ?containerUri IN (").concat(r.map((function(e){return"<".concat(e,">")})).join(", "),") ) .\n FILTER( (isIRI(?s1)) ) .\n ").concat(o,"\n ").concat(i.where,"\n ?s1 ?p2 ?o2 .\n }\n ")},V=function(){var e=l(regeneratorRuntime.mark((function e(r,t,n,a){var i,c,u,s,l,f,p,d,h,y,b,g;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=a.dataServers,u=a.resources,s=a.httpClient,l=a.jsonContext,f=a.ontologies,p=u[t],d=v({"@context":l,"@type":p.types,"@embed":"@never"},Y(null===(i=p.list)||void 0===i?void 0:i.dereference)),h=Object.keys(r).map((function(e){return new Promise((function(t,a){var i,u,l=B({containers:r[e],params:v(v({},n),{},{filter:v(v({},null===(i=p.list)||void 0===i?void 0:i.filter),n.filter)}),dereference:null===(u=p.list)||void 0===u?void 0:u.dereference,ontologies:f});s(c[e].sparqlEndpoint,{method:"POST",body:l,noToken:!0!==c[e].authServer}).then((function(e){var r=e.json;return o.frame(r,d,{omitGraph:!1})})).then((function(e){t(e["@graph"]||[])})).catch((function(e){return a(e)}))}))})),e.next=6,Promise.all(h);case 6:if(0!==(y=e.sent).length){e.next=11;break}return e.abrupt("return",{data:[],total:0});case 11:return y=(b=[].concat).apply.apply(b,m(y)),g=y.map((function(e){return e.id=e.id||e["@id"],e})),n.sort&&(g=g.sort((function(e,r){return!e[n.sort.field]||!r[n.sort.field]||("ASC"===n.sort.order?e[n.sort.field].localeCompare(r[n.sort.field]):r[n.sort.field].localeCompare(e[n.sort.field]))}))),n.pagination&&(g=g.slice((n.pagination.page-1)*n.pagination.perPage,n.pagination.page*n.pagination.perPage)),e.abrupt("return",{data:g,total:y.length});case 16:case"end":return e.stop()}}),e)})));return function(r,t,n,a){return e.apply(this,arguments)}}(),Z=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t){var n,a,o,i,c,u,s,l,f,p,d=arguments;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=d.length>1&&void 0!==d[1]?d[1]:{},c=e.dataServers,u=e.resources,s=u[t]){r.next=5;break}throw new Error("Resource ".concat(t," is not mapped in resources file"));case 5:if(l=(null===(n=s.list)||void 0===n?void 0:n.containers)&&(null===(a=s.list)||void 0===a?void 0:a.containers.length)>0?null===(f=s.list)||void 0===f?void 0:f.containers:N(s.types,null===(p=s.list)||void 0===p?void 0:p.servers,c),!(null===(o=s.list)||void 0===o?void 0:o.fetchContainer)){r.next=10;break}return r.abrupt("return",W(l,t,i,e));case 10:return r.abrupt("return",V(l,t,i,e));case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()},K=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,s,l,f;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:a=e.returnFailedResources,o=[],i=x(n.ids),r.prev=3,i.s();case 5:if((c=i.n()).done){r.next=21;break}return s="object"===u(s=c.value)?s["@id"]:s,r.prev=8,r.next=11,T(e)(t,{id:s});case 11:l=r.sent,f=l.data,o.push(f),r.next=19;break;case 16:r.prev=16,r.t0=r.catch(8),a&&o.push({id:s});case 19:r.next=5;break;case 21:r.next=26;break;case 23:r.prev=23,r.t1=r.catch(3),i.e(r.t1);case 26:return r.prev=26,i.f(),r.finish(26);case 29:return r.abrupt("return",{data:o});case 30:case"end":return r.stop()}}),r,null,[[3,23,26,29],[8,16]])})));return function(e,t){return r.apply(this,arguments)}}()},ee=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n.filter=v(v({},n.filter),{},f({},n.target,n.id)),delete n.target,r.next=4,Z(e)(n);case 4:return r.abrupt("return",r.sent);case 5:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()},re=function(e){return function(){var r=l(regeneratorRuntime.mark((function r(t,n){var a,o,i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=e.dataServers,o=e.httpClient,i=e.jsonContext,c=C(n.id,a),r.next=4,q(n.data,e);case 4:return n.data=r.sent,r.next=7,o(n.id,{method:"PUT",body:JSON.stringify(v({"@context":i},n.data)),noToken:!c||!0!==a[c].authServer});case 7:return r.abrupt("return",{data:n.data});case 8:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()};function te(e){this.message=e}te.prototype=new Error,te.prototype.name="InvalidCharacterError";var ne="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new te("'atob' failed: The string to be decoded is not correctly encoded.");for(var t,n,a=0,o=0,i="";n=r.charAt(o++);~n&&(t=a%4?64*t+n:n,a++%4)?i+=String.fromCharCode(255&t>>(-2*a&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return i};function ae(e){var r=e.replace(/-/g,"+").replace(/_/g,"/");switch(r.length%4){case 0:break;case 2:r+="==";break;case 3:r+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(ne(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t="0"+t),"%"+t})))}(r)}catch(e){return ne(r)}}function oe(e){this.message=e}function ie(e,r){if("string"!=typeof e)throw new oe("Invalid token specified");var t=!0===(r=r||{}).header?0:1;try{return JSON.parse(ae(e.split(".")[t]))}catch(e){throw new oe("Invalid token specified: "+e.message)}}oe.prototype=new Error,oe.prototype.name="InvalidTokenError";var ce=function(){var e=l(regeneratorRuntime.mark((function e(r){var t,n,a,o,i,c,u,s,l,f,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=r.dataServers,n=r.httpClient,a=localStorage.getItem("token"),o=R("pod",t),i=R("authServer",t),!a){e.next=14;break}return c=ie(a),u=c.webId,e.next=8,n(u);case 8:s=e.sent,l=s.json,o&&(r.dataServers[o].name="My Pod",r.dataServers[o].baseUrl=I(u,"data"),r.dataServers[o].sparqlEndpoint=(null===(f=l.endpoints)||void 0===f?void 0:f["void:sparqlEndpoint"])||I(u,"sparql")),i&&(r.dataServers[i].proxyUrl=null===(p=l.endpoints)||void 0===p?void 0:p.proxyUrl),e.next=15;break;case 14:o&&delete r.dataServers[o];case 15:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}(),ue=function(){var e=l(regeneratorRuntime.mark((function e(r){var t,n,a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=Object.values(r.dataServers).filter((function(e){return!0!==e.pod})).map((function(e){return r.httpClient(new URL("/.well-known/void",e.baseUrl)).then((function(e){return{data:e.json}})).catch((function(e){if(404===e.status)return{error:e};throw e}))})),e.next=3,Promise.all(t);case 3:n=e.sent,a=x(n);try{for(a.s();!(o=a.n()).done;)o.value.data}catch(e){a.e(e)}finally{a.f()}case 6:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}();exports.DateTimeInput=function(e){return t.createElement(n.DateTimeInput,p({},e,{format:function(e){return e&&e.replace(" ","T").replace("Z","")}}))},exports.FilterHandler=S,exports.GroupedReferenceHandler=function(e){var r=e.children,a=e.groupReference,o=e.groupLabel,i=e.groupHeader,c=e.filterProperty,u=h(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(v(v({},u),{},{group:e})),t.createElement(S,p({},u,{filter:a,label:e[o]}),r))})))},exports.ImageField=function(e){var r=e.record,a=e.source,o=h(e,["record","source"]);return"string"==typeof r&&(r=f({},a,r)),t.createElement(n.ImageField,p({record:r,source:a},o))},exports.ReferenceArrayField=w,exports.ReferenceArrayInput=j,exports.ReferenceField=k,exports.ReferenceInput=function(e){var r=n.useResourceContext({});return t.createElement(n.ReferenceInput,p({},e,{resource:r,format:function(r){return r?(e.format&&(r=e.format(r)),"object"===u(r)?r.id||r["@id"]:r):r}}))},exports.ReificationArrayInput=function(e){var r=e.reificationClass,a=(e.children,h(e,["reificationClass","children"])),o=E(),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=w,exports.UriArrayInput=j,exports.buildDereferenceQuery=z,exports.buildSparqlQuery=B,exports.dataProvider=function(e){if(!R("default",e.dataServers))throw new Error("You must define a default server in your dataServers config");e.jsonContext||(e.jsonContext=Object.fromEntries(e.ontologies.map((function(e){return[e.prefix,e.url]})))),e.returnFailedResources||(e.returnFailedResources=!1);var r=ce(e),t=ue(e),n=function(e){return l(regeneratorRuntime.mark((function n(){var a=arguments;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,r;case 2:return n.next=4,t;case 4:return n.next=6,e.apply(void 0,a);case 6:return n.abrupt("return",n.sent);case 7:case"end":return n.stop()}}),n)})))};return{getList:n(Z(e)),getOne:n(T(e)),getMany:n(K(e)),getManyReference:n(ee(e)),create:n(D(e)),update:n(re(e)),updateMany:function(){throw new Error("updateMany is not implemented yet")},delete:n(H(e)),deleteMany:n(M(e)),getCreateContainer:n($(e))}},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")}if(!r.noToken){var t=localStorage.getItem("token");t&&r.headers.set("Authorization","Bearer ".concat(t))}return n.fetchUtils.fetchJson(e,r)},exports.useCreateContainer=function(e){var t=r.useContext(n.DataProviderContext),a=y(r.useState(),2),o=a[0],i=a[1];return r.useEffect((function(){e&&t.getCreateContainer(e).then((function(e){return i(e)}))}),[e]),o};
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 = ({ sparqlEndpoint, httpClient, resources, ontologies, jsonContext, uploadsContainerUri, returnFailedResources = false }) => {\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/dataProvider/utils/getServerKeyFromType.js","../src/dataProvider/utils/getServerKeyFromUri.js","../src/dataProvider/utils/fetchResource.js","../src/dataProvider/methods/getOne.js","../node_modules/url-join/lib/url-join.js","../src/dataProvider/utils/uploadAllFiles.js","../src/dataProvider/utils/findContainersWithTypes.js","../src/dataProvider/methods/create.js","../src/dataProvider/methods/delete.js","../src/dataProvider/methods/deleteMany.js","../src/dataProvider/methods/getCreateContainer.js","../src/dataProvider/utils/fetchContainers.js","../src/dataProvider/utils/getEmbedFrame.js","../src/dataProvider/utils/buildDereferenceQuery.js","../src/dataProvider/utils/buildSparqlQuery.js","../src/dataProvider/utils/getRdfPrefixes.js","../src/dataProvider/utils/fetchSparqlEndpoints.js","../src/dataProvider/methods/getList.js","../src/dataProvider/methods/getMany.js","../src/dataProvider/methods/getManyReference.js","../src/dataProvider/methods/update.js","../node_modules/jwt-decode/build/jwt-decode.esm.js","../src/dataProvider/utils/fetchUserConfig.js","../src/dataProvider/utils/fetchVoidEndpoints.js","../src/inputs/DateTimeInput.js","../src/dataHandling/GroupedReferenceHandler.js","../src/fields/ImageField.js","../src/inputs/ReferenceInput.js","../src/dataProvider/dataProvider.js","../src/httpClient.js","../src/hooks/useCreateContainer.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';\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","const getServerKeyFromType = (type, dataServers) => {\n return Object.keys(dataServers).find(key => {\n return dataServers[key][type];\n });\n};\n\nexport default getServerKeyFromType;\n","// Return the first server matching with the baseUrl\nconst getServerKeyFromUri = (uri, dataServers) => {\n return Object.keys(dataServers).find(key => {\n return uri.startsWith(dataServers[key].baseUrl);\n });\n};\n\nexport default getServerKeyFromUri;\n","import getServerKeyFromType from './getServerKeyFromType';\nimport getServerKeyFromUri from './getServerKeyFromUri';\nimport jsonld from 'jsonld';\n\nconst fetchResource = async (resourceUri, config) => {\n const { dataServers, httpClient, jsonContext } = config;\n\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n const serverKey = getServerKeyFromUri(resourceUri, dataServers);\n\n // Fetch through proxy server if it is available\n let { json: data } =\n serverKey !== authServerKey && dataServers[authServerKey]?.proxyUrl\n ? await httpClient(dataServers[authServerKey].proxyUrl, {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }),\n body: new URLSearchParams({ id: resourceUri })\n })\n : await httpClient(resourceUri);\n\n data.id = data.id || data['@id'];\n\n // We compact only if the context is different between the frontend and the middleware\n // TODO deep compare if the context is an object\n if (data['@context'] !== jsonContext) {\n data = await jsonld.compact(data, jsonContext);\n }\n\n return data;\n};\n\nexport default fetchResource;\n","import fetchResource from '../utils/fetchResource';\n\nconst getOneMethod = config => async (resourceId, params) => {\n const { resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const data = await fetchResource(params.id, config);\n\n // Transform single value into array if forceArray is set\n if (dataModel.list?.forceArray) {\n for (const forceArrayItem of dataModel.list?.forceArray) {\n if (data[forceArrayItem] && !Array.isArray(data[forceArrayItem])) {\n data[forceArrayItem] = [data[forceArrayItem]];\n }\n }\n }\n\n if (dataModel.list?.dereference) {\n for (const dereferenceItem of dataModel.list?.dereference) {\n if (\n data[dereferenceItem] &&\n typeof data[dereferenceItem] === 'string' &&\n data[dereferenceItem].startsWith('http')\n ) {\n try {\n const dataToEmbed = await fetchResource(data[dereferenceItem], config);\n delete dataToEmbed['@context'];\n data[dereferenceItem] = dataToEmbed;\n } catch (e) {\n // Ignore errors (this may happen if user does not have rights to see the resource)\n }\n }\n }\n }\n\n return { data: data };\n};\n\nexport default getOneMethod;\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","import createSlug from 'speakingurl';\nimport urlJoin from 'url-join';\n\nexport const 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\nexport const isFile = o => o && o.rawFile && o.rawFile instanceof File;\n\nconst getUploadsContainerUri = config => {\n const serverKey = Object.keys(config.dataServers).find(key => config.dataServers[key].uploadsContainer);\n if (serverKey) {\n return urlJoin(config.dataServers[serverKey].baseUrl, config.dataServers[serverKey].uploadsContainer);\n }\n};\n\nconst uploadFile = async (rawFile, config) => {\n const uploadsContainerUri = getUploadsContainerUri(config);\n if (!uploadsContainerUri) throw new Error(\"You must define an uploadsContainer in one of the server's configuration\");\n\n const response = await config.httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n};\n\n/*\n * Look for raw files in the record data.\n * If there are any, upload them and replace the file by its URL.\n */\nconst uploadAllFiles = async (record, config) => {\n for (let property in record) {\n if (record.hasOwnProperty(property)) {\n if (Array.isArray(record[property])) {\n for (let i = 0; i < record[property].length; i++) {\n if (isFile(record[property][i])) {\n record[property][i] = await uploadFile(record[property][i].rawFile, config);\n }\n }\n } else {\n if (isFile(record[property])) {\n record[property] = await uploadFile(record[property].rawFile, config);\n }\n }\n }\n }\n return record;\n};\n\nexport default uploadAllFiles;\n","import urlJoin from 'url-join';\n\nconst findContainersWithTypes = (types, servers, dataServers) => {\n let containers = {};\n let existingContainers = [];\n Object.keys(dataServers).forEach(key1 => {\n Object.keys(dataServers[key1].containers).forEach(key2 => {\n if (!servers || (Array.isArray(servers) ? servers.includes(key2) : servers === key2)) {\n Object.keys(dataServers[key1].containers[key2]).forEach(type => {\n if (types.includes(type)) {\n dataServers[key1].containers[key2][type].map(path => {\n const containerUri = urlJoin(dataServers[key2].baseUrl, path);\n\n // Avoid returning the same container several times\n if (!existingContainers.includes(containerUri)) {\n existingContainers.push(containerUri);\n\n if (!containers[key1]) containers[key1] = [];\n containers[key1].push(containerUri);\n }\n });\n }\n });\n }\n });\n });\n return containers;\n};\n\nexport default findContainersWithTypes;\n","import getOne from './getOne';\nimport uploadAllFiles from '../utils/uploadAllFiles';\nimport findContainersWithTypes from '../utils/findContainersWithTypes';\nimport getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst createMethod = config => async (resourceId, params) => {\n const { dataServers, resources, httpClient, jsonContext } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const headers = new Headers();\n\n if (dataModel.fieldsMapping?.title) {\n headers.set('Slug', params.data[dataModel.fieldsMapping?.title]);\n }\n\n let containerUri, serverKey;\n if (dataModel.create?.container) {\n containerUri = dataModel.create?.container;\n serverKey = getServerKeyFromUri(containerUri, dataServers);\n } else {\n serverKey =\n dataModel.create?.server || Object.keys(config.dataServers).find(key => config.dataServers[key].default === true);\n if (!serverKey) throw new Error('You must define a server for the creation, or a container, or a default server');\n\n const containers = findContainersWithTypes(dataModel.types, [serverKey], dataServers);\n // Extract the containerUri from the results (and ensure there is only one)\n const serverKeys = Object.keys(containers);\n\n if (!serverKeys || serverKeys.length === 0)\n throw new Error(`No container with types ${JSON.stringify(dataModel.types)} found on server ${serverKey}`);\n if (serverKeys.length > 1 || containers[serverKeys[0]].length > 1)\n throw new Error(\n `More than one container detected with types ${JSON.stringify(dataModel.types)} on server ${serverKey}`\n );\n containerUri = containers[serverKeys[0]][0];\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data, config);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext,\n '@type': dataModel.types,\n ...params.data\n }),\n noToken: dataServers[serverKey].authServer !== true\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n return await getOne(config)(resourceId, { id: resourceUri });\n};\n\nexport default createMethod;\n","import getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst deleteMethod = config => async (resourceId, params) => {\n const { dataServers, httpClient } = config;\n const serverKey = getServerKeyFromUri(params.id, dataServers);\n\n await httpClient(params.id, {\n method: 'DELETE',\n noToken: !serverKey || dataServers[serverKey].authServer !== true\n });\n\n return { data: { id: params.id } };\n};\n\nexport default deleteMethod;\n","const deleteManyMethod = config => async (resourceId, params) => {\n const { httpClient } = config;\n let ids = [];\n\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 // Do nothing if we fail to delete a resource\n }\n }\n\n return { data: ids };\n};\n\nexport default deleteManyMethod;\n","import urlJoin from 'url-join';\nimport getServerKeyFromType from '../utils/getServerKeyFromType';\n\nconst findCreateContainerWithTypes = (types, createServerKey, dataServers) => {\n let containers = [];\n Object.keys(dataServers[createServerKey].containers[createServerKey]).forEach(type => {\n if (types.includes(type)) {\n dataServers[createServerKey].containers[createServerKey][type].map(path => {\n const containerUri = urlJoin(dataServers[createServerKey].baseUrl, path);\n if (!containers.includes(containerUri)) {\n containers.push(containerUri);\n }\n });\n }\n });\n\n if (containers.length === 0) {\n throw new Error(\n `No container found matching with types ${JSON.stringify(\n types\n )}. You can set explicitely the create.container property of the resource.`\n );\n } else if (containers.length > 1) {\n throw new Error(\n `More than one container found matching with types ${JSON.stringify(\n types\n )}. You must set the create.server or create.container property for the resource.`\n );\n }\n\n return containers[0];\n};\n\nconst getCreateContainer = config => resourceId => {\n let { dataServers, resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n if (dataModel.create?.container) {\n return dataModel.create?.container;\n } else if (dataModel.create?.server) {\n return findCreateContainerWithTypes(dataModel.types, dataModel.create?.server, dataServers);\n } else {\n const defaultServerKey = getServerKeyFromType('default', dataServers);\n return findCreateContainerWithTypes(dataModel.types, defaultServerKey, dataServers);\n }\n};\n\nexport default getCreateContainer;\n","import jsonld from 'jsonld';\n\nexport const isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst fetchContainers = async (containers, resourceId, params, config) => {\n const { dataServers, httpClient, jsonContext } = config;\n\n // Transform in an containerUri:serverKey object\n const containersServers = Object.keys(containers).reduce(\n (acc, serverKey) => ({\n ...acc,\n ...Object.fromEntries(containers[serverKey].map(containerUri => [containerUri, serverKey]))\n }),\n {}\n );\n\n const fetchPromises = Object.keys(containersServers).map(containerUri =>\n httpClient(containerUri, {\n noToken: !containersServers[containerUri] || dataServers[containersServers[containerUri]].authServer !== true\n })\n .then(({ json }) => {\n // If container's context is different, compact it to have an uniform result\n // TODO deep compare if the context is an object\n if (json['@context'] !== jsonContext) {\n return jsonld.compact(json, jsonContext);\n } else {\n return json;\n }\n })\n .then(json => {\n if (isType('ldp:Container', json)) {\n return json['ldp:contains'];\n } else {\n throw new Error(containerUri + ' is not a LDP container');\n }\n })\n );\n\n // Fetch simultaneously all containers\n let results = await Promise.all(fetchPromises);\n\n if (results.length === 0) {\n return { data: [], total: 0 };\n } else {\n // Merge all results in one array\n results = [].concat.apply(...results);\n\n let returnData = results.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // For SPARQL queries, we use \"a\" to filter types, but in containers it must be \"type\"\n if (params.filter.a) {\n params.filter.type = params.filter.a;\n delete params.filter.a;\n }\n\n // 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: results.length };\n }\n};\n\nexport default fetchContainers;\n","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\nexport default getEmbedFrame;\n","import crypto from 'crypto';\n\n// Transform ['ont:predicate1/ont:predicate2'] to ['ont:predicate1', 'ont:predicate1/ont:predicate2']\nconst extractNodes = predicates => {\n let nodes = [];\n if (predicates) {\n for (let predicate of predicates) {\n if (predicate.includes('/')) {\n const nodeNames = predicate.split('/');\n for (let i = 1; i <= nodeNames.length; i++) {\n nodes.push(nodeNames.slice(0, i).join('/'));\n }\n } else {\n nodes.push(predicate);\n }\n }\n }\n return nodes;\n};\n\nconst generateSparqlVarName = node =>\n crypto\n .createHash('md5')\n .update(node)\n .digest('hex');\n\nconst getParentNode = node => node.includes('/') && node.split('/')[0];\n\nconst getPredicate = node => (node.includes('/') ? node.split('/')[1] : node);\n\nconst buildOptionalQuery = (queries, parentNode = false) =>\n queries\n .filter(q => q.parentNode === parentNode)\n .map(\n q => `\n OPTIONAL { \n ${q.query}\n ${q.filter}\n ${buildOptionalQuery(queries, q.node)}\n }\n `\n )\n .join('\\n');\n\nconst buildDereferenceQuery = predicates => {\n let queries = [];\n const nodes = extractNodes(predicates);\n\n if (nodes) {\n for (let node of nodes) {\n const parentNode = getParentNode(node);\n const predicate = getPredicate(node);\n const varName = generateSparqlVarName(node);\n const parentVarName = parentNode ? generateSparqlVarName(parentNode) : '1';\n\n queries.push({\n node,\n parentNode,\n query: `?s${parentVarName} ${predicate} ?s${varName} .\\n?s${varName} ?p${varName} ?o${varName} .`,\n filter: '' // `FILTER(isBLANK(?s${varName})) .`\n });\n }\n\n return {\n construct: queries.map(q => q.query).join('\\n'),\n where: buildOptionalQuery(queries)\n };\n } else {\n return {\n construct: '',\n where: ''\n };\n }\n};\n\nexport default buildDereferenceQuery;\n","import buildDereferenceQuery from './buildDereferenceQuery';\nimport getRdfPrefixes from './getRdfPrefixes';\n\nconst buildSparqlQuery = ({ containers, 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 ${getRdfPrefixes(ontologies)}\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ${dereferenceQuery.construct}\n }\n WHERE {\n ?containerUri ldp:contains ?s1 .\n FILTER( ?containerUri IN (${containers.map(container => `<${container}>`).join(', ')}) ) .\n FILTER( (isIRI(?s1)) ) .\n ${whereQuery}\n ${dereferenceQuery.where}\n ?s1 ?p2 ?o2 .\n }\n `;\n};\n\nexport default buildSparqlQuery;\n","const getRdfPrefixes = ontologies => {\n return ontologies.map(ontology => `PREFIX ${ontology.prefix}: <${ontology.url}>`).join('\\n');\n};\n\nexport default getRdfPrefixes;\n","import getEmbedFrame from './getEmbedFrame';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport jsonld from 'jsonld';\n\nconst fetchSparqlEndpoints = async (containers, resourceId, params, config) => {\n const { dataServers, resources, httpClient, jsonContext, ontologies } = config;\n const dataModel = resources[resourceId];\n\n const frame = {\n '@context': jsonContext,\n '@type': dataModel.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(dataModel.list?.dereference)\n };\n\n const sparqlQueryPromises = Object.keys(containers).map(\n serverKey =>\n new Promise((resolve, reject) => {\n const sparqlQuery = buildSparqlQuery({\n containers: containers[serverKey],\n params: { ...params, filter: { ...dataModel.list?.filter, ...params.filter } },\n dereference: dataModel.list?.dereference,\n ontologies\n });\n\n httpClient(dataServers[serverKey].sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery,\n noToken: dataServers[serverKey].authServer !== true\n })\n .then(({ json }) => {\n // omitGraph option force results to be in a @graph, even if we have a single result\n return jsonld.frame(json, frame, { omitGraph: false });\n })\n .then(compactJson => {\n resolve(compactJson['@graph'] || []);\n })\n .catch(e => reject(e));\n })\n );\n\n // Run simultaneous SPARQL queries\n let results = await Promise.all(sparqlQueryPromises);\n\n if (results.length === 0) {\n return { data: [], total: 0 };\n } else {\n // Merge all results in one array\n results = [].concat.apply(...results);\n\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = results.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // TODO sort and paginate the results in the SPARQL query to improve performances\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && 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: results.length };\n }\n};\n\nexport default fetchSparqlEndpoints;\n","import findContainersWithTypes from '../utils/findContainersWithTypes';\nimport fetchContainers from '../utils/fetchContainers';\nimport fetchSparqlEndpoints from '../utils/fetchSparqlEndpoints';\n\nconst getListMethod = config => async (resourceId, params = {}) => {\n let { dataServers, resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n let containers;\n if (dataModel.list?.containers && dataModel.list?.containers.length > 0) {\n // If containers are set explicitly, use them\n containers = dataModel.list?.containers;\n } else {\n containers = findContainersWithTypes(dataModel.types, dataModel.list?.servers, dataServers);\n }\n\n if (dataModel.list?.fetchContainer) {\n return fetchContainers(containers, resourceId, params, config);\n } else {\n return fetchSparqlEndpoints(containers, resourceId, params, config);\n }\n};\n\nexport default getListMethod;\n","import getOne from './getOne';\n\nconst getManyMethod = config => async (resourceId, params) => {\n const { returnFailedResources } = config;\n\n let returnData = [];\n\n for (let id of params.ids) {\n id = typeof id === 'object' ? id['@id'] : id;\n\n try {\n const { data } = await getOne(config)(resourceId, { id });\n returnData.push(data);\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\nexport default getManyMethod;\n","import getList from './getList';\n\nconst getManyReferenceMethod = config => async (resourceId, params) => {\n params.filter = { ...params.filter, [params.target]: params.id };\n delete params.target;\n return await getList(config)(params);\n};\n\nexport default getManyReferenceMethod;\n","import uploadAllFiles from '../utils/uploadAllFiles';\nimport getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst updateMethod = config => async (resourceId, params) => {\n const { dataServers, httpClient, jsonContext } = config;\n const serverKey = getServerKeyFromUri(params.id, dataServers);\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data, config);\n\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext,\n ...params.data\n }),\n noToken: !serverKey || dataServers[serverKey].authServer !== true\n });\n\n return { data: params.data };\n};\n\nexport default updateMethod;\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import jwtDecode from 'jwt-decode';\nimport getServerKeyFromType from './getServerKeyFromType';\nimport urlJoin from 'url-join';\n\nconst getContainerFromUri = str => str.match(new RegExp(`(.*)/.*`))[1];\n\nconst fetchUserConfig = async config => {\n const { dataServers, httpClient } = config;\n const token = localStorage.getItem('token');\n const podKey = getServerKeyFromType('pod', dataServers);\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n\n // If the user is logged in\n if (token) {\n const { webId } = jwtDecode(token);\n const { json: userData } = await httpClient(webId);\n\n // If we have a POD server\n if (podKey) {\n // Fill the config provided to the data provider\n // We must modify the config object directly\n config.dataServers[podKey].name = 'My Pod';\n config.dataServers[podKey].baseUrl = urlJoin(webId, 'data'); // TODO find POD URI from user profile\n config.dataServers[podKey].sparqlEndpoint =\n userData.endpoints?.['void:sparqlEndpoint'] || urlJoin(webId, 'sparql');\n }\n\n if (authServerKey) {\n // Fill the config provided to the data provider\n // We must modify the config object directly\n config.dataServers[authServerKey].proxyUrl = userData.endpoints?.proxyUrl;\n }\n } else {\n if (podKey) {\n // If the user is not logged in, ignore the POD server\n delete config.dataServers[podKey];\n }\n }\n};\n\nexport default fetchUserConfig;\n","const fetchVoidEndpoints = async config => {\n const fetchPromises = Object.values(config.dataServers)\n .filter(server => server.pod !== true)\n .map(server =>\n config\n .httpClient(new URL('/.well-known/void', server.baseUrl))\n .then(result => ({ data: result.json }))\n .catch(e => {\n if (e.status === 404) {\n return { error: e };\n } else {\n throw e;\n }\n })\n );\n\n const results = await Promise.all(fetchPromises);\n\n for (let result of results) {\n // Ignore unfetchable endpoints\n if (result.data) {\n // TODO modify config.dataServers based on the VOID configs returned\n }\n }\n};\n\nexport default fetchVoidEndpoints;\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 createMethod from './methods/create';\nimport deleteMethod from './methods/delete';\nimport deleteManyMethod from './methods/deleteMany';\nimport getCreateContainerMethod from './methods/getCreateContainer';\nimport getListMethod from './methods/getList';\nimport getManyMethod from './methods/getMany';\nimport getManyReferenceMethod from './methods/getManyReference';\nimport getOneMethod from './methods/getOne';\nimport updateMethod from './methods/update';\nimport fetchUserConfig from './utils/fetchUserConfig';\nimport fetchVoidEndpoints from './utils/fetchVoidEndpoints';\nimport getServerKeyFromType from './utils/getServerKeyFromType';\n\nconst dataProvider = config => {\n // TODO verify all data provider config + data models\n if (!getServerKeyFromType('default', config.dataServers))\n throw new Error('You must define a default server in your dataServers config');\n\n if (!config.jsonContext) config.jsonContext = Object.fromEntries(config.ontologies.map(o => [o.prefix, o.url]));\n if (!config.returnFailedResources) config.returnFailedResources = false;\n\n const fetchUserConfigPromise = fetchUserConfig(config);\n const fetchVoidEndpointsPromise = fetchVoidEndpoints(config);\n\n const waitForVoidEndpoints = method => async (...arg) => {\n await fetchUserConfigPromise;\n await fetchVoidEndpointsPromise; // Return immediately if promise is fulfilled\n return await method(...arg);\n };\n\n return {\n getList: waitForVoidEndpoints(getListMethod(config)),\n getOne: waitForVoidEndpoints(getOneMethod(config)),\n getMany: waitForVoidEndpoints(getManyMethod(config)),\n getManyReference: waitForVoidEndpoints(getManyReferenceMethod(config)),\n create: waitForVoidEndpoints(createMethod(config)),\n update: waitForVoidEndpoints(updateMethod(config)),\n updateMany: () => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: waitForVoidEndpoints(deleteMethod(config)),\n deleteMany: waitForVoidEndpoints(deleteManyMethod(config)),\n getCreateContainer: waitForVoidEndpoints(getCreateContainerMethod(config))\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 if (!options.noToken) {\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n }\n\n return fetchUtils.fetchJson(url, options);\n};\n\nexport default httpClient;\n","import { useContext, useState, useEffect } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst useCreateContainer = resourceId => {\n // Get the raw data provider, since useDataProvider returns a wrapper\n const dataProvider = useContext(DataProviderContext);\n const [createContainer, setCreateContainer] = useState();\n\n useEffect(() => {\n if (resourceId) {\n dataProvider.getCreateContainer(resourceId).then(containerUri => setCreateContainer(containerUri));\n }\n }, [resourceId]);\n\n return createContainer;\n};\n\nexport default useCreateContainer;\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","getServerKeyFromType","type","dataServers","Object","keys","find","getServerKeyFromUri","uri","startsWith","baseUrl","fetchResource","resourceUri","config","httpClient","jsonContext","authServerKey","_dataServers$authServ","proxyUrl","method","headers","Headers","body","URLSearchParams","data","json","jsonld","compact","getOneMethod","resourceId","params","resources","dataModel","Error","list","_dataModel$list","forceArray","_dataModel$list2","forceArrayItem","_dataModel$list3","dereference","_dataModel$list4","dereferenceItem","dataToEmbed","context","definition","this","normalize","strArray","resultArray","TypeError","match","first","shift","replace","component","push","str","join","parts","split","arguments","slice","call","module","exports","isFile","o","rawFile","File","getUploadsContainerUri","serverKey","uploadsContainer","urlJoin","uploadFile","uploadsContainerUri","Slug","fileName","name","fileExtension","splitFileName","pop","createSlug","lang","response","status","get","uploadAllFiles","property","hasOwnProperty","findContainersWithTypes","types","servers","containers","existingContainers","forEach","key1","key2","path","containerUri","createMethod","fieldsMapping","_dataModel$fieldsMapp","title","set","_dataModel$fieldsMapp2","create","_dataModel$create","container","_dataModel$create2","server","serverKeys","JSON","stringify","noToken","authServer","responseHeaders","getOne","deleteMethod","deleteManyMethod","ids","findCreateContainerWithTypes","createServerKey","getCreateContainer","_dataModel$create3","_dataModel$create4","defaultServerKey","fetchContainers","containersServers","reduce","acc","fromEntries","fetchPromises","then","resourceType","Promise","all","results","total","concat","apply","returnData","item","a","q","entries","some","k","sort","b","field","order","localeCompare","pagination","page","perPage","getEmbedFrame","paths","predicates","embedFrame","reverse","accumulator","predicate","generateSparqlVarName","node","crypto","createHash","update","digest","getParentNode","getPredicate","buildOptionalQuery","queries","parentNode","query","buildDereferenceQuery","nodes","nodeNames","extractNodes","varName","parentVarName","construct","where","buildSparqlQuery","ontologies","whereQuery","toLowerCase","object","dereferenceQuery","ontology","prefix","url","getRdfPrefixes","fetchSparqlEndpoints","frame","sparqlQueryPromises","resolve","reject","sparqlQuery","sparqlEndpoint","omitGraph","compactJson","e","getListMethod","_dataModel$list5","fetchContainer","getManyMethod","returnFailedResources","getManyReferenceMethod","target","getList","updateMethod","message","prototype","window","atob","bind","t","String","n","c","charAt","fromCharCode","indexOf","decodeURIComponent","charCodeAt","toString","toUpperCase","header","parse","fetchUserConfig","token","localStorage","getItem","podKey","jwtDecode","webId","userData","endpoints","_userData$endpoints2","fetchVoidEndpoints","values","pod","URL","result","error","RaDateTimeInput","groupReference","groupLabel","groupHeader","filterProperty","useQueryWithStore","payload","index","group","label","RaImageField","RaReferenceInput","reificationClass","flexFormClasses","hideInputStyles","ArrayInput","SimpleFormIterator","classes","className","TextInput","initialValue","fetchUserConfigPromise","fetchVoidEndpointsPromise","waitForVoidEndpoints","getMany","getManyReference","updateMany","deleteMany","getCreateContainerMethod","options","has","fetchUtils","fetchJson","dataProvider","useContext","DataProviderContext","createContainer","setCreateContainer"],"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,useContext as n}from"react";import{ImageField as a,ReferenceArrayField as o,ReferenceField as i,useQueryWithStore as c,DateTimeInput as u,useResourceContext as s,ReferenceArrayInput as f,ReferenceInput as l,ArrayInput as p,SimpleFormIterator as d,TextInput as v,DataProviderContext as h,fetchUtils as y}from"react-admin";import{makeStyles as m}from"@material-ui/core/styles";import b from"jsonld";import g from"speakingurl";import w from"crypto";function x(e){return(x="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 k(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 S(e){return function(){var r=this,t=arguments;return new Promise((function(n,a){var o=e.apply(r,t);function i(e){k(o,n,a,i,c,"next",e)}function c(e){k(o,n,a,i,c,"throw",e)}i(void 0)}))}}function j(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function E(){return(E=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 O(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 R(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?O(Object(t),!0).forEach((function(r){j(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function C(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)||P(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 T(e){return function(e){if(Array.isArray(e))return I(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||P(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e,r){if(e){if("string"==typeof e)return I(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)?I(e,r):void 0}}function I(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 U(e){if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=P(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 L=function(r){var t=r.record,n=r.source,o=C(r,["record","source"]);return"string"==typeof t&&(t=j({},n,t)),e.createElement(a,E({record:t,source:n},o))},F=function(r){var t=r.record,n=r.source,a=C(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(o,E({record:t,source:n},a))};F.defaultProps={addLabel:!0};var N=function(r){var t=r.record,n=r.source,a=C(r,["record","source"]);return t[n]&&"object"===x(t[n])&&(t[n]=t[n]["@id"]||t[n].id),e.createElement(i,E({record:t,source:n},a))};N.defaultProps={addLabel:!0};var q=function(n){var a=n.children,o=n.record,i=n.filter,c=n.source,u=C(n,["children","record","filter","source"]),s=A(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=R({},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,R(R({},u),{},{record:f,addLabel:!0,source:c}))})))},M=function(r){var t=r.children,n=r.groupReference,a=r.groupLabel,o=r.groupHeader,i=r.filterProperty,u=C(r,["children","groupReference","groupLabel","groupHeader","filterProperty"]),s=c({type:"getList",resource:n,payload:{}}).data;return e.createElement(e.Fragment,null,null==s?void 0:s.map((function(r,n){var c={};return c[i]=r.id,e.createElement(e.Fragment,null,o&&o(R(R({},u),{},{group:r})),e.createElement(q,E({},u,{filter:c,label:r[a]}),t))})))},H=function(r){return e.createElement(u,E({},r,{format:function(e){return e&&e.replace(" ","T").replace("Z","")}}))},D=function(r){var t=s({});return e.createElement(f,E({},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"===x(e)?e.id||e["@id"]:e}))):e}}))},J=function(r){var t=s({});return e.createElement(l,E({},r,{resource:t,format:function(e){return e?(r.format&&(e=r.format(e)),"object"===x(e)?e.id||e["@id"]:e):e}}))},$=m({form:{display:"flex"},input:{paddingRight:"20px"}}),W=m({root:{display:"none"}}),Y=function(r){var t=r.reificationClass,n=(r.children,C(r,["reificationClass","children"])),a=$(),o=W();return e.createElement(p,n,e.createElement(d,{classes:{form:a.form}},e.Children.map(r.children,(function(r,t){return e.cloneElement(r,{className:a.input})})),e.createElement(v,{className:o.root,source:"type",initialValue:t})))},G=function(e){var a=n(h),o=A(r(),2),i=o[0],c=o[1];return t((function(){e&&a.getCreateContainer(e).then((function(e){return c(e)}))}),[e]),i},X=function(e,r){return Object.keys(r).find((function(t){return r[t][e]}))},z=function(e,r){return Object.keys(r).find((function(t){return e.startsWith(r[t].baseUrl)}))},B=function(){var e=S(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(a=t.dataServers,o=t.httpClient,i=t.jsonContext,c=X("authServer",a),z(r,a)===c||!(null===(n=a[c])||void 0===n?void 0:n.proxyUrl)){e.next=9;break}return e.next=6,o(a[c].proxyUrl,{method:"POST",headers:new Headers({"Content-Type":"application/x-www-form-urlencoded"}),body:new URLSearchParams({id:r})});case 6:e.t0=e.sent,e.next=12;break;case 9:return e.next=11,o(r);case 11:e.t0=e.sent;case 12:if(u=e.t0,(s=u.json).id=s.id||s["@id"],s["@context"]===i){e.next=19;break}return e.next=18,b.compact(s,i);case 18:s=e.sent;case 19:return e.abrupt("return",s);case 20:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}(),V=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u,s,f,l,p,d,v,h,y,m;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=e.resources,c=i[t]){r.next=4;break}throw new Error("Resource ".concat(t," is not mapped in resources file"));case 4:return r.next=6,B(n.id,e);case 6:if(u=r.sent,null===(a=c.list)||void 0===a?void 0:a.forceArray){f=U(null===(s=c.list)||void 0===s?void 0:s.forceArray);try{for(f.s();!(l=f.n()).done;)p=l.value,u[p]&&!Array.isArray(u[p])&&(u[p]=[u[p]])}catch(e){f.e(e)}finally{f.f()}}if(!(null===(o=c.list)||void 0===o?void 0:o.dereference)){r.next=35;break}v=U(null===(d=c.list)||void 0===d?void 0:d.dereference),r.prev=10,v.s();case 12:if((h=v.n()).done){r.next=27;break}if(y=h.value,!u[y]||"string"!=typeof u[y]||!u[y].startsWith("http")){r.next=25;break}return r.prev=15,r.next=18,B(u[y],e);case 18:delete(m=r.sent)["@context"],u[y]=m,r.next=25;break;case 23:r.prev=23,r.t0=r.catch(15);case 25:r.next=12;break;case 27:r.next=32;break;case 29:r.prev=29,r.t1=r.catch(10),v.e(r.t1);case 32:return r.prev=32,v.f(),r.finish(32);case 35:return r.abrupt("return",{data:u});case 36:case"end":return r.stop()}}),r,null,[[10,29,32,35],[15,23]])})));return function(e,t){return r.apply(this,arguments)}}()},Z="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var K=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r,t;r=Z,t=function(){function e(e){var r=[];if(0===e.length)return"";if("string"!=typeof e[0])throw new TypeError("Url must be a string. Received "+e[0]);if(e[0].match(/^[^/:]+:\/*$/)&&e.length>1){var t=e.shift();e[0]=t+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n<e.length;n++){var a=e[n];if("string"!=typeof a)throw new TypeError("Url must be a string. Received "+a);""!==a&&(n>0&&(a=a.replace(/^[\/]+/,"")),a=n<e.length-1?a.replace(/[\/]+$/,""):a.replace(/[\/]+$/,"/"),r.push(a))}var o=r.join("/"),i=(o=o.replace(/\/(\?|&|#[^!])/g,"$1")).split("?");return o=i.shift()+(i.length>0?"?":"")+i.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=t():r.urljoin=t()})),Q=function(e){return e&&e.rawFile&&e.rawFile instanceof File},_=function(e){var r=Object.keys(e.dataServers).find((function(r){return e.dataServers[r].uploadsContainer}));if(r)return K(e.dataServers[r].baseUrl,e.dataServers[r].uploadsContainer)},ee=function(){var e=S(regeneratorRuntime.mark((function e(r,t){var n,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=_(t)){e.next=3;break}throw new Error("You must define an uploadsContainer in one of the server's configuration");case 3:return e.next=5,t.httpClient(n,{method:"POST",body:r,headers:new Headers({Slug:(o=r.name,i=void 0,c=void 0,i="",c=o.split("."),c.length>1&&(i=c.pop(),o=c.join(".")),g(o,{lang:"fr"})+"."+i),"Content-Type":r.type})});case 5:if(201!==(a=e.sent).status){e.next=8;break}return e.abrupt("return",a.headers.get("Location"));case 8:case"end":return e.stop()}var o,i,c}),e)})));return function(r,t){return e.apply(this,arguments)}}(),re=function(){var e=S(regeneratorRuntime.mark((function e(r,t){var n,a;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(n=e.t1.value,!r.hasOwnProperty(n)){e.next=20;break}if(!Array.isArray(r[n])){e.next=16;break}a=0;case 6:if(!(a<r[n].length)){e.next=14;break}if(!Q(r[n][a])){e.next=11;break}return e.next=10,ee(r[n][a].rawFile,t);case 10:r[n][a]=e.sent;case 11:a++,e.next=6;break;case 14:e.next=20;break;case 16:if(!Q(r[n])){e.next=20;break}return e.next=19,ee(r[n].rawFile,t);case 19:r[n]=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,t){return e.apply(this,arguments)}}(),te=function(e,r,t){var n={},a=[];return Object.keys(t).forEach((function(o){Object.keys(t[o].containers).forEach((function(i){r&&!(Array.isArray(r)?r.includes(i):r===i)||Object.keys(t[o].containers[i]).forEach((function(r){e.includes(r)&&t[o].containers[i][r].map((function(e){var r=K(t[i].baseUrl,e);a.includes(r)||(a.push(r),n[o]||(n[o]=[]),n[o].push(r))}))}))}))})),n},ne=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u,s,f,l,p,d,v,h,y,m,b,g,w,x;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=e.dataServers,c=e.resources,u=e.httpClient,s=e.jsonContext,f=c[t],l=new Headers,(null===(a=f.fieldsMapping)||void 0===a?void 0:a.title)&&l.set("Slug",n.data[null===(p=f.fieldsMapping)||void 0===p?void 0:p.title]),!(null===(o=f.create)||void 0===o?void 0:o.container)){r.next=10;break}d=null===(h=f.create)||void 0===h?void 0:h.container,v=z(d,i),r.next=20;break;case 10:if(v=(null===(y=f.create)||void 0===y?void 0:y.server)||Object.keys(e.dataServers).find((function(r){return!0===e.dataServers[r].default}))){r.next=13;break}throw new Error("You must define a server for the creation, or a container, or a default server");case 13:if(m=te(f.types,[v],i),(b=Object.keys(m))&&0!==b.length){r.next=17;break}throw new Error("No container with types ".concat(JSON.stringify(f.types)," found on server ").concat(v));case 17:if(!(b.length>1||m[b[0]].length>1)){r.next=19;break}throw new Error("More than one container detected with types ".concat(JSON.stringify(f.types)," on server ").concat(v));case 19:d=m[b[0]][0];case 20:return r.next=22,re(n.data,e);case 22:return n.data=r.sent,r.next=25,u(d,{method:"POST",headers:l,body:JSON.stringify(R({"@context":s,"@type":f.types},n.data)),noToken:!0!==i[v].authServer});case 25:return g=r.sent,w=g.headers,x=w.get("Location"),r.next=30,V(e)(t,{id:x});case 30:return r.abrupt("return",r.sent);case 31:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()},ae=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){var a,o,i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=e.dataServers,o=e.httpClient,i=z(n.id,a),r.next=4,o(n.id,{method:"DELETE",noToken:!i||!0!==a[i].authServer});case 4:return r.abrupt("return",{data:{id:n.id}});case 5:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()},oe=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:a=e.httpClient,o=[],i=U(n.ids),r.prev=3,i.s();case 5:if((c=i.n()).done){r.next=17;break}return u=c.value,r.prev=7,r.next=10,a(u,{method:"DELETE"});case 10:o.push(u),r.next=15;break;case 13:r.prev=13,r.t0=r.catch(7);case 15:r.next=5;break;case 17:r.next=22;break;case 19:r.prev=19,r.t1=r.catch(3),i.e(r.t1);case 22:return r.prev=22,i.f(),r.finish(22);case 25:return r.abrupt("return",{data:o});case 26:case"end":return r.stop()}}),r,null,[[3,19,22,25],[7,13]])})));return function(e,t){return r.apply(this,arguments)}}()},ie=function(e,r,t){var n=[];if(Object.keys(t[r].containers[r]).forEach((function(a){e.includes(a)&&t[r].containers[r][a].map((function(e){var a=K(t[r].baseUrl,e);n.includes(a)||n.push(a)}))})),0===n.length)throw new Error("No container found matching with types ".concat(JSON.stringify(e),". You can set explicitely the create.container property of the resource."));if(n.length>1)throw new Error("More than one container found matching with types ".concat(JSON.stringify(e),". You must set the create.server or create.container property for the resource."));return n[0]},ce=function(e){return function(r){var t,n,a,o,i=e.dataServers,c=e.resources[r];if(!c)throw new Error("Resource ".concat(r," is not mapped in resources file"));if(null===(t=c.create)||void 0===t?void 0:t.container)return null===(a=c.create)||void 0===a?void 0:a.container;if(null===(n=c.create)||void 0===n?void 0:n.server)return ie(c.types,null===(o=c.create)||void 0===o?void 0:o.server,i);var u=X("default",i);return ie(c.types,u,i)}},ue=function(){var e=S(regeneratorRuntime.mark((function e(r,t,n,a){var o,i,c,u,s,f,l,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=a.dataServers,i=a.httpClient,c=a.jsonContext,u=Object.keys(r).reduce((function(e,t){return R(R({},e),Object.fromEntries(r[t].map((function(e){return[e,t]}))))}),{}),s=Object.keys(u).map((function(e){return i(e,{noToken:!u[e]||!0!==o[u[e]].authServer}).then((function(e){var r=e.json;return r["@context"]!==c?b.compact(r,c):r})).then((function(r){if(t="ldp:Container",a=(n=r).type||n["@type"],Array.isArray(a)?a.includes(t):a===t)return r["ldp:contains"];throw new Error(e+" is not a LDP container");var t,n,a}))})),e.next=5,Promise.all(s);case 5:if(0!==(f=e.sent).length){e.next=10;break}return e.abrupt("return",{data:[],total:0});case 10:return f=(l=[].concat).apply.apply(l,T(f)),p=f.map((function(e){return e.id=e.id||e["@id"],e})),n.filter&&(n.filter.a&&(n.filter.type=n.filter.a,delete n.filter.a),n.filter.q&&delete n.filter.q,Object.keys(n.filter).length>0&&(p=p.filter((function(e){return Object.entries(n.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}))})))),n.sort&&(p=p.sort((function(e,r){return!e[n.sort.field]||!r[n.sort.field]||("ASC"===n.sort.order?e[n.sort.field].localeCompare(r[n.sort.field]):r[n.sort.field].localeCompare(e[n.sort.field]))}))),n.pagination&&(p=p.slice((n.pagination.page-1)*n.pagination.perPage,n.pagination.page*n.pagination.perPage)),e.abrupt("return",{data:p,total:f.length});case 16:case"end":return e.stop()}}),e)})));return function(r,t,n,a){return e.apply(this,arguments)}}(),se=function(e){var r,t={};if(e){var n,a=U(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;r=o.includes("/")?o.split("/").reverse():[o],t=R(R({},t),r.reduce((function(e,r){return j({},r,R({"@embed":"@last"},e))}),{}))}}catch(e){a.e(e)}finally{a.f()}return t}},fe=function(e){return w.createHash("md5").update(e).digest("hex")},le=function(e){return e.includes("/")&&e.split("/")[0]},pe=function(e){return e.includes("/")?e.split("/")[1]:e},de=function e(r){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r.filter((function(e){return e.parentNode===t})).map((function(t){return"\n OPTIONAL { \n ".concat(t.query,"\n ").concat(t.filter,"\n ").concat(e(r,t.node),"\n }\n ")})).join("\n")},ve=function(e){var r=[],t=function(e){var r=[];if(e){var t,n=U(e);try{for(n.s();!(t=n.n()).done;){var a=t.value;if(a.includes("/"))for(var o=a.split("/"),i=1;i<=o.length;i++)r.push(o.slice(0,i).join("/"));else r.push(a)}}catch(e){n.e(e)}finally{n.f()}}return r}(e);if(t){var n,a=U(t);try{for(a.s();!(n=a.n()).done;){var o=n.value,i=le(o),c=pe(o),u=fe(o),s=i?fe(i):"1";r.push({node:o,parentNode:i,query:"?s".concat(s," ").concat(c," ?s").concat(u," .\n?s").concat(u," ?p").concat(u," ?o").concat(u," ."),filter:""})}}catch(e){a.e(e)}finally{a.f()}return{construct:r.map((function(e){return e.query})).join("\n"),where:de(r)}}return{construct:"",where:""}},he=function(e){var r=e.containers,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=ve(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 ?containerUri ldp:contains ?s1 .\n FILTER( ?containerUri IN (").concat(r.map((function(e){return"<".concat(e,">")})).join(", "),") ) .\n FILTER( (isIRI(?s1)) ) .\n ").concat(o,"\n ").concat(i.where,"\n ?s1 ?p2 ?o2 .\n }\n ")},ye=function(){var e=S(regeneratorRuntime.mark((function e(r,t,n,a){var o,i,c,u,s,f,l,p,d,v,h,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=a.dataServers,c=a.resources,u=a.httpClient,s=a.jsonContext,f=a.ontologies,l=c[t],p=R({"@context":s,"@type":l.types,"@embed":"@never"},se(null===(o=l.list)||void 0===o?void 0:o.dereference)),d=Object.keys(r).map((function(e){return new Promise((function(t,a){var o,c,s=he({containers:r[e],params:R(R({},n),{},{filter:R(R({},null===(o=l.list)||void 0===o?void 0:o.filter),n.filter)}),dereference:null===(c=l.list)||void 0===c?void 0:c.dereference,ontologies:f});u(i[e].sparqlEndpoint,{method:"POST",body:s,noToken:!0!==i[e].authServer}).then((function(e){var r=e.json;return b.frame(r,p,{omitGraph:!1})})).then((function(e){t(e["@graph"]||[])})).catch((function(e){return a(e)}))}))})),e.next=6,Promise.all(d);case 6:if(0!==(v=e.sent).length){e.next=11;break}return e.abrupt("return",{data:[],total:0});case 11:return v=(h=[].concat).apply.apply(h,T(v)),y=v.map((function(e){return e.id=e.id||e["@id"],e})),n.sort&&(y=y.sort((function(e,r){return!e[n.sort.field]||!r[n.sort.field]||("ASC"===n.sort.order?e[n.sort.field].localeCompare(r[n.sort.field]):r[n.sort.field].localeCompare(e[n.sort.field]))}))),n.pagination&&(y=y.slice((n.pagination.page-1)*n.pagination.perPage,n.pagination.page*n.pagination.perPage)),e.abrupt("return",{data:y,total:v.length});case 16:case"end":return e.stop()}}),e)})));return function(r,t,n,a){return e.apply(this,arguments)}}(),me=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t){var n,a,o,i,c,u,s,f,l,p,d=arguments;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(i=d.length>1&&void 0!==d[1]?d[1]:{},c=e.dataServers,u=e.resources,s=u[t]){r.next=5;break}throw new Error("Resource ".concat(t," is not mapped in resources file"));case 5:if(f=(null===(n=s.list)||void 0===n?void 0:n.containers)&&(null===(a=s.list)||void 0===a?void 0:a.containers.length)>0?null===(l=s.list)||void 0===l?void 0:l.containers:te(s.types,null===(p=s.list)||void 0===p?void 0:p.servers,c),!(null===(o=s.list)||void 0===o?void 0:o.fetchContainer)){r.next=10;break}return r.abrupt("return",ue(f,t,i,e));case 10:return r.abrupt("return",ye(f,t,i,e));case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}()},be=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){var a,o,i,c,u,s,f;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:a=e.returnFailedResources,o=[],i=U(n.ids),r.prev=3,i.s();case 5:if((c=i.n()).done){r.next=21;break}return u="object"===x(u=c.value)?u["@id"]:u,r.prev=8,r.next=11,V(e)(t,{id:u});case 11:s=r.sent,f=s.data,o.push(f),r.next=19;break;case 16:r.prev=16,r.t0=r.catch(8),a&&o.push({id:u});case 19:r.next=5;break;case 21:r.next=26;break;case 23:r.prev=23,r.t1=r.catch(3),i.e(r.t1);case 26:return r.prev=26,i.f(),r.finish(26);case 29:return r.abrupt("return",{data:o});case 30:case"end":return r.stop()}}),r,null,[[3,23,26,29],[8,16]])})));return function(e,t){return r.apply(this,arguments)}}()},ge=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n.filter=R(R({},n.filter),{},j({},n.target,n.id)),delete n.target,r.next=4,me(e)(n);case 4:return r.abrupt("return",r.sent);case 5:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()},we=function(e){return function(){var r=S(regeneratorRuntime.mark((function r(t,n){var a,o,i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=e.dataServers,o=e.httpClient,i=e.jsonContext,c=z(n.id,a),r.next=4,re(n.data,e);case 4:return n.data=r.sent,r.next=7,o(n.id,{method:"PUT",body:JSON.stringify(R({"@context":i},n.data)),noToken:!c||!0!==a[c].authServer});case 7:return r.abrupt("return",{data:n.data});case 8:case"end":return r.stop()}}),r)})));return function(e,t){return r.apply(this,arguments)}}()};function xe(e){this.message=e}xe.prototype=new Error,xe.prototype.name="InvalidCharacterError";var ke="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var r=String(e).replace(/=+$/,"");if(r.length%4==1)throw new xe("'atob' failed: The string to be decoded is not correctly encoded.");for(var t,n,a=0,o=0,i="";n=r.charAt(o++);~n&&(t=a%4?64*t+n:n,a++%4)?i+=String.fromCharCode(255&t>>(-2*a&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return i};function Se(e){var r=e.replace(/-/g,"+").replace(/_/g,"/");switch(r.length%4){case 0:break;case 2:r+="==";break;case 3:r+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(ke(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t="0"+t),"%"+t})))}(r)}catch(e){return ke(r)}}function je(e){this.message=e}function Ee(e,r){if("string"!=typeof e)throw new je("Invalid token specified");var t=!0===(r=r||{}).header?0:1;try{return JSON.parse(Se(e.split(".")[t]))}catch(e){throw new je("Invalid token specified: "+e.message)}}je.prototype=new Error,je.prototype.name="InvalidTokenError";var Oe=function(){var e=S(regeneratorRuntime.mark((function e(r){var t,n,a,o,i,c,u,s,f,l,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=r.dataServers,n=r.httpClient,a=localStorage.getItem("token"),o=X("pod",t),i=X("authServer",t),!a){e.next=14;break}return c=Ee(a),u=c.webId,e.next=8,n(u);case 8:s=e.sent,f=s.json,o&&(r.dataServers[o].name="My Pod",r.dataServers[o].baseUrl=K(u,"data"),r.dataServers[o].sparqlEndpoint=(null===(l=f.endpoints)||void 0===l?void 0:l["void:sparqlEndpoint"])||K(u,"sparql")),i&&(r.dataServers[i].proxyUrl=null===(p=f.endpoints)||void 0===p?void 0:p.proxyUrl),e.next=15;break;case 14:o&&delete r.dataServers[o];case 15:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}(),Re=function(){var e=S(regeneratorRuntime.mark((function e(r){var t,n,a,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=Object.values(r.dataServers).filter((function(e){return!0!==e.pod})).map((function(e){return r.httpClient(new URL("/.well-known/void",e.baseUrl)).then((function(e){return{data:e.json}})).catch((function(e){if(404===e.status)return{error:e};throw e}))})),e.next=3,Promise.all(t);case 3:n=e.sent,a=U(n);try{for(a.s();!(o=a.n()).done;)o.value.data}catch(e){a.e(e)}finally{a.f()}case 6:case"end":return e.stop()}}),e)})));return function(r){return e.apply(this,arguments)}}(),Ce=function(e){if(!X("default",e.dataServers))throw new Error("You must define a default server in your dataServers config");e.jsonContext||(e.jsonContext=Object.fromEntries(e.ontologies.map((function(e){return[e.prefix,e.url]})))),e.returnFailedResources||(e.returnFailedResources=!1);var r=Oe(e),t=Re(e),n=function(e){return S(regeneratorRuntime.mark((function n(){var a=arguments;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,r;case 2:return n.next=4,t;case 4:return n.next=6,e.apply(void 0,a);case 6:return n.abrupt("return",n.sent);case 7:case"end":return n.stop()}}),n)})))};return{getList:n(me(e)),getOne:n(V(e)),getMany:n(be(e)),getManyReference:n(ge(e)),create:n(ne(e)),update:n(we(e)),updateMany:function(){throw new Error("updateMany is not implemented yet")},delete:n(ae(e)),deleteMany:n(oe(e)),getCreateContainer:n(ce(e))}},Ae=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")}if(!r.noToken){var t=localStorage.getItem("token");t&&r.headers.set("Authorization","Bearer ".concat(t))}return y.fetchJson(e,r)};export{H as DateTimeInput,q as FilterHandler,M as GroupedReferenceHandler,L as ImageField,F as ReferenceArrayField,D as ReferenceArrayInput,N as ReferenceField,J as ReferenceInput,Y as ReificationArrayInput,F as UriArrayField,D as UriArrayInput,ve as buildDereferenceQuery,he as buildSparqlQuery,Ce as dataProvider,Ae as httpClient,G as useCreateContainer};
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 = ({ sparqlEndpoint, httpClient, resources, ontologies, jsonContext, uploadsContainerUri, returnFailedResources = false }) => {\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/hooks/useCreateContainer.js","../src/dataProvider/utils/getServerKeyFromType.js","../src/dataProvider/utils/getServerKeyFromUri.js","../src/dataProvider/utils/fetchResource.js","../src/dataProvider/methods/getOne.js","../node_modules/url-join/lib/url-join.js","../src/dataProvider/utils/uploadAllFiles.js","../src/dataProvider/utils/findContainersWithTypes.js","../src/dataProvider/methods/create.js","../src/dataProvider/methods/delete.js","../src/dataProvider/methods/deleteMany.js","../src/dataProvider/methods/getCreateContainer.js","../src/dataProvider/utils/fetchContainers.js","../src/dataProvider/utils/getEmbedFrame.js","../src/dataProvider/utils/buildDereferenceQuery.js","../src/dataProvider/utils/buildSparqlQuery.js","../src/dataProvider/utils/getRdfPrefixes.js","../src/dataProvider/utils/fetchSparqlEndpoints.js","../src/dataProvider/methods/getList.js","../src/dataProvider/methods/getMany.js","../src/dataProvider/methods/getManyReference.js","../src/dataProvider/methods/update.js","../node_modules/jwt-decode/build/jwt-decode.esm.js","../src/dataProvider/utils/fetchUserConfig.js","../src/dataProvider/utils/fetchVoidEndpoints.js","../src/dataProvider/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';\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","import { useContext, useState, useEffect } from 'react';\nimport { DataProviderContext } from 'react-admin';\n\nconst useCreateContainer = resourceId => {\n // Get the raw data provider, since useDataProvider returns a wrapper\n const dataProvider = useContext(DataProviderContext);\n const [createContainer, setCreateContainer] = useState();\n\n useEffect(() => {\n if (resourceId) {\n dataProvider.getCreateContainer(resourceId).then(containerUri => setCreateContainer(containerUri));\n }\n }, [resourceId]);\n\n return createContainer;\n};\n\nexport default useCreateContainer;\n","const getServerKeyFromType = (type, dataServers) => {\n return Object.keys(dataServers).find(key => {\n return dataServers[key][type];\n });\n};\n\nexport default getServerKeyFromType;\n","// Return the first server matching with the baseUrl\nconst getServerKeyFromUri = (uri, dataServers) => {\n return Object.keys(dataServers).find(key => {\n return uri.startsWith(dataServers[key].baseUrl);\n });\n};\n\nexport default getServerKeyFromUri;\n","import getServerKeyFromType from './getServerKeyFromType';\nimport getServerKeyFromUri from './getServerKeyFromUri';\nimport jsonld from 'jsonld';\n\nconst fetchResource = async (resourceUri, config) => {\n const { dataServers, httpClient, jsonContext } = config;\n\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n const serverKey = getServerKeyFromUri(resourceUri, dataServers);\n\n // Fetch through proxy server if it is available\n let { json: data } =\n serverKey !== authServerKey && dataServers[authServerKey]?.proxyUrl\n ? await httpClient(dataServers[authServerKey].proxyUrl, {\n method: 'POST',\n headers: new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }),\n body: new URLSearchParams({ id: resourceUri })\n })\n : await httpClient(resourceUri);\n\n data.id = data.id || data['@id'];\n\n // We compact only if the context is different between the frontend and the middleware\n // TODO deep compare if the context is an object\n if (data['@context'] !== jsonContext) {\n data = await jsonld.compact(data, jsonContext);\n }\n\n return data;\n};\n\nexport default fetchResource;\n","import fetchResource from '../utils/fetchResource';\n\nconst getOneMethod = config => async (resourceId, params) => {\n const { resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const data = await fetchResource(params.id, config);\n\n // Transform single value into array if forceArray is set\n if (dataModel.list?.forceArray) {\n for (const forceArrayItem of dataModel.list?.forceArray) {\n if (data[forceArrayItem] && !Array.isArray(data[forceArrayItem])) {\n data[forceArrayItem] = [data[forceArrayItem]];\n }\n }\n }\n\n if (dataModel.list?.dereference) {\n for (const dereferenceItem of dataModel.list?.dereference) {\n if (\n data[dereferenceItem] &&\n typeof data[dereferenceItem] === 'string' &&\n data[dereferenceItem].startsWith('http')\n ) {\n try {\n const dataToEmbed = await fetchResource(data[dereferenceItem], config);\n delete dataToEmbed['@context'];\n data[dereferenceItem] = dataToEmbed;\n } catch (e) {\n // Ignore errors (this may happen if user does not have rights to see the resource)\n }\n }\n }\n }\n\n return { data: data };\n};\n\nexport default getOneMethod;\n","(function (name, context, definition) {\n if (typeof module !== 'undefined' && module.exports) module.exports = definition();\n else if (typeof define === 'function' && define.amd) define(definition);\n else context[name] = definition();\n})('urljoin', this, function () {\n\n function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n }\n\n return function () {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n };\n\n});\n","import createSlug from 'speakingurl';\nimport urlJoin from 'url-join';\n\nexport const 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\nexport const isFile = o => o && o.rawFile && o.rawFile instanceof File;\n\nconst getUploadsContainerUri = config => {\n const serverKey = Object.keys(config.dataServers).find(key => config.dataServers[key].uploadsContainer);\n if (serverKey) {\n return urlJoin(config.dataServers[serverKey].baseUrl, config.dataServers[serverKey].uploadsContainer);\n }\n};\n\nconst uploadFile = async (rawFile, config) => {\n const uploadsContainerUri = getUploadsContainerUri(config);\n if (!uploadsContainerUri) throw new Error(\"You must define an uploadsContainer in one of the server's configuration\");\n\n const response = await config.httpClient(uploadsContainerUri, {\n method: 'POST',\n body: rawFile,\n headers: new Headers({\n // We must sluggify the file name, because we can't use non-ASCII characters in the header\n // However we keep the extension apart (if it exists) so that it is not replaced with a -\n // TODO let the middleware guess the extension based on the content type\n Slug: getSlugWithExtension(rawFile.name),\n 'Content-Type': rawFile.type\n })\n });\n\n if (response.status === 201) {\n return response.headers.get('Location');\n }\n};\n\n/*\n * Look for raw files in the record data.\n * If there are any, upload them and replace the file by its URL.\n */\nconst uploadAllFiles = async (record, config) => {\n for (let property in record) {\n if (record.hasOwnProperty(property)) {\n if (Array.isArray(record[property])) {\n for (let i = 0; i < record[property].length; i++) {\n if (isFile(record[property][i])) {\n record[property][i] = await uploadFile(record[property][i].rawFile, config);\n }\n }\n } else {\n if (isFile(record[property])) {\n record[property] = await uploadFile(record[property].rawFile, config);\n }\n }\n }\n }\n return record;\n};\n\nexport default uploadAllFiles;\n","import urlJoin from 'url-join';\n\nconst findContainersWithTypes = (types, servers, dataServers) => {\n let containers = {};\n let existingContainers = [];\n Object.keys(dataServers).forEach(key1 => {\n Object.keys(dataServers[key1].containers).forEach(key2 => {\n if (!servers || (Array.isArray(servers) ? servers.includes(key2) : servers === key2)) {\n Object.keys(dataServers[key1].containers[key2]).forEach(type => {\n if (types.includes(type)) {\n dataServers[key1].containers[key2][type].map(path => {\n const containerUri = urlJoin(dataServers[key2].baseUrl, path);\n\n // Avoid returning the same container several times\n if (!existingContainers.includes(containerUri)) {\n existingContainers.push(containerUri);\n\n if (!containers[key1]) containers[key1] = [];\n containers[key1].push(containerUri);\n }\n });\n }\n });\n }\n });\n });\n return containers;\n};\n\nexport default findContainersWithTypes;\n","import getOne from './getOne';\nimport uploadAllFiles from '../utils/uploadAllFiles';\nimport findContainersWithTypes from '../utils/findContainersWithTypes';\nimport getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst createMethod = config => async (resourceId, params) => {\n const { dataServers, resources, httpClient, jsonContext } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) Error(`Resource ${resourceId} is not mapped in resources file`);\n\n const headers = new Headers();\n\n if (dataModel.fieldsMapping?.title) {\n headers.set('Slug', params.data[dataModel.fieldsMapping?.title]);\n }\n\n let containerUri, serverKey;\n if (dataModel.create?.container) {\n containerUri = dataModel.create?.container;\n serverKey = getServerKeyFromUri(containerUri, dataServers);\n } else {\n serverKey =\n dataModel.create?.server || Object.keys(config.dataServers).find(key => config.dataServers[key].default === true);\n if (!serverKey) throw new Error('You must define a server for the creation, or a container, or a default server');\n\n const containers = findContainersWithTypes(dataModel.types, [serverKey], dataServers);\n // Extract the containerUri from the results (and ensure there is only one)\n const serverKeys = Object.keys(containers);\n\n if (!serverKeys || serverKeys.length === 0)\n throw new Error(`No container with types ${JSON.stringify(dataModel.types)} found on server ${serverKey}`);\n if (serverKeys.length > 1 || containers[serverKeys[0]].length > 1)\n throw new Error(\n `More than one container detected with types ${JSON.stringify(dataModel.types)} on server ${serverKey}`\n );\n containerUri = containers[serverKeys[0]][0];\n }\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data, config);\n\n const { headers: responseHeaders } = await httpClient(containerUri, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n '@context': jsonContext,\n '@type': dataModel.types,\n ...params.data\n }),\n noToken: dataServers[serverKey].authServer !== true\n });\n\n // Retrieve newly-created resource\n const resourceUri = responseHeaders.get('Location');\n return await getOne(config)(resourceId, { id: resourceUri });\n};\n\nexport default createMethod;\n","import getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst deleteMethod = config => async (resourceId, params) => {\n const { dataServers, httpClient } = config;\n const serverKey = getServerKeyFromUri(params.id, dataServers);\n\n await httpClient(params.id, {\n method: 'DELETE',\n noToken: !serverKey || dataServers[serverKey].authServer !== true\n });\n\n return { data: { id: params.id } };\n};\n\nexport default deleteMethod;\n","const deleteManyMethod = config => async (resourceId, params) => {\n const { httpClient } = config;\n let ids = [];\n\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 // Do nothing if we fail to delete a resource\n }\n }\n\n return { data: ids };\n};\n\nexport default deleteManyMethod;\n","import urlJoin from 'url-join';\nimport getServerKeyFromType from '../utils/getServerKeyFromType';\n\nconst findCreateContainerWithTypes = (types, createServerKey, dataServers) => {\n let containers = [];\n Object.keys(dataServers[createServerKey].containers[createServerKey]).forEach(type => {\n if (types.includes(type)) {\n dataServers[createServerKey].containers[createServerKey][type].map(path => {\n const containerUri = urlJoin(dataServers[createServerKey].baseUrl, path);\n if (!containers.includes(containerUri)) {\n containers.push(containerUri);\n }\n });\n }\n });\n\n if (containers.length === 0) {\n throw new Error(\n `No container found matching with types ${JSON.stringify(\n types\n )}. You can set explicitely the create.container property of the resource.`\n );\n } else if (containers.length > 1) {\n throw new Error(\n `More than one container found matching with types ${JSON.stringify(\n types\n )}. You must set the create.server or create.container property for the resource.`\n );\n }\n\n return containers[0];\n};\n\nconst getCreateContainer = config => resourceId => {\n let { dataServers, resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n if (dataModel.create?.container) {\n return dataModel.create?.container;\n } else if (dataModel.create?.server) {\n return findCreateContainerWithTypes(dataModel.types, dataModel.create?.server, dataServers);\n } else {\n const defaultServerKey = getServerKeyFromType('default', dataServers);\n return findCreateContainerWithTypes(dataModel.types, defaultServerKey, dataServers);\n }\n};\n\nexport default getCreateContainer;\n","import jsonld from 'jsonld';\n\nexport const isType = (type, resource) => {\n const resourceType = resource.type || resource['@type'];\n return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;\n};\n\nconst fetchContainers = async (containers, resourceId, params, config) => {\n const { dataServers, httpClient, jsonContext } = config;\n\n // Transform in an containerUri:serverKey object\n const containersServers = Object.keys(containers).reduce(\n (acc, serverKey) => ({\n ...acc,\n ...Object.fromEntries(containers[serverKey].map(containerUri => [containerUri, serverKey]))\n }),\n {}\n );\n\n const fetchPromises = Object.keys(containersServers).map(containerUri =>\n httpClient(containerUri, {\n noToken: !containersServers[containerUri] || dataServers[containersServers[containerUri]].authServer !== true\n })\n .then(({ json }) => {\n // If container's context is different, compact it to have an uniform result\n // TODO deep compare if the context is an object\n if (json['@context'] !== jsonContext) {\n return jsonld.compact(json, jsonContext);\n } else {\n return json;\n }\n })\n .then(json => {\n if (isType('ldp:Container', json)) {\n return json['ldp:contains'];\n } else {\n throw new Error(containerUri + ' is not a LDP container');\n }\n })\n );\n\n // Fetch simultaneously all containers\n let results = await Promise.all(fetchPromises);\n\n if (results.length === 0) {\n return { data: [], total: 0 };\n } else {\n // Merge all results in one array\n results = [].concat.apply(...results);\n\n let returnData = results.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // Apply filter to results\n if (params.filter) {\n // For SPARQL queries, we use \"a\" to filter types, but in containers it must be \"type\"\n if (params.filter.a) {\n params.filter.type = params.filter.a;\n delete params.filter.a;\n }\n\n // 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: results.length };\n }\n};\n\nexport default fetchContainers;\n","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\nexport default getEmbedFrame;\n","import crypto from 'crypto';\n\n// Transform ['ont:predicate1/ont:predicate2'] to ['ont:predicate1', 'ont:predicate1/ont:predicate2']\nconst extractNodes = predicates => {\n let nodes = [];\n if (predicates) {\n for (let predicate of predicates) {\n if (predicate.includes('/')) {\n const nodeNames = predicate.split('/');\n for (let i = 1; i <= nodeNames.length; i++) {\n nodes.push(nodeNames.slice(0, i).join('/'));\n }\n } else {\n nodes.push(predicate);\n }\n }\n }\n return nodes;\n};\n\nconst generateSparqlVarName = node =>\n crypto\n .createHash('md5')\n .update(node)\n .digest('hex');\n\nconst getParentNode = node => node.includes('/') && node.split('/')[0];\n\nconst getPredicate = node => (node.includes('/') ? node.split('/')[1] : node);\n\nconst buildOptionalQuery = (queries, parentNode = false) =>\n queries\n .filter(q => q.parentNode === parentNode)\n .map(\n q => `\n OPTIONAL { \n ${q.query}\n ${q.filter}\n ${buildOptionalQuery(queries, q.node)}\n }\n `\n )\n .join('\\n');\n\nconst buildDereferenceQuery = predicates => {\n let queries = [];\n const nodes = extractNodes(predicates);\n\n if (nodes) {\n for (let node of nodes) {\n const parentNode = getParentNode(node);\n const predicate = getPredicate(node);\n const varName = generateSparqlVarName(node);\n const parentVarName = parentNode ? generateSparqlVarName(parentNode) : '1';\n\n queries.push({\n node,\n parentNode,\n query: `?s${parentVarName} ${predicate} ?s${varName} .\\n?s${varName} ?p${varName} ?o${varName} .`,\n filter: '' // `FILTER(isBLANK(?s${varName})) .`\n });\n }\n\n return {\n construct: queries.map(q => q.query).join('\\n'),\n where: buildOptionalQuery(queries)\n };\n } else {\n return {\n construct: '',\n where: ''\n };\n }\n};\n\nexport default buildDereferenceQuery;\n","import buildDereferenceQuery from './buildDereferenceQuery';\nimport getRdfPrefixes from './getRdfPrefixes';\n\nconst buildSparqlQuery = ({ containers, 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 ${getRdfPrefixes(ontologies)}\n CONSTRUCT {\n ?s1 ?p2 ?o2 .\n ${dereferenceQuery.construct}\n }\n WHERE {\n ?containerUri ldp:contains ?s1 .\n FILTER( ?containerUri IN (${containers.map(container => `<${container}>`).join(', ')}) ) .\n FILTER( (isIRI(?s1)) ) .\n ${whereQuery}\n ${dereferenceQuery.where}\n ?s1 ?p2 ?o2 .\n }\n `;\n};\n\nexport default buildSparqlQuery;\n","const getRdfPrefixes = ontologies => {\n return ontologies.map(ontology => `PREFIX ${ontology.prefix}: <${ontology.url}>`).join('\\n');\n};\n\nexport default getRdfPrefixes;\n","import getEmbedFrame from './getEmbedFrame';\nimport buildSparqlQuery from './buildSparqlQuery';\nimport jsonld from 'jsonld';\n\nconst fetchSparqlEndpoints = async (containers, resourceId, params, config) => {\n const { dataServers, resources, httpClient, jsonContext, ontologies } = config;\n const dataModel = resources[resourceId];\n\n const frame = {\n '@context': jsonContext,\n '@type': dataModel.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(dataModel.list?.dereference)\n };\n\n const sparqlQueryPromises = Object.keys(containers).map(\n serverKey =>\n new Promise((resolve, reject) => {\n const sparqlQuery = buildSparqlQuery({\n containers: containers[serverKey],\n params: { ...params, filter: { ...dataModel.list?.filter, ...params.filter } },\n dereference: dataModel.list?.dereference,\n ontologies\n });\n\n httpClient(dataServers[serverKey].sparqlEndpoint, {\n method: 'POST',\n body: sparqlQuery,\n noToken: dataServers[serverKey].authServer !== true\n })\n .then(({ json }) => {\n // omitGraph option force results to be in a @graph, even if we have a single result\n return jsonld.frame(json, frame, { omitGraph: false });\n })\n .then(compactJson => {\n resolve(compactJson['@graph'] || []);\n })\n .catch(e => reject(e));\n })\n );\n\n // Run simultaneous SPARQL queries\n let results = await Promise.all(sparqlQueryPromises);\n\n if (results.length === 0) {\n return { data: [], total: 0 };\n } else {\n // Merge all results in one array\n results = [].concat.apply(...results);\n\n // Add id in addition to @id, as this is what React-Admin expects\n let returnData = results.map(item => {\n item.id = item.id || item['@id'];\n return item;\n });\n\n // TODO sort and paginate the results in the SPARQL query to improve performances\n if (params.sort) {\n returnData = returnData.sort((a, b) => {\n if (a[params.sort.field] && 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: results.length };\n }\n};\n\nexport default fetchSparqlEndpoints;\n","import findContainersWithTypes from '../utils/findContainersWithTypes';\nimport fetchContainers from '../utils/fetchContainers';\nimport fetchSparqlEndpoints from '../utils/fetchSparqlEndpoints';\n\nconst getListMethod = config => async (resourceId, params = {}) => {\n let { dataServers, resources } = config;\n const dataModel = resources[resourceId];\n\n if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);\n\n let containers;\n if (dataModel.list?.containers && dataModel.list?.containers.length > 0) {\n // If containers are set explicitly, use them\n containers = dataModel.list?.containers;\n } else {\n containers = findContainersWithTypes(dataModel.types, dataModel.list?.servers, dataServers);\n }\n\n if (dataModel.list?.fetchContainer) {\n return fetchContainers(containers, resourceId, params, config);\n } else {\n return fetchSparqlEndpoints(containers, resourceId, params, config);\n }\n};\n\nexport default getListMethod;\n","import getOne from './getOne';\n\nconst getManyMethod = config => async (resourceId, params) => {\n const { returnFailedResources } = config;\n\n let returnData = [];\n\n for (let id of params.ids) {\n id = typeof id === 'object' ? id['@id'] : id;\n\n try {\n const { data } = await getOne(config)(resourceId, { id });\n returnData.push(data);\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\nexport default getManyMethod;\n","import getList from './getList';\n\nconst getManyReferenceMethod = config => async (resourceId, params) => {\n params.filter = { ...params.filter, [params.target]: params.id };\n delete params.target;\n return await getList(config)(params);\n};\n\nexport default getManyReferenceMethod;\n","import uploadAllFiles from '../utils/uploadAllFiles';\nimport getServerKeyFromUri from '../utils/getServerKeyFromUri';\n\nconst updateMethod = config => async (resourceId, params) => {\n const { dataServers, httpClient, jsonContext } = config;\n const serverKey = getServerKeyFromUri(params.id, dataServers);\n\n // Upload files, if there are any\n params.data = await uploadAllFiles(params.data, config);\n\n await httpClient(params.id, {\n method: 'PUT',\n body: JSON.stringify({\n '@context': jsonContext,\n ...params.data\n }),\n noToken: !serverKey || dataServers[serverKey].authServer !== true\n });\n\n return { data: params.data };\n};\n\nexport default updateMethod;\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import jwtDecode from 'jwt-decode';\nimport getServerKeyFromType from './getServerKeyFromType';\nimport urlJoin from 'url-join';\n\nconst getContainerFromUri = str => str.match(new RegExp(`(.*)/.*`))[1];\n\nconst fetchUserConfig = async config => {\n const { dataServers, httpClient } = config;\n const token = localStorage.getItem('token');\n const podKey = getServerKeyFromType('pod', dataServers);\n const authServerKey = getServerKeyFromType('authServer', dataServers);\n\n // If the user is logged in\n if (token) {\n const { webId } = jwtDecode(token);\n const { json: userData } = await httpClient(webId);\n\n // If we have a POD server\n if (podKey) {\n // Fill the config provided to the data provider\n // We must modify the config object directly\n config.dataServers[podKey].name = 'My Pod';\n config.dataServers[podKey].baseUrl = urlJoin(webId, 'data'); // TODO find POD URI from user profile\n config.dataServers[podKey].sparqlEndpoint =\n userData.endpoints?.['void:sparqlEndpoint'] || urlJoin(webId, 'sparql');\n }\n\n if (authServerKey) {\n // Fill the config provided to the data provider\n // We must modify the config object directly\n config.dataServers[authServerKey].proxyUrl = userData.endpoints?.proxyUrl;\n }\n } else {\n if (podKey) {\n // If the user is not logged in, ignore the POD server\n delete config.dataServers[podKey];\n }\n }\n};\n\nexport default fetchUserConfig;\n","const fetchVoidEndpoints = async config => {\n const fetchPromises = Object.values(config.dataServers)\n .filter(server => server.pod !== true)\n .map(server =>\n config\n .httpClient(new URL('/.well-known/void', server.baseUrl))\n .then(result => ({ data: result.json }))\n .catch(e => {\n if (e.status === 404) {\n return { error: e };\n } else {\n throw e;\n }\n })\n );\n\n const results = await Promise.all(fetchPromises);\n\n for (let result of results) {\n // Ignore unfetchable endpoints\n if (result.data) {\n // TODO modify config.dataServers based on the VOID configs returned\n }\n }\n};\n\nexport default fetchVoidEndpoints;\n","import createMethod from './methods/create';\nimport deleteMethod from './methods/delete';\nimport deleteManyMethod from './methods/deleteMany';\nimport getCreateContainerMethod from './methods/getCreateContainer';\nimport getListMethod from './methods/getList';\nimport getManyMethod from './methods/getMany';\nimport getManyReferenceMethod from './methods/getManyReference';\nimport getOneMethod from './methods/getOne';\nimport updateMethod from './methods/update';\nimport fetchUserConfig from './utils/fetchUserConfig';\nimport fetchVoidEndpoints from './utils/fetchVoidEndpoints';\nimport getServerKeyFromType from './utils/getServerKeyFromType';\n\nconst dataProvider = config => {\n // TODO verify all data provider config + data models\n if (!getServerKeyFromType('default', config.dataServers))\n throw new Error('You must define a default server in your dataServers config');\n\n if (!config.jsonContext) config.jsonContext = Object.fromEntries(config.ontologies.map(o => [o.prefix, o.url]));\n if (!config.returnFailedResources) config.returnFailedResources = false;\n\n const fetchUserConfigPromise = fetchUserConfig(config);\n const fetchVoidEndpointsPromise = fetchVoidEndpoints(config);\n\n const waitForVoidEndpoints = method => async (...arg) => {\n await fetchUserConfigPromise;\n await fetchVoidEndpointsPromise; // Return immediately if promise is fulfilled\n return await method(...arg);\n };\n\n return {\n getList: waitForVoidEndpoints(getListMethod(config)),\n getOne: waitForVoidEndpoints(getOneMethod(config)),\n getMany: waitForVoidEndpoints(getManyMethod(config)),\n getManyReference: waitForVoidEndpoints(getManyReferenceMethod(config)),\n create: waitForVoidEndpoints(createMethod(config)),\n update: waitForVoidEndpoints(updateMethod(config)),\n updateMany: () => {\n throw new Error('updateMany is not implemented yet');\n },\n delete: waitForVoidEndpoints(deleteMethod(config)),\n deleteMany: waitForVoidEndpoints(deleteManyMethod(config)),\n getCreateContainer: waitForVoidEndpoints(getCreateContainerMethod(config))\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 if (!options.noToken) {\n const token = localStorage.getItem('token');\n if (token) options.headers.set('Authorization', `Bearer ${token}`);\n }\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","useCreateContainer","resourceId","dataProvider","useContext","DataProviderContext","createContainer","setCreateContainer","getCreateContainer","then","containerUri","getServerKeyFromType","dataServers","Object","keys","find","getServerKeyFromUri","uri","startsWith","baseUrl","fetchResource","resourceUri","config","httpClient","jsonContext","authServerKey","_dataServers$authServ","proxyUrl","method","headers","Headers","body","URLSearchParams","json","jsonld","compact","getOneMethod","params","resources","dataModel","Error","list","_dataModel$list","forceArray","_dataModel$list2","forceArrayItem","_dataModel$list3","dereference","_dataModel$list4","dereferenceItem","dataToEmbed","context","definition","this","normalize","strArray","resultArray","TypeError","match","first","shift","component","push","str","join","parts","split","arguments","slice","call","module","exports","isFile","o","rawFile","File","getUploadsContainerUri","serverKey","uploadsContainer","urlJoin","uploadFile","uploadsContainerUri","Slug","fileName","name","fileExtension","splitFileName","pop","createSlug","lang","response","status","get","uploadAllFiles","property","hasOwnProperty","findContainersWithTypes","types","servers","containers","existingContainers","forEach","key1","key2","path","createMethod","fieldsMapping","_dataModel$fieldsMapp","title","set","_dataModel$fieldsMapp2","create","_dataModel$create","container","_dataModel$create2","server","serverKeys","JSON","stringify","noToken","authServer","responseHeaders","getOne","deleteMethod","deleteManyMethod","ids","findCreateContainerWithTypes","createServerKey","_dataModel$create3","_dataModel$create4","defaultServerKey","fetchContainers","containersServers","reduce","acc","fromEntries","fetchPromises","resourceType","Promise","all","results","total","concat","apply","returnData","item","a","q","entries","some","k","sort","b","field","order","localeCompare","pagination","page","perPage","getEmbedFrame","paths","predicates","embedFrame","reverse","accumulator","predicate","generateSparqlVarName","node","crypto","createHash","update","digest","getParentNode","getPredicate","buildOptionalQuery","queries","parentNode","query","buildDereferenceQuery","nodes","nodeNames","extractNodes","varName","parentVarName","construct","where","buildSparqlQuery","ontologies","whereQuery","toLowerCase","object","dereferenceQuery","ontology","prefix","url","getRdfPrefixes","fetchSparqlEndpoints","frame","sparqlQueryPromises","resolve","reject","sparqlQuery","sparqlEndpoint","omitGraph","compactJson","e","getListMethod","_dataModel$list5","fetchContainer","getManyMethod","returnFailedResources","getManyReferenceMethod","target","getList","updateMethod","message","prototype","window","atob","bind","t","String","n","c","charAt","fromCharCode","indexOf","decodeURIComponent","charCodeAt","toString","toUpperCase","header","parse","fetchUserConfig","token","localStorage","getItem","podKey","jwtDecode","webId","userData","endpoints","_userData$endpoints2","fetchVoidEndpoints","values","pod","URL","result","error","fetchUserConfigPromise","fetchVoidEndpointsPromise","waitForVoidEndpoints","getMany","getManyReference","updateMany","deleteMany","getCreateContainerMethod","options","has","fetchUtils","fetchJson"],"mappings":"wmIAGMA,EAAa,gBAAGC,IAAAA,OAAQC,IAAAA,OAAWC,iCAEjB,iBAAXF,IAAqBA,OAAYC,EAASD,IAC9CG,gBAACC,KAAaJ,OAAQA,EAAQC,OAAQA,GAAYC,KCHrDG,EAAsB,gBAAGL,IAAAA,OAAQC,IAAAA,OAAWC,kCAC5CF,MAAAA,SAAAA,EAASC,MACNK,MAAMC,QAAQP,EAAOC,MACxBD,EAAOC,GAAU,CAACD,EAAOC,KAE3BD,EAAOC,GAAUD,EAAOC,GAAQO,KAAI,SAAAC,UAAKA,EAAE,QAAUA,EAAEC,IAAMD,MAExDN,gBAACQ,KAAsBX,OAAQA,EAAQC,OAAQA,GAAYC,KAGpEG,EAAoBO,aAAe,CACjCC,UAAU,OCXNC,EAAiB,gBAAGd,IAAAA,OAAQC,IAAAA,OAAWC,kCACvCF,EAAOC,IACqB,WAA1Bc,EAAOf,EAAOC,MAChBD,EAAOC,GAAUD,EAAOC,GAAQ,QAAUD,EAAOC,GAAQS,IAGtDP,gBAACa,KAAiBhB,OAAQA,EAAQC,OAAQA,GAAYC,KAG/DY,EAAeF,aAAe,CAC5BC,UAAU,OCINI,EAAgB,gBAAGC,IAAAA,SAAUlB,IAAAA,OAAQmB,IAAAA,OAAQlB,IAAAA,OAAWC,mDAC5BkB,OAAzBC,OAAUC,cACjBC,GAAU,cACJvB,GAAUC,GAAUK,MAAMC,QAAQP,MAAAA,SAAAA,EAASC,IAAU,KACjDuB,EAAexB,MAAAA,SAAAA,EAASC,GAAQkB,QAAO,SAAAM,OACvCC,GAAK,MACJ,IAAMC,KAAOR,EAAQ,KAClBS,EAAQH,EAAEE,GACZrB,MAAMC,QAAQqB,GACXA,EAAMC,SAASV,EAAOQ,MACzBD,GAAK,GAGHE,IAAUT,EAAOQ,KACnBD,GAAK,UAIJA,KAELI,OACC9B,GAGL8B,EAAU7B,GAAUuB,EAAaO,OAAS,EAAIP,OAAeQ,EAC7DV,EAAYQ,MAEb,CAAC9B,EAAQC,EAAQkB,IAGlBhB,gCACGA,EAAM8B,SAASzB,IAAIU,GAAU,SAACgB,EAAOzB,UAC7BN,EAAMgC,aAAaD,SACrBhC,OACHF,OAAQqB,EACRR,UAAU,EACVZ,OAAAA,UCeJmC,EAA0B,gBAC9BlB,IAAAA,SACAmB,IAAAA,eACAC,IAAAA,WACAC,IAAAA,YACAC,IAAAA,eACGtC,iFAEKuC,EAASC,EAAkB,CACjCC,KAAM,UACNC,SAAUP,EACVQ,QAAS,KAHHJ,YAONtC,gCACGsC,MAAAA,SAAAA,EAAMjC,KAAI,SAACiC,EAAMK,OACZ3B,EAAS,UACbA,EAAOqB,GAAkBC,EAAK/B,GAE5BP,gCACGoC,GAAeA,SAAiBrC,OAAY6C,MAAON,KACpDtC,gBAACc,OAAkBf,GAAYiB,OAAQA,EAAQ6B,MAAOP,EAAKH,KACxDpB,SCrFT+B,EAAgB,SAAAC,UACpB/C,gBAACgD,OAAoBD,GAAOE,OAAQ,SAAAxB,UAASA,GAASA,EAAMyB,QAAQ,IAAK,KAAKA,QAAQ,IAAK,SCJvFC,EAAsB,SAAAJ,OACpBN,EAAWW,EAAmB,WAElCpD,gBAACqD,OACKN,GACJN,SAAUA,EACVQ,OAAQ,SAAAxB,UAEDA,GAIAtB,MAAMC,QAAQqB,KAAQA,EAAQ,CAACA,IAEhCsB,EAAME,SAAQxB,EAAQsB,EAAME,OAAOxB,IAEhCA,EAAMpB,KAAI,SAAAiD,SAAmB,WAAb1C,EAAO0C,GAAiBA,EAAE/C,IAAM+C,EAAE,OAASA,MAR/C7B,OCRrB8B,EAAiB,SAAAR,OACfN,EAAWW,EAAmB,WAElCpD,gBAACwD,OACKT,GACJN,SAAUA,EACVQ,OAAQ,SAAAxB,UAEDA,GAEDsB,EAAME,SAAQxB,EAAQsB,EAAME,OAAOxB,IAEf,WAAjBb,EAAOa,GAAqBA,EAAMlB,IAAMkB,EAAM,OAASA,GAJ3CA,OCPrBgC,EAA0BC,EAAW,CACzCC,KAAM,CACJC,QAAS,QAEXC,MAAO,CACLC,aAAc,UAIZC,EAAqBL,EAAW,CACpCM,KAAM,CACJJ,QAAS,UAIPK,EAAwB,SAAAlB,OACpBmB,EAA8CnB,EAA9CmB,iBAA+BnE,GAAegD,EAA5BhC,WAA4BgC,oCAChDoB,EAAkBV,IAClBW,EAAkBL,WAGtB/D,gBAACqE,EAAetE,EACdC,gBAACsE,GAAmBC,QAAS,CAAEZ,KAAMQ,EAAgBR,OAClD3D,EAAM8B,SAASzB,IAAI0C,EAAMhC,UAAU,SAACgB,EAAOzB,UACnCN,EAAMgC,aAAaD,EAAO,CAC/ByC,UAAWL,EAAgBN,WAG/B7D,gBAACyE,GAAUD,UAAWJ,EAAgBJ,KAAMlE,OAAO,OAAO4E,aAAcR,OC7B1ES,EAAqB,SAAAC,OAEnBC,EAAeC,EAAWC,OACc9D,OAAvC+D,OAAiBC,cAExB7D,GAAU,WACJwD,GACFC,EAAaK,mBAAmBN,GAAYO,MAAK,SAAAC,UAAgBH,EAAmBG,QAErF,CAACR,IAEGI,GCdHK,EAAuB,SAAC7C,EAAM8C,UAC3BC,OAAOC,KAAKF,GAAaG,MAAK,SAAAjE,UAC5B8D,EAAY9D,GAAKgB,OCDtBkD,EAAsB,SAACC,EAAKL,UACzBC,OAAOC,KAAKF,GAAaG,MAAK,SAAAjE,UAC5BmE,EAAIC,WAAWN,EAAY9D,GAAKqE,aCCrCC,8CAAgB,WAAOC,EAAaC,wGAChCV,EAAyCU,EAAzCV,YAAaW,EAA4BD,EAA5BC,WAAYC,EAAgBF,EAAhBE,YAE3BC,EAAgBd,EAAqB,aAAcC,GACvCI,EAAoBK,EAAaT,KAInCa,eAAiBb,EAAYa,uBAAZC,EAA4BC,0CACjDJ,EAAWX,EAAYa,GAAeE,SAAU,CACpDC,OAAQ,OACRC,QAAS,IAAIC,QAAQ,gBAAkB,sCACvCC,KAAM,IAAIC,gBAAgB,CAAEnG,GAAIwF,iEAE5BE,EAAWF,0CAPXzD,IAANqE,MASDpG,GAAK+B,EAAK/B,IAAM+B,EAAK,OAItBA,EAAK,cAAgB4D,oCACVU,EAAOC,QAAQvE,EAAM4D,WAAlC5D,0CAGKA,uGC1BHwE,EAAe,SAAAd,sDAAU,WAAOpB,EAAYmC,sHACxCC,EAAchB,EAAdgB,UACFC,EAAYD,EAAUpC,yBAEN,IAAIsC,yBAAkBtC,8DAEzBkB,EAAciB,EAAOxG,GAAIyF,aAAtC1D,mBAGF2E,EAAUE,yBAAVC,EAAgBC,WAAY,eACDJ,EAAUE,yBAAVG,EAAgBD,2CAAlCE,UACLjF,EAAKiF,KAAoBpH,MAAMC,QAAQkC,EAAKiF,MAC9CjF,EAAKiF,GAAkB,CAACjF,EAAKiF,mDAK/BN,EAAUE,yBAAVK,EAAgBC,4CACYR,EAAUE,yBAAVO,EAAgBD,2EAAnCE,WAEPrF,EAAKqF,IAC4B,iBAA1BrF,EAAKqF,KACZrF,EAAKqF,GAAiB/B,WAAW,oDAGLE,EAAcxD,EAAKqF,GAAkB3B,kBAAzD4B,UACa,YACnBtF,EAAKqF,GAAmBC,+NAQzB,CAAEtF,KAAMA,sWCrCjB,IAAiBuF,EAASC,EAATD,EAIHE,EAJYD,EAIN,WAElB,SAASE,EAAWC,GAClB,IAAIC,EAAc,GAClB,GAAwB,IAApBD,EAASrG,OAAgB,MAAO,GAEpC,GAA2B,iBAAhBqG,EAAS,GAClB,MAAM,IAAIE,UAAU,kCAAoCF,EAAS,IAInE,GAAIA,EAAS,GAAGG,MAAM,iBAAmBH,EAASrG,OAAS,EAAG,CAC5D,IAAIyG,EAAQJ,EAASK,QACrBL,EAAS,GAAKI,EAAQJ,EAAS,GAI7BA,EAAS,GAAGG,MAAM,gBACpBH,EAAS,GAAKA,EAAS,GAAG/E,QAAQ,gBAAiB,UAEnD+E,EAAS,GAAKA,EAAS,GAAG/E,QAAQ,gBAAiB,SAGrD,IAAK,IAAI5C,EAAI,EAAGA,EAAI2H,EAASrG,OAAQtB,IAAK,CACxC,IAAIiI,EAAYN,EAAS3H,GAEzB,GAAyB,iBAAdiI,EACT,MAAM,IAAIJ,UAAU,kCAAoCI,GAGxC,KAAdA,IAEAjI,EAAI,IAENiI,EAAYA,EAAUrF,QAAQ,SAAU,KAIxCqF,EAFEjI,EAAI2H,EAASrG,OAAS,EAEZ2G,EAAUrF,QAAQ,SAAU,IAG5BqF,EAAUrF,QAAQ,SAAU,KAG1CgF,EAAYM,KAAKD,IAInB,IAAIE,EAAMP,EAAYQ,KAAK,KAOvBC,GAHJF,EAAMA,EAAIvF,QAAQ,kBAAmB,OAGrB0F,MAAM,KAGtB,OAFAH,EAAME,EAAML,SAAWK,EAAM/G,OAAS,EAAI,IAAK,IAAM+G,EAAMD,KAAK,KAKlE,OAAO,WASL,OAAOV,EANqB,iBAAjBa,UAAU,GACXA,UAAU,GAEV,GAAGC,MAAMC,KAAKF,cAtEWG,EAAOC,QAASD,UAAiBlB,IAEjED,EAAY,QAAIC,OCUVoB,EAAS,SAAAC,UAAKA,GAAKA,EAAEC,SAAWD,EAAEC,mBAAmBC,MAE5DC,EAAyB,SAAAtD,OACvBuD,EAAYhE,OAAOC,KAAKQ,EAAOV,aAAaG,MAAK,SAAAjE,UAAOwE,EAAOV,YAAY9D,GAAKgI,uBAClFD,SACKE,EAAQzD,EAAOV,YAAYiE,GAAW1D,QAASG,EAAOV,YAAYiE,GAAWC,mBAIlFE,+CAAa,WAAON,EAASpD,8FAC3B2D,EAAsBL,EAAuBtD,yBACnB,IAAIkB,MAAM,mGAEnBlB,EAAOC,WAAW0D,EAAqB,CAC5DrD,OAAQ,OACRG,KAAM2C,EACN7C,QAAS,IAAIC,QAAQ,CAInBoD,MA9B8BC,EA8BHT,EAAQU,KA7BnCC,OAAAA,EACAC,OAAAA,EADAD,EAAgB,GAChBC,EAAgBH,EAASjB,MAAM,KAC/BoB,EAAcpI,OAAS,IACzBmI,EAAgBC,EAAcC,MAC9BJ,EAAWG,EAActB,KAAK,MAEzBwB,EAAWL,EAAU,CAAEM,KAAM,OAAU,IAAMJ,kBAwBhCX,EAAQ5G,mBAIJ,OAZlB4H,UAYOC,gDACJD,EAAS7D,QAAQ+D,IAAI,8CApCI,IAAAT,EAC9BE,EACAC,mEA0CAO,+CAAiB,WAAO1K,EAAQmG,wHACfnG,oDAAZ2K,cACH3K,EAAO4K,eAAeD,wBACpBrK,MAAMC,QAAQP,EAAO2K,qBACdlK,EAAI,cAAGA,EAAIT,EAAO2K,GAAU5I,6BAC/BsH,EAAOrJ,EAAO2K,GAAUlK,sCACEoJ,GAAW7J,EAAO2K,GAAUlK,GAAG8I,QAASpD,WAApEnG,EAAO2K,GAAUlK,kBAFwBA,uDAMzC4I,EAAOrJ,EAAO2K,sCACSd,GAAW7J,EAAO2K,GAAUpB,QAASpD,WAA9DnG,EAAO2K,kEAKR3K,uGC7DH6K,GAA0B,SAACC,EAAOC,EAAStF,OAC3CuF,EAAa,GACbC,EAAqB,UACzBvF,OAAOC,KAAKF,GAAayF,SAAQ,SAAAC,GAC/BzF,OAAOC,KAAKF,EAAY0F,GAAMH,YAAYE,SAAQ,SAAAE,GAC3CL,KAAYzK,MAAMC,QAAQwK,GAAWA,EAAQlJ,SAASuJ,GAAQL,IAAYK,IAC7E1F,OAAOC,KAAKF,EAAY0F,GAAMH,WAAWI,IAAOF,SAAQ,SAAAvI,GAClDmI,EAAMjJ,SAASc,IACjB8C,EAAY0F,GAAMH,WAAWI,GAAMzI,GAAMnC,KAAI,SAAA6K,OACrC9F,EAAeqE,EAAQnE,EAAY2F,GAAMpF,QAASqF,GAGnDJ,EAAmBpJ,SAAS0D,KAC/B0F,EAAmBtC,KAAKpD,GAEnByF,EAAWG,KAAOH,EAAWG,GAAQ,IAC1CH,EAAWG,GAAMxC,KAAKpD,gBAQ7ByF,GCrBHM,GAAe,SAAAnF,sDAAU,WAAOpB,EAAYmC,8HACxCzB,EAAoDU,EAApDV,YAAa0B,EAAuChB,EAAvCgB,UAAWf,EAA4BD,EAA5BC,WAAYC,EAAgBF,EAAhBE,YACtCe,EAAYD,EAAUpC,GAItB2B,EAAU,IAAIC,mBAEhBS,EAAUmE,kCAAVC,EAAyBC,QAC3B/E,EAAQgF,IAAI,OAAQxE,EAAOzE,eAAK2E,EAAUmE,kCAAVI,EAAyBF,oBAIvDrE,EAAUwE,2BAAVC,EAAkBC,4BACpBvG,YAAe6B,EAAUwE,2BAAVG,EAAkBD,UACjCpC,EAAY7D,EAAoBN,EAAcE,8BAE9CiE,aACEtC,EAAUwE,6BAAQI,SAAUtG,OAAOC,KAAKQ,EAAOV,aAAaG,MAAK,SAAAjE,UAA2C,IAApCwE,EAAOV,YAAY9D,qCACvE,IAAI0F,MAAM,6FAE1B2D,EAAaH,GAAwBzD,EAAU0D,MAAO,CAACpB,GAAYjE,IAEnEwG,EAAavG,OAAOC,KAAKqF,KAEU,IAAtBiB,EAAWlK,8BACtB,IAAIsF,wCAAiC6E,KAAKC,UAAU/E,EAAU0D,mCAA0BpB,iBAC5FuC,EAAWlK,OAAS,GAAKiJ,EAAWiB,EAAW,IAAIlK,OAAS,0BACxD,IAAIsF,4DACuC6E,KAAKC,UAAU/E,EAAU0D,6BAAoBpB,YAEhGnE,EAAeyF,EAAWiB,EAAW,IAAI,4BAIvBvB,GAAexD,EAAOzE,KAAM0D,kBAAhDe,EAAOzE,sBAEoC2D,EAAWb,EAAc,CAClEkB,OAAQ,OACRC,QAAAA,EACAE,KAAMsF,KAAKC,wBACG9F,UACHe,EAAU0D,OAChB5D,EAAOzE,OAEZ2J,SAA+C,IAAtC3G,EAAYiE,GAAW2C,qCARjBC,IAAT5F,QAYFR,EAAcoG,EAAgB7B,IAAI,sBAC3B8B,EAAOpG,EAAPoG,CAAexH,EAAY,CAAErE,GAAIwF,kJCrD1CsG,GAAe,SAAArG,sDAAU,WAAOpB,EAAYmC,oGACxCzB,EAA4BU,EAA5BV,YAAaW,EAAeD,EAAfC,WACfsD,EAAY7D,EAAoBqB,EAAOxG,GAAI+E,YAE3CW,EAAWc,EAAOxG,GAAI,CAC1B+F,OAAQ,SACR2F,SAAU1C,IAAmD,IAAtCjE,EAAYiE,GAAW2C,6CAGzC,CAAE5J,KAAM,CAAE/B,GAAIwG,EAAOxG,0GCXxB+L,GAAmB,SAAAtG,sDAAU,WAAOpB,EAAYmC,iGAC5Cd,EAAeD,EAAfC,WACJsG,EAAM,OAEKxF,EAAOwF,qEAAbhM,6BAEC0F,EAAW1F,EAAI,CACnB+F,OAAQ,mBAEViG,EAAI/D,KAAKjI,6NAMN,CAAE+B,KAAMiK,oICZXC,GAA+B,SAAC7B,EAAO8B,EAAiBnH,OACxDuF,EAAa,MACjBtF,OAAOC,KAAKF,EAAYmH,GAAiB5B,WAAW4B,IAAkB1B,SAAQ,SAAAvI,GACxEmI,EAAMjJ,SAASc,IACjB8C,EAAYmH,GAAiB5B,WAAW4B,GAAiBjK,GAAMnC,KAAI,SAAA6K,OAC3D9F,EAAeqE,EAAQnE,EAAYmH,GAAiB5G,QAASqF,GAC9DL,EAAWnJ,SAAS0D,IACvByF,EAAWrC,KAAKpD,SAME,IAAtByF,EAAWjJ,aACP,IAAIsF,uDACkC6E,KAAKC,UAC7CrB,gFAGC,GAAIE,EAAWjJ,OAAS,QACvB,IAAIsF,kEAC6C6E,KAAKC,UACxDrB,8FAKCE,EAAW,IAGd3F,GAAqB,SAAAc,UAAU,SAAApB,eAC7BU,EAA2BU,EAA3BV,YACA2B,EAD2BjB,EAAdgB,UACSpC,OAEvBqC,EAAW,MAAM,IAAIC,yBAAkBtC,oDAExCqC,EAAUwE,2BAAVC,EAAkBC,2BACb1E,EAAUwE,2BAAVG,EAAkBD,UACpB,aAAI1E,EAAUwE,2BAAViB,EAAkBb,cACpBW,GAA6BvF,EAAU0D,gBAAO1D,EAAUwE,2BAAVkB,EAAkBd,OAAQvG,OAEzEsH,EAAmBvH,EAAqB,UAAWC,UAClDkH,GAA6BvF,EAAU0D,MAAOiC,EAAkBtH,KCtCrEuH,+CAAkB,WAAOhC,EAAYjG,EAAYmC,EAAQf,8GACrDV,EAAyCU,EAAzCV,YAAaW,EAA4BD,EAA5BC,WAAYC,EAAgBF,EAAhBE,YAG3B4G,EAAoBvH,OAAOC,KAAKqF,GAAYkC,QAChD,SAACC,EAAKzD,iBACDyD,GACAzH,OAAO0H,YAAYpC,EAAWtB,GAAWlJ,KAAI,SAAA+E,SAAgB,CAACA,EAAcmE,UAEjF,IAGI2D,EAAgB3H,OAAOC,KAAKsH,GAAmBzM,KAAI,SAAA+E,UACvDa,EAAWb,EAAc,CACvB6G,SAAUa,EAAkB1H,KAA6E,IAA5DE,EAAYwH,EAAkB1H,IAAe8G,aAEzF/G,MAAK,gBAAGwB,IAAAA,YAGHA,EAAK,cAAgBT,EAChBU,EAAOC,QAAQF,EAAMT,GAErBS,KAGVxB,MAAK,SAAAwB,MA9BWnE,EA+BJ,gBA9BX2K,GADqB1K,EA+BOkE,GA9BJnE,MAAQC,EAAS,SACxCtC,MAAMC,QAAQ+M,GAAgBA,EAAazL,SAASc,GAAQ2K,IAAiB3K,SA8BrEmE,EAAK,sBAEN,IAAIO,MAAM9B,EAAe,2BAlCnB,IAAC5C,EAAMC,EACrB0K,iBAuCcC,QAAQC,IAAIH,aAET,KAFnBI,UAEQ1L,iDACH,CAAEU,KAAM,GAAIiL,MAAO,mBAG1BD,QAAaE,QAAOC,gBAASH,IAEzBI,EAAaJ,EAAQjN,KAAI,SAAAsN,UAC3BA,EAAKpN,GAAKoN,EAAKpN,IAAMoN,EAAK,OACnBA,KAIL5G,EAAO/F,SAEL+F,EAAO/F,OAAO4M,IAChB7G,EAAO/F,OAAOwB,KAAOuE,EAAO/F,OAAO4M,SAC5B7G,EAAO/F,OAAO4M,GAInB7G,EAAO/F,OAAO6M,UACT9G,EAAO/F,OAAO6M,EAEnBtI,OAAOC,KAAKuB,EAAO/F,QAAQY,OAAS,IACtC8L,EAAaA,EAAW1M,QAAO,SAAAyB,UAC7B8C,OAAOuI,QAAQ/G,EAAO/F,QAAQ+M,MAAK,yBAAEC,OAAG1K,cACtCnD,MAAMC,QAAQqC,EAASuL,IAAMvL,EAASuL,GAAGtM,SAAS4B,GAAKb,EAASuL,KAAO1K,UAM3EyD,EAAOkH,OACTP,EAAaA,EAAWO,MAAK,SAACL,EAAGM,UAC3BN,EAAE7G,EAAOkH,KAAKE,SAAUD,EAAEnH,EAAOkH,KAAKE,SACd,QAAtBpH,EAAOkH,KAAKG,MACPR,EAAE7G,EAAOkH,KAAKE,OAAOE,cAAcH,EAAEnH,EAAOkH,KAAKE,QAEjDD,EAAEnH,EAAOkH,KAAKE,OAAOE,cAAcT,EAAE7G,EAAOkH,KAAKE,aAO5DpH,EAAOuH,aACTZ,EAAaA,EAAW5E,OACrB/B,EAAOuH,WAAWC,KAAO,GAAKxH,EAAOuH,WAAWE,QACjDzH,EAAOuH,WAAWC,KAAOxH,EAAOuH,WAAWE,4BAIxC,CAAElM,KAAMoL,EAAYH,MAAOD,EAAQ1L,iHChGxC6M,GAAgB,SAAAC,OAElBC,EADEC,EAAa,MAEbF,EAAO,WACQA,kCAAO,KAAfxD,UAELyD,EADEzD,EAAKxJ,SAAS,KACHwJ,EAAKtC,MAAM,KAAKiG,UAEhB,CAAC3D,GAEhB0D,SACKA,GACAD,EAAW5B,QACZ,SAAC+B,EAAaC,eACXA,cACW,SACPD,MAGP,2CAICF,ICHLI,GAAwB,SAAAC,UAC5BC,EACGC,WAAW,OACXC,OAAOH,GACPI,OAAO,QAENC,GAAgB,SAAAL,UAAQA,EAAKvN,SAAS,MAAQuN,EAAKrG,MAAM,KAAK,IAE9D2G,GAAe,SAAAN,UAASA,EAAKvN,SAAS,KAAOuN,EAAKrG,MAAM,KAAK,GAAKqG,GAElEO,GAAqB,SAArBA,EAAsBC,OAASC,iEACnCD,EACGzO,QAAO,SAAA6M,UAAKA,EAAE6B,aAAeA,KAC7BrP,KACC,SAAAwN,gDAEIA,EAAE8B,2BACF9B,EAAE7M,4BACFwO,EAAmBC,EAAS5B,EAAEoB,4BAInCvG,KAAK,OAEJkH,GAAwB,SAAAjB,OACxBc,EAAU,GACRI,EA3Ca,SAAAlB,OACfkB,EAAQ,MACRlB,EAAY,WACQA,kCAAY,KAAzBI,aACHA,EAAUrN,SAAS,aACfoO,EAAYf,EAAUnG,MAAM,KACzBtI,EAAI,EAAGA,GAAKwP,EAAUlO,OAAQtB,IACrCuP,EAAMrH,KAAKsH,EAAUhH,MAAM,EAAGxI,GAAGoI,KAAK,WAGxCmH,EAAMrH,KAAKuG,0CAIVc,EA6BOE,CAAapB,MAEvBkB,EAAO,WACQA,kCAAO,KAAfZ,UACDS,EAAaJ,GAAcL,GAC3BF,EAAYQ,GAAaN,GACzBe,EAAUhB,GAAsBC,GAChCgB,EAAgBP,EAAaV,GAAsBU,GAAc,IAEvED,EAAQjH,KAAK,CACXyG,KAAAA,EACAS,WAAAA,EACAC,kBAAYM,cAAiBlB,gBAAeiB,mBAAgBA,gBAAaA,gBAAaA,QACtFhP,OAAQ,0CAIL,CACLkP,UAAWT,EAAQpP,KAAI,SAAAwN,UAAKA,EAAE8B,SAAOjH,KAAK,MAC1CyH,MAAOX,GAAmBC,UAGrB,CACLS,UAAW,GACXC,MAAO,KCnEPC,GAAmB,gBAAGvF,IAAAA,WAAsB7J,IAAV+F,OAAU/F,OAAUyG,IAAAA,YAAa4I,IAAAA,WACnEC,EAAa,GAEbtP,IACEA,EAAO6M,GAAK7M,EAAO6M,EAAEjM,OAAS,IAChC0O,+HAKqCtP,EAAO6M,EAAE0C,gGAKvCvP,EAAO6M,GAEhBtI,OAAOC,KAAKxE,GAAQ+J,SAAQ,SAAAgE,MACtB/N,EAAO+N,GAAY,KACfyB,EAASxP,EAAO+N,GAAWnJ,WAAW,mBAAc5E,EAAO+N,QAAgB/N,EAAO+N,GACxFuB,iBAAqBvB,cAAayB,iBAKlCC,EAAmBb,GAAsBnI,yBC5B1B,SAAA4I,UACdA,EAAWhQ,KAAI,SAAAqQ,0BAAsBA,EAASC,qBAAYD,EAASE,YAAQlI,KAAK,MD8BnFmI,CAAeR,4DAGbI,EAAiBP,mHAISrF,EAAWxK,KAAI,SAAAsL,oBAAiBA,UAAcjD,KAAK,8DAE7E4H,qBACAG,EAAiBN,2CErCnBW,+CAAuB,WAAOjG,EAAYjG,EAAYmC,EAAQf,sHAC1DV,EAAgEU,EAAhEV,YAAa0B,EAAmDhB,EAAnDgB,UAAWf,EAAwCD,EAAxCC,WAAYC,EAA4BF,EAA5BE,YAAamK,EAAerK,EAAfqK,WACnDpJ,EAAYD,EAAUpC,GAEtBmM,gBACQ7K,UACHe,EAAU0D,eAGT,UACP8D,aAAcxH,EAAUE,yBAAVC,EAAgBK,cAG7BuJ,EAAsBzL,OAAOC,KAAKqF,GAAYxK,KAClD,SAAAkJ,UACE,IAAI6D,SAAQ,SAAC6D,EAASC,WACdC,EAAcf,GAAiB,CACnCvF,WAAYA,EAAWtB,GACvBxC,cAAaA,OAAQ/F,wBAAaiG,EAAUE,yBAAVG,EAAgBtG,QAAW+F,EAAO/F,UACpEyG,sBAAaR,EAAUE,yBAAVK,EAAgBC,YAC7B4I,WAAAA,IAGFpK,EAAWX,EAAYiE,GAAW6H,eAAgB,CAChD9K,OAAQ,OACRG,KAAM0K,EACNlF,SAA+C,IAAtC3G,EAAYiE,GAAW2C,aAE/B/G,MAAK,gBAAGwB,IAAAA,YAEAC,EAAOmK,MAAMpK,EAAMoK,EAAO,CAAEM,WAAW,OAE/ClM,MAAK,SAAAmM,GACJL,EAAQK,EAAY,WAAa,cAE5B,SAAAC,UAAKL,EAAOK,qBAKPnE,QAAQC,IAAI2D,aAET,KAFnB1D,UAEQ1L,iDACH,CAAEU,KAAM,GAAIiL,MAAO,mBAG1BD,QAAaE,QAAOC,gBAASH,IAGzBI,EAAaJ,EAAQjN,KAAI,SAAAsN,UAC3BA,EAAKpN,GAAKoN,EAAKpN,IAAMoN,EAAK,OACnBA,KAIL5G,EAAOkH,OACTP,EAAaA,EAAWO,MAAK,SAACL,EAAGM,UAC3BN,EAAE7G,EAAOkH,KAAKE,SAAUD,EAAEnH,EAAOkH,KAAKE,SACd,QAAtBpH,EAAOkH,KAAKG,MACPR,EAAE7G,EAAOkH,KAAKE,OAAOE,cAAcH,EAAEnH,EAAOkH,KAAKE,QAEjDD,EAAEnH,EAAOkH,KAAKE,OAAOE,cAAcT,EAAE7G,EAAOkH,KAAKE,aAO5DpH,EAAOuH,aACTZ,EAAaA,EAAW5E,OACrB/B,EAAOuH,WAAWC,KAAO,GAAKxH,EAAOuH,WAAWE,QACjDzH,EAAOuH,WAAWC,KAAOxH,EAAOuH,WAAWE,4BAIxC,CAAElM,KAAMoL,EAAYH,MAAOD,EAAQ1L,iHC3ExC4P,GAAgB,SAAAxL,sDAAU,WAAOpB,0HAAYmC,iCAAS,GACpDzB,EAA2BU,EAA3BV,YAAa0B,EAAchB,EAAdgB,UACbC,EAAYD,EAAUpC,yBAEN,IAAIsC,yBAAkBtC,iDAK1CiG,aAFE5D,EAAUE,2BAAM0D,wBAAc5D,EAAUE,2BAAM0D,WAAWjJ,QAAS,YAEvDqF,EAAUE,yBAAVK,EAAgBqD,WAEhBH,GAAwBzD,EAAU0D,gBAAO1D,EAAUE,yBAAVO,EAAgBkD,QAAStF,eAG7E2B,EAAUE,yBAAVsK,EAAgBC,0DACX7E,GAAgBhC,EAAYjG,EAAYmC,EAAQf,qCAEhD8K,GAAqBjG,EAAYjG,EAAYmC,EAAQf,uGCnB1D2L,GAAgB,SAAA3L,sDAAU,WAAOpB,EAAYmC,qGACzC6K,EAA0B5L,EAA1B4L,sBAEJlE,EAAa,OAEF3G,EAAOwF,qEACpBhM,EAAmB,WAAdK,EADEL,WACuBA,EAAG,OAASA,qBAGjB6L,EAAOpG,EAAPoG,CAAexH,EAAY,CAAErE,GAAAA,qBAA5C+B,IAAAA,KACRoL,EAAWlF,KAAKlG,qDAKZsP,GAEFlE,EAAWlF,KAAK,CAAEjI,GAAAA,4KAOjB,CAAE+B,KAAMoL,oICxBXmE,GAAyB,SAAA7L,sDAAU,WAAOpB,EAAYmC,0FAC1DA,EAAO/F,cAAc+F,EAAO/F,gBAAS+F,EAAO+K,OAAS/K,EAAOxG,YACrDwG,EAAO+K,gBACDC,GAAQ/L,EAAR+L,CAAgBhL,+ICFzBiL,GAAe,SAAAhM,sDAAU,WAAOpB,EAAYmC,sGACxCzB,EAAyCU,EAAzCV,YAAaW,EAA4BD,EAA5BC,WAAYC,EAAgBF,EAAhBE,YAC3BqD,EAAY7D,EAAoBqB,EAAOxG,GAAI+E,YAG7BiF,GAAexD,EAAOzE,KAAM0D,iBAAhDe,EAAOzE,qBAED2D,EAAWc,EAAOxG,GAAI,CAC1B+F,OAAQ,MACRG,KAAMsF,KAAKC,wBACG9F,GACTa,EAAOzE,OAEZ2J,SAAU1C,IAAmD,IAAtCjE,EAAYiE,GAAW2C,6CAGzC,CAAE5J,KAAMyE,EAAOzE,2GCnBxB,SAASiP,GAAEA,GAAGxJ,KAAKkK,QAAQV,EAAEA,GAAEW,UAAU,IAAIhL,MAAMqK,GAAEW,UAAUpI,KAAK,wBAAwB,IAAIxI,GAAE,oBAAoB6Q,QAAQA,OAAOC,MAAMD,OAAOC,KAAKC,KAAKF,SAAS,SAAS7Q,GAAG,IAAIgR,EAAEC,OAAOjR,GAAG4B,QAAQ,MAAM,IAAI,GAAGoP,EAAE1Q,OAAO,GAAG,EAAE,MAAM,IAAI2P,GAAE,qEAAqE,IAAI,IAAIiB,EAAErJ,EAAEyE,EAAE,EAAEtN,EAAE,EAAEmS,EAAE,GAAGtJ,EAAEmJ,EAAEI,OAAOpS,MAAM6I,IAAIqJ,EAAE5E,EAAE,EAAE,GAAG4E,EAAErJ,EAAEA,EAAEyE,IAAI,GAAG6E,GAAGF,OAAOI,aAAa,IAAIH,KAAK,EAAE5E,EAAE,IAAI,EAAEzE,EAAE,oEAAoEyJ,QAAQzJ,GAAG,OAAOsJ,GAAG,SAASH,GAAEf,GAAG,IAAIe,EAAEf,EAAErO,QAAQ,KAAK,KAAKA,QAAQ,KAAK,KAAK,OAAOoP,EAAE1Q,OAAO,GAAG,KAAK,EAAE,MAAM,KAAK,EAAE0Q,GAAG,KAAK,MAAM,KAAK,EAAEA,GAAG,IAAI,MAAM,QAAQ,KAAK,4BAA4B,IAAI,OAAO,SAASf,GAAG,OAAOsB,mBAAmBvR,GAAEiQ,GAAGrO,QAAQ,iBAAiBqO,EAAEjQ,GAAG,IAAIgR,EAAEhR,EAAEwR,WAAW,GAAGC,SAAS,IAAIC,cAAc,OAAOV,EAAE1Q,OAAO,IAAI0Q,EAAE,IAAIA,GAAG,IAAIA,MAA3J,CAAkKA,GAAG,MAAMf,GAAG,OAAOjQ,GAAEgR,IAAI,SAASE,GAAEjB,GAAGxJ,KAAKkK,QAAQV,EAAE,SAASpI,GAAEoI,EAAEjQ,GAAG,GAAG,iBAAiBiQ,EAAE,MAAM,IAAIiB,GAAE,2BAA2B,IAAIrJ,GAAE,KAAM7H,EAAEA,GAAG,IAAI2R,OAAO,EAAE,EAAE,IAAI,OAAOlH,KAAKmH,MAAMZ,GAAEf,EAAE3I,MAAM,KAAKO,KAAK,MAAMoI,GAAG,MAAM,IAAIiB,GAAE,4BAA4BjB,EAAEU,UAAUO,GAAEN,UAAU,IAAIhL,MAAMsL,GAAEN,UAAUpI,KAAK,oBCMxoC,IAAMqJ,+CAAkB,WAAMnN,gHACpBV,EAA4BU,EAA5BV,YAAaW,EAAeD,EAAfC,WACfmN,EAAQC,aAAaC,QAAQ,SAC7BC,EAASlO,EAAqB,MAAOC,GACrCa,EAAgBd,EAAqB,aAAcC,IAGrD8N,4BACgBI,GAAUJ,GAApBK,IAAAA,eACyBxN,EAAWwN,mBAA9BC,IAAN/M,KAGJ4M,IAGFvN,EAAOV,YAAYiO,GAAQzJ,KAAO,SAClC9D,EAAOV,YAAYiO,GAAQ1N,QAAU4D,EAAQgK,EAAO,QACpDzN,EAAOV,YAAYiO,GAAQnC,0BACzBsC,EAASC,gCAAY,yBAA0BlK,EAAQgK,EAAO,WAG9DtN,IAGFH,EAAOV,YAAYa,GAAeE,mBAAWqN,EAASC,8BAATC,EAAoBvN,kCAG/DkN,UAEKvN,EAAOV,YAAYiO,qGCnC1BM,+CAAqB,WAAM7N,sGACzBkH,EAAgB3H,OAAOuO,OAAO9N,EAAOV,aACxCtE,QAAO,SAAA6K,UAAyB,IAAfA,EAAOkI,OACxB1T,KAAI,SAAAwL,UACH7F,EACGC,WAAW,IAAI+N,IAAI,oBAAqBnI,EAAOhG,UAC/CV,MAAK,SAAA8O,SAAW,CAAE3R,KAAM2R,EAAOtN,gBACzB,SAAA4K,MACY,MAAbA,EAAElH,aACG,CAAE6J,MAAO3C,SAEVA,iBAKMnE,QAAQC,IAAIH,UAA5BI,aAEaA,0CAENhL,oICPTuC,GAAe,SAAAmB,OAEdX,EAAqB,UAAWW,EAAOV,aAC1C,MAAM,IAAI4B,MAAM,+DAEblB,EAAOE,cAAaF,EAAOE,YAAcX,OAAO0H,YAAYjH,EAAOqK,WAAWhQ,KAAI,SAAA8I,SAAK,CAACA,EAAEwH,OAAQxH,EAAEyH,UACpG5K,EAAO4L,wBAAuB5L,EAAO4L,uBAAwB,OAE5DuC,EAAyBhB,GAAgBnN,GACzCoO,EAA4BP,GAAmB7N,GAE/CqO,EAAuB,SAAA/N,qCAAU,6HAC/B6N,yBACAC,yBACO9N,4GAGR,CACLyL,QAASsC,EAAqB7C,GAAcxL,IAC5CoG,OAAQiI,EAAqBvN,EAAad,IAC1CsO,QAASD,EAAqB1C,GAAc3L,IAC5CuO,iBAAkBF,EAAqBxC,GAAuB7L,IAC9DyF,OAAQ4I,EAAqBlJ,GAAanF,IAC1CoJ,OAAQiF,EAAqBrC,GAAahM,IAC1CwO,WAAY,iBACJ,IAAItN,MAAM,6CAEVmN,EAAqBhI,GAAarG,IAC1CyO,WAAYJ,EAAqB/H,GAAiBtG,IAClDd,mBAAoBmP,EAAqBK,GAAyB1O,MCxChEC,GAAa,SAAC2K,OAAK+D,yDAAU,UAC5BA,EAAQpO,UAASoO,EAAQpO,QAAU,IAAIC,SAEpCmO,EAAQrO,YACT,WACA,YACA,MACEqO,EAAQpO,QAAQqO,IAAI,WAAWD,EAAQpO,QAAQgF,IAAI,SAAU,uBAC7DoJ,EAAQpO,QAAQqO,IAAI,iBAAiBD,EAAQpO,QAAQgF,IAAI,eAAgB,iCAG3E,mBAGA,cAEEoJ,EAAQpO,QAAQqO,IAAI,WAAWD,EAAQpO,QAAQgF,IAAI,SAAU,2BAIjEoJ,EAAQ1I,QAAS,KACdmH,EAAQC,aAAaC,QAAQ,SAC/BF,GAAOuB,EAAQpO,QAAQgF,IAAI,iCAA2B6H,WAGrDyB,EAAWC,UAAUlE,EAAK+D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semapps/semantic-data-provider",
3
- "version": "0.3.7",
3
+ "version": "0.4.0-alpha.0",
4
4
  "description": "React-Admin data provider for LDP servers",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Virtual Assembly",
@@ -15,7 +15,9 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "jsonld": "^5.2.0",
18
- "speakingurl": "^14.0.1"
18
+ "jwt-decode": "^3.0.0",
19
+ "speakingurl": "^14.0.1",
20
+ "url-join": "^4.0.1"
19
21
  },
20
22
  "peerDependencies": {
21
23
  "react": "^16.13.1 || ^17.0.0",
@@ -35,5 +37,5 @@
35
37
  "rollup-plugin-replace": "^2.2.0",
36
38
  "rollup-plugin-terser": "^5.3.0"
37
39
  },
38
- "gitHead": "c6307d0566ac4fc61cba9142e8e7f842e3fe14f7"
40
+ "gitHead": "3a893322fd7429a72f920fdfb5794894cabdaa87"
39
41
  }