solid-ui 2.4.9-alpha-6eabfbac → 2.4.9-beta

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 (249) hide show
  1. package/LICENSE.md +0 -0
  2. package/README.md +0 -0
  3. package/lib/acl/access-controller.d.ts +0 -0
  4. package/lib/acl/access-controller.d.ts.map +0 -0
  5. package/lib/acl/access-controller.js +0 -0
  6. package/lib/acl/access-controller.js.map +0 -0
  7. package/lib/acl/access-groups.d.ts +0 -0
  8. package/lib/acl/access-groups.d.ts.map +0 -0
  9. package/lib/acl/access-groups.js +0 -0
  10. package/lib/acl/access-groups.js.map +0 -0
  11. package/lib/acl/acl-control.d.ts +0 -0
  12. package/lib/acl/acl-control.d.ts.map +0 -0
  13. package/lib/acl/acl-control.js +0 -0
  14. package/lib/acl/acl-control.js.map +0 -0
  15. package/lib/acl/acl.d.ts +0 -0
  16. package/lib/acl/acl.d.ts.map +0 -0
  17. package/lib/acl/acl.js +0 -0
  18. package/lib/acl/acl.js.map +0 -0
  19. package/lib/acl/add-agent-buttons.d.ts +0 -0
  20. package/lib/acl/add-agent-buttons.d.ts.map +0 -0
  21. package/lib/acl/add-agent-buttons.js +0 -0
  22. package/lib/acl/add-agent-buttons.js.map +0 -0
  23. package/lib/acl/index.d.ts +0 -0
  24. package/lib/acl/index.d.ts.map +0 -0
  25. package/lib/acl/index.js +0 -0
  26. package/lib/acl/index.js.map +0 -0
  27. package/lib/acl/styles.d.ts +0 -0
  28. package/lib/acl/styles.d.ts.map +0 -0
  29. package/lib/acl/styles.js +0 -0
  30. package/lib/acl/styles.js.map +0 -0
  31. package/lib/acl/types.d.ts +0 -0
  32. package/lib/acl/types.d.ts.map +0 -0
  33. package/lib/acl/types.js +0 -0
  34. package/lib/acl/types.js.map +0 -0
  35. package/lib/authn/authSession.d.ts +0 -0
  36. package/lib/authn/authSession.d.ts.map +0 -0
  37. package/lib/authn/authSession.js +0 -0
  38. package/lib/authn/authSession.js.map +0 -0
  39. package/lib/authn/authn.d.ts +0 -0
  40. package/lib/authn/authn.d.ts.map +1 -1
  41. package/lib/authn/authn.js +20 -3
  42. package/lib/authn/authn.js.map +1 -1
  43. package/lib/authn/config-default.js +0 -0
  44. package/lib/authn/config-default.js.map +0 -0
  45. package/lib/authn/index.d.ts +0 -0
  46. package/lib/authn/index.d.ts.map +0 -0
  47. package/lib/authn/index.js +0 -0
  48. package/lib/authn/index.js.map +0 -0
  49. package/lib/authn/signup.js +0 -0
  50. package/lib/authn/signup.js.map +0 -0
  51. package/lib/authn/types.d.ts +0 -0
  52. package/lib/authn/types.d.ts.map +0 -0
  53. package/lib/authn/types.js +0 -0
  54. package/lib/authn/types.js.map +0 -0
  55. package/lib/chat/bookmarks.js +0 -0
  56. package/lib/chat/bookmarks.js.map +0 -0
  57. package/lib/chat/dateFolder.js +0 -0
  58. package/lib/chat/dateFolder.js.map +0 -0
  59. package/lib/chat/infinite.js +0 -0
  60. package/lib/chat/infinite.js.map +0 -0
  61. package/lib/chat/message.js +0 -0
  62. package/lib/chat/message.js.map +0 -0
  63. package/lib/chat/messageTools.js +0 -0
  64. package/lib/chat/messageTools.js.map +0 -0
  65. package/lib/chat/thread.js +0 -0
  66. package/lib/chat/thread.js.map +0 -0
  67. package/lib/create/create.d.ts +0 -0
  68. package/lib/create/create.d.ts.map +0 -0
  69. package/lib/create/create.js +0 -0
  70. package/lib/create/create.js.map +0 -0
  71. package/lib/create/index.d.ts +0 -0
  72. package/lib/create/index.d.ts.map +0 -0
  73. package/lib/create/index.js +0 -0
  74. package/lib/create/index.js.map +0 -0
  75. package/lib/create/types.d.ts +0 -0
  76. package/lib/create/types.d.ts.map +0 -0
  77. package/lib/create/types.js +0 -0
  78. package/lib/create/types.js.map +0 -0
  79. package/lib/debug.d.ts +0 -0
  80. package/lib/debug.d.ts.map +0 -0
  81. package/lib/debug.js +0 -0
  82. package/lib/debug.js.map +0 -0
  83. package/lib/folders.js +0 -0
  84. package/lib/folders.js.map +0 -0
  85. package/lib/header/empty-profile.d.ts +0 -0
  86. package/lib/header/empty-profile.d.ts.map +0 -0
  87. package/lib/header/empty-profile.js +0 -0
  88. package/lib/header/empty-profile.js.map +0 -0
  89. package/lib/header/headerHelpers.d.ts +0 -0
  90. package/lib/header/headerHelpers.d.ts.map +0 -0
  91. package/lib/header/headerHelpers.js +0 -0
  92. package/lib/header/headerHelpers.js.map +0 -0
  93. package/lib/header/index.d.ts +0 -0
  94. package/lib/header/index.d.ts.map +0 -0
  95. package/lib/header/index.js +0 -0
  96. package/lib/header/index.js.map +0 -0
  97. package/lib/header/styleMap.d.ts +0 -0
  98. package/lib/header/styleMap.d.ts.map +0 -0
  99. package/lib/header/styleMap.js +0 -0
  100. package/lib/header/styleMap.js.map +0 -0
  101. package/lib/iconBase.d.ts +0 -0
  102. package/lib/iconBase.d.ts.map +0 -0
  103. package/lib/iconBase.js +0 -0
  104. package/lib/iconBase.js.map +0 -0
  105. package/lib/icons/solid_logo.d.ts +0 -0
  106. package/lib/icons/solid_logo.d.ts.map +0 -0
  107. package/lib/icons/solid_logo.js +0 -0
  108. package/lib/icons/solid_logo.js.map +0 -0
  109. package/lib/index.d.ts +0 -0
  110. package/lib/index.d.ts.map +0 -0
  111. package/lib/index.js +0 -0
  112. package/lib/index.js.map +0 -0
  113. package/lib/jss/index.d.ts +0 -0
  114. package/lib/jss/index.d.ts.map +0 -0
  115. package/lib/jss/index.js +0 -0
  116. package/lib/jss/index.js.map +0 -0
  117. package/lib/log.d.ts +0 -0
  118. package/lib/log.d.ts.map +0 -0
  119. package/lib/log.js +0 -0
  120. package/lib/log.js.map +0 -0
  121. package/lib/logic.d.ts +0 -0
  122. package/lib/logic.d.ts.map +0 -0
  123. package/lib/logic.js +0 -0
  124. package/lib/logic.js.map +0 -0
  125. package/lib/matrix/index.d.ts +0 -0
  126. package/lib/matrix/index.d.ts.map +0 -0
  127. package/lib/matrix/index.js +0 -0
  128. package/lib/matrix/index.js.map +0 -0
  129. package/lib/matrix/matrix.d.ts +0 -0
  130. package/lib/matrix/matrix.d.ts.map +0 -0
  131. package/lib/matrix/matrix.js +0 -0
  132. package/lib/matrix/matrix.js.map +0 -0
  133. package/lib/matrix/types.d.ts +0 -0
  134. package/lib/matrix/types.d.ts.map +0 -0
  135. package/lib/matrix/types.js +0 -0
  136. package/lib/matrix/types.js.map +0 -0
  137. package/lib/media/index.d.ts +0 -0
  138. package/lib/media/index.d.ts.map +0 -0
  139. package/lib/media/index.js +0 -0
  140. package/lib/media/index.js.map +0 -0
  141. package/lib/media/media-capture.d.ts +0 -0
  142. package/lib/media/media-capture.d.ts.map +0 -0
  143. package/lib/media/media-capture.js +0 -0
  144. package/lib/media/media-capture.js.map +0 -0
  145. package/lib/messageArea.js +0 -0
  146. package/lib/messageArea.js.map +0 -0
  147. package/lib/noun_Camera_1618446_000000.js +0 -0
  148. package/lib/noun_Camera_1618446_000000.js.map +0 -0
  149. package/lib/ns.js +0 -0
  150. package/lib/ns.js.map +0 -0
  151. package/lib/pad.d.ts +0 -0
  152. package/lib/pad.d.ts.map +0 -0
  153. package/lib/pad.js +0 -0
  154. package/lib/pad.js.map +0 -0
  155. package/lib/participation.d.ts +0 -0
  156. package/lib/participation.d.ts.map +0 -0
  157. package/lib/participation.js +0 -0
  158. package/lib/participation.js.map +0 -0
  159. package/lib/preferences.js +0 -0
  160. package/lib/preferences.js.map +0 -0
  161. package/lib/stories/decorators.js +0 -0
  162. package/lib/stories/decorators.js.map +0 -0
  163. package/lib/style.js +3 -1
  164. package/lib/style.js.map +1 -1
  165. package/lib/table.js +0 -0
  166. package/lib/table.js.map +0 -0
  167. package/lib/tabs.d.ts +0 -0
  168. package/lib/tabs.d.ts.map +0 -0
  169. package/lib/tabs.js +0 -0
  170. package/lib/tabs.js.map +0 -0
  171. package/lib/typings.d.js +0 -0
  172. package/lib/typings.d.js.map +0 -0
  173. package/lib/utils/index.js +0 -0
  174. package/lib/utils/index.js.map +0 -0
  175. package/lib/utils/label.d.ts +0 -0
  176. package/lib/utils/label.d.ts.map +0 -0
  177. package/lib/utils/label.js +0 -0
  178. package/lib/utils/label.js.map +0 -0
  179. package/lib/versionInfo.d.ts +11 -9
  180. package/lib/versionInfo.d.ts.map +1 -1
  181. package/lib/versionInfo.js +16 -14
  182. package/lib/versionInfo.js.map +1 -1
  183. package/lib/webpack-bundle.js +45862 -46510
  184. package/lib/webpack-bundle.js.map +1 -1
  185. package/lib/widgets/buttons/iconLinks.d.ts +0 -0
  186. package/lib/widgets/buttons/iconLinks.d.ts.map +0 -0
  187. package/lib/widgets/buttons/iconLinks.js +0 -0
  188. package/lib/widgets/buttons/iconLinks.js.map +0 -0
  189. package/lib/widgets/buttons.d.ts +0 -0
  190. package/lib/widgets/buttons.d.ts.map +0 -0
  191. package/lib/widgets/buttons.js +0 -0
  192. package/lib/widgets/buttons.js.map +0 -0
  193. package/lib/widgets/dragAndDrop.js +0 -0
  194. package/lib/widgets/dragAndDrop.js.map +0 -0
  195. package/lib/widgets/error.d.ts +0 -0
  196. package/lib/widgets/error.d.ts.map +0 -0
  197. package/lib/widgets/error.js +0 -0
  198. package/lib/widgets/error.js.map +0 -0
  199. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  200. package/lib/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  201. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -0
  202. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -0
  203. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  204. package/lib/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  205. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -0
  206. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -0
  207. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  208. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  209. package/lib/widgets/forms/autocomplete/autocompletePicker.js +1 -1
  210. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  211. package/lib/widgets/forms/autocomplete/language.d.ts +3 -4
  212. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  213. package/lib/widgets/forms/autocomplete/language.js +20 -34
  214. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  215. package/lib/widgets/forms/autocomplete/publicData.d.ts +0 -0
  216. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  217. package/lib/widgets/forms/autocomplete/publicData.js +1 -1
  218. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  219. package/lib/widgets/forms/basic.d.ts +2 -1
  220. package/lib/widgets/forms/basic.d.ts.map +1 -1
  221. package/lib/widgets/forms/basic.js +40 -10
  222. package/lib/widgets/forms/basic.js.map +1 -1
  223. package/lib/widgets/forms/comment.d.ts +0 -0
  224. package/lib/widgets/forms/comment.d.ts.map +0 -0
  225. package/lib/widgets/forms/comment.js +0 -0
  226. package/lib/widgets/forms/comment.js.map +0 -0
  227. package/lib/widgets/forms/fieldFunction.d.ts +0 -0
  228. package/lib/widgets/forms/fieldFunction.d.ts.map +0 -0
  229. package/lib/widgets/forms/fieldFunction.js +0 -0
  230. package/lib/widgets/forms/fieldFunction.js.map +0 -0
  231. package/lib/widgets/forms/fieldParams.d.ts +0 -0
  232. package/lib/widgets/forms/fieldParams.d.ts.map +0 -0
  233. package/lib/widgets/forms/fieldParams.js +2 -1
  234. package/lib/widgets/forms/fieldParams.js.map +1 -1
  235. package/lib/widgets/forms/formStyle.d.ts +0 -0
  236. package/lib/widgets/forms/formStyle.d.ts.map +0 -0
  237. package/lib/widgets/forms/formStyle.js +0 -0
  238. package/lib/widgets/forms/formStyle.js.map +0 -0
  239. package/lib/widgets/forms.js +49 -33
  240. package/lib/widgets/forms.js.map +1 -1
  241. package/lib/widgets/index.js +0 -0
  242. package/lib/widgets/index.js.map +0 -0
  243. package/lib/widgets/peoplePicker.js +0 -0
  244. package/lib/widgets/peoplePicker.js.map +0 -0
  245. package/lib/widgets/widgetHelpers.d.ts +0 -0
  246. package/lib/widgets/widgetHelpers.d.ts.map +0 -0
  247. package/lib/widgets/widgetHelpers.js +0 -0
  248. package/lib/widgets/widgetHelpers.js.map +0 -0
  249. package/package.json +4 -4
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -261,7 +261,7 @@ function _renderAutoComplete() {
261
261
  case 0:
262
262
  _context5.prev = 0;
263
263
  _context5.next = 3;
264
- return (0, _publicData.queryPublicDataByName)(filter, targetClass, languagePrefs || _language.defaultPreferredLangages, acOptions.queryParams);
264
+ return (0, _publicData.queryPublicDataByName)(filter, targetClass, languagePrefs || _language.defaultPreferedLangages, acOptions.queryParams);
265
265
 
266
266
  case 3:
267
267
  bindings = _context5.sent;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"names":["AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","element","visible","style","display","renderAutoComplete","dom","acOptions","decoration","callback","complain","finish","gotIt","acceptButtonHandler","cancelButtonHandler","nameMatch","clearList","inputEventHHandler","loadBindingsAndFilterByLanguage","filterByName","refreshList","initialize","currentObject","searchInput","value","currentName","foundName","lastFilter","undefined","foundObject","deleteButton","acceptButton","editButton","cancelButton","inputEventHandlerLock","rowForBinding","compareBindingsByName","self","other","name","binding","row","createElement","setStyle","setAttribute","color","allDisplayed","textContent","object","subject","nameTerm","addEventListener","_event","debug","log","languagePrefs","filter","trim","toLowerCase","length","numberOfRows","startsWith","lastBindings","slimmed","loadedEnough","displayable","slice","sort","table","appendChild","bindings","targetClass","defaultPreferredLangages","queryParams","AUTOCOMPLETE_LIMIT","children","removeChild","lastChild","candidate","parts","split","j","word","indexOf","permanent","div","parentNode","disbaled","termType","objectURIBase","kb","sym","message","errorRow","err","Error","widgets","errorMessageBlock","padding","head","cell","size","textInputSize","searchInputStyle","textInputStyle","event","keyCode"],"mappings":"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","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 * as widgets from '../../../widgets'\nimport { kb } from '../../../logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferredLangages } 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 = kb.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 || defaultPreferredLangages, 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 || style.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"],"file":"autocompletePicker.js"}
