solid-ui 2.4.23 → 2.4.24

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 (136) hide show
  1. package/dist/main.js +2159 -5039
  2. package/dist/main.js.map +1 -1
  3. package/lib/acl/access-controller.js +4 -67
  4. package/lib/acl/access-controller.js.map +1 -1
  5. package/lib/acl/access-groups.js +59 -137
  6. package/lib/acl/access-groups.js.map +1 -1
  7. package/lib/acl/acl-control.js +14 -54
  8. package/lib/acl/acl-control.js.map +1 -1
  9. package/lib/acl/acl.js +32 -107
  10. package/lib/acl/acl.js.map +1 -1
  11. package/lib/acl/add-agent-buttons.js +0 -92
  12. package/lib/acl/add-agent-buttons.js.map +1 -1
  13. package/lib/acl/index.js +1 -3
  14. package/lib/acl/index.js.map +1 -1
  15. package/lib/acl/styles.js +1 -2
  16. package/lib/acl/styles.js.map +1 -1
  17. package/lib/chat/bookmarks.js +8 -80
  18. package/lib/chat/bookmarks.js.map +1 -1
  19. package/lib/chat/chatLogic.js +109 -180
  20. package/lib/chat/chatLogic.js.map +1 -1
  21. package/lib/chat/dateFolder.js +6 -91
  22. package/lib/chat/dateFolder.js.map +1 -1
  23. package/lib/chat/infinite.js +33 -185
  24. package/lib/chat/infinite.js.map +1 -1
  25. package/lib/chat/message.js +37 -150
  26. package/lib/chat/message.js.map +1 -1
  27. package/lib/chat/messageTools.js +23 -96
  28. package/lib/chat/messageTools.js.map +1 -1
  29. package/lib/chat/thread.js +33 -91
  30. package/lib/chat/thread.js.map +1 -1
  31. package/lib/create/create.js +19 -51
  32. package/lib/create/create.js.map +1 -1
  33. package/lib/create/index.js +0 -2
  34. package/lib/create/index.js.map +1 -1
  35. package/lib/debug.js +0 -8
  36. package/lib/debug.js.map +1 -1
  37. package/lib/folders.js +4 -27
  38. package/lib/folders.js.map +1 -1
  39. package/lib/footer/index.js +2 -24
  40. package/lib/footer/index.js.map +1 -1
  41. package/lib/footer/styleMap.js.map +1 -1
  42. package/lib/header/empty-profile.js.map +1 -1
  43. package/lib/header/index.js +3 -72
  44. package/lib/header/index.js.map +1 -1
  45. package/lib/header/styleMap.js +4 -3
  46. package/lib/header/styleMap.js.map +1 -1
  47. package/lib/iconBase.js +3 -4
  48. package/lib/iconBase.js.map +1 -1
  49. package/lib/index.js +5 -46
  50. package/lib/index.js.map +1 -1
  51. package/lib/jss/index.js +3 -9
  52. package/lib/jss/index.js.map +1 -1
  53. package/lib/log.js +15 -51
  54. package/lib/log.js.map +1 -1
  55. package/lib/login/login.js +74 -303
  56. package/lib/login/login.js.map +1 -1
  57. package/lib/matrix/index.js +0 -2
  58. package/lib/matrix/index.js.map +1 -1
  59. package/lib/matrix/matrix.js +7 -55
  60. package/lib/matrix/matrix.js.map +1 -1
  61. package/lib/media/index.js +0 -2
  62. package/lib/media/index.js.map +1 -1
  63. package/lib/media/media-capture.js +13 -33
  64. package/lib/media/media-capture.js.map +1 -1
  65. package/lib/messageArea.js +23 -64
  66. package/lib/messageArea.js.map +1 -1
  67. package/lib/noun_Camera_1618446_000000.js.map +1 -1
  68. package/lib/ns.js +5 -7
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +48 -234
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +10 -65
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +21 -42
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/signup/config-default.js +1 -8
  77. package/lib/signup/config-default.js.map +1 -1
  78. package/lib/signup/signup.js +6 -13
  79. package/lib/signup/signup.js.map +1 -1
  80. package/lib/stories/decorators.js +0 -2
  81. package/lib/stories/decorators.js.map +1 -1
  82. package/lib/style.js +8 -5
  83. package/lib/style.js.map +1 -1
  84. package/lib/style_multiSelect.js +1 -5
  85. package/lib/style_multiSelect.js.map +1 -1
  86. package/lib/table.js +309 -322
  87. package/lib/table.js.map +1 -1
  88. package/lib/tabs.js +20 -100
  89. package/lib/tabs.js.map +1 -1
  90. package/lib/utils/headerFooterHelpers.js +4 -52
  91. package/lib/utils/headerFooterHelpers.js.map +1 -1
  92. package/lib/utils/index.js +41 -135
  93. package/lib/utils/index.js.map +1 -1
  94. package/lib/utils/label.js +13 -34
  95. package/lib/utils/label.js.map +1 -1
  96. package/lib/versionInfo.js +4 -4
  97. package/lib/versionInfo.js.map +1 -1
  98. package/lib/widgets/buttons/iconLinks.js +0 -8
  99. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  100. package/lib/widgets/buttons.js +115 -291
  101. package/lib/widgets/buttons.js.map +1 -1
  102. package/lib/widgets/dragAndDrop.js +12 -41
  103. package/lib/widgets/dragAndDrop.js.map +1 -1
  104. package/lib/widgets/error.js +3 -9
  105. package/lib/widgets/error.js.map +1 -1
  106. package/lib/widgets/forms/autocomplete/autocompleteBar.js +8 -71
  107. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  108. package/lib/widgets/forms/autocomplete/autocompleteField.js +13 -65
  109. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  110. package/lib/widgets/forms/autocomplete/autocompletePicker.js +15 -107
  111. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/language.js +6 -55
  113. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/publicData.js +12 -131
  115. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  116. package/lib/widgets/forms/basic.js +12 -55
  117. package/lib/widgets/forms/basic.js.map +1 -1
  118. package/lib/widgets/forms/comment.js +1 -15
  119. package/lib/widgets/forms/comment.js.map +1 -1
  120. package/lib/widgets/forms/fieldFunction.js +3 -16
  121. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  122. package/lib/widgets/forms/fieldParams.js +0 -12
  123. package/lib/widgets/forms/fieldParams.js.map +1 -1
  124. package/lib/widgets/forms/formStyle.js +1 -14
  125. package/lib/widgets/forms/formStyle.js.map +1 -1
  126. package/lib/widgets/forms.js +70 -474
  127. package/lib/widgets/forms.js.map +1 -1
  128. package/lib/widgets/index.js +0 -21
  129. package/lib/widgets/index.js.map +1 -1
  130. package/lib/widgets/multiSelect.js +48 -171
  131. package/lib/widgets/multiSelect.js.map +1 -1
  132. package/lib/widgets/peoplePicker.js +20 -90
  133. package/lib/widgets/peoplePicker.js.map +1 -1
  134. package/lib/widgets/widgetHelpers.js +2 -9
  135. package/lib/widgets/widgetHelpers.js.map +1 -1
  136. package/package.json +28 -28
