solid-ui 2.6.1 → 3.0.0-63a1640

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 (369) hide show
  1. package/LICENSE.md +3 -1
  2. package/README.md +236 -30
  3. package/dist/acl/access-controller.js +238 -0
  4. package/dist/acl/access-controller.js.map +1 -0
  5. package/{lib → dist}/acl/access-groups.d.ts +2 -2
  6. package/{lib → dist}/acl/access-groups.d.ts.map +1 -1
  7. package/dist/acl/access-groups.js +323 -0
  8. package/dist/acl/access-groups.js.map +1 -0
  9. package/dist/acl/acl-control.js +173 -0
  10. package/dist/acl/acl-control.js.map +1 -0
  11. package/dist/acl/acl.js +495 -0
  12. package/dist/acl/acl.js.map +1 -0
  13. package/dist/acl/add-agent-buttons.js +217 -0
  14. package/dist/acl/add-agent-buttons.js.map +1 -0
  15. package/dist/acl/index.js +32 -0
  16. package/dist/acl/index.js.map +1 -0
  17. package/dist/acl/types.js +6 -0
  18. package/dist/acl/types.js.map +1 -0
  19. package/dist/chat/keys.js +106 -0
  20. package/dist/chat/keys.js.map +1 -0
  21. package/dist/chat/signature.js +63 -0
  22. package/dist/chat/signature.js.map +1 -0
  23. package/dist/create/create.js +249 -0
  24. package/dist/create/create.js.map +1 -0
  25. package/dist/create/index.js +5 -0
  26. package/dist/create/index.js.map +1 -0
  27. package/dist/create/types.js +2 -0
  28. package/dist/create/types.js.map +1 -0
  29. package/dist/debug.d.ts.map +1 -0
  30. package/dist/debug.js +13 -0
  31. package/dist/debug.js.map +1 -0
  32. package/dist/footer/index.js +67 -0
  33. package/dist/footer/index.js.map +1 -0
  34. package/dist/header/empty-profile.js +11 -0
  35. package/dist/header/empty-profile.js.map +1 -0
  36. package/dist/header/index.js +260 -0
  37. package/dist/header/index.js.map +1 -0
  38. package/dist/iconBase.js +37 -0
  39. package/dist/iconBase.js.map +1 -0
  40. package/dist/icons/solid_logo.js.map +1 -0
  41. package/{lib → dist}/index.d.ts +7 -9
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +102 -0
  44. package/dist/index.js.map +1 -0
  45. package/{lib → dist}/log.d.ts.map +1 -1
  46. package/dist/log.js +182 -0
  47. package/dist/log.js.map +1 -0
  48. package/dist/login/login.js +858 -0
  49. package/dist/login/login.js.map +1 -0
  50. package/dist/matrix/index.js +5 -0
  51. package/dist/matrix/index.js.map +1 -0
  52. package/dist/matrix/matrix.js +217 -0
  53. package/dist/matrix/matrix.js.map +1 -0
  54. package/dist/matrix/types.js +2 -0
  55. package/dist/matrix/types.js.map +1 -0
  56. package/dist/media/index.js +6 -0
  57. package/dist/media/index.js.map +1 -0
  58. package/dist/media/media-capture.js +161 -0
  59. package/dist/media/media-capture.js.map +1 -0
  60. package/dist/pad.js +775 -0
  61. package/dist/pad.js.map +1 -0
  62. package/{lib → dist}/participation.d.ts.map +1 -1
  63. package/dist/participation.js +184 -0
  64. package/dist/participation.js.map +1 -0
  65. package/dist/solid-ui.esm.js +25531 -0
  66. package/dist/solid-ui.esm.js.map +1 -0
  67. package/dist/solid-ui.esm.min.js +43 -0
  68. package/dist/solid-ui.esm.min.js.map +1 -0
  69. package/dist/solid-ui.js +23479 -68931
  70. package/dist/solid-ui.js.map +1 -1
  71. package/dist/solid-ui.min.js +40 -2
  72. package/dist/solid-ui.min.js.map +1 -1
  73. package/dist/tabs.js +388 -0
  74. package/dist/tabs.js.map +1 -0
  75. package/{lib → dist}/utils/headerFooterHelpers.d.ts.map +1 -1
  76. package/dist/utils/headerFooterHelpers.js +114 -0
  77. package/dist/utils/headerFooterHelpers.js.map +1 -0
  78. package/dist/utils/keyHelpers/accessData.js +64 -0
  79. package/dist/utils/keyHelpers/accessData.js.map +1 -0
  80. package/dist/utils/keyHelpers/acl.js +74 -0
  81. package/dist/utils/keyHelpers/acl.js.map +1 -0
  82. package/dist/utils/keyHelpers/otherHelpers.js +13 -0
  83. package/dist/utils/keyHelpers/otherHelpers.js.map +1 -0
  84. package/dist/utils/label.js +111 -0
  85. package/dist/utils/label.js.map +1 -0
  86. package/dist/versionInfo.js +30 -0
  87. package/dist/versionInfo.js.map +1 -0
  88. package/dist/widgets/buttons/iconLinks.js +44 -0
  89. package/dist/widgets/buttons/iconLinks.js.map +1 -0
  90. package/dist/widgets/buttons.js +1280 -0
  91. package/dist/widgets/buttons.js.map +1 -0
  92. package/dist/widgets/error.d.ts +14 -0
  93. package/dist/widgets/error.d.ts.map +1 -0
  94. package/dist/widgets/error.js +35 -0
  95. package/dist/widgets/error.js.map +1 -0
  96. package/dist/widgets/forms/autocomplete/autocompleteBar.js +123 -0
  97. package/dist/widgets/forms/autocomplete/autocompleteBar.js.map +1 -0
  98. package/dist/widgets/forms/autocomplete/autocompleteField.js +199 -0
  99. package/dist/widgets/forms/autocomplete/autocompleteField.js.map +1 -0
  100. package/dist/widgets/forms/autocomplete/autocompletePicker.js +256 -0
  101. package/dist/widgets/forms/autocomplete/autocompletePicker.js.map +1 -0
  102. package/dist/widgets/forms/autocomplete/language.js +104 -0
  103. package/dist/widgets/forms/autocomplete/language.js.map +1 -0
  104. package/dist/widgets/forms/autocomplete/publicData.js +460 -0
  105. package/dist/widgets/forms/autocomplete/publicData.js.map +1 -0
  106. package/dist/widgets/forms/basic.js +241 -0
  107. package/dist/widgets/forms/basic.js.map +1 -0
  108. package/dist/widgets/forms/comment.js +46 -0
  109. package/dist/widgets/forms/comment.js.map +1 -0
  110. package/dist/widgets/forms/fieldFunction.js +44 -0
  111. package/dist/widgets/forms/fieldFunction.js.map +1 -0
  112. package/dist/widgets/forms/fieldParams.js +89 -0
  113. package/dist/widgets/forms/fieldParams.js.map +1 -0
  114. package/{lib → dist}/widgets/forms/formStyle.d.ts.map +1 -1
  115. package/dist/widgets/forms/formStyle.js +36 -0
  116. package/dist/widgets/forms/formStyle.js.map +1 -0
  117. package/{lib → dist}/widgets/widgetHelpers.d.ts.map +1 -1
  118. package/{lib → dist}/widgets/widgetHelpers.js +14 -25
  119. package/dist/widgets/widgetHelpers.js.map +1 -0
  120. package/package.json +48 -52
  121. package/dist/789.solid-ui.min.js +0 -1
  122. package/dist/841.solid-ui.min.js +0 -3
  123. package/dist/841.solid-ui.min.js.LICENSE.txt +0 -58
  124. package/dist/841.solid-ui.min.js.map +0 -1
  125. package/dist/_2b19.solid-ui.js +0 -14
  126. package/dist/_2b19.solid-ui.js.map +0 -1
  127. package/dist/index.html +0 -1
  128. package/dist/solid-ui.min.js.LICENSE.txt +0 -57
  129. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js +0 -12247
  130. package/dist/vendors-node_modules_jsonld_lib_jsonld_js.solid-ui.js.map +0 -1
  131. package/lib/acl/access-controller.js +0 -391
  132. package/lib/acl/access-controller.js.map +0 -1
  133. package/lib/acl/access-groups.js +0 -507
  134. package/lib/acl/access-groups.js.map +0 -1
  135. package/lib/acl/acl-control.js +0 -237
  136. package/lib/acl/acl-control.js.map +0 -1
  137. package/lib/acl/acl.js +0 -517
  138. package/lib/acl/acl.js.map +0 -1
  139. package/lib/acl/add-agent-buttons.js +0 -434
  140. package/lib/acl/add-agent-buttons.js.map +0 -1
  141. package/lib/acl/index.js +0 -39
  142. package/lib/acl/index.js.map +0 -1
  143. package/lib/acl/types.js +0 -6
  144. package/lib/acl/types.js.map +0 -1
  145. package/lib/chat/bookmarks.js +0 -303
  146. package/lib/chat/bookmarks.js.map +0 -1
  147. package/lib/chat/chatLogic.js +0 -420
  148. package/lib/chat/chatLogic.js.map +0 -1
  149. package/lib/chat/dateFolder.js +0 -328
  150. package/lib/chat/dateFolder.js.map +0 -1
  151. package/lib/chat/infinite.js +0 -994
  152. package/lib/chat/infinite.js.map +0 -1
  153. package/lib/chat/keys.js +0 -232
  154. package/lib/chat/keys.js.map +0 -1
  155. package/lib/chat/message.js +0 -715
  156. package/lib/chat/message.js.map +0 -1
  157. package/lib/chat/messageTools.js +0 -538
  158. package/lib/chat/messageTools.js.map +0 -1
  159. package/lib/chat/signature.js +0 -109
  160. package/lib/chat/signature.js.map +0 -1
  161. package/lib/chat/thread.js +0 -535
  162. package/lib/chat/thread.js.map +0 -1
  163. package/lib/create/create.js +0 -242
  164. package/lib/create/create.js.map +0 -1
  165. package/lib/create/index.js +0 -11
  166. package/lib/create/index.js.map +0 -1
  167. package/lib/create/types.js +0 -6
  168. package/lib/create/types.js.map +0 -1
  169. package/lib/debug.d.ts.map +0 -1
  170. package/lib/debug.js +0 -30
  171. package/lib/debug.js.map +0 -1
  172. package/lib/folders.js +0 -132
  173. package/lib/folders.js.map +0 -1
  174. package/lib/footer/index.js +0 -123
  175. package/lib/footer/index.js.map +0 -1
  176. package/lib/header/empty-profile.js +0 -8
  177. package/lib/header/empty-profile.js.map +0 -1
  178. package/lib/header/index.js +0 -375
  179. package/lib/header/index.js.map +0 -1
  180. package/lib/iconBase.js +0 -44
  181. package/lib/iconBase.js.map +0 -1
  182. package/lib/icons/solid_logo.js.map +0 -1
  183. package/lib/index.d.ts.map +0 -1
  184. package/lib/index.js +0 -223
  185. package/lib/index.js.map +0 -1
  186. package/lib/log.js +0 -213
  187. package/lib/log.js.map +0 -1
  188. package/lib/login/login.js +0 -1241
  189. package/lib/login/login.js.map +0 -1
  190. package/lib/matrix/index.js +0 -11
  191. package/lib/matrix/index.js.map +0 -1
  192. package/lib/matrix/matrix.js +0 -216
  193. package/lib/matrix/matrix.js.map +0 -1
  194. package/lib/matrix/types.js +0 -6
  195. package/lib/matrix/types.js.map +0 -1
  196. package/lib/media/index.js +0 -12
  197. package/lib/media/index.js.map +0 -1
  198. package/lib/media/media-capture.js +0 -194
  199. package/lib/media/media-capture.js.map +0 -1
  200. package/lib/messageArea.js +0 -319
  201. package/lib/messageArea.js.map +0 -1
  202. package/lib/noun_Camera_1618446_000000.js +0 -8
  203. package/lib/noun_Camera_1618446_000000.js.map +0 -1
  204. package/lib/ns.js +0 -17
  205. package/lib/ns.js.map +0 -1
  206. package/lib/pad.js +0 -805
  207. package/lib/pad.js.map +0 -1
  208. package/lib/participation.js +0 -219
  209. package/lib/participation.js.map +0 -1
  210. package/lib/preferences.js +0 -215
  211. package/lib/preferences.js.map +0 -1
  212. package/lib/signup/config-default.js +0 -43
  213. package/lib/signup/config-default.js.map +0 -1
  214. package/lib/signup/signup.js +0 -74
  215. package/lib/signup/signup.js.map +0 -1
  216. package/lib/stories/decorators.js +0 -10
  217. package/lib/stories/decorators.js.map +0 -1
  218. package/lib/style.js +0 -158
  219. package/lib/style.js.map +0 -1
  220. package/lib/styleConstants.js +0 -35
  221. package/lib/styleConstants.js.map +0 -1
  222. package/lib/style_multiSelect.js +0 -62
  223. package/lib/style_multiSelect.js.map +0 -1
  224. package/lib/table.js +0 -1573
  225. package/lib/table.js.map +0 -1
  226. package/lib/tabs.js +0 -448
  227. package/lib/tabs.js.map +0 -1
  228. package/lib/typings.d.js +0 -2
  229. package/lib/typings.d.js.map +0 -1
  230. package/lib/utils/headerFooterHelpers.js +0 -165
  231. package/lib/utils/headerFooterHelpers.js.map +0 -1
  232. package/lib/utils/index.js +0 -527
  233. package/lib/utils/index.js.map +0 -1
  234. package/lib/utils/keyHelpers/accessData.js +0 -131
  235. package/lib/utils/keyHelpers/accessData.js.map +0 -1
  236. package/lib/utils/keyHelpers/acl.js +0 -90
  237. package/lib/utils/keyHelpers/acl.js.map +0 -1
  238. package/lib/utils/keyHelpers/otherHelpers.js +0 -21
  239. package/lib/utils/keyHelpers/otherHelpers.js.map +0 -1
  240. package/lib/utils/label.js +0 -103
  241. package/lib/utils/label.js.map +0 -1
  242. package/lib/versionInfo.d.ts +0 -32
  243. package/lib/versionInfo.d.ts.map +0 -1
  244. package/lib/versionInfo.js +0 -37
  245. package/lib/versionInfo.js.map +0 -1
  246. package/lib/widgets/buttons/iconLinks.js +0 -53
  247. package/lib/widgets/buttons/iconLinks.js.map +0 -1
  248. package/lib/widgets/buttons.js +0 -1306
  249. package/lib/widgets/buttons.js.map +0 -1
  250. package/lib/widgets/dragAndDrop.js +0 -194
  251. package/lib/widgets/dragAndDrop.js.map +0 -1
  252. package/lib/widgets/error.d.ts +0 -2
  253. package/lib/widgets/error.d.ts.map +0 -1
  254. package/lib/widgets/error.js +0 -46
  255. package/lib/widgets/error.js.map +0 -1
  256. package/lib/widgets/forms/autocomplete/autocompleteBar.js +0 -271
  257. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +0 -1
  258. package/lib/widgets/forms/autocomplete/autocompleteField.js +0 -258
  259. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +0 -1
  260. package/lib/widgets/forms/autocomplete/autocompletePicker.js +0 -436
  261. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +0 -1
  262. package/lib/widgets/forms/autocomplete/language.js +0 -189
  263. package/lib/widgets/forms/autocomplete/language.js.map +0 -1
  264. package/lib/widgets/forms/autocomplete/publicData.js +0 -636
  265. package/lib/widgets/forms/autocomplete/publicData.js.map +0 -1
  266. package/lib/widgets/forms/basic.js +0 -254
  267. package/lib/widgets/forms/basic.js.map +0 -1
  268. package/lib/widgets/forms/comment.js +0 -54
  269. package/lib/widgets/forms/comment.js.map +0 -1
  270. package/lib/widgets/forms/fieldFunction.js +0 -52
  271. package/lib/widgets/forms/fieldFunction.js.map +0 -1
  272. package/lib/widgets/forms/fieldParams.js +0 -77
  273. package/lib/widgets/forms/fieldParams.js.map +0 -1
  274. package/lib/widgets/forms/formStyle.js +0 -44
  275. package/lib/widgets/forms/formStyle.js.map +0 -1
  276. package/lib/widgets/forms.js +0 -2045
  277. package/lib/widgets/forms.js.map +0 -1
  278. package/lib/widgets/index.js +0 -110
  279. package/lib/widgets/index.js.map +0 -1
  280. package/lib/widgets/multiSelect.js +0 -658
  281. package/lib/widgets/multiSelect.js.map +0 -1
  282. package/lib/widgets/peoplePicker.js +0 -467
  283. package/lib/widgets/peoplePicker.js.map +0 -1
  284. package/lib/widgets/widgetHelpers.js.map +0 -1
  285. /package/{lib → dist}/acl/access-controller.d.ts +0 -0
  286. /package/{lib → dist}/acl/access-controller.d.ts.map +0 -0
  287. /package/{lib → dist}/acl/acl-control.d.ts +0 -0
  288. /package/{lib → dist}/acl/acl-control.d.ts.map +0 -0
  289. /package/{lib → dist}/acl/acl.d.ts +0 -0
  290. /package/{lib → dist}/acl/acl.d.ts.map +0 -0
  291. /package/{lib → dist}/acl/add-agent-buttons.d.ts +0 -0
  292. /package/{lib → dist}/acl/add-agent-buttons.d.ts.map +0 -0
  293. /package/{lib → dist}/acl/index.d.ts +0 -0
  294. /package/{lib → dist}/acl/index.d.ts.map +0 -0
  295. /package/{lib → dist}/acl/types.d.ts +0 -0
  296. /package/{lib → dist}/acl/types.d.ts.map +0 -0
  297. /package/{lib → dist}/chat/keys.d.ts +0 -0
  298. /package/{lib → dist}/chat/keys.d.ts.map +0 -0
  299. /package/{lib → dist}/chat/signature.d.ts +0 -0
  300. /package/{lib → dist}/chat/signature.d.ts.map +0 -0
  301. /package/{lib → dist}/create/create.d.ts +0 -0
  302. /package/{lib → dist}/create/create.d.ts.map +0 -0
  303. /package/{lib → dist}/create/index.d.ts +0 -0
  304. /package/{lib → dist}/create/index.d.ts.map +0 -0
  305. /package/{lib → dist}/create/types.d.ts +0 -0
  306. /package/{lib → dist}/create/types.d.ts.map +0 -0
  307. /package/{lib → dist}/debug.d.ts +0 -0
  308. /package/{lib → dist}/footer/index.d.ts +0 -0
  309. /package/{lib → dist}/footer/index.d.ts.map +0 -0
  310. /package/{lib → dist}/header/empty-profile.d.ts +0 -0
  311. /package/{lib → dist}/header/empty-profile.d.ts.map +0 -0
  312. /package/{lib → dist}/header/index.d.ts +0 -0
  313. /package/{lib → dist}/header/index.d.ts.map +0 -0
  314. /package/{lib → dist}/iconBase.d.ts +0 -0
  315. /package/{lib → dist}/iconBase.d.ts.map +0 -0
  316. /package/{lib → dist}/icons/solid_logo.d.ts +0 -0
  317. /package/{lib → dist}/icons/solid_logo.d.ts.map +0 -0
  318. /package/{lib → dist}/icons/solid_logo.js +0 -0
  319. /package/{lib → dist}/log.d.ts +0 -0
  320. /package/{lib → dist}/login/login.d.ts +0 -0
  321. /package/{lib → dist}/login/login.d.ts.map +0 -0
  322. /package/{lib → dist}/matrix/index.d.ts +0 -0
  323. /package/{lib → dist}/matrix/index.d.ts.map +0 -0
  324. /package/{lib → dist}/matrix/matrix.d.ts +0 -0
  325. /package/{lib → dist}/matrix/matrix.d.ts.map +0 -0
  326. /package/{lib → dist}/matrix/types.d.ts +0 -0
  327. /package/{lib → dist}/matrix/types.d.ts.map +0 -0
  328. /package/{lib → dist}/media/index.d.ts +0 -0
  329. /package/{lib → dist}/media/index.d.ts.map +0 -0
  330. /package/{lib → dist}/media/media-capture.d.ts +0 -0
  331. /package/{lib → dist}/media/media-capture.d.ts.map +0 -0
  332. /package/{lib → dist}/pad.d.ts +0 -0
  333. /package/{lib → dist}/pad.d.ts.map +0 -0
  334. /package/{lib → dist}/participation.d.ts +0 -0
  335. /package/{lib → dist}/tabs.d.ts +0 -0
  336. /package/{lib → dist}/tabs.d.ts.map +0 -0
  337. /package/{lib → dist}/utils/headerFooterHelpers.d.ts +0 -0
  338. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts +0 -0
  339. /package/{lib → dist}/utils/keyHelpers/accessData.d.ts.map +0 -0
  340. /package/{lib → dist}/utils/keyHelpers/acl.d.ts +0 -0
  341. /package/{lib → dist}/utils/keyHelpers/acl.d.ts.map +0 -0
  342. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts +0 -0
  343. /package/{lib → dist}/utils/keyHelpers/otherHelpers.d.ts.map +0 -0
  344. /package/{lib → dist}/utils/label.d.ts +0 -0
  345. /package/{lib → dist}/utils/label.d.ts.map +0 -0
  346. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts +0 -0
  347. /package/{lib → dist}/widgets/buttons/iconLinks.d.ts.map +0 -0
  348. /package/{lib → dist}/widgets/buttons.d.ts +0 -0
  349. /package/{lib → dist}/widgets/buttons.d.ts.map +0 -0
  350. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts +0 -0
  351. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteBar.d.ts.map +0 -0
  352. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts +0 -0
  353. /package/{lib → dist}/widgets/forms/autocomplete/autocompleteField.d.ts.map +0 -0
  354. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts +0 -0
  355. /package/{lib → dist}/widgets/forms/autocomplete/autocompletePicker.d.ts.map +0 -0
  356. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts +0 -0
  357. /package/{lib → dist}/widgets/forms/autocomplete/language.d.ts.map +0 -0
  358. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts +0 -0
  359. /package/{lib → dist}/widgets/forms/autocomplete/publicData.d.ts.map +0 -0
  360. /package/{lib → dist}/widgets/forms/basic.d.ts +0 -0
  361. /package/{lib → dist}/widgets/forms/basic.d.ts.map +0 -0
  362. /package/{lib → dist}/widgets/forms/comment.d.ts +0 -0
  363. /package/{lib → dist}/widgets/forms/comment.d.ts.map +0 -0
  364. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts +0 -0
  365. /package/{lib → dist}/widgets/forms/fieldFunction.d.ts.map +0 -0
  366. /package/{lib → dist}/widgets/forms/fieldParams.d.ts +0 -0
  367. /package/{lib → dist}/widgets/forms/fieldParams.d.ts.map +0 -0
  368. /package/{lib → dist}/widgets/forms/formStyle.d.ts +0 -0
  369. /package/{lib → dist}/widgets/widgetHelpers.d.ts +0 -0
