solid-ui 2.4.18 → 2.4.19

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.
Files changed (119) hide show
  1. package/README.md +3 -2
  2. package/lib/acl/acl.d.ts.map +1 -1
  3. package/lib/acl/acl.js +2 -4
  4. package/lib/acl/acl.js.map +1 -1
  5. package/lib/acl/add-agent-buttons.d.ts.map +1 -1
  6. package/lib/acl/add-agent-buttons.js +5 -5
  7. package/lib/acl/add-agent-buttons.js.map +1 -1
  8. package/lib/chat/bookmarks.js +20 -22
  9. package/lib/chat/bookmarks.js.map +1 -1
  10. package/lib/chat/chatLogic.js +13 -15
  11. package/lib/chat/chatLogic.js.map +1 -1
  12. package/lib/chat/dateFolder.js +10 -10
  13. package/lib/chat/dateFolder.js.map +1 -1
  14. package/lib/chat/infinite.js +14 -16
  15. package/lib/chat/infinite.js.map +1 -1
  16. package/lib/chat/message.js +19 -23
  17. package/lib/chat/message.js.map +1 -1
  18. package/lib/chat/messageTools.js +16 -21
  19. package/lib/chat/messageTools.js.map +1 -1
  20. package/lib/chat/thread.js +24 -24
  21. package/lib/chat/thread.js.map +1 -1
  22. package/lib/create/create.d.ts.map +1 -1
  23. package/lib/create/create.js +9 -9
  24. package/lib/create/create.js.map +1 -1
  25. package/lib/folders.js +2 -6
  26. package/lib/folders.js.map +1 -1
  27. package/lib/footer/index.js +4 -4
  28. package/lib/footer/index.js.map +1 -1
  29. package/lib/header/index.d.ts.map +1 -1
  30. package/lib/header/index.js +11 -8
  31. package/lib/header/index.js.map +1 -1
  32. package/lib/index.d.ts +4 -4
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js +30 -28
  35. package/lib/index.js.map +1 -1
  36. package/lib/login/login.d.ts +130 -0
  37. package/lib/login/login.d.ts.map +1 -0
  38. package/lib/login/login.js +1415 -0
  39. package/lib/login/login.js.map +1 -0
  40. package/lib/matrix/matrix.js +2 -2
  41. package/lib/matrix/matrix.js.map +1 -1
  42. package/lib/messageArea.js +9 -10
  43. package/lib/messageArea.js.map +1 -1
  44. package/lib/pad.js +2 -2
  45. package/lib/pad.js.map +1 -1
  46. package/lib/participation.d.ts.map +1 -1
  47. package/lib/participation.js +4 -5
  48. package/lib/participation.js.map +1 -1
  49. package/lib/preferences.js +8 -8
  50. package/lib/preferences.js.map +1 -1
  51. package/lib/{authn → signup}/config-default.js +0 -0
  52. package/lib/signup/config-default.js.map +1 -0
  53. package/lib/{authn → signup}/signup.js +0 -0
  54. package/lib/signup/signup.js.map +1 -0
  55. package/lib/table.js +2 -3
  56. package/lib/table.js.map +1 -1
  57. package/lib/tabs.js +3 -3
  58. package/lib/tabs.js.map +1 -1
  59. package/lib/utils/index.js +6 -6
  60. package/lib/utils/index.js.map +1 -1
  61. package/lib/utils/label.js +4 -5
  62. package/lib/utils/label.js.map +1 -1
  63. package/lib/versionInfo.js +2 -2
  64. package/lib/versionInfo.js.map +1 -1
  65. package/lib/webpack-bundle.js +8230 -24429
  66. package/lib/webpack-bundle.js.map +1 -1
  67. package/lib/widgets/buttons.js +16 -16
  68. package/lib/widgets/buttons.js.map +1 -1
  69. package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
  70. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  71. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  72. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  73. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
  74. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  75. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  76. package/lib/widgets/forms/autocomplete/language.js +7 -10
  77. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  78. package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
  79. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  80. package/lib/widgets/forms/autocomplete/publicData.js +15 -16
  81. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  82. package/lib/widgets/forms/basic.d.ts +1 -1
  83. package/lib/widgets/forms/basic.d.ts.map +1 -1
  84. package/lib/widgets/forms/basic.js +2 -2
  85. package/lib/widgets/forms/basic.js.map +1 -1
  86. package/lib/widgets/forms/comment.d.ts +1 -1
  87. package/lib/widgets/forms/comment.js +3 -3
  88. package/lib/widgets/forms/comment.js.map +1 -1
  89. package/lib/widgets/forms/fieldFunction.js +2 -2
  90. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  91. package/lib/widgets/forms/formStyle.js +3 -3
  92. package/lib/widgets/forms/formStyle.js.map +1 -1
  93. package/lib/widgets/forms.js +10 -10
  94. package/lib/widgets/forms.js.map +1 -1
  95. package/lib/widgets/peoplePicker.js +2 -2
  96. package/lib/widgets/peoplePicker.js.map +1 -1
  97. package/package.json +12 -4
  98. package/lib/authn/authSession.d.ts +0 -4
  99. package/lib/authn/authSession.d.ts.map +0 -1
  100. package/lib/authn/authSession.js +0 -25
  101. package/lib/authn/authSession.js.map +0 -1
  102. package/lib/authn/authn.d.ts +0 -193
  103. package/lib/authn/authn.d.ts.map +0 -1
  104. package/lib/authn/authn.js +0 -2238
  105. package/lib/authn/authn.js.map +0 -1
  106. package/lib/authn/config-default.js.map +0 -1
  107. package/lib/authn/index.d.ts +0 -35
  108. package/lib/authn/index.d.ts.map +0 -1
  109. package/lib/authn/index.js +0 -44
  110. package/lib/authn/index.js.map +0 -1
  111. package/lib/authn/signup.js.map +0 -1
  112. package/lib/authn/types.d.ts +0 -25
  113. package/lib/authn/types.d.ts.map +0 -1
  114. package/lib/authn/types.js +0 -6
  115. package/lib/authn/types.js.map +0 -1
  116. package/lib/logic.d.ts +0 -8
  117. package/lib/logic.d.ts.map +0 -1
  118. package/lib/logic.js +0 -79
  119. package/lib/logic.js.map +0 -1
@@ -30,12 +30,12 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
30
30
 
31
31
  var _rdflib = require("rdflib");
32
32
 
33
+ var _solidLogic = require("solid-logic");
34
+
33
35
  var debug = _interopRequireWildcard(require("../../../debug"));
34
36
 
35
37
  var ns = _interopRequireWildcard(require("../../../ns"));
36
38
 
37
- var _logic = require("../../../logic");
38
-
39
39
  var _language = require("./language");
40
40
 
41
41
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -49,7 +49,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
49
49
  */
50
50
 
51
51
  /* eslint-disable no-console */
52
- // import * as logic from '../../../logic'
53
52
  var AUTOCOMPLETE_LIMIT = 200; // How many to get from server
54
53
  // With 3000 we could exceed the wikidata timeout
55
54
 
@@ -89,7 +88,7 @@ var fetcherOptionsJsonPublicData = {
89
88
  exports.fetcherOptionsJsonPublicData = fetcherOptionsJsonPublicData;
90
89
  var escoParameters = {
91
90
  label: 'ESCO',
92
- logo: _logic.kb.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),
91
+ logo: _solidLogic.store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),
93
92
  searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)' // endpoint: undefined
94
93
  // returnFormat: 'ESCO',
95
94
  // targetClass: {}
@@ -98,7 +97,7 @@ var escoParameters = {
98
97
  exports.escoParameters = escoParameters;
99
98
  var dbpediaParameters = {
100
99
  label: 'DBPedia',
101
- logo: _logic.kb.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),
100
+ logo: _solidLogic.store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),
102
101
  searchByNameQuery: "select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)",
103
102
  endpoint: 'https://dbpedia.org/sparql/'
104
103
  };
@@ -120,7 +119,7 @@ var wikidataParameters = {
120
119
  label: 'WikiData',
121
120
  limit: 3000,
122
121
  // Need a high one as very many items, and many languages
123
- logo: _logic.kb.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),
122
+ logo: _solidLogic.store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),
124
123
  endpoint: 'https://query.wikidata.org/sparql',
125
124
  searchByNameQuery: "SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) ",
126
125
  // was SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