@@ -1 +1 @@
1
- {"version":3,"file":"publicData.js","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","getPreferredLanguages","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"],"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"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/solidos/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\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 // ({ 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\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"],"mappings":"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"}
1
+ {"version":3,"file":"publicData.js","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","getPreferredLanguages","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"],"sources":["../../../../src/widgets/forms/autocomplete/publicData.ts"],"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/solidos/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\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 // ({ 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\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"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _typeof = require("@babel/runtime/helpers/typeof");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -9,31 +8,20 @@ exports.basicField = basicField;
9
8
  exports.fieldLabel = fieldLabel;
10
9
  exports.fieldStore = fieldStore;
11
10
  exports.renderNameValuePair = renderNameValuePair;
12
-
13
11
  var _rdflib = require("rdflib");
14
-
15
12
  var _solidLogic = require("solid-logic");
16
-
17
13
  var ns = _interopRequireWildcard(require("../../ns"));
18
-
19
14
  var _style = require("../../style");
20
-
21
15
  var _utils = require("../../utils");
22
-
23
16
  var _error = require("../error");
24
-
25
17
  var _fieldFunction = require("./fieldFunction");
26
-
27
18
  var _fieldParams = require("./fieldParams");
28
-
29
19
  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); }
30
-
31
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; }
32
-
33
21
  var store = _solidLogic.solidLogicSingleton.store;