@@ -0,0 +1,256 @@
1
+ /* Autocomplete Picker: Create and edit data using public data
2
+ **
3
+ ** As the data source is passed as a parameter, all kinds of APIa and query services can be used
4
+ **
5
+ */
6
+ import * as debug from '../../../debug';
7
+ import { style } from '../../../style';
8
+ import styleConstants from '../../../styleConstants';
9
+ import * as widgets from '../../../widgets';
10
+ import { store } from 'solid-logic';
11
+ import { queryPublicDataByName, bindingToTerm, AUTOCOMPLETE_LIMIT } from './publicData';
12
+ import { filterByLanguage, getPreferredLanguages, defaultPreferredLanguages } from './language';
13
+ const AUTOCOMPLETE_THRESHOLD = 4; // don't check until this many characters typed
14
+ const AUTOCOMPLETE_ROWS = 20; // 20?
15
+ const AUTOCOMPLETE_ROWS_STRETCH = 40;
16
+ export function setVisible(element, visible) {
17
+ element.style.display = visible ? '' : 'none'; // Do not use visibility, it holds the real estate
18
+ }
19
+ // The core of the autocomplete UI
20
+ export async function renderAutoComplete(dom, acOptions, decoration, callback) {
21
+ function complain(message) {
22
+ const errorRow = table.appendChild(dom.createElement('tr'));
23
+ debug.log(message);
24
+ const err = new Error(message);
25
+ errorRow.appendChild(widgets.errorMessageBlock(dom, err, 'pink'));
26
+ // errorMessageBlock will log the stack to the console
27
+ style.setStyle(errorRow, 'autocompleteRowStyle');
28
+ errorRow.style.padding = '1em';
29
+ }
30
+ function finish(object, name) {
31
+ debug.log('Auto complete: finish! ' + object);
32
+ if (object.termType === 'Literal' && acOptions.queryParams.objectURIBase) {
33
+ object = store.sym(acOptions.queryParams.objectURIBase.value + object.value);
34
+ }
35
+ // remove(decoration.cancelButton)
36
+ // remove(decoration.acceptButton)
37
+ // remove(div)
38
+ clearList();
39
+ callback(object, name);
40
+ }
41
+ async function gotIt(object, name) {
42
+ if (decoration.acceptButton) {
43
+ decoration.acceptButton.disbaled = false;
44
+ setVisible(decoration.acceptButton, true); // now wait for confirmation
45
+ searchInput.value = name.value; // complete it
46
+ foundName = name;
47
+ foundObject = object;
48
+ debug.log('Auto complete: name: ' + name);
49
+ debug.log('Auto complete: waiting for accept ' + object);
50
+ clearList(); // This may be an option - nice and clean but does not allow change of mind
51
+ return;
52
+ }
53
+ setVisible(decoration.cancelButton, true);
54
+ finish(object, name);
55
+ }
56
+ async function acceptButtonHandler(_event) {
57
+ if (foundName && searchInput.value === foundName.value) { // still
58
+ finish(foundObject, foundName);
59
+ }
60
+ }
61
+ async function cancelButtonHandler(_event) {
62
+ debug.log('Auto complete: Canceled by user! ');
63
+ if (acOptions.permanent) {
64
+ initialize();
65
+ }
66
+ else {
67
+ if (div.parentNode) {
68
+ div.parentNode.removeChild(div);
69
+ }
70
+ }
71
+ }
72
+ function nameMatch(filter, candidate) {
73
+ const parts = filter.split(' '); // Each name part must be somewhere
74
+ for (let j = 0; j < parts.length; j++) {
75
+ const word = parts[j];
76
+ if (candidate.toLowerCase().indexOf(word) < 0)
77
+ return false;
78
+ }
79
+ return true;
80
+ }
81
+ function clearList() {
82
+ while (table.children.length > 1) {
83
+ table.removeChild(table.lastChild);
84
+ }
85
+ }
86
+ async function inputEventHHandler(_event) {
87
+ // console.log('@@ AC inputEventHHandler called')
88
+ setVisible(decoration.cancelButton, true); // only allow cancel when there is something to cancel
89
+ refreshList(); /// @@ debounqce does not work with jest
90
+ /*
91
+ if (runningTimeout) {
92
+ clearTimeout(runningTimeout)
93
+ }
94
+ runningTimeout = setTimeout(refreshList, AUTOCOMPLETE_DEBOUNCE_MS)
95
+ */
96
+ }
97
+ async function loadBindingsAndFilterByLanguage(filter, languagePrefs) {
98
+ // console.log('@@ loadBindingsAndFilterByLanguage ' + filter)
99
+ let bindings;
100
+ try {
101
+ bindings = await queryPublicDataByName(filter, targetClass, languagePrefs || defaultPreferredLanguages, acOptions.queryParams);
102
+ }
103
+ catch (err) {
104
+ complain('Error querying db of organizations: ' + err);
105
+ inputEventHandlerLock = false;
106
+ return;
107
+ }
108
+ loadedEnough = bindings.length < AUTOCOMPLETE_LIMIT;
109
+ if (loadedEnough) {
110
+ lastFilter = filter;
111
+ }
112
+ else {
113
+ lastFilter = undefined;
114
+ }
115
+ clearList();
116
+ const slimmed = filterByLanguage(bindings, languagePrefs);
117
+ return slimmed;
118
+ }
119
+ function filterByName(filter, bindings) {
120
+ return bindings.filter(binding => nameMatch(filter, binding.name.value));
121
+ }
122
+ async function refreshList() {
123
+ // console.log('@@ refreshList called')
124
+ function rowForBinding(binding) {
125
+ const row = dom.createElement('tr');
126
+ style.setStyle(row, 'autocompleteRowStyle');
127
+ row.setAttribute('style', 'padding: 0.3em;');
128
+ row.style.color = allDisplayed ? '#080' : '#088'; // green means 'you should find it here'
129
+ row.textContent = binding.name.value;
130
+ const object = bindingToTerm(binding.subject);
131
+ const nameTerm = bindingToTerm(binding.name);
132
+ row.addEventListener('click', async (_event) => {
133
+ debug.log(' click row textContent: ' + row.textContent);
134
+ debug.log(' click name: ' + nameTerm.value);
135
+ if (object && nameTerm) {
136
+ gotIt(object, nameTerm);
137
+ }
138
+ });
139
+ return row;
140
+ } // rowForBinding
141
+ function compareBindingsByName(self, other) {
142
+ return other.name.value > self.name.value
143
+ ? 1
144
+ : other.name.name < self.name.value ? -1 : 0;
145
+ }
146
+ if (inputEventHandlerLock) {
147
+ debug.log(`Ignoring "${searchInput.value}" because of lock `);
148
+ return;
149
+ }
150
+ debug.log(`Setting lock at "${searchInput.value}"`);
151
+ inputEventHandlerLock = true;
152
+ const languagePrefs = await getPreferredLanguages();
153
+ const filter = searchInput.value.trim().toLowerCase();
154
+ if (filter.length < AUTOCOMPLETE_THRESHOLD) { // too small
155
+ clearList();
156
+ // candidatesLoaded = false
157
+ numberOfRows = AUTOCOMPLETE_ROWS;
158
+ }
159
+ else {
160
+ if (!allDisplayed || !lastFilter || !filter.startsWith(lastFilter)) {
161
+ debug.log(` Querying database at "${filter}" cf last "${lastFilter}".`);
162
+ lastBindings = await loadBindingsAndFilterByLanguage(filter, languagePrefs); // freesh query
163
+ }
164
+ // Trim table as search gets tighter:
165
+ const slimmed = filterByName(filter, lastBindings);
166
+ if (loadedEnough && slimmed.length <= AUTOCOMPLETE_ROWS_STRETCH) {
167
+ numberOfRows = slimmed.length; // stretch if it means we get all items
168
+ }
169
+ allDisplayed = loadedEnough && slimmed.length <= numberOfRows;
170
+ debug.log(` Filter:"${filter}" lastBindings: ${lastBindings.length}, slimmed to ${slimmed.length}; rows: ${numberOfRows}, Enough? ${loadedEnough}, All displayed? ${allDisplayed}`);
171
+ const displayable = slimmed.slice(0, numberOfRows);
172
+ displayable.sort(compareBindingsByName);
173
+ clearList();
174
+ for (const binding of displayable) {
175
+ table.appendChild(rowForBinding(binding));
176
+ }
177
+ if (slimmed.length === 1) {
178
+ gotIt(bindingToTerm(slimmed[0].subject), bindingToTerm(slimmed[0].name));
179
+ }
180
+ } // else
181
+ inputEventHandlerLock = false;
182
+ } // refreshList
183
+ function initialize() {
184
+ if (acOptions.currentObject) { // If have existing value then jump into the endgame of the autocomplete
185
+ searchInput.value = acOptions.currentName ? acOptions.currentName.value : '??? wot no name for ' + acOptions.currentObject;
186
+ foundName = acOptions.currentName;
187
+ lastFilter = acOptions.currentName ? acOptions.currentName.value : undefined;
188
+ foundObject = acOptions.currentObject;
189
+ }
190
+ else {
191
+ searchInput.value = '';
192
+ lastFilter = undefined;
193
+ foundObject = undefined;
194
+ }
195
+ if (decoration.deleteButton) {
196
+ setVisible(decoration.deleteButton, !!acOptions.currentObject);
197
+ }
198
+ if (decoration.acceptButton) {
199
+ setVisible(decoration.acceptButton, false); // hide until input complete
200
+ }
201
+ if (decoration.editButton) {
202
+ setVisible(decoration.editButton, true);
203
+ }
204
+ if (decoration.cancelButton) {
205
+ setVisible(decoration.cancelButton, false); // only allow cancel when there is something to cancel
206
+ }
207
+ inputEventHandlerLock = false;
208
+ clearList();
209
+ } // initialiize
210
+ // const queryParams: QueryParameters = acOptions.queryParams
211
+ const targetClass = acOptions.targetClass;
212
+ if (!targetClass)
213
+ throw new Error('renderAutoComplete: missing targetClass');
214
+ // console.log(`renderAutoComplete: targetClass=${targetClass}` )
215
+ if (decoration.acceptButton) {
216
+ decoration.acceptButton.addEventListener('click', acceptButtonHandler, false);
217
+ }
218
+ if (decoration.cancelButton) {
219
+ decoration.cancelButton.addEventListener('click', cancelButtonHandler, false);
220
+ }
221
+ // var candidatesLoaded = false
222
+ let lastBindings;
223
+ let loadedEnough = false;
224
+ let inputEventHandlerLock = false;
225
+ let allDisplayed = false;
226
+ let lastFilter = undefined;
227
+ let numberOfRows = AUTOCOMPLETE_ROWS; // this gets slimmed down
228
+ const div = dom.createElement('div');
229
+ let foundName = undefined; // once found accepted string must match this
230
+ let foundObject = undefined;
231
+ const table = div.appendChild(dom.createElement('table'));
232
+ table.setAttribute('data-testid', 'autocomplete-table');
233
+ table.setAttribute('style', 'max-width: 30em; margin: 0.5em;');
234
+ const head = table.appendChild(dom.createElement('tr'));
235
+ style.setStyle(head, 'autocompleteRowStyle'); // textInputStyle or
236
+ const cell = head.appendChild(dom.createElement('td'));
237
+ const searchInput = cell.appendChild(dom.createElement('input'));
238
+ searchInput.setAttribute('type', 'text');
239
+ initialize();
240
+ const size = acOptions.size || styleConstants.textInputSize || 20;
241
+ searchInput.setAttribute('size', size);
242
+ searchInput.setAttribute('data-testid', 'autocomplete-input');
243
+ const searchInputStyle = style.textInputStyle || // searchInputStyle ?
244
+ 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em'; // @
245
+ searchInput.setAttribute('style', searchInputStyle);
246
+ searchInput.addEventListener('keyup', function (event) {
247
+ if (event.keyCode === 13) {
248
+ acceptButtonHandler(event);
249
+ }
250
+ }, false);
251
+ searchInput.addEventListener('input', inputEventHHandler);
252
+ // console.log('@@ renderAutoComplete returns ' + div.innerHTML)
253
+ return div;
254
+ } // renderAutoComplete
255
+ // ENDS
256
+ //# sourceMappingURL=autocompletePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocompletePicker.js","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/autocompletePicker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /* Logic to access public data stores
2
+ *
3
+ * including filtering resut by natural language etc
4
+ * See https://solidos.solidcommunity.net/public/2021/01%20Building%20Solid%20Apps%20which%20use%20Public%20Data.html
5
+ */
6
+ import * as debug from '../../../debug';
7
+ // import * as logic from '../index'
8
+ // import { authn } from '../../../authn/index'
9
+ import { authn, store } from 'solid-logic';
10
+ import ns from '../../../ns';
11
+ export const languageCodeURIBase = 'https://www.w3.org/ns/iana/language-code/'; /// @@ unsupported on the web (2021)
12
+ export const defaultPreferredLanguages = ['en', 'fr', 'de', 'it', 'ar'];
13
+ export function addDefaults(array) {
14
+ if (!array)
15
+ array = [];
16
+ return array.concat(defaultPreferredLanguages.filter(code => !array.includes(code)));
17
+ }
18
+ export async function getPreferredLanguagesFor(person) {
19
+ var _a;
20
+ const doc = person.doc();
21
+ await ((_a = store.fetcher) === null || _a === void 0 ? void 0 : _a.load(doc));
22
+ const list = store.any(person, ns.schema('knowsLanguage'), null, doc);
23
+ if (!list) {
24
+ // console.log(`User ${person} has not set their languages in their profile.`)
25
+ return defaultPreferredLanguages;
26
+ }
27
+ const languageCodeArray = [];
28
+ list.elements.forEach(item => {
29
+ // console.log('@@ item ' + item)
30
+ const lang = store.any(item, ns.solid('publicId'), null, doc);
31
+ if (!lang) {
32
+ console.warn('getPreferredLanguages: No publiID of language.');
33
+ return;
34
+ }
35
+ if (!lang.value.startsWith(languageCodeURIBase)) {
36
+ console.error(`What should be a language code ${lang.value} does not start with ${languageCodeURIBase}`);
37
+ return;
38
+ }
39
+ const code = lang.value.slice(languageCodeURIBase.length);
40
+ languageCodeArray.push(code);
41
+ });
42
+ if (languageCodeArray.length > 0) {
43
+ console.log(` User knows languages with codes: "${languageCodeArray.join(',')}"`);
44
+ return addDefaults(languageCodeArray);
45
+ }
46
+ return null;
47
+ }
48
+ /* Get the preferred langauges for the user
49
+ *
50
+ * Either from solid preferences or browser preferences or default
51
+ */
52
+ export async function getPreferredLanguages() {
53
+ // In future: cache in the login session for speed, but get from profile and private prefs
54
+ // We append the defaults so if someone's first choice is not available they don't get something very obscure
55
+ // See https://github.com/solidos/solidos/issues/42
56
+ const me = await authn.currentUser();
57
+ if (me) { // If logged in
58
+ const solidLanguagePrefs = await getPreferredLanguagesFor(me);
59
+ if (solidLanguagePrefs)
60
+ return solidLanguagePrefs;
61
+ }
62
+ if (typeof navigator !== 'undefined') { // use browser settings
63
+ if (navigator.languages) {
64
+ return addDefaults(navigator.languages.map(longForm => longForm.split('-')[0]));
65
+ }
66
+ if (navigator.language) {
67
+ return addDefaults([navigator.language.split('-')[0]]);
68
+ }
69
+ }
70
+ return defaultPreferredLanguages;
71
+ }
72
+ /* From an array of bindings with a names for each row,
73
+ * remove dupliacte names for the same thing, leaving the user's
74
+ * preferred language version
75
+ */
76
+ export function filterByLanguage(bindings, languagePrefs) {
77
+ const uris = {};
78
+ bindings.forEach(binding => {
79
+ const uri = binding.subject.value;
80
+ uris[uri] = uris[uri] || [];
81
+ uris[uri].push(binding);
82
+ });
83
+ const languagePrefs2 = languagePrefs || defaultPreferredLanguages;
84
+ languagePrefs2.reverse(); // Preferred last
85
+ const slimmed = [];
86
+ // console.log(` @@ {languagePrefs2 ${languagePrefs2}`)
87
+ for (const u in uris) { // needs hasOwnProperty ?
88
+ const bindings = uris[u];
89
+ const sortMe = bindings.map(binding => {
90
+ const lang = binding.name['xml:lang'];
91
+ const index = languagePrefs2.indexOf(lang);
92
+ const pair = [index, binding];
93
+ // console.log(` @@ lang: ${lang}, index: ${index}`)
94
+ return pair;
95
+ });
96
+ sortMe.sort(); // best at th ebottom
97
+ sortMe.reverse(); // best at the top
98
+ // console.debug('@@ sortMe:', sortMe)
99
+ slimmed.push(sortMe[0][1]);
100
+ } // map u
101
+ debug.log(` Filter by language: ${bindings.length} -> ${slimmed.length}`);
102
+ return slimmed;
103
+ }
104
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../../../src/widgets/forms/autocomplete/language.ts"],"names":[],"mappings":"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"}