1
+ {"version":3,"sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"names":["AUTOCOMPLETE_THRESHOLD","AUTOCOMPLETE_ROWS","AUTOCOMPLETE_ROWS_STRETCH","setVisible","element","visible","style","display","renderAutoComplete","dom","acOptions","decoration","callback","complain","finish","gotIt","acceptButtonHandler","cancelButtonHandler","nameMatch","clearList","inputEventHHandler","loadBindingsAndFilterByLanguage","filterByName","refreshList","initialize","currentObject","searchInput","value","currentName","foundName","lastFilter","undefined","foundObject","deleteButton","acceptButton","editButton","cancelButton","inputEventHandlerLock","rowForBinding","compareBindingsByName","self","other","name","binding","row","createElement","setStyle","setAttribute","color","allDisplayed","textContent","object","subject","nameTerm","addEventListener","_event","debug","log","languagePrefs","filter","trim","toLowerCase","length","numberOfRows","startsWith","lastBindings","slimmed","loadedEnough","displayable","slice","sort","table","appendChild","bindings","targetClass","defaultPreferedLangages","queryParams","AUTOCOMPLETE_LIMIT","children","removeChild","lastChild","candidate","parts","split","j","word","indexOf","permanent","div","parentNode","disbaled","termType","objectURIBase","kb","sym","message","errorRow","err","Error","widgets","errorMessageBlock","padding","head","cell","size","textInputSize","searchInputStyle","textInputStyle","event","keyCode"],"mappings":"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","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 * as widgets from '../../../widgets'\nimport { kb } from '../../../logic'\nimport { NamedNode, Literal } from 'rdflib'\nimport { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT, QueryParameters } from './publicData'\nimport { filterByLanguage, getPreferredLanguages, defaultPreferedLangages } 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 = kb.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 || defaultPreferedLangages, 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 || style.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"],"file":"autocompletePicker.js"}
@@ -6,9 +6,8 @@ export interface Binding {
6
6
  coordinates?: Node;
7
7
  }
8
8
  export declare const languageCodeURIBase = "https://www.w3.org/ns/iana/language-code/";
9
- export declare const defaultPreferredLangages: string[];
10
- export declare function addDefaults(array: any): any;
11
- export declare function getPreferredLanagugesFor(person: NamedNode): Promise<any>;
12
- export declare function getPreferredLanguages(): Promise<any>;
9
+ export declare const defaultPreferedLangages: string[];
10
+ export declare function getPreferredLanagugesFor(person: NamedNode): Promise<string[] | null>;
11
+ export declare function getPreferredLanguages(): Promise<string[]>;
13
12
  export declare function filterByLanguage(bindings: any, languagePrefs: any): Binding[];
14
13
  //# sourceMappingURL=language.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAOpD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,eAAO,MAAM,mBAAmB,8CAA8C,CAAA;AAE9E,eAAO,MAAM,wBAAwB,UAAiC,CAAA;AAEtE,wBAAgB,WAAW,CAAE,KAAK,KAAA,OAGjC;AAED,wBAAsB,wBAAwB,CAAE,MAAM,EAAE,SAAS,gBA6BhE;AAKD,wBAAsB,qBAAqB,iBAkB1C;AAOD,wBAAgB,gBAAgB,CAAE,QAAQ,KAAA,EAAE,aAAa,KAAA,aA6BxD"}
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":[],"mappings":"AAUA,OAAO,EAAc,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAOpD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,WAAW,CAAC,EAAE,IAAI,CAAA;CACnB;AAED,eAAO,MAAM,mBAAmB,8CAA8C,CAAA;AAE9E,eAAO,MAAM,uBAAuB,UAA2B,CAAA;AAE/D,wBAAsB,wBAAwB,CAAE,MAAM,EAAE,SAAS,4BA2BhE;AAKD,wBAAsB,qBAAqB,sBAgB1C;AAOD,wBAAgB,gBAAgB,CAAE,QAAQ,KAAA,EAAE,aAAa,KAAA,aAuBxD"}
@@ -7,11 +7,10 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.addDefaults = addDefaults;
11
10
  exports.getPreferredLanagugesFor = getPreferredLanagugesFor;
12
11
  exports.getPreferredLanguages = getPreferredLanguages;
13
12
  exports.filterByLanguage = filterByLanguage;
14
- exports.defaultPreferredLangages = exports.languageCodeURIBase = void 0;
13
+ exports.defaultPreferedLangages = exports.languageCodeURIBase = void 0;
15
14
 
16
15
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
16
 
@@ -42,15 +41,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
42
41
  var languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/'; /// @@ unsupported on the web (2021)
43
42
 
44
43
  exports.languageCodeURIBase = languageCodeURIBase;
45
- var defaultPreferredLangages = ['en', 'fr', 'de', 'it', 'ar'];
46
- exports.defaultPreferredLangages = defaultPreferredLangages;
47
-
48
- function addDefaults(array) {
49
- if (!array) array = [];
50
- return array.concat(defaultPreferredLangages.filter(function (code) {
51
- return !array.includes(code);
52
- }));
53
- }
44
+ var defaultPreferedLangages = ['en', 'fr', 'de', 'it'];
45
+ exports.defaultPreferedLangages = defaultPreferedLangages;
54
46
 
55
47
  function getPreferredLanagugesFor(_x) {
56
48
  return _getPreferredLanagugesFor.apply(this, arguments);
@@ -63,30 +55,29 @@ function getPreferredLanagugesFor(_x) {
63
55
 
64
56
  function _getPreferredLanagugesFor() {
65
57
  _getPreferredLanagugesFor = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(person) {
66
- var doc, list, languageCodeArray;
58
+ var list, languageCodeArray;
67
59
  return _regenerator["default"].wrap(function _callee$(_context) {
68
60
  while (1) {
69
61
  switch (_context.prev = _context.next) {
70
62
  case 0:
71
- doc = person.doc();
72
- _context.next = 3;
73
- return _logic.kb.fetcher.load(doc);
63
+ _context.next = 2;
64
+ return _logic.kb.fetcher.load(person.doc());
74
65
 
75
- case 3:
76
- list = _logic.kb.any(person, ns.schema('knowsLanguage'), null, doc);
66
+ case 2:
67
+ list = _logic.kb.any(person, ns.schema('knowsLanguage'), null, person.doc());
77
68
 
78
69
  if (list) {
79
70
  _context.next = 6;
80
71
  break;
81
72
  }
82
73
 
83
- return _context.abrupt("return", defaultPreferredLangages);
74
+ console.log("User ".concat(person, " has not set their languages in their profile."));
75
+ return _context.abrupt("return", null);
84
76
 
85
77
  case 6:
86
78
  languageCodeArray = [];
87
79
  list.elements.forEach(function (item) {
88
- // console.log('@@ item ' + item)
89
- var lang = _logic.kb.any(item, ns.solid('publicId'), null, doc);
80
+ var lang = _logic.kb.any(item, ns.solid('publicId'), null, item.doc());
90
81
 
91
82
  if (!lang) {
92
83
  console.warn('getPreferredLanguages: No publiID of language.');
@@ -108,7 +99,7 @@ function _getPreferredLanagugesFor() {
108
99
  }
109
100
 
110
101
  console.log(" User knows languages with codes: \"".concat(languageCodeArray.join(','), "\""));
111
- return _context.abrupt("return", addDefaults(languageCodeArray));
102
+ return _context.abrupt("return", languageCodeArray);
112
103
 
113
104
  case 11:
114
105
  return _context.abrupt("return", null);
@@ -174,9 +165,9 @@ function _getPreferredLanguages() {
174
165
  break;
175
166
  }
176
167
 
177
- return _context2.abrupt("return", addDefaults(navigator.languages.map(function (longForm) {
168
+ return _context2.abrupt("return", navigator.languages.map(function (longForm) {
178
169
  return longForm.split('-')[0];
179
- })));
170
+ }));
180
171
 
181
172
  case 12:
182
173
  if (!navigator.language) {
@@ -184,10 +175,10 @@ function _getPreferredLanguages() {
184
175
  break;
185
176
  }
186
177
 
187
- return _context2.abrupt("return", addDefaults([navigator.language.split('-')[0]]));
178
+ return _context2.abrupt("return", [navigator.language.split('-')[0]]);
188
179
 
189
180
  case 14:
190
- return _context2.abrupt("return", defaultPreferredLangages);
181
+ return _context2.abrupt("return", defaultPreferedLangages);
191
182
 
192
183
  case 15:
193
184
  case "end":
@@ -207,27 +198,22 @@ function filterByLanguage(bindings, languagePrefs) {
207
198
  uris[uri] = uris[uri] || [];
208
199
  uris[uri].push(binding);
209
200
  });
210
- var languagePrefs2 = languagePrefs || defaultPreferredLangages;
211
- languagePrefs2.reverse(); // Preferred last
201
+ var languagePrefs2 = languagePrefs || defaultPreferedLangages;
202
+ languagePrefs2.reverse(); // prefered last
212
203
 
213
- var slimmed = []; // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)
204
+ var slimmed = [];
214
205
 
215
206
  for (var u in uris) {
216
207
  // needs hasOwnProperty ?
217
208
  var _bindings = uris[u];
218
209
 
219
210
  var sortMe = _bindings.map(function (binding) {
220
- var lang = binding.name['xml:lang'];
221
- var index = languagePrefs2.indexOf(lang);
222
- var pair = [index, binding]; // console.log(` @@ lang: ${lang}, index: ${index}`)
223
-
224
- return pair;
211
+ return [languagePrefs2.indexOf(binding.name['xml:lang']), binding];
225
212
  });
226
213
 
227
214
  sortMe.sort(); // best at th ebottom
228
215
 
229
216
  sortMe.reverse(); // best at the top
230
- // console.debug('@@ sortMe:', sortMe)
231
217
 
232
218
  slimmed.push(sortMe[0][1]);
233
219
  } // map u
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":["languageCodeURIBase","defaultPreferredLangages","addDefaults","array","concat","filter","code","includes","getPreferredLanagugesFor","person","doc","kb","fetcher","load","list","any","ns","schema","languageCodeArray","elements","forEach","item","lang","solid","console","warn","value","startsWith","error","slice","length","push","log","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","name","index","indexOf","pair","sort","debug"],"mappings":"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","sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\nimport { authn } from '../../../authn/index'\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'\nimport { kb } from '../../../logic'\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 defaultPreferredLangages = ['en', 'fr', 'de', 'it', 'ar']\n\nexport function addDefaults (array) {\n if (!array) array = []\n return array.concat(defaultPreferredLangages.filter(code => !array.includes(code)))\n}\n\nexport async function getPreferredLanagugesFor (person: NamedNode) {\n const doc = person.doc()\n await kb.fetcher.load(doc)\n const list = kb.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 defaultPreferredLangages\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n // console.log('@@ item ' + item)\n const lang = kb.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/solid/solidos/issues/42\n const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanagugesFor(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 defaultPreferredLangages\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 || defaultPreferredLangages\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"],"file":"language.js"}
1
+ {"version":3,"sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":["languageCodeURIBase","defaultPreferedLangages","getPreferredLanagugesFor","person","kb","fetcher","load","doc","list","any","ns","schema","console","log","languageCodeArray","elements","forEach","item","lang","solid","warn","value","startsWith","error","code","slice","length","push","join","getPreferredLanguages","authn","currentUser","me","solidLanguagePrefs","navigator","languages","map","longForm","split","language","filterByLanguage","bindings","languagePrefs","uris","binding","uri","subject","languagePrefs2","reverse","slimmed","u","sortMe","indexOf","name","sort","debug"],"mappings":"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","sourcesContent":["/* Logic to access public data stores\n*\n* including filtering resut by natural language etc\n* See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html\n*/\n/* eslint-disable no-console */\nimport * as debug from '../../../debug'\n// import * as logic from '../index'\nimport { authn } from '../../../authn/index'\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'\nimport { kb } from '../../../logic'\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 defaultPreferedLangages = ['en', 'fr', 'de', 'it']\n\nexport async function getPreferredLanagugesFor (person: NamedNode) {\n await kb.fetcher.load(person.doc())\n const list = kb.any(person, ns.schema('knowsLanguage'), null, person.doc()) as Collection | undefined\n if (!list) {\n console.log(`User ${person} has not set their languages in their profile.`)\n return null // differnet from []\n }\n const languageCodeArray: string[] = []\n list.elements.forEach(item => {\n const lang = kb.any(item as any, ns.solid('publicId'), null, (item as NamedNode).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 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 const me = await authn.currentUser() as NamedNode\n if (me) { // If logged in\n const solidLanguagePrefs = await getPreferredLanagugesFor(me)\n if (solidLanguagePrefs) return solidLanguagePrefs\n }\n if (typeof navigator !== 'undefined') { // use browser settings\n if (navigator.languages) {\n return navigator.languages.map(longForm => longForm.split('-')[0])\n }\n if (navigator.language) {\n return [navigator.language.split('-')[0]]\n }\n }\n return defaultPreferedLangages // @@ or null?\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 || defaultPreferedLangages\n languagePrefs2.reverse() // prefered last\n\n const slimmed = ([] as Array<Binding>)\n for (const u in uris) { // needs hasOwnProperty ?\n const bindings = uris[u]\n const sortMe = bindings.map(binding => {\n return [languagePrefs2.indexOf(binding.name['xml:lang']), binding]\n })\n sortMe.sort() // best at th ebottom\n sortMe.reverse() // best at the top\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"],"file":"language.js"}
File without changes
@@ -385,7 +385,7 @@ function _queryPublicDataByName() {
385
385
  break;
386
386
  }
387
387
 
388
- _context2.t0 = _language.defaultPreferredLangages;
388
+ _context2.t0 = _language.defaultPreferedLangages;
389
389
 
390
390
  case 8:
391
391
  languagePrefs = _context2.t0;