solid-ui 2.4.33 → 2.4.34-bd841bfc

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 (72) hide show
  1. package/dist/841.solid-ui.min.js +1 -1
  2. package/dist/841.solid-ui.min.js.map +1 -1
  3. package/dist/solid-ui.js +4463 -1872
  4. package/dist/solid-ui.js.map +1 -1
  5. package/dist/solid-ui.min.js +1 -1
  6. package/dist/solid-ui.min.js.LICENSE.txt +7 -0
  7. package/dist/solid-ui.min.js.map +1 -1
  8. package/lib/acl/access-controller.js +4 -4
  9. package/lib/acl/access-controller.js.map +1 -1
  10. package/lib/acl/access-groups.js +3 -3
  11. package/lib/acl/access-groups.js.map +1 -1
  12. package/lib/acl/acl-control.js +2 -2
  13. package/lib/acl/acl-control.js.map +1 -1
  14. package/lib/acl/acl.js +14 -14
  15. package/lib/acl/acl.js.map +1 -1
  16. package/lib/acl/add-agent-buttons.js +6 -6
  17. package/lib/acl/add-agent-buttons.js.map +1 -1
  18. package/lib/chat/bookmarks.js +5 -5
  19. package/lib/chat/bookmarks.js.map +1 -1
  20. package/lib/chat/chatLogic.js +6 -6
  21. package/lib/chat/chatLogic.js.map +1 -1
  22. package/lib/chat/dateFolder.js +5 -5
  23. package/lib/chat/dateFolder.js.map +1 -1
  24. package/lib/chat/infinite.js +18 -18
  25. package/lib/chat/infinite.js.map +1 -1
  26. package/lib/chat/keys.js +3 -3
  27. package/lib/chat/keys.js.map +1 -1
  28. package/lib/chat/message.js +13 -13
  29. package/lib/chat/message.js.map +1 -1
  30. package/lib/chat/messageTools.js +10 -10
  31. package/lib/chat/messageTools.js.map +1 -1
  32. package/lib/chat/thread.js +8 -8
  33. package/lib/chat/thread.js.map +1 -1
  34. package/lib/footer/index.js +2 -2
  35. package/lib/footer/index.js.map +1 -1
  36. package/lib/header/index.js +4 -4
  37. package/lib/header/index.js.map +1 -1
  38. package/lib/login/login.js +14 -14
  39. package/lib/login/login.js.map +1 -1
  40. package/lib/media/media-capture.js +1 -1
  41. package/lib/media/media-capture.js.map +1 -1
  42. package/lib/messageArea.js.map +1 -1
  43. package/lib/pad.js +16 -16
  44. package/lib/pad.js.map +1 -1
  45. package/lib/participation.js +4 -4
  46. package/lib/participation.js.map +1 -1
  47. package/lib/tabs.js +3 -3
  48. package/lib/tabs.js.map +1 -1
  49. package/lib/utils/headerFooterHelpers.js +1 -1
  50. package/lib/utils/headerFooterHelpers.js.map +1 -1
  51. package/lib/utils/index.js.map +1 -1
  52. package/lib/utils/keyHelpers/accessData.js +3 -3
  53. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  54. package/lib/utils/keyHelpers/acl.js +1 -1
  55. package/lib/utils/keyHelpers/acl.js.map +1 -1
  56. package/lib/versionInfo.js +19 -19
  57. package/lib/versionInfo.js.map +1 -1
  58. package/lib/widgets/forms/autocomplete/autocompleteBar.js +9 -9
  59. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  60. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  61. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  62. package/lib/widgets/forms/autocomplete/autocompletePicker.js +11 -11
  63. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  64. package/lib/widgets/forms/autocomplete/language.js +2 -2
  65. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  66. package/lib/widgets/forms/autocomplete/publicData.js +9 -9
  67. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  68. package/lib/widgets/forms.js +12 -12
  69. package/lib/widgets/forms.js.map +1 -1
  70. package/lib/widgets/multiSelect.js.map +1 -1
  71. package/lib/widgets/peoplePicker.js.map +1 -1
  72. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"autocompletePicker.js","names":["debug","_interopRequireWildcard","require","style","_styleConstants","_interopRequireDefault","widgets","_solidLogic","_publicData","_language","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","element","visible","display","renderAutoComplete","_x","_x2","_x3","_x4","_renderAutoComplete","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee8","dom","acOptions","decoration","callback","complain","finish","gotIt","_gotIt","acceptButtonHandler","_acceptButtonHandler","cancelButtonHandler","_cancelButtonHandler","nameMatch","clearList","inputEventHHandler","_inputEventHHandler","loadBindingsAndFilterByLanguage","_loadBindingsAndFilterByLanguage","filterByName","refreshList","_refreshList","initialize","targetClass","lastBindings","loadedEnough","inputEventHandlerLock","allDisplayed","lastFilter","numberOfRows","div","foundName","foundObject","table","head","cell","searchInput","size","searchInputStyle","wrap","_callee8$","_context8","prev","_initialize","currentObject","currentName","undefined","deleteButton","acceptButton","editButton","cancelButton","_refreshList3","_callee7","rowForBinding","compareBindingsByName","languagePrefs","filter","slimmed","displayable","_iterator","_step","binding","_callee7$","_context7","_compareBindingsByNam","self","other","_rowForBinding","row","createElement","setStyle","setAttribute","color","textContent","object","bindingToTerm","subject","nameTerm","addEventListener","_ref","_callee6","_event","_callee6$","_context6","log","stop","_x12","concat","abrupt","getPreferredLanguages","sent","trim","toLowerCase","startsWith","sort","appendChild","_refreshList2","_filterByName","bindings","_loadBindingsAndFilte2","_callee5","_callee5$","_context5","queryPublicDataByName","defaultPreferredLanguages","queryParams","t0","AUTOCOMPLETE_LIMIT","filterByLanguage","_loadBindingsAndFilte","_x10","_x11","_inputEventHHandler3","_callee4","_callee4$","_context4","_inputEventHHandler2","_x9","_clearList","children","removeChild","lastChild","_nameMatch","candidate","parts","split","j","word","indexOf","_cancelButtonHandler3","_callee3","_callee3$","_context3","permanent","parentNode","_cancelButtonHandler2","_x8","_acceptButtonHandler3","_callee2","_callee2$","_context2","_acceptButtonHandler2","_x7","_gotIt3","_callee","_callee$","_context","disbaled","_gotIt2","_x5","_x6","_finish","termType","objectURIBase","store","sym","_complain","message","errorRow","Error","errorMessageBlock","padding","styleConstants","textInputSize","textInputStyle","event","keyCode"],"sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"sourcesContent":["/* Autocomplete Picker: Create and edit data using public data\n**\n** As the data source is passed as a parameter, all kinds of APIa and query services can be used\n**\n*/\nimport * as debug from '../../../debug'\nimport * as style from '../../../style'\nimport styleConstants from '../../../styleConstants'\nimport * as widgets from '../../../widgets'\nimport { store } from 'solid-logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferredLanguages } from './language'\n\nconst AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\nconst AUTOCOMPLETE_ROWS = 20 // 20?\nconst AUTOCOMPLETE_ROWS_STRETCH = 40\n\n/*\nAutocomplete happens in 6 phases:\n 1. The search string is too small to bother\n 2. The search string is big enough, and we have not loaded the array\n 3. The search string is big enough, and we have loaded array up to the limit\n Display them and wait for more user input\n 4. The search string is big enough, and we have loaded array NOT to the limit\n but including all matches. No more fetches.\n If user gets more precise, wait for them to select one - or reduce to a single\n 5. Single one selected. Optionally waiting for accept button to be pressed, OR can change string and go to 5 or 2\n 6. Locked with a value. Press 'edit' button to return to 5\n*/\n\nexport type AutocompleteDecoration = {\n acceptButton?: HTMLElement,\n cancelButton: HTMLElement, // Must have cancel button\n editButton?: HTMLElement,\n deleteButton?: HTMLElement\n}\nexport type AutocompleteOptions = {\n targetClass?: NamedNode,\n currentObject?: NamedNode,\n currentName?: Literal,\n queryParams: QueryParameters,\n size?: number,\n permanent?: boolean\n}\n\ninterface Callback1 {\n (_subject: NamedNode, _name: Literal): any;\n}\n\nexport function setVisible (element:HTMLElement, visible:boolean) {\n element.style.display = visible ? '' : 'none' // Do not use visibility, it holds the real estate\n}\n\n// The core of the autocomplete UI\nexport async function renderAutoComplete (dom: HTMLDocument,\n acOptions:AutocompleteOptions,\n decoration: AutocompleteDecoration,\n callback: Callback1) {\n function complain (message) {\n const errorRow = table.appendChild(dom.createElement('tr'))\n debug.log(message)\n const err = new Error(message)\n errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n // errorMessageBlock will log the stack to the console\n style.setStyle(errorRow, 'autocompleteRowStyle')\n errorRow.style.padding = '1em'\n }\n\n function finish (object, name) {\n debug.log('Auto complete: finish! ' + object)\n if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {\n object = store.sym(acOptions.queryParams.objectURIBase.value + object.value)\n }\n // remove(decoration.cancelButton)\n // remove(decoration.acceptButton)\n // remove(div)\n clearList()\n callback(object, name)\n }\n async function gotIt (object:NamedNode | Literal, name: Literal) {\n if (decoration.acceptButton) {\n (decoration.acceptButton as any).disbaled = false\n setVisible(decoration.acceptButton, true) // now wait for confirmation\n searchInput.value = name.value // complete it\n foundName = name\n foundObject = object\n debug.log('Auto complete: name: ' + name)\n debug.log('Auto complete: waiting for accept ' + object)\n clearList() // This may be an option - nice and clean but does not allow change of mind\n return\n }\n setVisible(decoration.cancelButton, true)\n finish(object, name)\n }\n\n async function acceptButtonHandler (_event) {\n if (foundName && searchInput.value === foundName.value) { // still\n finish(foundObject, foundName)\n }\n }\n\n async function cancelButtonHandler (_event) {\n debug.log('Auto complete: Canceled by user! ')\n if (acOptions.permanent) {\n initialize()\n } else {\n if (div.parentNode) {\n div.parentNode.removeChild(div)\n }\n }\n }\n\n function nameMatch (filter:string, candidate: string):boolean {\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (candidate.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function clearList () {\n while (table.children.length > 1) {\n table.removeChild(table.lastChild as Node)\n }\n }\n\n async function inputEventHHandler (_event) {\n // console.log('@@ AC inputEventHHandler called')\n setVisible(decoration.cancelButton, true) // only allow cancel when there is something to cancel\n refreshList() /// @@ debounqce does not work with jest\n /*\n if (runningTimeout) {\n clearTimeout(runningTimeout)\n }\n runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)\n */\n }\n\n async function loadBindingsAndFilterByLanguage (filter, languagePrefs) {\n // console.log('@@ loadBindingsAndFilterByLanguage ' + filter)\n let bindings\n try {\n bindings = await queryPublicDataByName(filter, targetClass as any,\n languagePrefs || defaultPreferredLanguages, acOptions.queryParams)\n } catch (err) {\n complain('Error querying db of organizations: ' + err)\n inputEventHandlerLock = false\n return\n }\n loadedEnough = bindings.length < AUTOCOMPLETE_LIMIT\n if (loadedEnough) {\n lastFilter = filter\n } else {\n lastFilter = undefined\n }\n clearList()\n const slimmed = filterByLanguage(bindings, languagePrefs)\n return slimmed\n }\n\n function filterByName (filter, bindings) {\n return bindings.filter(binding => nameMatch(filter, binding.name.value))\n }\n\n async function refreshList () {\n // console.log('@@ refreshList called')\n function rowForBinding (binding) {\n const row = dom.createElement('tr')\n style.setStyle(row, 'autocompleteRowStyle')\n row.setAttribute('style', 'padding: 0.3em;')\n row.style.color = allDisplayed ? '#080' : '#088' // green means 'you should find it here'\n row.textContent = binding.name.value\n const object = bindingToTerm(binding.subject)\n const nameTerm = bindingToTerm(binding.name)\n row.addEventListener('click', async _event => {\n debug.log(' click row textContent: ' + row.textContent)\n debug.log(' click name: ' + nameTerm.value)\n if (object && nameTerm) {\n gotIt(object, nameTerm as Literal)\n }\n })\n return row\n } // rowForBinding\n function compareBindingsByName (self, other) {\n return other.name.value > self.name.value\n ? 1\n : other.name.name < self.name.value ? -1 : 0\n }\n\n if (inputEventHandlerLock) {\n debug.log(`Ignoring \"${searchInput.value}\" because of lock `)\n return\n }\n debug.log(`Setting lock at \"${searchInput.value}\"`)\n\n inputEventHandlerLock = true\n const languagePrefs = await getPreferredLanguages()\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length < AUTOCOMPLETE_THRESHOLD) { // too small\n clearList()\n // candidatesLoaded = false\n numberOfRows = AUTOCOMPLETE_ROWS\n } else {\n if (!allDisplayed || !lastFilter || !filter.startsWith(lastFilter)) {\n debug.log(` Querying database at \"${filter}\" cf last \"${lastFilter}\".`)\n lastBindings = await loadBindingsAndFilterByLanguage(filter, languagePrefs) // freesh query\n }\n // Trim table as search gets tighter:\n const slimmed = filterByName(filter, lastBindings)\n if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {\n numberOfRows = slimmed.length // stretch if it means we get all items\n }\n allDisplayed = loadedEnough && slimmed.length <= numberOfRows\n debug.log(` Filter:\"${filter}\" lastBindings: ${lastBindings.length}, slimmed to ${slimmed.length}; rows: ${numberOfRows}, Enough? ${loadedEnough}, All displayed? ${allDisplayed}`)\n\n const displayable = slimmed.slice(0, numberOfRows)\n\n displayable.sort(compareBindingsByName)\n clearList()\n for (const binding of displayable) {\n table.appendChild(rowForBinding(binding))\n }\n if (slimmed.length === 1) {\n gotIt(bindingToTerm(slimmed[0].subject), bindingToTerm(slimmed[0].name) as Literal)\n }\n } // else\n inputEventHandlerLock = false\n } // refreshList\n\n function initialize () {\n if (acOptions.currentObject) { // If have existing value then jump into the endgame of the autocomplete\n searchInput.value = acOptions.currentName ? acOptions.currentName.value : '??? wot no name for ' + acOptions.currentObject\n foundName = acOptions.currentName\n lastFilter = acOptions.currentName ? acOptions.currentName.value : undefined\n foundObject = acOptions.currentObject\n } else {\n searchInput.value = ''\n lastFilter = undefined\n foundObject = undefined\n }\n if (decoration.deleteButton) {\n setVisible(decoration.deleteButton, !!acOptions.currentObject)\n }\n\n if (decoration.acceptButton) {\n setVisible(decoration.acceptButton, false) // hide until input complete\n }\n if (decoration.editButton) {\n setVisible(decoration.editButton, true)\n }\n if (decoration.cancelButton) {\n setVisible(decoration.cancelButton, false) // only allow cancel when there is something to cancel\n }\n inputEventHandlerLock = false\n clearList()\n } // initialiize\n\n // const queryParams: QueryParameters = acOptions.queryParams\n const targetClass = acOptions.targetClass\n if (!targetClass) throw new Error('renderAutoComplete: missing targetClass')\n // console.log(`renderAutoComplete: targetClass=${targetClass}` )\n if (decoration.acceptButton) {\n decoration.acceptButton.addEventListener('click', acceptButtonHandler, false)\n }\n if (decoration.cancelButton) {\n decoration.cancelButton.addEventListener('click', cancelButtonHandler, false)\n }\n\n // var candidatesLoaded = false\n let lastBindings\n let loadedEnough = false\n let inputEventHandlerLock = false\n let allDisplayed = false\n let lastFilter = undefined as (string | undefined)\n let numberOfRows = AUTOCOMPLETE_ROWS // this gets slimmed down\n const div = dom.createElement('div')\n let foundName = undefined as (Literal | undefined)// once found accepted string must match this\n let foundObject = undefined as (NamedNode | Literal | undefined)\n const table = div.appendChild(dom.createElement('table'))\n table.setAttribute('data-testid', 'autocomplete-table')\n table.setAttribute('style', 'max-width: 30em; margin: 0.5em;')\n const head = table.appendChild(dom.createElement('tr'))\n style.setStyle(head, 'autocompleteRowStyle') // textInputStyle or\n const cell = head.appendChild(dom.createElement('td'))\n const searchInput = cell.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n\n initialize()\n\n const size = acOptions.size || styleConstants.textInputSize || 20\n searchInput.setAttribute('size', size)\n searchInput.setAttribute('data-testid', 'autocomplete-input')\n\n const searchInputStyle = style.textInputStyle || // searchInputStyle ?\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em' // @\n searchInput.setAttribute('style', searchInputStyle)\n searchInput.addEventListener('keyup', function (event) {\n if (event.keyCode === 13) {\n acceptButtonHandler(event)\n }\n }, false)\n\n searchInput.addEventListener('input', inputEventHHandler)\n // console.log('@@ renderAutoComplete returns ' + div.innerHTML)\n return div\n} // renderAutoComplete\n\n// ENDS\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"autocompletePicker.js","names":["debug","_interopRequireWildcard","require","style","_styleConstants","_interopRequireDefault","widgets","_solidLogic","_publicData","_language","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","f","TypeError","o","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","element","visible","display","renderAutoComplete","_x","_x2","_x3","_x4","_renderAutoComplete","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee8","dom","acOptions","decoration","callback","complain","finish","gotIt","_gotIt","acceptButtonHandler","_acceptButtonHandler","cancelButtonHandler","_cancelButtonHandler","nameMatch","clearList","inputEventHHandler","_inputEventHHandler","loadBindingsAndFilterByLanguage","_loadBindingsAndFilterByLanguage","filterByName","refreshList","_refreshList","initialize","targetClass","lastBindings","loadedEnough","inputEventHandlerLock","allDisplayed","lastFilter","numberOfRows","div","foundName","foundObject","table","head","cell","searchInput","size","searchInputStyle","wrap","_callee8$","_context8","prev","_initialize","currentObject","currentName","undefined","deleteButton","acceptButton","editButton","cancelButton","_refreshList3","_callee7","rowForBinding","compareBindingsByName","languagePrefs","filter","slimmed","displayable","_iterator","_step","binding","_callee7$","_context7","_compareBindingsByNam","self","other","_rowForBinding","row","createElement","setStyle","setAttribute","color","textContent","object","bindingToTerm","subject","nameTerm","addEventListener","_ref","_callee6","_event","_callee6$","_context6","log","stop","_x12","concat","abrupt","getPreferredLanguages","sent","trim","toLowerCase","startsWith","sort","appendChild","err","_refreshList2","_filterByName","bindings","_loadBindingsAndFilte2","_callee5","_callee5$","_context5","queryPublicDataByName","defaultPreferredLanguages","queryParams","t0","AUTOCOMPLETE_LIMIT","filterByLanguage","_loadBindingsAndFilte","_x10","_x11","_inputEventHHandler3","_callee4","_callee4$","_context4","_inputEventHHandler2","_x9","_clearList","children","removeChild","lastChild","_nameMatch","candidate","parts","split","j","word","indexOf","_cancelButtonHandler3","_callee3","_callee3$","_context3","permanent","parentNode","_cancelButtonHandler2","_x8","_acceptButtonHandler3","_callee2","_callee2$","_context2","_acceptButtonHandler2","_x7","_gotIt3","_callee","_callee$","_context","disbaled","_gotIt2","_x5","_x6","_finish","termType","objectURIBase","store","sym","_complain","message","errorRow","Error","errorMessageBlock","padding","styleConstants","textInputSize","textInputStyle","event","keyCode"],"sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"sourcesContent":["/* Autocomplete Picker: Create and edit data using public data\n**\n** As the data source is passed as a parameter, all kinds of APIa and query services can be used\n**\n*/\nimport * as debug from '../../../debug'\nimport * as style from '../../../style'\nimport styleConstants from '../../../styleConstants'\nimport * as widgets from '../../../widgets'\nimport { store } from 'solid-logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferredLanguages } from './language'\n\nconst AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\nconst AUTOCOMPLETE_ROWS = 20 // 20?\nconst AUTOCOMPLETE_ROWS_STRETCH = 40\n\n/*\nAutocomplete happens in 6 phases:\n 1. The search string is too small to bother\n 2. The search string is big enough, and we have not loaded the array\n 3. The search string is big enough, and we have loaded array up to the limit\n Display them and wait for more user input\n 4. The search string is big enough, and we have loaded array NOT to the limit\n but including all matches. No more fetches.\n If user gets more precise, wait for them to select one - or reduce to a single\n 5. Single one selected. Optionally waiting for accept button to be pressed, OR can change string and go to 5 or 2\n 6. Locked with a value. Press 'edit' button to return to 5\n*/\n\nexport type AutocompleteDecoration = {\n acceptButton?: HTMLElement,\n cancelButton: HTMLElement, // Must have cancel button\n editButton?: HTMLElement,\n deleteButton?: HTMLElement\n}\nexport type AutocompleteOptions = {\n targetClass?: NamedNode,\n currentObject?: NamedNode,\n currentName?: Literal,\n queryParams: QueryParameters,\n size?: number,\n permanent?: boolean\n}\n\ninterface Callback1 {\n (_subject: NamedNode, _name: Literal): any;\n}\n\nexport function setVisible (element:HTMLElement, visible:boolean) {\n element.style.display = visible ? '' : 'none' // Do not use visibility, it holds the real estate\n}\n\n// The core of the autocomplete UI\nexport async function renderAutoComplete (dom: HTMLDocument,\n acOptions:AutocompleteOptions,\n decoration: AutocompleteDecoration,\n callback: Callback1) {\n function complain (message) {\n const errorRow = table.appendChild(dom.createElement('tr'))\n debug.log(message)\n const err = new Error(message)\n errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'))\n // errorMessageBlock will log the stack to the console\n style.setStyle(errorRow, 'autocompleteRowStyle')\n errorRow.style.padding = '1em'\n }\n\n function finish (object, name) {\n debug.log('Auto complete: finish! ' + object)\n if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {\n object = store.sym(acOptions.queryParams.objectURIBase.value + object.value)\n }\n // remove(decoration.cancelButton)\n // remove(decoration.acceptButton)\n // remove(div)\n clearList()\n callback(object, name)\n }\n async function gotIt (object:NamedNode | Literal, name: Literal) {\n if (decoration.acceptButton) {\n (decoration.acceptButton as any).disbaled = false\n setVisible(decoration.acceptButton, true) // now wait for confirmation\n searchInput.value = name.value // complete it\n foundName = name\n foundObject = object\n debug.log('Auto complete: name: ' + name)\n debug.log('Auto complete: waiting for accept ' + object)\n clearList() // This may be an option - nice and clean but does not allow change of mind\n return\n }\n setVisible(decoration.cancelButton, true)\n finish(object, name)\n }\n\n async function acceptButtonHandler (_event) {\n if (foundName && searchInput.value === foundName.value) { // still\n finish(foundObject, foundName)\n }\n }\n\n async function cancelButtonHandler (_event) {\n debug.log('Auto complete: Canceled by user! ')\n if (acOptions.permanent) {\n initialize()\n } else {\n if (div.parentNode) {\n div.parentNode.removeChild(div)\n }\n }\n }\n\n function nameMatch (filter:string, candidate: string):boolean {\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (candidate.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function clearList () {\n while (table.children.length > 1) {\n table.removeChild(table.lastChild as Node)\n }\n }\n\n async function inputEventHHandler (_event) {\n // console.log('@@ AC inputEventHHandler called')\n setVisible(decoration.cancelButton, true) // only allow cancel when there is something to cancel\n refreshList() /// @@ debounqce does not work with jest\n /*\n if (runningTimeout) {\n clearTimeout(runningTimeout)\n }\n runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)\n */\n }\n\n async function loadBindingsAndFilterByLanguage (filter, languagePrefs) {\n // console.log('@@ loadBindingsAndFilterByLanguage ' + filter)\n let bindings\n try {\n bindings = await queryPublicDataByName(filter, targetClass as any,\n languagePrefs || defaultPreferredLanguages, acOptions.queryParams)\n } catch (err) {\n complain('Error querying db of organizations: ' + err)\n inputEventHandlerLock = false\n return\n }\n loadedEnough = bindings.length < AUTOCOMPLETE_LIMIT\n if (loadedEnough) {\n lastFilter = filter\n } else {\n lastFilter = undefined\n }\n clearList()\n const slimmed = filterByLanguage(bindings, languagePrefs)\n return slimmed\n }\n\n function filterByName (filter, bindings) {\n return bindings.filter(binding => nameMatch(filter, binding.name.value))\n }\n\n async function refreshList () {\n // console.log('@@ refreshList called')\n function rowForBinding (binding) {\n const row = dom.createElement('tr')\n style.setStyle(row, 'autocompleteRowStyle')\n row.setAttribute('style', 'padding: 0.3em;')\n row.style.color = allDisplayed ? '#080' : '#088' // green means 'you should find it here'\n row.textContent = binding.name.value\n const object = bindingToTerm(binding.subject)\n const nameTerm = bindingToTerm(binding.name)\n row.addEventListener('click', async _event => {\n debug.log(' click row textContent: ' + row.textContent)\n debug.log(' click name: ' + nameTerm.value)\n if (object && nameTerm) {\n gotIt(object, nameTerm as Literal)\n }\n })\n return row\n } // rowForBinding\n function compareBindingsByName (self, other) {\n return other.name.value > self.name.value\n ? 1\n : other.name.name < self.name.value ? -1 : 0\n }\n\n if (inputEventHandlerLock) {\n debug.log(`Ignoring \"${searchInput.value}\" because of lock `)\n return\n }\n debug.log(`Setting lock at \"${searchInput.value}\"`)\n\n inputEventHandlerLock = true\n const languagePrefs = await getPreferredLanguages()\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length < AUTOCOMPLETE_THRESHOLD) { // too small\n clearList()\n // candidatesLoaded = false\n numberOfRows = AUTOCOMPLETE_ROWS\n } else {\n if (!allDisplayed || !lastFilter || !filter.startsWith(lastFilter)) {\n debug.log(` Querying database at \"${filter}\" cf last \"${lastFilter}\".`)\n lastBindings = await loadBindingsAndFilterByLanguage(filter, languagePrefs) // freesh query\n }\n // Trim table as search gets tighter:\n const slimmed = filterByName(filter, lastBindings)\n if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {\n numberOfRows = slimmed.length // stretch if it means we get all items\n }\n allDisplayed = loadedEnough && slimmed.length <= numberOfRows\n debug.log(` Filter:\"${filter}\" lastBindings: ${lastBindings.length}, slimmed to ${slimmed.length}; rows: ${numberOfRows}, Enough? ${loadedEnough}, All displayed? ${allDisplayed}`)\n\n const displayable = slimmed.slice(0, numberOfRows)\n\n displayable.sort(compareBindingsByName)\n clearList()\n for (const binding of displayable) {\n table.appendChild(rowForBinding(binding))\n }\n if (slimmed.length === 1) {\n gotIt(bindingToTerm(slimmed[0].subject), bindingToTerm(slimmed[0].name) as Literal)\n }\n } // else\n inputEventHandlerLock = false\n } // refreshList\n\n function initialize () {\n if (acOptions.currentObject) { // If have existing value then jump into the endgame of the autocomplete\n searchInput.value = acOptions.currentName ? acOptions.currentName.value : '??? wot no name for ' + acOptions.currentObject\n foundName = acOptions.currentName\n lastFilter = acOptions.currentName ? acOptions.currentName.value : undefined\n foundObject = acOptions.currentObject\n } else {\n searchInput.value = ''\n lastFilter = undefined\n foundObject = undefined\n }\n if (decoration.deleteButton) {\n setVisible(decoration.deleteButton, !!acOptions.currentObject)\n }\n\n if (decoration.acceptButton) {\n setVisible(decoration.acceptButton, false) // hide until input complete\n }\n if (decoration.editButton) {\n setVisible(decoration.editButton, true)\n }\n if (decoration.cancelButton) {\n setVisible(decoration.cancelButton, false) // only allow cancel when there is something to cancel\n }\n inputEventHandlerLock = false\n clearList()\n } // initialiize\n\n // const queryParams: QueryParameters = acOptions.queryParams\n const targetClass = acOptions.targetClass\n if (!targetClass) throw new Error('renderAutoComplete: missing targetClass')\n // console.log(`renderAutoComplete: targetClass=${targetClass}` )\n if (decoration.acceptButton) {\n decoration.acceptButton.addEventListener('click', acceptButtonHandler, false)\n }\n if (decoration.cancelButton) {\n decoration.cancelButton.addEventListener('click', cancelButtonHandler, false)\n }\n\n // var candidatesLoaded = false\n let lastBindings\n let loadedEnough = false\n let inputEventHandlerLock = false\n let allDisplayed = false\n let lastFilter = undefined as (string | undefined)\n let numberOfRows = AUTOCOMPLETE_ROWS // this gets slimmed down\n const div = dom.createElement('div')\n let foundName = undefined as (Literal | undefined)// once found accepted string must match this\n let foundObject = undefined as (NamedNode | Literal | undefined)\n const table = div.appendChild(dom.createElement('table'))\n table.setAttribute('data-testid', 'autocomplete-table')\n table.setAttribute('style', 'max-width: 30em; margin: 0.5em;')\n const head = table.appendChild(dom.createElement('tr'))\n style.setStyle(head, 'autocompleteRowStyle') // textInputStyle or\n const cell = head.appendChild(dom.createElement('td'))\n const searchInput = cell.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n\n initialize()\n\n const size = acOptions.size || styleConstants.textInputSize || 20\n searchInput.setAttribute('size', size)\n searchInput.setAttribute('data-testid', 'autocomplete-input')\n\n const searchInputStyle = style.textInputStyle || // searchInputStyle ?\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em' // @\n searchInput.setAttribute('style', searchInputStyle)\n searchInput.addEventListener('keyup', function (event) {\n if (event.keyCode === 13) {\n acceptButtonHandler(event)\n }\n }, false)\n\n searchInput.addEventListener('input', inputEventHHandler)\n // console.log('@@ renderAutoComplete returns ' + div.innerHTML)\n return div\n} // renderAutoComplete\n\n// ENDS\n"],"mappings":"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","ignoreList":[]}