@@ -169,7 +168,7 @@ function bindingToTerm(item) {
169
168
  var typ = item.type.toLowerCase();
170
169
 
171
170
  if (typ === 'uri' || typ === 'iri') {
172
- return _logic.kb.sym(item.value);
171
+ return _solidLogic.store.sym(item.value);
173
172
  } else if (typ === 'literal') {
174
173
  if (item['xml:lang']) {
175
174
  return new _rdflib.Literal(item.value, item['xml:lang']);
@@ -291,7 +290,7 @@ function queryESCODataByName(_x, _x2, _x3) {
291
290
 
292
291
  function _queryESCODataByName() {
293
292
  _queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(filter, theClass, queryTarget) {
294
- var _kb$fetcher;
293
+ var _store$fetcher;
295
294
 
296
295
  var limit, queryURI, response, text, json;
297
296
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -310,7 +309,7 @@ function _queryESCODataByName() {
310
309
  queryURI = queryTarget.searchByNameURI.replace('$(name)', filter).replace('$(limit)', '' + limit).replace('$(targetClass)', theClass.toNT());
311
310
  debug.log('Querying ESCO data - uri: ' + queryURI);
312
311
  _context.next = 7;
313
- return (_kb$fetcher = _logic.kb.fetcher) === null || _kb$fetcher === void 0 ? void 0 : _kb$fetcher.webOperation('GET', queryURI, fetcherOptionsJsonPublicData);
312
+ return (_store$fetcher = _solidLogic.store.fetcher) === null || _store$fetcher === void 0 ? void 0 : _store$fetcher.webOperation('GET', queryURI, fetcherOptionsJsonPublicData);
314
313
 
315
314
  case 7:
316
315
  response = _context.sent;
@@ -361,7 +360,7 @@ function queryPublicDataByName(_x4, _x5, _x6, _x7) {
361
360
 
362
361
  function _queryPublicDataByName() {
363
362
  _queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(filter, theClass, languages, queryTarget) {
364
- var substituteStrings, languagePrefs, language, sparql, queryURI, response, _kb$fetcher2, text, text2, json, bindings;
363
+ var substituteStrings, languagePrefs, language, sparql, queryURI, response, _store$fetcher2, text, text2, json, bindings;
365
364
 
366
365
  return _regenerator["default"].wrap(function _callee2$(_context2) {
367
366
  while (1) {
@@ -417,7 +416,7 @@ function _queryPublicDataByName() {
417
416
  queryURI = substituteStrings(queryTarget.searchByNameURI);
418
417
  _context2.prev = 18;
419
418
  _context2.next = 21;
420
- return (_kb$fetcher2 = _logic.kb.fetcher) === null || _kb$fetcher2 === void 0 ? void 0 : _kb$fetcher2.webOperation('GET', queryURI, fetcherOptionsJsonPublicData);
419
+ return (_store$fetcher2 = _solidLogic.store.fetcher) === null || _store$fetcher2 === void 0 ? void 0 : _store$fetcher2.webOperation('GET', queryURI, fetcherOptionsJsonPublicData);
421
420
 
422
421
  case 21:
423
422
  response = _context2.sent;
@@ -494,7 +493,7 @@ function queryPublicDataSelect(_x8, _x9) {
494
493
 
495
494
  function _queryPublicDataSelect() {
496
495
  _queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(sparql, queryTarget) {
497
- var _kb$fetcher3;
496
+ var _store$fetcher3;
498
497
 
499
498
  var myUrlWithParams, queryURI, headers, options, response, text, text2, json, bindings;
500
499
  return _regenerator["default"].wrap(function _callee3$(_context3) {
@@ -521,7 +520,7 @@ function _queryPublicDataSelect() {
521
520
  headers: headers
522
521
  };
523
522
  _context3.next = 11;
524
- return (_kb$fetcher3 = _logic.kb.fetcher) === null || _kb$fetcher3 === void 0 ? void 0 : _kb$fetcher3.webOperation('GET', queryURI, options);
523
+ return (_store$fetcher3 = _solidLogic.store.fetcher) === null || _store$fetcher3 === void 0 ? void 0 : _store$fetcher3.webOperation('GET', queryURI, options);
525
524
 
526
525
  case 11:
527
526
  response = _context3.sent;
@@ -557,7 +556,7 @@ function queryPublicDataConstruct(_x10, _x11, _x12) {
557
556
 
558
557
  function _queryPublicDataConstruct() {
559
558
  _queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(sparql, pubicId, queryTarget) {
560
- var _kb$fetcher4;
559
+ var _store$fetcher4;
561
560
 
562
561
  var myUrlWithParams, queryURI, headers, options, response, text, report;
563
562
  return _regenerator["default"].wrap(function _callee4$(_context4) {
@@ -587,7 +586,7 @@ function _queryPublicDataConstruct() {
587
586
 
588
587
  };
589
588
  _context4.next = 12;
590
- return (_kb$fetcher4 = _logic.kb.fetcher) === null || _kb$fetcher4 === void 0 ? void 0 : _kb$fetcher4.webOperation('GET', queryURI, options);
589
+ return (_store$fetcher4 = _solidLogic.store.fetcher) === null || _store$fetcher4 === void 0 ? void 0 : _store$fetcher4.webOperation('GET', queryURI, options);
591
590
 
592
591
  case 12:
593
592
  response = _context4.sent;
@@ -603,7 +602,7 @@ function _queryPublicDataConstruct() {
603
602
  throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI);
604
603
 
605
604
  case 18:
606
- (0, _rdflib.parse)(text, _logic.kb, pubicId.uri, 'text/turtle');
605
+ (0, _rdflib.parse)(text, _solidLogic.store, pubicId.uri, 'text/turtle');
607
606
 
608
607
  case 19:
609
608
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"names":["AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","label","logo","kb","sym","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","ns","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","loadFromBindings","solidSubject","bindings","doc","predMap","results","debug","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","filter","theClass","queryTarget","queryURI","replace","toNT","fetcher","webOperation","response","text","responseText","slice","length","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","languages","substituteStrings","template","u1","defaultPreferredLanguages","languagePrefs","sparql","queryPublicDataSelect","status","text2","alert","myUrlWithParams","URL","searchParams","append","href","options","queryPublicDataConstruct","pubicId","report","loadPublicDataThing","publicDataID","startsWith","getDbpediaDetails","getWikidataDetails","iDToFetch","load","subjRegexp","getWikidataDetailsOld","getWikidataLocation"],"mappings":"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","sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport { NamedNode, Literal, parse } from 'rdflib'\nimport * as debug from '../../../debug'\nimport * as ns from '../../../ns'\nimport { kb } from '../../../logic'\n// import * as logic from '../../../logic'\nimport { getPreferredLanguages, defaultPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{ label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: kb.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: kb.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: kb.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return kb.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await kb.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solid/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await kb.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers: headers\n }\n\n const response = await kb.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers: headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await kb.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, kb, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers: headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n"],"file":"publicData.js"}
1
+ {"version":3,"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"names":["AUTOCOMPLETE_LIMIT","subjectRegexp","wikidataClasses","Corporation","EducationalOrganization","GovernmentOrganization","MedicalOrganization","MusicGroup","NGO","Occupation","Project","ResearchOrganization","SportsOrganization","instituteDetailsWikidataQuery","fetcherOptionsJsonPublicData","credentials","headers","Headers","Accept","escoParameters","label","logo","store","sym","searchByNameURI","dbpediaParameters","searchByNameQuery","endpoint","dbPediaTypeMap","AcademicInsitution","wikidataOutgoingClassMap","Enterprise","Business","CharitableOrganization","Insitute","wikidataParameters","limit","insitituteDetailsQuery","wikidataIncomingClassMap","ns","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","loadFromBindings","kb","solidSubject","bindings","doc","predMap","results","debug","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","filter","theClass","queryTarget","queryURI","replace","toNT","fetcher","webOperation","response","text","responseText","slice","length","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","languages","substituteStrings","template","u1","defaultPreferredLanguages","languagePrefs","sparql","queryPublicDataSelect","status","text2","alert","myUrlWithParams","URL","searchParams","append","href","options","queryPublicDataConstruct","pubicId","report","loadPublicDataThing","publicDataID","startsWith","getDbpediaDetails","getWikidataDetails","iDToFetch","load","subjRegexp","getWikidataDetailsOld","getWikidataLocation"],"mappings":"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","sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport { Literal, NamedNode, parse } from 'rdflib'\nimport { store } from 'solid-logic'\nimport * as debug from '../../../debug'\nimport * as ns from '../../../ns'\nimport { defaultPreferredLanguages, getPreferredLanguages } from './language'\n\nexport const AUTOCOMPLETE_LIMIT = 200 // How many to get from server\n// With 3000 we could exceed the wikidata timeout\n\nconst subjectRegexp = /\\$\\(subject\\)/g\n\ninterface Term {\n type: string;\n value: string\n}\n\nexport interface Binding {\n subject: Term;\n name?: Term\n location?: Term\n coordinates?: Term\n}\n\ntype Bindings = Binding[]\n\nexport type QueryParameters =\n{ label: string;\n limit?: number;\n logo?: NamedNode;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endpoint?: string;\n objectURIBase?: NamedNode;\n targetClass?: NamedNode,\n}\n\n// Schema.org seems to suggest NGOs are non-profit and Corporaions are for-profit\n// but doesn't have explicit classes\nexport const wikidataClasses = {\n Corporation: 'http://www.wikidata.org/entity/Q6881511', // Enterprise is for-profit\n EducationalOrganization: 'http://www.wikidata.org/entity/Q178706', // insitution\n GovernmentOrganization: 'http://www.wikidata.org/entity/Q327333', // government agency\n MedicalOrganization: 'http://www.wikidata.org/entity/Q4287745',\n MusicGroup: 'http://www.wikidata.org/entity/Q32178211', // music organization\n NGO: 'http://www.wikidata.org/entity/Q163740', // nonprofit organization @@\n Occupation: 'http://www.wikidata.org/entity/Q28640', // Profession\n // Organization: 'http://www.wikidata.org/entity/Q43229',\n Project: 'http://www.wikidata.org/entity/Q170584',\n ResearchOrganization: 'http://www.wikidata.org/entity/Q31855',\n SportsOrganization: 'http://www.wikidata.org/entity/Q4438121'\n}\n\nexport const instituteDetailsWikidataQuery = `prefix vcard: <http://www.w3.org/2006/vcard/ns#>\nCONSTRUCT\n{ wd:Q49108 vcard:fn ?itemLabel.\nwd:Q49108 rdf:type ?klass. ?klass rdfs:label ?klassLabel; rdfs:comment ?klassDescription .\nwd:Q49108 schema:logo ?logo;\n schema:image ?image;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary rdfs:label ?subsidiaryLabel .\n ?supersidiary schema:subOrganization wd:Q49108 .\n ?supersidiary rdfs:label ?supersidiaryLabel .\n wd:Q49108 schema:location ?location .\n ?location schema:elevation ?elevation .\n ?location wdt:P131 ?region . ?region rdfs:label ?regionLabel .\n ?location wdt:P625 ?coordinates .\n ?location schema:country ?country . ?country rdfs:label ?countryLabel .\n}\nWHERE\n{ optional {wd:Q49108 rdfs:label ?itemLabel} .\n optional {wd:Q49108 wdt:P154 ?logo .}\n optional {wd:Q49108 wdt:P31 ?klass .}\n optional {wd:Q49108 wdt:P158 ?sealImage .}\n optional {wd:Q49108 wdt:P18 ?image .}\n\n optional { wd:Q49108 wdt:P355 ?subsidiary . }\n optional { ?supersidiary wdt:P355 wd:Q49108. }\n\n optional { wd:Q49108 wdt:P276 ?location .\n\n optional { ?location schema:eleveation ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\n optional { ?location wdt:P17 ?country }\n }\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\". }\n}`\n\nexport const fetcherOptionsJsonPublicData = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // try to avoid CORS problems. Data is public so no auth\n headers: new Headers({ Accept: 'application/json' })\n}\n\nexport const escoParameters:QueryParameters = {\n label: 'ESCO',\n logo: store.sym('https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif'),\n searchByNameURI: 'https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)'\n // endpoint: undefined\n // returnFormat: 'ESCO',\n // targetClass: {}\n}\n\nexport const dbpediaParameters:QueryParameters = {\n label: 'DBPedia',\n logo: store.sym('https://upload.wikimedia.org/wikipedia/commons/thumb/7/73/DBpediaLogo.svg/263px-DBpediaLogo.svg.png'),\n searchByNameQuery: `select distinct ?subject, ?name where {\n ?subject a $(targetClass); rdfs:label ?name\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit)`,\n endpoint: 'https://dbpedia.org/sparql/'\n}\n\nexport const dbPediaTypeMap = { AcademicInsitution: 'http://umbel.org/umbel/rc/EducationalOrganization' }\n\nexport const wikidataOutgoingClassMap = {\n AcademicInsitution: 'http://www.wikidata.org/entity/Q4671277',\n Enterprise: 'http://www.wikidata.org/entity/Q6881511',\n Business: 'http://www.wikidata.org/entity/Q4830453',\n NGO: 'http://www.wikidata.org/entity/Q79913',\n CharitableOrganization: 'http://www.wikidata.org/entity/Q708676',\n Insitute: 'http://www.wikidata.org/entity/Q1664720'\n}\n\nexport const wikidataParameters = {\n label: 'WikiData',\n limit: 3000, // Need a high one as very many items, and many languages\n logo: store.sym('https://www.wikimedia.org/static/images/project-logos/wikidatawiki.png'),\n endpoint: 'https://query.wikidata.org/sparql',\n searchByNameQuery: `SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, \"$(name)\", \"i\")\n } LIMIT $(limit) `, // was SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE],en\" }\n\n insitituteDetailsQuery: `CONSTRUCT\n{ wd:Q49108 schema:name ?itemLabel;\n schema:logo ?logo;\n schema:logo ?sealImage;\n schema:subOrganization ?subsidiary .\n ?subsidiary schema:name ?subsidiaryLabel .\n}\nWHERE\n{\n wd:Q49108 # rdfs:label ?itemLabel ;\n wdt:P154 ?logo;\n wdt:P158 ?sealImage ;\n wdt:P355 ?subsidiary .\n # ?subsidiary rdfs:label ?subsidiaryLabel .\n\n SERVICE wikibase:label { bd:serviceParam wikibase:language \"[AUTO_LANGUAGE], fr\". }\n}`\n}\n\nexport const wikidataIncomingClassMap = {\n 'http://www.wikidata.org/entity/Q15936437': ns.schema('CollegeOrUniversity'), // research university\n 'http://www.wikidata.org/entity/Q1664720': ns.schema('EducationalOrganization'), // insitute @@\n 'http://www.wikidata.org/entity/Q43229': ns.schema('Organization'), // research university\n 'http://www.wikidata.org/entity/Q3918': ns.schema('CollegeOrUniversity'), // university\n 'http://www.wikidata.org/entity/Q170584': ns.schema('Project'), // university\n 'http://www.wikidata.org/entity/Q327333': ns.schema('GovernmentOrganization'), // govt agency\n 'http://www.wikidata.org/entity/Q2221906': ns.schema('Place'), // geographic location\n 'http://www.wikidata.org/entity/Q167037': ns.schema('Corporation') // Corporation\n\n}\nexport const variableNameToPredicateMap = { // allow other mappings to be added in theory hence var\n // wikidata:\n targetClass: ns.rdf('type'),\n // logo: ns.schema('logo'),\n sealImage: ns.schema('logo'),\n // image: ns.schema('image'), defaults to shema\n shortName: ns.foaf('nick'),\n subsidiary: ns.schema('subOrganization'),\n // dbpedia - :\n city: ns.vcard('locality'),\n state: ns.vcard('region'),\n country: ns.vcard('country-name'),\n homepage: ns.foaf('homepage'),\n lat: ns.schema('latitude'),\n long: ns.schema('longitude')\n}\n\nexport function bindingToTerm (item) {\n const typ = item.type.toLowerCase()\n if (typ === 'uri' || typ === 'iri') {\n return store.sym(item.value)\n } else if (typ === 'literal') {\n if (item['xml:lang']) {\n return new Literal(item.value, item['xml:lang'])\n } else {\n return new Literal(item.value)\n }\n } else {\n throw new Error(`bindingToTerm: Unexpected type \"${item.type}\" in sparql binding}`)\n }\n}\n\nexport function loadFromBindings (kb, solidSubject:NamedNode, bindings, doc, predMap = variableNameToPredicateMap) {\n const results = {}\n debug.log(`loadFromBindings: subject: ${solidSubject}`)\n debug.log(` doc: ${doc}`)\n bindings.forEach(binding => {\n for (const key in binding) {\n const result = binding[key]\n const combined = JSON.stringify(result) // ( result.type, result.value )\n results[key] = results[key] || new Set()\n results[key].add(combined) // remove duplicates\n }\n })\n for (const key in results) {\n const values = results[key]\n debug.log(` results ${key} -> ${values}`)\n values.forEach(combined => {\n const result = JSON.parse(combined)\n const { type, value } = result\n let obj\n if (type === 'uri') {\n obj = kb.sym(value)\n } else if (type === 'literal') {\n obj = new Literal(value, result.language, result.datatype)\n } else {\n throw new Error(`loadFromBindings: unexpected type: ${type}`)\n }\n if (key === 'type') {\n if (wikidataIncomingClassMap[value]) {\n obj = wikidataIncomingClassMap[value]\n } else {\n debug.warn('Unmapped Wikidata Class: ' + value)\n }\n } else if (key === 'coordinates') {\n // const latlong = value // Like 'Point(-71.106111111 42.375)'\n debug.log(' @@@ hey a point: ' + value)\n // const regexp = /.*\\(([-0-9\\.-]*) ([-0-9\\.-]*)\\)/\n const regexp = /.*\\(([-0-9.-]*) ([-0-9.-]*)\\)/\n const match = regexp.exec(value)\n if (match) {\n const float = ns.xsd('float')\n const latitude = new Literal(match[1], null, float)\n const longitude = new Literal(match[2], null, float)\n kb.add(solidSubject, ns.schema('longitude'), longitude, doc)\n kb.add(solidSubject, ns.schema('latitude'), latitude, doc)\n } else {\n debug.log('Bad coordinates syntax: ' + value)\n }\n } else {\n const pred = predMap[key] || ns.schema(key) // fallback to just using schema.org\n kb.add(solidSubject, pred, obj, doc) // @@ deal with non-string and objects\n debug.log(` public data ${pred} ${obj}.`)\n }\n })\n }\n}\n\n/* ESCO sopecific\n*/\nexport function ESCOResultToBindings (json: Object): Bindings {\n const results = (json as any)._embedded.results // Array\n const bindings = results.map(result => {\n const name = result.title\n const uri = result.uri // like http://data.europa.eu/esco/occupation/57af9090-55b4-4911-b2d0-86db01c00b02\n return { name: { value: name, type: 'literal' }, subject: { type: 'IRI', value: uri } } // simulate SPARQL bindings\n })\n return bindings\n}\n\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryESCODataByName (filter: string, theClass:NamedNode, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.searchByNameURI) throw new Error('Missing queryTarget.searchByNameURI on queryESCODataByName')\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const queryURI = queryTarget.searchByNameURI\n .replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(targetClass)', theClass.toNT())\n debug.log('Querying ESCO data - uri: ' + queryURI)\n\n const response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n const text = response?.responseText || ''\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('Wot no text back from ESCO query ' + queryURI)\n const json = JSON.parse(text)\n // console.log('Whole JSON return object', json)\n debug.log(' ESCO Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n return ESCOResultToBindings(json)\n}\n\n/* Cope ithe syntax probelm in wikidata timeout responses\n*\n* Wikidata bug: https://phabricator.wikimedia.org/T283962\n* This will not be needed whn that WDQS bug fixed.\n* This is aptured in https://github.com/solid/solid-ui/issues/403\n*/\nfunction fixWikidataJSON (str) {\n const syntaxProblem = str.indexOf('SPARQL-QUERY')\n if (syntaxProblem < 0) return str\n // console.log('@@ fixWikidataJSON FIXING')\n debug.warn(' ### Fixing JSON with wikidata error code injection ' + str.slice(syntaxProblem, syntaxProblem + 200))\n const goodness = str.lastIndexOf('}, {')\n return str.slice(0, goodness) + ' } ] } } ' // Close binding, array, bindings, results, root object\n}\n/* Query all entities of given class and partially matching name\n*/\nexport async function queryPublicDataByName (\n filter: string,\n theClass:NamedNode,\n languages: Array<string>,\n queryTarget: QueryParameters): Promise<Bindings> {\n function substituteStrings (template: string):string {\n const limit = queryTarget.limit || AUTOCOMPLETE_LIMIT\n const u1 = template.replace('$(name)', filter)\n .replace('$(limit)', '' + limit)\n .replace('$(language)', language)\n return u1.replace('$(targetClass)', theClass.toNT())\n }\n\n if (!theClass) {\n throw new Error('queryPublicDataByName: No class provided')\n }\n\n const languagePrefs = await getPreferredLanguages() || defaultPreferredLanguages\n const language = languagePrefs[0] || 'en'\n if (queryTarget.searchByNameQuery) {\n const sparql = substituteStrings(queryTarget.searchByNameQuery)\n debug.log('Querying public data - sparql: ' + sparql)\n return queryPublicDataSelect(sparql, queryTarget)\n } else if (queryTarget.searchByNameURI) { // not sparql - random API\n const queryURI = substituteStrings(queryTarget.searchByNameURI)\n let response\n try {\n response = await store.fetcher?.webOperation('GET', queryURI, fetcherOptionsJsonPublicData)\n } catch (err) {\n throw new Error(`Exception when trying to fetch ${queryURI} \\n ${err}`)\n }\n const text = response.responseText || '' // ts\n if (response.status !== 200) {\n throw new Error(`HTTP error status ${response.status} trying to fetch ${queryURI} `)\n }\n debug.log(' Query result text' + text.slice(0, 500) + '...')\n if (text.length === 0) throw new Error('queryPublicDataByName: No text back from public data query ' + queryURI)\n const text2 = fixWikidataJSON(text) // Kludge: strip of interrupting error message\n const json = JSON.parse(text2)\n debug.log(' API Query result JSON' + JSON.stringify(json, null, 4).slice(0, 500) + '...')\n if ((json as any)._embedded) {\n debug.log(' Looks like ESCO')\n const bindings = ESCOResultToBindings(json)\n return bindings\n } else {\n alert('Code me: unrecognized API return format')\n throw new Error(`*** Need to add code to parse unrecognized API JSON return\\n${JSON.stringify(json, null, 4)}`)\n }\n } else {\n throw new Error('Query source must have either rest API or SPARQL endpoint.')\n }\n}\n\n/* Query a database using SPARQL SELECT\n*/\nexport async function queryPublicDataSelect (sparql: string, queryTarget: QueryParameters): Promise<Bindings> {\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataSelect')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataSelect uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'application/json')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS - as we know it is public\n headers: headers\n }\n\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n\n const text = response?.responseText || ''\n if (text.length === 0) throw new Error('No text back from query ' + queryURI)\n const text2 = fixWikidataJSON(text)\n const json = JSON.parse(text2)\n debug.log(' Query result JSON' + JSON.stringify(json, null, 4).slice(0, 100) + '...')\n const bindings = json.results.bindings\n return bindings\n}\n\n/* Load from a database using SPARQL CONSTRUCT\n*/\nexport async function queryPublicDataConstruct (sparql: string, pubicId: NamedNode, queryTarget: QueryParameters): Promise<void> {\n debug.log('queryPublicDataConstruct: sparql:', sparql)\n if (!queryTarget.endpoint) throw new Error('Missing queryTarget.endpoint required for queryPublicDataConstruct')\n const myUrlWithParams = new URL(queryTarget.endpoint)\n myUrlWithParams.searchParams.append('query', sparql)\n const queryURI = myUrlWithParams.href\n debug.log(' queryPublicDataConstruct uri: ' + queryURI)\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n const options = {\n credentials: 'omit' as 'include' | 'omit' | undefined, // CORS // @tsc pain\n headers: headers // ({ Accept: 'text/turtle' } as Headers)\n }\n const response = await store.fetcher?.webOperation('GET', queryURI, options)\n const text = response?.responseText || 'No response text?'\n const report = text.length > 500 ? text.slice(0, 200) + ' ... ' + text.slice(-200) : text\n debug.log(' queryPublicDataConstruct result text:' + report)\n if (text.length === 0) throw new Error('queryPublicDataConstruct: No text back from construct query:' + queryURI)\n parse(text, store, pubicId.uri, 'text/turtle')\n}\n\nexport async function loadPublicDataThing (kb, subject: NamedNode, publicDataID: NamedNode) {\n if (publicDataID.uri.startsWith('https://dbpedia.org/resource/')) {\n return getDbpediaDetails(kb, subject, publicDataID)\n } else if (publicDataID.uri.match(/^https?:\\/\\/www\\.wikidata\\.org\\/entity\\/.*/)) {\n // const QId = publicDataID.uri.split('/')[4]\n // const dataURI = `http://www.wikidata.org/wiki/Special:EntityData/${QId}.ttl`\n // In fact loading the data URI gives much too much irrelevant data, from wikidata, so we do a query.\n await getWikidataDetails(kb, subject, publicDataID)\n // await getWikidataLocation(kb, subject, publicDataID) -- should get that in the details query now\n } else {\n const iDToFetch = publicDataID.uri.startsWith('http:')\n ? kb.sym('https:' + publicDataID.uri.slice(5))\n : publicDataID\n const headers = new Headers()\n headers.append('Accept', 'text/turtle')\n return kb.fetcher.load(iDToFetch, {\n credentials: 'omit' as 'include' | 'omit' | undefined,\n headers: headers\n })\n }\n}\n\nexport async function getWikidataDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const subjRegexp = /wd:Q49108/g\n const sparql = instituteDetailsWikidataQuery.replace(subjRegexp, publicDataID.toNT())\n await queryPublicDataConstruct(sparql, publicDataID, wikidataParameters)\n debug.log('getWikidataDetails: loaded.', publicDataID)\n}\n\nexport async function getWikidataDetailsOld (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n optional { $(subject) wdt:P31 ?targetClass } # instance of\n optional { $(subject) wdt:P154 ?logo }\n optional { $(subject) wdt:P158 ?sealImage }\n# optional { $(subject) wdt:P159 ?headquartersLocation }\n\noptional { $(subject) wdt:P17 ?country }\noptional { $(subject) wdt:P18 ?image }\noptional { $(subject) wdt:P1813 ?shortName }\n\noptional { $(subject) wdt:P355 ?subsidiary }\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`\n .replace(subjectRegexp, publicDataID.toNT())\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // arg2 was solidSubject\n}\n\nexport async function getWikidataLocation (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n const sparql = `select distinct * where {\n\n $(subject) wdt:P276 ?location .\n\n optional { ?location wdt:P2044 ?elevation }\n optional { ?location wdt:P131 ?region }\n optional { ?location wdt:P625 ?coordinates }\noptional { ?location wdt:P17 ?country }\n\n# SERVICE wikibase:label { bd:serviceParam wikibase:language \"fr,en,de,it\" }\n}`.replace(subjectRegexp, publicDataID.toNT())\n debug.log(' location query sparql:' + sparql)\n const bindings = await queryPublicDataSelect(sparql, wikidataParameters)\n debug.log(' location query bindings:', bindings)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc()) // was solidSubject\n}\n\nexport async function getDbpediaDetails (kb, solidSubject:NamedNode, publicDataID:NamedNode) {\n// Note below the string form of the named node with <> works in SPARQL\n const sparql = `select distinct ?city, ?state, ?country, ?homepage, ?logo, ?lat, ?long, WHERE {\n OPTIONAL { <${publicDataID}> <http://dbpedia.org/ontology/city> ?city }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/state> ?state }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n OPTIONAL { ${publicDataID} foaf:homepage ?homepage }\n OPTIONAL { ${publicDataID} foaf:lat ?lat; foaf:long ?long }\n OPTIONAL { ${publicDataID} <http://dbpedia.org/ontology/country> ?country }\n }`\n const bindings = await queryPublicDataSelect(sparql, dbpediaParameters)\n loadFromBindings(kb, publicDataID, bindings, publicDataID.doc())\n debug.log('Finished getDbpediaDetails.')\n}\n"],"file":"publicData.js"}
@@ -1,4 +1,4 @@
1
- import { BlankNode, Node, NamedNode, Variable, Store } from 'rdflib';
1
+ import { BlankNode, NamedNode, Node, Store, Variable } from 'rdflib';
2
2
  export declare function renderNameValuePair(dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode): HTMLElement;
3
3
  /**
4
4
  * Create an anchor element with a label as the anchor text.
@@ -1 +1 @@
1
- {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/widgets/forms/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,SAAS,EAAW,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAajF,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAE,WAAW,CAkBhH;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,eAAe,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI,CAYzH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAczJ;AAED;;;;;;;;;;;;;;;GAeG;AAEH,wBAAgB,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,OAAO,KAAA,EACP,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACzC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,GAC9D,WAAW,CA8Jb"}
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../../src/widgets/forms/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAW,SAAS,EAAE,IAAI,EAAM,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAajF,wBAAgB,mBAAmB,CAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAE,WAAW,CAkBhH;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,eAAe,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI,CAYzH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAczJ;AAED;;;;;;;;;;;;;;;GAeG;AAEH,wBAAgB,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,OAAO,KAAA,EACP,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,EACzC,IAAI,EAAE,SAAS,EACf,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,GAC9D,WAAW,CA8Jb"}
@@ -12,7 +12,7 @@ exports.renderNameValuePair = renderNameValuePair;
12
12
 
13
13
  var _rdflib = require("rdflib");
14
14
 
15
- var _logic = require("../../logic");
15
+ var _solidLogic = require("solid-logic");
16
16
 
17
17
  var ns = _interopRequireWildcard(require("../../ns"));
18
18
 
@@ -30,7 +30,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
30
30
 
31
31
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
32
32
 
33
- var store = _logic.solidLogicSingleton.store;
33
+ var store = _solidLogic.solidLogicSingleton.store;
34
34
  /* Style and create a name, value pair
35
35
  */
36
36
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/basic.ts"],"names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","property","any","ns","ui","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","fieldLabel","fieldInQuestion","lab","undefined","anchor","uri","textContent","fieldStore","subject","predicate","def","sts","statementsMatching","length","updater","Error","why","value","editable","sym","basicField","container","already","doc","callbackFunction","formDoc","suppressEmptyUneditable","anyJS","params","fieldParams","paramStyle","textInputStyle","field","type","size","textInputSize","maxLength","obj","uriPrefix","decodeURIComponent","replace","readOnly","textInputStyleUneditable","addEventListener","_e","pattern","match","disabled","ds","result","namedNode","encodeURIComponent","dt","Literal","trim","xsd","is","map","statement","updateMany","callback","docs","forEach","st","includes","push","update","pop","is1","filter","is2","ds1","ds2","ok","body"],"mappings":"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","sourcesContent":["import { st, BlankNode, Literal, Node, NamedNode, Variable, Store } from 'rdflib'\nimport { solidLogicSingleton } from '../../logic'\nimport * as ns from '../../ns'\nimport { textInputSize, textInputStyle, textInputStyleUneditable, formFieldNameBoxWidth, formFieldNameBoxStyle } from '../../style'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode):HTMLElement {\n const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (!property) { // Assume more space for error on right\n rhs.appendChild(errorMessageBlock(dom, 'No property given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n } else {\n lhs.appendChild(fieldLabel(dom, property as NamedNode, form))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n// eslint-disable-next-line complexity\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const style = textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = style\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n\n const size = kb.anyJS(form, ns.ui('size')) || textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096')\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', style)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = textInputStyleUneditable + paramStyle\n // backgroundColor = textInputBackgroundColorUneditable\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n style +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n field.disabled = true // See if this stops getting two dates from fumbling e.g the chrome datepicker.\n field.setAttribute('style', style + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.disabled = false\n field.setAttribute('style', style)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n return box\n}\n"],"file":"basic.js"}
1
+ {"version":3,"sources":["../../../src/widgets/forms/basic.ts"],"names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","property","any","ns","ui","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","fieldLabel","fieldInQuestion","lab","undefined","anchor","uri","textContent","fieldStore","subject","predicate","def","sts","statementsMatching","length","updater","Error","why","value","editable","sym","basicField","container","already","doc","callbackFunction","formDoc","suppressEmptyUneditable","anyJS","params","fieldParams","paramStyle","textInputStyle","field","type","size","textInputSize","maxLength","obj","uriPrefix","decodeURIComponent","replace","readOnly","textInputStyleUneditable","addEventListener","_e","pattern","match","disabled","ds","result","namedNode","encodeURIComponent","dt","Literal","trim","xsd","is","map","statement","updateMany","callback","docs","forEach","st","includes","push","update","pop","is1","filter","is2","ds1","ds2","ok","body"],"mappings":"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","sourcesContent":["import { BlankNode, Literal, NamedNode, Node, st, Store, Variable } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport * as ns from '../../ns'\nimport { formFieldNameBoxStyle, formFieldNameBoxWidth, textInputSize, textInputStyle, textInputStyleUneditable } from '../../style'\nimport { label } from '../../utils'\nimport { errorMessageBlock } from '../error'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/* Style and create a name, value pair\n*/\nexport function renderNameValuePair (dom: HTMLDocument, kb: Store, box: HTMLElement, form: NamedNode):HTMLElement {\n const property = kb.any(form, ns.ui('property'))\n box.style.display = 'flex'\n box.style.flexDirection = 'row'\n const lhs = box.appendChild(dom.createElement('div'))\n lhs.style.width = formFieldNameBoxWidth\n const rhs = box.appendChild(dom.createElement('div'))\n\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', formFieldNameBoxStyle)\n rhs.setAttribute('class', 'formFieldValue')\n if (!property) { // Assume more space for error on right\n rhs.appendChild(errorMessageBlock(dom, 'No property given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\n } else {\n lhs.appendChild(fieldLabel(dom, property as NamedNode, form))\n }\n return rhs\n}\n\n/**\n * Create an anchor element with a label as the anchor text.\n *\n * @param dom The DOM\n * @param property href for the anchor element\n * @param fieldInQuestion field to produce a label for\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldLabel (dom: HTMLDocument, property: NamedNode | undefined, fieldInQuestion: Node): HTMLElement | Text {\n let lab = store.any(fieldInQuestion as any, ns.ui('label'))\n if (!lab) lab = label(property, true) // Init capital\n if (property === undefined) {\n return dom.createTextNode('@@Internal error: undefined property')\n }\n const anchor = dom.createElement('a')\n /* istanbul ignore next */\n if (property.uri) anchor.setAttribute('href', property.uri)\n anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;') // Not too blue and no underline\n anchor.textContent = lab as any\n return anchor\n}\n\n/**\n * Returns the document for the first quad that matches\n * the subject and predicate provided, or default if that\n * store is not editable.\n *\n * @param subject Subject about which we want to find an editable RDF document\n * @param predicate Predicate about which we want to find an editable RDF document\n * @param def default RDF document to return if none found\n *\n * @internal exporting this only for unit tests\n */\nexport function fieldStore (subject: NamedNode | BlankNode | Variable, predicate: NamedNode | Variable, def: NamedNode | undefined): NamedNode | undefined {\n const sts = store.statementsMatching(subject, predicate)\n if (sts.length === 0) return def // can used default as no data yet\n if (!store.updater) {\n throw new Error('Store has no updater')\n }\n if (\n sts.length > 0 &&\n sts[0].why.value &&\n store.updater.editable(sts[0].why.value, store)\n ) {\n return store.sym(sts[0].why.value)\n }\n return def\n}\n\n/**\n * Render a basic form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n// eslint-disable-next-line complexity\nexport function basicField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (_ok: boolean, _errorMessage: string) => void\n): HTMLElement {\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('div')\n\n const property = kb.any(form, ns.ui('property'))\n if (container) container.appendChild(box)\n if (!property) {\n return box.appendChild(\n errorMessageBlock(dom, 'Error: No property given for text field: ' + form)\n )\n }\n const rhs = renderNameValuePair(dom, kb, box, form)\n\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) params = { style: '' } // non-bottom field types can do this\n const paramStyle = params.style || ''\n const style = textInputStyle + paramStyle\n const field = dom.createElement('input')\n ;(field as any).style = style\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n\n const size = kb.anyJS(form, ns.ui('size')) || textInputSize || 20\n field.setAttribute('size', size)\n\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096')\n\n doc = doc || fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj && obj.value && params.uriPrefix) {\n // eg tel: or mailto:\n field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case\n .replace(/ /g, '')\n } else if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', style)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = textInputStyleUneditable + paramStyle\n // backgroundColor = textInputBackgroundColorUneditable\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n\n // read-write:\n field.addEventListener(\n 'keyup',\n function (_e) {\n if (params.pattern) {\n field.setAttribute(\n 'style',\n style +\n (field.value.match(params.pattern)\n ? 'color: green;'\n : 'color: red;')\n )\n }\n },\n true\n )\n field.addEventListener(\n 'change',\n function (_e) {\n // i.e. lose focus with changed data\n if (params.pattern && !field.value.match(params.pattern)) return\n field.disabled = true // See if this stops getting two dates from fumbling e.g the chrome datepicker.\n field.setAttribute('style', style + 'color: gray;') // pending\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n let result\n if (params.namedNode) {\n result = kb.sym(field.value)\n } else if (params.uriPrefix) {\n result = encodeURIComponent(field.value.replace(/ /g, ''))\n result = kb.sym(params.uriPrefix + field.value)\n } else {\n if (params.dt) {\n result = new Literal(\n field.value.trim(),\n undefined,\n ns.xsd(params.dt)\n )\n } else {\n result = new Literal(field.value)\n }\n }\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n\n function updateMany (ds, is: { why: { uri: string } }[], callback) {\n const docs: any[] = []\n is.forEach(st => {\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n ds.forEach(st => {\n /* istanbul ignore next */\n if (!docs.includes(st.why.uri)) docs.push(st.why.uri)\n })\n /* istanbul ignore next */\n if (docs.length === 0) {\n throw new Error('updateMany has no docs to patch')\n }\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (docs.length === 1) {\n return kb.updater.update(ds, is as any, callback)\n }\n // return kb.updater.update(ds, is, callback)\n\n const doc = docs.pop()\n const is1 = is.filter(st => st.why.uri === doc)\n const is2 = is.filter(st => st.why.uri !== doc)\n const ds1 = ds.filter(st => st.why.uri === doc)\n const ds2 = ds.filter(st => st.why.uri !== doc)\n kb.updater.update(ds1, is1 as any, function (uri, ok, body) {\n if (ok) {\n updateMany(ds2, is2, callback)\n } else {\n callback(uri, ok, body)\n }\n })\n }\n\n updateMany(ds, is as any, function (uri, ok, body) {\n // kb.updater.update(ds, is, function (uri, ok, body) {\n if (ok) {\n field.disabled = false\n field.setAttribute('style', style)\n } else {\n box.appendChild(errorMessageBlock(dom, body))\n }\n callbackFunction(ok, body)\n })\n },\n true\n )\n return box\n}\n"],"file":"basic.js"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * A [[FieldFunction]] for a simple comment box. It will look for
3
3
  * the first (form, ns.ui('contents'), ?) triple it can find in
4
- * UI.store and use the value of the object of that triple as
4
+ * store and use the value of the object of that triple as
5
5
  * the comment text.
6
6
  *
7
7
  * @param dom The DOM
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.commentField = commentField;
9
9
 
10
- var _logic = require("../../logic");
10
+ var _solidLogic = require("solid-logic");
11
11
 
12
12
  var ns = _interopRequireWildcard(require("../../ns"));
13
13
 
@@ -19,11 +19,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
19
19
 
20
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
21
 
22
- var store = _logic.solidLogicSingleton.store;
22
+ var store = _solidLogic.solidLogicSingleton.store;
23
23
  /**
24
24
  * A [[FieldFunction]] for a simple comment box. It will look for
25
25
  * the first (form, ns.ui('contents'), ?) triple it can find in
26
- * UI.store and use the value of the object of that triple as
26
+ * store and use the value of the object of that triple as
27
27
  * the comment text.
28
28
  *
29
29
  * @param dom The DOM
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/comment.ts"],"names":["store","solidLogicSingleton","commentField","dom","container","already","subject","form","_doc","_callbackFunction","kb","contents","any","ns","ui","uri","params","fieldParams","undefined","box","createElement","appendChild","p","element","textContent","style","setAttribute"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,KAAK,GAAGC,2BAAoBD,KAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASE,YAAT,CACLC,GADK,EAELC,SAFK,EAGLC,OAHK,EAILC,OAJK,EAKLC,IALK,EAMLC,IANK,EAOLC,iBAPK,EAQL;AACA,MAAMC,EAAE,GAAGV,KAAX;AACA,MAAIW,QAAa,GAAGD,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,UAAN,CAAb,CAApB;;AACA,MAAI,CAACH,QAAL,EAAe;AACbA,IAAAA,QAAQ,GAAG,sCAAX;AACD;;AACD,MAAMI,GAAG,GAAG,yCAAqBR,IAArB,CAAZ;AACA,MAAIS,MAAM,GAAGC,yBAAYF,GAAZ,CAAb;;AACA,MAAIC,MAAM,KAAKE,SAAf,EAA0B;AACxBF,IAAAA,MAAM,GAAG,EAAT;AACD,GAVD,CAUE;;;AAEF,MAAMG,GAAG,GAAGhB,GAAG,CAACiB,aAAJ,CAAkB,KAAlB,CAAZ;AACA,MAAIhB,SAAJ,EAAeA,SAAS,CAACiB,WAAV,CAAsBF,GAAtB;AACf,MAAMG,CAAC,GAAGH,GAAG,CAACE,WAAJ,CAAgBlB,GAAG,CAACiB,aAAJ,CAAkBJ,MAAM,CAACO,OAAP,IAAkB,GAApC,CAAhB,CAAV;AACAD,EAAAA,CAAC,CAACE,WAAF,GAAgBb,QAAhB;AAEA,MAAIc,KAAU,GAAGf,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,OAAN,CAAb,CAAjB;;AACA,MAAIW,KAAK,KAAKP,SAAd,EAAyB;AACvBO,IAAAA,KAAK,GAAGT,MAAM,CAACS,KAAP,GAAeT,MAAM,CAACS,KAAtB,GAA8B,EAAtC;AACD;;AACD,MAAIA,KAAJ,EAAWH,CAAC,CAACI,YAAF,CAAe,OAAf,EAAwBD,KAAxB;AAEX,SAAON,GAAP;AACD","sourcesContent":["import { solidLogicSingleton } from '../../logic'\nimport * as ns from '../../ns'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/**\n * A [[FieldFunction]] for a simple comment box. It will look for\n * the first (form, ns.ui('contents'), ?) triple it can find in\n * UI.store and use the value of the object of that triple as\n * the comment text.\n *\n * @param dom The DOM\n * @param container If set, the result will be appended to it as a child\n * @param already Unused\n * @param subject Unused\n * @param form RDF node with `ns.ui('contents')` attribute\n * @param _doc Unused\n * @param _callbackFunction Unused\n *\n * @returns a DOM element containing the comment.\n */\nexport function commentField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already: any,\n subject: any,\n form,\n _doc,\n _callbackFunction\n) {\n const kb = store\n let contents: any = kb.any(form, ns.ui('contents'))\n if (!contents) {\n contents = 'Error: No contents in comment field.'\n }\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) {\n params = {}\n } // non-bottom field types can do this\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element || 'p'))\n p.textContent = contents\n\n let style: any = kb.any(form, ns.ui('style'))\n if (style === undefined) {\n style = params.style ? params.style : ''\n }\n if (style) p.setAttribute('style', style as any)\n\n return box\n}\n"],"file":"comment.js"}
1
+ {"version":3,"sources":["../../../src/widgets/forms/comment.ts"],"names":["store","solidLogicSingleton","commentField","dom","container","already","subject","form","_doc","_callbackFunction","kb","contents","any","ns","ui","uri","params","fieldParams","undefined","box","createElement","appendChild","p","element","textContent","style","setAttribute"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA,IAAMA,KAAK,GAAGC,gCAAoBD,KAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASE,YAAT,CACLC,GADK,EAELC,SAFK,EAGLC,OAHK,EAILC,OAJK,EAKLC,IALK,EAMLC,IANK,EAOLC,iBAPK,EAQL;AACA,MAAMC,EAAE,GAAGV,KAAX;AACA,MAAIW,QAAa,GAAGD,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,UAAN,CAAb,CAApB;;AACA,MAAI,CAACH,QAAL,EAAe;AACbA,IAAAA,QAAQ,GAAG,sCAAX;AACD;;AACD,MAAMI,GAAG,GAAG,yCAAqBR,IAArB,CAAZ;AACA,MAAIS,MAAM,GAAGC,yBAAYF,GAAZ,CAAb;;AACA,MAAIC,MAAM,KAAKE,SAAf,EAA0B;AACxBF,IAAAA,MAAM,GAAG,EAAT;AACD,GAVD,CAUE;;;AAEF,MAAMG,GAAG,GAAGhB,GAAG,CAACiB,aAAJ,CAAkB,KAAlB,CAAZ;AACA,MAAIhB,SAAJ,EAAeA,SAAS,CAACiB,WAAV,CAAsBF,GAAtB;AACf,MAAMG,CAAC,GAAGH,GAAG,CAACE,WAAJ,CAAgBlB,GAAG,CAACiB,aAAJ,CAAkBJ,MAAM,CAACO,OAAP,IAAkB,GAApC,CAAhB,CAAV;AACAD,EAAAA,CAAC,CAACE,WAAF,GAAgBb,QAAhB;AAEA,MAAIc,KAAU,GAAGf,EAAE,CAACE,GAAH,CAAOL,IAAP,EAAaM,EAAE,CAACC,EAAH,CAAM,OAAN,CAAb,CAAjB;;AACA,MAAIW,KAAK,KAAKP,SAAd,EAAyB;AACvBO,IAAAA,KAAK,GAAGT,MAAM,CAACS,KAAP,GAAeT,MAAM,CAACS,KAAtB,GAA8B,EAAtC;AACD;;AACD,MAAIA,KAAJ,EAAWH,CAAC,CAACI,YAAF,CAAe,OAAf,EAAwBD,KAAxB;AAEX,SAAON,GAAP;AACD","sourcesContent":["import { solidLogicSingleton } from 'solid-logic'\nimport * as ns from '../../ns'\nimport { mostSpecificClassURI } from './fieldFunction'\nimport { fieldParams } from './fieldParams'\n\nconst store = solidLogicSingleton.store\n\n/**\n * A [[FieldFunction]] for a simple comment box. It will look for\n * the first (form, ns.ui('contents'), ?) triple it can find in\n * store and use the value of the object of that triple as\n * the comment text.\n *\n * @param dom The DOM\n * @param container If set, the result will be appended to it as a child\n * @param already Unused\n * @param subject Unused\n * @param form RDF node with `ns.ui('contents')` attribute\n * @param _doc Unused\n * @param _callbackFunction Unused\n *\n * @returns a DOM element containing the comment.\n */\nexport function commentField (\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already: any,\n subject: any,\n form,\n _doc,\n _callbackFunction\n) {\n const kb = store\n let contents: any = kb.any(form, ns.ui('contents'))\n if (!contents) {\n contents = 'Error: No contents in comment field.'\n }\n const uri = mostSpecificClassURI(form)\n let params = fieldParams[uri]\n if (params === undefined) {\n params = {}\n } // non-bottom field types can do this\n\n const box = dom.createElement('div')\n if (container) container.appendChild(box)\n const p = box.appendChild(dom.createElement(params.element || 'p'))\n p.textContent = contents\n\n let style: any = kb.any(form, ns.ui('style'))\n if (style === undefined) {\n style = params.style ? params.style : ''\n }\n if (style) p.setAttribute('style', style as any)\n\n return box\n}\n"],"file":"comment.js"}
@@ -7,13 +7,13 @@ exports.field = void 0;
7
7
  exports.fieldFunction = fieldFunction;
8
8
  exports.mostSpecificClassURI = mostSpecificClassURI;
9
9
 
10
- var _logic = require("../../logic");
10
+ var _solidLogic = require("solid-logic");
11
11
 
12
12
  var _log = require("../../log");
13
13
 
14
14
  var _error = require("../error");
15
15
 
16
- var store = _logic.solidLogicSingleton.store;
16
+ var store = _solidLogic.solidLogicSingleton.store;
17
17
  var field = {}; // Form field functions by URI of field type.
18
18
 
19
19
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/widgets/forms/fieldFunction.ts"],"names":["store","solidLogicSingleton","field","mostSpecificClassURI","x","kb","ft","findTypeURIs","bot","bottomTypeURIs","bots","b","push","fieldFunction","dom","fieldInQuestion","uri","fun","dom2","container","box","appendChild"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAGC,2BAAoBD,KAAlC;AAYO,IAAME,KAA4C,GAAG,EAArD,C,CAAwD;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,oBAAT,CAA+BC,CAA/B,EAAgD;AACrD,MAAMC,EAAE,GAAGL,KAAX;AACA,MAAMM,EAAE,GAAGD,EAAE,CAACE,YAAH,CAAgBH,CAAhB,CAAX;AACA,MAAMI,GAAG,GAAGH,EAAE,CAACI,cAAH,CAAkBH,EAAlB,CAAZ,CAHqD,CAGnB;;AAClC,MAAMI,IAAW,GAAG,EAApB;;AACA,OAAK,IAAMC,CAAX,IAAgBH,GAAhB;AAAqBE,IAAAA,IAAI,CAACE,IAAL,CAAUD,CAAV;AAArB,GALqD,CAMrD;;;AACA,SAAOD,IAAI,CAAC,CAAD,CAAX;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASG,aAAT,CAAwBC,GAAxB,EAA+CC,eAA/C,EAAqF;AAC1F,MAAMC,GAAG,GAAGb,oBAAoB,CAACY,eAAD,CAAhC,CAD0F,CACxC;AAClD;;AACA,MAAME,GAAG,GAAGf,KAAK,CAACc,GAAD,CAAjB;AACA,kBACE,yCAAyCD,eAAzC,GAA2D,WAA3D,GAAyEC,GAD3E;;AAGA,MAAI,CAACC,GAAL,EAAU;AACR,WAAO,UAAUC,IAAV,EAA8BC,SAA9B,EAAoE;AACzE,UAAMC,GAAG,GAAG,8BACVF,IADU,EAEV,0BAA0BH,eAA1B,GAA4C,WAA5C,GAA0DC,GAFhD,CAAZ;AAIA,UAAIG,SAAJ,EAAeA,SAAS,CAACE,WAAV,CAAsBD,GAAtB;AAEf,aAAOA,GAAP;AACD,KARD;AASD;;AACD,SAAOH,GAAP;AACD","sourcesContent":["import { Node } from 'rdflib'\nimport { solidLogicSingleton } from '../../logic'\nimport { debug } from '../../log'\nimport { errorMessageBlock } from '../error'\n\nconst store = solidLogicSingleton.store\n\nexport type FieldFunction = (\n dom: HTMLDocument, // the DOM\n container: HTMLElement | undefined, // if defined, the box will be appended to it\n already: { }, // used to avoid looping in nested forms\n subject: Node, // the thing for which data will be loaded into the form element\n form: Node, // the RDF declaration for what the form should have\n doc: Node, // the online RDF document for data binding (form input values will be read/saved automatically)\n callbackFunction: (ok: boolean, errorMessage: string) => void // this will be called when data changes (TODO: check this with unit tests)\n) => HTMLElement\n\nexport const field: { [classUri: string]: FieldFunction } = {} // Form field functions by URI of field type.\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param x a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\nexport function mostSpecificClassURI (x: Node): string {\n const kb = store\n const ft = kb.findTypeURIs(x as any)\n const bot = kb.bottomTypeURIs(ft) // most specific\n const bots: any[] = []\n for (const b in bot) bots.push(b)\n // if (bots.length > 1) throw \"Didn't expect \"+x+\" to have multiple bottom types: \"+bots\n return bots[0]\n}\n\n/**\n * Returns a function that creates a form widget\n * @param dom unused\n * @param fieldInQuestion the field for which to create a form, e.g. namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')\n */\nexport function fieldFunction (dom: any /* unused */, fieldInQuestion: Node): FieldFunction {\n const uri = mostSpecificClassURI(fieldInQuestion) // What type\n // const uri = field.uri\n const fun = field[uri]\n debug(\n 'paneUtils: Going to implement field ' + fieldInQuestion + ' of type ' + uri\n )\n if (!fun) {\n return function (dom2: HTMLDocument, container?: HTMLElement): HTMLElement {\n const box = errorMessageBlock(\n dom2,\n 'No handler for field ' + fieldInQuestion + ' of type ' + uri\n )\n if (container) container.appendChild(box)\n\n return box\n }\n }\n return fun\n}\n"],"file":"fieldFunction.js"}
1
+ {"version":3,"sources":["../../../src/widgets/forms/fieldFunction.ts"],"names":["store","solidLogicSingleton","field","mostSpecificClassURI","x","kb","ft","findTypeURIs","bot","bottomTypeURIs","bots","b","push","fieldFunction","dom","fieldInQuestion","uri","fun","dom2","container","box","appendChild"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAGC,gCAAoBD,KAAlC;AAYO,IAAME,KAA4C,GAAG,EAArD,C,CAAwD;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,oBAAT,CAA+BC,CAA/B,EAAgD;AACrD,MAAMC,EAAE,GAAGL,KAAX;AACA,MAAMM,EAAE,GAAGD,EAAE,CAACE,YAAH,CAAgBH,CAAhB,CAAX;AACA,MAAMI,GAAG,GAAGH,EAAE,CAACI,cAAH,CAAkBH,EAAlB,CAAZ,CAHqD,CAGnB;;AAClC,MAAMI,IAAW,GAAG,EAApB;;AACA,OAAK,IAAMC,CAAX,IAAgBH,GAAhB;AAAqBE,IAAAA,IAAI,CAACE,IAAL,CAAUD,CAAV;AAArB,GALqD,CAMrD;;;AACA,SAAOD,IAAI,CAAC,CAAD,CAAX;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASG,aAAT,CAAwBC,GAAxB,EAA+CC,eAA/C,EAAqF;AAC1F,MAAMC,GAAG,GAAGb,oBAAoB,CAACY,eAAD,CAAhC,CAD0F,CACxC;AAClD;;AACA,MAAME,GAAG,GAAGf,KAAK,CAACc,GAAD,CAAjB;AACA,kBACE,yCAAyCD,eAAzC,GAA2D,WAA3D,GAAyEC,GAD3E;;AAGA,MAAI,CAACC,GAAL,EAAU;AACR,WAAO,UAAUC,IAAV,EAA8BC,SAA9B,EAAoE;AACzE,UAAMC,GAAG,GAAG,8BACVF,IADU,EAEV,0BAA0BH,eAA1B,GAA4C,WAA5C,GAA0DC,GAFhD,CAAZ;AAIA,UAAIG,SAAJ,EAAeA,SAAS,CAACE,WAAV,CAAsBD,GAAtB;AAEf,aAAOA,GAAP;AACD,KARD;AASD;;AACD,SAAOH,GAAP;AACD","sourcesContent":["import { Node } from 'rdflib'\nimport { solidLogicSingleton } from 'solid-logic'\nimport { debug } from '../../log'\nimport { errorMessageBlock } from '../error'\n\nconst store = solidLogicSingleton.store\n\nexport type FieldFunction = (\n dom: HTMLDocument, // the DOM\n container: HTMLElement | undefined, // if defined, the box will be appended to it\n already: { }, // used to avoid looping in nested forms\n subject: Node, // the thing for which data will be loaded into the form element\n form: Node, // the RDF declaration for what the form should have\n doc: Node, // the online RDF document for data binding (form input values will be read/saved automatically)\n callbackFunction: (ok: boolean, errorMessage: string) => void // this will be called when data changes (TODO: check this with unit tests)\n) => HTMLElement\n\nexport const field: { [classUri: string]: FieldFunction } = {} // Form field functions by URI of field type.\n\n/**\n * Which class of field is this? Relies on http://www.w3.org/2000/01/rdf-schema#subClassOf and\n * https://linkeddata.github.io/rdflib.js/doc/classes/formula.html#bottomtypeuris\n * to find the most specific RDF type if there are multiple.\n *\n * @param x a form field, e.g. `namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')`\n * @returns the URI of the most specific known class, e.g. `http://www.w3.org/ns/ui#SingleLineTextField`\n */\nexport function mostSpecificClassURI (x: Node): string {\n const kb = store\n const ft = kb.findTypeURIs(x as any)\n const bot = kb.bottomTypeURIs(ft) // most specific\n const bots: any[] = []\n for (const b in bot) bots.push(b)\n // if (bots.length > 1) throw \"Didn't expect \"+x+\" to have multiple bottom types: \"+bots\n return bots[0]\n}\n\n/**\n * Returns a function that creates a form widget\n * @param dom unused\n * @param fieldInQuestion the field for which to create a form, e.g. namedNode('https://timbl.com/timbl/Public/Test/Forms/individualForm.ttl#fullNameField')\n */\nexport function fieldFunction (dom: any /* unused */, fieldInQuestion: Node): FieldFunction {\n const uri = mostSpecificClassURI(fieldInQuestion) // What type\n // const uri = field.uri\n const fun = field[uri]\n debug(\n 'paneUtils: Going to implement field ' + fieldInQuestion + ' of type ' + uri\n )\n if (!fun) {\n return function (dom2: HTMLDocument, container?: HTMLElement): HTMLElement {\n const box = errorMessageBlock(\n dom2,\n 'No handler for field ' + fieldInQuestion + ' of type ' + uri\n )\n if (container) container.appendChild(box)\n\n return box\n }\n }\n return fun\n}\n"],"file":"fieldFunction.js"}
@@ -9,7 +9,7 @@ exports.setFieldStyle = setFieldStyle;
9
9
 
10
10
  var ns = _interopRequireWildcard(require("../../ns"));
11
11
 
12
- var _logic = require("../../logic");
12
+ var _solidLogic = require("solid-logic");
13
13
 
14
14
  var _fieldParams = require("./fieldParams");
15
15
 
@@ -26,7 +26,7 @@ function setFieldStyle(ele, field) {
26
26
  var classUri = (0, _fieldFunction.mostSpecificClassURI)(field);
27
27
  var params = _fieldParams.fieldParams[classUri] || {};
28
28
 
29
- var style = _logic.kb.any(field, ns.ui('style'));
29
+ var style = _solidLogic.store.any(field, ns.ui('style'));
30
30
 
31
31
  if (!style) {
32
32
  if (params.style) {
@@ -39,7 +39,7 @@ function setFieldStyle(ele, field) {
39
39
  if (style.termType === 'Literal') {
40
40
  if (style) ele.setAttribute('style', style.value);
41
41
  } else {
42
- var sts = _logic.kb.statementsMatching(style, null, null, field.doc());
42
+ var sts = _solidLogic.store.statementsMatching(style, null, null, field.doc());
43
43
 
44
44
  sts.forEach(function (st) {
45
45
  if (st.predicate.uri && st.predicate.uri.startsWith(STYLE_URI_PREFIX)) {