solid-ui 2.5.1 → 2.6.0

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 (143) hide show
  1. package/README.md +4 -0
  2. package/dist/841.solid-ui.min.js +1 -1
  3. package/dist/841.solid-ui.min.js.map +1 -1
  4. package/dist/_2b19.solid-ui.js.map +1 -1
  5. package/dist/solid-ui.js +42754 -45728
  6. package/dist/solid-ui.js.map +1 -1
  7. package/dist/solid-ui.min.js +1 -1
  8. package/dist/solid-ui.min.js.LICENSE.txt +1 -5
  9. package/dist/solid-ui.min.js.map +1 -1
  10. package/lib/acl/access-controller.js +48 -49
  11. package/lib/acl/access-controller.js.map +1 -1
  12. package/lib/acl/access-groups.js +40 -40
  13. package/lib/acl/access-groups.js.map +1 -1
  14. package/lib/acl/acl-control.js +18 -19
  15. package/lib/acl/acl-control.js.map +1 -1
  16. package/lib/acl/acl.js +4 -5
  17. package/lib/acl/acl.js.map +1 -1
  18. package/lib/acl/add-agent-buttons.js +51 -52
  19. package/lib/acl/add-agent-buttons.js.map +1 -1
  20. package/lib/chat/bookmarks.js +76 -77
  21. package/lib/chat/bookmarks.js.map +1 -1
  22. package/lib/chat/chatLogic.js +74 -75
  23. package/lib/chat/chatLogic.js.map +1 -1
  24. package/lib/chat/dateFolder.js +66 -67
  25. package/lib/chat/dateFolder.js.map +1 -1
  26. package/lib/chat/infinite.js +218 -220
  27. package/lib/chat/infinite.js.map +1 -1
  28. package/lib/chat/keys.js +62 -63
  29. package/lib/chat/keys.js.map +1 -1
  30. package/lib/chat/message.js +98 -100
  31. package/lib/chat/message.js.map +1 -1
  32. package/lib/chat/messageTools.js +99 -100
  33. package/lib/chat/messageTools.js.map +1 -1
  34. package/lib/chat/signature.d.ts.map +1 -1
  35. package/lib/chat/signature.js +0 -1
  36. package/lib/chat/signature.js.map +1 -1
  37. package/lib/chat/thread.js +57 -61
  38. package/lib/chat/thread.js.map +1 -1
  39. package/lib/create/create.js +1 -2
  40. package/lib/create/create.js.map +1 -1
  41. package/lib/folders.js +1 -4
  42. package/lib/folders.js.map +1 -1
  43. package/lib/footer/index.d.ts.map +1 -1
  44. package/lib/footer/index.js +14 -16
  45. package/lib/footer/index.js.map +1 -1
  46. package/lib/header/index.js +34 -36
  47. package/lib/header/index.js.map +1 -1
  48. package/lib/iconBase.d.ts.map +1 -1
  49. package/lib/iconBase.js +0 -1
  50. package/lib/iconBase.js.map +1 -1
  51. package/lib/index.d.ts +1 -1
  52. package/lib/index.d.ts.map +1 -1
  53. package/lib/index.js +5 -5
  54. package/lib/index.js.map +1 -1
  55. package/lib/log.d.ts +7 -7
  56. package/lib/log.d.ts.map +1 -1
  57. package/lib/log.js +2 -2
  58. package/lib/log.js.map +1 -1
  59. package/lib/login/login.js +217 -222
  60. package/lib/login/login.js.map +1 -1
  61. package/lib/matrix/matrix.js +1 -2
  62. package/lib/matrix/matrix.js.map +1 -1
  63. package/lib/matrix/types.js.map +1 -1
  64. package/lib/media/media-capture.js +3 -4
  65. package/lib/media/media-capture.js.map +1 -1
  66. package/lib/messageArea.js +1 -4
  67. package/lib/messageArea.js.map +1 -1
  68. package/lib/ns.js +1 -2
  69. package/lib/ns.js.map +1 -1
  70. package/lib/pad.js +1 -2
  71. package/lib/pad.js.map +1 -1
  72. package/lib/participation.js +1 -2
  73. package/lib/participation.js.map +1 -1
  74. package/lib/preferences.js +1 -2
  75. package/lib/preferences.js.map +1 -1
  76. package/lib/table.js +1 -2
  77. package/lib/table.js.map +1 -1
  78. package/lib/tabs.d.ts.map +1 -1
  79. package/lib/tabs.js +1 -2
  80. package/lib/tabs.js.map +1 -1
  81. package/lib/utils/headerFooterHelpers.d.ts.map +1 -1
  82. package/lib/utils/headerFooterHelpers.js +36 -36
  83. package/lib/utils/headerFooterHelpers.js.map +1 -1
  84. package/lib/utils/index.js +1 -2
  85. package/lib/utils/index.js.map +1 -1
  86. package/lib/utils/keyHelpers/accessData.d.ts.map +1 -1
  87. package/lib/utils/keyHelpers/accessData.js +33 -34
  88. package/lib/utils/keyHelpers/accessData.js.map +1 -1
  89. package/lib/utils/keyHelpers/acl.d.ts.map +1 -1
  90. package/lib/utils/keyHelpers/acl.js +21 -22
  91. package/lib/utils/keyHelpers/acl.js.map +1 -1
  92. package/lib/utils/keyHelpers/otherHelpers.d.ts.map +1 -1
  93. package/lib/utils/keyHelpers/otherHelpers.js +1 -2
  94. package/lib/utils/keyHelpers/otherHelpers.js.map +1 -1
  95. package/lib/utils/label.js +1 -2
  96. package/lib/utils/label.js.map +1 -1
  97. package/lib/versionInfo.d.ts +4 -3
  98. package/lib/versionInfo.d.ts.map +1 -1
  99. package/lib/versionInfo.js +30 -30
  100. package/lib/versionInfo.js.map +1 -1
  101. package/lib/widgets/buttons/iconLinks.d.ts.map +1 -1
  102. package/lib/widgets/buttons/iconLinks.js +2 -2
  103. package/lib/widgets/buttons/iconLinks.js.map +1 -1
  104. package/lib/widgets/buttons.d.ts +1 -1
  105. package/lib/widgets/buttons.d.ts.map +1 -1
  106. package/lib/widgets/buttons.js +1 -3
  107. package/lib/widgets/buttons.js.map +1 -1
  108. package/lib/widgets/dragAndDrop.js +1 -2
  109. package/lib/widgets/dragAndDrop.js.map +1 -1
  110. package/lib/widgets/error.js +1 -2
  111. package/lib/widgets/error.js.map +1 -1
  112. package/lib/widgets/forms/autocomplete/autocompleteBar.js +47 -48
  113. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  114. package/lib/widgets/forms/autocomplete/autocompleteField.js +38 -39
  115. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  116. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
  117. package/lib/widgets/forms/autocomplete/autocompletePicker.js +44 -45
  118. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  119. package/lib/widgets/forms/autocomplete/language.js +23 -24
  120. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  121. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  122. package/lib/widgets/forms/autocomplete/publicData.js +91 -93
  123. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  124. package/lib/widgets/forms/basic.js +2 -3
  125. package/lib/widgets/forms/basic.js.map +1 -1
  126. package/lib/widgets/forms/comment.js +1 -2
  127. package/lib/widgets/forms/comment.js.map +1 -1
  128. package/lib/widgets/forms/fieldParams.js +1 -2
  129. package/lib/widgets/forms/fieldParams.js.map +1 -1
  130. package/lib/widgets/forms/formStyle.js +1 -2
  131. package/lib/widgets/forms/formStyle.js.map +1 -1
  132. package/lib/widgets/forms.js +79 -80
  133. package/lib/widgets/forms.js.map +1 -1
  134. package/lib/widgets/index.js +1 -2
  135. package/lib/widgets/index.js.map +1 -1
  136. package/lib/widgets/multiSelect.js +1 -2
  137. package/lib/widgets/multiSelect.js.map +1 -1
  138. package/lib/widgets/peoplePicker.js +1 -2
  139. package/lib/widgets/peoplePicker.js.map +1 -1
  140. package/lib/widgets/widgetHelpers.d.ts.map +1 -1
  141. package/lib/widgets/widgetHelpers.js +3 -3
  142. package/lib/widgets/widgetHelpers.js.map +1 -1
  143. package/package.json +57 -57
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../src/widgets/buttons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../src/widgets/buttons.ts"],"names":[],"mappings":"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"}
@@ -56,8 +56,7 @@ var utils = _interopRequireWildcard(require("../utils"));
56
56
  var _error = require("./error");
57
57
  var _widgetHelpers = require("./widgetHelpers");
58
58
  var _iconLinks = require("./buttons/iconLinks");
59
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
60
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
59
+ 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); }
61
60
  /* Buttons
62
61
  */
63
62
 
