solid-panes 3.5.36 → 3.6.0-edc88cf3
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.
- package/coverage/clover.xml +152 -0
- package/coverage/coverage-final.json +6 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +131 -0
- package/coverage/lcov-report/outline/index.html +161 -0
- package/coverage/lcov-report/outline/outlineIcons.js.html +565 -0
- package/coverage/lcov-report/outline/propertyViews.ts.html +196 -0
- package/coverage/lcov-report/outline/viewAsImage.ts.html +121 -0
- package/coverage/lcov-report/outline/viewAsMbox.ts.html +127 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/trustedApplications/index.html +116 -0
- package/coverage/lcov-report/trustedApplications/trustedApplications.utils.ts.html +238 -0
- package/coverage/lcov.info +202 -0
- package/jest.config.js +3 -0
- package/lib/RDFXMLPane.js.map +1 -1
- package/lib/argument/argumentPane.js.map +1 -1
- package/lib/attach/attachPane.js.map +1 -1
- package/lib/audio/audioPane.js +6 -6
- package/lib/audio/audioPane.js.map +1 -1
- package/lib/classInstancePane.js.map +1 -1
- package/lib/dashboard/basicPreferences.js +7 -7
- package/lib/dashboard/basicPreferences.js.map +1 -1
- package/lib/dashboard/dashboardPane.js.map +1 -1
- package/lib/dashboard/homepage.js +4 -4
- package/lib/dashboard/homepage.js.map +1 -1
- package/lib/dataContentPane.js.map +1 -1
- package/lib/defaultPane.js.map +1 -1
- package/lib/dokieli/dokieliPane.js +1 -1
- package/lib/dokieli/dokieliPane.js.map +1 -1
- package/lib/form/pane.js +2 -2
- package/lib/form/pane.js.map +1 -1
- package/lib/home/homePane.js +3 -3
- package/lib/home/homePane.js.map +1 -1
- package/lib/humanReadablePane.js.map +1 -1
- package/lib/imagePane.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internal/internalPane.js.map +1 -1
- package/lib/mainPage/header.d.ts.map +1 -1
- package/lib/mainPage/header.js +8 -8
- package/lib/mainPage/header.js.map +1 -1
- package/lib/mainPage/index.js +3 -3
- package/lib/mainPage/index.js.map +1 -1
- package/lib/microblogPane/microblogPane.js.map +1 -1
- package/lib/n3Pane.js.map +1 -1
- package/lib/outline/manager.js +24 -28
- package/lib/outline/manager.js.map +1 -1
- package/lib/outline/manager.test.d.ts +2 -0
- package/lib/outline/manager.test.d.ts.map +1 -0
- package/lib/outline/manager.test.js +4 -4
- package/lib/outline/manager.test.js.map +1 -1
- package/lib/outline/propertyViews.js +1 -1
- package/lib/outline/propertyViews.js.map +1 -1
- package/lib/outline/propertyViews.test.d.ts +2 -0
- package/lib/outline/propertyViews.test.d.ts.map +1 -0
- package/lib/outline/propertyViews.test.js +1 -0
- package/lib/outline/propertyViews.test.js.map +1 -1
- package/lib/outline/userInput.js.map +1 -1
- package/lib/pad/padPane.js.map +1 -1
- package/lib/playlist/playlistPane.js.map +1 -1
- package/lib/registerPanes.js +8 -3
- package/lib/registerPanes.js.map +1 -1
- package/lib/schedule/schedulePane.js +1 -1
- package/lib/schedule/schedulePane.js.map +1 -1
- package/lib/sharing/sharingPane.js.map +1 -1
- package/lib/slideshow/slideshowPane.js +1 -1
- package/lib/slideshow/slideshowPane.js.map +1 -1
- package/lib/socialPane.js.map +1 -1
- package/lib/tabbed/tabbedPane.js +3 -3
- package/lib/tabbed/tabbedPane.js.map +1 -1
- package/lib/tableViewPane.js.map +1 -1
- package/lib/transaction/pane.js.map +1 -1
- package/lib/transaction/period.js.map +1 -1
- package/lib/trip/tripPane.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.dom.js +1 -1
- package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.test.d.ts +2 -0
- package/lib/trustedApplications/trustedApplications.test.d.ts.map +1 -0
- package/lib/trustedApplications/trustedApplications.test.js +1 -1
- package/lib/trustedApplications/trustedApplications.test.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.utils.js +5 -5
- package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.view.js +3 -3
- package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
- package/lib/ui/pane.js.map +1 -1
- package/lib/versionInfo.js +3 -3
- package/lib/versionInfo.js.map +1 -1
- package/lib/video/videoPane.js.map +1 -1
- package/package.json +4 -4
- package/src/mainPage/header.ts +6 -3
- package/src/outline/manager.js +6 -10
- package/src/outline/propertyViews.test.ts +2 -1
- package/src/registerPanes.js +7 -2
- package/src/versionInfo.ts +3 -3
- package/tsconfig.json +7 -1
- package/.babelrc +0 -16
- package/.eslintignore +0 -3
- package/.eslintrc +0 -26
- package/.github/workflows/ci.yml +0 -82
- package/.nvmrc +0 -1
- package/lib/outline/licenseOptions.js +0 -80
- package/lib/outline/licenseOptions.js.map +0 -1
- package/lib/profile/editProfile.view.d.ts +0 -13
- package/lib/profile/editProfile.view.d.ts.map +0 -1
- package/lib/profile/editProfile.view.js +0 -135
- package/lib/profile/editProfile.view.js.map +0 -1
- package/lib/profile/profile.dom.d.ts +0 -4
- package/lib/profile/profile.dom.d.ts.map +0 -1
- package/lib/profile/profile.dom.js +0 -18
- package/lib/profile/profile.dom.js.map +0 -1
- package/src/outline/licenseOptions.js +0 -105
- package/src/profile/editProfile.view.ts +0 -164
- package/src/profile/profile.dom.ts +0 -20
- package/src/profile/profileFormText.ttl +0 -386
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","names":["paneRegistry","_interopRequireWildcard","require","$rdf","UI","_solidLogic","_propertyViews","_licenseOptions","_outlineIcons","_userInput","queryByExample","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","Array","from","test","len","length","arr2","l","Symbol","iterator","f","next","done","push","value","isArray","_regeneratorRuntime","c","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","h","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_default","context","dom","document","outlineIcons","labeller","LanguagePreference","outline","thisOutline","selection","ancestor","utils","sparql","rdf","UpdateManager","kb","store","sf","fetcher","qs","QuerySource","UserInput","clipboardAddress","clipboardInit","outlineElement","init","table","getOutlineContainer","benchmark","lastkbsize","begin","Date","getTime","returnValue","end","log","statements","appendRemoveIcon","node","subject","removeNode","image","AJARImage","src","icon_remove_node","addEventListener","removeNodeIconMouseDownListener","setAttribute","toNT","style","marginLeft","marginRight","appendChild","appendAccessIcons","obj","termType","uris","sort","last","appendAccessIcon","uri","docuri","docpart","state","getState","icon","alt","listener","icon_unrequested","unrequestedIconMouseDownListener","icon_requested","failedIconMouseDownListener","icon_fetched","fetchedIconMouseDownListener","icon_failed","img","tooltips","replace","addButtonCallbacks","outlineObjectTD","view","deleteNode","statement","td","createElement","theClass","why","licenseOptions","checklicense","icons","originalIconBase","expandMouseDownListener","whether","ns","link","className","viewAsBoringDefault","tabulatorSelect","setSelected","tabulatorDeselect","selectableTDClickListener","outlinePredicateTD","predicate","newTr","inverse","internal","predicateTD","lab","predicateLabelForXML","elements","toUpperCase","labelTD","createTextNode","width","termWidget","construct","w","termWidgets","AJAR_statement","filter","addIcon","globalAppTabs","_globalAppTabs","_callee","options","div","me","items","renderTab","renderMain","_args","_callee$","_context","_renderMain","containerDiv","item","pane","byName","paneName","innerHTML","authn","currentUser","GotoSubject","_renderTab","dataset","globalPaneName","tabName","textContent","label","console","alert","getDashboardItems","tabs","tabWidget","ordered","orientation","backgroundColor","selectedTab","onClose","getDashboard","_getDashboardItems","_callee7","_yield$Promise$all","_yield$Promise$all2","books","pods","getPods","_getPods","getAddressBooks","_getAddressBooks","_callee7$","_context8","_getAddressBooks3","_callee6","_context6","_callee6$","_context7","login","findAppInstances","vcard","instances","map","book","index","concat","iconBase","t0","_getAddressBooks2","_getPods3","_callee5","addPodStorage","_addPodStorage","addPodStorageFromUrl","_addPodStorageFromUrl","podUrl","uniques","_callee5$","_context5","_uniques","nodes","uniqueNodes","find","uniqueNode","equals","_addPodStorageFromUrl3","_callee4","url","podStorage","pathStorage","_callee4$","_context4","URL","pathname","substring","lastIndexOf","sym","origin","_addPodStorageFromUrl2","_x8","_addPodStorage3","_callee3","pod","_callee3$","_context3","loadContainerRepresentation","holds","space","doc","_addPodStorage2","_x7","load","each","_ref","_callee2","_callee2$","_context2","_x9","window","location","href","searchParams","t1","split","startsWith","_getPods2","all","showDashboard","_showDashboard","_callee8","dashboardContainer","outlineContainer","_tab","dashboard","tab","closeDashboard","_args8","_callee8$","_context9","_closeDashboard","display","getDashboardContainer","childNodes","querySelector","click","warn","authSession","onLogout","getOrCreateContainer","id","getElementById","mainContainer","body","_x","_loadContainerRepresentation","_callee9","response","containerTurtle","_callee9$","_context10","any","ldp","webOperation","initFetchOptions","headers","accept","responseText","parse","getRelevantPanes","_x2","_x3","_getRelevantPanes","_callee10","panes","relevantPanes","filteredPanes","firstRelevantPaneIndex","firstFilteredPaneIndex","_callee10$","_context11","endsWith","session","list","global","filterAvailablePanes","indexOf","getPane","shouldGetFocus","expandedHeaderTR","_x4","_x5","_x6","_expandedHeaderTR","_callee12","requiredPane","renderPaneIconTray","_renderPaneIconTray","tr","header","showHeader","strong","_callee12$","_context13","_renderPaneIconTray3","_callee11","paneShownStyle","paneHiddenStyle","paneIconTray","paneNumber","_args11","_callee11$","_context12","hideList","firstPane","ico","listen","event","containingTable","parentNode","nodeName","removePanes","specific","firstChild","nextSibling","paneButton","removeAndRefresh","requireQueryButton","numberOfPanesRequiringQueryButton","renderPane","paneDiv","render","pre","stackString","removeAttribute","second","row","cell","insertBefore","getAttribute","shiftKey","_renderPaneIconTray2","_x10","hover","solo","collapseMouseDownListener","widgets","makeDraggable","par","placeholder","replaceChild","removeChild","propertyTable","debug","canon","tr1","propertyTR","st","AJAR_inverse","appendPropertyTRs","parent","plist","predicateFilter","sel","j","k","x","RDFComparePredicateSubject","object","RDFComparePredicateObject","max","_loop","defaultpropview","views","defaults","dups","langTagged","myLang","sameTerm","lang","showNobj","predDups","show","showLaterArray","displayed","trObj","colspan","moreTR","moreTD","small","predToggle","current","toggleObj","stopPropagation","showAllobj","_ret","iconTD","tooltip","parseInt","removeIcon","baseURI","elt","eltSrc","relativeIconSrc","join","replaceIcon","oldIcon","newIcon","QueryObj","pat","formula","vars","queries","target","fireOn","makeIconCallback","IconCallback","req","title","addCallback","selected","optOnIconMouseDownListener","targetOf","optOn","optOff","optOffIconMouseDownListener","setSelectedParent","inc","onIcon","offIcon","num","previousSibling","statusBarClick","getTarget","content","showURI","about","showSource","sourceWidget","sources","source","highlight","getSelection","newValue","cla","getTerm","editable","updater","addTri","deselectAll","srcElement","nodeType","walk","directionCode","inputTd","selectedTd","newSelTd","lastChild","tagName","newSelected","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","OutlinerKeypressPanel","keyCode","setSelectedAfterward","_uri","getAbout","focusTd","removeCallback","Enter","Keypress","preventDefault","Delete","titleTd","outlineCollapse","outlineExpand","charCode","ctrlKey","copyToClipboard","pasteFromClipboard","PosY","findPos","clientHeight","scrollY","innerHeight","getEyeFocus","OutlinerMouseclickPanel","_tabulatorMode","TabulatorMousedown","Click","altKey","outlineRefocus","immediate","fetch","force","refresh","clearInputAndSave","detail","tname","clearMenu","lastModified","backOut","icon_show_choices","icon_add_triple","setUrlBarAndTitle","site","subject1","already","newTable","emptyNode","seeAlsoWhat","rdfs","lookUpThing","expand","cursubj","docTerm","relevant","as","rd","HTTPRedirects","anyStatementMatching","success","status","returnConditions","returnCode","isAudio","isVideo","nowOrWhenFetched","ok","message","level","myview","replaceTD","newTd","replacedTd","reselect","outer","GotoFormURI_enterKey","GotoFormURI","_e","GotoURI","GotoURIinit","referrer","GotoSubjectDefault","verticalAlign","defaultView","history","stateObj","pushState","propertyViews","rep","styles","integer","decimal","datatype","xsd","anchor","icon_telephone","linkIcon","numcell","statementsAsTables","createTabURI"],"sources":["../../src/outline/manager.js"],"sourcesContent":["/* istanbul ignore file */\n/* -*- coding: utf-8-dos -*-\n Outline Mode Manager\n*/\nimport * as paneRegistry from 'pane-registry'\nimport * as $rdf from 'rdflib'\nimport * as UI from 'solid-ui'\nimport { authn, authSession, store } from 'solid-logic'\nimport { propertyViews } from './propertyViews'\nimport { licenseOptions } from './licenseOptions'\n\nimport { outlineIcons } from './outlineIcons.js' // @@ chec\nimport { UserInput } from './userInput.js'\nimport * as queryByExample from './queryByExample.js'\n\n/* global alert XPathResult sourceWidget */\n// XPathResult?\n\n// const iconHeight = '24px'\n\nexport default function (context) {\n const dom = context.dom\n\n this.document = context.dom\n this.outlineIcons = outlineIcons\n this.labeller = this.labeller || {}\n this.labeller.LanguagePreference = '' // for now\n const outline = this // Kenny: do we need this?\n const thisOutline = this\n let selection = []\n this.selection = selection\n this.ancestor = UI.utils.ancestor // make available as outline.ancestor in callbacks\n this.sparql = UI.rdf.UpdateManager\n this.kb = store\n const kb = store\n const sf = store.fetcher\n dom.outline = this\n this.qs = new queryByExample.QuerySource() // Track queries in queryByExample\n\n // var selection = [] // Array of statements which have been selected\n // this.focusTd // the <td> that is being observed\n this.UserInput = new UserInput(this)\n this.clipboardAddress = 'tabulator:clipboard' // Weird\n this.UserInput.clipboardInit(this.clipboardAddress)\n const outlineElement = this.outlineElement\n\n this.init = function () {\n const table = getOutlineContainer()\n table.outline = this\n }\n\n /** benchmark a function **/\n benchmark.lastkbsize = 0\n\n function benchmark (f) {\n const args = []\n for (let i = arguments.length - 1; i > 0; i--) args[i - 1] = arguments[i]\n // UI.log.debug('BENCHMARK: args=' + args.join());\n const begin = new Date().getTime()\n const returnValue = f.apply(f, args)\n const end = new Date().getTime()\n UI.log.info(\n 'BENCHMARK: kb delta: ' +\n (kb.statements.length - benchmark.lastkbsize) +\n ', time elapsed for ' +\n f +\n ' was ' +\n (end - begin) +\n 'ms'\n )\n benchmark.lastkbsize = kb.statements.length\n return returnValue\n } // benchmark\n\n // / ////////////////////// Representing data\n\n // Represent an object in summary form as a table cell\n\n function appendRemoveIcon (node, subject, removeNode) {\n const image = UI.utils.AJARImage(\n outlineIcons.src.icon_remove_node,\n 'remove',\n undefined,\n dom\n )\n image.addEventListener('click', removeNodeIconMouseDownListener)\n // image.setAttribute('align', 'right') Causes icon to be moved down\n image.node = removeNode\n image.setAttribute('about', subject.toNT())\n image.style.marginLeft = '5px'\n image.style.marginRight = '10px'\n // image.style.border='solid #777 1px';\n node.appendChild(image)\n return image\n }\n\n this.appendAccessIcons = function (kb, node, obj) {\n if (obj.termType !== 'NamedNode') return\n const uris = kb.uris(obj)\n uris.sort()\n let last = null\n for (let i = 0; i < uris.length; i++) {\n if (uris[i] === last) continue\n last = uris[i]\n thisOutline.appendAccessIcon(node, last)\n }\n }\n\n this.appendAccessIcon = function (node, uri) {\n if (!uri) return ''\n const docuri = UI.rdf.uri.docpart(uri)\n if (docuri.slice(0, 5) !== 'http:') return ''\n const state = sf.getState(docuri)\n let icon, alt, listener\n switch (state) {\n case 'unrequested':\n icon = outlineIcons.src.icon_unrequested\n alt = 'fetch'\n listener = unrequestedIconMouseDownListener\n break\n case 'requested':\n icon = outlineIcons.src.icon_requested\n alt = 'fetching'\n listener = failedIconMouseDownListener // new: can retry yello blob\n break\n case 'fetched':\n icon = outlineIcons.src.icon_fetched\n listener = fetchedIconMouseDownListener\n alt = 'loaded'\n break\n case 'failed':\n icon = outlineIcons.src.icon_failed\n alt = 'failed'\n listener = failedIconMouseDownListener\n break\n case 'unpermitted':\n icon = outlineIcons.src.icon_failed\n listener = failedIconMouseDownListener\n alt = 'no perm'\n break\n case 'unfetchable':\n icon = outlineIcons.src.icon_failed\n listener = failedIconMouseDownListener\n alt = 'cannot fetch'\n break\n default:\n UI.log.error('?? state = ' + state)\n break\n } // switch\n const img = UI.utils.AJARImage(\n icon,\n alt,\n outlineIcons.tooltips[icon].replace(/[Tt]his resource/, docuri),\n dom\n )\n img.setAttribute('uri', uri)\n img.addEventListener('click', listener) // @@ seemed to be missing 2017-08\n addButtonCallbacks(img, docuri)\n node.appendChild(img)\n return img\n } // appendAccessIcon\n\n /** make the td for an object (grammatical object)\n * @param obj - an RDF term\n * @param view - a VIEW function (rather than a bool asImage)\n **/\n\n this.outlineObjectTD = function outlineObjectTD (\n obj,\n view,\n deleteNode,\n statement\n ) {\n const td = dom.createElement('td')\n td.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n td.setAttribute('notSelectable', 'false')\n let theClass = 'obj'\n\n // check the IPR on the data. Ok if there is any checked license which is one the document has.\n if (statement && statement.why) {\n if (licenseOptions && licenseOptions.checklicense && licenseOptions.checklicense()) {\n theClass += ' licOkay' // flag as light green etc .licOkay {background-color: #dfd}\n }\n }\n\n // set about and put 'expand' icon\n if (\n obj.termType === 'NamedNode' ||\n obj.termType === 'BlankNode' ||\n (obj.termType === 'Literal' &&\n obj.value.slice &&\n (obj.value.slice(0, 6) === 'ftp://' ||\n obj.value.slice(0, 8) === 'https://' ||\n obj.value.slice(0, 7) === 'http://'))\n ) {\n td.setAttribute('about', obj.toNT())\n td.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-expand-trans.png',\n 'expand',\n undefined,\n dom\n )\n ).addEventListener('click', expandMouseDownListener)\n }\n td.setAttribute('class', theClass) // this is how you find an object\n // @@ TAKE CSS OUT OF STYLE SHEET\n if (kb.whether(obj, UI.ns.rdf('type'), UI.ns.link('Request'))) {\n td.className = 'undetermined'\n } // @@? why-timbl\n\n if (!view) {\n // view should be a function pointer\n view = viewAsBoringDefault\n }\n td.appendChild(view(obj))\n if (deleteNode) {\n appendRemoveIcon(td, obj, deleteNode)\n }\n\n // set DOM methods\n td.tabulatorSelect = function () {\n setSelected(this, true)\n }\n td.tabulatorDeselect = function () {\n setSelected(this, false)\n }\n\n td.addEventListener('click', selectableTDClickListener)\n return td\n } // outlineObjectTD\n\n this.outlinePredicateTD = function outlinePredicateTD (\n predicate,\n newTr,\n inverse,\n internal\n ) {\n const predicateTD = dom.createElement('TD')\n predicateTD.setAttribute('about', predicate.toNT())\n predicateTD.setAttribute('class', internal ? 'pred internal' : 'pred')\n\n let lab\n switch (predicate.termType) {\n case 'BlankNode': // TBD\n predicateTD.className = 'undetermined'\n break\n case 'NamedNode':\n lab = UI.utils.predicateLabelForXML(predicate, inverse)\n break\n case 'Collection': // some choices of predicate\n lab = UI.utils.predicateLabelForXML(predicate.elements[0], inverse)\n }\n lab = lab.slice(0, 1).toUpperCase() + lab.slice(1)\n // if (kb.statementsMatching(predicate,rdf('type'), UI.ns.link('Request')).length) predicateTD.className='undetermined';\n\n const labelTD = dom.createElement('TD')\n labelTD.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n labelTD.setAttribute('notSelectable', 'true')\n labelTD.appendChild(dom.createTextNode(lab))\n predicateTD.appendChild(labelTD)\n labelTD.style.width = '100%'\n predicateTD.appendChild(termWidget.construct(dom)) // termWidget is global???\n for (const w in outlineIcons.termWidgets) {\n if (!newTr || !newTr.AJAR_statement) break // case for TBD as predicate\n // alert(Icon.termWidgets[w]+' '+Icon.termWidgets[w].filter)\n if (\n outlineIcons.termWidgets[w].filter &&\n outlineIcons.termWidgets[w].filter(\n newTr.AJAR_statement,\n 'pred',\n inverse\n )\n ) {\n termWidget.addIcon(predicateTD, outlineIcons.termWidgets[w])\n }\n }\n\n // set DOM methods\n predicateTD.tabulatorSelect = function () {\n setSelected(this, true)\n }\n predicateTD.tabulatorDeselect = function () {\n setSelected(this, false)\n }\n predicateTD.addEventListener('click', selectableTDClickListener)\n return predicateTD\n } // outlinePredicateTD\n\n /**\n * Render Tabbed set of home app panes\n *\n * @param {Object} [options] A set of options you can provide\n * @param {string} [options.selectedTab] To open a specific dashboard pane\n * @param {Function} [options.onClose] If given, will present an X for the dashboard, and call this method when clicked\n * @returns Promise<{Element}> - the div that holds the dashboard\n */\n async function globalAppTabs (options = {}) {\n console.log('globalAppTabs @@')\n const div = dom.createElement('div')\n const me = authn.currentUser()\n if (!me) {\n alert('Must be logged in for this')\n throw new Error('Not logged in')\n }\n const items = await getDashboardItems()\n\n function renderTab (div, item) {\n div.dataset.globalPaneName = item.tabName || item.paneName\n div.textContent = item.label\n }\n\n function renderMain (containerDiv, item) {\n // Items are pane names\n const pane = paneRegistry.byName(item.paneName) // 20190701\n containerDiv.innerHTML = ''\n const table = containerDiv.appendChild(dom.createElement('table'))\n const me = authn.currentUser()\n thisOutline.GotoSubject(\n item.subject || me,\n true,\n pane,\n false,\n undefined,\n table\n )\n }\n\n div.appendChild(\n UI.tabs.tabWidget({\n dom,\n subject: me,\n items,\n renderMain,\n renderTab,\n ordered: true,\n orientation: 0,\n backgroundColor: '#eeeeee', // black?\n selectedTab: options.selectedTab,\n onClose: options.onClose\n })\n )\n return div\n }\n this.getDashboard = globalAppTabs\n\n async function getDashboardItems () {\n const me = authn.currentUser()\n if (!me) return []\n const div = dom.createElement('div')\n const [books, pods] = await Promise.all([getAddressBooks(), getPods()])\n return [\n {\n paneName: 'home',\n label: 'Your stuff',\n icon: UI.icons.iconBase + 'noun_547570.svg'\n },\n {\n paneName: 'basicPreferences',\n label: 'Preferences',\n icon: UI.icons.iconBase + 'noun_Sliders_341315_00000.svg'\n },\n {\n paneName: 'editProfile',\n label: 'Edit your profile',\n icon: UI.icons.iconBase + 'noun_492246.svg'\n }\n ]\n .concat(books)\n .concat(pods)\n\n async function getPods () {\n async function addPodStorage (pod) { // namedNode\n await loadContainerRepresentation(pod)\n if (kb.holds(pod, ns.rdf('type'), ns.space('Storage'), pod.doc())) {\n pods.push(pod)\n return true\n }\n return false\n }\n async function addPodStorageFromUrl (url) {\n const podStorage = new URL(url)\n // check for predicate pim:Storage in containers up the path tree\n let pathStorage = podStorage.pathname\n while (pathStorage.length) {\n pathStorage = pathStorage.substring(0, pathStorage.lastIndexOf('/'))\n if (await addPodStorage(kb.sym(`${podStorage.origin}${pathStorage}/`))) return\n }\n // TODO should url.origin be added to pods list when there are no pim:Storage ???\n }\n\n try {\n // need to make sure that profile is loaded\n await kb.fetcher.load(me.doc())\n } catch (err) {\n console.error('Unable to load profile', err)\n return []\n }\n // load pod's storages from profile\n let pods = kb.each(me, ns.space('storage'), null, me.doc())\n pods.map(async (pod) => {\n // TODO use addPodStorageFromUrl(pod.uri) to check for pim:Storage ???\n await loadContainerRepresentation(pod)\n })\n\n try {\n // if uri then SolidOS is a browse.html web app\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n const podUrl = uri || window.location.href\n await addPodStorageFromUrl(podUrl)\n } catch (err) {\n console.error('cannot load container', err)\n }\n // remove namedNodes duplicates\n function uniques (nodes) {\n const uniqueNodes = []\n nodes.forEach(node => {\n if (!uniqueNodes.find(uniqueNode => uniqueNode.equals(node))) uniqueNodes.push(node)\n })\n return uniqueNodes\n }\n pods = uniques(pods)\n if (!pods.length) return []\n return pods.map((pod, index) => {\n function split (item) { return item.uri.split('//')[1].slice(0, -1) }\n const label = split(me).startsWith(split(pod)) ? 'Your storage' : split(pod)\n return {\n paneName: 'folder',\n tabName: `folder-${index}`,\n label,\n subject: pod,\n icon: UI.icons.iconBase + 'noun_Cabinet_251723.svg'\n }\n })\n }\n\n async function getAddressBooks () {\n try {\n const context = await UI.login.findAppInstances(\n { me, div, dom },\n ns.vcard('AddressBook')\n )\n return (context.instances || []).map((book, index) => ({\n paneName: 'contact',\n tabName: `contact-${index}`,\n label: 'Contacts',\n subject: book,\n icon: UI.icons.iconBase + 'noun_15695.svg'\n }))\n } catch (err) {\n console.error('oops in globalAppTabs AddressBook')\n }\n return []\n }\n }\n this.getDashboardItems = getDashboardItems\n\n /**\n * Call this method to show the global dashboard.\n *\n * @param {Object} [options] A set of options that can be passed\n * @param {string} [options.pane] To open a specific dashboard pane\n * @returns {Promise<void>}\n */\n async function showDashboard (options = {}) {\n const dashboardContainer = getDashboardContainer()\n const outlineContainer = getOutlineContainer()\n // reuse dashboard if already children already is inserted\n if (dashboardContainer.childNodes.length > 0 && options.pane) {\n outlineContainer.style.display = 'none'\n dashboardContainer.style.display = 'inherit'\n const tab = dashboardContainer.querySelector(\n `[data-global-pane-name=\"${options.pane}\"]`\n )\n if (tab) {\n tab.click()\n return\n }\n console.warn(\n 'Did not find the referred tab in global dashboard, will open first one'\n )\n }\n\n // create a new dashboard if not already present\n const dashboard = await globalAppTabs({\n selectedTab: options.pane,\n onClose: closeDashboard\n })\n\n // close the dashboard if user log out\n authSession.onLogout(closeDashboard)\n\n // finally - switch to showing dashboard\n outlineContainer.style.display = 'none'\n dashboardContainer.appendChild(dashboard)\n const tab = dashboardContainer.querySelector(\n `[data-global-pane-name=\"${options.pane}\"]`\n )\n if (tab) {\n tab.click()\n }\n\n function closeDashboard () {\n dashboardContainer.style.display = 'none'\n outlineContainer.style.display = 'inherit'\n }\n }\n this.showDashboard = showDashboard\n\n function getDashboardContainer () {\n return getOrCreateContainer('GlobalDashboard')\n }\n\n function getOutlineContainer () {\n return getOrCreateContainer('outline')\n }\n\n /**\n * Get element with id or create a new on the fly with that id\n *\n * @param {string} id The ID of the element you want to get or create\n * @returns {HTMLElement}\n */\n function getOrCreateContainer (id) {\n return (\n document.getElementById(id) ||\n (() => {\n const dashboardContainer = document.createElement('div')\n dashboardContainer.id = id\n const mainContainer =\n document.querySelector('[role=\"main\"]') || document.body\n return mainContainer.appendChild(dashboardContainer)\n })()\n )\n }\n\n async function loadContainerRepresentation (subject) {\n // force reload for index.html with RDFa\n if (!kb.any(subject, ns.ldp('contains'), undefined, subject.doc())) {\n const response = await kb.fetcher.webOperation('GET', subject.uri, kb.fetcher.initFetchOptions(subject.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n $rdf.parse(containerTurtle, kb, subject.uri, 'text/turtle')\n }\n }\n\n async function getRelevantPanes (subject, context) {\n // make sure container representation is loaded (when server returns index.html)\n if (subject.uri.endsWith('/')) { await loadContainerRepresentation(subject) }\n const panes = context.session.paneRegistry\n const relevantPanes = panes.list.filter(\n pane => pane.label(subject, context) && !pane.global\n )\n if (relevantPanes.length === 0) {\n // there are no relevant panes, simply return default pane (which ironically is internalPane)\n return [panes.byName('internal')]\n }\n const filteredPanes = await UI.login.filterAvailablePanes(relevantPanes)\n if (filteredPanes.length === 0) {\n // if no relevant panes are available panes because of user role, we still allow for the most relevant pane to be viewed\n return [relevantPanes[0]]\n }\n const firstRelevantPaneIndex = panes.list.indexOf(relevantPanes[0])\n const firstFilteredPaneIndex = panes.list.indexOf(filteredPanes[0])\n // if the first relevant pane is loaded before the panes available wrt role, we still want to offer the most relevant pane\n return firstRelevantPaneIndex < firstFilteredPaneIndex\n ? [relevantPanes[0]].concat(filteredPanes)\n : filteredPanes\n }\n\n function getPane (relevantPanes, subject) {\n return (\n relevantPanes.find(\n pane => pane.shouldGetFocus && pane.shouldGetFocus(subject)\n ) || relevantPanes[0]\n )\n }\n\n async function expandedHeaderTR (subject, requiredPane, options) {\n async function renderPaneIconTray (td, options = {}) {\n const paneShownStyle =\n 'width: 24px; border-radius: 0.5em; border-top: solid #222 1px; border-left: solid #222 0.1em; border-bottom: solid #eee 0.1em; border-right: solid #eee 0.1em; margin-left: 1em; padding: 3px; background-color: #ffd;'\n const paneHiddenStyle =\n 'width: 24px; border-radius: 0.5em; margin-left: 1em; padding: 3px'\n const paneIconTray = td.appendChild(dom.createElement('nav'))\n paneIconTray.style =\n 'display:flex; justify-content: flex-start; align-items: center;'\n\n const relevantPanes = options.hideList\n ? []\n : await getRelevantPanes(subject, context)\n tr.firstPane = requiredPane || getPane(relevantPanes, subject)\n const paneNumber = relevantPanes.indexOf(tr.firstPane)\n\n if (relevantPanes.length !== 1) {\n // if only one, simplify interface\n relevantPanes.forEach((pane, index) => {\n const label = pane.label(subject, context)\n const ico = UI.utils.AJARImage(pane.icon, label, label, dom)\n ico.style = pane === tr.firstPane ? paneShownStyle : paneHiddenStyle // init to something at least\n // ico.setAttribute('align','right'); @@ Should be better, but ffox bug pushes them down\n // ico.style.width = iconHeight\n // ico.style.height = iconHeight\n const listen = function (ico, pane) {\n // Freeze scope for event time\n ico.addEventListener(\n 'click',\n function (event) {\n let containingTable\n // Find the containing table for this subject\n for (containingTable = td; containingTable.parentNode; containingTable = containingTable.parentNode) {\n if (containingTable.nodeName === 'TABLE') break\n }\n if (containingTable.nodeName !== 'TABLE') {\n throw new Error('outline: internal error.')\n }\n const removePanes = function (specific) {\n for (let d = containingTable.firstChild; d; d = d.nextSibling) {\n if (typeof d.pane !== 'undefined') {\n if (!specific || d.pane === specific) {\n if (d.paneButton) {\n d.paneButton.setAttribute('class', 'paneHidden')\n d.paneButton.style = paneHiddenStyle\n }\n removeAndRefresh(d)\n // If we just delete the node d, ffox doesn't refresh the display properly.\n // state = 'paneHidden';\n if (\n d.pane.requireQueryButton &&\n containingTable.parentNode.className /* outer table */ &&\n numberOfPanesRequiringQueryButton === 1 &&\n dom.getElementById('queryButton')\n ) {\n dom\n .getElementById('queryButton')\n .setAttribute('style', 'display:none;')\n }\n }\n }\n }\n }\n const renderPane = function (pane) {\n let paneDiv\n UI.log.info('outline: Rendering pane (2): ' + pane.name)\n\n try {\n paneDiv = pane.render(subject, context, options)\n } catch (e) {\n // Easier debugging for pane developers\n paneDiv = dom.createElement('div')\n paneDiv.setAttribute('class', 'exceptionPane')\n const pre = dom.createElement('pre')\n paneDiv.appendChild(pre)\n pre.appendChild(\n dom.createTextNode(UI.utils.stackString(e))\n )\n }\n\n if (\n pane.requireQueryButton &&\n dom.getElementById('queryButton')\n ) {\n dom.getElementById('queryButton').removeAttribute('style')\n }\n const second = containingTable.firstChild.nextSibling\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.appendChild(paneDiv)\n if (second) containingTable.insertBefore(row, second)\n else containingTable.appendChild(row)\n row.pane = pane\n row.paneButton = ico\n }\n const state = ico.getAttribute('class')\n if (state === 'paneHidden') {\n if (!event.shiftKey) {\n // shift means multiple select\n removePanes()\n }\n renderPane(pane)\n ico.setAttribute('class', 'paneShown')\n ico.style = paneShownStyle\n } else {\n removePanes(pane)\n ico.setAttribute('class', 'paneHidden')\n ico.style = paneHiddenStyle\n }\n\n let numberOfPanesRequiringQueryButton = 0\n for (let d = containingTable.firstChild; d; d = d.nextSibling) {\n if (d.pane && d.pane.requireQueryButton) {\n numberOfPanesRequiringQueryButton++\n }\n }\n },\n false\n )\n } // listen\n\n listen(ico, pane)\n ico.setAttribute(\n 'class',\n index !== paneNumber ? 'paneHidden' : 'paneShown'\n )\n if (index === paneNumber) tr.paneButton = ico\n paneIconTray.appendChild(ico)\n })\n }\n return paneIconTray\n } // renderPaneIconTray\n\n // Body of expandedHeaderTR\n const tr = dom.createElement('tr')\n if (options.hover) {\n // By default no hide till hover as community deems it confusing\n tr.setAttribute('class', 'hoverControl')\n }\n const td = tr.appendChild(dom.createElement('td'))\n td.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;' +\n 'display:flex; justify-content: space-between; flex-direction: row;'\n )\n td.setAttribute('notSelectable', 'true')\n td.setAttribute('about', subject.toNT())\n td.setAttribute('colspan', '2')\n\n // Stuff at the right about the subject\n const header = td.appendChild(dom.createElement('div'))\n header.style =\n 'display:flex; justify-content: flex-start; align-items: center; flex-wrap: wrap;'\n\n const showHeader = !!requiredPane\n\n if (!options.solo && !showHeader) {\n const icon = header.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-collapse.png',\n 'collapse',\n undefined,\n dom\n )\n )\n icon.addEventListener('click', collapseMouseDownListener)\n\n const strong = header.appendChild(dom.createElement('h1'))\n strong.appendChild(dom.createTextNode(UI.utils.label(subject)))\n strong.style =\n 'font-size: 150%; margin: 0 0.6em 0 0; padding: 0.1em 0.4em;'\n UI.widgets.makeDraggable(strong, subject)\n }\n\n header.appendChild(\n await renderPaneIconTray(td, {\n hideList: showHeader\n })\n )\n\n // set DOM methods\n tr.firstChild.tabulatorSelect = function () {\n setSelected(this, true)\n }\n tr.firstChild.tabulatorDeselect = function () {\n setSelected(this, false)\n }\n return tr\n } // expandedHeaderTR\n\n // / //////////////////////////////////////////////////////////////////////////\n\n /* PANES\n **\n ** Panes are regions of the outline view in which a particular subject is\n ** displayed in a particular way. They are like views but views are for query results.\n ** subject panes are currently stacked vertically.\n */\n\n // / //////////////////// Specific panes are in panes/*.js\n //\n // The defaultPane is the first one registered for which the label method exists\n // Those registered first take priority as a default pane.\n // That is, those earlier in this file\n\n /**\n * Pane registration\n */\n\n // the second argument indicates whether the query button is required\n\n // / ///////////////////////////////////////////////////////////////////////////\n\n // Remove a node from the DOM so that Firefox refreshes the screen OK\n // Just deleting it cause whitespace to accumulate.\n function removeAndRefresh (d) {\n const table = d.parentNode\n const par = table.parentNode\n const placeholder = dom.createElement('table')\n placeholder.setAttribute('style', 'width: 100%;')\n par.replaceChild(placeholder, table)\n table.removeChild(d)\n par.replaceChild(table, placeholder) // Attempt to\n }\n\n const propertyTable = (this.propertyTable = function propertyTable (\n subject,\n table,\n pane,\n options\n ) {\n UI.log.debug('Property table for: ' + subject)\n subject = kb.canon(subject)\n // if (!pane) pane = panes.defaultPane;\n\n if (!table) {\n // Create a new property table\n table = dom.createElement('table')\n table.setAttribute('style', 'width: 100%;')\n expandedHeaderTR(subject, pane, options).then(tr1 => {\n table.appendChild(tr1)\n\n if (tr1.firstPane) {\n let paneDiv\n try {\n UI.log.info('outline: Rendering pane (1): ' + tr1.firstPane.name)\n paneDiv = tr1.firstPane.render(subject, context, options)\n } catch (e) {\n // Easier debugging for pane developers\n paneDiv = dom.createElement('div')\n paneDiv.setAttribute('class', 'exceptionPane')\n const pre = dom.createElement('pre')\n paneDiv.appendChild(pre)\n pre.appendChild(dom.createTextNode(UI.utils.stackString(e)))\n }\n\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.appendChild(paneDiv)\n if (\n tr1.firstPane.requireQueryButton &&\n dom.getElementById('queryButton')\n ) {\n dom.getElementById('queryButton').removeAttribute('style')\n }\n table.appendChild(row)\n row.pane = tr1.firstPane\n row.paneButton = tr1.paneButton\n }\n })\n\n return table\n } else {\n // New display of existing table, keeping expanded bits\n UI.log.info('Re-expand: ' + table)\n // do some other stuff here\n return table\n }\n }) /* propertyTable */\n\n function propertyTR (doc, st, inverse) {\n const tr = doc.createElement('TR')\n tr.AJAR_statement = st\n tr.AJAR_inverse = inverse\n // tr.AJAR_variable = null; // @@ ?? was just 'tr.AJAR_variable'\n tr.setAttribute('predTR', 'true')\n const predicateTD = thisOutline.outlinePredicateTD(st.predicate, tr, inverse)\n tr.appendChild(predicateTD) // @@ add 'internal' to predicateTD's class for style? mno\n return tr\n }\n this.propertyTR = propertyTR\n\n // / ////////// Property list\n function appendPropertyTRs (parent, plist, inverse, predicateFilter) {\n // UI.log.info('@appendPropertyTRs, 'this' is %s, dom is %s, '+ // Gives 'can't access dead object'\n // 'thisOutline.document is %s', this, dom.location, thisOutline.document.location);\n // UI.log.info('@appendPropertyTRs, dom is now ' + this.document.location);\n // UI.log.info('@appendPropertyTRs, dom is now ' + thisOutline.document.location);\n UI.log.debug('Property list length = ' + plist.length)\n if (plist.length === 0) return ''\n let sel, j, k\n if (inverse) {\n sel = function (x) {\n return x.subject\n }\n plist = plist.sort(UI.utils.RDFComparePredicateSubject)\n } else {\n sel = function (x) {\n return x.object\n }\n plist = plist.sort(UI.utils.RDFComparePredicateObject)\n }\n\n const max = plist.length\n for (j = 0; j < max; j++) {\n // squishing together equivalent properties I think\n let s = plist[j]\n // if (s.object == parentSubject) continue; // that we knew\n\n // Avoid predicates from other panes\n if (predicateFilter && !predicateFilter(s.predicate, inverse)) continue\n\n const tr = propertyTR(dom, s, inverse)\n parent.appendChild(tr)\n const predicateTD = tr.firstChild // we need to kludge the rowspan later\n\n let defaultpropview = views.defaults[s.predicate.uri]\n\n // LANGUAGE PREFERENCES WAS AVAILABLE WITH FF EXTENSION - get from elsewhere?\n\n let dups = 0 // How many rows have the same predicate, -1?\n let langTagged = 0 // how many objects have language tags?\n let myLang = 0 // Is there one I like?\n\n for (\n k = 0;\n k + j < max && plist[j + k].predicate.sameTerm(s.predicate);\n k++\n ) {\n if (k > 0 && sel(plist[j + k]).sameTerm(sel(plist[j + k - 1]))) dups++\n if (sel(plist[j + k]).lang && outline.labeller.LanguagePreference) {\n langTagged += 1\n if (\n sel(plist[j + k]).lang.indexOf(\n outline.labeller.LanguagePreference\n ) >= 0\n ) {\n myLang++\n }\n }\n }\n\n /* Display only the one in the preferred language\n ONLY in the case (currently) when all the values are tagged.\n Then we treat them as alternatives. */\n\n if (myLang > 0 && langTagged === dups + 1) {\n for (let k = j; k <= j + dups; k++) {\n if (\n outline.labeller.LanguagePreference &&\n sel(plist[k]).lang.indexOf(outline.labeller.LanguagePreference) >= 0\n ) {\n tr.appendChild(\n thisOutline.outlineObjectTD(\n sel(plist[k]),\n defaultpropview,\n undefined,\n s\n )\n )\n break\n }\n }\n j += dups // extra push\n continue\n }\n\n tr.appendChild(\n thisOutline.outlineObjectTD(sel(s), defaultpropview, undefined, s)\n )\n\n /* Note: showNobj shows between n to 2n objects.\n * This is to prevent the case where you have a long list of objects\n * shown, and dangling at the end is '1 more' (which is easily ignored)\n * Therefore more objects are shown than hidden.\n */\n\n tr.showNobj = function (n) {\n const predDups = k - dups\n const show = 2 * n < predDups ? n : predDups\n const showLaterArray = []\n if (predDups !== 1) {\n predicateTD.setAttribute(\n 'rowspan',\n show === predDups ? predDups : n + 1\n )\n let l\n if (show < predDups && show === 1) {\n // what case is this...\n predicateTD.setAttribute('rowspan', 2)\n }\n let displayed = 0 // The number of cells generated-1,\n // all duplicate thing removed\n for (l = 1; l < k; l++) {\n // This detects the same things\n if (\n !kb\n .canon(sel(plist[j + l]))\n .sameTerm(kb.canon(sel(plist[j + l - 1])))\n ) {\n displayed++\n s = plist[j + l]\n defaultpropview = views.defaults[s.predicate.uri]\n const trObj = dom.createElement('tr')\n trObj.style.colspan = '1'\n trObj.appendChild(\n thisOutline.outlineObjectTD(\n sel(plist[j + l]),\n defaultpropview,\n undefined,\n s\n )\n )\n trObj.AJAR_statement = s\n trObj.AJAR_inverse = inverse\n parent.appendChild(trObj)\n if (displayed >= show) {\n trObj.style.display = 'none'\n showLaterArray.push(trObj)\n }\n } else {\n // ToDo: show all the data sources of this statement\n UI.log.info('there are duplicates here: %s', plist[j + l - 1])\n }\n }\n // @@a quick fix on the messing problem.\n if (show === predDups) {\n predicateTD.setAttribute('rowspan', displayed + 1)\n }\n } // end of if (predDups!==1)\n\n if (show < predDups) {\n // Add the x more <TR> here\n const moreTR = dom.createElement('tr')\n const moreTD = moreTR.appendChild(dom.createElement('td'))\n moreTD.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n moreTD.setAttribute('notSelectable', 'false')\n if (predDups > n) {\n // what is this for??\n const small = dom.createElement('a')\n moreTD.appendChild(small)\n\n const predToggle = (function (f) {\n return f(predicateTD, k, dups, n)\n })(function (predicateTD, k, dups, n) {\n return function (display) {\n small.innerHTML = ''\n if (display === 'none') {\n small.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-more-trans.png',\n 'more',\n 'See all',\n dom\n )\n )\n small.appendChild(\n dom.createTextNode(predDups - n + ' more...')\n )\n predicateTD.setAttribute('rowspan', n + 1)\n } else {\n small.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-shrink.png',\n '(less)',\n undefined,\n dom\n )\n )\n predicateTD.setAttribute('rowspan', predDups + 1)\n }\n for (let i = 0; i < showLaterArray.length; i++) {\n const trObj = showLaterArray[i]\n trObj.style.display = display\n }\n }\n }) // ???\n let current = 'none'\n const toggleObj = function (event) {\n predToggle(current)\n current = current === 'none' ? '' : 'none'\n if (event) event.stopPropagation()\n return false // what is this for?\n }\n toggleObj()\n small.addEventListener('click', toggleObj, false)\n } // if(predDups>n)\n parent.appendChild(moreTR)\n } // if\n } // tr.showNobj\n\n tr.showAllobj = function () {\n tr.showNobj(k - dups)\n }\n\n tr.showNobj(10)\n\n j += k - 1 // extra push\n }\n } // appendPropertyTRs\n\n this.appendPropertyTRs = appendPropertyTRs\n\n /* termWidget\n **\n */\n const termWidget = {} // @@@@@@ global\n global.termWidget = termWidget\n termWidget.construct = function (dom) {\n dom = dom || document\n const td = dom.createElement('TD')\n td.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n td.setAttribute('class', 'iconTD')\n td.setAttribute('notSelectable', 'true')\n td.style.width = '0px'\n return td\n }\n termWidget.addIcon = function (td, icon, listener) {\n const iconTD = td.childNodes[1]\n if (!iconTD) return\n let width = iconTD.style.width\n const img = UI.utils.AJARImage(icon.src, icon.alt, icon.tooltip, dom)\n width = parseInt(width)\n width = width + icon.width\n iconTD.style.width = width + 'px'\n iconTD.appendChild(img)\n if (listener) {\n img.addEventListener('click', listener)\n }\n }\n termWidget.removeIcon = function (td, icon) {\n const iconTD = td.childNodes[1]\n let baseURI\n if (!iconTD) return\n let width = iconTD.style.width\n width = parseInt(width)\n width = width - icon.width\n iconTD.style.width = width + 'px'\n for (let x = 0; x < iconTD.childNodes.length; x++) {\n const elt = iconTD.childNodes[x]\n const eltSrc = elt.src\n\n // ignore first '?' and everything after it //Kenny doesn't know what this is for\n try {\n baseURI = dom.location.href.split('?')[0]\n } catch (e) {\n console.log(e)\n baseURI = ''\n }\n const relativeIconSrc = UI.rdf.uri.join(icon.src, baseURI)\n if (eltSrc === relativeIconSrc) {\n iconTD.removeChild(elt)\n }\n }\n }\n termWidget.replaceIcon = function (td, oldIcon, newIcon, listener) {\n termWidget.removeIcon(td, oldIcon)\n termWidget.addIcon(td, newIcon, listener)\n }\n\n // / /////////////////////////////////////////////////// VALUE BROWSER VIEW\n\n // / /////////////////////////////////////////////////////// TABLE VIEW\n\n // Summarize a thing as a table cell\n\n /**********************\n\n query global vars\n\n ***********************/\n\n // const doesn't work in Opera\n // const BLANK_QUERY = { pat: kb.formula(), vars: [], orderBy: [] };\n // @ pat: the query pattern in an RDFIndexedFormula. Statements are in pat.statements\n // @ vars: the free variables in the query\n // @ orderBy: the variables to order the table\n\n function QueryObj () {\n this.pat = kb.formula()\n this.vars = []\n // this.orderBy = []\n }\n\n const queries = []\n queries[0] = new QueryObj()\n /*\n function querySave () {\n queries.push(queries[0])\n var choices = dom.getElementById('queryChoices')\n var next = dom.createElement('option')\n var box = dom.createElement('input')\n var index = queries.length - 1\n box.setAttribute('type', 'checkBox')\n box.setAttribute('value', index)\n choices.appendChild(box)\n choices.appendChild(dom.createTextNode('Saved query #' + index))\n choices.appendChild(dom.createElement('br'))\n next.setAttribute('value', index)\n next.appendChild(dom.createTextNode('Saved query #' + index))\n dom.getElementById('queryJump').appendChild(next)\n }\n*/\n /*\n function resetQuery () {\n function resetOutliner (pat) {\n var n = pat.statements.length\n var pattern, tr\n for (let i = 0; i < n; i++) {\n pattern = pat.statements[i]\n tr = pattern.tr\n // UI.log.debug('tr: ' + tr.AJAR_statement);\n if (typeof tr !== 'undefined') {\n delete tr.AJAR_pattern\n delete tr.AJAR_variable\n }\n }\n for (let x in pat.optional) { resetOutliner(pat.optional[x]) }\n }\n resetOutliner(myQuery.pat)\n UI.utils.clearVariableNames()\n queries[0] = myQuery = new QueryObj()\n }\n*/\n function addButtonCallbacks (target, fireOn) {\n UI.log.debug('Button callbacks for ' + fireOn + ' added')\n const makeIconCallback = function (icon) {\n return function IconCallback (req) {\n if (req.indexOf('#') >= 0) {\n console.log(\n '@@ makeIconCallback: Not expecting # in URI whose state changed: ' +\n req\n )\n // alert('Should have no hash in '+req)\n }\n if (!target) {\n return false\n }\n if (!outline.ancestor(target, 'DIV')) return false\n // if (term.termType != 'symbol') { return true } // should always ve\n if (req === fireOn) {\n target.src = icon\n target.title = outlineIcons.tooltips[icon]\n }\n return true\n }\n }\n sf.addCallback('request', makeIconCallback(outlineIcons.src.icon_requested))\n sf.addCallback('done', makeIconCallback(outlineIcons.src.icon_fetched))\n sf.addCallback('fail', makeIconCallback(outlineIcons.src.icon_failed))\n }\n\n // Selection support\n\n function selected (node) {\n const a = node.getAttribute('class')\n if (a && a.indexOf('selected') >= 0) return true\n return false\n }\n\n // These woulkd be simpler using closer variables below\n function optOnIconMouseDownListener (e) {\n // outlineIcons.src.icon_opton needed?\n const target = thisOutline.targetOf(e)\n const p = target.parentNode\n termWidget.replaceIcon(\n p.parentNode,\n outlineIcons.termWidgets.optOn,\n outlineIcons.termWidgets.optOff,\n optOffIconMouseDownListener\n )\n p.parentNode.parentNode.removeAttribute('optional')\n }\n\n function optOffIconMouseDownListener (e) {\n // outlineIcons.src.icon_optoff needed?\n const target = thisOutline.targetOf(e)\n const p = target.parentNode\n termWidget.replaceIcon(\n p.parentNode,\n outlineIcons.termWidgets.optOff,\n outlineIcons.termWidgets.optOn,\n optOnIconMouseDownListener\n )\n p.parentNode.parentNode.setAttribute('optional', 'true')\n }\n\n function setSelectedParent (node, inc) {\n const onIcon = outlineIcons.termWidgets.optOn\n const offIcon = outlineIcons.termWidgets.optOff\n for (let n = node; n.parentNode; n = n.parentNode) {\n while (true) {\n if (n.getAttribute('predTR')) {\n let num = n.getAttribute('parentOfSelected')\n if (!num) num = 0\n else num = parseInt(num)\n if (num === 0 && inc > 0) {\n termWidget.addIcon(\n n.childNodes[0],\n n.getAttribute('optional') ? onIcon : offIcon,\n n.getAttribute('optional')\n ? optOnIconMouseDownListener\n : optOffIconMouseDownListener\n )\n }\n num = num + inc\n n.setAttribute('parentOfSelected', num)\n if (num === 0) {\n n.removeAttribute('parentOfSelected')\n termWidget.removeIcon(\n n.childNodes[0],\n n.getAttribute('optional') ? onIcon : offIcon\n )\n }\n break\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else break\n }\n }\n }\n\n this.statusBarClick = function (event) {\n const target = UI.utils.getTarget(event)\n if (target.label) {\n window.content.location = target.label\n // The following alternative does not work in the extension.\n // var s = store.sym(target.label);\n // outline.GotoSubject(s, true);\n }\n }\n\n this.showURI = function showURI (about) {\n if (about && dom.getElementById('UserURI')) {\n dom.getElementById('UserURI').value =\n about.termType === 'NamedNode' ? about.uri : '' // blank if no URI\n }\n }\n\n this.showSource = function showSource () {\n if (typeof sourceWidget === 'undefined') return\n // deselect all before going on, this is necessary because you would switch tab,\n // close tab or so on...\n for (const uri in sourceWidget.sources) {\n sourceWidget.sources[uri].setAttribute('class', '')\n } // .class doesn't work. Be careful!\n for (let i = 0; i < selection.length; i++) {\n if (!selection[i].parentNode) {\n console.log('showSource: EH? no parentNode? ' + selection[i] + '\\n')\n continue\n }\n const st = selection[i].parentNode.AJAR_statement\n if (!st) continue // for root TD\n const source = st.why\n if (source && source.uri) {\n sourceWidget.highlight(source, true)\n }\n }\n }\n\n this.getSelection = function getSelection () {\n return selection\n }\n\n function setSelected (node, newValue) {\n // UI.log.info('selection has ' +selection.map(function(item){return item.textContent;}).join(', '));\n // UI.log.debug('@outline setSelected, intended to '+(newValue?'select ':'deselect ')+node+node.textContent);\n // if (newValue === selected(node)) return; //we might not need this anymore...\n if (node.nodeName !== 'TD') {\n UI.log.debug('down' + node.nodeName)\n throw new Error(\n 'Expected TD in setSelected: ' +\n node.nodeName +\n ' : ' +\n node.textContent\n )\n }\n UI.log.debug('pass')\n let cla = node.getAttribute('class')\n if (!cla) cla = ''\n if (newValue) {\n cla += ' selected'\n if (cla.indexOf('pred') >= 0 || cla.indexOf('obj') >= 0) {\n setSelectedParent(node, 1)\n }\n selection.push(node)\n // UI.log.info('Selecting '+node.textContent)\n\n const about = UI.utils.getTerm(node) // show uri for a newly selectedTd\n thisOutline.showURI(about)\n\n let st = node.AJAR_statement // show blue cross when the why of that triple is editable\n if (typeof st === 'undefined' && node.parentNode) st = node.parentNode.AJAR_statement\n // if (typeof st === 'undefined') return; // @@ Kludge? Click in the middle of nowhere\n if (st) {\n // don't do these for headers or base nodes\n const source = st.why\n // var target = st.why\n const editable = store.updater.editable(source.uri, kb)\n if (!editable) {\n // let target = node.parentNode.AJAR_inverse ? st.object : st.subject\n } // left hand side\n // think about this later. Because we update to the why for now.\n // alert('Target='+target+', editable='+editable+'\\nselected statement:' + st)\n if (editable && cla.indexOf('pred') >= 0) {\n termWidget.addIcon(node, outlineIcons.termWidgets.addTri)\n } // Add blue plus\n }\n } else {\n UI.log.debug('cla=$' + cla + '$')\n if (cla === 'selected') cla = '' // for header <TD>\n cla = cla.replace(' selected', '')\n if (cla.indexOf('pred') >= 0 || cla.indexOf('obj') >= 0) {\n setSelectedParent(node, -1)\n }\n if (cla.indexOf('pred') >= 0) {\n termWidget.removeIcon(node, outlineIcons.termWidgets.addTri)\n }\n\n selection = selection.filter(function (x) {\n return x === node\n })\n\n UI.log.info('Deselecting ' + node.textContent)\n }\n if (typeof sourceWidget !== 'undefined') thisOutline.showSource() // Update the data sources display\n // UI.log.info('selection becomes [' +selection.map(function(item){return item.textContent;}).join(', ')+']');\n // UI.log.info('Setting className ' + cla);\n node.setAttribute('class', cla)\n }\n\n function deselectAll () {\n const n = selection.length\n for (let i = n - 1; i >= 0; i--) setSelected(selection[i], false)\n selection = []\n }\n\n /** Get the target of an event **/\n this.targetOf = function (e) {\n let target\n if (!e) e = window.event\n if (e.target) {\n target = e.target\n } else if (e.srcElement) {\n target = e.srcElement\n } else {\n UI.log.error(\"can't get target for event \" + e)\n return false\n } // fail\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n return target\n } // targetOf\n\n this.walk = function walk (directionCode, inputTd) {\n const selectedTd = inputTd || selection[0]\n let newSelTd\n switch (directionCode) {\n case 'down':\n try {\n newSelTd = selectedTd.parentNode.nextSibling.lastChild\n } catch (e) {\n this.walk('up')\n return\n } // end\n deselectAll()\n setSelected(newSelTd, true)\n break\n case 'up':\n try {\n newSelTd = selectedTd.parentNode.previousSibling.lastChild\n } catch (e) {\n return\n } // top\n deselectAll()\n setSelected(newSelTd, true)\n break\n case 'right':\n deselectAll()\n if (\n selectedTd.nextSibling ||\n selectedTd.lastChild.tagName === 'strong'\n ) {\n setSelected(selectedTd.nextSibling, true)\n } else {\n const newSelected = dom.evaluate(\n 'table/div/tr/td[2]',\n selectedTd,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n ).singleNodeValue\n setSelected(newSelected, true)\n }\n break\n case 'left':\n deselectAll()\n if (\n selectedTd.previousSibling &&\n selectedTd.previousSibling.className === 'undetermined'\n ) {\n setSelected(selectedTd.previousSibling, true)\n return true // do not shrink signal\n } else {\n setSelected(UI.utils.ancestor(selectedTd.parentNode, 'TD'), true)\n } // supplied by thieOutline.focusTd\n break\n case 'moveTo':\n // UI.log.info(selection[0].textContent+'->'+inputTd.textContent);\n deselectAll()\n setSelected(inputTd, true)\n break\n }\n if (directionCode === 'down' || directionCode === 'up') {\n if (!newSelTd.tabulatorSelect) this.walk(directionCode)\n }\n // return newSelTd;\n }\n\n // Keyboard Input: we can consider this as...\n // 1. a fast way to modify data - enter will go to next predicate\n // 2. an alternative way to input - enter at the end of a predicate will create a new statement\n this.OutlinerKeypressPanel = function OutlinerKeypressPanel (e) {\n UI.log.info('Key ' + e.keyCode + ' pressed')\n\n function showURI (about) {\n if (about && dom.getElementById('UserURI')) {\n dom.getElementById('UserURI').value =\n about.termType === 'NamedNode' ? about.uri : '' // blank if no URI\n }\n }\n\n function setSelectedAfterward (_uri) {\n if (arguments[3]) return true\n walk('right', selectedTd)\n showURI(UI.utils.getAbout(kb, selection[0]))\n return true\n }\n let target, editable\n\n if (UI.utils.getTarget(e).tagName === 'TEXTAREA') return\n if (UI.utils.getTarget(e).id === 'UserURI') return\n if (selection.length > 1) return\n if (selection.length === 0) {\n if (\n e.keyCode === 13 ||\n e.keyCode === 38 ||\n e.keyCode === 40 ||\n e.keyCode === 37 ||\n e.keyCode === 39\n ) {\n this.walk('right', thisOutline.focusTd)\n showURI(UI.utils.getAbout(kb, selection[0]))\n }\n return\n }\n const selectedTd = selection[0]\n // if not done, Have to deal with redraw...\n sf.removeCallback('done', 'setSelectedAfterward')\n sf.removeCallback('fail', 'setSelectedAfterward')\n\n switch (e.keyCode) {\n case 13: // enter\n if (UI.utils.getTarget(e).tagName === 'HTML') {\n // I don't know why 'HTML'\n const object = UI.utils.getAbout(kb, selectedTd)\n target = selectedTd.parentNode.AJAR_statement.why\n editable = store.updater.editable(target.uri, kb)\n if (object) {\n // <Feature about='enterToExpand'>\n outline.GotoSubject(object, true)\n /* //deal with this later\n deselectAll();\n var newTr=dom.getElementById('outline').lastChild;\n setSelected(newTr.firstChild.firstChild.childNodes[1].lastChild,true);\n function setSelectedAfterward(uri){\n deselectAll();\n setSelected(newTr.firstChild.firstChild.childNodes[1].lastChild,true);\n showURI(getAbout(kb,selection[0]));\n return true;\n }\n sf.insertCallback('done',setSelectedAfterward);\n sf.insertCallback('fail',setSelectedAfterward);\n */\n // </Feature>\n } else if (editable) {\n // this is a text node and editable\n thisOutline.UserInput.Enter(selectedTd)\n }\n } else {\n // var newSelTd=thisOutline.UserInput.lastModified.parentNode.parentNode.nextSibling.lastChild;\n this.UserInput.Keypress(e)\n this.walk('down') // bug with input at the end\n // dom.getElementById('docHTML').focus(); //have to set this or focus blurs\n e.stopPropagation()\n }\n return\n case 38: // up\n // thisOutline.UserInput.clearInputAndSave();\n // ^^^ does not work because up and down not captured...\n this.walk('up')\n e.stopPropagation()\n e.preventDefault()\n break\n case 40: // down\n // thisOutline.UserInput.clearInputAndSave();\n this.walk('down')\n e.stopPropagation()\n e.preventDefault()\n } // switch\n\n if (UI.utils.getTarget(e).tagName === 'INPUT') return\n\n let walk\n switch (e.keyCode) {\n case 46: // delete\n case 8: // backspace\n target = selectedTd.parentNode.AJAR_statement.why\n editable = store.updater.editable(target.uri, kb)\n if (editable) {\n e.preventDefault() // prevent from going back\n this.UserInput.Delete(selectedTd)\n }\n break\n case 37: { // left\n if (this.walk('left')) return\n const titleTd = UI.utils.ancestor(selectedTd.parentNode, 'TD')\n outlineCollapse(selectedTd, UI.utils.getAbout(kb, titleTd))\n break\n }\n case 39: // right\n // @@ TODO: Write away the need for exception on next line\n // eslint-disable-next-line no-case-declarations\n const obj = UI.utils.getAbout(kb, selectedTd)\n if (obj) {\n walk = this.walk\n if (selectedTd.nextSibling) {\n // when selectedTd is a predicate\n this.walk('right')\n return\n }\n if (selectedTd.firstChild.tagName !== 'TABLE') {\n // not expanded\n sf.addCallback('done', setSelectedAfterward)\n sf.addCallback('fail', setSelectedAfterward)\n outlineExpand(selectedTd, obj, {\n pane: paneRegistry.byName('defaultPane')\n })\n }\n setSelectedAfterward()\n }\n break\n case 38: // up\n case 40: // down\n break\n default:\n switch (e.charCode) {\n case 99: // c for Copy\n if (e.ctrlKey) {\n thisOutline.UserInput.copyToClipboard(\n thisOutline.clipboardAddress,\n selectedTd\n )\n break\n }\n break\n case 118: // v\n case 112: // p for Paste\n if (e.ctrlKey) {\n thisOutline.UserInput.pasteFromClipboard(\n thisOutline.clipboardAddress,\n selectedTd\n )\n // dom.getElementById('docHTML').focus(); //have to set this or focus blurs\n // window.focus();\n // e.stopPropagation();\n break\n }\n break\n default:\n if (UI.utils.getTarget(e).tagName === 'HTML') {\n /*\n //<Feature about='typeOnSelectedToInput'>\n thisOutline.UserInput.Click(e,selectedTd);\n thisOutline.UserInput.lastModified.value=String.fromCharCode(e.charCode);\n if (selectedTd.className==='undetermined selected') thisOutline.UserInput.AutoComplete(e.charCode)\n //</Feature>\n */\n // Events are not reliable...\n // var e2=document.createEvent('KeyboardEvent');\n // e2.initKeyEvent('keypress',true,true,null,false,false,false,false,e.keyCode,0);\n // UserInput.lastModified.dispatchEvent(e2);\n }\n }\n } // end of switch\n\n showURI(UI.utils.getAbout(kb, selection[0]))\n // alert(window);alert(doc);\n /*\n var wm = Components.classes['@mozilla.org/appshell/window-mediator;1']\n .getService(Components.interfaces.nsIWindowMediator);\n var gBrowser = wm.getMostRecentWindow('navigator:browser') */\n // gBrowser.addTab('http://www.w3.org/');\n // alert(gBrowser.addTab);alert(gBrowser.scroll);alert(gBrowser.scrollBy)\n // gBrowser.scrollBy(0,100);\n\n // var thisHtml=selection[0].owner\n if (selection[0]) {\n const PosY = UI.utils.findPos(selection[0])[1]\n if (\n PosY + selection[0].clientHeight >\n window.scrollY + window.innerHeight\n ) {\n UI.utils.getEyeFocus(selection[0], true, true, window)\n }\n if (PosY < window.scrollY + 54) {\n UI.utils.getEyeFocus(selection[0], true, undefined, window)\n }\n }\n }\n this.OutlinerMouseclickPanel = function (e) {\n switch (thisOutline.UserInput._tabulatorMode) {\n case 0:\n TabulatorMousedown(e)\n break\n case 1:\n thisOutline.UserInput.Click(e)\n break\n default:\n }\n }\n\n /** things to do onmousedown in outline view **/\n /*\n ** To Do: This big event handler needs to be replaced by lots\n ** of little ones individually connected to each icon. This horrible\n ** switch below isn't modular. (Sorry!) - Tim\n */\n // expand\n // collapse\n // refocus\n // select\n // visit/open a page\n\n function expandMouseDownListener (e) {\n // For icon (UI.icons.originalIconBase + 'tbl-expand-trans.png')\n const target = thisOutline.targetOf(e)\n const p = target.parentNode\n const subject = UI.utils.getAbout(kb, target)\n const pane = e.altKey ? paneRegistry.byName('internal') : undefined // set later: was panes.defaultPane\n\n if (e.shiftKey) {\n // Shift forces a refocus - bring this to the top\n outlineRefocus(p, subject, pane)\n } else {\n if (e.altKey) {\n // To investigate screw ups, dont wait show internals\n outlineExpand(p, subject, {\n pane: paneRegistry.byName('internal'),\n immediate: true\n })\n } else {\n outlineExpand(p, subject)\n }\n }\n }\n\n function collapseMouseDownListener (e) {\n // for icon UI.icons.originalIconBase + 'tbl-collapse.png'\n const target = thisOutline.targetOf(e)\n const subject = UI.utils.getAbout(kb, target)\n const pane = e.altKey ? paneRegistry.byName('internal') : undefined\n const p = target.parentNode.parentNode\n outlineCollapse(p, subject, pane)\n }\n\n function failedIconMouseDownListener (e) {\n // outlineIcons.src.icon_failed\n const target = thisOutline.targetOf(e)\n const uri = target.getAttribute('uri') // Put on access buttons\n if (e.altKey) {\n sf.fetch(UI.rdf.uri.docpart(uri), {\n force: true\n }) // Add 'force' bit?\n } else {\n sf.refresh(kb.sym(UI.rdf.uri.docpart(uri))) // just one\n }\n }\n\n function fetchedIconMouseDownListener (e) {\n // outlineIcons.src.icon_fetched\n const target = thisOutline.targetOf(e)\n const uri = target.getAttribute('uri') // Put on access buttons\n if (e.altKey) {\n sf.fetch(UI.rdf.uri.docpart(uri), {\n force: true\n })\n } else {\n sf.refresh(kb.sym(UI.rdf.uri.docpart(uri))) // just one\n }\n }\n\n function unrequestedIconMouseDownListener (e) {\n const target = thisOutline.targetOf(e)\n const uri = target.getAttribute('uri') // Put on access buttons\n sf.fetch(UI.rdf.uri.docpart(uri))\n }\n\n function removeNodeIconMouseDownListener (e) {\n // icon_remove_node\n const target = thisOutline.targetOf(e)\n let node = target.node\n if (node.childNodes.length > 1) node = target.parentNode // parallel outline view @@ Hack\n removeAndRefresh(node) // @@ update icons for pane?\n }\n\n function selectableTDClickListener (e) {\n // Is we are in editing mode already\n if (thisOutline.UserInput._tabulatorMode) {\n return thisOutline.UserInput.Click(e)\n }\n\n const target = thisOutline.targetOf(e)\n // Originally this was set on the whole tree and could happen anywhere\n // var p = target.parentNode\n let node\n for (\n node = UI.utils.ancestor(target, 'TD');\n node && !(node.getAttribute('notSelectable') === 'false'); // Default now is not selectable\n node = UI.utils.ancestor(node.parentNode, 'TD')\n ) {\n // ...\n }\n if (!node) return\n\n // var node = target;\n\n const sel = selected(node)\n // var cla = node.getAttribute('class')\n UI.log.debug('Was node selected before: ' + sel)\n if (e.altKey) {\n setSelected(node, !selected(node))\n } else if (e.shiftKey) {\n setSelected(node, true)\n } else {\n // setSelected(node, !selected(node))\n deselectAll()\n thisOutline.UserInput.clearInputAndSave(e)\n setSelected(node, true)\n\n if (e.detail === 2) {\n // double click -> quit TabulatorMousedown()\n e.stopPropagation()\n return\n }\n // if the node is already selected and the corresponding statement is editable,\n // go to UserInput\n let st\n if (node.parentNode) st = node.parentNode.AJAR_statement\n if (!st) return // For example in the title TD of an expanded pane\n const target = st.why\n const editable = store.updater.editable(target.uri, kb)\n if (sel && editable) thisOutline.UserInput.Click(e, selection[0]) // was next 2 lines\n // var text='TabulatorMouseDown@Outline()';\n // HCIoptions['able to edit in Discovery Mode by mouse'].setupHere([sel,e,thisOutline,selection[0]],text);\n }\n UI.log.debug(\n 'Was node selected after: ' +\n selected(node) +\n ', count=' +\n selection.length\n )\n // var tr = node.parentNode\n /*\n if (tr.AJAR_statement) {\n // var why = tr.AJAR_statement.why\n // UI.log.info('Information from '+why);\n }\n */\n e.stopPropagation()\n // this is important or conflict between deselect and user input happens\n }\n\n function TabulatorMousedown (e) {\n UI.log.info('@TabulatorMousedown, dom.location is now ' + dom.location)\n const target = thisOutline.targetOf(e)\n if (!target) return\n const tname = target.tagName\n // UI.log.debug('TabulatorMousedown: ' + tname + ' shift='+e.shiftKey+' alt='+e.altKey+' ctrl='+e.ctrlKey);\n // var p = target.parentNode\n // var about = UI.utils.getAbout(kb, target)\n // var source = null\n if (tname === 'INPUT' || tname === 'TEXTAREA') {\n return\n }\n\n // not input then clear\n thisOutline.UserInput.clearMenu()\n\n // ToDo:remove this and recover X\n if (\n thisOutline.UserInput.lastModified &&\n thisOutline.UserInput.lastModified.parentNode.nextSibling\n ) {\n thisOutline.UserInput.backOut()\n }\n\n // if (typeof rav=='undefined') //uncomment this for javascript2rdf\n // have to put this here or this conflicts with deselectAll()\n\n if (\n !target.src ||\n (target.src.slice(target.src.indexOf('/icons/') + 1) !==\n outlineIcons.src.icon_show_choices &&\n target.src.slice(target.src.indexOf('/icons/') + 1) !==\n outlineIcons.src.icon_add_triple)\n ) {\n thisOutline.UserInput.clearInputAndSave(e)\n }\n\n if (\n !target.src ||\n target.src.slice(target.src.indexOf('/icons/') + 1) !==\n outlineIcons.src.icon_show_choices\n ) {\n thisOutline.UserInput.clearMenu()\n }\n\n if (e) e.stopPropagation()\n } // function TabulatorMousedown\n\n function setUrlBarAndTitle (subject) {\n dom.title = UI.utils.label(subject)\n if (dom.location.href.startsWith(subject.site().uri)) {\n // dom.location = subject.uri // No causes reload\n }\n }\n\n /** Expand an outline view\n * @param p {Element} - container\n */\n function outlineExpand (p, subject1, options) {\n options = options || {}\n const pane = options.pane\n let already = !!options.already\n const immediate = options.immediate\n\n UI.log.info('@outlineExpand, dom is now ' + dom.location)\n // remove callback to prevent unexpected repaint\n sf.removeCallback('done', 'expand')\n sf.removeCallback('fail', 'expand')\n\n let subject = kb.canon(subject1)\n // var requTerm = subject.uri ? kb.sym(UI.rdf.uri.docpart(subject.uri)) : subject\n\n function render () {\n subject = kb.canon(subject)\n if (!p || !p.parentNode || !p.parentNode.parentNode) return false\n\n let newTable\n UI.log.info('@@ REPAINTING ')\n if (!already) {\n // first expand\n newTable = propertyTable(subject, undefined, pane, options)\n } else {\n UI.log.info(' ... p is ' + p)\n for (\n newTable = p.firstChild;\n newTable.nextSibling;\n newTable = newTable.nextSibling\n ) {\n UI.log.info(' ... checking node ' + newTable)\n if (newTable.nodeName === 'table') break\n }\n newTable = propertyTable(subject, newTable, pane, options)\n }\n already = true\n if (\n UI.utils.ancestor(p, 'TABLE') &&\n UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white'\n ) {\n newTable.style.backgroundColor = '#eee'\n } else {\n newTable.style.backgroundColor = 'white'\n }\n UI.utils.emptyNode(p).appendChild(newTable)\n thisOutline.focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks\n UI.log.debug('expand: Node for ' + subject + ' expanded')\n // fetch seeAlso when render()\n // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso'))\n // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);})\n const seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso'))\n for (let i = 0; i < seeAlsoWhat.length; i++) {\n if (i === 25) {\n UI.log.warn(\n 'expand: Warning: many (' +\n seeAlsoWhat.length +\n ') seeAlso links for ' +\n subject\n )\n // break; Not sure what limits the AJAX system has here\n }\n sf.lookUpThing(seeAlsoWhat[i], subject)\n }\n }\n\n function expand (uri) {\n if (arguments[3]) return true // already fetched indicator\n const cursubj = kb.canon(subject) // canonical identifier may have changed\n UI.log.info(\n '@@ expand: relevant subject=' +\n cursubj +\n ', uri=' +\n uri +\n ', already=' +\n already\n )\n // var term = kb.sym(uri)\n const docTerm = kb.sym(UI.rdf.uri.docpart(uri))\n if (uri.indexOf('#') >= 0) {\n throw new Error('Internal error: hash in ' + uri)\n }\n\n const relevant = function () {\n // Is the loading of this URI relevam to the display of subject?\n if (!cursubj.uri) return true // bnode should expand()\n const as = kb.uris(cursubj)\n if (!as) return false\n for (let i = 0; i < as.length; i++) {\n // canon'l uri or any alias\n for (\n let rd = UI.rdf.uri.docpart(as[i]);\n rd;\n rd = kb.HTTPRedirects[rd]\n ) {\n if (uri === rd) return true\n }\n }\n if (kb.anyStatementMatching(cursubj, undefined, undefined, docTerm)) {\n return true\n } // Kenny: inverse?\n return false\n }\n if (relevant()) {\n UI.log.success(\n '@@ expand OK: relevant subject=' +\n cursubj +\n ', uri=' +\n uri +\n ', source=' +\n already\n )\n\n render()\n return false // @@@@@@@@@@@ Will this allow just the first\n }\n return true\n }\n // Body of outlineExpand\n\n if (options.solo) {\n setUrlBarAndTitle(subject)\n }\n UI.log.debug('outlineExpand: dereferencing ' + subject)\n const status = dom.createElement('span')\n p.appendChild(status)\n sf.addCallback('done', expand) // @@@@@@@ This can really mess up existing work\n sf.addCallback('fail', expand) // Need to do if there s one a gentle resync of page with store\n\n const returnConditions = [] // this is quite a general way to do cut and paste programming\n // I might make a class for this\n if (subject.uri && subject.uri.split(':')[0] === 'rdf') {\n // what is this? -tim\n render()\n return\n }\n\n for (let i = 0; i < returnConditions.length; i++) {\n let returnCode\n if (returnCode === returnConditions[i](subject)) {\n render()\n UI.log.debug('outline 1815')\n if (returnCode[1]) outlineElement.removeChild(outlineElement.lastChild)\n return\n }\n }\n if (\n subject.uri &&\n !immediate &&\n !UI.widgets.isAudio(subject) &&\n !UI.widgets.isVideo(subject)\n ) {\n // Wait till at least the main URI is loaded before expanding:\n sf.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) {\n if (ok) {\n sf.lookUpThing(subject)\n render() // inital open, or else full if re-open\n if (options.solo) {\n // Update window title with new information\n // dom.title = UI.utils.label(subject)\n setUrlBarAndTitle(subject)\n }\n } else {\n const message = dom.createElement('pre')\n message.textContent = body\n message.setAttribute('style', 'background-color: #fee;')\n message.textContent =\n 'Outline.expand: Unable to fetch ' + subject.doc() + ': ' + body\n p.appendChild(message)\n }\n })\n } else {\n render()\n }\n } // outlineExpand\n\n function outlineCollapse (p, subject) {\n let row = UI.utils.ancestor(p, 'TR')\n row = UI.utils.ancestor(row.parentNode, 'TR') // two levels up\n let statement\n if (row) statement = row.AJAR_statement\n let level // find level (the enclosing TD)\n for (\n level = p.parentNode;\n level.tagName !== 'TD';\n level = level.parentNode\n ) {\n if (typeof level === 'undefined') {\n alert('Not enclosed in TD!')\n return\n }\n }\n\n UI.log.debug('Collapsing subject ' + subject)\n let myview\n if (statement) {\n UI.log.debug('looking up pred ' + statement.predicate.uri + 'in defaults')\n myview = views.defaults[statement.predicate.uri]\n }\n UI.log.debug('view= ' + myview)\n let deleteNode\n if (level.parentNode.parentNode.id === 'outline') {\n deleteNode = level.parentNode\n }\n thisOutline.replaceTD(\n thisOutline.outlineObjectTD(subject, myview, deleteNode, statement),\n level\n )\n } // outlineCollapse\n\n this.replaceTD = function replaceTD (newTd, replacedTd) {\n let reselect\n if (selected(replacedTd)) reselect = true\n\n // deselects everything being collapsed. This goes backwards because\n // deselecting an element decreases selection.length\n for (let x = selection.length - 1; x > -1; x--) {\n for (let elt = selection[x]; elt.parentNode; elt = elt.parentNode) {\n if (elt === replacedTd) {\n setSelected(selection[x], false)\n }\n }\n }\n\n replacedTd.parentNode.replaceChild(newTd, replacedTd)\n if (reselect) setSelected(newTd, true)\n }\n\n function outlineRefocus (p, subject) {\n // Shift-expand or shift-collapse: Maximize\n let outer = null\n for (let level = p.parentNode; level; level = level.parentNode) {\n UI.log.debug('level ' + level.tagName)\n if (level.tagName === 'TD') outer = level\n } // find outermost td\n UI.utils.emptyNode(outer).appendChild(propertyTable(subject))\n setUrlBarAndTitle(subject)\n // dom.title = UI.utils.label(subject)\n outer.setAttribute('about', subject.toNT())\n } // outlineRefocus\n\n outline.outlineRefocus = outlineRefocus\n\n // Inversion is turning the outline view inside-out\n // It may be called eversion\n /*\n function outlineInversion (p, subject) { // re-root at subject\n function move_root (rootTR, childTR) { // swap root with child\n // @@\n }\n }\n*/\n this.GotoFormURI_enterKey = function (e) {\n if (e.keyCode === 13) outline.GotoFormURI(e)\n }\n this.GotoFormURI = function (_e) {\n GotoURI(dom.getElementById('UserURI').value)\n }\n\n function GotoURI (uri) {\n const subject = kb.sym(uri)\n this.GotoSubject(subject, true)\n }\n this.GotoURIinit = function (uri) {\n const subject = kb.sym(uri)\n this.GotoSubject(subject)\n }\n\n /** Display the subject in an outline view\n\n @param subject -- RDF term for teh thing to be presented\n @param expand -- flag -- open the subject rather than keep folded closed\n @param pane -- optional -- pane to be used for expanded display\n @param solo -- optional -- the window will be cleared out and only the subject displayed\n @param referer -- optional -- where did we hear about this from anyway?\n @param table -- option -- a table element in which to put the outline.\n*/\n this.GotoSubject = function (subject, expand, pane, solo, referrer, table) {\n table = table || dom.getElementById('outline') // if does not exist just add one? nowhere to out it\n if (solo) {\n UI.utils.emptyNode(table)\n table.style.width = '100%'\n }\n\n function GotoSubjectDefault () {\n const tr = dom.createElement('TR')\n tr.style.verticalAlign = 'top'\n table.appendChild(tr)\n const td = thisOutline.outlineObjectTD(subject, undefined, tr)\n tr.appendChild(td)\n return td\n }\n\n const td = GotoSubjectDefault()\n\n if (solo) setUrlBarAndTitle(subject) // dom.title = UI.utils.label(subject) // 'Tabulator: '+ No need to advertize\n\n if (expand) {\n outlineExpand(td, subject, {\n pane: pane,\n solo: solo\n })\n const tr = td.parentNode\n UI.utils.getEyeFocus(tr, false, undefined, window) // instantly: false\n }\n\n if (\n solo &&\n dom &&\n dom.defaultView &&\n dom.defaultView.history &&\n // Don't add the new location to the history if we arrived here through a direct link\n // (i.e. when static/databrowser.html in node-solid-server called this method):\n document.location.href !== subject.uri\n ) {\n const stateObj = pane ? { paneName: pane.name } : {}\n try {\n // can fail if different origin\n dom.defaultView.history.pushState(stateObj, subject.uri, subject.uri)\n } catch (e) {\n console.log(e)\n }\n }\n\n return subject\n }\n\n // / /////////////////////////////////////////////////////\n //\n //\n // VIEWS\n //\n //\n // / /////////////////////////////////////////////////////\n\n const ns = UI.ns\n\n const views = propertyViews(dom)\n\n // var thisOutline = this dup\n /** some builtin simple views **/\n\n function viewAsBoringDefault (obj) {\n // UI.log.debug('entered viewAsBoringDefault...');\n let rep // representation in html\n\n if (obj.termType === 'Literal') {\n const styles = {\n integer: 'text-align: right;',\n decimal: \"text-align: '.';\",\n double: \"text-align: '.';\"\n }\n rep = dom.createElement('span')\n rep.textContent = obj.value\n // Newlines have effect and overlong lines wrapped automatically\n let style = ''\n if (obj.datatype && obj.datatype.uri) {\n const xsd = UI.ns.xsd('').uri\n if (obj.datatype.uri.slice(0, xsd.length) === xsd) {\n style = styles[obj.datatype.uri.slice(xsd.length)]\n }\n }\n rep.setAttribute('style', style || 'white-space: pre-wrap;')\n } else if (obj.termType === 'NamedNode' || obj.termType === 'BlankNode') {\n rep = dom.createElement('span')\n rep.setAttribute('about', obj.toNT())\n thisOutline.appendAccessIcons(kb, rep, obj)\n\n if (obj.termType === 'NamedNode') {\n if (obj.uri.slice(0, 4) === 'tel:') {\n const num = obj.uri.slice(4)\n const anchor = dom.createElement('a')\n rep.appendChild(dom.createTextNode(num))\n anchor.setAttribute('href', obj.uri)\n anchor.appendChild(\n UI.utils.AJARImage(\n outlineIcons.src.icon_telephone,\n 'phone',\n 'phone ' + num,\n dom\n )\n )\n rep.appendChild(anchor)\n anchor.firstChild.setAttribute('class', 'phoneIcon')\n } else {\n // not tel:\n rep.appendChild(dom.createTextNode(UI.utils.label(obj)))\n const anchor = UI.widgets.linkIcon(dom, obj)\n rep.appendChild(anchor)\n UI.widgets.makeDraggable(rep, obj) // 2017\n }\n } else {\n // bnode\n rep.appendChild(dom.createTextNode(UI.utils.label(obj)))\n }\n } else if (obj.termType === 'Collection') {\n // obj.elements is an array of the elements in the collection\n rep = dom.createElement('table')\n rep.setAttribute('style', 'width: 100%;')\n rep.setAttribute('about', obj.toNT())\n /* Not sure which looks best -- with or without. I think without\n\n var tr = rep.appendChild(document.createElement('tr'));\n tr.appendChild(document.createTextNode(\n obj.elements.length ? '(' + obj.elements.length+')' : '(none)'));\n */\n for (let i = 0; i < obj.elements.length; i++) {\n const elt = obj.elements[i]\n const row = rep.appendChild(dom.createElement('tr'))\n const numcell = row.appendChild(dom.createElement('td'))\n numcell.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n numcell.setAttribute('notSelectable', 'false')\n numcell.setAttribute('about', obj.toNT())\n numcell.innerHTML = i + 1 + ')'\n row.appendChild(thisOutline.outlineObjectTD(elt))\n }\n } else if (obj.termType === 'Graph') {\n rep = paneRegistry\n .byName('dataContentPane')\n .statementsAsTables(obj.statements, context)\n rep.setAttribute('class', 'nestedFormula')\n } else {\n UI.log.error('Object ' + obj + ' has unknown term type: ' + obj.termType)\n rep = dom.createTextNode('[unknownTermType:' + obj.termType + ']')\n } // boring defaults.\n UI.log.debug('contents: ' + rep.innerHTML)\n return rep\n } // boring_default\n\n this.createTabURI = function () {\n dom.getElementById('UserURI').value =\n dom.URL + '?uri=' + dom.getElementById('UserURI').value\n }\n\n // a way to expose variables to UserInput without making them propeties/methods\n this.UserInput.setSelected = setSelected\n this.UserInput.deselectAll = deselectAll\n this.UserInput.views = views\n this.outlineExpand = outlineExpand\n\n // this.panes = panes; // Allow external panes to register\n\n return this\n} // END OF OUTLINE\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"manager.js","names":["paneRegistry","_interopRequireWildcard","require","$rdf","UI","_solidLogic","_propertyViews","_outlineIcons","_userInput","queryByExample","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","length","l","Symbol","iterator","f","o","next","done","push","value","isArray","_regeneratorRuntime","prototype","c","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","h","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_default","context","dom","document","outlineIcons","labeller","LanguagePreference","outline","thisOutline","selection","ancestor","utils","sparql","rdf","UpdateManager","kb","store","sf","fetcher","qs","QuerySource","UserInput","clipboardAddress","clipboardInit","outlineElement","init","table","getOutlineContainer","benchmark","lastkbsize","args","begin","Date","getTime","returnValue","end","log","info","statements","appendRemoveIcon","node","subject","removeNode","image","AJARImage","src","icon_remove_node","undefined","addEventListener","removeNodeIconMouseDownListener","setAttribute","toNT","style","marginLeft","marginRight","appendChild","appendAccessIcons","obj","termType","uris","sort","last","appendAccessIcon","uri","docuri","docpart","state","getState","icon","alt","listener","icon_unrequested","unrequestedIconMouseDownListener","icon_requested","failedIconMouseDownListener","icon_fetched","fetchedIconMouseDownListener","icon_failed","error","img","tooltips","replace","addButtonCallbacks","outlineObjectTD","view","deleteNode","statement","td","createElement","theClass","icons","originalIconBase","expandMouseDownListener","whether","ns","link","className","viewAsBoringDefault","tabulatorSelect","setSelected","tabulatorDeselect","selectableTDClickListener","outlinePredicateTD","predicate","newTr","inverse","internal","predicateTD","lab","predicateLabelForXML","elements","toUpperCase","labelTD","createTextNode","width","termWidget","construct","w","termWidgets","AJAR_statement","filter","addIcon","globalAppTabs","_globalAppTabs","_callee","options","div","me","items","renderTab","renderMain","_args","_callee$","_context","_renderMain","containerDiv","item","pane","byName","paneName","innerHTML","authn","currentUser","GotoSubject","_renderTab","dataset","globalPaneName","tabName","textContent","label","console","alert","getDashboardItems","tabs","tabWidget","ordered","orientation","backgroundColor","selectedTab","onClose","getDashboard","_getDashboardItems","_callee7","_yield$Promise$all","_yield$Promise$all2","books","pods","getPods","_getPods","getAddressBooks","_getAddressBooks","_callee7$","_context8","_getAddressBooks3","_callee6","_context6","_callee6$","_context7","login","findAppInstances","vcard","instances","map","book","index","concat","iconBase","t0","_getAddressBooks2","_getPods3","_callee5","addPodStorage","_addPodStorage","addPodStorageFromUrl","_addPodStorageFromUrl","podUrl","uniques","_callee5$","_context5","_uniques","nodes","uniqueNodes","find","uniqueNode","equals","_addPodStorageFromUrl3","_callee4","url","podStorage","pathStorage","_callee4$","_context4","URL","pathname","substring","lastIndexOf","sym","origin","_addPodStorageFromUrl2","_x8","_addPodStorage3","_callee3","pod","_callee3$","_context3","loadContainerRepresentation","holds","space","doc","_addPodStorage2","_x7","load","each","_ref","_callee2","_callee2$","_context2","_x9","window","location","href","searchParams","t1","split","startsWith","_getPods2","all","showDashboard","_showDashboard","_callee8","dashboardContainer","outlineContainer","_tab","dashboard","tab","closeDashboard","_args8","_callee8$","_context9","_closeDashboard","display","getDashboardContainer","childNodes","querySelector","click","warn","authSession","onLogout","getOrCreateContainer","id","getElementById","mainContainer","body","_x","_loadContainerRepresentation","_callee9","response","containerTurtle","_callee9$","_context10","any","ldp","webOperation","initFetchOptions","headers","accept","responseText","parse","getRelevantPanes","_x2","_x3","_getRelevantPanes","_callee10","panes","relevantPanes","filteredPanes","firstRelevantPaneIndex","firstFilteredPaneIndex","_callee10$","_context11","endsWith","session","list","global","filterAvailablePanes","indexOf","getPane","shouldGetFocus","expandedHeaderTR","_x4","_x5","_x6","_expandedHeaderTR","_callee12","requiredPane","renderPaneIconTray","_renderPaneIconTray","tr","header","showHeader","strong","_callee12$","_context13","_renderPaneIconTray3","_callee11","paneShownStyle","paneHiddenStyle","paneIconTray","paneNumber","_args11","_callee11$","_context12","hideList","firstPane","ico","listen","event","containingTable","parentNode","nodeName","removePanes","specific","firstChild","nextSibling","paneButton","removeAndRefresh","requireQueryButton","numberOfPanesRequiringQueryButton","renderPane","paneDiv","render","pre","stackString","removeAttribute","second","row","cell","insertBefore","getAttribute","shiftKey","_renderPaneIconTray2","_x10","hover","solo","collapseMouseDownListener","widgets","makeDraggable","par","placeholder","replaceChild","removeChild","propertyTable","debug","canon","tr1","propertyTR","st","AJAR_inverse","appendPropertyTRs","parent","plist","predicateFilter","sel","j","k","x","RDFComparePredicateSubject","object","RDFComparePredicateObject","max","_loop","defaultpropview","views","defaults","dups","langTagged","myLang","sameTerm","lang","showNobj","predDups","show","showLaterArray","displayed","trObj","colspan","moreTR","moreTD","small","predToggle","current","toggleObj","stopPropagation","showAllobj","_ret","iconTD","tooltip","parseInt","removeIcon","baseURI","elt","eltSrc","relativeIconSrc","join","replaceIcon","oldIcon","newIcon","QueryObj","pat","formula","vars","queries","target","fireOn","makeIconCallback","IconCallback","req","title","addCallback","selected","optOnIconMouseDownListener","targetOf","optOn","optOff","optOffIconMouseDownListener","setSelectedParent","inc","onIcon","offIcon","num","previousSibling","statusBarClick","getTarget","content","showURI","about","showSource","sourceWidget","sources","source","why","highlight","getSelection","newValue","cla","getTerm","editable","updater","addTri","deselectAll","srcElement","nodeType","walk","directionCode","inputTd","selectedTd","newSelTd","lastChild","tagName","newSelected","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","OutlinerKeypressPanel","keyCode","setSelectedAfterward","_uri","getAbout","focusTd","removeCallback","Enter","Keypress","preventDefault","Delete","titleTd","outlineCollapse","outlineExpand","charCode","ctrlKey","copyToClipboard","pasteFromClipboard","PosY","findPos","clientHeight","scrollY","innerHeight","getEyeFocus","OutlinerMouseclickPanel","_tabulatorMode","TabulatorMousedown","Click","altKey","outlineRefocus","immediate","fetch","force","refresh","clearInputAndSave","detail","tname","clearMenu","lastModified","backOut","icon_show_choices","icon_add_triple","setUrlBarAndTitle","site","subject1","already","newTable","emptyNode","seeAlsoWhat","rdfs","lookUpThing","expand","cursubj","docTerm","relevant","as","rd","HTTPRedirects","anyStatementMatching","success","status","returnConditions","returnCode","isAudio","isVideo","nowOrWhenFetched","ok","message","level","myview","replaceTD","newTd","replacedTd","reselect","outer","GotoFormURI_enterKey","GotoFormURI","_e","GotoURI","GotoURIinit","referrer","GotoSubjectDefault","verticalAlign","defaultView","history","stateObj","pushState","propertyViews","rep","styles","integer","decimal","datatype","xsd","anchor","icon_telephone","linkIcon","numcell","statementsAsTables","createTabURI"],"sources":["../../src/outline/manager.js"],"sourcesContent":["/* istanbul ignore file */\n/* -*- coding: utf-8-dos -*-\n Outline Mode Manager\n*/\nimport * as paneRegistry from 'pane-registry'\nimport * as $rdf from 'rdflib'\nimport * as UI from 'solid-ui'\nimport { authn, authSession, store } from 'solid-logic'\nimport { propertyViews } from './propertyViews'\nimport { outlineIcons } from './outlineIcons.js' // @@ chec\nimport { UserInput } from './userInput.js'\nimport * as queryByExample from './queryByExample.js'\n\n/* global alert XPathResult sourceWidget */\n// XPathResult?\n\n// const iconHeight = '24px'\n\nexport default function (context) {\n const dom = context.dom\n\n this.document = context.dom\n this.outlineIcons = outlineIcons\n this.labeller = this.labeller || {}\n this.labeller.LanguagePreference = '' // for now\n const outline = this // Kenny: do we need this?\n const thisOutline = this\n let selection = []\n this.selection = selection\n this.ancestor = UI.utils.ancestor // make available as outline.ancestor in callbacks\n this.sparql = UI.rdf.UpdateManager\n this.kb = store\n const kb = store\n const sf = store.fetcher\n dom.outline = this\n this.qs = new queryByExample.QuerySource() // Track queries in queryByExample\n\n // var selection = [] // Array of statements which have been selected\n // this.focusTd // the <td> that is being observed\n this.UserInput = new UserInput(this)\n this.clipboardAddress = 'tabulator:clipboard' // Weird\n this.UserInput.clipboardInit(this.clipboardAddress)\n const outlineElement = this.outlineElement\n\n this.init = function () {\n const table = getOutlineContainer()\n table.outline = this\n }\n\n /** benchmark a function **/\n benchmark.lastkbsize = 0\n\n function benchmark (f) {\n const args = []\n for (let i = arguments.length - 1; i > 0; i--) args[i - 1] = arguments[i]\n // UI.log.debug('BENCHMARK: args=' + args.join());\n const begin = new Date().getTime()\n const returnValue = f.apply(f, args)\n const end = new Date().getTime()\n UI.log.info(\n 'BENCHMARK: kb delta: ' +\n (kb.statements.length - benchmark.lastkbsize) +\n ', time elapsed for ' +\n f +\n ' was ' +\n (end - begin) +\n 'ms'\n )\n benchmark.lastkbsize = kb.statements.length\n return returnValue\n } // benchmark\n\n // / ////////////////////// Representing data\n\n // Represent an object in summary form as a table cell\n\n function appendRemoveIcon (node, subject, removeNode) {\n const image = UI.utils.AJARImage(\n outlineIcons.src.icon_remove_node,\n 'remove',\n undefined,\n dom\n )\n image.addEventListener('click', removeNodeIconMouseDownListener)\n // image.setAttribute('align', 'right') Causes icon to be moved down\n image.node = removeNode\n image.setAttribute('about', subject.toNT())\n image.style.marginLeft = '5px'\n image.style.marginRight = '10px'\n // image.style.border='solid #777 1px';\n node.appendChild(image)\n return image\n }\n\n this.appendAccessIcons = function (kb, node, obj) {\n if (obj.termType !== 'NamedNode') return\n const uris = kb.uris(obj)\n uris.sort()\n let last = null\n for (let i = 0; i < uris.length; i++) {\n if (uris[i] === last) continue\n last = uris[i]\n thisOutline.appendAccessIcon(node, last)\n }\n }\n\n this.appendAccessIcon = function (node, uri) {\n if (!uri) return ''\n const docuri = UI.rdf.uri.docpart(uri)\n if (docuri.slice(0, 5) !== 'http:') return ''\n const state = sf.getState(docuri)\n let icon, alt, listener\n switch (state) {\n case 'unrequested':\n icon = outlineIcons.src.icon_unrequested\n alt = 'fetch'\n listener = unrequestedIconMouseDownListener\n break\n case 'requested':\n icon = outlineIcons.src.icon_requested\n alt = 'fetching'\n listener = failedIconMouseDownListener // new: can retry yello blob\n break\n case 'fetched':\n icon = outlineIcons.src.icon_fetched\n listener = fetchedIconMouseDownListener\n alt = 'loaded'\n break\n case 'failed':\n icon = outlineIcons.src.icon_failed\n alt = 'failed'\n listener = failedIconMouseDownListener\n break\n case 'unpermitted':\n icon = outlineIcons.src.icon_failed\n listener = failedIconMouseDownListener\n alt = 'no perm'\n break\n case 'unfetchable':\n icon = outlineIcons.src.icon_failed\n listener = failedIconMouseDownListener\n alt = 'cannot fetch'\n break\n default:\n UI.log.error('?? state = ' + state)\n break\n } // switch\n const img = UI.utils.AJARImage(\n icon,\n alt,\n outlineIcons.tooltips[icon].replace(/[Tt]his resource/, docuri),\n dom\n )\n img.setAttribute('uri', uri)\n img.addEventListener('click', listener) // @@ seemed to be missing 2017-08\n addButtonCallbacks(img, docuri)\n node.appendChild(img)\n return img\n } // appendAccessIcon\n\n /** make the td for an object (grammatical object)\n * @param obj - an RDF term\n * @param view - a VIEW function (rather than a bool asImage)\n **/\n\n this.outlineObjectTD = function outlineObjectTD (\n obj,\n view,\n deleteNode,\n statement\n ) {\n const td = dom.createElement('td')\n td.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n td.setAttribute('notSelectable', 'false')\n let theClass = 'obj'\n\n // set about and put 'expand' icon\n if (\n obj.termType === 'NamedNode' ||\n obj.termType === 'BlankNode' ||\n (obj.termType === 'Literal' &&\n obj.value.slice &&\n (obj.value.slice(0, 6) === 'ftp://' ||\n obj.value.slice(0, 8) === 'https://' ||\n obj.value.slice(0, 7) === 'http://'))\n ) {\n td.setAttribute('about', obj.toNT())\n td.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-expand-trans.png',\n 'expand',\n undefined,\n dom\n )\n ).addEventListener('click', expandMouseDownListener)\n }\n td.setAttribute('class', theClass) // this is how you find an object\n // @@ TAKE CSS OUT OF STYLE SHEET\n if (kb.whether(obj, UI.ns.rdf('type'), UI.ns.link('Request'))) {\n td.className = 'undetermined'\n } // @@? why-timbl\n\n if (!view) {\n // view should be a function pointer\n view = viewAsBoringDefault\n }\n td.appendChild(view(obj))\n if (deleteNode) {\n appendRemoveIcon(td, obj, deleteNode)\n }\n\n // set DOM methods\n td.tabulatorSelect = function () {\n setSelected(this, true)\n }\n td.tabulatorDeselect = function () {\n setSelected(this, false)\n }\n\n td.addEventListener('click', selectableTDClickListener)\n return td\n } // outlineObjectTD\n\n this.outlinePredicateTD = function outlinePredicateTD (\n predicate,\n newTr,\n inverse,\n internal\n ) {\n const predicateTD = dom.createElement('TD')\n predicateTD.setAttribute('about', predicate.toNT())\n predicateTD.setAttribute('class', internal ? 'pred internal' : 'pred')\n\n let lab\n switch (predicate.termType) {\n case 'BlankNode': // TBD\n predicateTD.className = 'undetermined'\n break\n case 'NamedNode':\n lab = UI.utils.predicateLabelForXML(predicate, inverse)\n break\n case 'Collection': // some choices of predicate\n lab = UI.utils.predicateLabelForXML(predicate.elements[0], inverse)\n }\n lab = lab.slice(0, 1).toUpperCase() + lab.slice(1)\n // if (kb.statementsMatching(predicate,rdf('type'), UI.ns.link('Request')).length) predicateTD.className='undetermined';\n\n const labelTD = dom.createElement('TD')\n labelTD.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n labelTD.setAttribute('notSelectable', 'true')\n labelTD.appendChild(dom.createTextNode(lab))\n predicateTD.appendChild(labelTD)\n labelTD.style.width = '100%'\n predicateTD.appendChild(termWidget.construct(dom)) // termWidget is global???\n for (const w in outlineIcons.termWidgets) {\n if (!newTr || !newTr.AJAR_statement) break // case for TBD as predicate\n // alert(Icon.termWidgets[w]+' '+Icon.termWidgets[w].filter)\n if (\n outlineIcons.termWidgets[w].filter &&\n outlineIcons.termWidgets[w].filter(\n newTr.AJAR_statement,\n 'pred',\n inverse\n )\n ) {\n termWidget.addIcon(predicateTD, outlineIcons.termWidgets[w])\n }\n }\n\n // set DOM methods\n predicateTD.tabulatorSelect = function () {\n setSelected(this, true)\n }\n predicateTD.tabulatorDeselect = function () {\n setSelected(this, false)\n }\n predicateTD.addEventListener('click', selectableTDClickListener)\n return predicateTD\n } // outlinePredicateTD\n\n /**\n * Render Tabbed set of home app panes\n *\n * @param {Object} [options] A set of options you can provide\n * @param {string} [options.selectedTab] To open a specific dashboard pane\n * @param {Function} [options.onClose] If given, will present an X for the dashboard, and call this method when clicked\n * @returns Promise<{Element}> - the div that holds the dashboard\n */\n async function globalAppTabs (options = {}) {\n console.log('globalAppTabs @@')\n const div = dom.createElement('div')\n const me = authn.currentUser()\n if (!me) {\n alert('Must be logged in for this')\n throw new Error('Not logged in')\n }\n const items = await getDashboardItems()\n\n function renderTab (div, item) {\n div.dataset.globalPaneName = item.tabName || item.paneName\n div.textContent = item.label\n }\n\n function renderMain (containerDiv, item) {\n // Items are pane names\n const pane = paneRegistry.byName(item.paneName) // 20190701\n containerDiv.innerHTML = ''\n const table = containerDiv.appendChild(dom.createElement('table'))\n const me = authn.currentUser()\n thisOutline.GotoSubject(\n item.subject || me,\n true,\n pane,\n false,\n undefined,\n table\n )\n }\n\n div.appendChild(\n UI.tabs.tabWidget({\n dom,\n subject: me,\n items,\n renderMain,\n renderTab,\n ordered: true,\n orientation: 0,\n backgroundColor: '#eeeeee', // black?\n selectedTab: options.selectedTab,\n onClose: options.onClose\n })\n )\n return div\n }\n this.getDashboard = globalAppTabs\n\n async function getDashboardItems () {\n const me = authn.currentUser()\n if (!me) return []\n const div = dom.createElement('div')\n const [books, pods] = await Promise.all([getAddressBooks(), getPods()])\n return [\n {\n paneName: 'home',\n label: 'Your stuff',\n icon: UI.icons.iconBase + 'noun_547570.svg'\n },\n {\n paneName: 'basicPreferences',\n label: 'Preferences',\n icon: UI.icons.iconBase + 'noun_Sliders_341315_00000.svg'\n },\n {\n paneName: 'profile',\n label: 'Your Profile',\n icon: UI.icons.iconBase + 'noun_15059.svg'\n },\n {\n paneName: 'editProfile',\n label: 'Edit your Profile',\n icon: UI.icons.iconBase + 'noun_492246.svg'\n }\n ]\n .concat(books)\n .concat(pods)\n\n async function getPods () {\n async function addPodStorage (pod) { // namedNode\n await loadContainerRepresentation(pod)\n if (kb.holds(pod, ns.rdf('type'), ns.space('Storage'), pod.doc())) {\n pods.push(pod)\n return true\n }\n return false\n }\n async function addPodStorageFromUrl (url) {\n const podStorage = new URL(url)\n // check for predicate pim:Storage in containers up the path tree\n let pathStorage = podStorage.pathname\n while (pathStorage.length) {\n pathStorage = pathStorage.substring(0, pathStorage.lastIndexOf('/'))\n if (await addPodStorage(kb.sym(`${podStorage.origin}${pathStorage}/`))) return\n }\n // TODO should url.origin be added to pods list when there are no pim:Storage ???\n }\n\n try {\n // need to make sure that profile is loaded\n await kb.fetcher.load(me.doc())\n } catch (err) {\n console.error('Unable to load profile', err)\n return []\n }\n // load pod's storages from profile\n let pods = kb.each(me, ns.space('storage'), null, me.doc())\n pods.map(async (pod) => {\n // TODO use addPodStorageFromUrl(pod.uri) to check for pim:Storage ???\n await loadContainerRepresentation(pod)\n })\n\n try {\n // if uri then SolidOS is a browse.html web app\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n const podUrl = uri || window.location.href\n await addPodStorageFromUrl(podUrl)\n } catch (err) {\n console.error('cannot load container', err)\n }\n // remove namedNodes duplicates\n function uniques (nodes) {\n const uniqueNodes = []\n nodes.forEach(node => {\n if (!uniqueNodes.find(uniqueNode => uniqueNode.equals(node))) uniqueNodes.push(node)\n })\n return uniqueNodes\n }\n pods = uniques(pods)\n if (!pods.length) return []\n return pods.map((pod, index) => {\n function split (item) { return item.uri.split('//')[1].slice(0, -1) }\n const label = split(me).startsWith(split(pod)) ? 'Your storage' : split(pod)\n return {\n paneName: 'folder',\n tabName: `folder-${index}`,\n label,\n subject: pod,\n icon: UI.icons.iconBase + 'noun_Cabinet_251723.svg'\n }\n })\n }\n\n async function getAddressBooks () {\n try {\n const context = await UI.login.findAppInstances(\n { me, div, dom },\n ns.vcard('AddressBook')\n )\n return (context.instances || []).map((book, index) => ({\n paneName: 'contact',\n tabName: `contact-${index}`,\n label: 'Contacts',\n subject: book,\n icon: UI.icons.iconBase + 'noun_15695.svg'\n }))\n } catch (err) {\n console.error('oops in globalAppTabs AddressBook')\n }\n return []\n }\n }\n this.getDashboardItems = getDashboardItems\n\n /**\n * Call this method to show the global dashboard.\n *\n * @param {Object} [options] A set of options that can be passed\n * @param {string} [options.pane] To open a specific dashboard pane\n * @returns {Promise<void>}\n */\n async function showDashboard (options = {}) {\n const dashboardContainer = getDashboardContainer()\n const outlineContainer = getOutlineContainer()\n // reuse dashboard if already children already is inserted\n if (dashboardContainer.childNodes.length > 0 && options.pane) {\n outlineContainer.style.display = 'none'\n dashboardContainer.style.display = 'inherit'\n const tab = dashboardContainer.querySelector(\n `[data-global-pane-name=\"${options.pane}\"]`\n )\n if (tab) {\n tab.click()\n return\n }\n console.warn(\n 'Did not find the referred tab in global dashboard, will open first one'\n )\n }\n\n // create a new dashboard if not already present\n const dashboard = await globalAppTabs({\n selectedTab: options.pane,\n onClose: closeDashboard\n })\n\n // close the dashboard if user log out\n authSession.onLogout(closeDashboard)\n\n // finally - switch to showing dashboard\n outlineContainer.style.display = 'none'\n dashboardContainer.appendChild(dashboard)\n const tab = dashboardContainer.querySelector(\n `[data-global-pane-name=\"${options.pane}\"]`\n )\n if (tab) {\n tab.click()\n }\n\n function closeDashboard () {\n dashboardContainer.style.display = 'none'\n outlineContainer.style.display = 'inherit'\n }\n }\n this.showDashboard = showDashboard\n\n function getDashboardContainer () {\n return getOrCreateContainer('GlobalDashboard')\n }\n\n function getOutlineContainer () {\n return getOrCreateContainer('outline')\n }\n\n /**\n * Get element with id or create a new on the fly with that id\n *\n * @param {string} id The ID of the element you want to get or create\n * @returns {HTMLElement}\n */\n function getOrCreateContainer (id) {\n return (\n document.getElementById(id) ||\n (() => {\n const dashboardContainer = document.createElement('div')\n dashboardContainer.id = id\n const mainContainer =\n document.querySelector('[role=\"main\"]') || document.body\n return mainContainer.appendChild(dashboardContainer)\n })()\n )\n }\n\n async function loadContainerRepresentation (subject) {\n // force reload for index.html with RDFa\n if (!kb.any(subject, ns.ldp('contains'), undefined, subject.doc())) {\n const response = await kb.fetcher.webOperation('GET', subject.uri, kb.fetcher.initFetchOptions(subject.uri, { headers: { accept: 'text/turtle' } }))\n const containerTurtle = response.responseText\n $rdf.parse(containerTurtle, kb, subject.uri, 'text/turtle')\n }\n }\n\n async function getRelevantPanes (subject, context) {\n // make sure container representation is loaded (when server returns index.html)\n if (subject.uri.endsWith('/')) { await loadContainerRepresentation(subject) }\n const panes = context.session.paneRegistry\n const relevantPanes = panes.list.filter(\n pane => pane.label(subject, context) && !pane.global\n )\n if (relevantPanes.length === 0) {\n // there are no relevant panes, simply return default pane (which ironically is internalPane)\n return [panes.byName('internal')]\n }\n const filteredPanes = await UI.login.filterAvailablePanes(relevantPanes)\n if (filteredPanes.length === 0) {\n // if no relevant panes are available panes because of user role, we still allow for the most relevant pane to be viewed\n return [relevantPanes[0]]\n }\n const firstRelevantPaneIndex = panes.list.indexOf(relevantPanes[0])\n const firstFilteredPaneIndex = panes.list.indexOf(filteredPanes[0])\n // if the first relevant pane is loaded before the panes available wrt role, we still want to offer the most relevant pane\n return firstRelevantPaneIndex < firstFilteredPaneIndex\n ? [relevantPanes[0]].concat(filteredPanes)\n : filteredPanes\n }\n\n function getPane (relevantPanes, subject) {\n return (\n relevantPanes.find(\n pane => pane.shouldGetFocus && pane.shouldGetFocus(subject)\n ) || relevantPanes[0]\n )\n }\n\n async function expandedHeaderTR (subject, requiredPane, options) {\n async function renderPaneIconTray (td, options = {}) {\n const paneShownStyle =\n 'width: 24px; border-radius: 0.5em; border-top: solid #222 1px; border-left: solid #222 0.1em; border-bottom: solid #eee 0.1em; border-right: solid #eee 0.1em; margin-left: 1em; padding: 3px; background-color: #ffd;'\n const paneHiddenStyle =\n 'width: 24px; border-radius: 0.5em; margin-left: 1em; padding: 3px'\n const paneIconTray = td.appendChild(dom.createElement('nav'))\n paneIconTray.style =\n 'display:flex; justify-content: flex-start; align-items: center;'\n\n const relevantPanes = options.hideList\n ? []\n : await getRelevantPanes(subject, context)\n tr.firstPane = requiredPane || getPane(relevantPanes, subject)\n const paneNumber = relevantPanes.indexOf(tr.firstPane)\n\n if (relevantPanes.length !== 1) {\n // if only one, simplify interface\n relevantPanes.forEach((pane, index) => {\n const label = pane.label(subject, context)\n const ico = UI.utils.AJARImage(pane.icon, label, label, dom)\n ico.style = pane === tr.firstPane ? paneShownStyle : paneHiddenStyle // init to something at least\n // ico.setAttribute('align','right'); @@ Should be better, but ffox bug pushes them down\n // ico.style.width = iconHeight\n // ico.style.height = iconHeight\n const listen = function (ico, pane) {\n // Freeze scope for event time\n ico.addEventListener(\n 'click',\n function (event) {\n let containingTable\n // Find the containing table for this subject\n for (containingTable = td; containingTable.parentNode; containingTable = containingTable.parentNode) {\n if (containingTable.nodeName === 'TABLE') break\n }\n if (containingTable.nodeName !== 'TABLE') {\n throw new Error('outline: internal error.')\n }\n const removePanes = function (specific) {\n for (let d = containingTable.firstChild; d; d = d.nextSibling) {\n if (typeof d.pane !== 'undefined') {\n if (!specific || d.pane === specific) {\n if (d.paneButton) {\n d.paneButton.setAttribute('class', 'paneHidden')\n d.paneButton.style = paneHiddenStyle\n }\n removeAndRefresh(d)\n // If we just delete the node d, ffox doesn't refresh the display properly.\n // state = 'paneHidden';\n if (\n d.pane.requireQueryButton &&\n containingTable.parentNode.className /* outer table */ &&\n numberOfPanesRequiringQueryButton === 1 &&\n dom.getElementById('queryButton')\n ) {\n dom\n .getElementById('queryButton')\n .setAttribute('style', 'display:none;')\n }\n }\n }\n }\n }\n const renderPane = function (pane) {\n let paneDiv\n UI.log.info('outline: Rendering pane (2): ' + pane.name)\n\n try {\n paneDiv = pane.render(subject, context, options)\n } catch (e) {\n // Easier debugging for pane developers\n paneDiv = dom.createElement('div')\n paneDiv.setAttribute('class', 'exceptionPane')\n const pre = dom.createElement('pre')\n paneDiv.appendChild(pre)\n pre.appendChild(\n dom.createTextNode(UI.utils.stackString(e))\n )\n }\n\n if (\n pane.requireQueryButton &&\n dom.getElementById('queryButton')\n ) {\n dom.getElementById('queryButton').removeAttribute('style')\n }\n const second = containingTable.firstChild.nextSibling\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.appendChild(paneDiv)\n if (second) containingTable.insertBefore(row, second)\n else containingTable.appendChild(row)\n row.pane = pane\n row.paneButton = ico\n }\n const state = ico.getAttribute('class')\n if (state === 'paneHidden') {\n if (!event.shiftKey) {\n // shift means multiple select\n removePanes()\n }\n renderPane(pane)\n ico.setAttribute('class', 'paneShown')\n ico.style = paneShownStyle\n } else {\n removePanes(pane)\n ico.setAttribute('class', 'paneHidden')\n ico.style = paneHiddenStyle\n }\n\n let numberOfPanesRequiringQueryButton = 0\n for (let d = containingTable.firstChild; d; d = d.nextSibling) {\n if (d.pane && d.pane.requireQueryButton) {\n numberOfPanesRequiringQueryButton++\n }\n }\n },\n false\n )\n } // listen\n\n listen(ico, pane)\n ico.setAttribute(\n 'class',\n index !== paneNumber ? 'paneHidden' : 'paneShown'\n )\n if (index === paneNumber) tr.paneButton = ico\n paneIconTray.appendChild(ico)\n })\n }\n return paneIconTray\n } // renderPaneIconTray\n\n // Body of expandedHeaderTR\n const tr = dom.createElement('tr')\n if (options.hover) {\n // By default no hide till hover as community deems it confusing\n tr.setAttribute('class', 'hoverControl')\n }\n const td = tr.appendChild(dom.createElement('td'))\n td.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;' +\n 'display:flex; justify-content: space-between; flex-direction: row;'\n )\n td.setAttribute('notSelectable', 'true')\n td.setAttribute('about', subject.toNT())\n td.setAttribute('colspan', '2')\n\n // Stuff at the right about the subject\n const header = td.appendChild(dom.createElement('div'))\n header.style =\n 'display:flex; justify-content: flex-start; align-items: center; flex-wrap: wrap;'\n\n const showHeader = !!requiredPane\n\n if (!options.solo && !showHeader) {\n const icon = header.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-collapse.png',\n 'collapse',\n undefined,\n dom\n )\n )\n icon.addEventListener('click', collapseMouseDownListener)\n\n const strong = header.appendChild(dom.createElement('h1'))\n strong.appendChild(dom.createTextNode(UI.utils.label(subject)))\n strong.style =\n 'font-size: 150%; margin: 0 0.6em 0 0; padding: 0.1em 0.4em;'\n UI.widgets.makeDraggable(strong, subject)\n }\n\n header.appendChild(\n await renderPaneIconTray(td, {\n hideList: showHeader\n })\n )\n\n // set DOM methods\n tr.firstChild.tabulatorSelect = function () {\n setSelected(this, true)\n }\n tr.firstChild.tabulatorDeselect = function () {\n setSelected(this, false)\n }\n return tr\n } // expandedHeaderTR\n\n // / //////////////////////////////////////////////////////////////////////////\n\n /* PANES\n **\n ** Panes are regions of the outline view in which a particular subject is\n ** displayed in a particular way. They are like views but views are for query results.\n ** subject panes are currently stacked vertically.\n */\n\n // / //////////////////// Specific panes are in panes/*.js\n //\n // The defaultPane is the first one registered for which the label method exists\n // Those registered first take priority as a default pane.\n // That is, those earlier in this file\n\n /**\n * Pane registration\n */\n\n // the second argument indicates whether the query button is required\n\n // / ///////////////////////////////////////////////////////////////////////////\n\n // Remove a node from the DOM so that Firefox refreshes the screen OK\n // Just deleting it cause whitespace to accumulate.\n function removeAndRefresh (d) {\n const table = d.parentNode\n const par = table.parentNode\n const placeholder = dom.createElement('table')\n placeholder.setAttribute('style', 'width: 100%;')\n par.replaceChild(placeholder, table)\n table.removeChild(d)\n par.replaceChild(table, placeholder) // Attempt to\n }\n\n const propertyTable = (this.propertyTable = function propertyTable (\n subject,\n table,\n pane,\n options\n ) {\n UI.log.debug('Property table for: ' + subject)\n subject = kb.canon(subject)\n // if (!pane) pane = panes.defaultPane;\n\n if (!table) {\n // Create a new property table\n table = dom.createElement('table')\n table.setAttribute('style', 'width: 100%;')\n expandedHeaderTR(subject, pane, options).then(tr1 => {\n table.appendChild(tr1)\n\n if (tr1.firstPane) {\n let paneDiv\n try {\n UI.log.info('outline: Rendering pane (1): ' + tr1.firstPane.name)\n paneDiv = tr1.firstPane.render(subject, context, options)\n } catch (e) {\n // Easier debugging for pane developers\n paneDiv = dom.createElement('div')\n paneDiv.setAttribute('class', 'exceptionPane')\n const pre = dom.createElement('pre')\n paneDiv.appendChild(pre)\n pre.appendChild(dom.createTextNode(UI.utils.stackString(e)))\n }\n\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.appendChild(paneDiv)\n if (\n tr1.firstPane.requireQueryButton &&\n dom.getElementById('queryButton')\n ) {\n dom.getElementById('queryButton').removeAttribute('style')\n }\n table.appendChild(row)\n row.pane = tr1.firstPane\n row.paneButton = tr1.paneButton\n }\n })\n\n return table\n } else {\n // New display of existing table, keeping expanded bits\n UI.log.info('Re-expand: ' + table)\n // do some other stuff here\n return table\n }\n }) /* propertyTable */\n\n function propertyTR (doc, st, inverse) {\n const tr = doc.createElement('TR')\n tr.AJAR_statement = st\n tr.AJAR_inverse = inverse\n // tr.AJAR_variable = null; // @@ ?? was just 'tr.AJAR_variable'\n tr.setAttribute('predTR', 'true')\n const predicateTD = thisOutline.outlinePredicateTD(st.predicate, tr, inverse)\n tr.appendChild(predicateTD) // @@ add 'internal' to predicateTD's class for style? mno\n return tr\n }\n this.propertyTR = propertyTR\n\n // / ////////// Property list\n function appendPropertyTRs (parent, plist, inverse, predicateFilter) {\n // UI.log.info('@appendPropertyTRs, 'this' is %s, dom is %s, '+ // Gives 'can't access dead object'\n // 'thisOutline.document is %s', this, dom.location, thisOutline.document.location);\n // UI.log.info('@appendPropertyTRs, dom is now ' + this.document.location);\n // UI.log.info('@appendPropertyTRs, dom is now ' + thisOutline.document.location);\n UI.log.debug('Property list length = ' + plist.length)\n if (plist.length === 0) return ''\n let sel, j, k\n if (inverse) {\n sel = function (x) {\n return x.subject\n }\n plist = plist.sort(UI.utils.RDFComparePredicateSubject)\n } else {\n sel = function (x) {\n return x.object\n }\n plist = plist.sort(UI.utils.RDFComparePredicateObject)\n }\n\n const max = plist.length\n for (j = 0; j < max; j++) {\n // squishing together equivalent properties I think\n let s = plist[j]\n // if (s.object == parentSubject) continue; // that we knew\n\n // Avoid predicates from other panes\n if (predicateFilter && !predicateFilter(s.predicate, inverse)) continue\n\n const tr = propertyTR(dom, s, inverse)\n parent.appendChild(tr)\n const predicateTD = tr.firstChild // we need to kludge the rowspan later\n\n let defaultpropview = views.defaults[s.predicate.uri]\n\n // LANGUAGE PREFERENCES WAS AVAILABLE WITH FF EXTENSION - get from elsewhere?\n\n let dups = 0 // How many rows have the same predicate, -1?\n let langTagged = 0 // how many objects have language tags?\n let myLang = 0 // Is there one I like?\n\n for (\n k = 0;\n k + j < max && plist[j + k].predicate.sameTerm(s.predicate);\n k++\n ) {\n if (k > 0 && sel(plist[j + k]).sameTerm(sel(plist[j + k - 1]))) dups++\n if (sel(plist[j + k]).lang && outline.labeller.LanguagePreference) {\n langTagged += 1\n if (\n sel(plist[j + k]).lang.indexOf(\n outline.labeller.LanguagePreference\n ) >= 0\n ) {\n myLang++\n }\n }\n }\n\n /* Display only the one in the preferred language\n ONLY in the case (currently) when all the values are tagged.\n Then we treat them as alternatives. */\n\n if (myLang > 0 && langTagged === dups + 1) {\n for (let k = j; k <= j + dups; k++) {\n if (\n outline.labeller.LanguagePreference &&\n sel(plist[k]).lang.indexOf(outline.labeller.LanguagePreference) >= 0\n ) {\n tr.appendChild(\n thisOutline.outlineObjectTD(\n sel(plist[k]),\n defaultpropview,\n undefined,\n s\n )\n )\n break\n }\n }\n j += dups // extra push\n continue\n }\n\n tr.appendChild(\n thisOutline.outlineObjectTD(sel(s), defaultpropview, undefined, s)\n )\n\n /* Note: showNobj shows between n to 2n objects.\n * This is to prevent the case where you have a long list of objects\n * shown, and dangling at the end is '1 more' (which is easily ignored)\n * Therefore more objects are shown than hidden.\n */\n\n tr.showNobj = function (n) {\n const predDups = k - dups\n const show = 2 * n < predDups ? n : predDups\n const showLaterArray = []\n if (predDups !== 1) {\n predicateTD.setAttribute(\n 'rowspan',\n show === predDups ? predDups : n + 1\n )\n let l\n if (show < predDups && show === 1) {\n // what case is this...\n predicateTD.setAttribute('rowspan', 2)\n }\n let displayed = 0 // The number of cells generated-1,\n // all duplicate thing removed\n for (l = 1; l < k; l++) {\n // This detects the same things\n if (\n !kb\n .canon(sel(plist[j + l]))\n .sameTerm(kb.canon(sel(plist[j + l - 1])))\n ) {\n displayed++\n s = plist[j + l]\n defaultpropview = views.defaults[s.predicate.uri]\n const trObj = dom.createElement('tr')\n trObj.style.colspan = '1'\n trObj.appendChild(\n thisOutline.outlineObjectTD(\n sel(plist[j + l]),\n defaultpropview,\n undefined,\n s\n )\n )\n trObj.AJAR_statement = s\n trObj.AJAR_inverse = inverse\n parent.appendChild(trObj)\n if (displayed >= show) {\n trObj.style.display = 'none'\n showLaterArray.push(trObj)\n }\n } else {\n // ToDo: show all the data sources of this statement\n UI.log.info('there are duplicates here: %s', plist[j + l - 1])\n }\n }\n // @@a quick fix on the messing problem.\n if (show === predDups) {\n predicateTD.setAttribute('rowspan', displayed + 1)\n }\n } // end of if (predDups!==1)\n\n if (show < predDups) {\n // Add the x more <TR> here\n const moreTR = dom.createElement('tr')\n const moreTD = moreTR.appendChild(dom.createElement('td'))\n moreTD.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n moreTD.setAttribute('notSelectable', 'false')\n if (predDups > n) {\n // what is this for??\n const small = dom.createElement('a')\n moreTD.appendChild(small)\n\n const predToggle = (function (f) {\n return f(predicateTD, k, dups, n)\n })(function (predicateTD, k, dups, n) {\n return function (display) {\n small.innerHTML = ''\n if (display === 'none') {\n small.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-more-trans.png',\n 'more',\n 'See all',\n dom\n )\n )\n small.appendChild(\n dom.createTextNode(predDups - n + ' more...')\n )\n predicateTD.setAttribute('rowspan', n + 1)\n } else {\n small.appendChild(\n UI.utils.AJARImage(\n UI.icons.originalIconBase + 'tbl-shrink.png',\n '(less)',\n undefined,\n dom\n )\n )\n predicateTD.setAttribute('rowspan', predDups + 1)\n }\n for (let i = 0; i < showLaterArray.length; i++) {\n const trObj = showLaterArray[i]\n trObj.style.display = display\n }\n }\n }) // ???\n let current = 'none'\n const toggleObj = function (event) {\n predToggle(current)\n current = current === 'none' ? '' : 'none'\n if (event) event.stopPropagation()\n return false // what is this for?\n }\n toggleObj()\n small.addEventListener('click', toggleObj, false)\n } // if(predDups>n)\n parent.appendChild(moreTR)\n } // if\n } // tr.showNobj\n\n tr.showAllobj = function () {\n tr.showNobj(k - dups)\n }\n\n tr.showNobj(10)\n\n j += k - 1 // extra push\n }\n } // appendPropertyTRs\n\n this.appendPropertyTRs = appendPropertyTRs\n\n /* termWidget\n **\n */\n const termWidget = {} // @@@@@@ global\n global.termWidget = termWidget\n termWidget.construct = function (dom) {\n dom = dom || document\n const td = dom.createElement('TD')\n td.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n td.setAttribute('class', 'iconTD')\n td.setAttribute('notSelectable', 'true')\n td.style.width = '0px'\n return td\n }\n termWidget.addIcon = function (td, icon, listener) {\n const iconTD = td.childNodes[1]\n if (!iconTD) return\n let width = iconTD.style.width\n const img = UI.utils.AJARImage(icon.src, icon.alt, icon.tooltip, dom)\n width = parseInt(width)\n width = width + icon.width\n iconTD.style.width = width + 'px'\n iconTD.appendChild(img)\n if (listener) {\n img.addEventListener('click', listener)\n }\n }\n termWidget.removeIcon = function (td, icon) {\n const iconTD = td.childNodes[1]\n let baseURI\n if (!iconTD) return\n let width = iconTD.style.width\n width = parseInt(width)\n width = width - icon.width\n iconTD.style.width = width + 'px'\n for (let x = 0; x < iconTD.childNodes.length; x++) {\n const elt = iconTD.childNodes[x]\n const eltSrc = elt.src\n\n // ignore first '?' and everything after it //Kenny doesn't know what this is for\n try {\n baseURI = dom.location.href.split('?')[0]\n } catch (e) {\n console.log(e)\n baseURI = ''\n }\n const relativeIconSrc = UI.rdf.uri.join(icon.src, baseURI)\n if (eltSrc === relativeIconSrc) {\n iconTD.removeChild(elt)\n }\n }\n }\n termWidget.replaceIcon = function (td, oldIcon, newIcon, listener) {\n termWidget.removeIcon(td, oldIcon)\n termWidget.addIcon(td, newIcon, listener)\n }\n\n // / /////////////////////////////////////////////////// VALUE BROWSER VIEW\n\n // / /////////////////////////////////////////////////////// TABLE VIEW\n\n // Summarize a thing as a table cell\n\n /**********************\n\n query global vars\n\n ***********************/\n\n // const doesn't work in Opera\n // const BLANK_QUERY = { pat: kb.formula(), vars: [], orderBy: [] };\n // @ pat: the query pattern in an RDFIndexedFormula. Statements are in pat.statements\n // @ vars: the free variables in the query\n // @ orderBy: the variables to order the table\n\n function QueryObj () {\n this.pat = kb.formula()\n this.vars = []\n // this.orderBy = []\n }\n\n const queries = []\n queries[0] = new QueryObj()\n /*\n function querySave () {\n queries.push(queries[0])\n var choices = dom.getElementById('queryChoices')\n var next = dom.createElement('option')\n var box = dom.createElement('input')\n var index = queries.length - 1\n box.setAttribute('type', 'checkBox')\n box.setAttribute('value', index)\n choices.appendChild(box)\n choices.appendChild(dom.createTextNode('Saved query #' + index))\n choices.appendChild(dom.createElement('br'))\n next.setAttribute('value', index)\n next.appendChild(dom.createTextNode('Saved query #' + index))\n dom.getElementById('queryJump').appendChild(next)\n }\n*/\n /*\n function resetQuery () {\n function resetOutliner (pat) {\n var n = pat.statements.length\n var pattern, tr\n for (let i = 0; i < n; i++) {\n pattern = pat.statements[i]\n tr = pattern.tr\n // UI.log.debug('tr: ' + tr.AJAR_statement);\n if (typeof tr !== 'undefined') {\n delete tr.AJAR_pattern\n delete tr.AJAR_variable\n }\n }\n for (let x in pat.optional) { resetOutliner(pat.optional[x]) }\n }\n resetOutliner(myQuery.pat)\n UI.utils.clearVariableNames()\n queries[0] = myQuery = new QueryObj()\n }\n*/\n function addButtonCallbacks (target, fireOn) {\n UI.log.debug('Button callbacks for ' + fireOn + ' added')\n const makeIconCallback = function (icon) {\n return function IconCallback (req) {\n if (req.indexOf('#') >= 0) {\n console.log(\n '@@ makeIconCallback: Not expecting # in URI whose state changed: ' +\n req\n )\n // alert('Should have no hash in '+req)\n }\n if (!target) {\n return false\n }\n if (!outline.ancestor(target, 'DIV')) return false\n // if (term.termType != 'symbol') { return true } // should always ve\n if (req === fireOn) {\n target.src = icon\n target.title = outlineIcons.tooltips[icon]\n }\n return true\n }\n }\n sf.addCallback('request', makeIconCallback(outlineIcons.src.icon_requested))\n sf.addCallback('done', makeIconCallback(outlineIcons.src.icon_fetched))\n sf.addCallback('fail', makeIconCallback(outlineIcons.src.icon_failed))\n }\n\n // Selection support\n\n function selected (node) {\n const a = node.getAttribute('class')\n if (a && a.indexOf('selected') >= 0) return true\n return false\n }\n\n // These woulkd be simpler using closer variables below\n function optOnIconMouseDownListener (e) {\n // outlineIcons.src.icon_opton needed?\n const target = thisOutline.targetOf(e)\n const p = target.parentNode\n termWidget.replaceIcon(\n p.parentNode,\n outlineIcons.termWidgets.optOn,\n outlineIcons.termWidgets.optOff,\n optOffIconMouseDownListener\n )\n p.parentNode.parentNode.removeAttribute('optional')\n }\n\n function optOffIconMouseDownListener (e) {\n // outlineIcons.src.icon_optoff needed?\n const target = thisOutline.targetOf(e)\n const p = target.parentNode\n termWidget.replaceIcon(\n p.parentNode,\n outlineIcons.termWidgets.optOff,\n outlineIcons.termWidgets.optOn,\n optOnIconMouseDownListener\n )\n p.parentNode.parentNode.setAttribute('optional', 'true')\n }\n\n function setSelectedParent (node, inc) {\n const onIcon = outlineIcons.termWidgets.optOn\n const offIcon = outlineIcons.termWidgets.optOff\n for (let n = node; n.parentNode; n = n.parentNode) {\n while (true) {\n if (n.getAttribute('predTR')) {\n let num = n.getAttribute('parentOfSelected')\n if (!num) num = 0\n else num = parseInt(num)\n if (num === 0 && inc > 0) {\n termWidget.addIcon(\n n.childNodes[0],\n n.getAttribute('optional') ? onIcon : offIcon,\n n.getAttribute('optional')\n ? optOnIconMouseDownListener\n : optOffIconMouseDownListener\n )\n }\n num = num + inc\n n.setAttribute('parentOfSelected', num)\n if (num === 0) {\n n.removeAttribute('parentOfSelected')\n termWidget.removeIcon(\n n.childNodes[0],\n n.getAttribute('optional') ? onIcon : offIcon\n )\n }\n break\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else break\n }\n }\n }\n\n this.statusBarClick = function (event) {\n const target = UI.utils.getTarget(event)\n if (target.label) {\n window.content.location = target.label\n // The following alternative does not work in the extension.\n // var s = store.sym(target.label);\n // outline.GotoSubject(s, true);\n }\n }\n\n this.showURI = function showURI (about) {\n if (about && dom.getElementById('UserURI')) {\n dom.getElementById('UserURI').value =\n about.termType === 'NamedNode' ? about.uri : '' // blank if no URI\n }\n }\n\n this.showSource = function showSource () {\n if (typeof sourceWidget === 'undefined') return\n // deselect all before going on, this is necessary because you would switch tab,\n // close tab or so on...\n for (const uri in sourceWidget.sources) {\n sourceWidget.sources[uri].setAttribute('class', '')\n } // .class doesn't work. Be careful!\n for (let i = 0; i < selection.length; i++) {\n if (!selection[i].parentNode) {\n console.log('showSource: EH? no parentNode? ' + selection[i] + '\\n')\n continue\n }\n const st = selection[i].parentNode.AJAR_statement\n if (!st) continue // for root TD\n const source = st.why\n if (source && source.uri) {\n sourceWidget.highlight(source, true)\n }\n }\n }\n\n this.getSelection = function getSelection () {\n return selection\n }\n\n function setSelected (node, newValue) {\n // UI.log.info('selection has ' +selection.map(function(item){return item.textContent;}).join(', '));\n // UI.log.debug('@outline setSelected, intended to '+(newValue?'select ':'deselect ')+node+node.textContent);\n // if (newValue === selected(node)) return; //we might not need this anymore...\n if (node.nodeName !== 'TD') {\n UI.log.debug('down' + node.nodeName)\n throw new Error(\n 'Expected TD in setSelected: ' +\n node.nodeName +\n ' : ' +\n node.textContent\n )\n }\n UI.log.debug('pass')\n let cla = node.getAttribute('class')\n if (!cla) cla = ''\n if (newValue) {\n cla += ' selected'\n if (cla.indexOf('pred') >= 0 || cla.indexOf('obj') >= 0) {\n setSelectedParent(node, 1)\n }\n selection.push(node)\n // UI.log.info('Selecting '+node.textContent)\n\n const about = UI.utils.getTerm(node) // show uri for a newly selectedTd\n thisOutline.showURI(about)\n\n let st = node.AJAR_statement // show blue cross when the why of that triple is editable\n if (typeof st === 'undefined' && node.parentNode) st = node.parentNode.AJAR_statement\n // if (typeof st === 'undefined') return; // @@ Kludge? Click in the middle of nowhere\n if (st) {\n // don't do these for headers or base nodes\n const source = st.why\n // var target = st.why\n const editable = store.updater.editable(source.uri, kb)\n if (!editable) {\n // let target = node.parentNode.AJAR_inverse ? st.object : st.subject\n } // left hand side\n // think about this later. Because we update to the why for now.\n // alert('Target='+target+', editable='+editable+'\\nselected statement:' + st)\n if (editable && cla.indexOf('pred') >= 0) {\n termWidget.addIcon(node, outlineIcons.termWidgets.addTri)\n } // Add blue plus\n }\n } else {\n UI.log.debug('cla=$' + cla + '$')\n if (cla === 'selected') cla = '' // for header <TD>\n cla = cla.replace(' selected', '')\n if (cla.indexOf('pred') >= 0 || cla.indexOf('obj') >= 0) {\n setSelectedParent(node, -1)\n }\n if (cla.indexOf('pred') >= 0) {\n termWidget.removeIcon(node, outlineIcons.termWidgets.addTri)\n }\n\n selection = selection.filter(function (x) {\n return x === node\n })\n\n UI.log.info('Deselecting ' + node.textContent)\n }\n if (typeof sourceWidget !== 'undefined') thisOutline.showSource() // Update the data sources display\n // UI.log.info('selection becomes [' +selection.map(function(item){return item.textContent;}).join(', ')+']');\n // UI.log.info('Setting className ' + cla);\n node.setAttribute('class', cla)\n }\n\n function deselectAll () {\n const n = selection.length\n for (let i = n - 1; i >= 0; i--) setSelected(selection[i], false)\n selection = []\n }\n\n /** Get the target of an event **/\n this.targetOf = function (e) {\n let target\n if (!e) e = window.event\n if (e.target) {\n target = e.target\n } else if (e.srcElement) {\n target = e.srcElement\n } else {\n UI.log.error(\"can't get target for event \" + e)\n return false\n } // fail\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n return target\n } // targetOf\n\n this.walk = function walk (directionCode, inputTd) {\n const selectedTd = inputTd || selection[0]\n let newSelTd\n switch (directionCode) {\n case 'down':\n try {\n newSelTd = selectedTd.parentNode.nextSibling.lastChild\n } catch (e) {\n this.walk('up')\n return\n } // end\n deselectAll()\n setSelected(newSelTd, true)\n break\n case 'up':\n try {\n newSelTd = selectedTd.parentNode.previousSibling.lastChild\n } catch (e) {\n return\n } // top\n deselectAll()\n setSelected(newSelTd, true)\n break\n case 'right':\n deselectAll()\n if (\n selectedTd.nextSibling ||\n selectedTd.lastChild.tagName === 'strong'\n ) {\n setSelected(selectedTd.nextSibling, true)\n } else {\n const newSelected = dom.evaluate(\n 'table/div/tr/td[2]',\n selectedTd,\n null,\n XPathResult.FIRST_ORDERED_NODE_TYPE,\n null\n ).singleNodeValue\n setSelected(newSelected, true)\n }\n break\n case 'left':\n deselectAll()\n if (\n selectedTd.previousSibling &&\n selectedTd.previousSibling.className === 'undetermined'\n ) {\n setSelected(selectedTd.previousSibling, true)\n return true // do not shrink signal\n } else {\n setSelected(UI.utils.ancestor(selectedTd.parentNode, 'TD'), true)\n } // supplied by thieOutline.focusTd\n break\n case 'moveTo':\n // UI.log.info(selection[0].textContent+'->'+inputTd.textContent);\n deselectAll()\n setSelected(inputTd, true)\n break\n }\n if (directionCode === 'down' || directionCode === 'up') {\n if (!newSelTd.tabulatorSelect) this.walk(directionCode)\n }\n // return newSelTd;\n }\n\n // Keyboard Input: we can consider this as...\n // 1. a fast way to modify data - enter will go to next predicate\n // 2. an alternative way to input - enter at the end of a predicate will create a new statement\n this.OutlinerKeypressPanel = function OutlinerKeypressPanel (e) {\n UI.log.info('Key ' + e.keyCode + ' pressed')\n\n function showURI (about) {\n if (about && dom.getElementById('UserURI')) {\n dom.getElementById('UserURI').value =\n about.termType === 'NamedNode' ? about.uri : '' // blank if no URI\n }\n }\n\n function setSelectedAfterward (_uri) {\n if (arguments[3]) return true\n walk('right', selectedTd)\n showURI(UI.utils.getAbout(kb, selection[0]))\n return true\n }\n let target, editable\n\n if (UI.utils.getTarget(e).tagName === 'TEXTAREA') return\n if (UI.utils.getTarget(e).id === 'UserURI') return\n if (selection.length > 1) return\n if (selection.length === 0) {\n if (\n e.keyCode === 13 ||\n e.keyCode === 38 ||\n e.keyCode === 40 ||\n e.keyCode === 37 ||\n e.keyCode === 39\n ) {\n this.walk('right', thisOutline.focusTd)\n showURI(UI.utils.getAbout(kb, selection[0]))\n }\n return\n }\n const selectedTd = selection[0]\n // if not done, Have to deal with redraw...\n sf.removeCallback('done', 'setSelectedAfterward')\n sf.removeCallback('fail', 'setSelectedAfterward')\n\n switch (e.keyCode) {\n case 13: // enter\n if (UI.utils.getTarget(e).tagName === 'HTML') {\n // I don't know why 'HTML'\n const object = UI.utils.getAbout(kb, selectedTd)\n target = selectedTd.parentNode.AJAR_statement.why\n editable = store.updater.editable(target.uri, kb)\n if (object) {\n // <Feature about='enterToExpand'>\n outline.GotoSubject(object, true)\n /* //deal with this later\n deselectAll();\n var newTr=dom.getElementById('outline').lastChild;\n setSelected(newTr.firstChild.firstChild.childNodes[1].lastChild,true);\n function setSelectedAfterward(uri){\n deselectAll();\n setSelected(newTr.firstChild.firstChild.childNodes[1].lastChild,true);\n showURI(getAbout(kb,selection[0]));\n return true;\n }\n sf.insertCallback('done',setSelectedAfterward);\n sf.insertCallback('fail',setSelectedAfterward);\n */\n // </Feature>\n } else if (editable) {\n // this is a text node and editable\n thisOutline.UserInput.Enter(selectedTd)\n }\n } else {\n // var newSelTd=thisOutline.UserInput.lastModified.parentNode.parentNode.nextSibling.lastChild;\n this.UserInput.Keypress(e)\n this.walk('down') // bug with input at the end\n // dom.getElementById('docHTML').focus(); //have to set this or focus blurs\n e.stopPropagation()\n }\n return\n case 38: // up\n // thisOutline.UserInput.clearInputAndSave();\n // ^^^ does not work because up and down not captured...\n this.walk('up')\n e.stopPropagation()\n e.preventDefault()\n break\n case 40: // down\n // thisOutline.UserInput.clearInputAndSave();\n this.walk('down')\n e.stopPropagation()\n e.preventDefault()\n } // switch\n\n if (UI.utils.getTarget(e).tagName === 'INPUT') return\n\n let walk\n switch (e.keyCode) {\n case 46: // delete\n case 8: // backspace\n target = selectedTd.parentNode.AJAR_statement.why\n editable = store.updater.editable(target.uri, kb)\n if (editable) {\n e.preventDefault() // prevent from going back\n this.UserInput.Delete(selectedTd)\n }\n break\n case 37: { // left\n if (this.walk('left')) return\n const titleTd = UI.utils.ancestor(selectedTd.parentNode, 'TD')\n outlineCollapse(selectedTd, UI.utils.getAbout(kb, titleTd))\n break\n }\n case 39: // right\n // @@ TODO: Write away the need for exception on next line\n // eslint-disable-next-line no-case-declarations\n const obj = UI.utils.getAbout(kb, selectedTd)\n if (obj) {\n walk = this.walk\n if (selectedTd.nextSibling) {\n // when selectedTd is a predicate\n this.walk('right')\n return\n }\n if (selectedTd.firstChild.tagName !== 'TABLE') {\n // not expanded\n sf.addCallback('done', setSelectedAfterward)\n sf.addCallback('fail', setSelectedAfterward)\n outlineExpand(selectedTd, obj, {\n pane: paneRegistry.byName('defaultPane')\n })\n }\n setSelectedAfterward()\n }\n break\n case 38: // up\n case 40: // down\n break\n default:\n switch (e.charCode) {\n case 99: // c for Copy\n if (e.ctrlKey) {\n thisOutline.UserInput.copyToClipboard(\n thisOutline.clipboardAddress,\n selectedTd\n )\n break\n }\n break\n case 118: // v\n case 112: // p for Paste\n if (e.ctrlKey) {\n thisOutline.UserInput.pasteFromClipboard(\n thisOutline.clipboardAddress,\n selectedTd\n )\n // dom.getElementById('docHTML').focus(); //have to set this or focus blurs\n // window.focus();\n // e.stopPropagation();\n break\n }\n break\n default:\n if (UI.utils.getTarget(e).tagName === 'HTML') {\n /*\n //<Feature about='typeOnSelectedToInput'>\n thisOutline.UserInput.Click(e,selectedTd);\n thisOutline.UserInput.lastModified.value=String.fromCharCode(e.charCode);\n if (selectedTd.className==='undetermined selected') thisOutline.UserInput.AutoComplete(e.charCode)\n //</Feature>\n */\n // Events are not reliable...\n // var e2=document.createEvent('KeyboardEvent');\n // e2.initKeyEvent('keypress',true,true,null,false,false,false,false,e.keyCode,0);\n // UserInput.lastModified.dispatchEvent(e2);\n }\n }\n } // end of switch\n\n showURI(UI.utils.getAbout(kb, selection[0]))\n // alert(window);alert(doc);\n /*\n var wm = Components.classes['@mozilla.org/appshell/window-mediator;1']\n .getService(Components.interfaces.nsIWindowMediator);\n var gBrowser = wm.getMostRecentWindow('navigator:browser') */\n // gBrowser.addTab('http://www.w3.org/');\n // alert(gBrowser.addTab);alert(gBrowser.scroll);alert(gBrowser.scrollBy)\n // gBrowser.scrollBy(0,100);\n\n // var thisHtml=selection[0].owner\n if (selection[0]) {\n const PosY = UI.utils.findPos(selection[0])[1]\n if (\n PosY + selection[0].clientHeight >\n window.scrollY + window.innerHeight\n ) {\n UI.utils.getEyeFocus(selection[0], true, true, window)\n }\n if (PosY < window.scrollY + 54) {\n UI.utils.getEyeFocus(selection[0], true, undefined, window)\n }\n }\n }\n this.OutlinerMouseclickPanel = function (e) {\n switch (thisOutline.UserInput._tabulatorMode) {\n case 0:\n TabulatorMousedown(e)\n break\n case 1:\n thisOutline.UserInput.Click(e)\n break\n default:\n }\n }\n\n /** things to do onmousedown in outline view **/\n /*\n ** To Do: This big event handler needs to be replaced by lots\n ** of little ones individually connected to each icon. This horrible\n ** switch below isn't modular. (Sorry!) - Tim\n */\n // expand\n // collapse\n // refocus\n // select\n // visit/open a page\n\n function expandMouseDownListener (e) {\n // For icon (UI.icons.originalIconBase + 'tbl-expand-trans.png')\n const target = thisOutline.targetOf(e)\n const p = target.parentNode\n const subject = UI.utils.getAbout(kb, target)\n const pane = e.altKey ? paneRegistry.byName('internal') : undefined // set later: was panes.defaultPane\n\n if (e.shiftKey) {\n // Shift forces a refocus - bring this to the top\n outlineRefocus(p, subject, pane)\n } else {\n if (e.altKey) {\n // To investigate screw ups, dont wait show internals\n outlineExpand(p, subject, {\n pane: paneRegistry.byName('internal'),\n immediate: true\n })\n } else {\n outlineExpand(p, subject)\n }\n }\n }\n\n function collapseMouseDownListener (e) {\n // for icon UI.icons.originalIconBase + 'tbl-collapse.png'\n const target = thisOutline.targetOf(e)\n const subject = UI.utils.getAbout(kb, target)\n const pane = e.altKey ? paneRegistry.byName('internal') : undefined\n const p = target.parentNode.parentNode\n outlineCollapse(p, subject, pane)\n }\n\n function failedIconMouseDownListener (e) {\n // outlineIcons.src.icon_failed\n const target = thisOutline.targetOf(e)\n const uri = target.getAttribute('uri') // Put on access buttons\n if (e.altKey) {\n sf.fetch(UI.rdf.uri.docpart(uri), {\n force: true\n }) // Add 'force' bit?\n } else {\n sf.refresh(kb.sym(UI.rdf.uri.docpart(uri))) // just one\n }\n }\n\n function fetchedIconMouseDownListener (e) {\n // outlineIcons.src.icon_fetched\n const target = thisOutline.targetOf(e)\n const uri = target.getAttribute('uri') // Put on access buttons\n if (e.altKey) {\n sf.fetch(UI.rdf.uri.docpart(uri), {\n force: true\n })\n } else {\n sf.refresh(kb.sym(UI.rdf.uri.docpart(uri))) // just one\n }\n }\n\n function unrequestedIconMouseDownListener (e) {\n const target = thisOutline.targetOf(e)\n const uri = target.getAttribute('uri') // Put on access buttons\n sf.fetch(UI.rdf.uri.docpart(uri))\n }\n\n function removeNodeIconMouseDownListener (e) {\n // icon_remove_node\n const target = thisOutline.targetOf(e)\n let node = target.node\n if (node.childNodes.length > 1) node = target.parentNode // parallel outline view @@ Hack\n removeAndRefresh(node) // @@ update icons for pane?\n }\n\n function selectableTDClickListener (e) {\n // Is we are in editing mode already\n if (thisOutline.UserInput._tabulatorMode) {\n return thisOutline.UserInput.Click(e)\n }\n\n const target = thisOutline.targetOf(e)\n // Originally this was set on the whole tree and could happen anywhere\n // var p = target.parentNode\n let node\n for (\n node = UI.utils.ancestor(target, 'TD');\n node && !(node.getAttribute('notSelectable') === 'false'); // Default now is not selectable\n node = UI.utils.ancestor(node.parentNode, 'TD')\n ) {\n // ...\n }\n if (!node) return\n\n // var node = target;\n\n const sel = selected(node)\n // var cla = node.getAttribute('class')\n UI.log.debug('Was node selected before: ' + sel)\n if (e.altKey) {\n setSelected(node, !selected(node))\n } else if (e.shiftKey) {\n setSelected(node, true)\n } else {\n // setSelected(node, !selected(node))\n deselectAll()\n thisOutline.UserInput.clearInputAndSave(e)\n setSelected(node, true)\n\n if (e.detail === 2) {\n // double click -> quit TabulatorMousedown()\n e.stopPropagation()\n return\n }\n // if the node is already selected and the corresponding statement is editable,\n // go to UserInput\n let st\n if (node.parentNode) st = node.parentNode.AJAR_statement\n if (!st) return // For example in the title TD of an expanded pane\n const target = st.why\n const editable = store.updater.editable(target.uri, kb)\n if (sel && editable) thisOutline.UserInput.Click(e, selection[0]) // was next 2 lines\n // var text='TabulatorMouseDown@Outline()';\n // HCIoptions['able to edit in Discovery Mode by mouse'].setupHere([sel,e,thisOutline,selection[0]],text);\n }\n UI.log.debug(\n 'Was node selected after: ' +\n selected(node) +\n ', count=' +\n selection.length\n )\n // var tr = node.parentNode\n /*\n if (tr.AJAR_statement) {\n // var why = tr.AJAR_statement.why\n // UI.log.info('Information from '+why);\n }\n */\n e.stopPropagation()\n // this is important or conflict between deselect and user input happens\n }\n\n function TabulatorMousedown (e) {\n UI.log.info('@TabulatorMousedown, dom.location is now ' + dom.location)\n const target = thisOutline.targetOf(e)\n if (!target) return\n const tname = target.tagName\n // UI.log.debug('TabulatorMousedown: ' + tname + ' shift='+e.shiftKey+' alt='+e.altKey+' ctrl='+e.ctrlKey);\n // var p = target.parentNode\n // var about = UI.utils.getAbout(kb, target)\n // var source = null\n if (tname === 'INPUT' || tname === 'TEXTAREA') {\n return\n }\n\n // not input then clear\n thisOutline.UserInput.clearMenu()\n\n // ToDo:remove this and recover X\n if (\n thisOutline.UserInput.lastModified &&\n thisOutline.UserInput.lastModified.parentNode.nextSibling\n ) {\n thisOutline.UserInput.backOut()\n }\n\n // if (typeof rav=='undefined') //uncomment this for javascript2rdf\n // have to put this here or this conflicts with deselectAll()\n\n if (\n !target.src ||\n (target.src.slice(target.src.indexOf('/icons/') + 1) !==\n outlineIcons.src.icon_show_choices &&\n target.src.slice(target.src.indexOf('/icons/') + 1) !==\n outlineIcons.src.icon_add_triple)\n ) {\n thisOutline.UserInput.clearInputAndSave(e)\n }\n\n if (\n !target.src ||\n target.src.slice(target.src.indexOf('/icons/') + 1) !==\n outlineIcons.src.icon_show_choices\n ) {\n thisOutline.UserInput.clearMenu()\n }\n\n if (e) e.stopPropagation()\n } // function TabulatorMousedown\n\n function setUrlBarAndTitle (subject) {\n dom.title = UI.utils.label(subject)\n if (dom.location.href.startsWith(subject.site().uri)) {\n // dom.location = subject.uri // No causes reload\n }\n }\n\n /** Expand an outline view\n * @param p {Element} - container\n */\n function outlineExpand (p, subject1, options) {\n options = options || {}\n const pane = options.pane\n let already = !!options.already\n const immediate = options.immediate\n\n UI.log.info('@outlineExpand, dom is now ' + dom.location)\n // remove callback to prevent unexpected repaint\n sf.removeCallback('done', 'expand')\n sf.removeCallback('fail', 'expand')\n\n let subject = kb.canon(subject1)\n // var requTerm = subject.uri ? kb.sym(UI.rdf.uri.docpart(subject.uri)) : subject\n\n function render () {\n subject = kb.canon(subject)\n if (!p || !p.parentNode || !p.parentNode.parentNode) return false\n\n let newTable\n UI.log.info('@@ REPAINTING ')\n if (!already) {\n // first expand\n newTable = propertyTable(subject, undefined, pane, options)\n } else {\n UI.log.info(' ... p is ' + p)\n for (\n newTable = p.firstChild;\n newTable.nextSibling;\n newTable = newTable.nextSibling\n ) {\n UI.log.info(' ... checking node ' + newTable)\n if (newTable.nodeName === 'table') break\n }\n newTable = propertyTable(subject, newTable, pane, options)\n }\n already = true\n if (\n UI.utils.ancestor(p, 'TABLE') &&\n UI.utils.ancestor(p, 'TABLE').style.backgroundColor === 'white'\n ) {\n newTable.style.backgroundColor = '#eee'\n } else {\n newTable.style.backgroundColor = 'white'\n }\n UI.utils.emptyNode(p).appendChild(newTable)\n thisOutline.focusTd = p // I don't know why I couldn't use 'this'...because not defined in callbacks\n UI.log.debug('expand: Node for ' + subject + ' expanded')\n // fetch seeAlso when render()\n // var seeAlsoStats = sf.store.statementsMatching(subject, UI.ns.rdfs('seeAlso'))\n // seeAlsoStats.map(function (x) {sf.lookUpThing(x.object, subject,false);})\n const seeAlsoWhat = kb.each(subject, UI.ns.rdfs('seeAlso'))\n for (let i = 0; i < seeAlsoWhat.length; i++) {\n if (i === 25) {\n UI.log.warn(\n 'expand: Warning: many (' +\n seeAlsoWhat.length +\n ') seeAlso links for ' +\n subject\n )\n // break; Not sure what limits the AJAX system has here\n }\n sf.lookUpThing(seeAlsoWhat[i], subject)\n }\n }\n\n function expand (uri) {\n if (arguments[3]) return true // already fetched indicator\n const cursubj = kb.canon(subject) // canonical identifier may have changed\n UI.log.info(\n '@@ expand: relevant subject=' +\n cursubj +\n ', uri=' +\n uri +\n ', already=' +\n already\n )\n // var term = kb.sym(uri)\n const docTerm = kb.sym(UI.rdf.uri.docpart(uri))\n if (uri.indexOf('#') >= 0) {\n throw new Error('Internal error: hash in ' + uri)\n }\n\n const relevant = function () {\n // Is the loading of this URI relevam to the display of subject?\n if (!cursubj.uri) return true // bnode should expand()\n const as = kb.uris(cursubj)\n if (!as) return false\n for (let i = 0; i < as.length; i++) {\n // canon'l uri or any alias\n for (\n let rd = UI.rdf.uri.docpart(as[i]);\n rd;\n rd = kb.HTTPRedirects[rd]\n ) {\n if (uri === rd) return true\n }\n }\n if (kb.anyStatementMatching(cursubj, undefined, undefined, docTerm)) {\n return true\n } // Kenny: inverse?\n return false\n }\n if (relevant()) {\n UI.log.success(\n '@@ expand OK: relevant subject=' +\n cursubj +\n ', uri=' +\n uri +\n ', source=' +\n already\n )\n\n render()\n return false // @@@@@@@@@@@ Will this allow just the first\n }\n return true\n }\n // Body of outlineExpand\n\n if (options.solo) {\n setUrlBarAndTitle(subject)\n }\n UI.log.debug('outlineExpand: dereferencing ' + subject)\n const status = dom.createElement('span')\n p.appendChild(status)\n sf.addCallback('done', expand) // @@@@@@@ This can really mess up existing work\n sf.addCallback('fail', expand) // Need to do if there s one a gentle resync of page with store\n\n const returnConditions = [] // this is quite a general way to do cut and paste programming\n // I might make a class for this\n if (subject.uri && subject.uri.split(':')[0] === 'rdf') {\n // what is this? -tim\n render()\n return\n }\n\n for (let i = 0; i < returnConditions.length; i++) {\n let returnCode\n if (returnCode === returnConditions[i](subject)) {\n render()\n UI.log.debug('outline 1815')\n if (returnCode[1]) outlineElement.removeChild(outlineElement.lastChild)\n return\n }\n }\n if (\n subject.uri &&\n !immediate &&\n !UI.widgets.isAudio(subject) &&\n !UI.widgets.isVideo(subject)\n ) {\n // Wait till at least the main URI is loaded before expanding:\n sf.nowOrWhenFetched(subject.doc(), undefined, function (ok, body) {\n if (ok) {\n sf.lookUpThing(subject)\n render() // inital open, or else full if re-open\n if (options.solo) {\n // Update window title with new information\n // dom.title = UI.utils.label(subject)\n setUrlBarAndTitle(subject)\n }\n } else {\n const message = dom.createElement('pre')\n message.textContent = body\n message.setAttribute('style', 'background-color: #fee;')\n message.textContent =\n 'Outline.expand: Unable to fetch ' + subject.doc() + ': ' + body\n p.appendChild(message)\n }\n })\n } else {\n render()\n }\n } // outlineExpand\n\n function outlineCollapse (p, subject) {\n let row = UI.utils.ancestor(p, 'TR')\n row = UI.utils.ancestor(row.parentNode, 'TR') // two levels up\n let statement\n if (row) statement = row.AJAR_statement\n let level // find level (the enclosing TD)\n for (\n level = p.parentNode;\n level.tagName !== 'TD';\n level = level.parentNode\n ) {\n if (typeof level === 'undefined') {\n alert('Not enclosed in TD!')\n return\n }\n }\n\n UI.log.debug('Collapsing subject ' + subject)\n let myview\n if (statement) {\n UI.log.debug('looking up pred ' + statement.predicate.uri + 'in defaults')\n myview = views.defaults[statement.predicate.uri]\n }\n UI.log.debug('view= ' + myview)\n let deleteNode\n if (level.parentNode.parentNode.id === 'outline') {\n deleteNode = level.parentNode\n }\n thisOutline.replaceTD(\n thisOutline.outlineObjectTD(subject, myview, deleteNode, statement),\n level\n )\n } // outlineCollapse\n\n this.replaceTD = function replaceTD (newTd, replacedTd) {\n let reselect\n if (selected(replacedTd)) reselect = true\n\n // deselects everything being collapsed. This goes backwards because\n // deselecting an element decreases selection.length\n for (let x = selection.length - 1; x > -1; x--) {\n for (let elt = selection[x]; elt.parentNode; elt = elt.parentNode) {\n if (elt === replacedTd) {\n setSelected(selection[x], false)\n }\n }\n }\n\n replacedTd.parentNode.replaceChild(newTd, replacedTd)\n if (reselect) setSelected(newTd, true)\n }\n\n function outlineRefocus (p, subject) {\n // Shift-expand or shift-collapse: Maximize\n let outer = null\n for (let level = p.parentNode; level; level = level.parentNode) {\n UI.log.debug('level ' + level.tagName)\n if (level.tagName === 'TD') outer = level\n } // find outermost td\n UI.utils.emptyNode(outer).appendChild(propertyTable(subject))\n setUrlBarAndTitle(subject)\n // dom.title = UI.utils.label(subject)\n outer.setAttribute('about', subject.toNT())\n } // outlineRefocus\n\n outline.outlineRefocus = outlineRefocus\n\n // Inversion is turning the outline view inside-out\n // It may be called eversion\n /*\n function outlineInversion (p, subject) { // re-root at subject\n function move_root (rootTR, childTR) { // swap root with child\n // @@\n }\n }\n*/\n this.GotoFormURI_enterKey = function (e) {\n if (e.keyCode === 13) outline.GotoFormURI(e)\n }\n this.GotoFormURI = function (_e) {\n GotoURI(dom.getElementById('UserURI').value)\n }\n\n function GotoURI (uri) {\n const subject = kb.sym(uri)\n this.GotoSubject(subject, true)\n }\n this.GotoURIinit = function (uri) {\n const subject = kb.sym(uri)\n this.GotoSubject(subject)\n }\n\n /** Display the subject in an outline view\n\n @param subject -- RDF term for teh thing to be presented\n @param expand -- flag -- open the subject rather than keep folded closed\n @param pane -- optional -- pane to be used for expanded display\n @param solo -- optional -- the window will be cleared out and only the subject displayed\n @param referer -- optional -- where did we hear about this from anyway?\n @param table -- option -- a table element in which to put the outline.\n*/\n this.GotoSubject = function (subject, expand, pane, solo, referrer, table) {\n table = table || dom.getElementById('outline') // if does not exist just add one? nowhere to out it\n if (solo) {\n UI.utils.emptyNode(table)\n table.style.width = '100%'\n }\n\n function GotoSubjectDefault () {\n const tr = dom.createElement('TR')\n tr.style.verticalAlign = 'top'\n table.appendChild(tr)\n const td = thisOutline.outlineObjectTD(subject, undefined, tr)\n tr.appendChild(td)\n return td\n }\n\n const td = GotoSubjectDefault()\n\n if (solo) setUrlBarAndTitle(subject) // dom.title = UI.utils.label(subject) // 'Tabulator: '+ No need to advertize\n\n if (expand) {\n outlineExpand(td, subject, {\n pane: pane,\n solo: solo\n })\n const tr = td.parentNode\n UI.utils.getEyeFocus(tr, false, undefined, window) // instantly: false\n }\n\n if (\n solo &&\n dom &&\n dom.defaultView &&\n dom.defaultView.history &&\n // Don't add the new location to the history if we arrived here through a direct link\n // (i.e. when static/databrowser.html in node-solid-server called this method):\n document.location.href !== subject.uri\n ) {\n const stateObj = pane ? { paneName: pane.name } : {}\n try {\n // can fail if different origin\n dom.defaultView.history.pushState(stateObj, subject.uri, subject.uri)\n } catch (e) {\n console.log(e)\n }\n }\n\n return subject\n }\n\n // / /////////////////////////////////////////////////////\n //\n //\n // VIEWS\n //\n //\n // / /////////////////////////////////////////////////////\n\n const ns = UI.ns\n\n const views = propertyViews(dom)\n\n // var thisOutline = this dup\n /** some builtin simple views **/\n\n function viewAsBoringDefault (obj) {\n // UI.log.debug('entered viewAsBoringDefault...');\n let rep // representation in html\n\n if (obj.termType === 'Literal') {\n const styles = {\n integer: 'text-align: right;',\n decimal: \"text-align: '.';\",\n double: \"text-align: '.';\"\n }\n rep = dom.createElement('span')\n rep.textContent = obj.value\n // Newlines have effect and overlong lines wrapped automatically\n let style = ''\n if (obj.datatype && obj.datatype.uri) {\n const xsd = UI.ns.xsd('').uri\n if (obj.datatype.uri.slice(0, xsd.length) === xsd) {\n style = styles[obj.datatype.uri.slice(xsd.length)]\n }\n }\n rep.setAttribute('style', style || 'white-space: pre-wrap;')\n } else if (obj.termType === 'NamedNode' || obj.termType === 'BlankNode') {\n rep = dom.createElement('span')\n rep.setAttribute('about', obj.toNT())\n thisOutline.appendAccessIcons(kb, rep, obj)\n\n if (obj.termType === 'NamedNode') {\n if (obj.uri.slice(0, 4) === 'tel:') {\n const num = obj.uri.slice(4)\n const anchor = dom.createElement('a')\n rep.appendChild(dom.createTextNode(num))\n anchor.setAttribute('href', obj.uri)\n anchor.appendChild(\n UI.utils.AJARImage(\n outlineIcons.src.icon_telephone,\n 'phone',\n 'phone ' + num,\n dom\n )\n )\n rep.appendChild(anchor)\n anchor.firstChild.setAttribute('class', 'phoneIcon')\n } else {\n // not tel:\n rep.appendChild(dom.createTextNode(UI.utils.label(obj)))\n const anchor = UI.widgets.linkIcon(dom, obj)\n rep.appendChild(anchor)\n UI.widgets.makeDraggable(rep, obj) // 2017\n }\n } else {\n // bnode\n rep.appendChild(dom.createTextNode(UI.utils.label(obj)))\n }\n } else if (obj.termType === 'Collection') {\n // obj.elements is an array of the elements in the collection\n rep = dom.createElement('table')\n rep.setAttribute('style', 'width: 100%;')\n rep.setAttribute('about', obj.toNT())\n /* Not sure which looks best -- with or without. I think without\n\n var tr = rep.appendChild(document.createElement('tr'));\n tr.appendChild(document.createTextNode(\n obj.elements.length ? '(' + obj.elements.length+')' : '(none)'));\n */\n for (let i = 0; i < obj.elements.length; i++) {\n const elt = obj.elements[i]\n const row = rep.appendChild(dom.createElement('tr'))\n const numcell = row.appendChild(dom.createElement('td'))\n numcell.setAttribute(\n 'style',\n 'margin: 0.2em; border: none; padding: 0; vertical-align: top;'\n )\n numcell.setAttribute('notSelectable', 'false')\n numcell.setAttribute('about', obj.toNT())\n numcell.innerHTML = i + 1 + ')'\n row.appendChild(thisOutline.outlineObjectTD(elt))\n }\n } else if (obj.termType === 'Graph') {\n rep = paneRegistry\n .byName('dataContentPane')\n .statementsAsTables(obj.statements, context)\n rep.setAttribute('class', 'nestedFormula')\n } else {\n UI.log.error('Object ' + obj + ' has unknown term type: ' + obj.termType)\n rep = dom.createTextNode('[unknownTermType:' + obj.termType + ']')\n } // boring defaults.\n UI.log.debug('contents: ' + rep.innerHTML)\n return rep\n } // boring_default\n\n this.createTabURI = function () {\n dom.getElementById('UserURI').value =\n dom.URL + '?uri=' + dom.getElementById('UserURI').value\n }\n\n // a way to expose variables to UserInput without making them propeties/methods\n this.UserInput.setSelected = setSelected\n this.UserInput.deselectAll = deselectAll\n this.UserInput.views = views\n this.outlineExpand = outlineExpand\n\n // this.panes = panes; // Allow external panes to register\n\n return this\n} // END OF OUTLINE\n"],"mappings":"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","ignoreList":[]}
|