solid-panes 4.0.0-cf719505 → 4.0.0-fdac9deb

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.
@@ -1 +1 @@
1
- {"version":3,"file":"dashboardPane.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboardPane.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,cAAc,EAAE,MAAM,eAAe,CAAA;AAElE,eAAO,MAAM,aAAa,EAAE,cAqC3B,CAAA;AAuCD,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"dashboardPane.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboardPane.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,cAAc,EAAE,MAAM,eAAe,CAAA;AAElE,eAAO,MAAM,aAAa,EAAE,cAoC3B,CAAA;AAuCD,eAAe,aAAa,CAAA"}
@@ -11,8 +11,7 @@ const dashboardPane = exports.dashboardPane = {
11
11
  icon: _solidUi.icons.iconBase + 'noun_547570.svg',
12
12
  name: 'dashboard',
13
13
  label: subject => {
14
- console.log();
15
- if (subject.uri === subject.site().uri) {
14
+ if (subject.termType === 'NamedNode' && subject.uri === subject.site().uri) {
16
15
  return 'Dashboard';
17
16
  }
18
17
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboardPane.js","names":["_solidUi","require","_solidLogic","_homepage","dashboardPane","exports","icon","icons","iconBase","name","label","subject","console","log","uri","site","render","context","dom","container","createElement","runBuildPage","innerHTML","buildPage","authn","currentUser","authSession","events","on","webId","URL","window","location","href","searchParams","get","buildDashboard","buildHomePage","outliner","getOutliner","getDashboard","then","dashboard","appendChild","wrapper","document","shadow","attachShadow","mode","link","rel","generateHomepage","store","fetcher","homepage","_default","default"],"sources":["../../src/dashboard/dashboardPane.ts"],"sourcesContent":["import { icons } from 'solid-ui'\nimport { authn, authSession, store } from 'solid-logic'\nimport { Fetcher, NamedNode } from 'rdflib'\nimport { generateHomepage } from './homepage'\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\n\nexport const dashboardPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg',\n name: 'dashboard',\n label: subject => {\n console.log()\n if (subject.uri === subject.site().uri) {\n return 'Dashboard'\n }\n return null\n },\n render: (subject, context) => {\n console.log('Dashboard Pane Render')\n const dom = context.dom\n const container = dom.createElement('div')\n const runBuildPage = () => {\n container.innerHTML = ''\n buildPage(\n container,\n authn.currentUser() || null,\n context,\n subject\n )\n }\n\n authSession.events.on('login', () => {\n // console.log('On Login')\n runBuildPage()\n })\n authSession.events.on('sessionRestore', () => {\n // console.log('On Session Restore')\n runBuildPage()\n })\n // console.log('Initial Load')\n runBuildPage()\n\n return container\n }\n}\n\nfunction buildPage (\n container: HTMLElement,\n webId: NamedNode | null,\n context: DataBrowserContext,\n subject: NamedNode\n) {\n // if uri then SolidOS is a browse.html web app\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n if (webId && (uri || webId.site().uri === subject.site().uri)) {\n return buildDashboard(container, context)\n }\n return buildHomePage(container, subject)\n}\n\nfunction buildDashboard (container: HTMLElement, context: DataBrowserContext) {\n // console.log('build dashboard')\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(context.dom)\n outliner\n .getDashboard()\n .then((dashboard: HTMLElement) => container.appendChild(dashboard))\n}\n\nfunction buildHomePage (container: HTMLElement, subject: NamedNode) {\n // console.log('build home page')\n const wrapper = document.createElement('div')\n container.appendChild(wrapper)\n const shadow = wrapper.attachShadow({ mode: 'open' })\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/common/css/bootstrap.min.css'\n shadow.appendChild(link)\n generateHomepage(subject, store, store.fetcher as Fetcher).then(homepage =>\n shadow.appendChild(homepage)\n )\n}\n\nexport default dashboardPane\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dashboardPane.js","names":["_solidUi","require","_solidLogic","_homepage","dashboardPane","exports","icon","icons","iconBase","name","label","subject","termType","uri","site","render","context","console","log","dom","container","createElement","runBuildPage","innerHTML","buildPage","authn","currentUser","authSession","events","on","webId","URL","window","location","href","searchParams","get","buildDashboard","buildHomePage","outliner","getOutliner","getDashboard","then","dashboard","appendChild","wrapper","document","shadow","attachShadow","mode","link","rel","generateHomepage","store","fetcher","homepage","_default","default"],"sources":["../../src/dashboard/dashboardPane.ts"],"sourcesContent":["import { icons } from 'solid-ui'\nimport { authn, authSession, store } from 'solid-logic'\nimport { Fetcher, NamedNode } from 'rdflib'\nimport { generateHomepage } from './homepage'\nimport { DataBrowserContext, PaneDefinition } from 'pane-registry'\n\nexport const dashboardPane: PaneDefinition = {\n icon: icons.iconBase + 'noun_547570.svg',\n name: 'dashboard',\n label: subject => {\n if (subject.termType === 'NamedNode' && subject.uri === subject.site().uri) {\n return 'Dashboard'\n }\n return null\n },\n render: (subject, context) => {\n console.log('Dashboard Pane Render')\n const dom = context.dom\n const container = dom.createElement('div')\n const runBuildPage = () => {\n container.innerHTML = ''\n buildPage(\n container,\n authn.currentUser() || null,\n context,\n subject\n )\n }\n\n authSession.events.on('login', () => {\n // console.log('On Login')\n runBuildPage()\n })\n authSession.events.on('sessionRestore', () => {\n // console.log('On Session Restore')\n runBuildPage()\n })\n // console.log('Initial Load')\n runBuildPage()\n\n return container\n }\n}\n\nfunction buildPage (\n container: HTMLElement,\n webId: NamedNode | null,\n context: DataBrowserContext,\n subject: NamedNode\n) {\n // if uri then SolidOS is a browse.html web app\n const uri = (new URL(window.location.href)).searchParams.get('uri')\n if (webId && (uri || webId.site().uri === subject.site().uri)) {\n return buildDashboard(container, context)\n }\n return buildHomePage(container, subject)\n}\n\nfunction buildDashboard (container: HTMLElement, context: DataBrowserContext) {\n // console.log('build dashboard')\n // @@ TODO get a proper type\n const outliner: any = context.getOutliner(context.dom)\n outliner\n .getDashboard()\n .then((dashboard: HTMLElement) => container.appendChild(dashboard))\n}\n\nfunction buildHomePage (container: HTMLElement, subject: NamedNode) {\n // console.log('build home page')\n const wrapper = document.createElement('div')\n container.appendChild(wrapper)\n const shadow = wrapper.attachShadow({ mode: 'open' })\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/common/css/bootstrap.min.css'\n shadow.appendChild(link)\n generateHomepage(subject, store, store.fetcher as Fetcher).then(homepage =>\n shadow.appendChild(homepage)\n )\n}\n\nexport default dashboardPane\n"],"mappings":"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","ignoreList":[]}
@@ -203,7 +203,7 @@ function _default(context) {
203
203
  // some choices of predicate
204
204
  lab = UI.utils.predicateLabelForXML(predicate.elements[0], inverse);
205
205
  }
206
- lab = lab.slice(0, 1).toUpperCase() + lab.slice(1);
206
+ lab = lab ? lab.slice(0, 1).toUpperCase() + lab.slice(1) : '...';
207
207
  // if (kb.statementsMatching(predicate,rdf('type'), UI.ns.link('Request')).length) predicateTD.className='undetermined';
208
208
 
209
209
  const labelTD = dom.createElement('TD');
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","names":["paneRegistry","_interopRequireWildcard","require","$rdf","UI","_solidLogic","_propertyViews","_outlineIcons","_userInput","queryByExample","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","context","dom","document","outlineIcons","labeller","LanguagePreference","outline","thisOutline","selection","ancestor","utils","sparql","UpdateManager","kb","store","sf","fetcher","qs","QuerySource","UserInput","clipboardAddress","clipboardInit","outlineElement","init","table","getOutlineContainer","benchmark","lastkbsize","args","arguments","length","begin","Date","getTime","returnValue","apply","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","slice","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","value","icons","originalIconBase","expandMouseDownListener","whether","ns","rdf","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","options","console","div","me","authn","currentUser","alert","Error","items","getDashboardItems","renderTab","item","dataset","globalPaneName","tabName","paneName","textContent","label","renderMain","containerDiv","pane","byName","innerHTML","GotoSubject","tabs","tabWidget","ordered","orientation","backgroundColor","selectedTab","onClose","getDashboard","books","pods","Promise","all","getAddressBooks","getPods","iconBase","concat","addPodStorage","pod","loadContainerRepresentation","holds","space","doc","push","addPodStorageFromUrl","url","podStorage","URL","pathStorage","pathname","substring","lastIndexOf","sym","origin","load","err","each","map","window","location","href","searchParams","podUrl","uniques","nodes","uniqueNodes","forEach","find","uniqueNode","equals","index","split","startsWith","login","findAppInstances","vcard","instances","book","showDashboard","dashboardContainer","getDashboardContainer","outlineContainer","childNodes","display","tab","querySelector","click","warn","dashboard","closeDashboard","authSession","events","on","getOrCreateContainer","id","getElementById","mainContainer","body","any","ldp","response","webOperation","initFetchOptions","headers","accept","containerTurtle","responseText","parse","getRelevantPanes","endsWith","panes","session","relevantPanes","list","global","filteredPanes","filterAvailablePanes","firstRelevantPaneIndex","indexOf","firstFilteredPaneIndex","getPane","shouldGetFocus","expandedHeaderTR","requiredPane","renderPaneIconTray","paneShownStyle","paneHiddenStyle","paneIconTray","hideList","tr","firstPane","paneNumber","ico","listen","event","containingTable","parentNode","nodeName","removePanes","specific","d","firstChild","nextSibling","paneButton","removeAndRefresh","requireQueryButton","numberOfPanesRequiringQueryButton","renderPane","paneDiv","name","render","pre","stackString","removeAttribute","second","row","cell","insertBefore","getAttribute","shiftKey","hover","header","showHeader","solo","collapseMouseDownListener","strong","widgets","makeDraggable","par","placeholder","replaceChild","removeChild","propertyTable","debug","canon","then","tr1","propertyTR","st","AJAR_inverse","appendPropertyTRs","parent","plist","predicateFilter","sel","j","k","x","RDFComparePredicateSubject","object","RDFComparePredicateObject","max","s","defaultpropview","views","defaults","dups","langTagged","myLang","sameTerm","lang","showNobj","predDups","show","showLaterArray","l","displayed","trObj","colspan","moreTR","moreTD","small","predToggle","current","toggleObj","stopPropagation","showAllobj","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","a","optOnIconMouseDownListener","targetOf","p","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","double","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 = $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 = $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 const 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.events.on('logout', 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 = $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 {\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 }\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($rdf.uri.docpart(uri), {\n force: true\n }) // Add 'force' bit?\n } else {\n sf.refresh(kb.sym($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($rdf.uri.docpart(uri), {\n force: true\n })\n } else {\n sf.refresh(kb.sym($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($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($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($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 = $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,\n 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","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","context","dom","document","outlineIcons","labeller","LanguagePreference","outline","thisOutline","selection","ancestor","utils","sparql","UpdateManager","kb","store","sf","fetcher","qs","QuerySource","UserInput","clipboardAddress","clipboardInit","outlineElement","init","table","getOutlineContainer","benchmark","lastkbsize","args","arguments","length","begin","Date","getTime","returnValue","apply","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","slice","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","value","icons","originalIconBase","expandMouseDownListener","whether","ns","rdf","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","options","console","div","me","authn","currentUser","alert","Error","items","getDashboardItems","renderTab","item","dataset","globalPaneName","tabName","paneName","textContent","label","renderMain","containerDiv","pane","byName","innerHTML","GotoSubject","tabs","tabWidget","ordered","orientation","backgroundColor","selectedTab","onClose","getDashboard","books","pods","Promise","all","getAddressBooks","getPods","iconBase","concat","addPodStorage","pod","loadContainerRepresentation","holds","space","doc","push","addPodStorageFromUrl","url","podStorage","URL","pathStorage","pathname","substring","lastIndexOf","sym","origin","load","err","each","map","window","location","href","searchParams","podUrl","uniques","nodes","uniqueNodes","forEach","find","uniqueNode","equals","index","split","startsWith","login","findAppInstances","vcard","instances","book","showDashboard","dashboardContainer","getDashboardContainer","outlineContainer","childNodes","display","tab","querySelector","click","warn","dashboard","closeDashboard","authSession","events","on","getOrCreateContainer","id","getElementById","mainContainer","body","any","ldp","response","webOperation","initFetchOptions","headers","accept","containerTurtle","responseText","parse","getRelevantPanes","endsWith","panes","session","relevantPanes","list","global","filteredPanes","filterAvailablePanes","firstRelevantPaneIndex","indexOf","firstFilteredPaneIndex","getPane","shouldGetFocus","expandedHeaderTR","requiredPane","renderPaneIconTray","paneShownStyle","paneHiddenStyle","paneIconTray","hideList","tr","firstPane","paneNumber","ico","listen","event","containingTable","parentNode","nodeName","removePanes","specific","d","firstChild","nextSibling","paneButton","removeAndRefresh","requireQueryButton","numberOfPanesRequiringQueryButton","renderPane","paneDiv","name","render","pre","stackString","removeAttribute","second","row","cell","insertBefore","getAttribute","shiftKey","hover","header","showHeader","solo","collapseMouseDownListener","strong","widgets","makeDraggable","par","placeholder","replaceChild","removeChild","propertyTable","debug","canon","then","tr1","propertyTR","st","AJAR_inverse","appendPropertyTRs","parent","plist","predicateFilter","sel","j","k","x","RDFComparePredicateSubject","object","RDFComparePredicateObject","max","s","defaultpropview","views","defaults","dups","langTagged","myLang","sameTerm","lang","showNobj","predDups","show","showLaterArray","l","displayed","trObj","colspan","moreTR","moreTD","small","predToggle","current","toggleObj","stopPropagation","showAllobj","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","a","optOnIconMouseDownListener","targetOf","p","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","double","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 = $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 = $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 const 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 ? 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.events.on('logout', 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 = $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 {\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 }\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($rdf.uri.docpart(uri), {\n force: true\n }) // Add 'force' bit?\n } else {\n sf.refresh(kb.sym($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($rdf.uri.docpart(uri), {\n force: true\n })\n } else {\n sf.refresh(kb.sym($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($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($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($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 = $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,\n 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":[]}
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _default = exports.default = {
8
- buildTime: '2026-01-27T09:33:00Z',
9
- commit: 'cf7195059d894eadac79754a22a42ec075aedc98',
8
+ buildTime: '2026-01-27T09:44:26Z',
9
+ commit: 'fdac9debaeec68aaf9c29d7382d1a094939702b7',
10
10
  npmInfo: {
11
11
  '\'solid-panes\'': '\'4.0.0\',',
12
12
  npm: '\'10.8.2\',',
@@ -1 +1 @@
1
- {"version":3,"file":"versionInfo.js","names":["buildTime","commit","npmInfo","npm","node","acorn","ada","ares","brotli","cjs_module_lexer","cldr","icu","llhttp","modules","napi","nghttp2","openssl","simdutf","tz","undici","unicode","uv","uvwasi","v8","zlib"],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\n buildTime: '2026-01-27T09:33:00Z',\n commit: 'cf7195059d894eadac79754a22a42ec075aedc98',\n npmInfo: {\n '\\'solid-panes\\'': '\\'4.0.0\\',',\n npm: '\\'10.8.2\\',',\n node: '\\'20.20.0\\',',\n acorn: '\\'8.15.0\\',',\n ada: '\\'2.9.2\\',',\n ares: '\\'1.34.6\\',',\n brotli: '\\'1.1.0\\',',\n cjs_module_lexer: '\\'2.1.0\\',',\n cldr: '\\'47.0\\',',\n icu: '\\'77.1\\',',\n llhttp: '\\'9.3.0\\',',\n modules: '\\'115\\',',\n napi: '\\'9\\',',\n nghttp2: '\\'1.61.0\\',',\n openssl: '\\'3.0.17\\',',\n simdutf: '\\'6.4.2\\',',\n tz: '\\'2025b\\',',\n undici: '\\'6.23.0\\',',\n unicode: '\\'16.0\\',',\n uv: '\\'1.46.0\\',',\n uvwasi: '\\'0.0.23\\',',\n v8: '\\'11.3.244.8-node.33\\',',\n zlib: '\\'1.3.1-470d3a2\\'',\n '}': '}',\n }\n}\n"],"mappings":";;;;;;iCAAe;EACbA,SAAS,EAAE,sBAAsB;EACjCC,MAAM,EAAE,0CAA0C;EAClDC,OAAO,EAAE;IACP,iBAAiB,EAAE,YAAY;IAC/BC,GAAG,EAAE,aAAa;IAClBC,IAAI,EAAE,cAAc;IACpBC,KAAK,EAAE,aAAa;IACpBC,GAAG,EAAE,YAAY;IACjBC,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE,YAAY;IACpBC,gBAAgB,EAAE,YAAY;IAC9BC,IAAI,EAAE,WAAW;IACjBC,GAAG,EAAE,WAAW;IAChBC,MAAM,EAAE,YAAY;IACpBC,OAAO,EAAE,UAAU;IACnBC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,aAAa;IACtBC,OAAO,EAAE,aAAa;IACtBC,OAAO,EAAE,YAAY;IACrBC,EAAE,EAAE,YAAY;IAChBC,MAAM,EAAE,aAAa;IACrBC,OAAO,EAAE,WAAW;IACpBC,EAAE,EAAE,aAAa;IACjBC,MAAM,EAAE,aAAa;IACrBC,EAAE,EAAE,yBAAyB;IAC7BC,IAAI,EAAE,mBAAmB;IACzB,GAAG,EAAE;EACP;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"versionInfo.js","names":["buildTime","commit","npmInfo","npm","node","acorn","ada","ares","brotli","cjs_module_lexer","cldr","icu","llhttp","modules","napi","nghttp2","openssl","simdutf","tz","undici","unicode","uv","uvwasi","v8","zlib"],"sources":["../src/versionInfo.ts"],"sourcesContent":["export default {\n buildTime: '2026-01-27T09:44:26Z',\n commit: 'fdac9debaeec68aaf9c29d7382d1a094939702b7',\n npmInfo: {\n '\\'solid-panes\\'': '\\'4.0.0\\',',\n npm: '\\'10.8.2\\',',\n node: '\\'20.20.0\\',',\n acorn: '\\'8.15.0\\',',\n ada: '\\'2.9.2\\',',\n ares: '\\'1.34.6\\',',\n brotli: '\\'1.1.0\\',',\n cjs_module_lexer: '\\'2.1.0\\',',\n cldr: '\\'47.0\\',',\n icu: '\\'77.1\\',',\n llhttp: '\\'9.3.0\\',',\n modules: '\\'115\\',',\n napi: '\\'9\\',',\n nghttp2: '\\'1.61.0\\',',\n openssl: '\\'3.0.17\\',',\n simdutf: '\\'6.4.2\\',',\n tz: '\\'2025b\\',',\n undici: '\\'6.23.0\\',',\n unicode: '\\'16.0\\',',\n uv: '\\'1.46.0\\',',\n uvwasi: '\\'0.0.23\\',',\n v8: '\\'11.3.244.8-node.33\\',',\n zlib: '\\'1.3.1-470d3a2\\'',\n '}': '}',\n }\n}\n"],"mappings":";;;;;;iCAAe;EACbA,SAAS,EAAE,sBAAsB;EACjCC,MAAM,EAAE,0CAA0C;EAClDC,OAAO,EAAE;IACP,iBAAiB,EAAE,YAAY;IAC/BC,GAAG,EAAE,aAAa;IAClBC,IAAI,EAAE,cAAc;IACpBC,KAAK,EAAE,aAAa;IACpBC,GAAG,EAAE,YAAY;IACjBC,IAAI,EAAE,aAAa;IACnBC,MAAM,EAAE,YAAY;IACpBC,gBAAgB,EAAE,YAAY;IAC9BC,IAAI,EAAE,WAAW;IACjBC,GAAG,EAAE,WAAW;IAChBC,MAAM,EAAE,YAAY;IACpBC,OAAO,EAAE,UAAU;IACnBC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,aAAa;IACtBC,OAAO,EAAE,aAAa;IACtBC,OAAO,EAAE,YAAY;IACrBC,EAAE,EAAE,YAAY;IAChBC,MAAM,EAAE,aAAa;IACrBC,OAAO,EAAE,WAAW;IACpBC,EAAE,EAAE,aAAa;IACjBC,MAAM,EAAE,aAAa;IACrBC,EAAE,EAAE,yBAAyB;IAC7BC,IAAI,EAAE,mBAAmB;IACzB,GAAG,EAAE;EACP;AACF,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-panes",
3
- "version": "4.0.0-cf719505",
3
+ "version": "4.0.0-fdac9deb",
4
4
  "description": "Solid-compatible Panes: applets and views for the mashlib and databrowser",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",