22
+
34
23
  /* Style and create a name, value pair
35
24
  */
36
-
37
25
  function renderNameValuePair(dom, kb, box, form, label) {
38
26
  // const property = kb.any(form, ns.ui('property'))
39
27
  box.style.display = 'flex';
@@ -44,7 +32,6 @@ function renderNameValuePair(dom, kb, box, form, label) {
44
32
  lhs.setAttribute('class', 'formFieldName');
45
33
  lhs.setAttribute('style', _style.formFieldNameBoxStyle);
46
34
  rhs.setAttribute('class', 'formFieldValue');
47
-
48
35
  if (label) {
49
36
  lhs.appendChild(dom.createTextNode(label));
50
37
  } else if (kb.any(form, ns.ui('property'))) {
@@ -54,9 +41,9 @@ function renderNameValuePair(dom, kb, box, form, label) {
54
41
  rhs.appendChild((0, _error.errorMessageBlock)(dom, 'No property or label given for form field: ' + form));
55
42
  lhs.appendChild(dom.createTextNode('???'));
56
43
  }
57
-
58
44
  return rhs;
59
45
  }
46
+
60
47
  /**
61
48
  * Create an anchor element with a label as the anchor text.
62
49
  *
@@ -66,25 +53,20 @@ function renderNameValuePair(dom, kb, box, form, label) {
66
53
  *
67
54
  * @internal exporting this only for unit tests
68
55
  */
69
-
70
-
71
56
  function fieldLabel(dom, property, fieldInQuestion) {
72
57
  var lab = store.any(fieldInQuestion, ns.ui('label'));
73
58
  if (!lab) lab = (0, _utils.label)(property, true); // Init capital
74
-
75
59
  if (property === undefined) {
76
60
  return dom.createTextNode('@@Internal error: undefined property');
77
61
  }
78
-
79
62
  var anchor = dom.createElement('a');
80
63
  /* istanbul ignore next */
81
-
82
64
  if (property.uri) anchor.setAttribute('href', property.uri);
83
65
  anchor.setAttribute('style', 'color: #3B5998; text-decoration: none;'); // Not too blue and no underline
84
-
85
66
  anchor.textContent = lab;
86
67
  return anchor;
87
68
  }
69
+
88
70
  /**
89
71
  * Returns the document for the first quad that matches
90
72
  * the subject and predicate provided, or default if that
@@ -96,22 +78,18 @@ function fieldLabel(dom, property, fieldInQuestion) {
96
78
  *
97
79
  * @internal exporting this only for unit tests
98
80
  */
99
-
100
-
101
81
  function fieldStore(subject, predicate, def) {
102
82
  var sts = store.statementsMatching(subject, predicate);
103
83
  if (sts.length === 0) return def; // can used default as no data yet
104
-
105
84
  if (!store.updater) {
106
85
  throw new Error('Store has no updater');
107
86
  }
108
-
109
87
  if (sts.length > 0 && sts[0].why.value && store.updater.editable(sts[0].why.value, store)) {
110
88
  return store.sym(sts[0].why.value);
111
89
  }
112
-
113
90
  return def;
114
91
  }
92
+
115
93
  /**
116
94
  * Render a basic form field
117
95
  *
@@ -129,8 +107,6 @@ function fieldStore(subject, predicate, def) {
129
107
  * @returns The HTML widget created
130
108
  */
131
109
  // eslint-disable-next-line complexity
132
-
133
-
134
110
  function basicField(dom, container, already, subject, form, doc, callbackFunction) {
135
111
  var kb = store;
136
112
  var formDoc = form.doc ? form.doc() : null; // @@ if blank no way to know
@@ -138,20 +114,18 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
138
114
  var box = dom.createElement('div');
139
115
  var property = kb.any(form, ns.ui('property'));
140
116
  if (container) container.appendChild(box);
141
-
142
117
  if (!property) {
143
118
  return box.appendChild((0, _error.errorMessageBlock)(dom, 'Error: No property given for text field: ' + form));
144
119
  }
120
+ var rhs = renderNameValuePair(dom, kb, box, form);
145
121
 
146
- var rhs = renderNameValuePair(dom, kb, box, form); // It can be cleaner to just remove empty fields if you can't edit them anyway
147
-
122
+ // It can be cleaner to just remove empty fields if you can't edit them anyway
148
123
  var suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc);
149
124
  var uri = (0, _fieldFunction.mostSpecificClassURI)(form);
150
125
  var params = _fieldParams.fieldParams[uri];
151
126
  if (params === undefined) params = {
152
127
  style: ''
153
128
  }; // non-bottom field types can do this
154
-
155
129
  var paramStyle = params.style || '';
156
130
  var style = _style.textInputStyle + paramStyle;
157
131
  var field = dom.createElement('input');
@@ -164,11 +138,9 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
164
138
  field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096');
165
139
  doc = doc || fieldStore(subject, property, doc);
166
140
  var obj = kb.any(subject, property, undefined, doc);
167
-
168
141
  if (!obj) {
169
142
  obj = kb.any(form, ns.ui('default'));
170
143
  }
171
-
172
144
  if (obj && obj.value && params.uriPrefix) {
173
145
  // eg tel: or mailto:
174
146
  field.value = decodeURIComponent(obj.value.replace(params.uriPrefix, '')) // should have no spaces but in case
@@ -177,26 +149,23 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
177
149
  /* istanbul ignore next */
178
150
  field.value = obj.value || obj.value || '';
179
151
  }
180
-
181
152
  field.setAttribute('style', style);
182
-
183
153
  if (!kb.updater) {
184
154
  throw new Error('kb has no updater');
185
155
  }
186
-
187
156
  if (!kb.updater.editable(doc.uri)) {
188
157
  field.readOnly = true // was: disabled. readOnly is better
189
158
  ;
190
- field.style = _style.textInputStyleUneditable + paramStyle; // backgroundColor = textInputBackgroundColorUneditable
191
-
159
+ field.style = _style.textInputStyleUneditable + paramStyle;
160
+ // backgroundColor = textInputBackgroundColorUneditable
192
161
  if (suppressEmptyUneditable && field.value === '') {
193
162
  box.style.display = 'none'; // clutter
194
163
  }
195
164
 
196
165
  return box;
197
- } // read-write:
198
-
166
+ }
199
167
 
168
+ // read-write:
200
169
  field.addEventListener('keyup', function (_e) {
201
170
  if (params.pattern) {
202
171
  field.setAttribute('style', style + (field.value.match(params.pattern) ? 'color: green;' : 'color: red;'));
@@ -206,13 +175,9 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
206
175
  // i.e. lose focus with changed data
207
176
  if (params.pattern && !field.value.match(params.pattern)) return;
208
177
  field.disabled = true; // See if this stops getting two dates from fumbling e.g the chrome datepicker.
209
-
210
178
  field.setAttribute('style', style + 'color: gray;'); // pending
211
-
212
179
  var ds = kb.statementsMatching(subject, property); // remove any multiple values
213
-
214
180
  var result;
215
-
216
181
  if (params.namedNode) {
217
182
  result = kb.sym(field.value);
218
183
  } else if (params.uriPrefix) {
@@ -225,16 +190,13 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
225
190
  result = new _rdflib.Literal(field.value);
226
191
  }
227
192
  }
228
-
229
193
  var is = ds.map(function (statement) {
230
194
  return (0, _rdflib.st)(statement.subject, statement.predicate, result, statement.why);
231
195
  }); // can include >1 doc
232
-
233
196
  if (is.length === 0) {
234
197
  // or none
235
198
  is = [(0, _rdflib.st)(subject, property, result, doc)];
236
199
  }
237
-
238
200
  function updateMany(ds, is, callback) {
239
201
  var docs = [];
240
202
  is.forEach(function (st) {
@@ -245,19 +207,16 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
245
207
  if (!docs.includes(st.why.uri)) docs.push(st.why.uri);
246
208
  });
247
209
  /* istanbul ignore next */
248
-
249
210
  if (docs.length === 0) {
250
211
  throw new Error('updateMany has no docs to patch');
251
212
  }
252
-
253
213
  if (!kb.updater) {
254
214
  throw new Error('kb has no updater');
255
215
  }
256
-
257
216
  if (docs.length === 1) {
258
217
  return kb.updater.update(ds, is, callback);
259
- } // return kb.updater.update(ds, is, callback)
260
-
218
+ }
219
+ // return kb.updater.update(ds, is, callback)
261
220
 
262
221
  var doc = docs.pop();
263
222
  var is1 = is.filter(function (st) {
@@ -280,7 +239,6 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
280
239
  }
281
240
  });
282
241
  }
283
-
284
242
  updateMany(ds, is, function (uri, ok, body) {
285
243
  // kb.updater.update(ds, is, function (uri, ok, body) {
286
244
  if (ok) {
@@ -289,7 +247,6 @@ function basicField(dom, container, already, subject, form, doc, callbackFunctio
289
247
  } else {
290
248
  box.appendChild((0, _error.errorMessageBlock)(dom, body));
291
249
  }
292
-
293
250
  callbackFunction(ok, body);
294
251
  });
295
252
  }, true);