@@ -615,7 +614,6 @@ function continueButton(dom, handler) {
615
614
  * @returns: a promise of (a name or null if cancelled)
616
615
  */
617
616
  function askName(dom, kb, container, predicate, theClass, noun) {
618
- // eslint-disable-next-line promise/param-names
619
617
  return new Promise(function (resolve, _reject) {
620
618
  var form = dom.createElement('div'); // form is broken as HTML behaviour can resurface on js error
621
619
  // classLabel = utils.label(ns.vcard('Individual'))
@@ -1 +1 @@
1
- {"version":3,"file":"buttons.js","names":["_rdflib","require","_iconBase","ns","_interopRequireWildcard","style","debug","_log","_dragAndDrop","_solidLogic","utils","_error","_widgetHelpers","_iconLinks","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","iconBase","icons","cancelIconURI","checkIconURI","getStatusArea","context","box","statusArea","div","dom","document","body","getElementsByTagName","createElement","insertBefore","firstElementChild","complain","err","ele","log","appendChild","errorMessageBlock","alert","clearElement","firstChild","removeChild","extractLogURI","fullURI","logPos","search","rulPos","substring","shortDate","str","noTime","month","nowZ","Date","toISOString","slice","parseInt","formatDateTime","date","format","split","map","s","k","width","Milliseconds","FullYear","d","Month","join","timestamp","shortTime","setName","element","x","kb","store","findName","name","any","vcard","foaf","value","sameTerm","textContent","label","uri","fetcher","Error","nowOrWhenFetched","doc","undefined","_ok","imagesOf","each","sioc","concat","iconForClass","exports","tempSite","p","indexOf","q","findImageFromURI","iconDir","length","startsWith","findImage","thing","rdf","image","trySetImage","iconForClassMap","explitImage","setAttribute","typeIcon","classIconStyle","schemeIcon","types","findTypeURIs","typeURI","setImage","pref","id","theClass","happy","ok","faviconOrDefault","iconStyle","isOrigin","parts","res","renderDeleteConfirmPopup","refererenceElement","prompt","deleteFunction","removePopup","parentElement","removePopupAndDoDeletion","popup","confirmPopupStyle","position","top","display","gridTemplateColumns","affirm","gridColumn","gridRow","cancel","xButton","cancelButton","cancelPrompt","buttonStyle","affirmIcon","button","sureButtonElt","addEventListener","deleteButtonWithCheck","container","noun","createPopup","deleteButton","minusIconURI","smallButtonStyle","title","classList","add","iconURI","text","handler","options","arguments","buttonColor","needsBorder","img","toLocaleUpperCase","onmouseover","secondaryButtonNoBorderHover","secondaryButtonHover","primaryButtonNoBorderHover","primaryButtonHover","onmouseout","secondaryButtonNoBorder","secondaryButton","primaryButtonNoBorder","primaryButton","b","opacity","continueButton","askName","predicate","Promise","resolve","_reject","form","namefield","textInputStyle","select","gotName","parentNode","trim","keyCode","_event","focus","personTR","renderAsRow","pred","obj","tr","td1","td2","td3","link","anchor","linkIcon","draggable","makeDraggable","subject","createNameDiv","nameDiv","createLinkDiv","linkDiv","linkDivStyle","createLinkForURI","renderAsDiv","renderAsDivStyle","createImageDiv","clickable","onClickFunction","addClickListenerToElement","wrapInATR","wrapDivInATR","refreshTree","root","refresh","children","attachmentList","deleteAttachment","target","updater","update","st","errorBody","_xhr","createNewRow","theTarget","opt","modify","things","sort","syncTableToArray","attachmentTable","droppedURIHandler","uris","ins","forEach","sym","push","droppedFileHandler","files","_options$uploadFolder","_options$uploadFolder2","uploadFiles","uploadFolder","theFile","destURI","promptIcon","wf","attachmentOuter","attachmentOne","attachmentLeft","attachmentRight","paperclip","fhandler","makeDropTarget","buttonDiv","fileUploadButtonDiv","openHrefInOutlineMode","preventDefault","stopPropagation","getTarget","getAttribute","window","outlineManager","GotoSubject","panes","getOutliner","defaultAnnotationStore","hash","slash","lastIndexOf","allClassURIs","statementsMatching","object","rdfs","c","propertyTriage","possibleProperties","dp","op","no","nd","nu","pi","predicateIndex","termType","ps","toNT","info","linkButton","removeButton","selectorPanel","type","inverse","possible","callbackFunction","linkCallback","selectorPanelRefresh","list","style0","selected","innerHTML","refreshItem","item","setStyle","already","iconDiv","connectIcon","f","index","twoLine","widgetForClass","nav","event","twoLineDefault","twoLineWidgetForClass","widget","sup","findSuperClassesNT","cl","fromNT","twoLineTransaction","failed","enc","y","qu","escapeForXML","twoLineTrip","dc","cal","addStyleSheet","href","links","querySelectorAll","isAudio","file","isImage","isVideo","kind","dcCLasses","audio","video","what","typeURIs","prefix","Util","mediaTypeClass","input","buttonElt","click","line"],"sources":["../../src/widgets/buttons.ts"],"sourcesContent":["/* Buttons\n*/\nimport { IndexedFormula, NamedNode, st, sym, uri, Util } from 'rdflib'\nimport { icons } from '../iconBase'\nimport * as ns from '../ns'\nimport * as style from '../style'\nimport * as debug from '../debug'\nimport { info } from '../log'\nimport { uploadFiles, makeDraggable, makeDropTarget } from './dragAndDrop'\nimport { store } from 'solid-logic'\nimport * as utils from '../utils'\nimport { errorMessageBlock } from './error'\nimport { addClickListenerToElement, createImageDiv, wrapDivInATR } from './widgetHelpers'\nimport { linkIcon, createLinkForURI } from './buttons/iconLinks'\n\n/**\n * UI Widgets such as buttons\n * @packageDocumentation\n */\n\n/* global alert */\n\nconst { iconBase } = icons\n\nconst cancelIconURI = iconBase + 'noun_1180156.svg' // black X\nconst checkIconURI = iconBase + 'noun_1180158.svg' // green checkmark; Continue\n\nexport type StatusAreaContext = {\n statusArea?: HTMLElement\n div?: HTMLElement\n dom?: HTMLDocument\n}\nexport type ButtonType = 'Primary' | 'Secondary'\n\nexport type ButtonWidgetOptions = {\n buttonColor?: ButtonType,\n needsBorder?: boolean\n}\n\nexport type RenderAsDivOptions = {\n image?: HTMLImageElement,\n title?: string,\n deleteFunction?: () => void,\n link?: boolean,\n noun?: string,\n draggable?: boolean,\n clickable?: boolean,\n onClickFunction?: () => void,\n wrapInATR?: boolean\n}\n\nfunction getStatusArea (context?: StatusAreaContext) {\n let box = (context && context.statusArea) || (context && context.div) || null\n if (box) return box\n let dom = context && context.dom\n if (!dom && typeof document !== 'undefined') {\n dom = document\n }\n if (dom) {\n const body = dom.getElementsByTagName('body')[0]\n box = dom.createElement('div')\n body.insertBefore((box as unknown as HTMLElement), body.firstElementChild)\n if (context) {\n context.statusArea = (box as unknown as HTMLElement)\n }\n return box\n }\n return null\n}\n\n/**\n * Display an error message block\n */\nexport function complain (context?: StatusAreaContext, err?: string) {\n if (!err) return // only if error\n const ele = getStatusArea(context)\n debug.log('Complaint: ' + err)\n if (ele) ele.appendChild(errorMessageBlock((context && context.dom) || document, err))\n else alert(err)\n}\n\n/**\n * Remove all the children of an HTML element\n */\nexport function clearElement (ele: HTMLElement) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n}\n\n/**\n * To figure out the log URI from the full URI used to invoke the reasoner\n */\nexport function extractLogURI (fullURI) {\n const logPos = fullURI.search(/logFile=/)\n const rulPos = fullURI.search(/&rulesFile=/)\n return fullURI.substring(logPos + 8, rulPos)\n}\n\n/**\n * By default, converts e.g. '2020-02-19T19:35:28.557Z' to '19:35'\n * if today is 19 Feb 2020, and to 'Feb 19' if not.\n * @@@ TODO This needs to be changed to local time\n * @param noTime Return a string like 'Feb 19' even if it's today.\n */\nexport function shortDate (str?: string, noTime?: boolean): string {\n if (!str) return '???'\n const month = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n try {\n const nowZ = new Date().toISOString()\n // var nowZ = $rdf.term(now).value\n // var n = now.getTimezoneOffset() // Minutes\n if (str.slice(0, 10) === nowZ.slice(0, 10) && !noTime) {\n return str.slice(11, 16)\n }\n if (str.slice(0, 4) === nowZ.slice(0, 4)) {\n return (\n month[parseInt(str.slice(5, 7), 10) - 1] +\n ' ' +\n parseInt(str.slice(8, 10), 10)\n )\n }\n return str.slice(0, 10)\n } catch (e) {\n return 'shortdate:' + e\n }\n}\n\n/**\n * Format a date and time\n * @param date for instance `new Date()`\n * @param format for instance '{FullYear}-{Month}-{Date}T{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n * @returns for instance '2000-01-15T23:14:23.002'\n */\nexport function formatDateTime (date: Date, format: string): string {\n return format\n .split('{')\n .map(function (s) {\n const k = s.split('}')[0]\n const width = { Milliseconds: 3, FullYear: 4 }\n const d = { Month: 1 }\n return s\n ? ('000' + (date['get' + k]() + (d[k] || 0))).slice(-(width[k] || 2)) + s.split('}')[1]\n : ''\n })\n .join('')\n}\n\n/**\n * Get a string representation of the current time\n * @returns for instance '2000-01-15T23:14:23.002'\n */\nexport function timestamp (): string {\n return formatDateTime(\n new Date(),\n '{FullYear}-{Month}-{Date}T{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n )\n}\n\n/**\n * Get a short string representation of the current time\n * @returns for instance '23:14:23.002'\n */\nexport function shortTime (): string {\n return formatDateTime(\n new Date(),\n '{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n )\n}\n\n// ///////////////////// Handy UX widgets\n\n/**\n * Sets the best name we have and looks up a better one\n */\nexport function setName (element: HTMLElement, x: NamedNode) {\n const kb = store\n const findName = function (x) {\n const name =\n kb.any(x, ns.vcard('fn')) ||\n kb.any(x, ns.foaf('name')) ||\n kb.any(x, ns.vcard('organization-name'))\n return name ? name.value : null\n }\n const name = x.sameTerm(ns.foaf('Agent')) ? 'Everyone' : findName(x)\n element.textContent = name || utils.label(x)\n if (!name && x.uri) {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n // Note this is only a fetch, not a lookUP of all sameAs etc\n kb.fetcher.nowOrWhenFetched(x.doc(), undefined, function (_ok) {\n element.textContent = findName(x) || utils.label(x) // had: (ok ? '' : '? ') +\n })\n }\n}\n\n/**\n * Set of suitable images\n * See also [[findImage]]\n * @param x The thing for which we want to find an image\n * @param kb The RDF store to look in\n * @returns It goes looking for triples in `kb`,\n * `(subject: x), (predicate: see list below) (object: image-url)`\n * to find any image linked from the thing with one of the following\n * predicates (in order):\n * * ns.sioc('avatar')\n * * ns.foaf('img')\n * * ns.vcard('logo')\n * * ns.vcard('hasPhoto')\n * * ns.vcard('photo')\n * * ns.foaf('depiction')\n\n */\nexport function imagesOf (x: NamedNode | null, kb: IndexedFormula): any[] {\n return kb\n .each(x, ns.sioc('avatar'))\n .concat(kb.each(x, ns.foaf('img')))\n .concat(kb.each(x, ns.vcard('logo')))\n .concat(kb.each(x, ns.vcard('hasPhoto')))\n .concat(kb.each(x, ns.vcard('photo')))\n .concat(kb.each(x, ns.foaf('depiction')))\n}\n\n/**\n * Best logo or avatar or photo etc to represent someone or some group etc\n */\nexport const iconForClass = {\n // Potentially extendable by other apps, panes, etc\n // Relative URIs to the iconBase\n 'solid:AppProviderClass': 'noun_144.svg', // @@ classs name should not contain 'Class'\n 'solid:AppProvider': 'noun_15177.svg', // @@\n 'solid:Pod': 'noun_Cabinet_1434380.svg',\n 'vcard:Group': 'noun_339237.svg',\n 'vcard:Organization': 'noun_143899.svg',\n 'vcard:Individual': 'noun_15059.svg',\n 'schema:Person': 'noun_15059.svg',\n 'foaf:Person': 'noun_15059.svg',\n 'foaf:Agent': 'noun_98053.svg',\n 'acl:AuthenticatedAgent': 'noun_99101.svg',\n 'prov:SoftwareAgent': 'noun_Robot_849764.svg', // Bot\n 'vcard:AddressBook': 'noun_15695.svg',\n 'trip:Trip': 'noun_581629.svg',\n 'meeting:LongChat': 'noun_1689339.svg',\n 'meeting:Meeting': 'noun_66617.svg',\n 'meeting:Project': 'noun_1036577.svg',\n 'ui:Form': 'noun_122196.svg',\n 'rdfs:Class': 'class-rectangle.svg', // For RDF developers\n 'rdf:Property': 'property-diamond.svg',\n 'owl:Ontology': 'noun_classification_1479198.svg',\n 'wf:Tracker': 'noun_122196.svg',\n 'wf:Task': 'noun_17020_gray-tick.svg',\n 'wf:Open': 'noun_17020_sans-tick.svg',\n 'wf:Closed': 'noun_17020.svg'\n}\n\n/**\n * Returns the origin of the URI of a NamedNode\n */\nfunction tempSite (x: NamedNode) {\n // use only while one in rdflib fails with origins 2019\n const str = x.uri.split('#')[0]\n const p = str.indexOf('//')\n if (p < 0) throw new Error('This URI does not have a web site part (origin)')\n const q = str.indexOf('/', p + 2)\n if (q < 0) {\n // no third slash?\n return str.slice(0) + '/' // Add slash to a bare origin\n } else {\n return str.slice(0, q + 1)\n }\n}\n\n/**\n * Find an image for this thing as a class\n */\nexport function findImageFromURI (x: NamedNode | string): string | null {\n const iconDir = iconBase\n\n // Special cases from URI scheme:\n if (typeof x !== 'string' && x.uri) {\n if (\n x.uri.split('/').length === 4 &&\n !x.uri.split('/')[1] &&\n !x.uri.split('/')[3]\n ) {\n return iconDir + 'noun_15177.svg' // App -- this is an origin\n }\n // Non-HTTP URI types imply types\n if (x.uri.startsWith('message:') || x.uri.startsWith('mid:')) {\n // message: is apple bug-- should be mid:\n return iconDir + 'noun_480183.svg' // envelope noun_567486\n }\n if (x.uri.startsWith('mailto:')) {\n return iconDir + 'noun_567486.svg' // mailbox - an email desitination\n }\n // For HTTP(s) documents, we could look at the MIME type if we know it.\n if (x.uri.startsWith('https:') && x.uri.indexOf('#') < 0) {\n return tempSite(x) + 'favicon.ico' // was x.site().uri + ...\n // Todo: make the document icon a fallback for if the favicon does not exist\n // todo: pick up a possible favicon for the web page itself from a link\n // was: return iconDir + 'noun_681601.svg' // document - under solid assumptions\n }\n return null\n }\n\n return iconDir + 'noun_10636_grey.svg' // Grey Circle - some thing\n}\n\n/**\n * Find something we have as explicit image data for the thing\n * See also [[imagesOf]]\n * @param thing The thing for which we want to find an image\n * @returns The URL of a globe icon if thing equals `ns.foaf('Agent')`\n * or `ns.rdf('Resource')`. Otherwise, it goes looking for\n * triples in `store`,\n * `(subject: thing), (predicate: see list below) (object: image-url)`\n * to find any image linked from the thing with one of the following\n * predicates (in order):\n * * ns.sioc('avatar')\n * * ns.foaf('img')\n * * ns.vcard('logo')\n * * ns.vcard('hasPhoto')\n * * ns.vcard('photo')\n * * ns.foaf('depiction')\n */\nexport function findImage (thing: NamedNode): string {\n const kb = store\n const iconDir = iconBase\n if (thing.sameTerm(ns.foaf('Agent')) || thing.sameTerm(ns.rdf('Resource'))) {\n return iconDir + 'noun_98053.svg' // Globe\n }\n const image =\n kb.any(thing, ns.sioc('avatar')) ||\n kb.any(thing, ns.foaf('img')) ||\n kb.any(thing, ns.vcard('logo')) ||\n kb.any(thing, ns.vcard('hasPhoto')) ||\n kb.any(thing, ns.vcard('photo')) ||\n kb.any(thing, ns.foaf('depiction'))\n return image ? (image as any).uri : null\n}\n\n/**\n * Do the best you can with the data available\n *\n * @return {Boolean} Are we happy with this icon?\n * Sets src AND STYLE of the image.\n */\nfunction trySetImage (element, thing, iconForClassMap) {\n const kb = store\n\n const explitImage = findImage(thing)\n if (explitImage) {\n element.setAttribute('src', explitImage)\n return true\n }\n // This is one of the classes we know about - the class itself?\n const typeIcon = iconForClassMap[thing.uri]\n if (typeIcon) {\n element.setAttribute('src', typeIcon)\n element.style = style.classIconStyle\n // element.style.border = '0.1em solid green;'\n // element.style.backgroundColor = '#eeffee' // pale green\n return true\n }\n const schemeIcon = findImageFromURI(thing)\n if (schemeIcon) {\n element.setAttribute('src', schemeIcon)\n return true // happy with this -- don't look it up\n }\n\n // Do we have a generic icon for something in any class its in?\n const types = kb.findTypeURIs(thing)\n for (const typeURI in types) {\n if (iconForClassMap[typeURI]) {\n element.setAttribute('src', iconForClassMap[typeURI])\n return false // maybe we can do better\n }\n }\n element.setAttribute('src', iconBase + 'noun_10636_grey.svg') // Grey Circle - some thing\n return false // we can do better\n}\n\n/**\n * ToDo: Also add icons for *properties* like home, work, email, range, domain, comment,\n */\nexport function setImage (element: HTMLElement, thing: NamedNode) { // 20191230a\n const kb = store\n\n const iconForClassMap = {}\n for (const k in iconForClass) {\n const pref = k.split(':')[0]\n const id = k.split(':')[1]\n const theClass = ns[pref](id)\n iconForClassMap[theClass.uri] = uri.join(iconForClass[k], iconBase)\n }\n\n const happy = trySetImage(element, thing, iconForClassMap)\n if (!happy && thing.uri) {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(thing.doc(), undefined, (ok) => {\n if (ok) {\n trySetImage(element, thing, iconForClassMap)\n }\n })\n }\n}\n\n// If a web page, then a favicon, with a fallback to ???\n// See, e.g., http://stackoverflow.com/questions/980855/inputting-a-default-image\nexport function faviconOrDefault (dom: HTMLDocument, x: NamedNode) {\n const image = dom.createElement('img')\n ;(image as any).style = style.iconStyle\n const isOrigin = function (x) {\n if (!x.uri) return false\n const parts = x.uri.split('/')\n return parts.length === 3 || (parts.length === 4 && parts[3] === '')\n }\n image.setAttribute(\n 'src',\n iconBase + (isOrigin(x) ? 'noun_15177.svg' : 'noun_681601.svg') // App symbol vs document\n )\n if (x.uri && x.uri.startsWith('https:') && x.uri.indexOf('#') < 0) {\n const res = dom.createElement('object') // favico with a fallback of a default image if no favicon\n res.setAttribute('data', tempSite(x) + 'favicon.ico')\n res.setAttribute('type', 'image/x-icon')\n res.appendChild(image) // fallback\n return res\n } else {\n setImage(image, x)\n return image\n }\n}\n\n/* Two-option dialog pop-up\n*/\n\nfunction renderDeleteConfirmPopup (dom, refererenceElement, prompt, deleteFunction) {\n function removePopup () {\n refererenceElement.parentElement.removeChild(refererenceElement)\n }\n function removePopupAndDoDeletion () {\n removePopup()\n deleteFunction()\n }\n const popup = dom.createElement('div')\n popup.style = style.confirmPopupStyle\n popup.style.position = 'absolute'\n popup.style.top = '-1em' // try leaving original button clear\n\n popup.style.display = 'grid'\n popup.style.gridTemplateColumns = 'auto auto'\n const affirm = dom.createElement('div')\n affirm.style.gridColumn = '1/2'\n affirm.style.gridRow = '1' // @@ sigh; TS. could pass number in fact\n const cancel = dom.createElement('div')\n cancel.style.gridColumn = '1/2'\n cancel.style.gridRow = '2'\n\n const xButton = cancelButton(dom, removePopup)\n popup.appendChild(xButton)\n xButton.style.gridColumn = '1'\n xButton.style.gridRow = '2'\n\n const cancelPrompt = popup.appendChild(dom.createElement('button'))\n cancelPrompt.style = style.buttonStyle\n cancelPrompt.style.gridRow = '2'\n cancelPrompt.style.gridColumn = '2'\n cancelPrompt.textContent = 'Cancel' // @@ I18n\n\n const affirmIcon = button(dom, icons.iconBase + 'noun_925021.svg', 'Delete it') // trashcan\n popup.appendChild(affirmIcon)\n affirmIcon.style.gridRow = '1'\n affirmIcon.style.gridColumn = '1'\n\n const sureButtonElt = popup.appendChild(dom.createElement('button'))\n sureButtonElt.style = style.buttonStyle\n sureButtonElt.style.gridRow = '1'\n sureButtonElt.style.gridColumn = '2'\n sureButtonElt.textContent = prompt\n popup.appendChild(sureButtonElt)\n\n affirmIcon.addEventListener('click', removePopupAndDoDeletion)\n sureButtonElt.addEventListener('click', removePopupAndDoDeletion)\n\n // xButton.addEventListener('click', removePopup)\n cancelPrompt.addEventListener('click', removePopup)\n\n return popup\n}\n/**\n * Delete button with a check you really mean it\n * @@ Supress check if command key held down?\n */\nexport function deleteButtonWithCheck (\n dom: HTMLDocument,\n container: HTMLElement,\n noun: string,\n deleteFunction: () => any\n) {\n function createPopup () {\n const refererenceElement = dom.createElement('div')\n container.insertBefore(refererenceElement, deleteButton)\n refererenceElement.style.position = 'relative' // Needed as reference for popup\n refererenceElement.appendChild(renderDeleteConfirmPopup(dom, refererenceElement, prompt, deleteFunction))\n }\n const minusIconURI = iconBase + 'noun_2188_red.svg' // white minus in red #cc0000 circle\n const deleteButton = dom.createElement('img')\n deleteButton.setAttribute('src', minusIconURI)\n\n deleteButton.setAttribute('style', style.smallButtonStyle) // @@tsc - would set deleteButton.style\n deleteButton.style.float = 'right' // Historically this has alwaus floated right\n\n const prompt = 'Remove this ' + noun\n deleteButton.title = prompt\n // @@ In an ideal world, make use of hover an accessibility option\n deleteButton.classList.add('hoverControlHide')\n\n deleteButton.addEventListener('click', createPopup)\n\n container.classList.add('hoverControl')\n container.appendChild(deleteButton)\n deleteButton.setAttribute('data-testid', 'deleteButtonWithCheck')\n return deleteButton // or button div? caller may change size of image\n}\n\n/* Make a button\n *\n * @param dom - the DOM document object\n * @Param iconURI - the URI of the icon to use (if any)\n * @param text - the tooltip text or possibly button contents text\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function button (dom: HTMLDocument, iconURI: string | undefined, text: string,\n handler?: (_event: any) => void,\n options: ButtonWidgetOptions = { buttonColor: 'Primary', needsBorder: false }) {\n const button = dom.createElement('button')\n button.setAttribute('type', 'button')\n // button.innerHTML = text // later, user preferences may make text preferred for some\n if (iconURI) {\n const img = button.appendChild(dom.createElement('img'))\n img.setAttribute('src', iconURI)\n img.setAttribute('style', 'width: 2em; height: 2em;') // trial and error. 2em disappears\n img.title = text\n button.setAttribute('style', style.buttonStyle)\n } else {\n button.textContent = text.toLocaleUpperCase()\n\n button.onmouseover = function () {\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorderHover)\n } else {\n button.setAttribute('style', style.secondaryButtonHover)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorderHover)\n } else {\n button.setAttribute('style', style.primaryButtonHover)\n }\n }\n }\n button.onmouseout = function () {\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.secondaryButton)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.primaryButton)\n }\n }\n }\n\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.secondaryButton)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.primaryButton)\n }\n }\n }\n\n if (handler) {\n button.addEventListener('click', handler, false)\n }\n return button\n}\n\n/* Make a cancel button\n *\n * @param dom - the DOM document object\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function cancelButton (dom: HTMLDocument, handler: (_event?: any) => void) {\n const b = button(dom, cancelIconURI, 'Cancel', handler)\n if (b.firstChild) { // sigh for tsc\n (b.firstChild as HTMLElement).style.opacity = '0.3' // Black X is too harsh: current language is grey X\n }\n return b\n}\n\n/* Make a continue button\n *\n * @param dom - the DOM document object\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function continueButton (dom: HTMLDocument, handler: (_event: any) => void) {\n return button(dom, checkIconURI, 'Continue', handler)\n}\n\n/* Grab a name for a new thing\n *\n * Form to get the name of a new thing before we create it\n * @params theClass Misspelt to avoid clashing with the JavaScript keyword\n * @returns: a promise of (a name or null if cancelled)\n */\nexport function askName (\n dom: HTMLDocument,\n kb: IndexedFormula,\n container: HTMLDivElement,\n predicate?: NamedNode,\n theClass?: NamedNode,\n noun?: string) {\n // eslint-disable-next-line promise/param-names\n return new Promise(function (resolve, _reject) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n // classLabel = utils.label(ns.vcard('Individual'))\n predicate = predicate || ns.foaf('name') // eg 'name' in user's language\n noun = noun || (theClass ? utils.label(theClass) : ' ') // eg 'folder' in users's language\n const prompt = noun + ' ' + utils.label(predicate) + ': '\n form.appendChild(dom.createElement('p')).textContent = prompt\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '100')\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.setAttribute('style', style.textInputStyle)\n namefield.select() // focus next user input\n form.appendChild(namefield)\n container.appendChild(form)\n\n // namefield.focus()\n\n function gotName () {\n ((form as HTMLElement).parentNode as HTMLElement).removeChild(form)\n resolve(namefield.value.trim())\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n\n form.appendChild(dom.createElement('br'))\n\n form.appendChild(cancelButton(dom, function (_event) {\n ((form as HTMLElement).parentNode as HTMLElement).removeChild(form)\n resolve(null)\n }))\n\n form.appendChild(continueButton(dom, function (_event) {\n gotName()\n }))\n namefield.focus()\n }) // Promise\n}\n\n/**\n * A TR to represent a draggable person, etc in a list\n *\n * pred is unused param at the moment\n */\nexport const personTR = renderAsRow // The legacy name is used in a lot of places\n\nexport function renderAsRow (dom: HTMLDocument, pred: NamedNode, obj: NamedNode, options: any): HTMLTableRowElement {\n const tr = dom.createElement('tr')\n options = options || {}\n // tr.predObj = [pred.uri, obj.uri] moved to acl-control\n const td1 = tr.appendChild(dom.createElement('td'))\n const td2 = tr.appendChild(dom.createElement('td'))\n const td3 = tr.appendChild(dom.createElement('td'))\n\n // const image = td1.appendChild(dom.createElement('img'))\n const image = options.image || faviconOrDefault(dom, obj)\n\n td1.setAttribute('style', 'vertical-align: middle; width:2.5em; padding:0.5em; height: 2.5em;')\n td2.setAttribute('style', 'vertical-align: middle; text-align:left;')\n td3.setAttribute('style', 'vertical-align: middle; width:2em; padding:0.5em; height: 4em;')\n td1.appendChild(image)\n\n if (options.title) {\n td2.textContent = options.title\n } else {\n setName(td2, obj) // This is async\n }\n\n if (options.deleteFunction) {\n deleteButtonWithCheck(dom, td3, options.noun || 'one', options.deleteFunction)\n }\n if (obj.uri) {\n // blank nodes need not apply\n if (options.link !== false) {\n const anchor = td3.appendChild(linkIcon(dom, obj))\n anchor.classList.add('HoverControlHide')\n td3.appendChild(dom.createElement('br'))\n }\n if (options.draggable !== false) {\n // default is on\n image.setAttribute('draggable', 'false') // Stop the image being dragged instead - just the TR\n makeDraggable(tr, obj)\n }\n }\n ;(tr as any).subject = obj\n return tr\n}\n\n/* A helper function for renderAsDiv\n* creates the NameDiv for the person\n* Note: could not move it to the helper file because they call exported functions\n* from buttons\n* @internal exporting this only for unit tests\n*/\nexport function createNameDiv (dom: HTMLDocument, div: HTMLDivElement, title: string | undefined, obj: NamedNode) {\n const nameDiv = div.appendChild(dom.createElement('div'))\n if (title) {\n nameDiv.textContent = title\n } else {\n setName(nameDiv, obj) // This is async\n }\n}\n/* A helper function for renderAsDiv\n* creates the linkDiv for the person\n* Note: could not move it to the helper file because they call exported functions\n* from buttons\n* @internal exporting this only for unit tests\n*/\nexport function createLinkDiv (dom: HTMLDocument, div: HTMLDivElement, obj: NamedNode, options: RenderAsDivOptions) {\n const linkDiv = div.appendChild(dom.createElement('div'))\n linkDiv.setAttribute('style', style.linkDivStyle)\n\n if (options.deleteFunction) {\n deleteButtonWithCheck(dom, linkDiv, options.noun || 'one', options.deleteFunction)\n }\n\n if (obj.uri) {\n // blank nodes need not apply\n if (options.link !== false) {\n createLinkForURI(dom, linkDiv, obj)\n }\n\n makeDraggable(div, obj)\n }\n}\n/**\n * A Div to represent a draggable person, etc in a list\n * configurable to add an onClick listener\n */\nexport function renderAsDiv (dom: HTMLDocument, obj: NamedNode, options: RenderAsDivOptions): HTMLElement {\n const div = dom.createElement('div')\n div.setAttribute('style', style.renderAsDivStyle)\n\n options = options || {}\n const image = options.image || faviconOrDefault(dom, obj)\n createImageDiv(dom, div, image)\n createNameDiv(dom, div, options.title, obj)\n createLinkDiv(dom, div, obj, options)\n\n if (options.clickable && options.onClickFunction) {\n addClickListenerToElement(div, options.onClickFunction)\n }\n\n // to be compatible with the SolidOS table layout\n if (options.wrapInATR) {\n const tr = wrapDivInATR(dom, div, obj)\n return tr\n }\n return div\n}\n\n/**\n * Refresh a DOM tree recursively\n */\nexport function refreshTree (root: any): void {\n if (root.refresh) {\n root.refresh()\n return\n }\n for (let i = 0; i < root.children.length; i++) {\n refreshTree(root.children[i])\n }\n}\n\n/**\n * Options argument for [[attachmentList]] function\n */\nexport type attachmentListOptions = {\n doc?: NamedNode\n modify?: boolean\n promptIcon?: string\n predicate?: NamedNode\n uploadFolder?: NamedNode\n noun?: string\n}\n\n/**\n * Component that displays a list of resources, for instance\n * the attachments of a message, or the various documents related\n * to a meeting.\n * Accepts dropping URLs onto it to add attachments to it.\n */\nexport function attachmentList (dom: HTMLDocument, subject: NamedNode, div: HTMLElement, options: attachmentListOptions = {}) {\n // options = options || {}\n\n const deleteAttachment = function (target) {\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n\n kb.updater.update(st(subject, predicate, target, doc) as any, [], function (\n uri,\n ok,\n errorBody,\n _xhr\n ) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error deleting one: ' + errorBody)\n }\n })\n }\n\n function createNewRow (target) {\n const theTarget = target\n const opt: any = { noun }\n if (modify) {\n opt.deleteFunction = function () {\n deleteAttachment(theTarget)\n }\n }\n return personTR(dom, predicate, target, opt)\n }\n\n const refresh = function () {\n const things = kb.each(subject, predicate)\n things.sort()\n utils.syncTableToArray(attachmentTable, things, createNewRow)\n }\n\n function droppedURIHandler (uris) {\n const ins: any = []\n uris.forEach(function (u) {\n const target = sym(u) // Attachment needs text label to disinguish I think not icon.\n debug.log('Dropped on attachemnt ' + u) // icon was: iconBase + 'noun_25830.svg'\n ins.push(st(subject, predicate, target, doc))\n })\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n\n kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error adding one: ' + errorBody)\n }\n })\n }\n\n function droppedFileHandler (files) {\n uploadFiles(\n kb.fetcher,\n files,\n options.uploadFolder?.uri, // Files\n options.uploadFolder?.uri, // Pictures\n function (theFile, destURI) {\n const ins = [st(subject, predicate, kb.sym(destURI), doc)]\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error adding link to uploaded file: ' + errorBody)\n }\n })\n }\n )\n }\n\n const doc = options.doc || subject.doc()\n if (options.modify === undefined) options.modify = true\n const modify = options.modify\n const promptIcon: string = options.promptIcon || (iconBase + 'noun_748003.svg' as string) // target\n // const promptIcon = options.promptIcon || (iconBase + 'noun_25830.svg') // paperclip\n const predicate = options.predicate || ns.wf('attachment')\n const noun = options.noun || 'attachment'\n\n const kb = store\n const attachmentOuter = div.appendChild(dom.createElement('table'))\n attachmentOuter.setAttribute('style', 'margin-top: 1em; margin-bottom: 1em;')\n const attachmentOne = attachmentOuter.appendChild(dom.createElement('tr'))\n const attachmentLeft = attachmentOne.appendChild(dom.createElement('td'))\n const attachmentRight = attachmentOne.appendChild(dom.createElement('td'))\n const attachmentTable = attachmentRight.appendChild(dom.createElement('table'))\n attachmentTable.appendChild(dom.createElement('tr')) // attachmentTableTop\n\n ;(attachmentOuter as any).refresh = refresh // Participate in downstream changes\n // ;(attachmentTable as any).refresh = refresh <- outer should be best?\n\n refresh()\n\n if (modify) {\n // const buttonStyle = 'width; 2em; height: 2em; margin: 0.5em; padding: 0.1em;'\n const paperclip = button(dom, promptIcon, 'Drop attachments here')\n // paperclip.style = buttonStyle // @@ needed? default has white background\n attachmentLeft.appendChild(paperclip)\n const fhandler = options.uploadFolder ? droppedFileHandler : null\n makeDropTarget(paperclip, droppedURIHandler, fhandler) // beware missing the wire of the paparclip!\n makeDropTarget(attachmentLeft, droppedURIHandler, fhandler) // just the outer won't do it\n\n if (options.uploadFolder) { // Addd an explicit file upload button as well\n const buttonDiv = fileUploadButtonDiv(dom, droppedFileHandler)\n attachmentLeft.appendChild(buttonDiv)\n // buttonDiv.children[1].style = buttonStyle\n }\n }\n return attachmentOuter\n}\n\n// /////////////////////////////////////////////////////////////////////////////\n\n/**\n * Event Handler for links within solid apps.\n *\n * Note that native links have constraints in Firefox, they\n * don't work with local files for instance (2011)\n */\nexport function openHrefInOutlineMode (e: Event) {\n e.preventDefault()\n e.stopPropagation()\n const target = utils.getTarget(e)\n const uri = target.getAttribute('href')\n if (!uri) return debug.log('openHrefInOutlineMode: No href found!\\n')\n const dom = window.document\n if ((dom as any).outlineManager) {\n // @@ TODO Remove the use of document as a global object\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n ;(dom as any).outlineManager.GotoSubject(store.sym(uri), true, undefined, true, undefined)\n } else if (window && (window as any).panes && (window as any).panes.getOutliner) {\n // @@ TODO Remove the use of window as a global object\n ;(window as any).panes\n .getOutliner()\n .GotoSubject(store.sym(uri), true, undefined, true, undefined)\n } else {\n debug.log('ERROR: Can\\'t access outline manager in this config')\n }\n // dom.outlineManager.GotoSubject(store.sym(uri), true, undefined, true, undefined)\n}\n\n/**\n * Make a URI in the Tabulator.org annotation store out of the URI of the thing to be annotated.\n *\n * @@ Todo: make it a personal preference.\n */\nexport function defaultAnnotationStore (subject:NamedNode):NamedNode | undefined {\n if (subject.uri === undefined) return undefined\n let s = subject.uri\n if (s.slice(0, 7) !== 'http://') return undefined\n s = s.slice(7) // Remove\n const hash = s.indexOf('#')\n if (hash >= 0) s = s.slice(0, hash)\n // Strip trailing\n else {\n const slash = s.lastIndexOf('/')\n if (slash < 0) return undefined\n s = s.slice(0, slash)\n }\n return store.sym('http://tabulator.org/wiki/annnotation/' + s)\n}\n\n/**\n * Retrieve all RDF class URIs from solid-ui's RDF store\n * @returns an object `ret` such that `Object.keys(ret)` is\n * the list of all class URIs.\n */\nexport function allClassURIs (): { [uri: string]: boolean } {\n const set = {}\n store\n .statementsMatching(undefined, ns.rdf('type'), undefined)\n .forEach(function (st) {\n if (st.object.value) set[st.object.value] = true\n })\n store\n .statementsMatching(undefined, ns.rdfs('subClassOf'), undefined)\n .forEach(function (st) {\n if (st.object.value) set[st.object.value] = true\n if (st.subject.value) set[st.subject.value] = true\n })\n store\n .each(undefined, ns.rdf('type'), ns.rdfs('Class'))\n .forEach(function (c) {\n if (c.value) set[c.value] = true\n })\n return set\n}\n\n/**\n * Figuring which properties we know about\n *\n * When the user inputs an RDF property, like for a form field\n * or when specifying the relationship between two arbitrary things,\n * then er can prompt them with properties the session knows about\n *\n * TODO: Look again by catching this somewhere. (On the kb?)\n * TODO: move to diff module? Not really a button.\n * @param {Store} kb The quadstore to be searched.\n */\n\nexport function propertyTriage (kb: IndexedFormula): any {\n const possibleProperties: any = {}\n // if (possibleProperties === undefined) possibleProperties = {}\n // const kb = store\n const dp = {}\n const op = {}\n let no = 0\n let nd = 0\n let nu = 0\n const pi = (kb as any).predicateIndex // One entry for each pred\n for (const p in pi) {\n const object = pi[p][0].object\n if (object.termType === 'Literal') {\n dp[p] = true\n nd++\n } else {\n op[p] = true\n no++\n }\n } // If nothing discovered, then could be either:\n const ps = kb.each(undefined, ns.rdf('type'), ns.rdf('Property'))\n for (let i = 0; i < ps.length; i++) {\n const p = ps[i].toNT()\n if (!op[p] && !dp[p]) {\n dp[p] = true\n op[p] = true\n nu++\n }\n }\n possibleProperties.op = op\n possibleProperties.dp = dp\n info(`propertyTriage: ${no} non-lit, ${nd} literal. ${nu} unknown.`)\n return possibleProperties\n}\n\n/**\n * General purpose widgets\n */\n\n/**\n * A button for jumping\n */\nexport function linkButton (dom: HTMLDocument, object: NamedNode): HTMLElement {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.textContent = 'Goto ' + utils.label(object)\n b.addEventListener('click', function (_event) {\n // b.parentNode.removeChild(b)\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n ;(dom as any).outlineManager.GotoSubject(object, true, undefined, true, undefined)\n }, true)\n return b\n}\n\n/**\n * A button to remove some other element from the page\n */\nexport function removeButton (dom: HTMLDocument, element: HTMLElement) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.textContent = '✕' // MULTIPLICATION X\n b.addEventListener('click', function (_event) {\n ;(element as any).parentNode.removeChild(element)\n }, true)\n return b\n}\n\n// Description text area\n//\n// Make a box to demand a description or display existing one\n//\n// @param dom - the document DOM for the user interface\n// @param kb - the graph which is the knowledge base we are working with\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param store - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n\n// /////////////////////////////////////// Random I/O widgets /////////////\n\n// //// Column Header Buttons\n//\n// These are for selecting different modes, sources,styles, etc.\n//\n/*\nbuttons.headerButtons = function (dom, kb, name, words) {\n const box = dom.createElement('table')\n var i, word, s = '<tr>'\n box.setAttribute('style', 'width: 90%; height: 1.5em')\n for (i=0; i<words.length; i++) {\n s += '<td><input type=\"radio\" name=\"' + name + '\" id=\"' + words[i] + '\" value='\n }\n box.innerHTML = s + '</tr>'\n\n}\n*/\n// ////////////////////////////////////////////////////////////\n//\n// selectorPanel\n//\n// A vertical panel for selecting connections to left or right.\n//\n// @param inverse means this is the object rather than the subject\n//\nexport function selectorPanel (\n dom: HTMLDocument,\n kb: IndexedFormula,\n type: NamedNode,\n predicate: NamedNode,\n inverse: boolean,\n possible: NamedNode[],\n options: { connectIcon?: string },\n callbackFunction: (_x: NamedNode, _e: Event, _selected: boolean) => void,\n linkCallback: (_x: NamedNode, _e: Event, _inverse: boolean, _setStyleFunction: () => void) => void\n) {\n return selectorPanelRefresh(\n dom.createElement('div'),\n dom,\n kb,\n type,\n predicate,\n inverse,\n possible,\n options,\n callbackFunction,\n linkCallback\n )\n}\n\nexport function selectorPanelRefresh (\n list: HTMLElement,\n dom: HTMLDocument,\n kb: IndexedFormula,\n type: NamedNode,\n predicate: NamedNode,\n inverse: boolean,\n possible: NamedNode[],\n options: { connectIcon?: string },\n callbackFunction: (_x: NamedNode, _e: Event, _selected: boolean) => void,\n linkCallback: (_x: NamedNode, _e: Event, _inverse: boolean, _setStyleFunction: () => void) => void\n) {\n const style0 =\n 'border: 0.1em solid #ddd; border-bottom: none; width: 95%; height: 2em; padding: 0.5em;'\n let selected: any = null\n list.innerHTML = ''\n\n const refreshItem = function (box: HTMLElement, x: NamedNode) {\n // Scope to hold item and x\n let item: any\n // eslint-disable-next-line prefer-const\n let image: HTMLImageElement\n\n const setStyle = function () {\n const already = inverse\n ? kb.each(undefined, predicate, x)\n : kb.each(x, predicate)\n iconDiv.setAttribute('class', already.length === 0 ? 'hideTillHover' : '') // See tabbedtab.css\n image.setAttribute(\n 'src',\n options.connectIcon || iconBase + 'noun_25830.svg'\n )\n image.setAttribute('title', already.length ? already.length : 'attach' as any)\n }\n const f = index.twoLine.widgetForClass(type)\n // eslint-disable-next-line prefer-const\n item = f(dom, x)\n item.setAttribute('style', style0)\n\n const nav = dom.createElement('div')\n nav.setAttribute('class', 'hideTillHover') // See tabbedtab.css\n nav.setAttribute('style', 'float:right; width:10%')\n\n const a = dom.createElement('a')\n a.setAttribute('href', x.uri)\n a.setAttribute('style', 'float:right')\n nav.appendChild(a).textContent = '>'\n box.appendChild(nav)\n\n const iconDiv = dom.createElement('div')\n iconDiv.setAttribute(\n 'style',\n (inverse ? 'float:left;' : 'float:right;') + ' width:30px;'\n )\n image = dom.createElement('img')\n setStyle()\n iconDiv.appendChild(image)\n box.appendChild(iconDiv)\n\n item.addEventListener('click', function (event) {\n if (selected === item) {\n // deselect\n item.setAttribute('style', style0)\n selected = null\n } else {\n if (selected) selected.setAttribute('style', style0)\n item.setAttribute(\n 'style',\n style0 + 'background-color: #ccc; color:black;'\n )\n selected = item\n }\n callbackFunction(x, event, selected === item)\n setStyle()\n }, false)\n\n image.addEventListener('click', function (event) {\n linkCallback(x, event, inverse, setStyle)\n }, false)\n\n box.appendChild(item)\n return box\n }\n\n for (let i = 0; i < possible.length; i++) {\n const box = dom.createElement('div')\n list.appendChild(box)\n refreshItem(box, possible[i])\n }\n return list\n}\n\n// ###########################################################################\n//\n// Small compact views of things\n//\nexport let index: any = {}\n// ///////////////////////////////////////////////////////////////////////////\n// We need these for anything which is a subject of an attachment.\n//\n// These should be moved to type-dependeent UI code. Related panes maybe\n\nfunction twoLineDefault (dom: HTMLDocument, x: NamedNode): HTMLElement {\n // Default\n const box = dom.createElement('div')\n box.textContent = utils.label(x)\n return box\n}\n\n/**\n * Find a function that can create a widget for a given class\n * @param c The RDF class for which we want a widget generator function\n */\nfunction twoLineWidgetForClass (c: NamedNode): (_dom: HTMLDocument, _x: NamedNode) => HTMLElement {\n let widget = index.twoLine[c.uri]\n const kb = store\n if (widget) return widget\n const sup = kb.findSuperClassesNT(c)\n for (const cl in sup) {\n widget = index.twoLine[kb.fromNT(cl).uri]\n if (widget) return widget\n }\n return index.twoLine['']\n}\n\n/**\n * Display a transaction\n * @param x Should have attributes through triples in store:\n * * ns.qu('payee') -> a named node\n * * ns.qu('date) -> a literal\n * * ns.qu('amount') -> a literal\n */\nfunction twoLineTransaction (dom: HTMLDocument, x: NamedNode): HTMLElement {\n let failed = ''\n const enc = function (p) {\n const y = store.any(x, ns.qu(p))\n if (!y) failed += '@@ No value for ' + p + '! '\n return y ? utils.escapeForXML(y.value) : '?' // @@@@\n }\n const box = dom.createElement('table')\n box.innerHTML = `\n <tr>\n <td colspan=\"2\"> ${enc('payee')}</td>\n < /tr>\n < tr >\n <td>${enc('date').slice(0, 10)}</td>\n <td style = \"text-align: right;\">${enc('amount')}</td>\n </tr>`\n if (failed) {\n box.innerHTML = `\n <tr>\n <td><a href=\"${utils.escapeForXML(x.uri)}\">${utils.escapeForXML(failed)}</a></td>\n </tr>`\n }\n return box\n}\n\n/**\n * Display a trip\n * @param x Should have attributes through triples in store:\n * * ns.dc('title') -> a literal\n * * ns.cal('dtstart') -> a literal\n * * ns.cal('dtend') -> a literal\n */\nfunction twoLineTrip (\n dom: HTMLDocument,\n x: NamedNode\n): HTMLElement {\n const enc = function (p) {\n const y = store.any(x, p)\n return y ? utils.escapeForXML(y.value) : '?'\n }\n const box = dom.createElement('table')\n box.innerHTML = `\n <tr>\n <td colspan=\"2\">${enc(ns.dc('title'))}</td>\n </tr>\n <tr style=\"color: #777\">\n <td>${enc(ns.cal('dtstart'))}</td>\n <td>${enc(ns.cal('dtend'))}</td>\n </tr>`\n return box\n}\n\n/**\n * Stick a stylesheet link the document if not already there\n */\nexport function addStyleSheet (dom: HTMLDocument, href: string): void {\n const links = dom.querySelectorAll('link')\n for (let i = 0; i < links.length; i++) {\n if (\n (links[i].getAttribute('rel') || '') === 'stylesheet' &&\n (links[i].getAttribute('href') || '') === href\n ) {\n return\n }\n }\n const link = dom.createElement('link')\n link.setAttribute('rel', 'stylesheet')\n link.setAttribute('type', 'text/css')\n link.setAttribute('href', href)\n dom.getElementsByTagName('head')[0].appendChild(link)\n}\n\n// Figure (or guess) whether this is an image, etc\n//\nexport function isAudio (file?: NamedNode) {\n return isImage(file, 'audio')\n}\nexport function isVideo (file?: NamedNode) {\n return isImage(file, 'video')\n}\n/**\n *\n */\nexport function isImage (file?: NamedNode, kind?: string): boolean {\n const dcCLasses = {\n audio: 'http://purl.org/dc/dcmitype/Sound',\n image: 'http://purl.org/dc/dcmitype/Image',\n video: 'http://purl.org/dc/dcmitype/MovingImage'\n }\n const what = kind || 'image'\n // See https://github.com/linkeddata/rdflib.js/blob/e367d5088c/src/formula.ts#L554\n //\n const typeURIs = store.findTypeURIs(file as any)\n // See https://github.com/linkeddata/rdflib.js/blob/d5000f/src/utils-js.js#L14\n // e.g.'http://www.w3.org/ns/iana/media-types/audio'\n const prefix: string = Util.mediaTypeClass(what + '/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return true\n }\n if (dcCLasses[what] in typeURIs) return true\n return false\n}\n\n/**\n * File upload button\n * @param dom The DOM aka document\n * @param droppedFileHandler Same handler function as drop, takes array of file objects\n * @returns {Element} - a div with a button and a inout in it\n * The input is hidden, as it is uglky - the user clicks on the nice icons and fires the input.\n */\n// See https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications\nexport function fileUploadButtonDiv (\n dom: HTMLDocument,\n droppedFileHandler: (_files: FileList) => void\n) {\n const div = dom.createElement('div')\n const input = div.appendChild(dom.createElement('input'))\n input.setAttribute('type', 'file')\n input.setAttribute('multiple', 'true')\n input.addEventListener(\n 'change',\n (event: any) => {\n debug.log('File drop event: ', event)\n if (event.files) {\n droppedFileHandler(event.files)\n } else if (event.target && event.target.files) {\n droppedFileHandler(event.target.files)\n } else {\n alert('Sorry no files .. internal error?')\n }\n },\n false\n )\n\n ;(input as any).style = 'display:none'\n const buttonElt = div.appendChild(\n button(\n dom,\n iconBase + 'noun_Upload_76574_000000.svg',\n 'Upload files',\n _event => {\n input.click()\n }\n )\n )\n makeDropTarget(buttonElt, null, droppedFileHandler) // Can also just drop on button\n return div\n}\n\nindex = {\n line: { // Approx 80em\n },\n twoLine: { // Approx 40em * 2.4em\n '': twoLineDefault,\n 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': twoLineTransaction,\n 'http://www.w3.org/ns/pim/trip#Trip': twoLineTrip,\n widgetForClass: twoLineWidgetForClass\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buttons.js","names":["_rdflib","require","_iconBase","ns","_interopRequireWildcard","style","debug","_log","_dragAndDrop","_solidLogic","utils","_error","_widgetHelpers","_iconLinks","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","iconBase","icons","cancelIconURI","checkIconURI","getStatusArea","context","box","statusArea","div","dom","document","body","getElementsByTagName","createElement","insertBefore","firstElementChild","complain","err","ele","log","appendChild","errorMessageBlock","alert","clearElement","firstChild","removeChild","extractLogURI","fullURI","logPos","search","rulPos","substring","shortDate","str","noTime","month","nowZ","Date","toISOString","slice","parseInt","formatDateTime","date","format","split","map","s","k","width","Milliseconds","FullYear","d","Month","join","timestamp","shortTime","setName","element","x","kb","store","findName","name","any","vcard","foaf","value","sameTerm","textContent","label","uri","fetcher","Error","nowOrWhenFetched","doc","undefined","_ok","imagesOf","each","sioc","concat","iconForClass","exports","tempSite","p","indexOf","q","findImageFromURI","iconDir","length","startsWith","findImage","thing","rdf","image","trySetImage","iconForClassMap","explitImage","setAttribute","typeIcon","classIconStyle","schemeIcon","types","findTypeURIs","typeURI","setImage","pref","id","theClass","happy","ok","faviconOrDefault","iconStyle","isOrigin","parts","res","renderDeleteConfirmPopup","refererenceElement","prompt","deleteFunction","removePopup","parentElement","removePopupAndDoDeletion","popup","confirmPopupStyle","position","top","display","gridTemplateColumns","affirm","gridColumn","gridRow","cancel","xButton","cancelButton","cancelPrompt","buttonStyle","affirmIcon","button","sureButtonElt","addEventListener","deleteButtonWithCheck","container","noun","createPopup","deleteButton","minusIconURI","smallButtonStyle","title","classList","add","iconURI","text","handler","options","arguments","buttonColor","needsBorder","img","toLocaleUpperCase","onmouseover","secondaryButtonNoBorderHover","secondaryButtonHover","primaryButtonNoBorderHover","primaryButtonHover","onmouseout","secondaryButtonNoBorder","secondaryButton","primaryButtonNoBorder","primaryButton","b","opacity","continueButton","askName","predicate","Promise","resolve","_reject","form","namefield","textInputStyle","select","gotName","parentNode","trim","keyCode","_event","focus","personTR","renderAsRow","pred","obj","tr","td1","td2","td3","link","anchor","linkIcon","draggable","makeDraggable","subject","createNameDiv","nameDiv","createLinkDiv","linkDiv","linkDivStyle","createLinkForURI","renderAsDiv","renderAsDivStyle","createImageDiv","clickable","onClickFunction","addClickListenerToElement","wrapInATR","wrapDivInATR","refreshTree","root","refresh","children","attachmentList","deleteAttachment","target","updater","update","st","errorBody","_xhr","createNewRow","theTarget","opt","modify","things","sort","syncTableToArray","attachmentTable","droppedURIHandler","uris","ins","forEach","u","sym","push","droppedFileHandler","files","_options$uploadFolder","_options$uploadFolder2","uploadFiles","uploadFolder","theFile","destURI","promptIcon","wf","attachmentOuter","attachmentOne","attachmentLeft","attachmentRight","paperclip","fhandler","makeDropTarget","buttonDiv","fileUploadButtonDiv","openHrefInOutlineMode","preventDefault","stopPropagation","getTarget","getAttribute","window","outlineManager","GotoSubject","panes","getOutliner","defaultAnnotationStore","hash","slash","lastIndexOf","allClassURIs","statementsMatching","object","rdfs","c","propertyTriage","possibleProperties","dp","op","no","nd","nu","pi","predicateIndex","termType","ps","toNT","info","linkButton","removeButton","selectorPanel","type","inverse","possible","callbackFunction","linkCallback","selectorPanelRefresh","list","style0","selected","innerHTML","refreshItem","item","setStyle","already","iconDiv","connectIcon","index","twoLine","widgetForClass","nav","a","event","twoLineDefault","twoLineWidgetForClass","widget","sup","findSuperClassesNT","cl","fromNT","twoLineTransaction","failed","enc","y","qu","escapeForXML","twoLineTrip","dc","cal","addStyleSheet","href","links","querySelectorAll","isAudio","file","isImage","isVideo","kind","dcCLasses","audio","video","what","typeURIs","prefix","Util","mediaTypeClass","input","buttonElt","click","line"],"sources":["../../src/widgets/buttons.ts"],"sourcesContent":["/* Buttons\n*/\nimport { IndexedFormula, NamedNode, st, sym, uri, Util } from 'rdflib'\nimport { icons } from '../iconBase'\nimport * as ns from '../ns'\nimport * as style from '../style'\nimport * as debug from '../debug'\nimport { info } from '../log'\nimport { uploadFiles, makeDraggable, makeDropTarget } from './dragAndDrop'\nimport { store } from 'solid-logic'\nimport * as utils from '../utils'\nimport { errorMessageBlock } from './error'\nimport { addClickListenerToElement, createImageDiv, wrapDivInATR } from './widgetHelpers'\nimport { linkIcon, createLinkForURI } from './buttons/iconLinks'\n\n/**\n * UI Widgets such as buttons\n * @packageDocumentation\n */\n\n/* global alert */\n\nconst { iconBase } = icons\n\nconst cancelIconURI = iconBase + 'noun_1180156.svg' // black X\nconst checkIconURI = iconBase + 'noun_1180158.svg' // green checkmark; Continue\n\nexport type StatusAreaContext = {\n statusArea?: HTMLElement\n div?: HTMLElement\n dom?: HTMLDocument\n}\nexport type ButtonType = 'Primary' | 'Secondary'\n\nexport type ButtonWidgetOptions = {\n buttonColor?: ButtonType,\n needsBorder?: boolean\n}\n\nexport type RenderAsDivOptions = {\n image?: HTMLImageElement,\n title?: string,\n deleteFunction?: () => void,\n link?: boolean,\n noun?: string,\n draggable?: boolean,\n clickable?: boolean,\n onClickFunction?: () => void,\n wrapInATR?: boolean\n}\n\nfunction getStatusArea (context?: StatusAreaContext) {\n let box = (context && context.statusArea) || (context && context.div) || null\n if (box) return box\n let dom = context && context.dom\n if (!dom && typeof document !== 'undefined') {\n dom = document\n }\n if (dom) {\n const body = dom.getElementsByTagName('body')[0]\n box = dom.createElement('div')\n body.insertBefore((box as unknown as HTMLElement), body.firstElementChild)\n if (context) {\n context.statusArea = (box as unknown as HTMLElement)\n }\n return box\n }\n return null\n}\n\n/**\n * Display an error message block\n */\nexport function complain (context?: StatusAreaContext, err?: string) {\n if (!err) return // only if error\n const ele = getStatusArea(context)\n debug.log('Complaint: ' + err)\n if (ele) ele.appendChild(errorMessageBlock((context && context.dom) || document, err))\n else alert(err)\n}\n\n/**\n * Remove all the children of an HTML element\n */\nexport function clearElement (ele: HTMLElement) {\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild)\n }\n return ele\n}\n\n/**\n * To figure out the log URI from the full URI used to invoke the reasoner\n */\nexport function extractLogURI (fullURI) {\n const logPos = fullURI.search(/logFile=/)\n const rulPos = fullURI.search(/&rulesFile=/)\n return fullURI.substring(logPos + 8, rulPos)\n}\n\n/**\n * By default, converts e.g. '2020-02-19T19:35:28.557Z' to '19:35'\n * if today is 19 Feb 2020, and to 'Feb 19' if not.\n * @@@ TODO This needs to be changed to local time\n * @param noTime Return a string like 'Feb 19' even if it's today.\n */\nexport function shortDate (str?: string, noTime?: boolean): string {\n if (!str) return '???'\n const month = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n try {\n const nowZ = new Date().toISOString()\n // var nowZ = $rdf.term(now).value\n // var n = now.getTimezoneOffset() // Minutes\n if (str.slice(0, 10) === nowZ.slice(0, 10) && !noTime) {\n return str.slice(11, 16)\n }\n if (str.slice(0, 4) === nowZ.slice(0, 4)) {\n return (\n month[parseInt(str.slice(5, 7), 10) - 1] +\n ' ' +\n parseInt(str.slice(8, 10), 10)\n )\n }\n return str.slice(0, 10)\n } catch (e) {\n return 'shortdate:' + e\n }\n}\n\n/**\n * Format a date and time\n * @param date for instance `new Date()`\n * @param format for instance '{FullYear}-{Month}-{Date}T{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n * @returns for instance '2000-01-15T23:14:23.002'\n */\nexport function formatDateTime (date: Date, format: string): string {\n return format\n .split('{')\n .map(function (s) {\n const k = s.split('}')[0]\n const width = { Milliseconds: 3, FullYear: 4 }\n const d = { Month: 1 }\n return s\n ? ('000' + (date['get' + k]() + (d[k] || 0))).slice(-(width[k] || 2)) + s.split('}')[1]\n : ''\n })\n .join('')\n}\n\n/**\n * Get a string representation of the current time\n * @returns for instance '2000-01-15T23:14:23.002'\n */\nexport function timestamp (): string {\n return formatDateTime(\n new Date(),\n '{FullYear}-{Month}-{Date}T{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n )\n}\n\n/**\n * Get a short string representation of the current time\n * @returns for instance '23:14:23.002'\n */\nexport function shortTime (): string {\n return formatDateTime(\n new Date(),\n '{Hours}:{Minutes}:{Seconds}.{Milliseconds}'\n )\n}\n\n// ///////////////////// Handy UX widgets\n\n/**\n * Sets the best name we have and looks up a better one\n */\nexport function setName (element: HTMLElement, x: NamedNode) {\n const kb = store\n const findName = function (x) {\n const name =\n kb.any(x, ns.vcard('fn')) ||\n kb.any(x, ns.foaf('name')) ||\n kb.any(x, ns.vcard('organization-name'))\n return name ? name.value : null\n }\n const name = x.sameTerm(ns.foaf('Agent')) ? 'Everyone' : findName(x)\n element.textContent = name || utils.label(x)\n if (!name && x.uri) {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n // Note this is only a fetch, not a lookUP of all sameAs etc\n kb.fetcher.nowOrWhenFetched(x.doc(), undefined, function (_ok) {\n element.textContent = findName(x) || utils.label(x) // had: (ok ? '' : '? ') +\n })\n }\n}\n\n/**\n * Set of suitable images\n * See also [[findImage]]\n * @param x The thing for which we want to find an image\n * @param kb The RDF store to look in\n * @returns It goes looking for triples in `kb`,\n * `(subject: x), (predicate: see list below) (object: image-url)`\n * to find any image linked from the thing with one of the following\n * predicates (in order):\n * * ns.sioc('avatar')\n * * ns.foaf('img')\n * * ns.vcard('logo')\n * * ns.vcard('hasPhoto')\n * * ns.vcard('photo')\n * * ns.foaf('depiction')\n\n */\nexport function imagesOf (x: NamedNode | null, kb: IndexedFormula): any[] {\n return kb\n .each(x, ns.sioc('avatar'))\n .concat(kb.each(x, ns.foaf('img')))\n .concat(kb.each(x, ns.vcard('logo')))\n .concat(kb.each(x, ns.vcard('hasPhoto')))\n .concat(kb.each(x, ns.vcard('photo')))\n .concat(kb.each(x, ns.foaf('depiction')))\n}\n\n/**\n * Best logo or avatar or photo etc to represent someone or some group etc\n */\nexport const iconForClass = {\n // Potentially extendable by other apps, panes, etc\n // Relative URIs to the iconBase\n 'solid:AppProviderClass': 'noun_144.svg', // @@ classs name should not contain 'Class'\n 'solid:AppProvider': 'noun_15177.svg', // @@\n 'solid:Pod': 'noun_Cabinet_1434380.svg',\n 'vcard:Group': 'noun_339237.svg',\n 'vcard:Organization': 'noun_143899.svg',\n 'vcard:Individual': 'noun_15059.svg',\n 'schema:Person': 'noun_15059.svg',\n 'foaf:Person': 'noun_15059.svg',\n 'foaf:Agent': 'noun_98053.svg',\n 'acl:AuthenticatedAgent': 'noun_99101.svg',\n 'prov:SoftwareAgent': 'noun_Robot_849764.svg', // Bot\n 'vcard:AddressBook': 'noun_15695.svg',\n 'trip:Trip': 'noun_581629.svg',\n 'meeting:LongChat': 'noun_1689339.svg',\n 'meeting:Meeting': 'noun_66617.svg',\n 'meeting:Project': 'noun_1036577.svg',\n 'ui:Form': 'noun_122196.svg',\n 'rdfs:Class': 'class-rectangle.svg', // For RDF developers\n 'rdf:Property': 'property-diamond.svg',\n 'owl:Ontology': 'noun_classification_1479198.svg',\n 'wf:Tracker': 'noun_122196.svg',\n 'wf:Task': 'noun_17020_gray-tick.svg',\n 'wf:Open': 'noun_17020_sans-tick.svg',\n 'wf:Closed': 'noun_17020.svg'\n}\n\n/**\n * Returns the origin of the URI of a NamedNode\n */\nfunction tempSite (x: NamedNode) {\n // use only while one in rdflib fails with origins 2019\n const str = x.uri.split('#')[0]\n const p = str.indexOf('//')\n if (p < 0) throw new Error('This URI does not have a web site part (origin)')\n const q = str.indexOf('/', p + 2)\n if (q < 0) {\n // no third slash?\n return str.slice(0) + '/' // Add slash to a bare origin\n } else {\n return str.slice(0, q + 1)\n }\n}\n\n/**\n * Find an image for this thing as a class\n */\nexport function findImageFromURI (x: NamedNode | string): string | null {\n const iconDir = iconBase\n\n // Special cases from URI scheme:\n if (typeof x !== 'string' && x.uri) {\n if (\n x.uri.split('/').length === 4 &&\n !x.uri.split('/')[1] &&\n !x.uri.split('/')[3]\n ) {\n return iconDir + 'noun_15177.svg' // App -- this is an origin\n }\n // Non-HTTP URI types imply types\n if (x.uri.startsWith('message:') || x.uri.startsWith('mid:')) {\n // message: is apple bug-- should be mid:\n return iconDir + 'noun_480183.svg' // envelope noun_567486\n }\n if (x.uri.startsWith('mailto:')) {\n return iconDir + 'noun_567486.svg' // mailbox - an email desitination\n }\n // For HTTP(s) documents, we could look at the MIME type if we know it.\n if (x.uri.startsWith('https:') && x.uri.indexOf('#') < 0) {\n return tempSite(x) + 'favicon.ico' // was x.site().uri + ...\n // Todo: make the document icon a fallback for if the favicon does not exist\n // todo: pick up a possible favicon for the web page itself from a link\n // was: return iconDir + 'noun_681601.svg' // document - under solid assumptions\n }\n return null\n }\n\n return iconDir + 'noun_10636_grey.svg' // Grey Circle - some thing\n}\n\n/**\n * Find something we have as explicit image data for the thing\n * See also [[imagesOf]]\n * @param thing The thing for which we want to find an image\n * @returns The URL of a globe icon if thing equals `ns.foaf('Agent')`\n * or `ns.rdf('Resource')`. Otherwise, it goes looking for\n * triples in `store`,\n * `(subject: thing), (predicate: see list below) (object: image-url)`\n * to find any image linked from the thing with one of the following\n * predicates (in order):\n * * ns.sioc('avatar')\n * * ns.foaf('img')\n * * ns.vcard('logo')\n * * ns.vcard('hasPhoto')\n * * ns.vcard('photo')\n * * ns.foaf('depiction')\n */\nexport function findImage (thing: NamedNode): string {\n const kb = store\n const iconDir = iconBase\n if (thing.sameTerm(ns.foaf('Agent')) || thing.sameTerm(ns.rdf('Resource'))) {\n return iconDir + 'noun_98053.svg' // Globe\n }\n const image =\n kb.any(thing, ns.sioc('avatar')) ||\n kb.any(thing, ns.foaf('img')) ||\n kb.any(thing, ns.vcard('logo')) ||\n kb.any(thing, ns.vcard('hasPhoto')) ||\n kb.any(thing, ns.vcard('photo')) ||\n kb.any(thing, ns.foaf('depiction'))\n return image ? (image as any).uri : null as any\n}\n\n/**\n * Do the best you can with the data available\n *\n * @return {Boolean} Are we happy with this icon?\n * Sets src AND STYLE of the image.\n */\nfunction trySetImage (element, thing, iconForClassMap) {\n const kb = store\n\n const explitImage = findImage(thing)\n if (explitImage) {\n element.setAttribute('src', explitImage)\n return true\n }\n // This is one of the classes we know about - the class itself?\n const typeIcon = iconForClassMap[thing.uri]\n if (typeIcon) {\n element.setAttribute('src', typeIcon)\n element.style = style.classIconStyle\n // element.style.border = '0.1em solid green;'\n // element.style.backgroundColor = '#eeffee' // pale green\n return true\n }\n const schemeIcon = findImageFromURI(thing)\n if (schemeIcon) {\n element.setAttribute('src', schemeIcon)\n return true // happy with this -- don't look it up\n }\n\n // Do we have a generic icon for something in any class its in?\n const types = kb.findTypeURIs(thing)\n for (const typeURI in types) {\n if (iconForClassMap[typeURI]) {\n element.setAttribute('src', iconForClassMap[typeURI])\n return false // maybe we can do better\n }\n }\n element.setAttribute('src', iconBase + 'noun_10636_grey.svg') // Grey Circle - some thing\n return false // we can do better\n}\n\n/**\n * ToDo: Also add icons for *properties* like home, work, email, range, domain, comment,\n */\nexport function setImage (element: HTMLElement, thing: NamedNode) { // 20191230a\n const kb = store\n\n const iconForClassMap = {}\n for (const k in iconForClass) {\n const pref = k.split(':')[0]\n const id = k.split(':')[1]\n const theClass = ns[pref](id)\n iconForClassMap[theClass.uri] = uri.join(iconForClass[k], iconBase)\n }\n\n const happy = trySetImage(element, thing, iconForClassMap)\n if (!happy && thing.uri) {\n if (!kb.fetcher) {\n throw new Error('kb has no fetcher')\n }\n kb.fetcher.nowOrWhenFetched(thing.doc(), undefined, (ok) => {\n if (ok) {\n trySetImage(element, thing, iconForClassMap)\n }\n })\n }\n}\n\n// If a web page, then a favicon, with a fallback to ???\n// See, e.g., http://stackoverflow.com/questions/980855/inputting-a-default-image\nexport function faviconOrDefault (dom: HTMLDocument, x: NamedNode) {\n const image = dom.createElement('img')\n ;(image as any).style = style.iconStyle\n const isOrigin = function (x) {\n if (!x.uri) return false\n const parts = x.uri.split('/')\n return parts.length === 3 || (parts.length === 4 && parts[3] === '')\n }\n image.setAttribute(\n 'src',\n iconBase + (isOrigin(x) ? 'noun_15177.svg' : 'noun_681601.svg') // App symbol vs document\n )\n if (x.uri && x.uri.startsWith('https:') && x.uri.indexOf('#') < 0) {\n const res = dom.createElement('object') // favico with a fallback of a default image if no favicon\n res.setAttribute('data', tempSite(x) + 'favicon.ico')\n res.setAttribute('type', 'image/x-icon')\n res.appendChild(image) // fallback\n return res\n } else {\n setImage(image, x)\n return image\n }\n}\n\n/* Two-option dialog pop-up\n*/\n\nfunction renderDeleteConfirmPopup (dom, refererenceElement, prompt, deleteFunction) {\n function removePopup () {\n refererenceElement.parentElement.removeChild(refererenceElement)\n }\n function removePopupAndDoDeletion () {\n removePopup()\n deleteFunction()\n }\n const popup = dom.createElement('div')\n popup.style = style.confirmPopupStyle\n popup.style.position = 'absolute'\n popup.style.top = '-1em' // try leaving original button clear\n\n popup.style.display = 'grid'\n popup.style.gridTemplateColumns = 'auto auto'\n const affirm = dom.createElement('div')\n affirm.style.gridColumn = '1/2'\n affirm.style.gridRow = '1' // @@ sigh; TS. could pass number in fact\n const cancel = dom.createElement('div')\n cancel.style.gridColumn = '1/2'\n cancel.style.gridRow = '2'\n\n const xButton = cancelButton(dom, removePopup)\n popup.appendChild(xButton)\n xButton.style.gridColumn = '1'\n xButton.style.gridRow = '2'\n\n const cancelPrompt = popup.appendChild(dom.createElement('button'))\n cancelPrompt.style = style.buttonStyle\n cancelPrompt.style.gridRow = '2'\n cancelPrompt.style.gridColumn = '2'\n cancelPrompt.textContent = 'Cancel' // @@ I18n\n\n const affirmIcon = button(dom, icons.iconBase + 'noun_925021.svg', 'Delete it') // trashcan\n popup.appendChild(affirmIcon)\n affirmIcon.style.gridRow = '1'\n affirmIcon.style.gridColumn = '1'\n\n const sureButtonElt = popup.appendChild(dom.createElement('button'))\n sureButtonElt.style = style.buttonStyle\n sureButtonElt.style.gridRow = '1'\n sureButtonElt.style.gridColumn = '2'\n sureButtonElt.textContent = prompt\n popup.appendChild(sureButtonElt)\n\n affirmIcon.addEventListener('click', removePopupAndDoDeletion)\n sureButtonElt.addEventListener('click', removePopupAndDoDeletion)\n\n // xButton.addEventListener('click', removePopup)\n cancelPrompt.addEventListener('click', removePopup)\n\n return popup\n}\n/**\n * Delete button with a check you really mean it\n * @@ Supress check if command key held down?\n */\nexport function deleteButtonWithCheck (\n dom: HTMLDocument,\n container: HTMLElement,\n noun: string,\n deleteFunction: () => any\n) {\n function createPopup () {\n const refererenceElement = dom.createElement('div')\n container.insertBefore(refererenceElement, deleteButton)\n refererenceElement.style.position = 'relative' // Needed as reference for popup\n refererenceElement.appendChild(renderDeleteConfirmPopup(dom, refererenceElement, prompt, deleteFunction))\n }\n const minusIconURI = iconBase + 'noun_2188_red.svg' // white minus in red #cc0000 circle\n const deleteButton = dom.createElement('img')\n deleteButton.setAttribute('src', minusIconURI)\n\n deleteButton.setAttribute('style', style.smallButtonStyle) // @@tsc - would set deleteButton.style\n deleteButton.style.float = 'right' // Historically this has alwaus floated right\n\n const prompt = 'Remove this ' + noun\n deleteButton.title = prompt\n // @@ In an ideal world, make use of hover an accessibility option\n deleteButton.classList.add('hoverControlHide')\n\n deleteButton.addEventListener('click', createPopup)\n\n container.classList.add('hoverControl')\n container.appendChild(deleteButton)\n deleteButton.setAttribute('data-testid', 'deleteButtonWithCheck')\n return deleteButton // or button div? caller may change size of image\n}\n\n/* Make a button\n *\n * @param dom - the DOM document object\n * @Param iconURI - the URI of the icon to use (if any)\n * @param text - the tooltip text or possibly button contents text\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function button (dom: HTMLDocument, iconURI: string | undefined, text: string,\n handler?: (_event: any) => void,\n options: ButtonWidgetOptions = { buttonColor: 'Primary', needsBorder: false }) {\n const button = dom.createElement('button')\n button.setAttribute('type', 'button')\n // button.innerHTML = text // later, user preferences may make text preferred for some\n if (iconURI) {\n const img = button.appendChild(dom.createElement('img'))\n img.setAttribute('src', iconURI)\n img.setAttribute('style', 'width: 2em; height: 2em;') // trial and error. 2em disappears\n img.title = text\n button.setAttribute('style', style.buttonStyle)\n } else {\n button.textContent = text.toLocaleUpperCase()\n\n button.onmouseover = function () {\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorderHover)\n } else {\n button.setAttribute('style', style.secondaryButtonHover)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorderHover)\n } else {\n button.setAttribute('style', style.primaryButtonHover)\n }\n }\n }\n button.onmouseout = function () {\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.secondaryButton)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.primaryButton)\n }\n }\n }\n\n if (options.buttonColor === 'Secondary') {\n if (options.needsBorder) {\n button.setAttribute('style', style.secondaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.secondaryButton)\n }\n } else {\n if (options.needsBorder) {\n button.setAttribute('style', style.primaryButtonNoBorder)\n } else {\n button.setAttribute('style', style.primaryButton)\n }\n }\n }\n\n if (handler) {\n button.addEventListener('click', handler, false)\n }\n return button\n}\n\n/* Make a cancel button\n *\n * @param dom - the DOM document object\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function cancelButton (dom: HTMLDocument, handler: (_event?: any) => void) {\n const b = button(dom, cancelIconURI, 'Cancel', handler)\n if (b.firstChild) { // sigh for tsc\n (b.firstChild as HTMLElement).style.opacity = '0.3' // Black X is too harsh: current language is grey X\n }\n return b\n}\n\n/* Make a continue button\n *\n * @param dom - the DOM document object\n * @param handler <function> - A handler to called when button is clicked\n *\n * @returns <dDomElement> - the button\n */\nexport function continueButton (dom: HTMLDocument, handler: (_event: any) => void) {\n return button(dom, checkIconURI, 'Continue', handler)\n}\n\n/* Grab a name for a new thing\n *\n * Form to get the name of a new thing before we create it\n * @params theClass Misspelt to avoid clashing with the JavaScript keyword\n * @returns: a promise of (a name or null if cancelled)\n */\nexport function askName (\n dom: HTMLDocument,\n kb: IndexedFormula,\n container: HTMLDivElement,\n predicate?: NamedNode,\n theClass?: NamedNode,\n noun?: string) {\n return new Promise(function (resolve, _reject) {\n const form = dom.createElement('div') // form is broken as HTML behaviour can resurface on js error\n // classLabel = utils.label(ns.vcard('Individual'))\n predicate = predicate || ns.foaf('name') // eg 'name' in user's language\n noun = noun || (theClass ? utils.label(theClass) : ' ') // eg 'folder' in users's language\n const prompt = noun + ' ' + utils.label(predicate) + ': '\n form.appendChild(dom.createElement('p')).textContent = prompt\n const namefield = dom.createElement('input')\n namefield.setAttribute('type', 'text')\n namefield.setAttribute('size', '100')\n namefield.setAttribute('maxLength', '2048') // No arbitrary limits\n namefield.setAttribute('style', style.textInputStyle)\n namefield.select() // focus next user input\n form.appendChild(namefield)\n container.appendChild(form)\n\n // namefield.focus()\n\n function gotName () {\n ((form as HTMLElement).parentNode as HTMLElement).removeChild(form)\n resolve(namefield.value.trim())\n }\n\n namefield.addEventListener('keyup', function (e) {\n if (e.keyCode === 13) {\n gotName()\n }\n }, false)\n\n form.appendChild(dom.createElement('br'))\n\n form.appendChild(cancelButton(dom, function (_event) {\n ((form as HTMLElement).parentNode as HTMLElement).removeChild(form)\n resolve(null)\n }))\n\n form.appendChild(continueButton(dom, function (_event) {\n gotName()\n }))\n namefield.focus()\n }) // Promise\n}\n\n/**\n * A TR to represent a draggable person, etc in a list\n *\n * pred is unused param at the moment\n */\nexport const personTR = renderAsRow // The legacy name is used in a lot of places\n\nexport function renderAsRow (dom: HTMLDocument, pred: NamedNode, obj: NamedNode, options: any): HTMLTableRowElement {\n const tr = dom.createElement('tr')\n options = options || {}\n // tr.predObj = [pred.uri, obj.uri] moved to acl-control\n const td1 = tr.appendChild(dom.createElement('td'))\n const td2 = tr.appendChild(dom.createElement('td'))\n const td3 = tr.appendChild(dom.createElement('td'))\n\n // const image = td1.appendChild(dom.createElement('img'))\n const image = options.image || faviconOrDefault(dom, obj)\n\n td1.setAttribute('style', 'vertical-align: middle; width:2.5em; padding:0.5em; height: 2.5em;')\n td2.setAttribute('style', 'vertical-align: middle; text-align:left;')\n td3.setAttribute('style', 'vertical-align: middle; width:2em; padding:0.5em; height: 4em;')\n td1.appendChild(image)\n\n if (options.title) {\n td2.textContent = options.title\n } else {\n setName(td2, obj) // This is async\n }\n\n if (options.deleteFunction) {\n deleteButtonWithCheck(dom, td3, options.noun || 'one', options.deleteFunction)\n }\n if (obj.uri) {\n // blank nodes need not apply\n if (options.link !== false) {\n const anchor = td3.appendChild(linkIcon(dom, obj))\n anchor.classList.add('HoverControlHide')\n td3.appendChild(dom.createElement('br'))\n }\n if (options.draggable !== false) {\n // default is on\n image.setAttribute('draggable', 'false') // Stop the image being dragged instead - just the TR\n makeDraggable(tr, obj)\n }\n }\n ;(tr as any).subject = obj\n return tr\n}\n\n/* A helper function for renderAsDiv\n* creates the NameDiv for the person\n* Note: could not move it to the helper file because they call exported functions\n* from buttons\n* @internal exporting this only for unit tests\n*/\nexport function createNameDiv (dom: HTMLDocument, div: HTMLDivElement, title: string | undefined, obj: NamedNode) {\n const nameDiv = div.appendChild(dom.createElement('div'))\n if (title) {\n nameDiv.textContent = title\n } else {\n setName(nameDiv, obj) // This is async\n }\n}\n/* A helper function for renderAsDiv\n* creates the linkDiv for the person\n* Note: could not move it to the helper file because they call exported functions\n* from buttons\n* @internal exporting this only for unit tests\n*/\nexport function createLinkDiv (dom: HTMLDocument, div: HTMLDivElement, obj: NamedNode, options: RenderAsDivOptions) {\n const linkDiv = div.appendChild(dom.createElement('div'))\n linkDiv.setAttribute('style', style.linkDivStyle)\n\n if (options.deleteFunction) {\n deleteButtonWithCheck(dom, linkDiv, options.noun || 'one', options.deleteFunction)\n }\n\n if (obj.uri) {\n // blank nodes need not apply\n if (options.link !== false) {\n createLinkForURI(dom, linkDiv, obj)\n }\n\n makeDraggable(div, obj)\n }\n}\n/**\n * A Div to represent a draggable person, etc in a list\n * configurable to add an onClick listener\n */\nexport function renderAsDiv (dom: HTMLDocument, obj: NamedNode, options: RenderAsDivOptions): HTMLElement {\n const div = dom.createElement('div')\n div.setAttribute('style', style.renderAsDivStyle)\n\n options = options || {}\n const image = options.image || faviconOrDefault(dom, obj)\n createImageDiv(dom, div, image)\n createNameDiv(dom, div, options.title, obj)\n createLinkDiv(dom, div, obj, options)\n\n if (options.clickable && options.onClickFunction) {\n addClickListenerToElement(div, options.onClickFunction)\n }\n\n // to be compatible with the SolidOS table layout\n if (options.wrapInATR) {\n const tr = wrapDivInATR(dom, div, obj)\n return tr\n }\n return div\n}\n\n/**\n * Refresh a DOM tree recursively\n */\nexport function refreshTree (root: any): void {\n if (root.refresh) {\n root.refresh()\n return\n }\n for (let i = 0; i < root.children.length; i++) {\n refreshTree(root.children[i])\n }\n}\n\n/**\n * Options argument for [[attachmentList]] function\n */\nexport type attachmentListOptions = {\n doc?: NamedNode\n modify?: boolean\n promptIcon?: string\n predicate?: NamedNode\n uploadFolder?: NamedNode\n noun?: string\n}\n\n/**\n * Component that displays a list of resources, for instance\n * the attachments of a message, or the various documents related\n * to a meeting.\n * Accepts dropping URLs onto it to add attachments to it.\n */\nexport function attachmentList (dom: HTMLDocument, subject: NamedNode, div: HTMLElement, options: attachmentListOptions = {}) {\n // options = options || {}\n\n const deleteAttachment = function (target) {\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n\n kb.updater.update(st(subject, predicate, target, doc) as any, [], function (\n uri,\n ok,\n errorBody,\n _xhr\n ) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error deleting one: ' + errorBody)\n }\n })\n }\n\n function createNewRow (target) {\n const theTarget = target\n const opt: any = { noun }\n if (modify) {\n opt.deleteFunction = function () {\n deleteAttachment(theTarget)\n }\n }\n return personTR(dom, predicate, target, opt)\n }\n\n const refresh = function () {\n const things = kb.each(subject, predicate)\n things.sort()\n utils.syncTableToArray(attachmentTable, things, createNewRow)\n }\n\n function droppedURIHandler (uris) {\n const ins: any = []\n uris.forEach(function (u) {\n const target = sym(u) // Attachment needs text label to disinguish I think not icon.\n debug.log('Dropped on attachemnt ' + u) // icon was: iconBase + 'noun_25830.svg'\n ins.push(st(subject, predicate, target, doc))\n })\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n\n kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error adding one: ' + errorBody)\n }\n })\n }\n\n function droppedFileHandler (files) {\n uploadFiles(\n kb.fetcher,\n files,\n options.uploadFolder?.uri, // Files\n options.uploadFolder?.uri, // Pictures\n function (theFile, destURI) {\n const ins = [st(subject, predicate, kb.sym(destURI), doc)]\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n kb.updater.update([], ins, function (uri, ok, errorBody, _xhr) {\n if (ok) {\n refresh()\n } else {\n complain(undefined, 'Error adding link to uploaded file: ' + errorBody)\n }\n })\n }\n )\n }\n\n const doc = options.doc || subject.doc()\n if (options.modify === undefined) options.modify = true\n const modify = options.modify\n const promptIcon: string = options.promptIcon || (iconBase + 'noun_748003.svg' as string) // target\n // const promptIcon = options.promptIcon || (iconBase + 'noun_25830.svg') // paperclip\n const predicate = options.predicate || ns.wf('attachment')\n const noun = options.noun || 'attachment'\n\n const kb = store\n const attachmentOuter = div.appendChild(dom.createElement('table'))\n attachmentOuter.setAttribute('style', 'margin-top: 1em; margin-bottom: 1em;')\n const attachmentOne = attachmentOuter.appendChild(dom.createElement('tr'))\n const attachmentLeft = attachmentOne.appendChild(dom.createElement('td'))\n const attachmentRight = attachmentOne.appendChild(dom.createElement('td'))\n const attachmentTable = attachmentRight.appendChild(dom.createElement('table'))\n attachmentTable.appendChild(dom.createElement('tr')) // attachmentTableTop\n\n ;(attachmentOuter as any).refresh = refresh // Participate in downstream changes\n // ;(attachmentTable as any).refresh = refresh <- outer should be best?\n\n refresh()\n\n if (modify) {\n // const buttonStyle = 'width; 2em; height: 2em; margin: 0.5em; padding: 0.1em;'\n const paperclip = button(dom, promptIcon, 'Drop attachments here')\n // paperclip.style = buttonStyle // @@ needed? default has white background\n attachmentLeft.appendChild(paperclip)\n const fhandler = options.uploadFolder ? droppedFileHandler : null\n makeDropTarget(paperclip, droppedURIHandler, fhandler) // beware missing the wire of the paparclip!\n makeDropTarget(attachmentLeft, droppedURIHandler, fhandler) // just the outer won't do it\n\n if (options.uploadFolder) { // Addd an explicit file upload button as well\n const buttonDiv = fileUploadButtonDiv(dom, droppedFileHandler)\n attachmentLeft.appendChild(buttonDiv)\n // buttonDiv.children[1].style = buttonStyle\n }\n }\n return attachmentOuter\n}\n\n// /////////////////////////////////////////////////////////////////////////////\n\n/**\n * Event Handler for links within solid apps.\n *\n * Note that native links have constraints in Firefox, they\n * don't work with local files for instance (2011)\n */\nexport function openHrefInOutlineMode (e: Event) {\n e.preventDefault()\n e.stopPropagation()\n const target = utils.getTarget(e)\n const uri = target.getAttribute('href')\n if (!uri) return debug.log('openHrefInOutlineMode: No href found!\\n')\n const dom = window.document\n if ((dom as any).outlineManager) {\n // @@ TODO Remove the use of document as a global object\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n ;(dom as any).outlineManager.GotoSubject(store.sym(uri), true, undefined, true, undefined)\n } else if (window && (window as any).panes && (window as any).panes.getOutliner) {\n // @@ TODO Remove the use of window as a global object\n ;(window as any).panes\n .getOutliner()\n .GotoSubject(store.sym(uri), true, undefined, true, undefined)\n } else {\n debug.log('ERROR: Can\\'t access outline manager in this config')\n }\n // dom.outlineManager.GotoSubject(store.sym(uri), true, undefined, true, undefined)\n}\n\n/**\n * Make a URI in the Tabulator.org annotation store out of the URI of the thing to be annotated.\n *\n * @@ Todo: make it a personal preference.\n */\nexport function defaultAnnotationStore (subject:NamedNode):NamedNode | undefined {\n if (subject.uri === undefined) return undefined\n let s = subject.uri\n if (s.slice(0, 7) !== 'http://') return undefined\n s = s.slice(7) // Remove\n const hash = s.indexOf('#')\n if (hash >= 0) s = s.slice(0, hash)\n // Strip trailing\n else {\n const slash = s.lastIndexOf('/')\n if (slash < 0) return undefined\n s = s.slice(0, slash)\n }\n return store.sym('http://tabulator.org/wiki/annnotation/' + s)\n}\n\n/**\n * Retrieve all RDF class URIs from solid-ui's RDF store\n * @returns an object `ret` such that `Object.keys(ret)` is\n * the list of all class URIs.\n */\nexport function allClassURIs (): { [uri: string]: boolean } {\n const set = {}\n store\n .statementsMatching(undefined, ns.rdf('type'), undefined)\n .forEach(function (st) {\n if (st.object.value) set[st.object.value] = true\n })\n store\n .statementsMatching(undefined, ns.rdfs('subClassOf'), undefined)\n .forEach(function (st) {\n if (st.object.value) set[st.object.value] = true\n if (st.subject.value) set[st.subject.value] = true\n })\n store\n .each(undefined, ns.rdf('type'), ns.rdfs('Class'))\n .forEach(function (c) {\n if (c.value) set[c.value] = true\n })\n return set\n}\n\n/**\n * Figuring which properties we know about\n *\n * When the user inputs an RDF property, like for a form field\n * or when specifying the relationship between two arbitrary things,\n * then er can prompt them with properties the session knows about\n *\n * TODO: Look again by catching this somewhere. (On the kb?)\n * TODO: move to diff module? Not really a button.\n * @param {Store} kb The quadstore to be searched.\n */\n\nexport function propertyTriage (kb: IndexedFormula): any {\n const possibleProperties: any = {}\n // if (possibleProperties === undefined) possibleProperties = {}\n // const kb = store\n const dp = {}\n const op = {}\n let no = 0\n let nd = 0\n let nu = 0\n const pi = (kb as any).predicateIndex // One entry for each pred\n for (const p in pi) {\n const object = pi[p][0].object\n if (object.termType === 'Literal') {\n dp[p] = true\n nd++\n } else {\n op[p] = true\n no++\n }\n } // If nothing discovered, then could be either:\n const ps = kb.each(undefined, ns.rdf('type'), ns.rdf('Property'))\n for (let i = 0; i < ps.length; i++) {\n const p = ps[i].toNT()\n if (!op[p] && !dp[p]) {\n dp[p] = true\n op[p] = true\n nu++\n }\n }\n possibleProperties.op = op\n possibleProperties.dp = dp\n info(`propertyTriage: ${no} non-lit, ${nd} literal. ${nu} unknown.`)\n return possibleProperties\n}\n\n/**\n * General purpose widgets\n */\n\n/**\n * A button for jumping\n */\nexport function linkButton (dom: HTMLDocument, object: NamedNode): HTMLElement {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.textContent = 'Goto ' + utils.label(object)\n b.addEventListener('click', function (_event) {\n // b.parentNode.removeChild(b)\n // TODO fix dependency cycle to solid-panes by calling outlineManager\n ;(dom as any).outlineManager.GotoSubject(object, true, undefined, true, undefined)\n }, true)\n return b\n}\n\n/**\n * A button to remove some other element from the page\n */\nexport function removeButton (dom: HTMLDocument, element: HTMLElement) {\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n b.textContent = '✕' // MULTIPLICATION X\n b.addEventListener('click', function (_event) {\n ;(element as any).parentNode.removeChild(element)\n }, true)\n return b\n}\n\n// Description text area\n//\n// Make a box to demand a description or display existing one\n//\n// @param dom - the document DOM for the user interface\n// @param kb - the graph which is the knowledge base we are working with\n// @param subject - a term, the subject of the statement(s) being edited.\n// @param predicate - a term, the predicate of the statement(s) being edited\n// @param store - The web document being edited\n// @param callbackFunction - takes (boolean ok, string errorBody)\n\n// /////////////////////////////////////// Random I/O widgets /////////////\n\n// //// Column Header Buttons\n//\n// These are for selecting different modes, sources,styles, etc.\n//\n/*\nbuttons.headerButtons = function (dom, kb, name, words) {\n const box = dom.createElement('table')\n var i, word, s = '<tr>'\n box.setAttribute('style', 'width: 90%; height: 1.5em')\n for (i=0; i<words.length; i++) {\n s += '<td><input type=\"radio\" name=\"' + name + '\" id=\"' + words[i] + '\" value='\n }\n box.innerHTML = s + '</tr>'\n\n}\n*/\n// ////////////////////////////////////////////////////////////\n//\n// selectorPanel\n//\n// A vertical panel for selecting connections to left or right.\n//\n// @param inverse means this is the object rather than the subject\n//\nexport function selectorPanel (\n dom: HTMLDocument,\n kb: IndexedFormula,\n type: NamedNode,\n predicate: NamedNode,\n inverse: boolean,\n possible: NamedNode[],\n options: { connectIcon?: string },\n callbackFunction: (_x: NamedNode, _e: Event, _selected: boolean) => void,\n linkCallback: (_x: NamedNode, _e: Event, _inverse: boolean, _setStyleFunction: () => void) => void\n) {\n return selectorPanelRefresh(\n dom.createElement('div'),\n dom,\n kb,\n type,\n predicate,\n inverse,\n possible,\n options,\n callbackFunction,\n linkCallback\n )\n}\n\nexport function selectorPanelRefresh (\n list: HTMLElement,\n dom: HTMLDocument,\n kb: IndexedFormula,\n type: NamedNode,\n predicate: NamedNode,\n inverse: boolean,\n possible: NamedNode[],\n options: { connectIcon?: string },\n callbackFunction: (_x: NamedNode, _e: Event, _selected: boolean) => void,\n linkCallback: (_x: NamedNode, _e: Event, _inverse: boolean, _setStyleFunction: () => void) => void\n) {\n const style0 =\n 'border: 0.1em solid #ddd; border-bottom: none; width: 95%; height: 2em; padding: 0.5em;'\n let selected: any = null\n list.innerHTML = ''\n\n const refreshItem = function (box: HTMLElement, x: NamedNode) {\n // Scope to hold item and x\n let item: any\n // eslint-disable-next-line prefer-const\n let image: HTMLImageElement\n\n const setStyle = function () {\n const already = inverse\n ? kb.each(undefined, predicate, x)\n : kb.each(x, predicate)\n iconDiv.setAttribute('class', already.length === 0 ? 'hideTillHover' : '') // See tabbedtab.css\n image.setAttribute(\n 'src',\n options.connectIcon || iconBase + 'noun_25830.svg'\n )\n image.setAttribute('title', already.length ? already.length : 'attach' as any)\n }\n const f = index.twoLine.widgetForClass(type)\n // eslint-disable-next-line prefer-const\n item = f(dom, x)\n item.setAttribute('style', style0)\n\n const nav = dom.createElement('div')\n nav.setAttribute('class', 'hideTillHover') // See tabbedtab.css\n nav.setAttribute('style', 'float:right; width:10%')\n\n const a = dom.createElement('a')\n a.setAttribute('href', x.uri)\n a.setAttribute('style', 'float:right')\n nav.appendChild(a).textContent = '>'\n box.appendChild(nav)\n\n const iconDiv = dom.createElement('div')\n iconDiv.setAttribute(\n 'style',\n (inverse ? 'float:left;' : 'float:right;') + ' width:30px;'\n )\n image = dom.createElement('img')\n setStyle()\n iconDiv.appendChild(image)\n box.appendChild(iconDiv)\n\n item.addEventListener('click', function (event) {\n if (selected === item) {\n // deselect\n item.setAttribute('style', style0)\n selected = null\n } else {\n if (selected) selected.setAttribute('style', style0)\n item.setAttribute(\n 'style',\n style0 + 'background-color: #ccc; color:black;'\n )\n selected = item\n }\n callbackFunction(x, event, selected === item)\n setStyle()\n }, false)\n\n image.addEventListener('click', function (event) {\n linkCallback(x, event, inverse, setStyle)\n }, false)\n\n box.appendChild(item)\n return box\n }\n\n for (let i = 0; i < possible.length; i++) {\n const box = dom.createElement('div')\n list.appendChild(box)\n refreshItem(box, possible[i])\n }\n return list\n}\n\n// ###########################################################################\n//\n// Small compact views of things\n//\nexport let index: any = {}\n// ///////////////////////////////////////////////////////////////////////////\n// We need these for anything which is a subject of an attachment.\n//\n// These should be moved to type-dependeent UI code. Related panes maybe\n\nfunction twoLineDefault (dom: HTMLDocument, x: NamedNode): HTMLElement {\n // Default\n const box = dom.createElement('div')\n box.textContent = utils.label(x)\n return box\n}\n\n/**\n * Find a function that can create a widget for a given class\n * @param c The RDF class for which we want a widget generator function\n */\nfunction twoLineWidgetForClass (c: NamedNode): (_dom: HTMLDocument, _x: NamedNode) => HTMLElement {\n let widget = index.twoLine[c.uri]\n const kb = store\n if (widget) return widget\n const sup = kb.findSuperClassesNT(c)\n for (const cl in sup) {\n widget = index.twoLine[kb.fromNT(cl).uri]\n if (widget) return widget\n }\n return index.twoLine['']\n}\n\n/**\n * Display a transaction\n * @param x Should have attributes through triples in store:\n * * ns.qu('payee') -> a named node\n * * ns.qu('date) -> a literal\n * * ns.qu('amount') -> a literal\n */\nfunction twoLineTransaction (dom: HTMLDocument, x: NamedNode): HTMLElement {\n let failed = ''\n const enc = function (p) {\n const y = store.any(x, ns.qu(p))\n if (!y) failed += '@@ No value for ' + p + '! '\n return y ? utils.escapeForXML(y.value) : '?' // @@@@\n }\n const box = dom.createElement('table')\n box.innerHTML = `\n <tr>\n <td colspan=\"2\"> ${enc('payee')}</td>\n < /tr>\n < tr >\n <td>${enc('date').slice(0, 10)}</td>\n <td style = \"text-align: right;\">${enc('amount')}</td>\n </tr>`\n if (failed) {\n box.innerHTML = `\n <tr>\n <td><a href=\"${utils.escapeForXML(x.uri)}\">${utils.escapeForXML(failed)}</a></td>\n </tr>`\n }\n return box\n}\n\n/**\n * Display a trip\n * @param x Should have attributes through triples in store:\n * * ns.dc('title') -> a literal\n * * ns.cal('dtstart') -> a literal\n * * ns.cal('dtend') -> a literal\n */\nfunction twoLineTrip (\n dom: HTMLDocument,\n x: NamedNode\n): HTMLElement {\n const enc = function (p) {\n const y = store.any(x, p)\n return y ? utils.escapeForXML(y.value) : '?'\n }\n const box = dom.createElement('table')\n box.innerHTML = `\n <tr>\n <td colspan=\"2\">${enc(ns.dc('title'))}</td>\n </tr>\n <tr style=\"color: #777\">\n <td>${enc(ns.cal('dtstart'))}</td>\n <td>${enc(ns.cal('dtend'))}</td>\n </tr>`\n return box\n}\n\n/**\n * Stick a stylesheet link the document if not already there\n */\nexport function addStyleSheet (dom: HTMLDocument, href: string): void {\n const links = dom.querySelectorAll('link')\n for (let i = 0; i < links.length; i++) {\n if (\n (links[i].getAttribute('rel') || '') === 'stylesheet' &&\n (links[i].getAttribute('href') || '') === href\n ) {\n return\n }\n }\n const link = dom.createElement('link')\n link.setAttribute('rel', 'stylesheet')\n link.setAttribute('type', 'text/css')\n link.setAttribute('href', href)\n dom.getElementsByTagName('head')[0].appendChild(link)\n}\n\n// Figure (or guess) whether this is an image, etc\n//\nexport function isAudio (file?: NamedNode) {\n return isImage(file, 'audio')\n}\nexport function isVideo (file?: NamedNode) {\n return isImage(file, 'video')\n}\n/**\n *\n */\nexport function isImage (file?: NamedNode, kind?: string): boolean {\n const dcCLasses = {\n audio: 'http://purl.org/dc/dcmitype/Sound',\n image: 'http://purl.org/dc/dcmitype/Image',\n video: 'http://purl.org/dc/dcmitype/MovingImage'\n }\n const what = kind || 'image'\n // See https://github.com/linkeddata/rdflib.js/blob/e367d5088c/src/formula.ts#L554\n //\n const typeURIs = store.findTypeURIs(file as any)\n // See https://github.com/linkeddata/rdflib.js/blob/d5000f/src/utils-js.js#L14\n // e.g.'http://www.w3.org/ns/iana/media-types/audio'\n const prefix: string = Util.mediaTypeClass(what + '/*').uri.split('*')[0]\n for (const t in typeURIs) {\n if (t.startsWith(prefix)) return true\n }\n if (dcCLasses[what] in typeURIs) return true\n return false\n}\n\n/**\n * File upload button\n * @param dom The DOM aka document\n * @param droppedFileHandler Same handler function as drop, takes array of file objects\n * @returns {Element} - a div with a button and a inout in it\n * The input is hidden, as it is uglky - the user clicks on the nice icons and fires the input.\n */\n// See https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications\nexport function fileUploadButtonDiv (\n dom: HTMLDocument,\n droppedFileHandler: (_files: FileList) => void\n) {\n const div = dom.createElement('div')\n const input = div.appendChild(dom.createElement('input'))\n input.setAttribute('type', 'file')\n input.setAttribute('multiple', 'true')\n input.addEventListener(\n 'change',\n (event: any) => {\n debug.log('File drop event: ', event)\n if (event.files) {\n droppedFileHandler(event.files)\n } else if (event.target && event.target.files) {\n droppedFileHandler(event.target.files)\n } else {\n alert('Sorry no files .. internal error?')\n }\n },\n false\n )\n\n ;(input as any).style = 'display:none'\n const buttonElt = div.appendChild(\n button(\n dom,\n iconBase + 'noun_Upload_76574_000000.svg',\n 'Upload files',\n _event => {\n input.click()\n }\n )\n )\n makeDropTarget(buttonElt, null, droppedFileHandler) // Can also just drop on button\n return div\n}\n\nindex = {\n line: { // Approx 80em\n },\n twoLine: { // Approx 40em * 2.4em\n '': twoLineDefault,\n 'http://www.w3.org/2000/10/swap/pim/qif#Transaction': twoLineTransaction,\n 'http://www.w3.org/ns/pim/trip#Trip': twoLineTrip,\n widgetForClass: twoLineWidgetForClass\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,8 +10,7 @@ exports.uploadFiles = uploadFiles;
10
10
  var debug = _interopRequireWildcard(require("../debug"));
11
11
  var mime = _interopRequireWildcard(require("mime-types"));
12
12
  var style = _interopRequireWildcard(require("../style"));
13
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
13
+ 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); }
15
14
  /* Drag and drop common functionality
16
15
  *
17
16
  * It is easy to make something draggable, or to make it a drag target!