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
@@ -1,527 +0,0 @@
1
- "use strict";
2
-
3
- var _typeof = require("@babel/runtime/helpers/typeof");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.AJARImage = AJARImage;
8
- exports.RDFComparePredicateObject = RDFComparePredicateObject;
9
- exports.RDFComparePredicateSubject = RDFComparePredicateSubject;
10
- exports.addLoadEvent = addLoadEvent;
11
- exports.ancestor = ancestor;
12
- exports.beep = beep;
13
- exports.clearVariableNames = clearVariableNames;
14
- exports.emptyNode = emptyNode;
15
- exports.escapeForXML = escapeForXML;
16
- exports.findPos = findPos;
17
- exports.genUuid = genUuid;
18
- exports.getAbout = getAbout;
19
- exports.getEyeFocus = getEyeFocus;
20
- exports.getTarget = getTarget;
21
- exports.getTerm = getTerm;
22
- exports.hashColor = hashColor;
23
- exports.include = include;
24
- Object.defineProperty(exports, "label", {
25
- enumerable: true,
26
- get: function get() {
27
- return _label.label;
28
- }
29
- });
30
- exports.labelForXML = labelForXML;
31
- exports.labelWithOntology = labelWithOntology;
32
- exports.newVariableName = newVariableName;
33
- exports.ontologyLabel = ontologyLabel;
34
- exports.predParentOf = predParentOf;
35
- exports.predicateLabel = predicateLabel;
36
- exports.predicateLabelForXML = predicateLabelForXML;
37
- exports.shortName = shortName;
38
- exports.stackString = stackString;
39
- exports.syncTableToArray = syncTableToArray;
40
- exports.syncTableToArrayReOrdered = syncTableToArrayReOrdered;
41
- var log = _interopRequireWildcard(require("../log"));
42
- var _solidLogic = require("solid-logic");
43
- var ns = _interopRequireWildcard(require("../ns"));
44
- var rdf = _interopRequireWildcard(require("rdflib"));
45
- var _label = require("./label");
46
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
47
- // Solid-UI general Utilities
48
- // ==========================
49
- //
50
- // This must load AFTER the rdflib.js and log-ext.js (or log.js).
51
- //
52
-
53
- // pull in first avoid cross-refs
54
-
55
- var UI = {
56
- log: log,
57
- ns: ns,
58
- rdf: rdf
59
- };
60
- var nextVariable = 0;
61
- function newVariableName() {
62
- return 'v' + nextVariable++;
63
- }
64
- function clearVariableNames() {
65
- nextVariable = 0;
66
- }
67
-
68
- // http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep
69
- // http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/
70
-
71
- var audioContext;
72
- if (typeof AudioContext !== 'undefined') {
73
- audioContext = AudioContext;
74
- } else if (typeof window !== 'undefined') {
75
- audioContext = window.AudioContext || window.webkitAudioContext;
76
- }
77
- function beep() {
78
- if (!audioContext) {
79
- return;
80
- } // Safari 2015
81
-
82
- var ContextClass = audioContext;
83
- var ctx = new ContextClass();
84
- return function (duration, frequency, type, finishedCallback) {
85
- duration = +(duration || 0.3);
86
-
87
- // Only 0-4 are valid types.
88
- type = type || 'sine'; // sine, square, sawtooth, triangle
89
-
90
- if (typeof finishedCallback !== 'function') {
91
- finishedCallback = function finishedCallback() {};
92
- }
93
- var osc = ctx.createOscillator();
94
- osc.type = type;
95
- osc.frequency.value = frequency || 256;
96
- osc.connect(ctx.destination);
97
- osc.start(0);
98
- osc.stop(duration);
99
- };
100
- }
101
-
102
- // Make pseudorandom color from a uri
103
- // NOT USED ANYWHERE
104
- function hashColor(who) {
105
- who = who.uri || who;
106
- var hash = function hash(x) {
107
- return x.split('').reduce(function (a, b) {
108
- a = (a << 5) - a + b.charCodeAt(0);
109
- return a & a;
110
- }, 0);
111
- };
112
- return '#' + (hash(who) & 0xffffff | 0xc0c0c0).toString(16); // c0c0c0 or 808080 forces pale
113
- }
114
- function genUuid() {
115
- // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
116
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
117
- var r = Math.random() * 16 | 0;
118
- var v = c === 'x' ? r : r & 0x3 | 0x8;
119
- return v.toString(16);
120
- });
121
- }
122
-
123
- /** Sync a DOM table with an array of things
124
- *
125
- * @param {DomElement} table - will have a tr for each thing
126
- * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects
127
- * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing
128
- *
129
- * Tolerates out of order elements but puts new ones in order.
130
- * Can be used for any element type; does not have to be a table and tr.
131
- */
132
- function syncTableToArray(table, things, createNewRow) {
133
- var foundOne;
134
- var row;
135
- var i;
136
- for (i = 0; i < table.children.length; i++) {
137
- row = table.children[i];
138
- row.trashMe = true;
139
- }
140
- for (var g = 0; g < things.length; g++) {
141
- var thing = things[g];
142
- foundOne = false;
143
- for (i = 0; i < table.children.length; i++) {
144
- row = table.children[i];
145
- if (row.subject && row.subject.sameTerm(thing)) {
146
- row.trashMe = false;
147
- foundOne = true;
148
- break;
149
- }
150
- }
151
- if (!foundOne) {
152
- var newRow = createNewRow(thing);
153
- // Insert new row in position g in the table to match array
154
- if (g >= table.children.length) {
155
- table.appendChild(newRow);
156
- } else {
157
- var ele = table.children[g];
158
- table.insertBefore(newRow, ele);
159
- }
160
- newRow.subject = thing;
161
- } // if not foundOne
162
- } // loop g
163
-
164
- for (i = 0; i < table.children.length; i++) {
165
- row = table.children[i];
166
- if (row.trashMe) {
167
- table.removeChild(row);
168
- }
169
- }
170
- } // syncTableToArray
171
-
172
- /** Sync a DOM table with an array of things
173
- *
174
- * @param {DomElement} table - will have a tr for each thing
175
- * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates
176
- * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing
177
- *
178
- * Ensures order matches exacly. We will re-rder existing elements if necessary
179
- * Can be used for any element type; does not have to be a table and tr.
180
- * Any RDF node value can only appear ONCE in the array
181
- */
182
- function syncTableToArrayReOrdered(table, things, createNewRow) {
183
- var elementMap = {};
184
- for (var i = 0; i < table.children.length; i++) {
185
- var row = table.children[i];
186
- elementMap[row.subject.toNT()] = row; // More sophisticaed would be to have a bag of duplicates
187
- }
188
- for (var g = 0; g < things.length; g++) {
189
- var thing = things[g];
190
- if (g >= table.children.length) {
191
- // table needs extending
192
- var newRow = createNewRow(thing);
193
- newRow.subject = thing;
194
- table.appendChild(newRow);
195
- } else {
196
- var _row = table.children[g];
197
- if (_row.subject.sameTerm(thing)) {
198
- // ...
199
- } else {
200
- var existingRow = elementMap[thing.toNT()];
201
- if (existingRow) {
202
- table.removeChild(existingRow);
203
- table.insertBefore(existingRow, _row); // Insert existing row in place of this one
204
- } else {
205
- var _newRow = createNewRow(thing);
206
- _row.before(_newRow); // Insert existing row in place of this one
207
- _newRow.subject = thing;
208
- }
209
- }
210
- }
211
- } // loop g
212
- // Lop off any we don't need any more:
213
- while (table.children.length > things.length) {
214
- table.removeChild(table.children[table.children.length - 1]);
215
- }
216
- } // syncTableToArrayReOrdered
217
-
218
- /* Error stack to string for better diagnotsics
219
- **
220
- ** See http://snippets.dzone.com/posts/show/6632
221
- */
222
- function stackString(e) {
223
- var str = '' + e + '\n';
224
- var i;
225
- if (!e.stack) {
226
- return str + 'No stack available.\n';
227
- }
228
- var lines = e.stack.toString().split('\n');
229
- var toPrint = [];
230
- for (i = 0; i < lines.length; i++) {
231
- var line = lines[i];
232
- if (line.indexOf('ecmaunit.js') > -1) {
233
- // remove useless bit of traceback
234
- break;
235
- }
236
- if (line.charAt(0) === '(') {
237
- line = 'function' + line;
238
- }
239
- var chunks = line.split('@');
240
- toPrint.push(chunks);
241
- }
242
- // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl
243
-
244
- for (i = 0; i < toPrint.length; i++) {
245
- str += ' ' + toPrint[i][1] + '\n ' + toPrint[i][0];
246
- }
247
- return str;
248
- }
249
- function emptyNode(node) {
250
- var nodes = node.childNodes;
251
- var len = nodes.length;
252
- for (var i = len - 1; i >= 0; i--) node.removeChild(nodes[i]);
253
- return node;
254
- }
255
- function getTarget(e) {
256
- var target;
257
- e = e || window.event;
258
- if (e.target) target = e.target;else if (e.srcElement) target = e.srcElement;
259
- if (target.nodeType === 3) {
260
- // defeat Safari bug [sic]
261
- target = target.parentNode;
262
- }
263
- // UI.log.debug("Click on: " + target.tagName)
264
- return target;
265
- }
266
- function ancestor(target, tagName) {
267
- var level;
268
- for (level = target; level; level = level.parentNode) {
269
- // UI.log.debug("looking for "+tagName+" Level: "+level+" "+level.tagName)
270
- try {
271
- if (level.tagName === tagName) return level;
272
- } catch (e) {
273
- // can hit "TypeError: can't access dead object" in ffox
274
- return undefined;
275
- }
276
- }
277
- return undefined;
278
- }
279
- function getAbout(kb, target) {
280
- var level, aa;
281
- for (level = target; level && level.nodeType === 1; level = level.parentNode) {
282
- // UI.log.debug("Level "+level + ' '+level.nodeType + ': '+level.tagName)
283
- aa = level.getAttribute('about');
284
- if (aa) {
285
- // UI.log.debug("kb.fromNT(aa) = " + kb.fromNT(aa))
286
- return kb.fromNT(aa);
287
- // } else {
288
- // if (level.tagName=='TR') return undefined//this is to prevent literals passing through
289
- }
290
- }
291
- UI.log.debug('getAbout: No about found');
292
- return undefined;
293
- }
294
- function getTerm(target) {
295
- var statementTr = target.parentNode;
296
- var st = statementTr ? statementTr.AJAR_statement : undefined;
297
- var className = st ? target.className : ''; // if no st then it's necessary to use getAbout
298
- switch (className) {
299
- case 'pred':
300
- case 'pred selected':
301
- return st.predicate;
302
- case 'obj':
303
- case 'obj selected':
304
- if (!statementTr.AJAR_inverse) {
305
- return st.object;
306
- } else {
307
- return st.subject;
308
- }
309
- case '':
310
- case 'selected':
311
- // header TD
312
- return getAbout(_solidLogic.store, target);
313
- // kb to be changed
314
- case 'undetermined selected':
315
- return target.nextSibling ? st.predicate : !statementTr.AJAR_inverse ? st.object : st.subject;
316
- }
317
- }
318
- function include(document, linkstr) {
319
- var lnk = document.createElement('script');
320
- lnk.setAttribute('type', 'text/javascript');
321
- lnk.setAttribute('src', linkstr);
322
- // TODO:This needs to be fixed or no longer used.
323
- // document.getElementsByTagName('head')[0].appendChild(lnk)
324
- return lnk;
325
- }
326
- function addLoadEvent(func) {
327
- var oldonload = window.onload;
328
- if (typeof window.onload !== 'function') {
329
- window.onload = func;
330
- } else {
331
- window.onload = function () {
332
- oldonload();
333
- func();
334
- };
335
- }
336
- } // addLoadEvent
337
-
338
- // Find the position of an object relative to the window
339
- function findPos(obj) {
340
- // C&P from http://www.quirksmode.org/js/findpos.html
341
- var myDocument = obj.ownerDocument;
342
- var DocBox = myDocument.documentElement.getBoundingClientRect();
343
- var box = obj.getBoundingClientRect();
344
- return [box.left - DocBox.left, box.top - DocBox.top];
345
- }
346
- function getEyeFocus(element, instantly, isBottom, myWindow) {
347
- if (!myWindow) myWindow = window;
348
- var elementPosY = findPos(element)[1];
349
- var appContext = window.SolidAppContext || {};
350
- var scrollDiff = appContext && appContext.scroll || 52; // 52 = magic number for web-based version
351
- var totalScroll = elementPosY - scrollDiff - myWindow.scrollY;
352
- if (instantly) {
353
- if (isBottom) {
354
- myWindow.scrollBy(0, elementPosY + element.clientHeight - (myWindow.scrollY + myWindow.innerHeight));
355
- return;
356
- }
357
- myWindow.scrollBy(0, totalScroll);
358
- return;
359
- }
360
- var id = myWindow.setInterval(scrollAmount, 50);
361
- var times = 0;
362
- function scrollAmount() {
363
- myWindow.scrollBy(0, totalScroll / 10);
364
- times++;
365
- if (times === 10) {
366
- myWindow.clearInterval(id);
367
- }
368
- }
369
- }
370
- function AJARImage(src, alt, tt, doc) {
371
- if (!doc) {
372
- doc = document;
373
- }
374
- var image = doc.createElement('img');
375
- image.setAttribute('src', src);
376
- image.addEventListener('copy', function (e) {
377
- e.clipboardData.setData('text/plain', '');
378
- e.clipboardData.setData('text/html', '');
379
- e.preventDefault(); // We want no title data to be written to the clipboard
380
- });
381
- // if (typeof alt != 'undefined') // Messes up cut-and-paste of text
382
- // image.setAttribute('alt', alt)
383
- if (typeof tt !== 'undefined') {
384
- image.setAttribute('title', tt);
385
- }
386
- return image;
387
- }
388
-
389
- // Make short name for ontology
390
-
391
- function shortName(uri) {
392
- var p = uri;
393
- if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1);
394
- var namespaces = [];
395
- for (var _ns in this.prefixes) {
396
- namespaces[this.prefixes[_ns]] = _ns; // reverse index
397
- }
398
- var pok;
399
- var canUse = function canUse(pp) {
400
- // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format
401
- if (pp === 'ns') return false; // boring
402
- // if (pp in this.namespaces) return false; // already used
403
- // this.prefixes[uri] = pp;
404
- // this.namespaces[pp] = uri;
405
- pok = pp;
406
- return true;
407
- };
408
- var i;
409
- var hash = p.lastIndexOf('#');
410
- if (hash >= 0) p = p.slice(hash - 1); // lop off localid
411
- // eslint-disable-next-line no-unreachable-loop
412
- for (;;) {
413
- var slash = p.lastIndexOf('/');
414
- if (slash >= 0) p = p.slice(slash + 1);
415
- i = 0;
416
- while (i < p.length) {
417
- if (this.prefixchars.indexOf(p[i])) i++;else break;
418
- }
419
- p = p.slice(0, i);
420
- if (p.length < 6 && canUse(p)) return pok; // exact i sbest
421
- if (canUse(p.slice(0, 3))) return pok;
422
- if (canUse(p.slice(0, 2))) return pok;
423
- if (canUse(p.slice(0, 4))) return pok;
424
- if (canUse(p.slice(0, 1))) return pok;
425
- if (canUse(p.slice(0, 5))) return pok;
426
- for (i = 0;; i++) if (canUse(p.slice(0, 3) + i)) return pok;
427
- }
428
- }
429
-
430
- // Short name for an ontology
431
- function ontologyLabel(term) {
432
- if (term.uri === undefined) return '??';
433
- var s = term.uri;
434
- var namespaces = [];
435
- var i = s.lastIndexOf('#');
436
- var part;
437
- if (i >= 0) {
438
- s = s.slice(0, i + 1);
439
- } else {
440
- i = s.lastIndexOf('/');
441
- if (i >= 0) {
442
- s = s.slice(0, i + 1);
443
- } else {
444
- return term.uri + '?!'; // strange should have # or /
445
- }
446
- }
447
- for (var _ns2 in UI.ns) {
448
- namespaces[UI.ns[_ns2]] = _ns2; // reverse index
449
- }
450
- try {
451
- return namespaces[s];
452
- } catch (e) {}
453
- s = s.slice(0, -1); // Chop off delimiter ... now have just
454
-
455
- while (s) {
456
- i = s.lastIndexOf('/');
457
- if (i >= 0) {
458
- part = s.slice(i + 1);
459
- s = s.slice(0, i);
460
- if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {
461
- return part;
462
- }
463
- } else {
464
- return term.uri + '!?'; // strange should have a nice part
465
- }
466
- }
467
- }
468
- function labelWithOntology(x, initialCap) {
469
- var t = _solidLogic.store.findTypeURIs(x);
470
- if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {
471
- return (0, _label.label)(x, initialCap) + ' (' + ontologyLabel(x) + ')';
472
- }
473
- return (0, _label.label)(x, initialCap);
474
- }
475
- function escapeForXML(str) {
476
- return str.replace(/&/g, '&amp;').replace(/</g, '&lt;');
477
- }
478
-
479
- // As above but escaped for XML and chopped of contains a slash
480
- function labelForXML(x) {
481
- return escapeForXML((0, _label.label)(x));
482
- }
483
- function predicateLabelForXML(p, inverse) {
484
- return escapeForXML(predicateLabel(p, inverse));
485
- }
486
- // As above but for predicate, possibly inverse
487
- function predicateLabel(p, inverse) {
488
- var lab = (0, _label.label)(p);
489
- if (inverse) {
490
- // If we know an inverse predicate, use its label
491
- var ip = _solidLogic.store.any(p, UI.ns.owl('inverseOf')) || _solidLogic.store.any(undefined, UI.ns.owl('inverseOf'), p);
492
- if (ip) return (0, _label.label)(ip);
493
- if (lab === 'type') return '...'; // Not "is type of"
494
- return 'is ' + lab + ' of';
495
- }
496
- return lab;
497
- }
498
-
499
- // Not a method. For use in sorts
500
- function RDFComparePredicateObject(self, other) {
501
- var x = self.predicate.compareTerm(other.predicate);
502
- if (x !== 0) return x;
503
- return self.object.compareTerm(other.object);
504
- }
505
- function RDFComparePredicateSubject(self, other) {
506
- var x = self.predicate.compareTerm(other.predicate);
507
- if (x !== 0) return x;
508
- return self.subject.compareTerm(other.subject);
509
- }
510
- // ends
511
-
512
- function predParentOf(node) {
513
- var n = node;
514
- while (true) {
515
- if (n.getAttribute('predTR')) {
516
- return n;
517
- } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {
518
- n = n.previousSibling;
519
- } else {
520
- UI.log.error('Could not find predParent');
521
- return node;
522
- }
523
- }
524
- }
525
-
526
- // makeQueryRow moved to outline mode
527
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["log","_interopRequireWildcard","require","_solidLogic","ns","rdf","_label","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","UI","nextVariable","newVariableName","clearVariableNames","audioContext","AudioContext","window","webkitAudioContext","beep","ContextClass","ctx","duration","frequency","type","finishedCallback","osc","createOscillator","value","connect","destination","start","stop","hashColor","who","uri","hash","x","split","reduce","a","b","charCodeAt","toString","genUuid","replace","c","Math","random","v","syncTableToArray","table","things","createNewRow","foundOne","row","children","length","trashMe","g","thing","subject","sameTerm","newRow","appendChild","ele","insertBefore","removeChild","syncTableToArrayReOrdered","elementMap","toNT","existingRow","before","stackString","str","stack","lines","toPrint","line","indexOf","charAt","chunks","push","emptyNode","node","nodes","childNodes","len","getTarget","target","event","srcElement","nodeType","parentNode","ancestor","tagName","level","undefined","getAbout","kb","aa","getAttribute","fromNT","debug","getTerm","statementTr","st","AJAR_statement","className","predicate","AJAR_inverse","object","store","nextSibling","include","document","linkstr","lnk","createElement","setAttribute","addLoadEvent","func","oldonload","onload","findPos","obj","myDocument","ownerDocument","DocBox","documentElement","getBoundingClientRect","box","left","top","getEyeFocus","element","instantly","isBottom","myWindow","elementPosY","appContext","SolidAppContext","scrollDiff","scroll","totalScroll","scrollY","scrollBy","clientHeight","innerHeight","id","setInterval","scrollAmount","times","clearInterval","AJARImage","src","alt","tt","doc","image","addEventListener","clipboardData","setData","preventDefault","shortName","p","slice","namespaces","prefixes","pok","canUse","pp","lastIndexOf","slash","prefixchars","ontologyLabel","term","s","part","labelWithOntology","initialCap","findTypeURIs","rdfs","label","escapeForXML","labelForXML","predicateLabelForXML","inverse","predicateLabel","lab","ip","any","owl","RDFComparePredicateObject","self","other","compareTerm","RDFComparePredicateSubject","predParentOf","previousSibling","nodeName","error"],"sources":["../../src/utils/index.js"],"sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../log'\nimport { store } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"mappings":"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","ignoreList":[]}