@@ -1 +1 @@
1
- {"version":3,"file":"basic.js","names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","label","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","any","ns","ui","fieldLabel","errorMessageBlock","property","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","mostSpecificClassURI","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","st","updateMany","callback","docs","forEach","includes","push","update","pop","is1","filter","is2","ds1","ds2","ok","body"],"sources":["../../../src/widgets/forms/basic.ts"],"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, label?: string):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 (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\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"],"mappings":"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"}
1
+ {"version":3,"file":"basic.js","names":["store","solidLogicSingleton","renderNameValuePair","dom","kb","box","form","label","style","display","flexDirection","lhs","appendChild","createElement","width","formFieldNameBoxWidth","rhs","setAttribute","formFieldNameBoxStyle","createTextNode","any","ns","ui","fieldLabel","errorMessageBlock","property","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","mostSpecificClassURI","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","st","updateMany","callback","docs","forEach","includes","push","update","pop","is1","filter","is2","ds1","ds2","ok","body"],"sources":["../../../src/widgets/forms/basic.ts"],"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, label?: string):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 (label) {\n lhs.appendChild(dom.createTextNode(label))\n } else if (kb.any(form, ns.ui('property'))) { // Assume more space for error on right\n lhs.appendChild(fieldLabel(dom, kb.any(form, ns.ui('property')) as NamedNode, form))\n } else {\n rhs.appendChild(errorMessageBlock(dom, 'No property or label given for form field: ' + form))\n lhs.appendChild(dom.createTextNode('???'))\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"],"mappings":"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"}
@@ -1,25 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _typeof = require("@babel/runtime/helpers/typeof");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.commentField = commentField;
9
-
10
8
  var _solidLogic = require("solid-logic");