@@ -50,7 +50,7 @@ function getPreferredLanguagesFor(_x) {
50
50
  * Either from solid preferences or browser preferences or default
51
51
  */
52
52
  function _getPreferredLanguagesFor() {
53
- _getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(person) {
53
+ _getPreferredLanguagesFor = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(person) {
54
54
  var _store$fetcher;
55
55
  var doc, list, languageCodeArray;
56
56
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -106,7 +106,7 @@ function getPreferredLanguages() {
106
106
  * preferred language version
107
107
  */
108
108
  function _getPreferredLanguages() {
109
- _getPreferredLanguages = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
109
+ _getPreferredLanguages = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
110
110
  var me, solidLanguagePrefs;
111
111
  return _regenerator["default"].wrap(function _callee2$(_context2) {
112
112
  while (1) switch (_context2.prev = _context2.next) {
@@ -1 +1 @@
1
- {"version":3,"file":"language.js","names":["debug","_interopRequireWildcard","require","_solidLogic","ns","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","languageCodeURIBase","exports","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","_x","_getPreferredLanguagesFor","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","person","_store$fetcher","doc","list","languageCodeArray","wrap","_callee$","_context","prev","next","store","fetcher","load","any","schema","abrupt","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","stop","getPreferredLanguages","_getPreferredLanguages","_callee2","me","solidLanguagePrefs","_callee2$","_context2","authn","currentUser","sent","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","sortMe","name","index","indexOf","pair","sort"],"sources":["../../../../src/widgets/forms/autocomplete/language.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 * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"language.js","names":["debug","_interopRequireWildcard","require","_solidLogic","ns","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","languageCodeURIBase","exports","defaultPreferredLanguages","addDefaults","array","concat","filter","code","includes","getPreferredLanguagesFor","_x","_getPreferredLanguagesFor","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","person","_store$fetcher","doc","list","languageCodeArray","wrap","_callee$","_context","prev","next","store","fetcher","load","any","schema","abrupt","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","stop","getPreferredLanguages","_getPreferredLanguages","_callee2","me","solidLanguagePrefs","_callee2$","_context2","authn","currentUser","sent","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","sortMe","name","index","indexOf","pair","sort"],"sources":["../../../../src/widgets/forms/autocomplete/language.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 * as debug from '../../../debug'\n// import * as logic from '../index'\n// import { authn } from '../../../authn/index'\nimport { authn, store } from 'solid-logic'\nimport * as ns from '../../../ns'\nimport { Collection, NamedNode, Node } from 'rdflib'\n// import { Binding } from '../widgets/forms/autocomplete/publicData'\n// import { nativeNameForLanguageCode, englishNameForLanguageCode } from './nativeNameForLanguageCode'\n\n// const { currentUser } = logic.authn\n\nexport interface Binding {\n subject: Node;\n name?: Node\n location?: Node\n coordinates?: Node\n}\n\nexport const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/' /// @@ unsupported on the web (2021)\n\nexport const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanguagesFor (person: NamedNode) {\n const doc = person.doc()\n await store.fetcher?.load(doc)\n const list = store.any(person, ns.schema('knowsLanguage'), null, doc) as Collection | undefined\n if (!list) {\n // console.log(`User ${person} has not set their languages in their profile.`)\n return defaultPreferredLanguages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = store.any(item as any, ns.solid('publicId'), null, doc)\n if (!lang) {\n console.warn('getPreferredLanguages: No publiID of language.')\n return\n }\n if (!lang.value.startsWith(languageCodeURIBase)) {\n console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`)\n return\n }\n const code = lang.value.slice(languageCodeURIBase.length)\n languageCodeArray.push(code)\n })\n\n if (languageCodeArray.length > 0) {\n console.log(` User knows languages with codes: \"${languageCodeArray.join(',')}\"`)\n return addDefaults(languageCodeArray)\n }\n return null\n}\n/* Get the preferred langauges for the user\n *\n * Either from solid preferences or browser preferences or default\n */\nexport async function getPreferredLanguages () {\n // In future: cache in the login session for speed, but get from profile and private prefs\n // We append the defaults so if someone's first choice is not available they don't get something very obscure\n // See https://github.com/solidos/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanguagesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]))\n }\n if (navigator.language) {\n return addDefaults([navigator.language.split('-')[0]])\n }\n }\n return defaultPreferredLanguages\n}\n\n/* From an array of bindings with a names for each row,\n * remove dupliacte names for the same thing, leaving the user's\n * preferred language version\n*/\n\nexport function filterByLanguage (bindings, languagePrefs) {\n const uris = {}\n bindings.forEach(binding => { // Organize names by their subject\n const uri = binding.subject.value\n uris[uri] = uris[uri] || []\n uris[uri].push(binding)\n })\n\n const languagePrefs2 = languagePrefs || defaultPreferredLanguages\n languagePrefs2.reverse() // Preferred last\n\n const slimmed = ([] as Array<Binding>)\n // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n const lang = binding.name['xml:lang']\n const index = languagePrefs2.indexOf(lang)\n const pair = [index, binding]\n // console.log(` @@ lang: ${lang}, index: ${index}`)\n return pair\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\n // console.debug('@@ sortMe:', sortMe)\n slimmed.push((sortMe[0][1] as any))\n } // map u\n debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`)\n return slimmed\n}\n"],"mappings":"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","ignoreList":[]}
@@ -248,7 +248,7 @@ function queryESCODataByName(_x, _x2, _x3) {
248
248
  * This is aptured in https://github.com/solidos/solid-ui/issues/403
249
249
  */
250
250
  function _queryESCODataByName() {
251
- _queryESCODataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(filter, theClass, queryTarget) {
251
+ _queryESCODataByName = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(filter, theClass, queryTarget) {
252
252
  var _store$fetcher;
253
253
  var limit, queryURI, response, text, json;
254
254
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -302,7 +302,7 @@ function queryPublicDataByName(_x4, _x5, _x6, _x7) {
302
302
  /* Query a database using SPARQL SELECT
303
303
  */
304
304
  function _queryPublicDataByName() {
305
- _queryPublicDataByName = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(filter, theClass, languages, queryTarget) {
305
+ _queryPublicDataByName = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(filter, theClass, languages, queryTarget) {
306
306
  var substituteStrings, languagePrefs, language, sparql, queryURI, response, _store$fetcher2, text, text2, json, bindings;
307
307
  return _regenerator["default"].wrap(function _callee2$(_context2) {
308
308
  while (1) switch (_context2.prev = _context2.next) {
@@ -402,7 +402,7 @@ function queryPublicDataSelect(_x8, _x9) {
402
402
  /* Load from a database using SPARQL CONSTRUCT
403
403
  */
404
404
  function _queryPublicDataSelect() {
405
- _queryPublicDataSelect = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(sparql, queryTarget) {
405
+ _queryPublicDataSelect = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(sparql, queryTarget) {
406
406
  var _store$fetcher3;
407
407
  var myUrlWithParams, queryURI, headers, options, response, text, text2, json, bindings;
408
408
  return _regenerator["default"].wrap(function _callee3$(_context3) {
@@ -453,7 +453,7 @@ function queryPublicDataConstruct(_x10, _x11, _x12) {
453
453
  return _queryPublicDataConstruct.apply(this, arguments);
454
454
  }
455
455
  function _queryPublicDataConstruct() {
456
- _queryPublicDataConstruct = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(sparql, pubicId, queryTarget) {
456
+ _queryPublicDataConstruct = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(sparql, pubicId, queryTarget) {
457
457
  var _store$fetcher4;
458
458
  var myUrlWithParams, queryURI, headers, options, response, text, report;
459
459
  return _regenerator["default"].wrap(function _callee4$(_context4) {
@@ -503,7 +503,7 @@ function loadPublicDataThing(_x13, _x14, _x15) {
503
503
  return _loadPublicDataThing.apply(this, arguments);
504
504
  }
505
505
  function _loadPublicDataThing() {
506
- _loadPublicDataThing = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(kb, subject, publicDataID) {
506
+ _loadPublicDataThing = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5(kb, subject, publicDataID) {
507
507
  var iDToFetch, headers;
508
508
  return _regenerator["default"].wrap(function _callee5$(_context5) {
509
509
  while (1) switch (_context5.prev = _context5.next) {
@@ -543,7 +543,7 @@ function getWikidataDetails(_x16, _x17, _x18) {
543
543
  return _getWikidataDetails.apply(this, arguments);
544
544
  }
545
545
  function _getWikidataDetails() {
546
- _getWikidataDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(kb, solidSubject, publicDataID) {
546
+ _getWikidataDetails = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6(kb, solidSubject, publicDataID) {
547
547
  var subjRegexp, sparql;
548
548
  return _regenerator["default"].wrap(function _callee6$(_context6) {
549
549
  while (1) switch (_context6.prev = _context6.next) {
@@ -566,7 +566,7 @@ function getWikidataDetailsOld(_x19, _x20, _x21) {
566
566
  return _getWikidataDetailsOld.apply(this, arguments);
567
567
  }
568
568
  function _getWikidataDetailsOld() {
569
- _getWikidataDetailsOld = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(kb, solidSubject, publicDataID) {
569
+ _getWikidataDetailsOld = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7(kb, solidSubject, publicDataID) {
570
570
  var sparql, bindings;
571
571
  return _regenerator["default"].wrap(function _callee7$(_context7) {
572
572
  while (1) switch (_context7.prev = _context7.next) {
@@ -589,7 +589,7 @@ function getWikidataLocation(_x22, _x23, _x24) {
589
589
  return _getWikidataLocation.apply(this, arguments);
590
590
  }
591
591
  function _getWikidataLocation() {
592
- _getWikidataLocation = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(kb, solidSubject, publicDataID) {
592
+ _getWikidataLocation = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8(kb, solidSubject, publicDataID) {
593
593
  var sparql, bindings;
594
594
  return _regenerator["default"].wrap(function _callee8$(_context8) {
595
595
  while (1) switch (_context8.prev = _context8.next) {
@@ -614,7 +614,7 @@ function getDbpediaDetails(_x25, _x26, _x27) {
614
614
  return _getDbpediaDetails.apply(this, arguments);
615
615
  }
616
616
  function _getDbpediaDetails() {
617
- _getDbpediaDetails = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(kb, solidSubject, publicDataID) {
617
+ _getDbpediaDetails = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9(kb, solidSubject, publicDataID) {
618
618
  var sparql, bindings;
619
619
  return _regenerator["default"].wrap(function _callee9$(_context9) {
620
620
  while (1) switch (_context9.prev = _context9.next) {
@@ -1 +1 @@
1
- {"version":3,"file":"publicData.js","names":["_rdflib","require","_solidLogic","debug","_interopRequireWildcard","ns","_language","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AUTOCOMPLETE_LIMIT","exports","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","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","concat","loadFromBindings","kb","solidSubject","bindings","doc","predMap","arguments","length","undefined","results","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","_loop","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","_x","_x2","_x3","_queryESCODataByName","apply","_asyncToGenerator2","_regenerator","mark","_callee","filter","theClass","queryTarget","_store$fetcher","queryURI","response","text","wrap","_callee$","_context","prev","next","replace","toNT","fetcher","webOperation","sent","responseText","slice","abrupt","stop","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","_x4","_x5","_x6","_x7","_queryPublicDataByName","_callee2","languages","substituteStrings","languagePrefs","sparql","_store$fetcher2","text2","_callee2$","_context2","_substituteStrings","template","u1","getPreferredLanguages","t0","defaultPreferredLanguages","queryPublicDataSelect","t1","status","alert","_x8","_x9","_queryPublicDataSelect","_callee3","_store$fetcher3","myUrlWithParams","options","_callee3$","_context3","URL","searchParams","append","href","queryPublicDataConstruct","_x10","_x11","_x12","_queryPublicDataConstruct","_callee4","pubicId","_store$fetcher4","report","_callee4$","_context4","loadPublicDataThing","_x13","_x14","_x15","_loadPublicDataThing","_callee5","publicDataID","iDToFetch","_callee5$","_context5","startsWith","getDbpediaDetails","getWikidataDetails","load","_x16","_x17","_x18","_getWikidataDetails","_callee6","subjRegexp","_callee6$","_context6","getWikidataDetailsOld","_x19","_x20","_x21","_getWikidataDetailsOld","_callee7","_callee7$","_context7","getWikidataLocation","_x22","_x23","_x24","_getWikidataLocation","_callee8","_callee8$","_context8","_x25","_x26","_x27","_getDbpediaDetails","_callee9","_callee9$","_context9"],"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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","ignoreList":[]}
1
+ {"version":3,"file":"publicData.js","names":["_rdflib","require","_solidLogic","debug","_interopRequireWildcard","ns","_language","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AUTOCOMPLETE_LIMIT","exports","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","schema","variableNameToPredicateMap","targetClass","rdf","sealImage","shortName","foaf","subsidiary","city","vcard","state","country","homepage","lat","bindingToTerm","item","typ","type","toLowerCase","value","Literal","Error","concat","loadFromBindings","kb","solidSubject","bindings","doc","predMap","arguments","length","undefined","results","log","forEach","binding","key","result","combined","JSON","stringify","Set","add","_loop","values","parse","obj","language","datatype","warn","regexp","match","exec","float","xsd","latitude","longitude","pred","ESCOResultToBindings","json","_embedded","map","name","title","uri","subject","queryESCODataByName","_x","_x2","_x3","_queryESCODataByName","apply","_asyncToGenerator2","_regenerator","mark","_callee","filter","theClass","queryTarget","_store$fetcher","queryURI","response","text","wrap","_callee$","_context","prev","next","replace","toNT","fetcher","webOperation","sent","responseText","slice","abrupt","stop","fixWikidataJSON","str","syntaxProblem","indexOf","goodness","lastIndexOf","queryPublicDataByName","_x4","_x5","_x6","_x7","_queryPublicDataByName","_callee2","languages","substituteStrings","languagePrefs","sparql","_store$fetcher2","text2","_callee2$","_context2","_substituteStrings","template","u1","getPreferredLanguages","t0","defaultPreferredLanguages","queryPublicDataSelect","t1","status","alert","_x8","_x9","_queryPublicDataSelect","_callee3","_store$fetcher3","myUrlWithParams","options","_callee3$","_context3","URL","searchParams","append","href","queryPublicDataConstruct","_x10","_x11","_x12","_queryPublicDataConstruct","_callee4","pubicId","_store$fetcher4","report","_callee4$","_context4","loadPublicDataThing","_x13","_x14","_x15","_loadPublicDataThing","_callee5","publicDataID","iDToFetch","_callee5$","_context5","startsWith","getDbpediaDetails","getWikidataDetails","load","_x16","_x17","_x18","_getWikidataDetails","_callee6","subjRegexp","_callee6$","_context6","getWikidataDetailsOld","_x19","_x20","_x21","_getWikidataDetailsOld","_callee7","_callee7$","_context7","getWikidataLocation","_x22","_x23","_x24","_getWikidataLocation","_callee8","_callee8$","_context8","_x25","_x26","_x27","_getDbpediaDetails","_callee9","_callee9$","_context9"],"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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","ignoreList":[]}