@semapps/semantic-data-provider 0.5.2 → 0.6.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.es.js CHANGED
@@ -1,4 +1,1437 @@
1
- import e from"jsonld";import t from"speakingurl";import r,{triple as n,variable as o,namedNode as a}from"@rdfjs/data-model";import i from"crypto";import{fetchUtils as c,DataProviderContext as s,useGetList as u,ArrayInput as f,SimpleFormIterator as l,TextInput as p}from"react-admin";import d,{useContext as h,useMemo as y,useCallback as v,useState as g,useEffect as m}from"react";import w from"@mui/styles/makeStyles";function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){E(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function k(){
2
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
3
- k=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",a=n.asyncIterator||"@@asyncIterator",i=n.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function s(e,t,r,n){var o=t&&t.prototype instanceof l?t:l,a=Object.create(o.prototype),i=new O(n||[]);return a._invoke=function(e,t,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return E()}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var c=b(i,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var s=u(e,t,r);if("normal"===s.type){if(n=r.done?"completed":"suspendedYield",s.arg===f)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n="completed",r.method="throw",r.arg=s.arg)}}}(e,r,i),a}function u(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var f={};function l(){}function p(){}function d(){}var h={};c(h,o,(function(){return this}));var y=Object.getPrototypeOf,v=y&&y(y(j([])));v&&v!==t&&r.call(v,o)&&(h=v);var g=d.prototype=l.prototype=Object.create(h);function m(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){var n;this._invoke=function(o,a){function i(){return new t((function(n,i){!function n(o,a,i,c){var s=u(e[o],e,a);if("throw"!==s.type){var f=s.arg,l=f.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(l).then((function(e){f.value=e,i(f)}),(function(e){return n("throw",e,i,c)}))}c(s.arg)}(o,a,n,i)}))}return n=n?n.then(i,i):i()}}function b(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method))return f;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var n=u(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,f;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,f):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function S(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function j(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:E}}function E(){return{value:void 0,done:!0}}return p.prototype=d,c(g,"constructor",d),c(d,"constructor",p),p.displayName=c(d,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,d):(e.__proto__=d,c(e,i,"GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},m(w.prototype),c(w.prototype,a,(function(){return this})),e.AsyncIterator=w,e.async=function(t,r,n,o,a){void 0===a&&(a=Promise);var i=new w(s(t,r,n,o),a);return e.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},m(g),c(g,i,"Generator"),c(g,o,(function(){return this})),c(g,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=j,O.prototype={constructor:O,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(S),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return i.type="throw",i.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),s=r.call(a,"finallyLoc");if(c&&s){if(this.prev<a.catchLoc)return n(a.catchLoc,!0);if(this.prev<a.finallyLoc)return n(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return n(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return n(a.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===e||"continue"===e)&&a.tryLoc<=t&&t<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,f):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),S(r),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;S(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:j(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},e}function S(e){return(S="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 O(e,t,r,n,o,a,i){try{var c=e[a](i),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function j(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){O(a,n,o,i,c,"next",e)}function c(e){O(a,n,o,i,c,"throw",e)}i(void 0)}))}}function E(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function A(){return(A=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function C(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function _(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],i=!0,c=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){c=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(c)throw o}}return a}(e,t)||L(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||L(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 L(e,t){if(e){if("string"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function T(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=L(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}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 a,i=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){c=!0,a=e},f:function(){try{i||null==r.return||r.return()}finally{if(c)throw a}}}}var U="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function q(e,t){return e(t={exports:{}},t.exports),t.exports}var I=q((function(e){var t,r;t=U,r=function(){function e(e){var t=[];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 r=e.shift();e[0]=r+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 o=e[n];if("string"!=typeof o)throw new TypeError("Url must be a string. Received "+o);""!==o&&(n>0&&(o=o.replace(/^[\/]+/,"")),o=n<e.length-1?o.replace(/[\/]+$/,""):o.replace(/[\/]+$/,"/"),t.push(o))}var a=t.join("/"),i=(a=a.replace(/\/(\?|&|#[^!])/g,"$1")).split("?");return a=i.shift()+(i.length>0?"?":"")+i.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=r():t.urljoin=r()})),M=function(){var t=j(k().mark((function t(r,n){var o,a,i,c;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=n.httpClient,a=n.jsonContext,t.next=3,o(r);case 3:if(i=t.sent,c=i.json){t.next=7;break}throw new Error("Not a valid JSON: "+r);case 7:if(c.id=c.id||c["@id"],c["@context"]===a){t.next=12;break}return t.next=11,e.compact(c,a);case 11:c=t.sent;case 12:return t.abrupt("return",c);case 13:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),B=function(e){return function(){var t=j(k().mark((function t(r,n){var o,a,i,c,s,u,f,l;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=e.resources,i=a[r]){t.next=4;break}throw new Error("Resource ".concat(r," is not mapped in resources file"));case 4:return t.next=6,M(n.id,e);case 6:if(c=t.sent,null!==(o=i.list)&&void 0!==o&&o.forceArray){u=T(null===(s=i.list)||void 0===s?void 0:s.forceArray);try{for(u.s();!(f=u.n()).done;)l=f.value,c[l]&&!Array.isArray(c[l])&&(c[l]=[c[l]])}catch(e){u.e(e)}finally{u.f()}}return t.abrupt("return",{data:c});case 9:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()},D=function(e){return e&&e.rawFile&&e.rawFile instanceof File},F=function(e){var t=Object.keys(e.dataServers).find((function(t){return e.dataServers[t].uploadsContainer}));if(t)return I(e.dataServers[t].baseUrl,e.dataServers[t].uploadsContainer)},R=function(){var e=j(k().mark((function e(r,n){var o,a;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=F(n)){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,n.httpClient(o,{method:"POST",body:r,headers:new Headers({Slug:(i=r.name,c=void 0,s=void 0,c="",s=i.split("."),s.length>1&&(c=s.pop(),i=s.join(".")),t(i,{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 i,c,s}),e)})));return function(t,r){return e.apply(this,arguments)}}(),H=function(){var e=j(k().mark((function e(t,r){var n,o;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=k().keys(t);case 1:if((e.t1=e.t0()).done){e.next=22;break}if(n=e.t1.value,!t.hasOwnProperty(n)){e.next=20;break}if(!Array.isArray(t[n])){e.next=16;break}o=0;case 6:if(!(o<t[n].length)){e.next=14;break}if(!D(t[n][o])){e.next=11;break}return e.next=10,R(t[n][o].rawFile,r);case 10:t[n][o]=e.sent;case 11:o++,e.next=6;break;case 14:e.next=20;break;case 16:if(!D(t[n])){e.next=20;break}return e.next=19,R(t[n].rawFile,r);case 19:t[n]=e.sent;case 20:e.next=1;break;case 22:return e.abrupt("return",t);case 23:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),W=function(e,t){return Object.keys(t).find((function(r){return t[r][e]}))},z=function(e,t){switch(e){case"@default":return W("default",t);case"@pod":return W("pod",t);case"@authServer":return W("authServer",t);default:return e}},G=function(e,t,r){var n={},o=[];return t=function(e,t){if(Array.isArray(e))return e.includes("@all")?Object.keys(t):e.map((function(e){return z(e,t)}));if("string"==typeof e){if("@all"===e)return Object.keys(t);if("@remote"===e){var r=W("default",t);return Object.keys(t).filter((function(e){return e!==r}))}return[z(e,t)]}return!1}(t,r),Object.keys(r).forEach((function(a){Object.keys(r[a].containers).forEach((function(i){t&&!t.includes(i)||Object.keys(r[a].containers[i]).forEach((function(t){e.includes(t)&&r[a].containers[i][t].map((function(e){var t=I(r[i].baseUrl,e);o.includes(t)||(o.push(t),n[a]||(n[a]=[]),n[a].push(t))}))}))}))})),n},J=function(e){return function(){var t=j(k().mark((function t(r,n){var o,a,i,c,s,u,f,l,p,d,h,y,v,g,m,w;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=e.dataServers,i=e.resources,c=e.httpClient,s=e.jsonContext,u=i[r],f=new Headers,null===(o=u.create)||void 0===o||!o.container){t.next=9;break}p=Object.keys(u.create.container)[0],l=I(a[p].baseUrl,Object.values(u.create.container)[0]),t.next=19;break;case 9:if(p=(null===(d=u.create)||void 0===d?void 0:d.server)||Object.keys(a).find((function(e){return!0===a[e].default}))){t.next=12;break}throw new Error("You must define a server for the creation, or a container, or a default server");case 12:if(h=G(u.types,[p],a),(y=Object.keys(h))&&0!==y.length){t.next=16;break}throw new Error("No container with types ".concat(JSON.stringify(u.types)," found on server ").concat(p));case 16:if(!(y.length>1||h[y[0]].length>1)){t.next=18;break}throw new Error("More than one container detected with types ".concat(JSON.stringify(u.types)," on server ").concat(p));case 18:l=h[y[0]][0];case 19:if(!n.data){t.next=34;break}return null!==(v=u.fieldsMapping)&&void 0!==v&&v.title&&(Array.isArray(u.fieldsMapping.title)?f.set("Slug",u.fieldsMapping.title.map((function(e){return n.data[e]})).join(" ")):f.set("Slug",n.data[u.fieldsMapping.title])),t.next=23,H(n.data,e);case 23:return n.data=t.sent,t.next=26,c(l,{method:"POST",headers:f,body:JSON.stringify(x({"@context":s,"@type":u.types},n.data))});case 26:return g=t.sent,m=g.headers,w=m.get("Location"),t.next=31,B(e)(r,{id:w});case 31:return t.abrupt("return",t.sent);case 34:if(!n.id){t.next=41;break}return f.set("Content-Type","application/sparql-update"),t.next=38,c(l,{method:"PATCH",headers:f,body:"\n PREFIX ldp: <http://www.w3.org/ns/ldp#>\n INSERT DATA { <".concat(l,"> ldp:contains <").concat(n.id,">. };\n ")});case 38:return t.next=40,B(e)(r,{id:n.id});case 40:return t.abrupt("return",t.sent);case 41:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()},$=function(e){return function(){var t=j(k().mark((function t(r,n){var o;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=e.httpClient,t.next=3,o(n.id,{method:"DELETE"});case 3:return t.abrupt("return",{data:{id:n.id}});case 4:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()},Y=function(e){return function(){var t=j(k().mark((function t(r,n){var o,a,i,c,s;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=e.httpClient,a=[],i=T(n.ids),t.prev=3,i.s();case 5:if((c=i.n()).done){t.next=17;break}return s=c.value,t.prev=7,t.next=10,o(s,{method:"DELETE"});case 10:a.push(s),t.next=15;break;case 13:t.prev=13,t.t0=t.catch(7);case 15:t.next=5;break;case 17:t.next=22;break;case 19:t.prev=19,t.t1=t.catch(3),i.e(t.t1);case 22:return t.prev=22,i.f(),t.finish(22);case 25:return t.abrupt("return",{data:a});case 26:case"end":return t.stop()}}),t,null,[[3,19,22,25],[7,13]])})));return function(e,r){return t.apply(this,arguments)}}()},V=function(e){return function(){return e.dataServers}},X=function(e){return function(){return e.resources}};var K=function(){var t=j(k().mark((function t(r,n,o,a){var i,c,s,u,f,l,p;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=a.httpClient,c=a.jsonContext,s=Object.keys(r).reduce((function(e,t){return x(x({},e),Object.fromEntries(r[t].map((function(e){return[e,t]}))))}),{}),u=Object.keys(s).map((function(t){return i(t).then((function(t){var r=t.json;return r["@context"]!==c?e.compact(r,c):r})).then((function(e){if(r="ldp:Container",o=(n=e).type||n["@type"],Array.isArray(o)?o.includes(r):o===r)return e["ldp:contains"];throw new Error(t+" is not a LDP container");var r,n,o}))})),t.next=5,Promise.all(u);case 5:if(0!==(f=t.sent).length){t.next=10;break}return t.abrupt("return",{data:[],total:0});case 10:return f=(l=[].concat).apply.apply(l,P(f)),p=f.map((function(e){return e.id=e.id||e["@id"],e})),o.filter&&(o.filter.a&&(o.filter.type=o.filter.a,delete o.filter.a),Object.keys(o.filter).length>0&&(p=p.filter((function(e){return Object.entries(o.filter).some((function(t){var r=_(t,2),n=r[0],o=r[1];return"q"==n?Object.entries(e).some((function(e){var t=_(e,2);t[0];var r,n=t[1];return(null==(r=n)||"object"!=typeof r||!1!==Array.isArray(r))&&(Array.isArray(n)?n:[n]).some((function(e){if("string"==typeof e||e instanceof String)return e.toLowerCase().normalize("NFD").includes(o.toLowerCase().normalize("NFD"))}))})):!!e[n]&&(Array.isArray(e[n])?e[n].some((function(e){return e.includes(o)})):e[n].includes(o))}))})))),o.sort&&(p=p.sort((function(e,t){return!e[o.sort.field]||!t[o.sort.field]||("ASC"===o.sort.order?e[o.sort.field].localeCompare(t[o.sort.field]):t[o.sort.field].localeCompare(e[o.sort.field]))}))),o.pagination&&(p=p.slice((o.pagination.page-1)*o.pagination.perPage,o.pagination.page*o.pagination.perPage)),t.abrupt("return",{data:p,total:f.length});case 16:case"end":return t.stop()}}),t)})));return function(e,r,n,o){return t.apply(this,arguments)}}(),Q=function(e){var t,r={};if(e){var n,o=T(e);try{for(o.s();!(n=o.n()).done;){var a=n.value;t=a.includes("/")?a.split("/").reverse():[a],r=x(x({},r),t.reduce((function(e,t){return E({},t,x({"@embed":"@last"},e))}),{}))}}catch(e){o.e(e)}finally{o.f()}return r}},Z=function(e,t){if(e.startsWith("http://")||e.startsWith("https://"))return e;if("a"===e)return"http://www.w3.org/1999/02/22-rdf-syntax-ns#type";var r=_(e.split(":"),2),n=r[0],o=r[1];if(o){var a=t.find((function(e){return e.prefix===n}));if(a)return a.url+o;throw new Error("No ontology found with prefix "+n)}throw new Error('The value "'.concat(e,'" is not correct. It must include a prefix or be a full URI.'))},ee=n(o("s1"),a("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),o("type")),te=function(e,t){var r,i;return e?(r=(i=e,i?Array.isArray(i)?i:[i]:[]).map((function(e,r){return n(o("s1"),a(Z(e,t)),o("o"+(r+1)))})),{construct:[ee].concat(P(r)),where:[ee].concat(P(r.map((function(e){return{type:"optional",patterns:[e]}}))))}):{construct:r=[n(o("s1"),o("p1"),o("o1"))],where:r}},re=q((function(e,t){var r;e.exports=r=r||function(e,t){var r;if("undefined"!=typeof window&&window.crypto&&(r=window.crypto),"undefined"!=typeof self&&self.crypto&&(r=self.crypto),"undefined"!=typeof globalThis&&globalThis.crypto&&(r=globalThis.crypto),!r&&"undefined"!=typeof window&&window.msCrypto&&(r=window.msCrypto),!r&&void 0!==U&&U.crypto&&(r=U.crypto),!r)try{r=i}catch(e){}var n=function(){if(r){if("function"==typeof r.getRandomValues)try{return r.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof r.randomBytes)try{return r.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")},o=Object.create||function(){function e(){}return function(t){var r;return e.prototype=t,r=new e,e.prototype=null,r}}(),a={},c=a.lib={},s=c.Base={extend:function(e){var t=o(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},u=c.WordArray=s.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||l).stringify(this)},concat:function(e){var t=this.words,r=e.words,n=this.sigBytes,o=e.sigBytes;if(this.clamp(),n%4)for(var a=0;a<o;a++){var i=r[a>>>2]>>>24-a%4*8&255;t[n+a>>>2]|=i<<24-(n+a)%4*8}else for(var c=0;c<o;c+=4)t[n+c>>>2]=r[c>>>2];return this.sigBytes+=o,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=s.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r<e;r+=4)t.push(n());return new u.init(t,e)}}),f=a.enc={},l=f.Hex={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],o=0;o<r;o++){var a=t[o>>>2]>>>24-o%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n+=2)r[n>>>3]|=parseInt(e.substr(n,2),16)<<24-n%8*4;return new u.init(r,t/2)}},p=f.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,n=[],o=0;o<r;o++){var a=t[o>>>2]>>>24-o%4*8&255;n.push(String.fromCharCode(a))}return n.join("")},parse:function(e){for(var t=e.length,r=[],n=0;n<t;n++)r[n>>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;return new u.init(r,t)}},d=f.Utf8={stringify:function(e){try{return decodeURIComponent(escape(p.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return p.parse(unescape(encodeURIComponent(e)))}},h=c.BufferedBlockAlgorithm=s.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,n=this._data,o=n.words,a=n.sigBytes,i=this.blockSize,c=a/(4*i),s=(c=t?e.ceil(c):e.max((0|c)-this._minBufferSize,0))*i,f=e.min(4*s,a);if(s){for(var l=0;l<s;l+=i)this._doProcessBlock(o,l);r=o.splice(0,s),n.sigBytes-=f}return new u.init(r,f)},clone:function(){var e=s.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0});c.Hasher=h.extend({cfg:s.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(e){return function(t,r){return new e.init(r).finalize(t)}},_createHmacHelper:function(e){return function(t,r){return new y.HMAC.init(e,r).finalize(t)}}});var y=a.algo={};return a}(Math)})),ne=q((function(e,t){var r;e.exports=(r=re,function(e){var t=r,n=t.lib,o=n.WordArray,a=n.Hasher,i=t.algo,c=[];!function(){for(var t=0;t<64;t++)c[t]=4294967296*e.abs(e.sin(t+1))|0}();var s=i.MD5=a.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var n=t+r,o=e[n];e[n]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}var a=this._hash.words,i=e[t+0],s=e[t+1],d=e[t+2],h=e[t+3],y=e[t+4],v=e[t+5],g=e[t+6],m=e[t+7],w=e[t+8],b=e[t+9],x=e[t+10],k=e[t+11],S=e[t+12],O=e[t+13],j=e[t+14],E=e[t+15],A=a[0],C=a[1],_=a[2],P=a[3];A=u(A,C,_,P,i,7,c[0]),P=u(P,A,C,_,s,12,c[1]),_=u(_,P,A,C,d,17,c[2]),C=u(C,_,P,A,h,22,c[3]),A=u(A,C,_,P,y,7,c[4]),P=u(P,A,C,_,v,12,c[5]),_=u(_,P,A,C,g,17,c[6]),C=u(C,_,P,A,m,22,c[7]),A=u(A,C,_,P,w,7,c[8]),P=u(P,A,C,_,b,12,c[9]),_=u(_,P,A,C,x,17,c[10]),C=u(C,_,P,A,k,22,c[11]),A=u(A,C,_,P,S,7,c[12]),P=u(P,A,C,_,O,12,c[13]),_=u(_,P,A,C,j,17,c[14]),A=f(A,C=u(C,_,P,A,E,22,c[15]),_,P,s,5,c[16]),P=f(P,A,C,_,g,9,c[17]),_=f(_,P,A,C,k,14,c[18]),C=f(C,_,P,A,i,20,c[19]),A=f(A,C,_,P,v,5,c[20]),P=f(P,A,C,_,x,9,c[21]),_=f(_,P,A,C,E,14,c[22]),C=f(C,_,P,A,y,20,c[23]),A=f(A,C,_,P,b,5,c[24]),P=f(P,A,C,_,j,9,c[25]),_=f(_,P,A,C,h,14,c[26]),C=f(C,_,P,A,w,20,c[27]),A=f(A,C,_,P,O,5,c[28]),P=f(P,A,C,_,d,9,c[29]),_=f(_,P,A,C,m,14,c[30]),A=l(A,C=f(C,_,P,A,S,20,c[31]),_,P,v,4,c[32]),P=l(P,A,C,_,w,11,c[33]),_=l(_,P,A,C,k,16,c[34]),C=l(C,_,P,A,j,23,c[35]),A=l(A,C,_,P,s,4,c[36]),P=l(P,A,C,_,y,11,c[37]),_=l(_,P,A,C,m,16,c[38]),C=l(C,_,P,A,x,23,c[39]),A=l(A,C,_,P,O,4,c[40]),P=l(P,A,C,_,i,11,c[41]),_=l(_,P,A,C,h,16,c[42]),C=l(C,_,P,A,g,23,c[43]),A=l(A,C,_,P,b,4,c[44]),P=l(P,A,C,_,S,11,c[45]),_=l(_,P,A,C,E,16,c[46]),A=p(A,C=l(C,_,P,A,d,23,c[47]),_,P,i,6,c[48]),P=p(P,A,C,_,m,10,c[49]),_=p(_,P,A,C,j,15,c[50]),C=p(C,_,P,A,v,21,c[51]),A=p(A,C,_,P,S,6,c[52]),P=p(P,A,C,_,h,10,c[53]),_=p(_,P,A,C,x,15,c[54]),C=p(C,_,P,A,s,21,c[55]),A=p(A,C,_,P,w,6,c[56]),P=p(P,A,C,_,E,10,c[57]),_=p(_,P,A,C,g,15,c[58]),C=p(C,_,P,A,O,21,c[59]),A=p(A,C,_,P,y,6,c[60]),P=p(P,A,C,_,k,10,c[61]),_=p(_,P,A,C,d,15,c[62]),C=p(C,_,P,A,b,21,c[63]),a[0]=a[0]+A|0,a[1]=a[1]+C|0,a[2]=a[2]+_|0,a[3]=a[3]+P|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,o=8*t.sigBytes;r[o>>>5]|=128<<24-o%32;var a=e.floor(n/4294967296),i=n;r[15+(o+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),r[14+(o+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(r.length+1),this._process();for(var c=this._hash,s=c.words,u=0;u<4;u++){var f=s[u];s[u]=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8)}return c},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function u(e,t,r,n,o,a,i){var c=e+(t&r|~t&n)+o+i;return(c<<a|c>>>32-a)+t}function f(e,t,r,n,o,a,i){var c=e+(t&n|r&~n)+o+i;return(c<<a|c>>>32-a)+t}function l(e,t,r,n,o,a,i){var c=e+(t^r^n)+o+i;return(c<<a|c>>>32-a)+t}function p(e,t,r,n,o,a,i){var c=e+(r^(t|~n))+o+i;return(c<<a|c>>>32-a)+t}t.MD5=a._createHelper(s),t.HmacMD5=a._createHmacHelper(s)}(Math),r.MD5)})),oe=function(e){return ne(e)},ae=function(e){return e.includes("/")&&e.split("/")[0]},ie=function(e){return e.includes("/")?e.split("/")[1]:e},ce=function(e){return e.map((function(t){var r=t.query,n=e.find((function(e){return t.parentNode===e.node}));return void 0!==n&&(r=r.concat(n.query[0])),{type:"bgp",triples:r}}))},se=function(e,t,r){var i=[],c=function(e){var t=[];if(e){var r,n=T(e);try{for(n.s();!(r=n.n()).done;){var o=r.value;if(o.includes("/"))for(var a=o.split("/"),i=1;i<=a.length;i++)t.push(a.slice(0,i).join("/"));else t.push(o)}}catch(e){n.e(e)}finally{n.f()}}return t}(e);if(c&&r&&r.length>0){var s,u=T(c);try{for(u.s();!(s=u.n()).done;){var f=s.value,l=ae(f),p=ie(f),d=oe(f),h=l?oe(l):"1",y=[n(o("s"+h),a(Z(p,r)),o("s"+d)),n(o("s"+d),o("p"+d),o("o"+d))];i.push({node:f,parentNode:l,query:y,filter:""})}}catch(e){u.e(e)}finally{u.f()}return{construct:i.length>0?i.map((function(e){return e.query})).reduce((function(e,t){return e.concat(t)})):null,where:{type:"union",patterns:[t.where].concat(P(ce(i)))}}}return{construct:"",where:""}},ue=r.literal,fe=r.namedNode,le=r.triple,pe=r.variable,de=new(0,require("sparqljs").Generator)({}),he=["q","sparqlWhere","blankNodes","_servers","_predicates"],ye=function(e){var t=e.containers,r=e.params.filter,n=e.blankNodes,o=e.predicates,a=e.ontologies,i=te(o,a),c={queryType:"CONSTRUCT",template:i.construct,where:[],type:"query",prefixes:Object.fromEntries(a.map((function(e){return[e.prefix,e.url]})))},s=[{type:"values",values:t.map((function(e){return{"?containerUri":fe(e)}}))},le(pe("containerUri"),fe("http://www.w3.org/ns/ldp#contains"),pe("s1")),{type:"filter",expression:{type:"operation",operator:"isiri",args:[pe("s1")]}}],u=[];if(r&&Object.keys(r).length>0){var f=r.sparqlWhere&&Object.keys(r.sparqlWhere).length>0,l=r.q&&r.q.length>0;f&&[].concat(r.sparqlWhere).forEach((function(e){u.push(e)})),l&&u.push({type:"group",patterns:[{queryType:"SELECT",variables:[pe("s1")],where:[le(pe("s1"),pe("p1"),pe("o1")),{type:"filter",expression:{type:"operation",operator:"isliteral",args:[pe("o1")]}},{type:"filter",expression:{type:"operation",operator:"regex",args:[{type:"operation",operator:"lcase",args:[{type:"operation",operator:"str",args:[pe("o1")]}]},ue(r.q.toLowerCase(),"",fe("http://www.w3.org/2001/XMLSchema#string"))]}}],type:"query"}]}),Object.entries(r).forEach((function(e){var t=_(e,2),r=t[0],n=t[1];he.includes(r)||u.unshift(le(pe("s1"),fe(Z(r,a)),fe(Z(n,a))))}))}var p=se(n,i,a);return p&&p.construct?(u=u.concat(p.where),c.template=c.template.concat(p.construct)):u.push(i.where),c.where.push({type:"union",patterns:[s,{type:"graph",name:fe("http://semapps.org/mirror"),patterns:s}]},{type:"union",patterns:[u,{type:"graph",name:fe("http://semapps.org/mirror"),patterns:u}]}),de.stringify(c)},ve=function(e,t){for(var r=[],n=0,o=Object.keys(t);n<o.length;n++){var a=o[n];if(t[a].blankNodes)for(var i=0,c=Object.keys(t[a].blankNodes);i<c.length;i++){var s=c[i];e.includes(s)&&r.push.apply(r,P(t[a].blankNodes[s]))}}return P(new Set(r))},ge=["@context"],me=function(e,t){switch(S(e)){case"string":return e.localeCompare(t);case"number":case"bigint":return e-t;default:return 0}},we=function(){var t=j(k().mark((function t(r,n,o,a){var i,c,s,u,f,l,p,d,h,y;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=a.dataServers,c=a.resources,s=a.httpClient,u=a.jsonContext,f=a.ontologies,l=c[n],p=Object.keys(r).map((function(t){return new Promise((function(n,a){var c,p,d,h,y,v,g=(null===(c=o.filter)||void 0===c?void 0:c.blankNodes)||(null===(p=l.list)||void 0===p?void 0:p.blankNodes)||ve(r[t],i),m=(null===(d=o.filter)||void 0===d?void 0:d._predicates)||(null===(h=l.list)||void 0===h?void 0:h.predicates);null!==(y=o.filter)&&void 0!==y&&y.sparqlWhere&&("string"==typeof o.filter.sparqlWhere||o.filter.sparqlWhere instanceof String)&&(o.filter.sparqlWhere=JSON.parse(decodeURIComponent(o.filter.sparqlWhere)));var w=ye({containers:r[t],params:x(x({},o),{},{filter:x(x({},null===(v=l.list)||void 0===v?void 0:v.filter),o.filter)}),blankNodes:g,predicates:m,ontologies:f});s(i[t].sparqlEndpoint,{method:"POST",body:w}).then((function(t){var r,n=t.json,o=!1!==(null===(r=l.list)||void 0===r?void 0:r.explicitEmbedOnFraming)?x({"@context":u,"@type":l.types,"@embed":"@never"},Q(g)):{"@context":u,"@type":l.types};return e.frame(n,o,{omitGraph:!1})})).then((function(e){if(e["@id"]){var t=e;e={"@context":t["@context"],"@graph":[C(t,ge)]}}n(e["@graph"]||[])})).catch((function(e){return a(e)}))}))})),t.next=5,Promise.all(p);case 5:if(0!==(d=t.sent).length){t.next=10;break}return t.abrupt("return",{data:[],total:0});case 10:return d=(h=[]).concat.apply(h,P(d)),y=d.map((function(e){return e.id=e.id||e["@id"],e})),o.sort&&(y=y.sort((function(e,t){return void 0!==e[o.sort.field]&&void 0!==t[o.sort.field]?"ASC"===o.sort.order?me(e[o.sort.field],t[o.sort.field]):me(t[o.sort.field],e[o.sort.field]):0}))),o.pagination&&(y=y.slice((o.pagination.page-1)*o.pagination.perPage,o.pagination.page*o.pagination.perPage)),t.abrupt("return",{data:y,total:d.length});case 15:case"end":return t.stop()}}),t)})));return function(e,r,n,o){return t.apply(this,arguments)}}(),be=function(e,t){var r={};return Object.keys(e).forEach((function(n){if(!t[n])throw new Error("No server found with key "+n);r[n]=[],e[n].forEach((function(e){r[n].push(I(t[n].baseUrl,e))}))})),r},xe=function(e){return function(){var t=j(k().mark((function t(r){var n,o,a,i,c,s,u,f,l,p,d,h=arguments;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=h.length>1&&void 0!==h[1]?h[1]:{},c=e.dataServers,s=e.resources,u=s[r]){t.next=5;break}throw new Error("Resource ".concat(r," is not mapped in resources file"));case 5:if(null!==(n=i.filter)&&void 0!==n&&n._servers||null===(o=u.list)||void 0===o||!o.containers){t.next=11;break}if(!Array.isArray(null===(l=u.list)||void 0===l?void 0:l.containers)){t.next=8;break}throw new Error("The list.containers property of ".concat(r," dataModel must be of type object ({ serverKey: [containerUri] })"));case 8:f=be(u.list.containers,c),t.next=12;break;case 11:f=G(u.types,(null===(p=i.filter)||void 0===p?void 0:p._servers)||(null===(d=u.list)||void 0===d?void 0:d.servers),c);case 12:if(null===(a=u.list)||void 0===a||!a.fetchContainer){t.next=16;break}return t.abrupt("return",K(f,r,i,e));case 16:return t.abrupt("return",we(f,r,i,e));case 17:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()},ke=function(e){return function(){var t=j(k().mark((function t(r,n){var o,a;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=e.returnFailedResources,t.next=3,Promise.all(n.ids.map((function(t){return B(e)(r,{id:"object"===S(t)?t["@id"]:t}).then((function(e){return e.data})).catch((function(){if(o)return{id:t,_error:!0}}))})));case 3:return a=(a=t.sent).filter((function(e){return e})),t.abrupt("return",{data:a});case 6:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()},Se=function(e){return function(){var t=j(k().mark((function t(r,n){return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n.filter=x(x({},n.filter),{},E({},n.target,n.id)),delete n.target,t.next=4,xe(e)(r,n);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()},Oe=function(e){return function(){var t=j(k().mark((function t(r,n){var o,a;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=e.httpClient,a=e.jsonContext,t.next=3,H(n.data,e);case 3:return n.data=t.sent,t.next=6,o(n.id,{method:"PUT",body:JSON.stringify(x({"@context":a},n.data))});case 6:return t.abrupt("return",{data:n.data});case 7:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}()};function je(e){this.message=e}je.prototype=new Error,je.prototype.name="InvalidCharacterError";var Ee="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new je("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,o=0,a=0,i="";n=t.charAt(a++);~n&&(r=o%4?64*r+n:n,o++%4)?i+=String.fromCharCode(255&r>>(-2*o&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return i};function Ae(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(Ee(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return Ee(t)}}function Ce(e){this.message=e}function _e(e,t){if("string"!=typeof e)throw new Ce("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(Ae(e.split(".")[r]))}catch(e){throw new Ce("Invalid token specified: "+e.message)}}Ce.prototype=new Error,Ce.prototype.name="InvalidTokenError";var Pe=function(){var e=j(k().mark((function e(t){var r,n,o,a,i,c,s,u,f,l,p,d;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.dataServers,n=t.httpClient,o=localStorage.getItem("token"),a=W("pod",r),i=W("authServer",r),!o){e.next=24;break}return c=_e(o),s=c.webId,e.prev=6,e.next=9,n(s);case 9:f=e.sent,l=f.json,u=l,e.next=20;break;case 14:return e.prev=14,e.t0=e.catch(6),console.error(e.t0),localStorage.clear(),window.location.reload(),e.abrupt("return");case 20:a&&(t.dataServers[a].name="My Pod",t.dataServers[a].baseUrl=I(s,"data"),t.dataServers[a].sparqlEndpoint=(null===(p=u.endpoints)||void 0===p?void 0:p["void:sparqlEndpoint"])||I(s,"sparql")),i&&(t.dataServers[i].proxyUrl=null===(d=u.endpoints)||void 0===d?void 0:d.proxyUrl),e.next=25;break;case 24:a&&delete t.dataServers[a];case 25:case"end":return e.stop()}}),e,null,[[6,14]])})));return function(t){return e.apply(this,arguments)}}(),Le=function(e){return e?Array.isArray(e)?e:[e]:void 0},Ne=function(){var e=j(k().mark((function e(t){var r,n,o,a,i,c,s,u;return k().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Object.entries(t.dataServers).filter((function(e){var t=_(e,2);return t[0],!0!==t[1].pod})).map((function(e){var r=_(e,2),n=r[0],o=r[1];return t.httpClient(new URL("/.well-known/void",o.baseUrl).toString()).then((function(e){return{key:n,datasets:e.json["@graph"]}})).catch((function(e){if(404===e.status||401===e.status)return{key:n,error:e};throw e}))})),n=[],e.prev=2,e.next=5,Promise.all(r);case 5:n=e.sent,e.next=10;break;case 8:e.prev=8,e.t0=e.catch(2);case 10:o=T(n);try{for(o.s();!(a=o.n()).done;)if(i=a.value,t.dataServers[i.key].containers=t.dataServers[i.key].containers||{},t.dataServers[i.key].blankNodes=t.dataServers[i.key].blankNodes||{},i.datasets){c=T(i.datasets);try{for(u=function(){var e=s.value,r=Object.keys(t.dataServers).find((function(r){return e["void:uriSpace"]===t.dataServers[r].baseUrl}));if(r){r===i.key&&(t.dataServers[i.key].name=t.dataServers[i.key].name||e["dc:title"],t.dataServers[i.key].description=t.dataServers[i.key].description||e["dc:description"],t.dataServers[i.key].sparqlEndpoint=t.dataServers[i.key].sparqlEndpoint||e["void:sparqlEndpoint"]),t.dataServers[i.key].containers[r]=t.dataServers[i.key].containers[r]||{};var n,o=T(Le(e["void:classPartition"]));try{for(o.s();!(n=o.n()).done;){var a,c=n.value,u=T(Le(c["void:class"]));try{for(u.s();!(a=u.n()).done;){var f=a.value,l=c["void:uriSpace"].replace(e["void:uriSpace"],"/");t.dataServers[i.key].containers[r][f]?t.dataServers[i.key].containers[r][f].push(l):t.dataServers[i.key].containers[r][f]=[l],Le(c["semapps:blankNodes"])&&(t.dataServers[i.key].blankNodes[c["void:uriSpace"]]=Le(c["semapps:blankNodes"]))}}catch(e){u.e(e)}finally{u.f()}}}catch(e){o.e(e)}finally{o.f()}}},c.s();!(s=c.n()).done;)u()}catch(e){c.e(e)}finally{c.f()}}}catch(e){o.e(e)}finally{o.f()}case 12:case"end":return e.stop()}}),e,null,[[2,8]])})));return function(t){return e.apply(this,arguments)}}(),Te=function(e,t){return Object.keys(t).find((function(r){return t[r].pod?t[r].baseUrl&&e.startsWith(t[r].baseUrl.replace("/data","")):e.startsWith(t[r].baseUrl)}))},Ue=function(e){if(!W("default",e.dataServers))throw new Error("You must define a default server in your dataServers config");var t;e.jsonContext||(e.jsonContext=Object.fromEntries(e.ontologies.map((function(e){return[e.prefix,e.url]})))),e.returnFailedResources||(e.returnFailedResources=!1),e.httpClient=(t=e.dataServers,function(e){var r,n,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=W("authServer",t),i=Te(e,t),s=i!==a&&(null===(r=t[a])||void 0===r?void 0:r.proxyUrl)&&!0!==(null===(n=t[i])||void 0===n?void 0:n.noProxy);switch(o.headers||(o.headers=new Headers),o.method){case"POST":case"PATCH":case"PUT":o.headers.has("Accept")||o.headers.set("Accept","application/ld+json"),o.headers.has("Content-Type")||o.headers.set("Content-Type","application/ld+json");break;case"DELETE":break;case"GET":default:o.headers.has("Accept")||o.headers.set("Accept","application/ld+json")}if(s){var u=new FormData;return u.append("id",e),u.append("method",o.method||"GET"),u.append("headers",JSON.stringify(Object.fromEntries(o.headers.entries()))),o.body&&(o.body instanceof File?u.append("body",o.body,o.body.name):u.append("body",o.body)),c.fetchJson(t[a].proxyUrl,{method:"POST",headers:new Headers({Authorization:"Bearer ".concat(localStorage.getItem("token"))}),body:u})}if(i===a){var f=localStorage.getItem("token");f&&o.headers.set("Authorization","Bearer ".concat(f))}return c.fetchJson(e,o)});var r=Pe(e),n=Ne(e),o=function(e){return j(k().mark((function t(){var o=arguments;return k().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r;case 2:return t.next=4,n;case 4:return t.next=6,e.apply(void 0,o);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))};return{getList:o(xe(e)),getMany:o(ke(e)),getManyReference:o(Se(e)),getOne:o(B(e)),create:o(J(e)),update:o(Oe(e)),updateMany:function(){throw new Error("updateMany is not implemented yet")},delete:o($(e)),deleteMany:o(Y(e)),getDataModels:o(X(e)),getDataServers:o(V(e)),getLocalDataServers:V(e),fetch:o(e.httpClient)}},qe=function(e,t){return"function"==typeof e?e(t):e},Ie=function(e){return"string"==typeof e&&e.startsWith("http")},Me=function(e){var t=h(s).getLocalDataServers(),r=y((function(){if(t)return Object.fromEntries(Object.values(t).map((function(e){var t=void 0!==e.externalLinks?e.externalLinks:!e.default;return[e.baseUrl,t]})))}),[t]);return v((function(t){var n=qe(e,t);if(!1===n)return!1;if(null==t||!t.id)return!1;var o=Object.keys(r).find((function(e){return null==t?void 0:t.id.startsWith(e)}));if(!o)return!1;var a=qe(r[o],t);return!1!==a&&(Ie(n)?n:Ie(a)?a:t.id)}),[r,e])},Be=function(e){var t=h(s),r=_(g(),2),n=r[0],o=r[1];return m((function(){t.getDataModels().then((function(t){return o(t[e])}))}),[t,e,o]),n},De=function(){var e=h(s),t=_(g(),2),r=t[0],n=t[1];return m((function(){e.getDataServers().then((function(e){return n(e)}))}),[e,n]),r},Fe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@all",r=Be(e),n=De(),o=g(),a=_(o,2),i=a[0],c=a[1];return m((function(){r&&n&&c(G(r.types,t,n))}),[r,n,t]),i},Re=function(e,t,r){var n=[];if(Object.keys(r[t].containers[t]).length>0&&Object.keys(r[t].containers[t]).forEach((function(o){e.includes(o)&&r[t].containers[t][o].map((function(e){var o=I(r[t].baseUrl,e);n.includes(o)||n.push(o)}))})),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]},He=function(e){var t=Be(e),r=De(),n=_(g(),2),o=n[0],a=n[1];return m((function(){var n,o;if(t&&r)if(null!==(n=t.create)&&void 0!==n&&n.container){var i=_(Object.entries(t.create.container)[0],2),c=i[0],s=i[1];if(!c||!r[c])throw new Error("Wrong key for the dataModel.create.container config of resource "+e);a(I(r[c].baseUrl,s))}else if(null!==(o=t.create)&&void 0!==o&&o.server){var u;a(Re(t.types,null===(u=t.create)||void 0===u?void 0:u.server,r))}else{var f=W("default",r);a(Re(t.types,f,r))}}),[t,r,a]),o},We=function(){var e=h(s),t=_(g(),2),r=t[0],n=t[1];return m((function(){e.getDataModels().then((function(e){return n(e)}))}),[e,n]),r},ze=["children","record","filter","source"],Ge=function(e){var t=e.children,r=e.record,n=e.filter,o=e.source,a=C(e,ze),i=_(g(),2),c=i[0],s=i[1];return m((function(){if(r&&o&&Array.isArray(null==r?void 0:r[o])){var e=null==r?void 0:r[o].filter((function(e){var t=!0;for(var r in n){var o=e[r];Array.isArray(o)?o.includes(n[r])||(t=!1):o!==n[r]&&(t=!1)}return t})),t=x({},r);t[o]=e.length>0?e:void 0,s(t)}}),[r,o,n]),d.createElement(d.Fragment,null,d.Children.map(t,(function(e,t){return d.cloneElement(e,x(x({},a),{},{record:c,source:o}))})))},Je=["children","groupReference","groupLabel","groupHeader","filterProperty"],$e=function(e){var t=e.children,r=e.groupReference,n=e.groupLabel,o=e.groupHeader,a=e.filterProperty,i=C(e,Je),c=u({resource:r,payload:{}}).data;return d.createElement(d.Fragment,null,null==c?void 0:c.map((function(e,r){var c={};return c[a]=e.id,d.createElement(d.Fragment,null,o&&o(x(x({},i),{},{group:e})),d.createElement(Ge,A({},i,{filter:c,label:e[n]}),t))})))},Ye=["reificationClass","children"],Ve=w({form:{display:"flex"},input:{paddingRight:"20px"}}),Xe=w({root:{display:"none"}}),Ke=function(e){var t=e.reificationClass;e.children;var r=C(e,Ye),n=Ve(),o=Xe();return d.createElement(f,r,d.createElement(l,{classes:{form:n.form}},d.Children.map(e.children,(function(e,t){return d.cloneElement(e,{className:n.input})})),d.createElement(p,{className:o.root,source:"type",initialValue:t})))};export{Ge as FilterHandler,$e as GroupedReferenceHandler,Ke as ReificationArrayInput,se as buildBlankNodesQuery,ye as buildSparqlQuery,Ue as dataProvider,Fe as useContainers,He as useCreateContainer,Be as useDataModel,We as useDataModels,De as useDataServers,Me as useGetExternalLink};
1
+ import $7bWYI$urljoin from "url-join";
2
+ import $7bWYI$jsonld from "jsonld";
3
+ import $7bWYI$speakingurl from "speakingurl";
4
+ import $7bWYI$isobject from "isobject";
5
+ import $7bWYI$rdfjsdatamodel, {triple as $7bWYI$triple, variable as $7bWYI$variable, namedNode as $7bWYI$namedNode} from "@rdfjs/data-model";
6
+ import {Generator as $7bWYI$Generator} from "sparqljs";
7
+ import $7bWYI$cryptojsmd5 from "crypto-js/md5";
8
+ import $7bWYI$jwtdecode from "jwt-decode";
9
+ import {fetchUtils as $7bWYI$fetchUtils, DataProviderContext as $7bWYI$DataProviderContext, useGetList as $7bWYI$useGetList, ArrayInput as $7bWYI$ArrayInput, SimpleFormIterator as $7bWYI$SimpleFormIterator, TextInput as $7bWYI$TextInput} from "react-admin";
10
+ import $7bWYI$react, {useContext as $7bWYI$useContext, useMemo as $7bWYI$useMemo, useCallback as $7bWYI$useCallback, useState as $7bWYI$useState, useEffect as $7bWYI$useEffect} from "react";
11
+ import {jsx as $7bWYI$jsx, Fragment as $7bWYI$Fragment, jsxs as $7bWYI$jsxs} from "react/jsx-runtime";
12
+ import $7bWYI$muistylesmakeStyles from "@mui/styles/makeStyles";
13
+
14
+
15
+
16
+ const $336b7edf722fe53e$var$fetchResource = async (resourceUri, config)=>{
17
+ const { httpClient: httpClient, jsonContext: jsonContext } = config;
18
+ let { json: data } = await httpClient(resourceUri);
19
+ if (!data) throw new Error(`Not a valid JSON: ${resourceUri}`);
20
+ data.id = data.id || data["@id"];
21
+ // We compact only if the context is different between the frontend and the middleware
22
+ // TODO deep compare if the context is an object
23
+ if (data["@context"] !== jsonContext) data = await (0, $7bWYI$jsonld).compact(data, jsonContext);
24
+ return data;
25
+ };
26
+ var $336b7edf722fe53e$export$2e2bcd8739ae039 = $336b7edf722fe53e$var$fetchResource;
27
+
28
+
29
+ const $ed447224dd38ce82$var$getOneMethod = (config)=>async (resourceId, params)=>{
30
+ const { resources: resources } = config;
31
+ const dataModel = resources[resourceId];
32
+ if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);
33
+ const data = await (0, $336b7edf722fe53e$export$2e2bcd8739ae039)(params.id, config);
34
+ // Transform single value into array if forceArray is set
35
+ if (dataModel.list?.forceArray) {
36
+ for (const forceArrayItem of dataModel.list?.forceArray || [])if (data[forceArrayItem] && !Array.isArray(data[forceArrayItem])) data[forceArrayItem] = [
37
+ data[forceArrayItem]
38
+ ];
39
+ }
40
+ // TODO activate defaultFetchPlan option
41
+ // if (dataModel.list?.defaultFetchPlan) {
42
+ // for (const node of dataModel.list?.defaultFetchPlan) {
43
+ // if (
44
+ // data[node] &&
45
+ // typeof data[node] === 'string' &&
46
+ // data[node].startsWith('http')
47
+ // ) {
48
+ // try {
49
+ // const dataToEmbed = await fetchResource(data[node], config);
50
+ // delete dataToEmbed['@context'];
51
+ // data[node] = dataToEmbed;
52
+ // } catch (e) {
53
+ // // Ignore errors (this may happen if user does not have rights to see the resource)
54
+ // }
55
+ // }
56
+ // }
57
+ // }
58
+ return {
59
+ data: data
60
+ };
61
+ };
62
+ var $ed447224dd38ce82$export$2e2bcd8739ae039 = $ed447224dd38ce82$var$getOneMethod;
63
+
64
+
65
+
66
+
67
+ const $749174ce56cb8a3b$export$190bcb5b6b4f794f = (fileName)=>{
68
+ let fileExtension = "";
69
+ const splitFileName = fileName.split(".");
70
+ if (splitFileName.length > 1) {
71
+ fileExtension = splitFileName.pop();
72
+ fileName = splitFileName.join(".");
73
+ }
74
+ return `${(0, $7bWYI$speakingurl)(fileName, {
75
+ lang: "fr"
76
+ })}.${fileExtension}`;
77
+ };
78
+ const $749174ce56cb8a3b$export$be78b3111c50efdd = (o)=>o?.rawFile && o.rawFile instanceof File;
79
+ const $749174ce56cb8a3b$var$getUploadsContainerUri = (config)=>{
80
+ const serverKey = Object.keys(config.dataServers).find((key)=>config.dataServers[key].uploadsContainer);
81
+ if (serverKey) return (0, $7bWYI$urljoin)(config.dataServers[serverKey].baseUrl, config.dataServers[serverKey].uploadsContainer);
82
+ };
83
+ const $749174ce56cb8a3b$var$uploadFile = async (rawFile, config)=>{
84
+ const uploadsContainerUri = $749174ce56cb8a3b$var$getUploadsContainerUri(config);
85
+ if (!uploadsContainerUri) throw new Error("You must define an uploadsContainer in one of the server's configuration");
86
+ const response = await config.httpClient(uploadsContainerUri, {
87
+ method: "POST",
88
+ body: rawFile,
89
+ headers: new Headers({
90
+ // We must sluggify the file name, because we can't use non-ASCII characters in the header
91
+ // However we keep the extension apart (if it exists) so that it is not replaced with a -
92
+ // TODO let the middleware guess the extension based on the content type
93
+ Slug: $749174ce56cb8a3b$export$190bcb5b6b4f794f(rawFile.name),
94
+ "Content-Type": rawFile.type
95
+ })
96
+ });
97
+ if (response.status === 201) return response.headers.get("Location");
98
+ };
99
+ /*
100
+ * Look for raw files in the record data.
101
+ * If there are any, upload them and replace the file by its URL.
102
+ */ const $749174ce56cb8a3b$var$uploadAllFiles = async (record, config)=>{
103
+ for(const property in record)if (Object.prototype.hasOwnProperty.call(record, property)) {
104
+ if (Array.isArray(record[property])) {
105
+ for(let i = 0; i < record[property].length; i++)if ($749174ce56cb8a3b$export$be78b3111c50efdd(record[property][i])) record[property][i] = await $749174ce56cb8a3b$var$uploadFile(record[property][i].rawFile, config);
106
+ } else if ($749174ce56cb8a3b$export$be78b3111c50efdd(record[property])) record[property] = await $749174ce56cb8a3b$var$uploadFile(record[property].rawFile, config);
107
+ }
108
+ return record;
109
+ };
110
+ var $749174ce56cb8a3b$export$2e2bcd8739ae039 = $749174ce56cb8a3b$var$uploadAllFiles;
111
+
112
+
113
+
114
+ const $8326b88c1a913ca9$var$getServerKeyFromType = (type, dataServers)=>{
115
+ return Object.keys(dataServers).find((key)=>{
116
+ return dataServers[key][type];
117
+ });
118
+ };
119
+ var $8326b88c1a913ca9$export$2e2bcd8739ae039 = $8326b88c1a913ca9$var$getServerKeyFromType;
120
+
121
+
122
+ const $64441f6e76bd15b6$var$parseServerKey = (serverKey, dataServers)=>{
123
+ switch(serverKey){
124
+ case "@default":
125
+ return (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("default", dataServers);
126
+ case "@pod":
127
+ return (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("pod", dataServers);
128
+ case "@authServer":
129
+ return (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("authServer", dataServers);
130
+ default:
131
+ return serverKey;
132
+ }
133
+ };
134
+ // Return the list of servers keys in an array
135
+ // parsing keywords like @all, @default, @pod and @authServer
136
+ const $64441f6e76bd15b6$var$parseServerKeys = (serverKeys, dataServers)=>{
137
+ if (Array.isArray(serverKeys)) {
138
+ if (serverKeys.includes("@all")) return Object.keys(dataServers);
139
+ return serverKeys.map((serverKey)=>$64441f6e76bd15b6$var$parseServerKey(serverKey, dataServers));
140
+ }
141
+ if (typeof serverKeys === "string") {
142
+ if (serverKeys === "@all") return Object.keys(dataServers);
143
+ if (serverKeys === "@remote") {
144
+ const defaultServerKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("default", dataServers);
145
+ return Object.keys(dataServers).filter((serverKey)=>serverKey !== defaultServerKey);
146
+ }
147
+ return [
148
+ $64441f6e76bd15b6$var$parseServerKey(serverKeys, dataServers)
149
+ ];
150
+ }
151
+ // If server key is empty
152
+ return false;
153
+ };
154
+ var $64441f6e76bd15b6$export$2e2bcd8739ae039 = $64441f6e76bd15b6$var$parseServerKeys;
155
+
156
+
157
+ const $973dc9d98aeab64f$var$findContainersWithTypes = (types, serverKeys, dataServers)=>{
158
+ const containers = {};
159
+ const existingContainers = [];
160
+ serverKeys = (0, $64441f6e76bd15b6$export$2e2bcd8739ae039)(serverKeys, dataServers);
161
+ Object.keys(dataServers).forEach((key1)=>{
162
+ Object.keys(dataServers[key1].containers).forEach((key2)=>{
163
+ if (!serverKeys || serverKeys.includes(key2)) Object.keys(dataServers[key1].containers[key2]).forEach((type)=>{
164
+ if (types.includes(type)) dataServers[key1].containers[key2][type].map((path)=>{
165
+ const containerUri = (0, $7bWYI$urljoin)(dataServers[key2].baseUrl, path);
166
+ // Avoid returning the same container several times
167
+ if (!existingContainers.includes(containerUri)) {
168
+ existingContainers.push(containerUri);
169
+ if (!containers[key1]) containers[key1] = [];
170
+ containers[key1].push(containerUri);
171
+ }
172
+ });
173
+ });
174
+ });
175
+ });
176
+ return containers;
177
+ };
178
+ var $973dc9d98aeab64f$export$2e2bcd8739ae039 = $973dc9d98aeab64f$var$findContainersWithTypes;
179
+
180
+
181
+ const $5a7a2f7583392866$var$createMethod = (config)=>async (resourceId, params)=>{
182
+ const { dataServers: dataServers, resources: resources, httpClient: httpClient, jsonContext: jsonContext } = config;
183
+ const dataModel = resources[resourceId];
184
+ if (!dataModel) Error(`Resource ${resourceId} is not mapped in resources file`);
185
+ const headers = new Headers();
186
+ let containerUri;
187
+ let serverKey;
188
+ if (dataModel.create?.container) {
189
+ serverKey = Object.keys(dataModel.create.container)[0];
190
+ containerUri = (0, $7bWYI$urljoin)(dataServers[serverKey].baseUrl, Object.values(dataModel.create.container)[0]);
191
+ } else {
192
+ serverKey = dataModel.create?.server || Object.keys(dataServers).find((key)=>dataServers[key].default === true);
193
+ if (!serverKey) throw new Error("You must define a server for the creation, or a container, or a default server");
194
+ const containers = (0, $973dc9d98aeab64f$export$2e2bcd8739ae039)(dataModel.types, [
195
+ serverKey
196
+ ], dataServers);
197
+ // Extract the containerUri from the results (and ensure there is only one)
198
+ const serverKeys = Object.keys(containers);
199
+ if (!serverKeys || serverKeys.length === 0) throw new Error(`No container with types ${JSON.stringify(dataModel.types)} found on server ${serverKey}`);
200
+ if (serverKeys.length > 1 || containers[serverKeys[0]].length > 1) throw new Error(`More than one container detected with types ${JSON.stringify(dataModel.types)} on server ${serverKey}`);
201
+ containerUri = containers[serverKeys[0]][0];
202
+ }
203
+ if (params.data) {
204
+ if (dataModel.fieldsMapping?.title) {
205
+ if (Array.isArray(dataModel.fieldsMapping.title)) headers.set("Slug", dataModel.fieldsMapping.title.map((f)=>params.data[f]).join(" "));
206
+ else headers.set("Slug", params.data[dataModel.fieldsMapping.title]);
207
+ }
208
+ // Upload files, if there are any
209
+ params.data = await (0, $749174ce56cb8a3b$export$2e2bcd8739ae039)(params.data, config);
210
+ const { headers: responseHeaders } = await httpClient(containerUri, {
211
+ method: "POST",
212
+ headers: headers,
213
+ body: JSON.stringify({
214
+ "@context": jsonContext,
215
+ "@type": dataModel.types,
216
+ ...params.data
217
+ })
218
+ });
219
+ // Retrieve newly-created resource
220
+ const resourceUri = responseHeaders.get("Location");
221
+ return await (0, $ed447224dd38ce82$export$2e2bcd8739ae039)(config)(resourceId, {
222
+ id: resourceUri
223
+ });
224
+ }
225
+ if (params.id) {
226
+ headers.set("Content-Type", "application/sparql-update");
227
+ await httpClient(containerUri, {
228
+ method: "PATCH",
229
+ headers: headers,
230
+ body: `
231
+ PREFIX ldp: <http://www.w3.org/ns/ldp#>
232
+ INSERT DATA { <${containerUri}> ldp:contains <${params.id}>. };
233
+ `
234
+ });
235
+ // Create must return the new data, so get them from the remote URI
236
+ return await (0, $ed447224dd38ce82$export$2e2bcd8739ae039)(config)(resourceId, {
237
+ id: params.id
238
+ });
239
+ }
240
+ };
241
+ var $5a7a2f7583392866$export$2e2bcd8739ae039 = $5a7a2f7583392866$var$createMethod;
242
+
243
+
244
+ const $70583d95b35d2f6a$var$deleteMethod = (config)=>async (resourceId, params)=>{
245
+ const { httpClient: httpClient } = config;
246
+ await httpClient(params.id, {
247
+ method: "DELETE"
248
+ });
249
+ return {
250
+ data: {
251
+ id: params.id
252
+ }
253
+ };
254
+ };
255
+ var $70583d95b35d2f6a$export$2e2bcd8739ae039 = $70583d95b35d2f6a$var$deleteMethod;
256
+
257
+
258
+ const $298dd1ae21173ea0$var$deleteManyMethod = (config)=>async (resourceId, params)=>{
259
+ const { httpClient: httpClient } = config;
260
+ const ids = [];
261
+ for (const id of params.ids)try {
262
+ await httpClient(id, {
263
+ method: "DELETE"
264
+ });
265
+ ids.push(id);
266
+ } catch (e) {
267
+ // Do nothing if we fail to delete a resource
268
+ }
269
+ return {
270
+ data: ids
271
+ };
272
+ };
273
+ var $298dd1ae21173ea0$export$2e2bcd8739ae039 = $298dd1ae21173ea0$var$deleteManyMethod;
274
+
275
+
276
+ const $7dd5bf9323d2d9c1$var$getDataServers = (config)=>()=>{
277
+ return config.dataServers;
278
+ };
279
+ var $7dd5bf9323d2d9c1$export$2e2bcd8739ae039 = $7dd5bf9323d2d9c1$var$getDataServers;
280
+
281
+
282
+ const $54a3fa40eed06111$var$getDataModels = (config)=>()=>{
283
+ return config.resources;
284
+ };
285
+ var $54a3fa40eed06111$export$2e2bcd8739ae039 = $54a3fa40eed06111$var$getDataModels;
286
+
287
+
288
+
289
+
290
+
291
+ const $3aeefa4731ce9a96$export$26b9f946b448f23e = (type, resource)=>{
292
+ const resourceType = resource.type || resource["@type"];
293
+ return Array.isArray(resourceType) ? resourceType.includes(type) : resourceType === type;
294
+ };
295
+ const $3aeefa4731ce9a96$var$fetchContainers = async (containers, resourceId, params, config)=>{
296
+ const { httpClient: httpClient, jsonContext: jsonContext } = config;
297
+ // Transform in an containerUri:serverKey object
298
+ const containersServers = Object.keys(containers).reduce((acc, serverKey)=>({
299
+ ...acc,
300
+ ...Object.fromEntries(containers[serverKey].map((containerUri)=>[
301
+ containerUri,
302
+ serverKey
303
+ ]))
304
+ }), {});
305
+ const fetchPromises = Object.keys(containersServers).map((containerUri)=>httpClient(containerUri).then(({ json: json })=>{
306
+ // If container's context is different, compact it to have an uniform result
307
+ // TODO deep compare if the context is an object
308
+ if (json["@context"] !== jsonContext) return (0, $7bWYI$jsonld).compact(json, jsonContext);
309
+ return json;
310
+ }).then((json)=>{
311
+ if ($3aeefa4731ce9a96$export$26b9f946b448f23e("ldp:Container", json)) return json["ldp:contains"];
312
+ throw new Error(`${containerUri} is not a LDP container`);
313
+ }));
314
+ // Fetch simultaneously all containers
315
+ let results = await Promise.all(fetchPromises);
316
+ if (results.length === 0) return {
317
+ data: [],
318
+ total: 0
319
+ };
320
+ // Merge all results in one array
321
+ results = [].concat.apply(...results);
322
+ let returnData = results.map((item)=>{
323
+ item.id = item.id || item["@id"];
324
+ return item;
325
+ });
326
+ // Apply filter to results
327
+ if (params.filter) {
328
+ // For SPARQL queries, we use "a" to filter types, but in containers it must be "type"
329
+ if (params.filter.a) {
330
+ params.filter.type = params.filter.a;
331
+ delete params.filter.a;
332
+ }
333
+ if (Object.keys(params.filter).length > 0) returnData = returnData.filter((resource)=>{
334
+ return Object.entries(params.filter).every(([k, v])=>{
335
+ if (k == "q") return Object.entries(resource).some(([kr, vr])=>{
336
+ if (!(0, $7bWYI$isobject)(vr)) {
337
+ const arrayValues = Array.isArray(vr) ? vr : [
338
+ vr
339
+ ];
340
+ return arrayValues.some((va)=>{
341
+ if (typeof va === "string" || va instanceof String) return va.toLowerCase().normalize("NFD").includes(v.toLowerCase().normalize("NFD"));
342
+ });
343
+ }
344
+ return false;
345
+ });
346
+ if (resource[k]) return Array.isArray(resource[k]) ? resource[k].some((va)=>va.includes(v)) : resource[k].includes(v);
347
+ return false;
348
+ });
349
+ });
350
+ }
351
+ if (params.sort) returnData = returnData.sort((a, b)=>{
352
+ if (a[params.sort.field] && b[params.sort.field]) {
353
+ if (params.sort.order === "ASC") return a[params.sort.field].localeCompare(b[params.sort.field]);
354
+ return b[params.sort.field].localeCompare(a[params.sort.field]);
355
+ }
356
+ return true;
357
+ });
358
+ if (params.pagination) returnData = returnData.slice((params.pagination.page - 1) * params.pagination.perPage, params.pagination.page * params.pagination.perPage);
359
+ return {
360
+ data: returnData,
361
+ total: results.length
362
+ };
363
+ };
364
+ var $3aeefa4731ce9a96$export$2e2bcd8739ae039 = $3aeefa4731ce9a96$var$fetchContainers;
365
+
366
+
367
+
368
+ const $3007d5479dd82d51$var$getEmbedFrame = (blankNodes)=>{
369
+ let embedFrame = {};
370
+ let predicates;
371
+ if (blankNodes) {
372
+ for (const blankNode of blankNodes){
373
+ if (blankNode.includes("/")) predicates = blankNode.split("/").reverse();
374
+ else predicates = [
375
+ blankNode
376
+ ];
377
+ embedFrame = {
378
+ ...embedFrame,
379
+ ...predicates.reduce((accumulator, predicate)=>({
380
+ [predicate]: {
381
+ "@embed": "@last",
382
+ ...accumulator
383
+ }
384
+ }), {})
385
+ };
386
+ }
387
+ return embedFrame;
388
+ }
389
+ };
390
+ var $3007d5479dd82d51$export$2e2bcd8739ae039 = $3007d5479dd82d51$var$getEmbedFrame;
391
+
392
+
393
+
394
+
395
+
396
+ const $564e5d81f6496048$var$resolvePrefix = (item, ontologies)=>{
397
+ if (item.startsWith("http://") || item.startsWith("https://")) // Already resolved, return the URI
398
+ return item;
399
+ if (item === "a") // Special case
400
+ return "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
401
+ const [prefix, value] = item.split(":");
402
+ if (value) {
403
+ const ontology = ontologies.find((ontology)=>ontology.prefix === prefix);
404
+ if (ontology) return ontology.url + value;
405
+ throw new Error(`No ontology found with prefix ${prefix}`);
406
+ } else throw new Error(`The value "${item}" is not correct. It must include a prefix or be a full URI.`);
407
+ };
408
+ var $564e5d81f6496048$export$2e2bcd8739ae039 = $564e5d81f6496048$var$resolvePrefix;
409
+
410
+
411
+ const $47d734d7812e6861$var$defaultToArray = (value)=>!value ? [] : Array.isArray(value) ? value : [
412
+ value
413
+ ];
414
+ // We need to always include the type or React-Admin will not work properly
415
+ const $47d734d7812e6861$var$typeQuery = (0, $7bWYI$triple)((0, $7bWYI$variable)("s1"), (0, $7bWYI$namedNode)("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"), (0, $7bWYI$variable)("type"));
416
+ const $47d734d7812e6861$var$buildBaseQuery = (predicates, ontologies)=>{
417
+ let baseTriples;
418
+ if (predicates) {
419
+ baseTriples = $47d734d7812e6861$var$defaultToArray(predicates).map((predicate, i)=>(0, $7bWYI$triple)((0, $7bWYI$variable)("s1"), (0, $7bWYI$namedNode)((0, $564e5d81f6496048$export$2e2bcd8739ae039)(predicate, ontologies)), (0, $7bWYI$variable)(`o${i + 1}`)));
420
+ return {
421
+ construct: [
422
+ $47d734d7812e6861$var$typeQuery,
423
+ ...baseTriples
424
+ ],
425
+ where: [
426
+ $47d734d7812e6861$var$typeQuery,
427
+ ...baseTriples.map((triple)=>({
428
+ type: "optional",
429
+ patterns: [
430
+ triple
431
+ ]
432
+ }))
433
+ ]
434
+ };
435
+ }
436
+ baseTriples = [
437
+ (0, $7bWYI$triple)((0, $7bWYI$variable)("s1"), (0, $7bWYI$variable)("p1"), (0, $7bWYI$variable)("o1"))
438
+ ];
439
+ return {
440
+ construct: baseTriples,
441
+ where: baseTriples
442
+ };
443
+ };
444
+ var $47d734d7812e6861$export$2e2bcd8739ae039 = $47d734d7812e6861$var$buildBaseQuery;
445
+
446
+
447
+
448
+
449
+
450
+ // Transform ['ont:predicate1/ont:predicate2'] to ['ont:predicate1', 'ont:predicate1/ont:predicate2']
451
+ const $865f630cc944e818$var$extractNodes = (blankNodes)=>{
452
+ const nodes = [];
453
+ if (blankNodes) {
454
+ for (const predicate of blankNodes)if (predicate.includes("/")) {
455
+ const nodeNames = predicate.split("/");
456
+ for(let i = 1; i <= nodeNames.length; i++)nodes.push(nodeNames.slice(0, i).join("/"));
457
+ } else nodes.push(predicate);
458
+ }
459
+ return nodes;
460
+ };
461
+ const $865f630cc944e818$var$generateSparqlVarName = (node)=>(0, $7bWYI$cryptojsmd5)(node);
462
+ const $865f630cc944e818$var$getParentNode = (node)=>node.includes("/") && node.split("/")[0];
463
+ const $865f630cc944e818$var$getPredicate = (node)=>node.includes("/") ? node.split("/")[1] : node;
464
+ const $865f630cc944e818$var$buildUnionQuery = (queries)=>queries.map((q)=>{
465
+ let triples = q.query;
466
+ const firstTriple = queries.find((q2)=>q.parentNode === q2.node);
467
+ if (firstTriple !== undefined) triples = triples.concat(firstTriple.query[0]);
468
+ return {
469
+ type: "bgp",
470
+ triples: triples
471
+ };
472
+ });
473
+ const $865f630cc944e818$var$buildBlankNodesQuery = (blankNodes, baseQuery, ontologies)=>{
474
+ const queries = [];
475
+ const nodes = $865f630cc944e818$var$extractNodes(blankNodes);
476
+ if (nodes && ontologies && ontologies.length > 0) {
477
+ for (const node of nodes){
478
+ const parentNode = $865f630cc944e818$var$getParentNode(node);
479
+ const predicate = $865f630cc944e818$var$getPredicate(node);
480
+ const varName = $865f630cc944e818$var$generateSparqlVarName(node);
481
+ const parentVarName = parentNode ? $865f630cc944e818$var$generateSparqlVarName(parentNode) : "1";
482
+ const query = [
483
+ (0, $7bWYI$triple)((0, $7bWYI$variable)(`s${parentVarName}`), (0, $7bWYI$namedNode)((0, $564e5d81f6496048$export$2e2bcd8739ae039)(predicate, ontologies)), (0, $7bWYI$variable)(`s${varName}`)),
484
+ (0, $7bWYI$triple)((0, $7bWYI$variable)(`s${varName}`), (0, $7bWYI$variable)(`p${varName}`), (0, $7bWYI$variable)(`o${varName}`))
485
+ ];
486
+ queries.push({
487
+ node: node,
488
+ parentNode: parentNode,
489
+ query: query,
490
+ filter: "" // `FILTER(isBLANK(?s${varName})) .`
491
+ });
492
+ }
493
+ return {
494
+ construct: queries.length > 0 ? queries.map((q)=>q.query).reduce((pre, cur)=>pre.concat(cur)) : null,
495
+ where: {
496
+ type: "union",
497
+ patterns: [
498
+ baseQuery.where,
499
+ ...$865f630cc944e818$var$buildUnionQuery(queries)
500
+ ]
501
+ }
502
+ };
503
+ }
504
+ return {
505
+ construct: "",
506
+ where: ""
507
+ };
508
+ };
509
+ var $865f630cc944e818$export$2e2bcd8739ae039 = $865f630cc944e818$var$buildBlankNodesQuery;
510
+
511
+
512
+
513
+ const $efbe3fa6f1479c06$var$buildAutoDetectBlankNodesQuery = (depth, baseQuery)=>{
514
+ const construct = [
515
+ ...baseQuery.construct
516
+ ];
517
+ let where = {};
518
+ if (depth > 0) {
519
+ const whereQueries = [];
520
+ whereQueries.push([
521
+ baseQuery.where
522
+ ]);
523
+ for(let i = 1; i <= depth; i++){
524
+ construct.push((0, $7bWYI$triple)((0, $7bWYI$variable)(`o${i}`), (0, $7bWYI$variable)(`p${i + 1}`), (0, $7bWYI$variable)(`o${i + 1}`)));
525
+ whereQueries.push([
526
+ ...whereQueries[whereQueries.length - 1],
527
+ {
528
+ type: "filter",
529
+ expression: {
530
+ type: "operation",
531
+ operator: "isblank",
532
+ args: [
533
+ (0, $7bWYI$variable)(`o${i}`)
534
+ ]
535
+ }
536
+ },
537
+ (0, $7bWYI$triple)((0, $7bWYI$variable)(`o${i}`), (0, $7bWYI$variable)(`p${i + 1}`), (0, $7bWYI$variable)(`o${i + 1}`))
538
+ ]);
539
+ }
540
+ where = {
541
+ type: "union",
542
+ patterns: whereQueries
543
+ };
544
+ } else if (depth === 0) where = baseQuery.where;
545
+ else throw new Error("The depth of buildAutoDetectBlankNodesQuery should be 0 or more");
546
+ return {
547
+ construct: construct,
548
+ where: where
549
+ };
550
+ };
551
+ var $efbe3fa6f1479c06$export$2e2bcd8739ae039 = $efbe3fa6f1479c06$var$buildAutoDetectBlankNodesQuery;
552
+
553
+
554
+
555
+ const { literal: $6cde9a8fbbde3ffb$var$literal, namedNode: $6cde9a8fbbde3ffb$var$namedNode, triple: $6cde9a8fbbde3ffb$var$triple, variable: $6cde9a8fbbde3ffb$var$variable } = (0, $7bWYI$rdfjsdatamodel);
556
+ const $6cde9a8fbbde3ffb$var$generator = new (0, $7bWYI$Generator)({
557
+ });
558
+ const $6cde9a8fbbde3ffb$var$reservedFilterKeys = [
559
+ "q",
560
+ "sparqlWhere",
561
+ "blankNodes",
562
+ "blankNodesDepth",
563
+ "_servers",
564
+ "_predicates"
565
+ ];
566
+ const $6cde9a8fbbde3ffb$var$buildSparqlQuery = ({ containers: containers, params: params, dataModel: dataModel, ontologies: ontologies })=>{
567
+ const blankNodes = params.filter?.blankNodes || dataModel.list?.blankNodes;
568
+ const predicates = params.filter?._predicates || dataModel.list?.predicates;
569
+ const blankNodesDepth = params.filter?.blankNodesDepth ?? dataModel.list?.blankNodesDepth ?? 2;
570
+ const filter = {
571
+ ...dataModel.list?.filter,
572
+ ...params.filter
573
+ };
574
+ const baseQuery = (0, $47d734d7812e6861$export$2e2bcd8739ae039)(predicates, ontologies);
575
+ const sparqlJsParams = {
576
+ queryType: "CONSTRUCT",
577
+ template: baseQuery.construct,
578
+ where: [],
579
+ type: "query",
580
+ prefixes: Object.fromEntries(ontologies.map((ontology)=>[
581
+ ontology.prefix,
582
+ ontology.url
583
+ ]))
584
+ };
585
+ const containerWhere = [
586
+ {
587
+ type: "values",
588
+ values: containers.map((containerUri)=>({
589
+ "?containerUri": $6cde9a8fbbde3ffb$var$namedNode(containerUri)
590
+ }))
591
+ },
592
+ $6cde9a8fbbde3ffb$var$triple($6cde9a8fbbde3ffb$var$variable("containerUri"), $6cde9a8fbbde3ffb$var$namedNode("http://www.w3.org/ns/ldp#contains"), $6cde9a8fbbde3ffb$var$variable("s1")),
593
+ {
594
+ type: "filter",
595
+ expression: {
596
+ type: "operation",
597
+ operator: "isiri",
598
+ args: [
599
+ $6cde9a8fbbde3ffb$var$variable("s1")
600
+ ]
601
+ }
602
+ }
603
+ ];
604
+ let resourceWhere = [];
605
+ if (filter && Object.keys(filter).length > 0) {
606
+ const hasSPARQLFilter = filter.sparqlWhere && Object.keys(filter.sparqlWhere).length > 0;
607
+ const hasFullTextSearch = filter.q && filter.q.length > 0;
608
+ if (hasSPARQLFilter) /*
609
+ Example of usage :
610
+ {
611
+ "sparqlWhere": {
612
+ "type": "bgp",
613
+ "triples": [{
614
+ "subject": {"termType": "Variable", "value": "s1"},
615
+ "predicate": {"termType": "NameNode", "value": "http://virtual-assembly.org/ontologies/pair#label"},
616
+ "object": {"termType": "Literal", "value": "My Organization"}
617
+ }]
618
+ }
619
+ }
620
+ */ // initialize array in case of single value :
621
+ [].concat(filter.sparqlWhere).forEach((sw)=>{
622
+ resourceWhere.push(sw);
623
+ });
624
+ if (hasFullTextSearch) resourceWhere.push({
625
+ type: "group",
626
+ patterns: [
627
+ {
628
+ queryType: "SELECT",
629
+ variables: [
630
+ $6cde9a8fbbde3ffb$var$variable("s1")
631
+ ],
632
+ where: [
633
+ $6cde9a8fbbde3ffb$var$triple($6cde9a8fbbde3ffb$var$variable("s1"), $6cde9a8fbbde3ffb$var$variable("p1"), $6cde9a8fbbde3ffb$var$variable("o1")),
634
+ {
635
+ type: "filter",
636
+ expression: {
637
+ type: "operation",
638
+ operator: "isliteral",
639
+ args: [
640
+ $6cde9a8fbbde3ffb$var$variable("o1")
641
+ ]
642
+ }
643
+ },
644
+ {
645
+ type: "filter",
646
+ expression: {
647
+ type: "operation",
648
+ operator: "regex",
649
+ args: [
650
+ {
651
+ type: "operation",
652
+ operator: "lcase",
653
+ args: [
654
+ {
655
+ type: "operation",
656
+ operator: "str",
657
+ args: [
658
+ $6cde9a8fbbde3ffb$var$variable("o1")
659
+ ]
660
+ }
661
+ ]
662
+ },
663
+ $6cde9a8fbbde3ffb$var$literal(filter.q.toLowerCase(), "", $6cde9a8fbbde3ffb$var$namedNode("http://www.w3.org/2001/XMLSchema#string"))
664
+ ]
665
+ }
666
+ }
667
+ ],
668
+ type: "query"
669
+ }
670
+ ]
671
+ });
672
+ // Other filters
673
+ // SPARQL keyword a = filter based on the class of a resource (example => 'a': 'pair:OrganizationType')
674
+ // Other filters are based on a value (example => 'petr:hasAudience': 'http://localhost:3000/audiences/tout-public')
675
+ Object.entries(filter).forEach(([predicate, object])=>{
676
+ if (!$6cde9a8fbbde3ffb$var$reservedFilterKeys.includes(predicate)) resourceWhere.unshift($6cde9a8fbbde3ffb$var$triple($6cde9a8fbbde3ffb$var$variable("s1"), $6cde9a8fbbde3ffb$var$namedNode((0, $564e5d81f6496048$export$2e2bcd8739ae039)(predicate, ontologies)), $6cde9a8fbbde3ffb$var$namedNode((0, $564e5d81f6496048$export$2e2bcd8739ae039)(object, ontologies))));
677
+ });
678
+ }
679
+ // Blank nodes
680
+ const blankNodesQuery = blankNodes ? (0, $865f630cc944e818$export$2e2bcd8739ae039)(blankNodes, baseQuery, ontologies) : (0, $efbe3fa6f1479c06$export$2e2bcd8739ae039)(blankNodesDepth, baseQuery);
681
+ if (blankNodesQuery && blankNodesQuery.construct) {
682
+ resourceWhere = resourceWhere.concat(blankNodesQuery.where);
683
+ sparqlJsParams.template = sparqlJsParams.template.concat(blankNodesQuery.construct);
684
+ } else resourceWhere.push(baseQuery.where);
685
+ sparqlJsParams.where.push({
686
+ type: "union",
687
+ patterns: [
688
+ containerWhere,
689
+ {
690
+ type: "graph",
691
+ name: $6cde9a8fbbde3ffb$var$namedNode("http://semapps.org/mirror"),
692
+ patterns: containerWhere
693
+ }
694
+ ]
695
+ }, {
696
+ type: "union",
697
+ patterns: [
698
+ resourceWhere,
699
+ {
700
+ type: "graph",
701
+ name: $6cde9a8fbbde3ffb$var$namedNode("http://semapps.org/mirror"),
702
+ patterns: resourceWhere
703
+ }
704
+ ]
705
+ });
706
+ return $6cde9a8fbbde3ffb$var$generator.stringify(sparqlJsParams);
707
+ };
708
+ var $6cde9a8fbbde3ffb$export$2e2bcd8739ae039 = $6cde9a8fbbde3ffb$var$buildSparqlQuery;
709
+
710
+
711
+ const $05a1b4063d50f1b7$var$compare = (a, b)=>{
712
+ switch(typeof a){
713
+ case "string":
714
+ return a.localeCompare(b);
715
+ case "number":
716
+ case "bigint":
717
+ return a - b;
718
+ default:
719
+ return 0;
720
+ }
721
+ };
722
+ const $05a1b4063d50f1b7$var$fetchSparqlEndpoints = async (containers, resourceId, params, config)=>{
723
+ const { dataServers: dataServers, resources: resources, httpClient: httpClient, jsonContext: jsonContext, ontologies: ontologies } = config;
724
+ const dataModel = resources[resourceId];
725
+ const sparqlQueryPromises = Object.keys(containers).map((serverKey)=>new Promise((resolve, reject)=>{
726
+ const blankNodes = params.filter?.blankNodes || dataModel.list?.blankNodes;
727
+ // When the SPARQL request comes from the browser's URL, it comes as JSON string which must must be parsed
728
+ if (params.filter?.sparqlWhere && (typeof params.filter.sparqlWhere === "string" || params.filter.sparqlWhere instanceof String)) params.filter.sparqlWhere = JSON.parse(decodeURIComponent(params.filter.sparqlWhere));
729
+ const sparqlQuery = (0, $6cde9a8fbbde3ffb$export$2e2bcd8739ae039)({
730
+ containers: containers[serverKey],
731
+ params: params,
732
+ dataModel: dataModel,
733
+ ontologies: ontologies
734
+ });
735
+ httpClient(dataServers[serverKey].sparqlEndpoint, {
736
+ method: "POST",
737
+ body: sparqlQuery
738
+ }).then(({ json: json })=>{
739
+ // By default, embed only the blank nodes we explicitly asked to dereference
740
+ // Otherwise we may have same-type resources embedded in other resources
741
+ // To increase performances, you can set explicitEmbedOnFraming to false (make sure the result is still OK)
742
+ const frame = dataModel.list?.explicitEmbedOnFraming !== false ? {
743
+ "@context": jsonContext,
744
+ "@type": dataModel.types,
745
+ "@embed": "@never",
746
+ ...(0, $3007d5479dd82d51$export$2e2bcd8739ae039)(blankNodes)
747
+ } : {
748
+ "@context": jsonContext,
749
+ "@type": dataModel.types
750
+ };
751
+ // omitGraph option force results to be in a @graph, even if we have a single result
752
+ return (0, $7bWYI$jsonld).frame(json, frame, {
753
+ omitGraph: false
754
+ });
755
+ }).then((compactJson)=>{
756
+ if (compactJson["@id"]) {
757
+ const { "@context": context, ...rest } = compactJson;
758
+ compactJson = {
759
+ "@context": context,
760
+ "@graph": [
761
+ rest
762
+ ]
763
+ };
764
+ }
765
+ resolve(compactJson["@graph"] || []);
766
+ }).catch((e)=>reject(e));
767
+ }));
768
+ // Run simultaneous SPARQL queries
769
+ let results = await Promise.all(sparqlQueryPromises);
770
+ if (results.length === 0) return {
771
+ data: [],
772
+ total: 0
773
+ };
774
+ // Merge all results in one array
775
+ results = [].concat(...results);
776
+ // Add id in addition to @id, as this is what React-Admin expects
777
+ let returnData = results.map((item)=>{
778
+ item.id = item.id || item["@id"];
779
+ return item;
780
+ });
781
+ // TODO sort and paginate the results in the SPARQL query to improve performances
782
+ if (params.sort) returnData = returnData.sort((a, b)=>{
783
+ if (a[params.sort.field] !== undefined && b[params.sort.field] !== undefined) {
784
+ if (params.sort.order === "ASC") return $05a1b4063d50f1b7$var$compare(a[params.sort.field], b[params.sort.field]);
785
+ return $05a1b4063d50f1b7$var$compare(b[params.sort.field], a[params.sort.field]);
786
+ }
787
+ return 0;
788
+ });
789
+ if (params.pagination) returnData = returnData.slice((params.pagination.page - 1) * params.pagination.perPage, params.pagination.page * params.pagination.perPage);
790
+ return {
791
+ data: returnData,
792
+ total: results.length
793
+ };
794
+ };
795
+ var $05a1b4063d50f1b7$export$2e2bcd8739ae039 = $05a1b4063d50f1b7$var$fetchSparqlEndpoints;
796
+
797
+
798
+
799
+ const $4a0be4f601906b75$var$findContainersWithPaths = (paths, dataServers)=>{
800
+ const containers = {};
801
+ Object.keys(paths).forEach((serverKey)=>{
802
+ if (dataServers[serverKey]) {
803
+ containers[serverKey] = [];
804
+ paths[serverKey].forEach((path)=>{
805
+ containers[serverKey].push((0, $7bWYI$urljoin)(dataServers[serverKey].baseUrl, path));
806
+ });
807
+ } else throw new Error(`No server found with key ${serverKey}`);
808
+ });
809
+ return containers;
810
+ };
811
+ var $4a0be4f601906b75$export$2e2bcd8739ae039 = $4a0be4f601906b75$var$findContainersWithPaths;
812
+
813
+
814
+ const $7add415f7ebb1122$var$getListMethod = (config)=>async (resourceId, params = {})=>{
815
+ const { dataServers: dataServers, resources: resources } = config;
816
+ const dataModel = resources[resourceId];
817
+ if (!dataModel) throw new Error(`Resource ${resourceId} is not mapped in resources file`);
818
+ let containers;
819
+ if (!params.filter?._servers && dataModel.list?.containers) {
820
+ if (Array.isArray(dataModel.list?.containers)) throw new Error(`The list.containers property of ${resourceId} dataModel must be of type object ({ serverKey: [containerUri] })`);
821
+ // If containers are set explicitly, use them
822
+ containers = (0, $4a0be4f601906b75$export$2e2bcd8739ae039)(dataModel.list.containers, dataServers);
823
+ } else // Otherwise find the container URIs on the given servers (either in the filter or the data model)
824
+ containers = (0, $973dc9d98aeab64f$export$2e2bcd8739ae039)(dataModel.types, params.filter?._servers || dataModel.list?.servers, dataServers);
825
+ if (dataModel.list?.fetchContainer) return (0, $3aeefa4731ce9a96$export$2e2bcd8739ae039)(containers, resourceId, params, config);
826
+ return (0, $05a1b4063d50f1b7$export$2e2bcd8739ae039)(containers, resourceId, params, config);
827
+ };
828
+ var $7add415f7ebb1122$export$2e2bcd8739ae039 = $7add415f7ebb1122$var$getListMethod;
829
+
830
+
831
+
832
+ const $f1e05270f9a21255$var$getManyMethod = (config)=>async (resourceId, params)=>{
833
+ const { returnFailedResources: returnFailedResources } = config;
834
+ let returnData = await Promise.all(params.ids.map((id)=>(0, $ed447224dd38ce82$export$2e2bcd8739ae039)(config)(resourceId, {
835
+ id: typeof id === "object" ? id["@id"] : id
836
+ }).then(({ data: data })=>data).catch(()=>{
837
+ // Catch if one resource fails to load
838
+ // Otherwise no references will be show if only one is missing
839
+ // See https://github.com/marmelab/react-admin/issues/5190
840
+ if (returnFailedResources) return {
841
+ id: id,
842
+ _error: true
843
+ };
844
+ // Returning nothing
845
+ })));
846
+ // We don't want undefined results to appear in the results as it will break with react-admin
847
+ returnData = returnData.filter((e)=>e);
848
+ return {
849
+ data: returnData
850
+ };
851
+ };
852
+ var $f1e05270f9a21255$export$2e2bcd8739ae039 = $f1e05270f9a21255$var$getManyMethod;
853
+
854
+
855
+
856
+ const $b5979a9678f57756$var$getManyReferenceMethod = (config)=>async (resourceId, params)=>{
857
+ params.filter = {
858
+ ...params.filter,
859
+ [params.target]: params.id
860
+ };
861
+ delete params.target;
862
+ return await (0, $7add415f7ebb1122$export$2e2bcd8739ae039)(config)(resourceId, params);
863
+ };
864
+ var $b5979a9678f57756$export$2e2bcd8739ae039 = $b5979a9678f57756$var$getManyReferenceMethod;
865
+
866
+
867
+
868
+
869
+ const $3e88ccd9de6ca662$var$updateMethod = (config)=>async (resourceId, params)=>{
870
+ const { httpClient: httpClient, jsonContext: jsonContext } = config;
871
+ // Upload files, if there are any
872
+ params.data = await (0, $749174ce56cb8a3b$export$2e2bcd8739ae039)(params.data, config);
873
+ await httpClient(params.id, {
874
+ method: "PUT",
875
+ body: JSON.stringify({
876
+ "@context": jsonContext,
877
+ ...params.data
878
+ })
879
+ });
880
+ return {
881
+ data: params.data
882
+ };
883
+ };
884
+ var $3e88ccd9de6ca662$export$2e2bcd8739ae039 = $3e88ccd9de6ca662$var$updateMethod;
885
+
886
+
887
+
888
+
889
+
890
+ const $81a8da127161495a$var$fetchUserConfig = async (config)=>{
891
+ const { dataServers: dataServers, httpClient: httpClient } = config;
892
+ const token = localStorage.getItem("token");
893
+ const podKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("pod", dataServers);
894
+ const authServerKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("authServer", dataServers);
895
+ // If the user is logged in
896
+ if (token) {
897
+ const { webId: webId } = (0, $7bWYI$jwtdecode)(token);
898
+ let userData;
899
+ try {
900
+ const { json: json } = await httpClient(webId);
901
+ userData = json;
902
+ } catch (e) {
903
+ console.error(e);
904
+ // If the webId cannot be fetched, assume an invalid token and disconnect the user
905
+ localStorage.clear();
906
+ window.location.reload();
907
+ return;
908
+ }
909
+ // If we have a POD server
910
+ if (podKey) {
911
+ // Fill the config provided to the data provider
912
+ // We must modify the config object directly
913
+ config.dataServers[podKey].name = "My Pod";
914
+ config.dataServers[podKey].baseUrl = (0, $7bWYI$urljoin)(webId, "data"); // TODO find POD URI from user profile
915
+ config.dataServers[podKey].sparqlEndpoint = userData.endpoints?.["void:sparqlEndpoint"] || (0, $7bWYI$urljoin)(webId, "sparql");
916
+ }
917
+ if (authServerKey) // Fill the config provided to the data provider
918
+ // We must modify the config object directly
919
+ config.dataServers[authServerKey].proxyUrl = userData.endpoints?.proxyUrl;
920
+ } else if (podKey) // If the user is not logged in, ignore the POD server
921
+ delete config.dataServers[podKey];
922
+ };
923
+ var $81a8da127161495a$export$2e2bcd8739ae039 = $81a8da127161495a$var$fetchUserConfig;
924
+
925
+
926
+ const $31a4627920feab4a$var$defaultToArray = (value)=>!value ? undefined : Array.isArray(value) ? value : [
927
+ value
928
+ ];
929
+ const $31a4627920feab4a$var$fetchVoidEndpoints = async (config)=>{
930
+ const fetchPromises = Object.entries(config.dataServers).filter(([key, server])=>server.pod !== true).map(([key, server])=>config.httpClient(new URL("/.well-known/void", server.baseUrl).toString()).then((result)=>({
931
+ key: key,
932
+ datasets: result.json["@graph"]
933
+ })).catch((e)=>{
934
+ if (e.status === 404 || e.status === 401) return {
935
+ key: key,
936
+ error: e
937
+ };
938
+ throw e;
939
+ }));
940
+ let results = [];
941
+ try {
942
+ results = await Promise.all(fetchPromises);
943
+ } catch (e) {
944
+ // Do not throw error if no endpoint found
945
+ }
946
+ for (const result of results){
947
+ config.dataServers[result.key].containers = config.dataServers[result.key].containers || {};
948
+ config.dataServers[result.key].blankNodes = config.dataServers[result.key].blankNodes || {};
949
+ // Ignore unfetchable endpoints
950
+ if (result.datasets) for (const dataset of result.datasets){
951
+ const datasetServerKey = Object.keys(config.dataServers).find((key)=>dataset["void:uriSpace"] === config.dataServers[key].baseUrl);
952
+ // If the dataset is not part of a server mapped in the dataServers, ignore it
953
+ if (datasetServerKey) {
954
+ // If this is the local dataset, add the base information
955
+ if (datasetServerKey === result.key) {
956
+ config.dataServers[result.key].name = config.dataServers[result.key].name || dataset["dc:title"];
957
+ config.dataServers[result.key].description = config.dataServers[result.key].description || dataset["dc:description"];
958
+ config.dataServers[result.key].sparqlEndpoint = config.dataServers[result.key].sparqlEndpoint || dataset["void:sparqlEndpoint"];
959
+ }
960
+ config.dataServers[result.key].containers[datasetServerKey] = config.dataServers[result.key].containers[datasetServerKey] || {};
961
+ for (const partition of $31a4627920feab4a$var$defaultToArray(dataset["void:classPartition"]))for (const type of $31a4627920feab4a$var$defaultToArray(partition["void:class"])){
962
+ // Set containers by type
963
+ const path = partition["void:uriSpace"].replace(dataset["void:uriSpace"], "/");
964
+ if (config.dataServers[result.key].containers[datasetServerKey][type]) config.dataServers[result.key].containers[datasetServerKey][type].push(path);
965
+ else config.dataServers[result.key].containers[datasetServerKey][type] = [
966
+ path
967
+ ];
968
+ }
969
+ }
970
+ }
971
+ }
972
+ };
973
+ var $31a4627920feab4a$export$2e2bcd8739ae039 = $31a4627920feab4a$var$fetchVoidEndpoints;
974
+
975
+
976
+
977
+
978
+ // Return the first server matching with the baseUrl
979
+ const $47e21ee81eed09a6$var$getServerKeyFromUri = (uri, dataServers)=>{
980
+ return Object.keys(dataServers).find((key)=>{
981
+ if (dataServers[key].pod) // The baseUrl ends with /data so remove this part to match with the webId and webId-related URLs (/inbox, /outbox...)
982
+ return dataServers[key].baseUrl && uri.startsWith(dataServers[key].baseUrl.replace("/data", ""));
983
+ return uri.startsWith(dataServers[key].baseUrl);
984
+ });
985
+ };
986
+ var $47e21ee81eed09a6$export$2e2bcd8739ae039 = $47e21ee81eed09a6$var$getServerKeyFromUri;
987
+
988
+
989
+
990
+ /*
991
+ * HTTP client used by all calls in data provider and auth provider
992
+ * Do proxy calls if a proxy endpoint is available and the server is different from the auth server
993
+ */ const $22b4895a4ca7d626$var$httpClient = (dataServers)=>(url, options = {})=>{
994
+ const authServerKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("authServer", dataServers);
995
+ const serverKey = (0, $47e21ee81eed09a6$export$2e2bcd8739ae039)(url, dataServers);
996
+ const useProxy = serverKey !== authServerKey && dataServers[authServerKey]?.proxyUrl && dataServers[serverKey]?.noProxy !== true;
997
+ if (!options.headers) options.headers = new Headers();
998
+ switch(options.method){
999
+ case "POST":
1000
+ case "PATCH":
1001
+ case "PUT":
1002
+ if (!options.headers.has("Accept")) options.headers.set("Accept", "application/ld+json");
1003
+ if (!options.headers.has("Content-Type")) options.headers.set("Content-Type", "application/ld+json");
1004
+ break;
1005
+ case "DELETE":
1006
+ break;
1007
+ case "GET":
1008
+ default:
1009
+ if (!options.headers.has("Accept")) options.headers.set("Accept", "application/ld+json");
1010
+ break;
1011
+ }
1012
+ if (useProxy) {
1013
+ const formData = new FormData();
1014
+ formData.append("id", url);
1015
+ formData.append("method", options.method || "GET");
1016
+ formData.append("headers", JSON.stringify(Object.fromEntries(options.headers.entries())));
1017
+ if (options.body) {
1018
+ if (options.body instanceof File) formData.append("body", options.body, options.body.name);
1019
+ else formData.append("body", options.body);
1020
+ }
1021
+ // Post to proxy endpoint with multipart/form-data format
1022
+ return (0, $7bWYI$fetchUtils).fetchJson(dataServers[authServerKey].proxyUrl, {
1023
+ method: "POST",
1024
+ headers: new Headers({
1025
+ Authorization: `Bearer ${localStorage.getItem("token")}`
1026
+ }),
1027
+ body: formData
1028
+ });
1029
+ }
1030
+ // Add token if the server is the same as the auth server
1031
+ if (serverKey === authServerKey) {
1032
+ const token = localStorage.getItem("token");
1033
+ if (token) options.headers.set("Authorization", `Bearer ${token}`);
1034
+ }
1035
+ return (0, $7bWYI$fetchUtils).fetchJson(url, options);
1036
+ };
1037
+ var $22b4895a4ca7d626$export$2e2bcd8739ae039 = $22b4895a4ca7d626$var$httpClient;
1038
+
1039
+
1040
+ const $243bf28fbb1b868f$var$dataProvider = (config)=>{
1041
+ // TODO verify all data provider config + data models
1042
+ if (!(0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("default", config.dataServers)) throw new Error("You must define a default server in your dataServers config");
1043
+ if (!config.jsonContext) config.jsonContext = Object.fromEntries(config.ontologies.map((o)=>[
1044
+ o.prefix,
1045
+ o.url
1046
+ ]));
1047
+ if (!config.returnFailedResources) config.returnFailedResources = false;
1048
+ // Configure httpClient with data servers (this is needed for proxy calls)
1049
+ config.httpClient = (0, $22b4895a4ca7d626$export$2e2bcd8739ae039)(config.dataServers);
1050
+ const fetchUserConfigPromise = (0, $81a8da127161495a$export$2e2bcd8739ae039)(config);
1051
+ const fetchVoidEndpointsPromise = (0, $31a4627920feab4a$export$2e2bcd8739ae039)(config);
1052
+ const waitForVoidEndpoints = (method)=>async (...arg)=>{
1053
+ await fetchUserConfigPromise;
1054
+ await fetchVoidEndpointsPromise; // Return immediately if promise is fulfilled
1055
+ return await method(...arg);
1056
+ };
1057
+ return {
1058
+ getList: waitForVoidEndpoints((0, $7add415f7ebb1122$export$2e2bcd8739ae039)(config)),
1059
+ getMany: waitForVoidEndpoints((0, $f1e05270f9a21255$export$2e2bcd8739ae039)(config)),
1060
+ getManyReference: waitForVoidEndpoints((0, $b5979a9678f57756$export$2e2bcd8739ae039)(config)),
1061
+ getOne: waitForVoidEndpoints((0, $ed447224dd38ce82$export$2e2bcd8739ae039)(config)),
1062
+ create: waitForVoidEndpoints((0, $5a7a2f7583392866$export$2e2bcd8739ae039)(config)),
1063
+ update: waitForVoidEndpoints((0, $3e88ccd9de6ca662$export$2e2bcd8739ae039)(config)),
1064
+ updateMany: ()=>{
1065
+ throw new Error("updateMany is not implemented yet");
1066
+ },
1067
+ delete: waitForVoidEndpoints((0, $70583d95b35d2f6a$export$2e2bcd8739ae039)(config)),
1068
+ deleteMany: waitForVoidEndpoints((0, $298dd1ae21173ea0$export$2e2bcd8739ae039)(config)),
1069
+ // Custom methods
1070
+ getDataModels: waitForVoidEndpoints((0, $54a3fa40eed06111$export$2e2bcd8739ae039)(config)),
1071
+ getDataServers: waitForVoidEndpoints((0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config)),
1072
+ getLocalDataServers: (0, $7dd5bf9323d2d9c1$export$2e2bcd8739ae039)(config),
1073
+ fetch: waitForVoidEndpoints(config.httpClient)
1074
+ };
1075
+ };
1076
+ var $243bf28fbb1b868f$export$2e2bcd8739ae039 = $243bf28fbb1b868f$var$dataProvider;
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+ const $87656edf926c0f1f$var$compute = (externalLinks, record)=>typeof externalLinks === "function" ? externalLinks(record) : externalLinks;
1084
+ const $87656edf926c0f1f$var$isURL = (url)=>typeof url === "string" && url.startsWith("http");
1085
+ const $87656edf926c0f1f$var$useGetExternalLink = (componentExternalLinks)=>{
1086
+ // Since the externalLinks config is defined only locally, we don't need to wait for VOID endpoints fetching
1087
+ const dataProvider = (0, $7bWYI$useContext)((0, $7bWYI$DataProviderContext));
1088
+ const dataServers = dataProvider.getLocalDataServers();
1089
+ const serversExternalLinks = (0, $7bWYI$useMemo)(()=>{
1090
+ if (dataServers) return Object.fromEntries(Object.values(dataServers).map((server)=>{
1091
+ // If externalLinks is not defined in the data server, use external links for non-default servers
1092
+ const externalLinks = server.externalLinks !== undefined ? server.externalLinks : !server.default;
1093
+ return [
1094
+ server.baseUrl,
1095
+ externalLinks
1096
+ ];
1097
+ }));
1098
+ }, [
1099
+ dataServers
1100
+ ]);
1101
+ return (0, $7bWYI$useCallback)((record)=>{
1102
+ const computedComponentExternalLinks = $87656edf926c0f1f$var$compute(componentExternalLinks, record);
1103
+ // If the component explicitly asks not to display as external links, use an internal link
1104
+ if (computedComponentExternalLinks === false) return false;
1105
+ if (!record?.id) return false;
1106
+ const serverBaseUrl = Object.keys(serversExternalLinks).find((baseUrl)=>record?.id.startsWith(baseUrl));
1107
+ // If no matching data servers could be found, assume we have an internal link
1108
+ if (!serverBaseUrl) return false;
1109
+ const computedServerExternalLinks = $87656edf926c0f1f$var$compute(serversExternalLinks[serverBaseUrl], record);
1110
+ // If the data server explicitly asks not to display as external links, use an internal link
1111
+ if (computedServerExternalLinks === false) return false;
1112
+ if ($87656edf926c0f1f$var$isURL(computedComponentExternalLinks)) return computedComponentExternalLinks;
1113
+ if ($87656edf926c0f1f$var$isURL(computedServerExternalLinks)) return computedServerExternalLinks;
1114
+ return record.id;
1115
+ }, [
1116
+ serversExternalLinks,
1117
+ componentExternalLinks
1118
+ ]);
1119
+ };
1120
+ var $87656edf926c0f1f$export$2e2bcd8739ae039 = $87656edf926c0f1f$var$useGetExternalLink;
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+ const $a87bd51acf378e49$var$useDataModel = (resourceId)=>{
1127
+ // Get the raw data provider, since useDataProvider returns a wrapper
1128
+ const dataProvider = (0, $7bWYI$useContext)((0, $7bWYI$DataProviderContext));
1129
+ const [dataModel, setDataModel] = (0, $7bWYI$useState)();
1130
+ (0, $7bWYI$useEffect)(()=>{
1131
+ dataProvider.getDataModels().then((results)=>setDataModel(results[resourceId]));
1132
+ }, [
1133
+ dataProvider,
1134
+ resourceId,
1135
+ setDataModel
1136
+ ]);
1137
+ return dataModel;
1138
+ };
1139
+ var $a87bd51acf378e49$export$2e2bcd8739ae039 = $a87bd51acf378e49$var$useDataModel;
1140
+
1141
+
1142
+
1143
+
1144
+ const $11b469d0a927fb46$var$useDataServers = ()=>{
1145
+ // Get the raw data provider, since useDataProvider returns a wrapper
1146
+ const dataProvider = (0, $7bWYI$useContext)((0, $7bWYI$DataProviderContext));
1147
+ const [dataServers, setDataServers] = (0, $7bWYI$useState)();
1148
+ (0, $7bWYI$useEffect)(()=>{
1149
+ dataProvider.getDataServers().then((results)=>setDataServers(results));
1150
+ }, [
1151
+ dataProvider,
1152
+ setDataServers
1153
+ ]);
1154
+ return dataServers;
1155
+ };
1156
+ var $11b469d0a927fb46$export$2e2bcd8739ae039 = $11b469d0a927fb46$var$useDataServers;
1157
+
1158
+
1159
+
1160
+ const $e514fb4f70cfea08$var$useContainers = (resourceId, serverKeys = "@all")=>{
1161
+ const dataModel = (0, $a87bd51acf378e49$export$2e2bcd8739ae039)(resourceId);
1162
+ const dataServers = (0, $11b469d0a927fb46$export$2e2bcd8739ae039)();
1163
+ const [containers, setContainers] = (0, $7bWYI$useState)();
1164
+ (0, $7bWYI$useEffect)(()=>{
1165
+ if (dataModel && dataServers) setContainers((0, $973dc9d98aeab64f$export$2e2bcd8739ae039)(dataModel.types, serverKeys, dataServers));
1166
+ }, [
1167
+ dataModel,
1168
+ dataServers,
1169
+ serverKeys
1170
+ ]);
1171
+ return containers;
1172
+ };
1173
+ var $e514fb4f70cfea08$export$2e2bcd8739ae039 = $e514fb4f70cfea08$var$useContainers;
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+ const $a6f9067f89a63589$var$findCreateContainerWithTypes = (types, createServerKey, dataServers)=>{
1182
+ const containers = [];
1183
+ if (Object.keys(dataServers[createServerKey].containers[createServerKey]).length > 0) Object.keys(dataServers[createServerKey].containers[createServerKey]).forEach((type)=>{
1184
+ if (types.includes(type)) dataServers[createServerKey].containers[createServerKey][type].map((path)=>{
1185
+ const containerUri = (0, $7bWYI$urljoin)(dataServers[createServerKey].baseUrl, path);
1186
+ if (!containers.includes(containerUri)) containers.push(containerUri);
1187
+ });
1188
+ });
1189
+ if (containers.length === 0) throw new Error(`No container found matching with types ${JSON.stringify(types)}. You can set explicitely the create.container property of the resource.`);
1190
+ else if (containers.length > 1) throw new Error(`More than one container found matching with types ${JSON.stringify(types)}. You must set the create.server or create.container property for the resource.`);
1191
+ return containers[0];
1192
+ };
1193
+ var $a6f9067f89a63589$export$2e2bcd8739ae039 = $a6f9067f89a63589$var$findCreateContainerWithTypes;
1194
+
1195
+
1196
+
1197
+ const $7bd037d7ec9d51f8$var$useCreateContainer = (resourceId)=>{
1198
+ const dataModel = (0, $a87bd51acf378e49$export$2e2bcd8739ae039)(resourceId);
1199
+ const dataServers = (0, $11b469d0a927fb46$export$2e2bcd8739ae039)();
1200
+ const [createContainer, setCreateContainer] = (0, $7bWYI$useState)();
1201
+ (0, $7bWYI$useEffect)(()=>{
1202
+ if (dataModel && dataServers) {
1203
+ if (dataModel.create?.container) {
1204
+ const [serverKey, path] = Object.entries(dataModel.create.container)[0];
1205
+ if (!serverKey || !dataServers[serverKey]) throw new Error(`Wrong key for the dataModel.create.container config of resource ${resourceId}`);
1206
+ setCreateContainer((0, $7bWYI$urljoin)(dataServers[serverKey].baseUrl, path));
1207
+ } else if (dataModel.create?.server) setCreateContainer((0, $a6f9067f89a63589$export$2e2bcd8739ae039)(dataModel.types, dataModel.create?.server, dataServers));
1208
+ else {
1209
+ const defaultServerKey = (0, $8326b88c1a913ca9$export$2e2bcd8739ae039)("default", dataServers);
1210
+ setCreateContainer((0, $a6f9067f89a63589$export$2e2bcd8739ae039)(dataModel.types, defaultServerKey, dataServers));
1211
+ }
1212
+ }
1213
+ }, [
1214
+ dataModel,
1215
+ dataServers,
1216
+ setCreateContainer
1217
+ ]);
1218
+ return createContainer;
1219
+ };
1220
+ var $7bd037d7ec9d51f8$export$2e2bcd8739ae039 = $7bd037d7ec9d51f8$var$useCreateContainer;
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+ const $349fed82907088e5$var$useDataModels = ()=>{
1227
+ // Get the raw data provider, since useDataProvider returns a wrapper
1228
+ const dataProvider = (0, $7bWYI$useContext)((0, $7bWYI$DataProviderContext));
1229
+ const [dataModels, setDataModels] = (0, $7bWYI$useState)();
1230
+ (0, $7bWYI$useEffect)(()=>{
1231
+ dataProvider.getDataModels().then((results)=>setDataModels(results));
1232
+ }, [
1233
+ dataProvider,
1234
+ setDataModels
1235
+ ]);
1236
+ return dataModels;
1237
+ };
1238
+ var $349fed82907088e5$export$2e2bcd8739ae039 = $349fed82907088e5$var$useDataModels;
1239
+
1240
+
1241
+
1242
+
1243
+
1244
+ /**
1245
+ * @example
1246
+ * <Show>
1247
+ * <FilterHandler
1248
+ * source="property" // ex pair:organizationOfMembership
1249
+ * filter={{
1250
+ * 'propertyToFilter':'value'
1251
+ * }} // ex {{'pair:membershipRole':'http://localhost:3000/membership-roles/role-1'}}
1252
+ * >
1253
+ * <SingleFieldList>
1254
+ * </SingleFieldList>
1255
+ * </FilterHandler>
1256
+ * </Show>
1257
+ */ const $406574efa35ec6f1$var$FilterHandler = ({ children: children, record: record, filter: filter, source: source, ...otherProps })=>{
1258
+ const [filtered, setFiltered] = (0, $7bWYI$useState)();
1259
+ (0, $7bWYI$useEffect)(()=>{
1260
+ if (record && source && Array.isArray(record?.[source])) {
1261
+ const filteredData = record?.[source].filter((r)=>{
1262
+ let eq = true;
1263
+ for(const key in filter){
1264
+ const value = r[key];
1265
+ if (Array.isArray(value)) {
1266
+ if (!value.includes(filter[key])) eq = false;
1267
+ } else if (value !== filter[key]) eq = false;
1268
+ }
1269
+ return eq;
1270
+ });
1271
+ const newRecord = {
1272
+ ...record
1273
+ };
1274
+ // undefined setted if no data to obtain no render in RightLabel or equivalent
1275
+ newRecord[source] = filteredData.length > 0 ? filteredData : undefined;
1276
+ setFiltered(newRecord);
1277
+ }
1278
+ }, [
1279
+ record,
1280
+ source,
1281
+ filter
1282
+ ]);
1283
+ return /*#__PURE__*/ (0, $7bWYI$jsx)((0, $7bWYI$Fragment), {
1284
+ children: (0, $7bWYI$react).Children.map(children, (child, i)=>{
1285
+ return /*#__PURE__*/ (0, $7bWYI$react).cloneElement(child, {
1286
+ ...otherProps,
1287
+ record: filtered,
1288
+ source: source
1289
+ });
1290
+ })
1291
+ });
1292
+ };
1293
+ var $406574efa35ec6f1$export$2e2bcd8739ae039 = $406574efa35ec6f1$var$FilterHandler;
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+ /*
1301
+ * @example Label used in examples
1302
+ * const Label = ({label, ...otherProps})=>{
1303
+ * return <h2>{label}</h2>
1304
+ * }
1305
+ *
1306
+ * @example show header for each group with group property thanks to groupHeader
1307
+ * <GroupedReferenceHandler
1308
+ * source="property" // predicat of main record to show / ex pair:organizationOfMembership
1309
+ * groupReference="RAresource" // React-Admin resource reference. this is the "group by" ressource. / ex MembershipRole
1310
+ * groupHeader={({group,...otherProps}) => <Label {...otherProps} label={group['pair:label']}></Label> }
1311
+ * filterProperty="property of source filtered by groupReference"
1312
+ * >
1313
+ * <ArrayField source="property"> // same props as GroupedArrayField source
1314
+ * <ImageList>
1315
+ * </ImageList>
1316
+ * </ArrayField>
1317
+ * </GroupedReferenceHandler>
1318
+ *
1319
+ * @example call chhildren with label thanks to groupLabel
1320
+ * <GroupedReferenceHandler
1321
+ * source="property" // predicat of main record to show / ex pair:organizationOfMembership
1322
+ * groupReference="RAresource" // React-Admin resource reference. this is the "group by" ressource. / ex MembershipRole
1323
+ * groupLabel="property of RAresource display" // property of React-Admin resource to display. children call whith props "label" filled by groupLabel property of groupReference
1324
+ * filterProperty="property of source filtered by groupReference"
1325
+ * >
1326
+ * <Label>
1327
+ * <ArrayField source="property"> // same props as GroupedArrayField source
1328
+ * <ImageList>
1329
+ * </ImageList>
1330
+ * </ArrayField>
1331
+ * </GroupedReferenceHandler>
1332
+ *
1333
+ * @example conditional show of group if no data in source. Conditionale groupHeader is not possible because GroupedArrayField define group before filter ; need use chhildren.
1334
+ * const ConditionalSourceDefinedHandler = ({record,source,children,...otherProps})=>{
1335
+ * if (record?.[source] && (!Array.isArray(record[source])||record[source].length>0)){
1336
+ * return React.Children.map(children, (child, i) => {
1337
+ * return React.cloneElement(child, {...otherProps,record,source});
1338
+ * })
1339
+ * }else{
1340
+ * return <></>
1341
+ * }
1342
+ * }
1343
+ *
1344
+ * <GroupedReferenceHandler
1345
+ * source="property" // predicat of main record to show / ex pair:organizationOfMembership
1346
+ * groupReference="RAresource" // React-Admin resource reference. this is the "group by" ressource. / ex MembershipRole
1347
+ * groupLabel="property of RAresource display" // property of React-Admin resource to display. children call whith props "label" filled by groupLabel property of groupReference
1348
+ * filterProperty="property of source filtered by groupReference"
1349
+ * >
1350
+ * <ConditionalSourceDefinedHandler>
1351
+ * <Label>
1352
+ * <ArrayField source="property"> // same props as GroupedArrayField source
1353
+ * <ImageList>
1354
+ * </ImageList>
1355
+ * </ArrayField>
1356
+ * </ConditionalSourceDefinedHandler>
1357
+ * </GroupedReferenceHandler>
1358
+ *
1359
+ *
1360
+ */ const $1d8c1cbe606a94ae$var$GroupedReferenceHandler = ({ children: children, groupReference: groupReference, groupLabel: groupLabel, groupHeader: groupHeader, filterProperty: filterProperty, ...otherProps })=>{
1361
+ const { data: data } = (0, $7bWYI$useGetList)({
1362
+ resource: groupReference,
1363
+ payload: {}
1364
+ });
1365
+ return /*#__PURE__*/ (0, $7bWYI$jsx)((0, $7bWYI$Fragment), {
1366
+ children: data?.map((data, index)=>{
1367
+ const filter = {};
1368
+ filter[filterProperty] = data.id;
1369
+ return /*#__PURE__*/ (0, $7bWYI$jsxs)((0, $7bWYI$Fragment), {
1370
+ children: [
1371
+ groupHeader && groupHeader({
1372
+ ...otherProps,
1373
+ group: data
1374
+ }),
1375
+ /*#__PURE__*/ (0, $7bWYI$jsx)((0, $406574efa35ec6f1$export$2e2bcd8739ae039), {
1376
+ ...otherProps,
1377
+ filter: filter,
1378
+ label: data[groupLabel],
1379
+ children: children
1380
+ })
1381
+ ]
1382
+ });
1383
+ })
1384
+ });
1385
+ };
1386
+ var $1d8c1cbe606a94ae$export$2e2bcd8739ae039 = $1d8c1cbe606a94ae$var$GroupedReferenceHandler;
1387
+
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+ const $6844bbce0ad66151$var$useReferenceInputStyles = (0, $7bWYI$muistylesmakeStyles)({
1394
+ form: {
1395
+ display: "flex"
1396
+ },
1397
+ input: {
1398
+ paddingRight: "20px"
1399
+ }
1400
+ });
1401
+ const $6844bbce0ad66151$var$useHideInputStyles = (0, $7bWYI$muistylesmakeStyles)({
1402
+ root: {
1403
+ display: "none"
1404
+ }
1405
+ });
1406
+ const $6844bbce0ad66151$var$ReificationArrayInput = (props)=>{
1407
+ const { reificationClass: reificationClass, children: children, ...otherProps } = props;
1408
+ const flexFormClasses = $6844bbce0ad66151$var$useReferenceInputStyles();
1409
+ const hideInputStyles = $6844bbce0ad66151$var$useHideInputStyles();
1410
+ return /*#__PURE__*/ (0, $7bWYI$jsx)((0, $7bWYI$ArrayInput), {
1411
+ ...otherProps,
1412
+ children: /*#__PURE__*/ (0, $7bWYI$jsxs)((0, $7bWYI$SimpleFormIterator), {
1413
+ classes: {
1414
+ form: flexFormClasses.form
1415
+ },
1416
+ children: [
1417
+ (0, $7bWYI$react).Children.map(props.children, (child, i)=>{
1418
+ return /*#__PURE__*/ (0, $7bWYI$react).cloneElement(child, {
1419
+ className: flexFormClasses.input
1420
+ });
1421
+ }),
1422
+ /*#__PURE__*/ (0, $7bWYI$jsx)((0, $7bWYI$TextInput), {
1423
+ className: hideInputStyles.root,
1424
+ source: "type",
1425
+ initialValue: reificationClass
1426
+ })
1427
+ ]
1428
+ })
1429
+ });
1430
+ };
1431
+ var $6844bbce0ad66151$export$2e2bcd8739ae039 = $6844bbce0ad66151$var$ReificationArrayInput;
1432
+
1433
+
1434
+
1435
+
1436
+ export {$243bf28fbb1b868f$export$2e2bcd8739ae039 as dataProvider, $6cde9a8fbbde3ffb$export$2e2bcd8739ae039 as buildSparqlQuery, $865f630cc944e818$export$2e2bcd8739ae039 as buildBlankNodesQuery, $87656edf926c0f1f$export$2e2bcd8739ae039 as useGetExternalLink, $e514fb4f70cfea08$export$2e2bcd8739ae039 as useContainers, $7bd037d7ec9d51f8$export$2e2bcd8739ae039 as useCreateContainer, $a87bd51acf378e49$export$2e2bcd8739ae039 as useDataModel, $349fed82907088e5$export$2e2bcd8739ae039 as useDataModels, $11b469d0a927fb46$export$2e2bcd8739ae039 as useDataServers, $406574efa35ec6f1$export$2e2bcd8739ae039 as FilterHandler, $1d8c1cbe606a94ae$export$2e2bcd8739ae039 as GroupedReferenceHandler, $6844bbce0ad66151$export$2e2bcd8739ae039 as ReificationArrayInput};
4
1437
  //# sourceMappingURL=index.es.js.map