11
-
12
9
  var ns = _interopRequireWildcard(require("../../ns"));
13
-
14
10
  var _fieldFunction = require("./fieldFunction");
15
-
16
11
  var _fieldParams = require("./fieldParams");
17
-
18
12
  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); }
19
-
20
13
  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
-
22
14
  var store = _solidLogic.solidLogicSingleton.store;
15
+
23
16
  /**
24
17
  * A [[FieldFunction]] for a simple comment box. It will look for
25
18
  * the first (form, ns.ui('contents'), ?) triple it can find in
@@ -36,33 +29,26 @@ var store = _solidLogic.solidLogicSingleton.store;
36
29
  *
37
30
  * @returns a DOM element containing the comment.
38
31
  */
39
-
40
32
  function commentField(dom, container, already, subject, form, _doc, _callbackFunction) {
41
33
  var kb = store;
42
34
  var contents = kb.any(form, ns.ui('contents'));
43
-
44
35
  if (!contents) {
45
36
  contents = 'Error: No contents in comment field.';
46
37
  }
47
-
48
38
  var uri = (0, _fieldFunction.mostSpecificClassURI)(form);
49
39
  var params = _fieldParams.fieldParams[uri];
50
-
51
40
  if (params === undefined) {
52
41
  params = {};
53
42
  } // non-bottom field types can do this
54
43
 
55
-
56
44
  var box = dom.createElement('div');
57
45
  if (container) container.appendChild(box);
58
46
  var p = box.appendChild(dom.createElement(params.element || 'p'));
59
47
  p.textContent = contents;
60
48
  var style = kb.any(form, ns.ui('style'));
61
-
62
49
  if (style === undefined) {
63
50
  style = params.style ? params.style : '';
64
51
  }
65
-
66
52
  if (style) p.setAttribute('style', style);
67
53
  return box;
68
54
  }