solid-ui 2.4.18 → 2.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +3 -2
  2. package/lib/acl/acl.d.ts.map +1 -1
  3. package/lib/acl/acl.js +2 -4
  4. package/lib/acl/acl.js.map +1 -1
  5. package/lib/acl/add-agent-buttons.d.ts.map +1 -1
  6. package/lib/acl/add-agent-buttons.js +5 -5
  7. package/lib/acl/add-agent-buttons.js.map +1 -1
  8. package/lib/chat/bookmarks.js +20 -22
  9. package/lib/chat/bookmarks.js.map +1 -1
  10. package/lib/chat/chatLogic.js +13 -15
  11. package/lib/chat/chatLogic.js.map +1 -1
  12. package/lib/chat/dateFolder.js +10 -10
  13. package/lib/chat/dateFolder.js.map +1 -1
  14. package/lib/chat/infinite.js +14 -16
  15. package/lib/chat/infinite.js.map +1 -1
  16. package/lib/chat/message.js +19 -23
  17. package/lib/chat/message.js.map +1 -1
  18. package/lib/chat/messageTools.js +16 -21
  19. package/lib/chat/messageTools.js.map +1 -1
  20. package/lib/chat/thread.js +24 -24
  21. package/lib/chat/thread.js.map +1 -1
  22. package/lib/create/create.d.ts.map +1 -1
  23. package/lib/create/create.js +9 -9
  24. package/lib/create/create.js.map +1 -1
  25. package/lib/folders.js +2 -6
  26. package/lib/folders.js.map +1 -1
  27. package/lib/footer/index.js +4 -4
  28. package/lib/footer/index.js.map +1 -1
  29. package/lib/header/index.d.ts.map +1 -1
  30. package/lib/header/index.js +11 -8
  31. package/lib/header/index.js.map +1 -1
  32. package/lib/index.d.ts +4 -4
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js +30 -28
  35. package/lib/index.js.map +1 -1
  36. package/lib/login/login.d.ts +130 -0
  37. package/lib/login/login.d.ts.map +1 -0
  38. package/lib/login/login.js +1415 -0
  39. package/lib/login/login.js.map +1 -0
  40. package/lib/matrix/matrix.js +2 -2
  41. package/lib/matrix/matrix.js.map +1 -1
  42. package/lib/messageArea.js +9 -10
  43. package/lib/messageArea.js.map +1 -1
  44. package/lib/pad.js +2 -2
  45. package/lib/pad.js.map +1 -1
  46. package/lib/participation.d.ts.map +1 -1
  47. package/lib/participation.js +4 -5
  48. package/lib/participation.js.map +1 -1
  49. package/lib/preferences.js +8 -8
  50. package/lib/preferences.js.map +1 -1
  51. package/lib/{authn → signup}/config-default.js +0 -0
  52. package/lib/signup/config-default.js.map +1 -0
  53. package/lib/{authn → signup}/signup.js +0 -0
  54. package/lib/signup/signup.js.map +1 -0
  55. package/lib/table.js +2 -3
  56. package/lib/table.js.map +1 -1
  57. package/lib/tabs.js +3 -3
  58. package/lib/tabs.js.map +1 -1
  59. package/lib/utils/index.js +6 -6
  60. package/lib/utils/index.js.map +1 -1
  61. package/lib/utils/label.js +4 -5
  62. package/lib/utils/label.js.map +1 -1
  63. package/lib/versionInfo.js +2 -2
  64. package/lib/versionInfo.js.map +1 -1
  65. package/lib/webpack-bundle.js +8230 -24429
  66. package/lib/webpack-bundle.js.map +1 -1
  67. package/lib/widgets/buttons.js +16 -16
  68. package/lib/widgets/buttons.js.map +1 -1
  69. package/lib/widgets/forms/autocomplete/autocompleteBar.js +2 -2
  70. package/lib/widgets/forms/autocomplete/autocompleteBar.js.map +1 -1
  71. package/lib/widgets/forms/autocomplete/autocompleteField.js +2 -2
  72. package/lib/widgets/forms/autocomplete/autocompleteField.js.map +1 -1
  73. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -2
  74. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  75. package/lib/widgets/forms/autocomplete/language.d.ts.map +1 -1
  76. package/lib/widgets/forms/autocomplete/language.js +7 -10
  77. package/lib/widgets/forms/autocomplete/language.js.map +1 -1
  78. package/lib/widgets/forms/autocomplete/publicData.d.ts +1 -1
  79. package/lib/widgets/forms/autocomplete/publicData.d.ts.map +1 -1
  80. package/lib/widgets/forms/autocomplete/publicData.js +15 -16
  81. package/lib/widgets/forms/autocomplete/publicData.js.map +1 -1
  82. package/lib/widgets/forms/basic.d.ts +1 -1
  83. package/lib/widgets/forms/basic.d.ts.map +1 -1
  84. package/lib/widgets/forms/basic.js +2 -2
  85. package/lib/widgets/forms/basic.js.map +1 -1
  86. package/lib/widgets/forms/comment.d.ts +1 -1
  87. package/lib/widgets/forms/comment.js +3 -3
  88. package/lib/widgets/forms/comment.js.map +1 -1
  89. package/lib/widgets/forms/fieldFunction.js +2 -2
  90. package/lib/widgets/forms/fieldFunction.js.map +1 -1
  91. package/lib/widgets/forms/formStyle.js +3 -3
  92. package/lib/widgets/forms/formStyle.js.map +1 -1
  93. package/lib/widgets/forms.js +10 -10
  94. package/lib/widgets/forms.js.map +1 -1
  95. package/lib/widgets/peoplePicker.js +2 -2
  96. package/lib/widgets/peoplePicker.js.map +1 -1
  97. package/package.json +12 -4
  98. package/lib/authn/authSession.d.ts +0 -4
  99. package/lib/authn/authSession.d.ts.map +0 -1
  100. package/lib/authn/authSession.js +0 -25
  101. package/lib/authn/authSession.js.map +0 -1
  102. package/lib/authn/authn.d.ts +0 -193
  103. package/lib/authn/authn.d.ts.map +0 -1
  104. package/lib/authn/authn.js +0 -2238
  105. package/lib/authn/authn.js.map +0 -1
  106. package/lib/authn/config-default.js.map +0 -1
  107. package/lib/authn/index.d.ts +0 -35
  108. package/lib/authn/index.d.ts.map +0 -1
  109. package/lib/authn/index.js +0 -44
  110. package/lib/authn/index.js.map +0 -1
  111. package/lib/authn/signup.js.map +0 -1
  112. package/lib/authn/types.d.ts +0 -25
  113. package/lib/authn/types.d.ts.map +0 -1
  114. package/lib/authn/types.js +0 -6
  115. package/lib/authn/types.js.map +0 -1
  116. package/lib/logic.d.ts +0 -8
  117. package/lib/logic.d.ts.map +0 -1
  118. package/lib/logic.js +0 -79
  119. package/lib/logic.js.map +0 -1
package/lib/tabs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tabs.ts"],"names":["ContainerElement","HTMLElement","TabWidgetElement","TabElement","tabWidget","options","subject","dom","document","orientation","parseInt","backgroundColor","flipped","vertical","onClose","getColors","selectedColor","color","bodyMainStyle","rootElement","createElement","setAttribute","navElement","appendChild","mainElement","tabContainer","tabElement","bodyContainer","corners","cornersPrepped","concat","slice","cornersStyle","join","margins","marginsPrepped","marginsStyle","paddingStyle","tabStyle","unselectedStyle","selectedStyle","shownStyle","hiddenStyle","refresh","orderedSync","startEmpty","children","length","selectedTab","Array","from","map","tab","firstChild","find","dataset","name","click","addCancelButton","onCloseSet","existingCancelButton","querySelector","removeChild","extraTab","classList","add","tabCancelButton","getAttribute","getItems","items","ordered","store","the","predicate","elements","each","makeNewSlot","item","ele","div","addEventListener","e","metaKey","resetTabStyle","resetBodyStyle","bodyTR","bodyMain","getOrCreateContainerElement","renderTabSettings","altKey","asSettings","innerHTML","renderMain","renderTab","textContent","newBodyMain","slot","i","j","left","right","differ","sameTerm","insertables","newSlot","newBodyDiv","insertBefore","contains","isLight","colorBlend","a","b","mix","ca","cb","res","str","hex","res2","split","h","l","x","total"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;;;;;AAEA;AACA;AACA;IACMA,gB;;;;;;;;;;;;;;;;;;;;kDAAyBC,W;;IAoBlBC,gB;;;;;;;;;;;;;;;;;;;;;;kDAAyBD,W;AAMtC;AACA;AACA;;;;;IACME,U;;;;;;;;;;;;;;;;;;;;;kDAAmBF,W;AAKzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,SAAT,CAAoBC,OAApB,EAA+C;AACpD,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAxB;AACA,MAAMC,GAAG,GAAGF,OAAO,CAACE,GAAR,IAAeC,QAA3B;AACA,MAAMC,WAAW,GAAGC,QAAQ,CAACL,OAAO,CAACI,WAAR,IAAuB,GAAxB,CAA5B;AACA,MAAME,eAAe,GAAGN,OAAO,CAACM,eAAR,IAA2B,SAAnD;AACA,MAAMC,OAAO,GAAGH,WAAW,GAAG,CAA9B;AACA,MAAMI,QAAQ,GAAGJ,WAAW,GAAG,CAA/B;AACA,MAAMK,OAAO,GAAGT,OAAO,CAACS,OAAxB;;AAEA,mBAA+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","sourcesContent":["import { cancelButton } from './widgets'\nimport { label } from './utils'\nimport { NamedNode } from 'rdflib'\nimport { store } from './logic'\n\n/**\n * @ignore\n */\nclass ContainerElement extends HTMLElement {\n asSettings?: boolean\n}\n\ntype TabWidgetOptions = {\n backgroundColor?: string\n dom?: HTMLDocument\n items?: Array<NamedNode>\n onClose?: (event: Event) => void\n ordered?: boolean\n orientation?: '0' | '1' | '2' | '3'\n predicate?: NamedNode\n renderMain?: (bodyMain: HTMLElement, subject: NamedNode) => void\n renderTab?: (tabDiv: HTMLDivElement, subject: NamedNode) => void\n renderTabSettings?: (bodyMain: ContainerElement, subject: NamedNode) => void\n selectedTab?: string\n startEmpty?: boolean\n subject?: NamedNode\n}\n\nexport class TabWidgetElement extends HTMLElement {\n bodyContainer?: HTMLElement\n refresh?: () => void\n tabContainer?: HTMLElement\n}\n\n/**\n * @ignore\n */\nclass TabElement extends HTMLElement {\n bodyTR?: HTMLElement\n subject?: NamedNode\n}\n\n/**\n * Use this widget to generate tabs from triples set in the global store.\n *\n * [Here you can see examples of the tabs](https://solid.github.io/solid-ui/examples/tabs/).\n *\n * It assumes that items to use for tabs will be in a collection by default,\n * e.g.:\n *\n * ```turtle\n * :subject :predicate ( :item1 :item2 ) .\n * ```\n *\n * You can override this by setting `ordered: false`, in which case it expects\n * unordered triples:\n *\n * ```turtle\n * :subject :predicate :item1, :item 2 .\n * ```\n *\n * Triples that are not ordered in collection are in principle not sorted,\n * which means that tabs could change order every time you render the widget.\n * But in this case the widget will try to sort it in order to keep it\n * consistent.\n *\n * In both of these cases you need to define options `subject` and `predicate`\n * to tell the widget which triples it should be looking for.\n *\n * Finally you can set items manually, using the `items` option, e.g.:\n *\n * ```javascript\n * {\n * items: [\n * namedNode('https://domain.tld/#item1'),\n * namedNode('https://domain.tld/#item2')\n * ]\n * }\n * ```\n *\n * When you set items manually you do not need to set `subject` and\n * `predicate`.\n *\n * In any case you probably want to set the renderMain option to specify\n * what should be rendered for the various items, e.g.:\n *\n * ```javascript\n * {\n * renderMain: (bodyMain, subject) => {\n * bodyMain.innerHTML = renderItem(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderItem` is a custom function that you need to define yourself.\n *\n * The option `renderTabSettings` allows you to render a custom view in the\n * body container that is shown when you hold the ALT key and click on a\n * tab. It works very much like the `renderMain` option:\n *\n * ```javascript\n * {\n * renderTabSettings: (bodyMain, subject) => {\n * bodyMain.innerHTML = renderTabSettings(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderTabSettings` is a custom function that you need to define\n * yourself.\n *\n * By default the widget will try to guess the label by using the\n * [[utils.label]] function. If you want to customize this yourself, you can\n * use the `renderTab` option:\n *\n * ```javascript\n * {\n * renderTab: (tabDiv, subject) => {\n * tabDiv.innerText = renderTabText(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderTabText` is a custom function you need to define yourself.\n *\n * The option renderTab is also important if you want to set which tab should\n * be selected once the widget is rendered. By default it will simply select\n * the first tab, but you can override by setting `dataset.name` on the tab\n * and referring to the same string in `selectedTab`:\n *\n * ```javascript\n * {\n * renderTab: (tabDiv, subject) => {\n * tabDiv.dataset.name = subject.uri\n * },\n * selectedTab: item2.uri\n * }\n * ```\n *\n * You can apply a color to use for tabs and border of the container by using\n * option `background-color`. This is #ddddcc by default.\n *\n * You can override the document object that the widget uses to generate DOM\n * elements by setting the option `dom`. This is encouraged to set if you\n * intend your functionality to be used in environments that don't provide\n * a global `document` object.\n *\n * If you want to render a close button next to the tabs you can set option\n * `onClose` which takes a callback function that is triggered when the\n * button is clicked:\n *\n * ```javascript\n * {\n * onClose: (event) => {\n * // do something that hides the widget altogether\n * }\n * }\n * ```\n *\n * The option `orientation` allows you to set which side the tabs should be\n * located: `'0'` = Top, `'1'` = Left, `'2'` = Bottom, `'3'` = Right\n *\n * If you don't want to render anything in the body container by default,\n * you can set the option `startEmpty` to `true`.\n *\n * @param options\n */\nexport function tabWidget (options: TabWidgetOptions) {\n const subject = options.subject\n const dom = options.dom || document\n const orientation = parseInt(options.orientation || '0')\n const backgroundColor = options.backgroundColor || '#ddddcc'\n const flipped = orientation & 2\n const vertical = orientation & 1\n const onClose = options.onClose\n\n const [selectedColor, color] = getColors(backgroundColor)\n const bodyMainStyle = `flex: 2; width: auto; height: 100%; border: 0.1em; border-style: solid; border-color: ${selectedColor}; padding: 1em;`\n const rootElement: TabWidgetElement = dom.createElement('div') // 20200117a\n\n rootElement.setAttribute('style', 'display: flex; height: 100%; width: 100%; flex-direction: ' +\n (vertical ? 'row' : 'column') + (flipped ? '-reverse;' : ';'))\n\n const navElement = rootElement.appendChild(dom.createElement('nav'))\n navElement.setAttribute('style', 'margin: 0;')\n\n const mainElement = rootElement.appendChild(dom.createElement('main'))\n\n mainElement.setAttribute('style', 'margin: 0; width:100%; height: 100%;') // override tabbedtab.css\n const tabContainer = navElement.appendChild(dom.createElement('ul'))\n tabContainer.setAttribute('style', `\n list-style-type: none;\n display: flex;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n flex-direction: ${(vertical ? 'column' : 'row')}\n `)\n\n const tabElement = 'li'\n\n const bodyContainer = mainElement\n rootElement.tabContainer = tabContainer\n rootElement.bodyContainer = bodyContainer\n\n const corners = ['0.2em', '0.2em', '0', '0'] // top left, TR, BR, BL\n const cornersPrepped = corners.concat(corners).slice(orientation, orientation + 4)\n const cornersStyle = `border-radius: ${cornersPrepped.join(' ')};`\n\n const margins = ['0.3em', '0.3em', '0', '0.3em'] // top, right, bottom, left\n const marginsPrepped = margins.concat(margins).slice(orientation, orientation + 4)\n const marginsStyle = `margin: ${marginsPrepped.join(' ')};`\n\n const paddingStyle = `padding: ${marginsPrepped.join(' ')};`\n\n const tabStyle = cornersStyle + `padding: 0.7em; max-width: 20em; color: ${color};`\n const unselectedStyle = `${tabStyle + marginsStyle}opacity: 50%; background-color: ${backgroundColor};`\n const selectedStyle = `${tabStyle + marginsStyle}background-color: ${selectedColor};`\n const shownStyle = 'height: 100%; width: 100%;'\n const hiddenStyle = shownStyle + 'display: none;'\n rootElement.refresh = orderedSync\n orderedSync()\n\n if (!options.startEmpty && tabContainer.children.length && options.selectedTab) {\n const selectedTab = Array.from(tabContainer.children)\n .map(tab => tab.firstChild as HTMLElement)\n .find(tab => tab.dataset.name === options.selectedTab)\n const tab = selectedTab || tabContainer.children[0].firstChild as HTMLButtonElement\n tab.click()\n } else if (!options.startEmpty) {\n (tabContainer.children[0].firstChild as HTMLButtonElement).click() // Open first tab\n }\n return rootElement\n\n function addCancelButton (tabContainer) {\n if (tabContainer.dataset.onCloseSet) {\n // @@ TODO: this is only here to make the browser tests work\n // Discussion at https://github.com/solid/solid-ui/pull/110#issuecomment-527080663\n const existingCancelButton = tabContainer.querySelector('.unstyled')\n tabContainer.removeChild(existingCancelButton)\n }\n const extraTab = dom.createElement(tabElement)\n extraTab.classList.add('unstyled')\n const tabCancelButton = cancelButton(dom, onClose)\n tabCancelButton.setAttribute('style', tabCancelButton.getAttribute('style') + paddingStyle)\n extraTab.appendChild(tabCancelButton)\n tabContainer.appendChild(extraTab)\n tabContainer.dataset.onCloseSet = 'true'\n }\n\n function getItems (): Array<NamedNode> {\n if (options.items) return options.items\n if (options.ordered !== false) {\n // options.ordered defaults to true\n return (store.the(subject, options.predicate) as any).elements\n } else {\n return store.each(subject, options.predicate) as any\n }\n }\n\n function makeNewSlot (item: NamedNode) {\n const ele = dom.createElement(tabElement) as TabElement\n ele.subject = item\n const div = ele.appendChild(dom.createElement('div'))\n div.setAttribute('style', unselectedStyle)\n\n div.addEventListener('click', function (e) {\n if (!e.metaKey) {\n resetTabStyle()\n resetBodyStyle()\n }\n div.setAttribute('style', selectedStyle)\n if (!ele.bodyTR) return\n ele.bodyTR.setAttribute('style', shownStyle)\n const bodyMain = getOrCreateContainerElement(ele)\n if (options.renderTabSettings && e.altKey && ele.subject && bodyMain.asSettings !== true) {\n bodyMain.innerHTML = 'loading settings ...' + item\n options.renderTabSettings(bodyMain, ele.subject)\n bodyMain.asSettings = true\n } else if (options.renderMain && ele.subject && bodyMain.asSettings !== false) {\n bodyMain.innerHTML = 'loading item ...' + item\n options.renderMain(bodyMain, ele.subject)\n bodyMain.asSettings = false\n }\n })\n\n if (options.renderTab) {\n options.renderTab(div, item)\n } else {\n div.textContent = label(item)\n }\n return ele\n\n function getOrCreateContainerElement (ele: TabElement): ContainerElement {\n const bodyMain = ele.bodyTR?.children[0] as ContainerElement\n if (bodyMain) return bodyMain\n const newBodyMain = ele.bodyTR!.appendChild(dom.createElement('main'))\n newBodyMain.setAttribute('style', bodyMainStyle)\n return newBodyMain\n }\n }\n\n // @@ Use common one from utils?\n function orderedSync () {\n const items = getItems()\n let slot: TabElement, i, j, left, right\n let differ = false\n // Find how many match at each end\n for (left = 0; left < tabContainer.children.length; left++) {\n slot = tabContainer.children[left] as TabElement\n if (\n left >= items.length ||\n (slot.subject && !slot.subject.sameTerm(items[left]))\n ) {\n differ = true\n break\n }\n }\n if (!differ && items.length === tabContainer.children.length) {\n return // The two just match in order: a case to optimize for\n }\n for (right = tabContainer.children.length - 1; right >= 0; right--) {\n slot = tabContainer.children[right] as TabElement\n j = right - tabContainer.children.length + items.length\n if (slot.subject && !slot.subject.sameTerm(items[j])) {\n break\n }\n }\n // The elements left ... right in tabContainer.children do not match\n const insertables = items.slice(left, right - tabContainer.children.length + items.length + 1)\n while (right >= left) {\n // remove extra\n tabContainer.removeChild(tabContainer.children[left])\n bodyContainer.removeChild(bodyContainer.children[left])\n right -= 1\n }\n for (i = 0; i < insertables.length; i++) {\n const newSlot = makeNewSlot(insertables[i])\n const newBodyDiv = dom.createElement('div')\n newSlot.bodyTR = newBodyDiv\n if (left === tabContainer.children.length) {\n // None left of original on right\n tabContainer.appendChild(newSlot)\n bodyContainer.appendChild(newBodyDiv)\n } else {\n tabContainer.insertBefore(newSlot, tabContainer.children[left + i])\n bodyContainer.insertBefore(newBodyDiv, bodyContainer.children[left + i])\n }\n }\n if (onClose) {\n addCancelButton(tabContainer)\n }\n }\n\n function resetTabStyle () {\n for (let i = 0; i < tabContainer.children.length; i++) {\n const tab = tabContainer.children[i]\n if (tab.classList.contains('unstyled')) {\n continue\n }\n if (tab.children[0]) {\n tab.children[0].setAttribute('style', unselectedStyle)\n }\n }\n }\n\n function resetBodyStyle () {\n for (let i = 0; i < bodyContainer.children.length; i++) {\n bodyContainer.children[i].setAttribute('style', hiddenStyle)\n }\n }\n}\n\n/**\n * @internal\n */\nfunction getColors (backgroundColor: string): [string, string] {\n return isLight(backgroundColor)\n ? [colorBlend(backgroundColor, '#ffffff', 0.3), '#000000']\n : [colorBlend(backgroundColor, '#000000', 0.3), '#ffffff']\n}\n\n/**\n * @internal\n */\nfunction colorBlend (a: string, b: string, mix: number): string {\n let ca, cb, res\n let str = '#'\n const hex = '0123456789abcdef'\n for (let i = 0; i < 3; i++) {\n ca = parseInt(a.slice(i * 2 + 1, i * 2 + 3), 16)\n cb = parseInt(b.slice(i * 2 + 1, i * 2 + 3), 16)\n res = ca * (1.0 - mix) + cb * mix // @@@ rounding\n const res2 = parseInt(('' + res).split('.')[0]) // @@ ugh\n const h = parseInt(('' + res2 / 16).split('.')[0]) // @@ ugh\n const l = parseInt(('' + (res2 % 16)).split('.')[0]) // @@ ugh\n str += hex[h] + hex[l]\n }\n return str\n}\n\n/**\n * @internal\n */\nfunction isLight (x: string): boolean {\n let total = 0\n for (let i = 0; i < 3; i++) {\n total += parseInt(x.slice(i * 2 + 1, i * 2 + 3), 16)\n }\n return total > 128 * 3\n}\n"],"file":"tabs.js"}
1
+ {"version":3,"sources":["../src/tabs.ts"],"names":["ContainerElement","HTMLElement","TabWidgetElement","TabElement","tabWidget","options","subject","dom","document","orientation","parseInt","backgroundColor","flipped","vertical","onClose","getColors","selectedColor","color","bodyMainStyle","rootElement","createElement","setAttribute","navElement","appendChild","mainElement","tabContainer","tabElement","bodyContainer","corners","cornersPrepped","concat","slice","cornersStyle","join","margins","marginsPrepped","marginsStyle","paddingStyle","tabStyle","unselectedStyle","selectedStyle","shownStyle","hiddenStyle","refresh","orderedSync","startEmpty","children","length","selectedTab","Array","from","map","tab","firstChild","find","dataset","name","click","addCancelButton","onCloseSet","existingCancelButton","querySelector","removeChild","extraTab","classList","add","tabCancelButton","getAttribute","getItems","items","ordered","store","the","predicate","elements","each","makeNewSlot","item","ele","div","addEventListener","e","metaKey","resetTabStyle","resetBodyStyle","bodyTR","bodyMain","getOrCreateContainerElement","renderTabSettings","altKey","asSettings","innerHTML","renderMain","renderTab","textContent","newBodyMain","slot","i","j","left","right","differ","sameTerm","insertables","newSlot","newBodyDiv","insertBefore","contains","isLight","colorBlend","a","b","mix","ca","cb","res","str","hex","res2","split","h","l","x","total"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;;;;;AAEA;AACA;AACA;IACMA,gB;;;;;;;;;;;;;;;;;;;;kDAAyBC,W;;IAoBlBC,gB;;;;;;;;;;;;;;;;;;;;;;kDAAyBD,W;AAMtC;AACA;AACA;;;;;IACME,U;;;;;;;;;;;;;;;;;;;;;kDAAmBF,W;AAKzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,SAAT,CAAoBC,OAApB,EAA+C;AACpD,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAxB;AACA,MAAMC,GAAG,GAAGF,OAAO,CAACE,GAAR,IAAeC,QAA3B;AACA,MAAMC,WAAW,GAAGC,QAAQ,CAACL,OAAO,CAACI,WAAR,IAAuB,GAAxB,CAA5B;AACA,MAAME,eAAe,GAAGN,OAAO,CAACM,eAAR,IAA2B,SAAnD;AACA,MAAMC,OAAO,GAAGH,WAAW,GAAG,CAA9B;AACA,MAAMI,QAAQ,GAAGJ,WAAW,GAAG,CAA/B;AACA,MAAMK,OAAO,GAAGT,OAAO,CAACS,OAAxB;;AAEA,mBAA+BC,SAAS,CAACJ,eAAD,CAAxC;AAAA;AAAA,MAAOK,aAAP;AAAA,MAAsBC,KAAtB;;AACA,MAAMC,aAAa,mGAA4FF,aAA5F,oBAAnB;AACA,MAAMG,WAA6B,GAAGZ,GAAG,CAACa,aAAJ,CAAkB,KAAlB,CAAtC,CAXoD,CAWW;;AAE/DD,EAAAA,WAAW,CAACE,YAAZ,CAAyB,OAAzB,EAAkC,gEAC/BR,QAAQ,GAAG,KAAH,GAAW,QADY,KACCD,OAAO,GAAG,WAAH,GAAiB,GADzB,CAAlC;AAGA,MAAMU,UAAU,GAAGH,WAAW,CAACI,WAAZ,CAAwBhB,GAAG,CAACa,aAAJ,CAAkB,KAAlB,CAAxB,CAAnB;AACAE,EAAAA,UAAU,CAACD,YAAX,CAAwB,OAAxB,EAAiC,YAAjC;AAEA,MAAMG,WAAW,GAAGL,WAAW,CAACI,WAAZ,CAAwBhB,GAAG,CAACa,aAAJ,CAAkB,MAAlB,CAAxB,CAApB;AAEAI,EAAAA,WAAW,CAACH,YAAZ,CAAyB,OAAzB,EAAkC,sCAAlC,EArBoD,CAqBsB;;AAC1E,MAAMI,YAAY,GAAGH,UAAU,CAACC,WAAX,CAAuBhB,GAAG,CAACa,aAAJ,CAAkB,IAAlB,CAAvB,CAArB;AACAK,EAAAA,YAAY,CAACJ,YAAb,CAA0B,OAA1B,wJAOqBR,QAAQ,GAAG,QAAH,GAAc,KAP3C;AAUA,MAAMa,UAAU,GAAG,IAAnB;AAEA,MAAMC,aAAa,GAAGH,WAAtB;AACAL,EAAAA,WAAW,CAACM,YAAZ,GAA2BA,YAA3B;AACAN,EAAAA,WAAW,CAACQ,aAAZ,GAA4BA,aAA5B;AAEA,MAAMC,OAAO,GAAG,CAAC,OAAD,EAAU,OAAV,EAAmB,GAAnB,EAAwB,GAAxB,CAAhB,CAvCoD,CAuCP;;AAC7C,MAAMC,cAAc,GAAGD,OAAO,CAACE,MAAR,CAAeF,OAAf,EAAwBG,KAAxB,CAA8BtB,WAA9B,EAA2CA,WAAW,GAAG,CAAzD,CAAvB;AACA,MAAMuB,YAAY,4BAAqBH,cAAc,CAACI,IAAf,CAAoB,GAApB,CAArB,MAAlB;AAEA,MAAMC,OAAO,GAAG,CAAC,OAAD,EAAU,OAAV,EAAmB,GAAnB,EAAwB,OAAxB,CAAhB,CA3CoD,CA2CH;;AACjD,MAAMC,cAAc,GAAGD,OAAO,CAACJ,MAAR,CAAeI,OAAf,EAAwBH,KAAxB,CAA8BtB,WAA9B,EAA2CA,WAAW,GAAG,CAAzD,CAAvB;AACA,MAAM2B,YAAY,qBAAcD,cAAc,CAACF,IAAf,CAAoB,GAApB,CAAd,MAAlB;AAEA,MAAMI,YAAY,sBAAeF,cAAc,CAACF,IAAf,CAAoB,GAApB,CAAf,MAAlB;AAEA,MAAMK,QAAQ,GAAGN,YAAY,qDAA8Cf,KAA9C,MAA7B;AACA,MAAMsB,eAAe,aAAMD,QAAQ,GAAGF,YAAjB,6CAAgEzB,eAAhE,MAArB;AACA,MAAM6B,aAAa,aAAMF,QAAQ,GAAGF,YAAjB,+BAAkDpB,aAAlD,MAAnB;AACA,MAAMyB,UAAU,GAAG,4BAAnB;AACA,MAAMC,WAAW,GAAGD,UAAU,GAAG,gBAAjC;AACAtB,EAAAA,WAAW,CAACwB,OAAZ,GAAsBC,WAAtB;AACAA,EAAAA,WAAW;;AAEX,MAAI,CAACvC,OAAO,CAACwC,UAAT,IAAuBpB,YAAY,CAACqB,QAAb,CAAsBC,MAA7C,IAAuD1C,OAAO,CAAC2C,WAAnE,EAAgF;AAC9E,QAAMA,WAAW,GAAGC,KAAK,CAACC,IAAN,CAAWzB,YAAY,CAACqB,QAAxB,EACjBK,GADiB,CACb,UAAAC,GAAG;AAAA,aAAIA,GAAG,CAACC,UAAR;AAAA,KADU,EAEjBC,IAFiB,CAEZ,UAAAF,GAAG;AAAA,aAAIA,GAAG,CAACG,OAAJ,CAAYC,IAAZ,KAAqBnD,OAAO,CAAC2C,WAAjC;AAAA,KAFS,CAApB;AAGA,QAAMI,GAAG,GAAGJ,WAAW,IAAIvB,YAAY,CAACqB,QAAb,CAAsB,CAAtB,EAAyBO,UAApD;AACAD,IAAAA,GAAG,CAACK,KAAJ;AACD,GAND,MAMO,IAAI,CAACpD,OAAO,CAACwC,UAAb,EAAyB;AAC7BpB,IAAAA,YAAY,CAACqB,QAAb,CAAsB,CAAtB,EAAyBO,UAA1B,CAA2DI,KAA3D,GAD8B,CACqC;AACpE;;AACD,SAAOtC,WAAP;;AAEA,WAASuC,eAAT,CAA0BjC,YAA1B,EAAwC;AACtC,QAAIA,YAAY,CAAC8B,OAAb,CAAqBI,UAAzB,EAAqC;AACnC;AACA;AACA,UAAMC,oBAAoB,GAAGnC,YAAY,CAACoC,aAAb,CAA2B,WAA3B,CAA7B;AACApC,MAAAA,YAAY,CAACqC,WAAb,CAAyBF,oBAAzB;AACD;;AACD,QAAMG,QAAQ,GAAGxD,GAAG,CAACa,aAAJ,CAAkBM,UAAlB,CAAjB;AACAqC,IAAAA,QAAQ,CAACC,SAAT,CAAmBC,GAAnB,CAAuB,UAAvB;AACA,QAAMC,eAAe,GAAG,2BAAa3D,GAAb,EAAkBO,OAAlB,CAAxB;AACAoD,IAAAA,eAAe,CAAC7C,YAAhB,CAA6B,OAA7B,EAAsC6C,eAAe,CAACC,YAAhB,CAA6B,OAA7B,IAAwC9B,YAA9E;AACA0B,IAAAA,QAAQ,CAACxC,WAAT,CAAqB2C,eAArB;AACAzC,IAAAA,YAAY,CAACF,WAAb,CAAyBwC,QAAzB;AACAtC,IAAAA,YAAY,CAAC8B,OAAb,CAAqBI,UAArB,GAAkC,MAAlC;AACD;;AAED,WAASS,QAAT,GAAuC;AACrC,QAAI/D,OAAO,CAACgE,KAAZ,EAAmB,OAAOhE,OAAO,CAACgE,KAAf;;AACnB,QAAIhE,OAAO,CAACiE,OAAR,KAAoB,KAAxB,EAA+B;AAC7B;AACA,aAAQC,kBAAMC,GAAN,CAAUlE,OAAV,EAAmBD,OAAO,CAACoE,SAA3B,CAAD,CAA+CC,QAAtD;AACD,KAHD,MAGO;AACL,aAAOH,kBAAMI,IAAN,CAAWrE,OAAX,EAAoBD,OAAO,CAACoE,SAA5B,CAAP;AACD;AACF;;AAED,WAASG,WAAT,CAAsBC,IAAtB,EAAuC;AACrC,QAAMC,GAAG,GAAGvE,GAAG,CAACa,aAAJ,CAAkBM,UAAlB,CAAZ;AACAoD,IAAAA,GAAG,CAACxE,OAAJ,GAAcuE,IAAd;AACA,QAAME,GAAG,GAAGD,GAAG,CAACvD,WAAJ,CAAgBhB,GAAG,CAACa,aAAJ,CAAkB,KAAlB,CAAhB,CAAZ;AACA2D,IAAAA,GAAG,CAAC1D,YAAJ,CAAiB,OAAjB,EAA0BkB,eAA1B;AAEAwC,IAAAA,GAAG,CAACC,gBAAJ,CAAqB,OAArB,EAA8B,UAAUC,CAAV,EAAa;AACzC,UAAI,CAACA,CAAC,CAACC,OAAP,EAAgB;AACdC,QAAAA,aAAa;AACbC,QAAAA,cAAc;AACf;;AACDL,MAAAA,GAAG,CAAC1D,YAAJ,CAAiB,OAAjB,EAA0BmB,aAA1B;AACA,UAAI,CAACsC,GAAG,CAACO,MAAT,EAAiB;AACjBP,MAAAA,GAAG,CAACO,MAAJ,CAAWhE,YAAX,CAAwB,OAAxB,EAAiCoB,UAAjC;AACA,UAAM6C,QAAQ,GAAGC,2BAA2B,CAACT,GAAD,CAA5C;;AACA,UAAIzE,OAAO,CAACmF,iBAAR,IAA6BP,CAAC,CAACQ,MAA/B,IAAyCX,GAAG,CAACxE,OAA7C,IAAwDgF,QAAQ,CAACI,UAAT,KAAwB,IAApF,EAA0F;AACxFJ,QAAAA,QAAQ,CAACK,SAAT,GAAqB,yBAAyBd,IAA9C;AACAxE,QAAAA,OAAO,CAACmF,iBAAR,CAA0BF,QAA1B,EAAoCR,GAAG,CAACxE,OAAxC;AACAgF,QAAAA,QAAQ,CAACI,UAAT,GAAsB,IAAtB;AACD,OAJD,MAIO,IAAIrF,OAAO,CAACuF,UAAR,IAAsBd,GAAG,CAACxE,OAA1B,IAAqCgF,QAAQ,CAACI,UAAT,KAAwB,KAAjE,EAAwE;AAC7EJ,QAAAA,QAAQ,CAACK,SAAT,GAAqB,qBAAqBd,IAA1C;AACAxE,QAAAA,OAAO,CAACuF,UAAR,CAAmBN,QAAnB,EAA6BR,GAAG,CAACxE,OAAjC;AACAgF,QAAAA,QAAQ,CAACI,UAAT,GAAsB,KAAtB;AACD;AACF,KAlBD;;AAoBA,QAAIrF,OAAO,CAACwF,SAAZ,EAAuB;AACrBxF,MAAAA,OAAO,CAACwF,SAAR,CAAkBd,GAAlB,EAAuBF,IAAvB;AACD,KAFD,MAEO;AACLE,MAAAA,GAAG,CAACe,WAAJ,GAAkB,kBAAMjB,IAAN,CAAlB;AACD;;AACD,WAAOC,GAAP;;AAEA,aAASS,2BAAT,CAAsCT,GAAtC,EAAyE;AAAA;;AACvE,UAAMQ,QAAQ,kBAAGR,GAAG,CAACO,MAAP,gDAAG,YAAYvC,QAAZ,CAAqB,CAArB,CAAjB;AACA,UAAIwC,QAAJ,EAAc,OAAOA,QAAP;AACd,UAAMS,WAAW,GAAGjB,GAAG,CAACO,MAAJ,CAAY9D,WAAZ,CAAwBhB,GAAG,CAACa,aAAJ,CAAkB,MAAlB,CAAxB,CAApB;AACA2E,MAAAA,WAAW,CAAC1E,YAAZ,CAAyB,OAAzB,EAAkCH,aAAlC;AACA,aAAO6E,WAAP;AACD;AACF,GAtImD,CAwIpD;;;AACA,WAASnD,WAAT,GAAwB;AACtB,QAAMyB,KAAK,GAAGD,QAAQ,EAAtB;AACA,QAAI4B,IAAJ,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BC,IAA5B,EAAkCC,KAAlC;AACA,QAAIC,MAAM,GAAG,KAAb,CAHsB,CAItB;;AACA,SAAKF,IAAI,GAAG,CAAZ,EAAeA,IAAI,GAAG1E,YAAY,CAACqB,QAAb,CAAsBC,MAA5C,EAAoDoD,IAAI,EAAxD,EAA4D;AAC1DH,MAAAA,IAAI,GAAGvE,YAAY,CAACqB,QAAb,CAAsBqD,IAAtB,CAAP;;AACA,UACEA,IAAI,IAAI9B,KAAK,CAACtB,MAAd,IACCiD,IAAI,CAAC1F,OAAL,IAAgB,CAAC0F,IAAI,CAAC1F,OAAL,CAAagG,QAAb,CAAsBjC,KAAK,CAAC8B,IAAD,CAA3B,CAFpB,EAGE;AACAE,QAAAA,MAAM,GAAG,IAAT;AACA;AACD;AACF;;AACD,QAAI,CAACA,MAAD,IAAWhC,KAAK,CAACtB,MAAN,KAAiBtB,YAAY,CAACqB,QAAb,CAAsBC,MAAtD,EAA8D;AAC5D,aAD4D,CACrD;AACR;;AACD,SAAKqD,KAAK,GAAG3E,YAAY,CAACqB,QAAb,CAAsBC,MAAtB,GAA+B,CAA5C,EAA+CqD,KAAK,IAAI,CAAxD,EAA2DA,KAAK,EAAhE,EAAoE;AAClEJ,MAAAA,IAAI,GAAGvE,YAAY,CAACqB,QAAb,CAAsBsD,KAAtB,CAAP;AACAF,MAAAA,CAAC,GAAGE,KAAK,GAAG3E,YAAY,CAACqB,QAAb,CAAsBC,MAA9B,GAAuCsB,KAAK,CAACtB,MAAjD;;AACA,UAAIiD,IAAI,CAAC1F,OAAL,IAAgB,CAAC0F,IAAI,CAAC1F,OAAL,CAAagG,QAAb,CAAsBjC,KAAK,CAAC6B,CAAD,CAA3B,CAArB,EAAsD;AACpD;AACD;AACF,KAxBqB,CAyBtB;;;AACA,QAAMK,WAAW,GAAGlC,KAAK,CAACtC,KAAN,CAAYoE,IAAZ,EAAkBC,KAAK,GAAG3E,YAAY,CAACqB,QAAb,CAAsBC,MAA9B,GAAuCsB,KAAK,CAACtB,MAA7C,GAAsD,CAAxE,CAApB;;AACA,WAAOqD,KAAK,IAAID,IAAhB,EAAsB;AACpB;AACA1E,MAAAA,YAAY,CAACqC,WAAb,CAAyBrC,YAAY,CAACqB,QAAb,CAAsBqD,IAAtB,CAAzB;AACAxE,MAAAA,aAAa,CAACmC,WAAd,CAA0BnC,aAAa,CAACmB,QAAd,CAAuBqD,IAAvB,CAA1B;AACAC,MAAAA,KAAK,IAAI,CAAT;AACD;;AACD,SAAKH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGM,WAAW,CAACxD,MAA5B,EAAoCkD,CAAC,EAArC,EAAyC;AACvC,UAAMO,OAAO,GAAG5B,WAAW,CAAC2B,WAAW,CAACN,CAAD,CAAZ,CAA3B;AACA,UAAMQ,UAAU,GAAGlG,GAAG,CAACa,aAAJ,CAAkB,KAAlB,CAAnB;AACAoF,MAAAA,OAAO,CAACnB,MAAR,GAAiBoB,UAAjB;;AACA,UAAIN,IAAI,KAAK1E,YAAY,CAACqB,QAAb,CAAsBC,MAAnC,EAA2C;AACzC;AACAtB,QAAAA,YAAY,CAACF,WAAb,CAAyBiF,OAAzB;AACA7E,QAAAA,aAAa,CAACJ,WAAd,CAA0BkF,UAA1B;AACD,OAJD,MAIO;AACLhF,QAAAA,YAAY,CAACiF,YAAb,CAA0BF,OAA1B,EAAmC/E,YAAY,CAACqB,QAAb,CAAsBqD,IAAI,GAAGF,CAA7B,CAAnC;AACAtE,QAAAA,aAAa,CAAC+E,YAAd,CAA2BD,UAA3B,EAAuC9E,aAAa,CAACmB,QAAd,CAAuBqD,IAAI,GAAGF,CAA9B,CAAvC;AACD;AACF;;AACD,QAAInF,OAAJ,EAAa;AACX4C,MAAAA,eAAe,CAACjC,YAAD,CAAf;AACD;AACF;;AAED,WAAS0D,aAAT,GAA0B;AACxB,SAAK,IAAIc,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGxE,YAAY,CAACqB,QAAb,CAAsBC,MAA1C,EAAkDkD,CAAC,EAAnD,EAAuD;AACrD,UAAM7C,IAAG,GAAG3B,YAAY,CAACqB,QAAb,CAAsBmD,CAAtB,CAAZ;;AACA,UAAI7C,IAAG,CAACY,SAAJ,CAAc2C,QAAd,CAAuB,UAAvB,CAAJ,EAAwC;AACtC;AACD;;AACD,UAAIvD,IAAG,CAACN,QAAJ,CAAa,CAAb,CAAJ,EAAqB;AACnBM,QAAAA,IAAG,CAACN,QAAJ,CAAa,CAAb,EAAgBzB,YAAhB,CAA6B,OAA7B,EAAsCkB,eAAtC;AACD;AACF;AACF;;AAED,WAAS6C,cAAT,GAA2B;AACzB,SAAK,IAAIa,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGtE,aAAa,CAACmB,QAAd,CAAuBC,MAA3C,EAAmDkD,CAAC,EAApD,EAAwD;AACtDtE,MAAAA,aAAa,CAACmB,QAAd,CAAuBmD,CAAvB,EAA0B5E,YAA1B,CAAuC,OAAvC,EAAgDqB,WAAhD;AACD;AACF;AACF;AAED;AACA;AACA;;;AACA,SAAS3B,SAAT,CAAoBJ,eAApB,EAA+D;AAC7D,SAAOiG,OAAO,CAACjG,eAAD,CAAP,GACH,CAACkG,UAAU,CAAClG,eAAD,EAAkB,SAAlB,EAA6B,GAA7B,CAAX,EAA8C,SAA9C,CADG,GAEH,CAACkG,UAAU,CAAClG,eAAD,EAAkB,SAAlB,EAA6B,GAA7B,CAAX,EAA8C,SAA9C,CAFJ;AAGD;AAED;AACA;AACA;;;AACA,SAASkG,UAAT,CAAqBC,CAArB,EAAgCC,CAAhC,EAA2CC,GAA3C,EAAgE;AAC9D,MAAIC,EAAJ,EAAQC,EAAR,EAAYC,GAAZ;AACA,MAAIC,GAAG,GAAG,GAAV;AACA,MAAMC,GAAG,GAAG,kBAAZ;;AACA,OAAK,IAAIpB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1BgB,IAAAA,EAAE,GAAGvG,QAAQ,CAACoG,CAAC,CAAC/E,KAAF,CAAQkE,CAAC,GAAG,CAAJ,GAAQ,CAAhB,EAAmBA,CAAC,GAAG,CAAJ,GAAQ,CAA3B,CAAD,EAAgC,EAAhC,CAAb;AACAiB,IAAAA,EAAE,GAAGxG,QAAQ,CAACqG,CAAC,CAAChF,KAAF,CAAQkE,CAAC,GAAG,CAAJ,GAAQ,CAAhB,EAAmBA,CAAC,GAAG,CAAJ,GAAQ,CAA3B,CAAD,EAAgC,EAAhC,CAAb;AACAkB,IAAAA,GAAG,GAAGF,EAAE,IAAI,MAAMD,GAAV,CAAF,GAAmBE,EAAE,GAAGF,GAA9B,CAH0B,CAGQ;;AAClC,QAAMM,IAAI,GAAG5G,QAAQ,CAAC,CAAC,KAAKyG,GAAN,EAAWI,KAAX,CAAiB,GAAjB,EAAsB,CAAtB,CAAD,CAArB,CAJ0B,CAIsB;;AAChD,QAAMC,CAAC,GAAG9G,QAAQ,CAAC,CAAC,KAAK4G,IAAI,GAAG,EAAb,EAAiBC,KAAjB,CAAuB,GAAvB,EAA4B,CAA5B,CAAD,CAAlB,CAL0B,CAKyB;;AACnD,QAAME,CAAC,GAAG/G,QAAQ,CAAC,CAAC,KAAM4G,IAAI,GAAG,EAAd,EAAmBC,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAAD,CAAlB,CAN0B,CAM2B;;AACrDH,IAAAA,GAAG,IAAIC,GAAG,CAACG,CAAD,CAAH,GAASH,GAAG,CAACI,CAAD,CAAnB;AACD;;AACD,SAAOL,GAAP;AACD;AAED;AACA;AACA;;;AACA,SAASR,OAAT,CAAkBc,CAAlB,EAAsC;AACpC,MAAIC,KAAK,GAAG,CAAZ;;AACA,OAAK,IAAI1B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1B0B,IAAAA,KAAK,IAAIjH,QAAQ,CAACgH,CAAC,CAAC3F,KAAF,CAAQkE,CAAC,GAAG,CAAJ,GAAQ,CAAhB,EAAmBA,CAAC,GAAG,CAAJ,GAAQ,CAA3B,CAAD,EAAgC,EAAhC,CAAjB;AACD;;AACD,SAAO0B,KAAK,GAAG,MAAM,CAArB;AACD","sourcesContent":["import { cancelButton } from './widgets'\nimport { label } from './utils'\nimport { NamedNode } from 'rdflib'\nimport { store } from 'solid-logic'\n\n/**\n * @ignore\n */\nclass ContainerElement extends HTMLElement {\n asSettings?: boolean\n}\n\ntype TabWidgetOptions = {\n backgroundColor?: string\n dom?: HTMLDocument\n items?: Array<NamedNode>\n onClose?: (event: Event) => void\n ordered?: boolean\n orientation?: '0' | '1' | '2' | '3'\n predicate?: NamedNode\n renderMain?: (bodyMain: HTMLElement, subject: NamedNode) => void\n renderTab?: (tabDiv: HTMLDivElement, subject: NamedNode) => void\n renderTabSettings?: (bodyMain: ContainerElement, subject: NamedNode) => void\n selectedTab?: string\n startEmpty?: boolean\n subject?: NamedNode\n}\n\nexport class TabWidgetElement extends HTMLElement {\n bodyContainer?: HTMLElement\n refresh?: () => void\n tabContainer?: HTMLElement\n}\n\n/**\n * @ignore\n */\nclass TabElement extends HTMLElement {\n bodyTR?: HTMLElement\n subject?: NamedNode\n}\n\n/**\n * Use this widget to generate tabs from triples set in the global store.\n *\n * [Here you can see examples of the tabs](https://solid.github.io/solid-ui/examples/tabs/).\n *\n * It assumes that items to use for tabs will be in a collection by default,\n * e.g.:\n *\n * ```turtle\n * :subject :predicate ( :item1 :item2 ) .\n * ```\n *\n * You can override this by setting `ordered: false`, in which case it expects\n * unordered triples:\n *\n * ```turtle\n * :subject :predicate :item1, :item 2 .\n * ```\n *\n * Triples that are not ordered in collection are in principle not sorted,\n * which means that tabs could change order every time you render the widget.\n * But in this case the widget will try to sort it in order to keep it\n * consistent.\n *\n * In both of these cases you need to define options `subject` and `predicate`\n * to tell the widget which triples it should be looking for.\n *\n * Finally you can set items manually, using the `items` option, e.g.:\n *\n * ```javascript\n * {\n * items: [\n * namedNode('https://domain.tld/#item1'),\n * namedNode('https://domain.tld/#item2')\n * ]\n * }\n * ```\n *\n * When you set items manually you do not need to set `subject` and\n * `predicate`.\n *\n * In any case you probably want to set the renderMain option to specify\n * what should be rendered for the various items, e.g.:\n *\n * ```javascript\n * {\n * renderMain: (bodyMain, subject) => {\n * bodyMain.innerHTML = renderItem(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderItem` is a custom function that you need to define yourself.\n *\n * The option `renderTabSettings` allows you to render a custom view in the\n * body container that is shown when you hold the ALT key and click on a\n * tab. It works very much like the `renderMain` option:\n *\n * ```javascript\n * {\n * renderTabSettings: (bodyMain, subject) => {\n * bodyMain.innerHTML = renderTabSettings(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderTabSettings` is a custom function that you need to define\n * yourself.\n *\n * By default the widget will try to guess the label by using the\n * [[utils.label]] function. If you want to customize this yourself, you can\n * use the `renderTab` option:\n *\n * ```javascript\n * {\n * renderTab: (tabDiv, subject) => {\n * tabDiv.innerText = renderTabText(subject)\n * }\n * }\n * ```\n *\n * **Note:** `renderTabText` is a custom function you need to define yourself.\n *\n * The option renderTab is also important if you want to set which tab should\n * be selected once the widget is rendered. By default it will simply select\n * the first tab, but you can override by setting `dataset.name` on the tab\n * and referring to the same string in `selectedTab`:\n *\n * ```javascript\n * {\n * renderTab: (tabDiv, subject) => {\n * tabDiv.dataset.name = subject.uri\n * },\n * selectedTab: item2.uri\n * }\n * ```\n *\n * You can apply a color to use for tabs and border of the container by using\n * option `background-color`. This is #ddddcc by default.\n *\n * You can override the document object that the widget uses to generate DOM\n * elements by setting the option `dom`. This is encouraged to set if you\n * intend your functionality to be used in environments that don't provide\n * a global `document` object.\n *\n * If you want to render a close button next to the tabs you can set option\n * `onClose` which takes a callback function that is triggered when the\n * button is clicked:\n *\n * ```javascript\n * {\n * onClose: (event) => {\n * // do something that hides the widget altogether\n * }\n * }\n * ```\n *\n * The option `orientation` allows you to set which side the tabs should be\n * located: `'0'` = Top, `'1'` = Left, `'2'` = Bottom, `'3'` = Right\n *\n * If you don't want to render anything in the body container by default,\n * you can set the option `startEmpty` to `true`.\n *\n * @param options\n */\nexport function tabWidget (options: TabWidgetOptions) {\n const subject = options.subject\n const dom = options.dom || document\n const orientation = parseInt(options.orientation || '0')\n const backgroundColor = options.backgroundColor || '#ddddcc'\n const flipped = orientation & 2\n const vertical = orientation & 1\n const onClose = options.onClose\n\n const [selectedColor, color] = getColors(backgroundColor)\n const bodyMainStyle = `flex: 2; width: auto; height: 100%; border: 0.1em; border-style: solid; border-color: ${selectedColor}; padding: 1em;`\n const rootElement: TabWidgetElement = dom.createElement('div') // 20200117a\n\n rootElement.setAttribute('style', 'display: flex; height: 100%; width: 100%; flex-direction: ' +\n (vertical ? 'row' : 'column') + (flipped ? '-reverse;' : ';'))\n\n const navElement = rootElement.appendChild(dom.createElement('nav'))\n navElement.setAttribute('style', 'margin: 0;')\n\n const mainElement = rootElement.appendChild(dom.createElement('main'))\n\n mainElement.setAttribute('style', 'margin: 0; width:100%; height: 100%;') // override tabbedtab.css\n const tabContainer = navElement.appendChild(dom.createElement('ul'))\n tabContainer.setAttribute('style', `\n list-style-type: none;\n display: flex;\n height: 100%;\n width: 100%;\n margin: 0;\n padding: 0;\n flex-direction: ${(vertical ? 'column' : 'row')}\n `)\n\n const tabElement = 'li'\n\n const bodyContainer = mainElement\n rootElement.tabContainer = tabContainer\n rootElement.bodyContainer = bodyContainer\n\n const corners = ['0.2em', '0.2em', '0', '0'] // top left, TR, BR, BL\n const cornersPrepped = corners.concat(corners).slice(orientation, orientation + 4)\n const cornersStyle = `border-radius: ${cornersPrepped.join(' ')};`\n\n const margins = ['0.3em', '0.3em', '0', '0.3em'] // top, right, bottom, left\n const marginsPrepped = margins.concat(margins).slice(orientation, orientation + 4)\n const marginsStyle = `margin: ${marginsPrepped.join(' ')};`\n\n const paddingStyle = `padding: ${marginsPrepped.join(' ')};`\n\n const tabStyle = cornersStyle + `padding: 0.7em; max-width: 20em; color: ${color};`\n const unselectedStyle = `${tabStyle + marginsStyle}opacity: 50%; background-color: ${backgroundColor};`\n const selectedStyle = `${tabStyle + marginsStyle}background-color: ${selectedColor};`\n const shownStyle = 'height: 100%; width: 100%;'\n const hiddenStyle = shownStyle + 'display: none;'\n rootElement.refresh = orderedSync\n orderedSync()\n\n if (!options.startEmpty && tabContainer.children.length && options.selectedTab) {\n const selectedTab = Array.from(tabContainer.children)\n .map(tab => tab.firstChild as HTMLElement)\n .find(tab => tab.dataset.name === options.selectedTab)\n const tab = selectedTab || tabContainer.children[0].firstChild as HTMLButtonElement\n tab.click()\n } else if (!options.startEmpty) {\n (tabContainer.children[0].firstChild as HTMLButtonElement).click() // Open first tab\n }\n return rootElement\n\n function addCancelButton (tabContainer) {\n if (tabContainer.dataset.onCloseSet) {\n // @@ TODO: this is only here to make the browser tests work\n // Discussion at https://github.com/solid/solid-ui/pull/110#issuecomment-527080663\n const existingCancelButton = tabContainer.querySelector('.unstyled')\n tabContainer.removeChild(existingCancelButton)\n }\n const extraTab = dom.createElement(tabElement)\n extraTab.classList.add('unstyled')\n const tabCancelButton = cancelButton(dom, onClose)\n tabCancelButton.setAttribute('style', tabCancelButton.getAttribute('style') + paddingStyle)\n extraTab.appendChild(tabCancelButton)\n tabContainer.appendChild(extraTab)\n tabContainer.dataset.onCloseSet = 'true'\n }\n\n function getItems (): Array<NamedNode> {\n if (options.items) return options.items\n if (options.ordered !== false) {\n // options.ordered defaults to true\n return (store.the(subject, options.predicate) as any).elements\n } else {\n return store.each(subject, options.predicate) as any\n }\n }\n\n function makeNewSlot (item: NamedNode) {\n const ele = dom.createElement(tabElement) as TabElement\n ele.subject = item\n const div = ele.appendChild(dom.createElement('div'))\n div.setAttribute('style', unselectedStyle)\n\n div.addEventListener('click', function (e) {\n if (!e.metaKey) {\n resetTabStyle()\n resetBodyStyle()\n }\n div.setAttribute('style', selectedStyle)\n if (!ele.bodyTR) return\n ele.bodyTR.setAttribute('style', shownStyle)\n const bodyMain = getOrCreateContainerElement(ele)\n if (options.renderTabSettings && e.altKey && ele.subject && bodyMain.asSettings !== true) {\n bodyMain.innerHTML = 'loading settings ...' + item\n options.renderTabSettings(bodyMain, ele.subject)\n bodyMain.asSettings = true\n } else if (options.renderMain && ele.subject && bodyMain.asSettings !== false) {\n bodyMain.innerHTML = 'loading item ...' + item\n options.renderMain(bodyMain, ele.subject)\n bodyMain.asSettings = false\n }\n })\n\n if (options.renderTab) {\n options.renderTab(div, item)\n } else {\n div.textContent = label(item)\n }\n return ele\n\n function getOrCreateContainerElement (ele: TabElement): ContainerElement {\n const bodyMain = ele.bodyTR?.children[0] as ContainerElement\n if (bodyMain) return bodyMain\n const newBodyMain = ele.bodyTR!.appendChild(dom.createElement('main'))\n newBodyMain.setAttribute('style', bodyMainStyle)\n return newBodyMain\n }\n }\n\n // @@ Use common one from utils?\n function orderedSync () {\n const items = getItems()\n let slot: TabElement, i, j, left, right\n let differ = false\n // Find how many match at each end\n for (left = 0; left < tabContainer.children.length; left++) {\n slot = tabContainer.children[left] as TabElement\n if (\n left >= items.length ||\n (slot.subject && !slot.subject.sameTerm(items[left]))\n ) {\n differ = true\n break\n }\n }\n if (!differ && items.length === tabContainer.children.length) {\n return // The two just match in order: a case to optimize for\n }\n for (right = tabContainer.children.length - 1; right >= 0; right--) {\n slot = tabContainer.children[right] as TabElement\n j = right - tabContainer.children.length + items.length\n if (slot.subject && !slot.subject.sameTerm(items[j])) {\n break\n }\n }\n // The elements left ... right in tabContainer.children do not match\n const insertables = items.slice(left, right - tabContainer.children.length + items.length + 1)\n while (right >= left) {\n // remove extra\n tabContainer.removeChild(tabContainer.children[left])\n bodyContainer.removeChild(bodyContainer.children[left])\n right -= 1\n }\n for (i = 0; i < insertables.length; i++) {\n const newSlot = makeNewSlot(insertables[i])\n const newBodyDiv = dom.createElement('div')\n newSlot.bodyTR = newBodyDiv\n if (left === tabContainer.children.length) {\n // None left of original on right\n tabContainer.appendChild(newSlot)\n bodyContainer.appendChild(newBodyDiv)\n } else {\n tabContainer.insertBefore(newSlot, tabContainer.children[left + i])\n bodyContainer.insertBefore(newBodyDiv, bodyContainer.children[left + i])\n }\n }\n if (onClose) {\n addCancelButton(tabContainer)\n }\n }\n\n function resetTabStyle () {\n for (let i = 0; i < tabContainer.children.length; i++) {\n const tab = tabContainer.children[i]\n if (tab.classList.contains('unstyled')) {\n continue\n }\n if (tab.children[0]) {\n tab.children[0].setAttribute('style', unselectedStyle)\n }\n }\n }\n\n function resetBodyStyle () {\n for (let i = 0; i < bodyContainer.children.length; i++) {\n bodyContainer.children[i].setAttribute('style', hiddenStyle)\n }\n }\n}\n\n/**\n * @internal\n */\nfunction getColors (backgroundColor: string): [string, string] {\n return isLight(backgroundColor)\n ? [colorBlend(backgroundColor, '#ffffff', 0.3), '#000000']\n : [colorBlend(backgroundColor, '#000000', 0.3), '#ffffff']\n}\n\n/**\n * @internal\n */\nfunction colorBlend (a: string, b: string, mix: number): string {\n let ca, cb, res\n let str = '#'\n const hex = '0123456789abcdef'\n for (let i = 0; i < 3; i++) {\n ca = parseInt(a.slice(i * 2 + 1, i * 2 + 3), 16)\n cb = parseInt(b.slice(i * 2 + 1, i * 2 + 3), 16)\n res = ca * (1.0 - mix) + cb * mix // @@@ rounding\n const res2 = parseInt(('' + res).split('.')[0]) // @@ ugh\n const h = parseInt(('' + res2 / 16).split('.')[0]) // @@ ugh\n const l = parseInt(('' + (res2 % 16)).split('.')[0]) // @@ ugh\n str += hex[h] + hex[l]\n }\n return str\n}\n\n/**\n * @internal\n */\nfunction isLight (x: string): boolean {\n let total = 0\n for (let i = 0; i < 3; i++) {\n total += parseInt(x.slice(i * 2 + 1, i * 2 + 3), 16)\n }\n return total > 128 * 3\n}\n"],"file":"tabs.js"}
@@ -42,7 +42,7 @@ exports.syncTableToArrayReOrdered = syncTableToArrayReOrdered;
42
42
 
43
43
  var log = _interopRequireWildcard(require("../log"));
44
44
 
45
- var _logic = require("../logic");
45
+ var _solidLogic = require("solid-logic");
46
46
 
47
47
  var ns = _interopRequireWildcard(require("../ns"));
48
48
 
@@ -63,8 +63,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
63
63
  var UI = {
64
64
  log: log,
65
65
  ns: ns,
66
- rdf: rdf,
67
- store: _logic.store
66
+ rdf: rdf
68
67
  };
69
68
  var nextVariable = 0;
70
69
 
@@ -373,7 +372,7 @@ function getTerm(target) {
373
372
  case '':
374
373
  case 'selected':
375
374
  // header TD
376
- return getAbout(UI.store, target);
375
+ return getAbout(_solidLogic.store, target);
377
376
  // kb to be changed
378
377
 
379
378
  case 'undetermined selected':
@@ -564,7 +563,7 @@ function ontologyLabel(term) {
564
563
  }
565
564
 
566
565
  function labelWithOntology(x, initialCap) {
567
- var t = UI.store.findTypeURIs(x);
566
+ var t = _solidLogic.store.findTypeURIs(x);
568
567
 
569
568
  if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {
570
569
  return (0, _label.label)(x, initialCap) + ' (' + ontologyLabel(x) + ')';
@@ -592,7 +591,8 @@ function predicateLabel(p, inverse) {
592
591
 
593
592
  if (inverse) {
594
593
  // If we know an inverse predicate, use its label
595
- var ip = UI.store.any(p, UI.ns.owl('inverseOf')) || UI.store.any(undefined, UI.ns.owl('inverseOf'), p);
594
+ var ip = _solidLogic.store.any(p, UI.ns.owl('inverseOf')) || _solidLogic.store.any(undefined, UI.ns.owl('inverseOf'), p);
595
+
596
596
  if (ip) return (0, _label.label)(ip);
597
597
  if (lab === 'type') return '...'; // Not "is type of"
598
598
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/index.js"],"names":["UI","log","ns","rdf","store","nextVariable","newVariableName","clearVariableNames","audioContext","AudioContext","window","webkitAudioContext","beep","ContextClass","ctx","duration","frequency","type","finishedCallback","osc","createOscillator","value","connect","destination","start","stop","hashColor","who","uri","hash","x","split","reduce","a","b","charCodeAt","toString","genUuid","replace","c","r","Math","random","v","syncTableToArray","table","things","createNewRow","foundOne","row","i","children","length","trashMe","g","thing","subject","sameTerm","newRow","appendChild","ele","insertBefore","removeChild","syncTableToArrayReOrdered","elementMap","toNT","existingRow","before","stackString","e","str","stack","lines","toPrint","line","indexOf","charAt","chunks","push","emptyNode","node","nodes","childNodes","len","getTarget","target","event","srcElement","nodeType","parentNode","ancestor","tagName","level","undefined","getAbout","kb","aa","getAttribute","fromNT","debug","getTerm","statementTr","st","AJAR_statement","className","predicate","AJAR_inverse","object","nextSibling","include","document","linkstr","lnk","createElement","setAttribute","addLoadEvent","func","oldonload","onload","findPos","obj","myDocument","ownerDocument","DocBox","documentElement","getBoundingClientRect","box","left","top","getEyeFocus","element","instantly","isBottom","myWindow","elementPosY","appContext","SolidAppContext","scrollDiff","scroll","totalScroll","scrollY","scrollBy","clientHeight","innerHeight","id","setInterval","scrollAmount","times","clearInterval","AJARImage","src","alt","tt","doc","image","addEventListener","clipboardData","setData","preventDefault","shortName","p","slice","namespaces","prefixes","pok","canUse","pp","lastIndexOf","slash","prefixchars","ontologyLabel","term","s","part","labelWithOntology","initialCap","t","findTypeURIs","rdfs","escapeForXML","labelForXML","predicateLabelForXML","inverse","predicateLabel","lab","ip","any","owl","RDFComparePredicateObject","self","other","compareTerm","RDFComparePredicateSubject","predParentOf","n","previousSibling","nodeName","error"],"mappings":"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","sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../log'\nimport { store } from '../logic'\nimport * as ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf, store }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(UI.store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = UI.store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = UI.store.any(p, UI.ns.owl('inverseOf')) || UI.store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/utils/index.js"],"names":["UI","log","ns","rdf","nextVariable","newVariableName","clearVariableNames","audioContext","AudioContext","window","webkitAudioContext","beep","ContextClass","ctx","duration","frequency","type","finishedCallback","osc","createOscillator","value","connect","destination","start","stop","hashColor","who","uri","hash","x","split","reduce","a","b","charCodeAt","toString","genUuid","replace","c","r","Math","random","v","syncTableToArray","table","things","createNewRow","foundOne","row","i","children","length","trashMe","g","thing","subject","sameTerm","newRow","appendChild","ele","insertBefore","removeChild","syncTableToArrayReOrdered","elementMap","toNT","existingRow","before","stackString","e","str","stack","lines","toPrint","line","indexOf","charAt","chunks","push","emptyNode","node","nodes","childNodes","len","getTarget","target","event","srcElement","nodeType","parentNode","ancestor","tagName","level","undefined","getAbout","kb","aa","getAttribute","fromNT","debug","getTerm","statementTr","st","AJAR_statement","className","predicate","AJAR_inverse","object","store","nextSibling","include","document","linkstr","lnk","createElement","setAttribute","addLoadEvent","func","oldonload","onload","findPos","obj","myDocument","ownerDocument","DocBox","documentElement","getBoundingClientRect","box","left","top","getEyeFocus","element","instantly","isBottom","myWindow","elementPosY","appContext","SolidAppContext","scrollDiff","scroll","totalScroll","scrollY","scrollBy","clientHeight","innerHeight","id","setInterval","scrollAmount","times","clearInterval","AJARImage","src","alt","tt","doc","image","addEventListener","clipboardData","setData","preventDefault","shortName","p","slice","namespaces","prefixes","pok","canUse","pp","lastIndexOf","slash","prefixchars","ontologyLabel","term","s","part","labelWithOntology","initialCap","t","findTypeURIs","rdfs","escapeForXML","labelForXML","predicateLabelForXML","inverse","predicateLabel","lab","ip","any","owl","RDFComparePredicateObject","self","other","compareTerm","RDFComparePredicateSubject","predParentOf","n","previousSibling","nodeName","error"],"mappings":"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","sourcesContent":["// Solid-UI general Utilities\n// ==========================\n//\n// This must load AFTER the rdflib.js and log-ext.js (or log.js).\n//\nimport * as log from '../log'\nimport { store } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\nimport { label } from './label'\n\nconst UI = { log, ns, rdf }\n\nexport {\n addLoadEvent, // not used anywhere\n AJARImage,\n ancestor,\n beep,\n clearVariableNames,\n emptyNode,\n escapeForXML,\n findPos,\n genUuid,\n getAbout,\n getEyeFocus,\n getTarget,\n getTerm,\n hashColor,\n include,\n label,\n labelForXML,\n labelWithOntology,\n newVariableName,\n ontologyLabel,\n predicateLabel,\n predicateLabelForXML,\n predParentOf,\n RDFComparePredicateObject,\n RDFComparePredicateSubject,\n shortName,\n stackString,\n syncTableToArray,\n syncTableToArrayReOrdered\n}\n\nlet nextVariable = 0\n\nfunction newVariableName () {\n return 'v' + nextVariable++\n}\n\nfunction clearVariableNames () {\n nextVariable = 0\n}\n\n// http://stackoverflow.com/questions/879152/how-do-i-make-javascript-beep\n// http://www.tsheffler.com/blog/2013/05/14/audiocontext-noteonnoteoff-and-time-units/\n\nlet audioContext\n\nif (typeof AudioContext !== 'undefined') {\n audioContext = AudioContext\n} else if (typeof window !== 'undefined') {\n audioContext = window.AudioContext || window.webkitAudioContext\n}\n\nfunction beep () {\n if (!audioContext) {\n return\n } // Safari 2015\n\n const ContextClass = audioContext\n const ctx = new ContextClass()\n\n return function (duration, frequency, type, finishedCallback) {\n duration = +(duration || 0.3)\n\n // Only 0-4 are valid types.\n type = type || 'sine' // sine, square, sawtooth, triangle\n\n if (typeof finishedCallback !== 'function') {\n finishedCallback = function () {}\n }\n\n const osc = ctx.createOscillator()\n\n osc.type = type\n osc.frequency.value = frequency || 256\n\n osc.connect(ctx.destination)\n osc.start(0)\n osc.stop(duration)\n }\n}\n\n// Make pseudorandom color from a uri\n// NOT USED ANYWHERE\nfunction hashColor (who) {\n who = who.uri || who\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n return '#' + ((hash(who) & 0xffffff) | 0xc0c0c0).toString(16) // c0c0c0 or 808080 forces pale\n}\n\nfunction genUuid () {\n // http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of NamedNode objects\n * @param {function({NamedNode})} createNewRow(thing) returns a TR table row for a new thing\n *\n * Tolerates out of order elements but puts new ones in order.\n * Can be used for any element type; does not have to be a table and tr.\n */\nfunction syncTableToArray (table, things, createNewRow) {\n let foundOne\n let row\n let i\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n row.trashMe = true\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n foundOne = false\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.subject && row.subject.sameTerm(thing)) {\n row.trashMe = false\n foundOne = true\n break\n }\n }\n if (!foundOne) {\n const newRow = createNewRow(thing)\n // Insert new row in position g in the table to match array\n if (g >= table.children.length) {\n table.appendChild(newRow)\n } else {\n const ele = table.children[g]\n table.insertBefore(newRow, ele)\n }\n newRow.subject = thing\n } // if not foundOne\n } // loop g\n\n for (i = 0; i < table.children.length; i++) {\n row = table.children[i]\n if (row.trashMe) {\n table.removeChild(row)\n }\n }\n} // syncTableToArray\n\n/** Sync a DOM table with an array of things\n *\n * @param {DomElement} table - will have a tr for each thing\n * @param {Array<NamedNode>} things - ORDERED array of UNIQUE NamedNode objects. No duplicates\n * @param {function({NamedNode})} createNewRow(thing) returns a rendering of a new thing\n *\n * Ensures order matches exacly. We will re-rder existing elements if necessary\n * Can be used for any element type; does not have to be a table and tr.\n * Any RDF node value can only appear ONCE in the array\n */\nfunction syncTableToArrayReOrdered (table, things, createNewRow) {\n const elementMap = {}\n\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n elementMap[row.subject.toNT()] = row // More sophisticaed would be to have a bag of duplicates\n }\n\n for (let g = 0; g < things.length; g++) {\n const thing = things[g]\n if (g >= table.children.length) { // table needs extending\n const newRow = createNewRow(thing)\n newRow.subject = thing\n table.appendChild(newRow)\n } else {\n const row = table.children[g]\n if (row.subject.sameTerm(thing)) {\n // ...\n } else {\n const existingRow = elementMap[thing.toNT()]\n if (existingRow) {\n table.removeChild(existingRow)\n table.insertBefore(existingRow, row) // Insert existing row in place of this one\n } else {\n const newRow = createNewRow(thing)\n row.before(newRow) // Insert existing row in place of this one\n newRow.subject = thing\n }\n }\n }\n } // loop g\n // Lop off any we don't need any more:\n while (table.children.length > things.length) {\n table.removeChild(table.children[table.children.length - 1])\n }\n} // syncTableToArrayReOrdered\n\n/* Error stack to string for better diagnotsics\n **\n ** See http://snippets.dzone.com/posts/show/6632\n */\nfunction stackString (e) {\n let str = '' + e + '\\n'\n let i\n if (!e.stack) {\n return str + 'No stack available.\\n'\n }\n const lines = e.stack.toString().split('\\n')\n const toPrint = []\n for (i = 0; i < lines.length; i++) {\n let line = lines[i]\n if (line.indexOf('ecmaunit.js') > -1) {\n // remove useless bit of traceback\n break\n }\n if (line.charAt(0) === '(') {\n line = 'function' + line\n }\n const chunks = line.split('@')\n toPrint.push(chunks)\n }\n // toPrint.reverse(); No - I prefer the latest at the top by the error message -tbl\n\n for (i = 0; i < toPrint.length; i++) {\n str += ' ' + toPrint[i][1] + '\\n ' + toPrint[i][0]\n }\n return str\n}\n\nfunction emptyNode (node) {\n const nodes = node.childNodes\n const len = nodes.length\n for (let i = len - 1; i >= 0; i--) node.removeChild(nodes[i])\n return node\n}\n\nfunction getTarget (e) {\n let target\n e = e || window.event\n if (e.target) target = e.target\n else if (e.srcElement) target = e.srcElement\n if (target.nodeType === 3) {\n // defeat Safari bug [sic]\n target = target.parentNode\n }\n // UI.log.debug(\"Click on: \" + target.tagName)\n return target\n}\n\nfunction ancestor (target, tagName) {\n let level\n for (level = target; level; level = level.parentNode) {\n // UI.log.debug(\"looking for \"+tagName+\" Level: \"+level+\" \"+level.tagName)\n try {\n if (level.tagName === tagName) return level\n } catch (e) {\n // can hit \"TypeError: can't access dead object\" in ffox\n return undefined\n }\n }\n return undefined\n}\n\nfunction getAbout (kb, target) {\n let level, aa\n for (\n level = target;\n level && level.nodeType === 1;\n level = level.parentNode\n ) {\n // UI.log.debug(\"Level \"+level + ' '+level.nodeType + ': '+level.tagName)\n aa = level.getAttribute('about')\n if (aa) {\n // UI.log.debug(\"kb.fromNT(aa) = \" + kb.fromNT(aa))\n return kb.fromNT(aa)\n // } else {\n // if (level.tagName=='TR') return undefined//this is to prevent literals passing through\n }\n }\n UI.log.debug('getAbout: No about found')\n return undefined\n}\n\nfunction getTerm (target) {\n const statementTr = target.parentNode\n const st = statementTr ? statementTr.AJAR_statement : undefined\n\n const className = st ? target.className : '' // if no st then it's necessary to use getAbout\n switch (className) {\n case 'pred':\n case 'pred selected':\n return st.predicate\n case 'obj':\n case 'obj selected':\n if (!statementTr.AJAR_inverse) {\n return st.object\n } else {\n return st.subject\n }\n case '':\n case 'selected': // header TD\n return getAbout(store, target) // kb to be changed\n case 'undetermined selected':\n return target.nextSibling\n ? st.predicate\n : !statementTr.AJAR_inverse\n ? st.object\n : st.subject\n }\n}\n\nfunction include (document, linkstr) {\n const lnk = document.createElement('script')\n lnk.setAttribute('type', 'text/javascript')\n lnk.setAttribute('src', linkstr)\n // TODO:This needs to be fixed or no longer used.\n // document.getElementsByTagName('head')[0].appendChild(lnk)\n return lnk\n}\n\nfunction addLoadEvent (func) {\n const oldonload = window.onload\n if (typeof window.onload !== 'function') {\n window.onload = func\n } else {\n window.onload = function () {\n oldonload()\n func()\n }\n }\n} // addLoadEvent\n\n// Find the position of an object relative to the window\nfunction findPos (obj) {\n // C&P from http://www.quirksmode.org/js/findpos.html\n const myDocument = obj.ownerDocument\n const DocBox = myDocument.documentElement.getBoundingClientRect()\n const box = obj.getBoundingClientRect()\n return [box.left - DocBox.left, box.top - DocBox.top]\n}\n\nfunction getEyeFocus (element, instantly, isBottom, myWindow) {\n if (!myWindow) myWindow = window\n const elementPosY = findPos(element)[1]\n const appContext = window.SolidAppContext || {}\n const scrollDiff = (appContext && appContext.scroll) || 52 // 52 = magic number for web-based version\n const totalScroll = elementPosY - scrollDiff - myWindow.scrollY\n\n if (instantly) {\n if (isBottom) {\n myWindow.scrollBy(\n 0,\n elementPosY +\n element.clientHeight -\n (myWindow.scrollY + myWindow.innerHeight)\n )\n return\n }\n myWindow.scrollBy(0, totalScroll)\n return\n }\n const id = myWindow.setInterval(scrollAmount, 50)\n let times = 0\n function scrollAmount () {\n myWindow.scrollBy(0, totalScroll / 10)\n times++\n if (times === 10) {\n myWindow.clearInterval(id)\n }\n }\n}\n\nfunction AJARImage (src, alt, tt, doc) {\n if (!doc) {\n doc = document\n }\n const image = doc.createElement('img')\n image.setAttribute('src', src)\n image.addEventListener('copy', function (e) {\n e.clipboardData.setData('text/plain', '')\n e.clipboardData.setData('text/html', '')\n e.preventDefault() // We want no title data to be written to the clipboard\n })\n // if (typeof alt != 'undefined') // Messes up cut-and-paste of text\n // image.setAttribute('alt', alt)\n if (typeof tt !== 'undefined') {\n image.setAttribute('title', tt)\n }\n return image\n}\n\n// Make short name for ontology\n\nfunction shortName (uri) {\n let p = uri\n if ('#/'.indexOf(p[p.length - 1]) >= 0) p = p.slice(0, -1)\n const namespaces = []\n for (const ns in this.prefixes) {\n namespaces[this.prefixes[ns]] = ns // reverse index\n }\n let pok\n const canUse = function canUse (pp) {\n // if (!__Serializer.prototype.validPrefix.test(pp)) return false; // bad format\n if (pp === 'ns') return false // boring\n // if (pp in this.namespaces) return false; // already used\n // this.prefixes[uri] = pp;\n // this.namespaces[pp] = uri;\n pok = pp\n return true\n }\n\n let i\n const hash = p.lastIndexOf('#')\n if (hash >= 0) p = p.slice(hash - 1) // lop off localid\n // eslint-disable-next-line no-unreachable-loop\n for (;;) {\n const slash = p.lastIndexOf('/')\n if (slash >= 0) p = p.slice(slash + 1)\n i = 0\n while (i < p.length) {\n if (this.prefixchars.indexOf(p[i])) i++\n else break\n }\n p = p.slice(0, i)\n if (p.length < 6 && canUse(p)) return pok // exact i sbest\n if (canUse(p.slice(0, 3))) return pok\n if (canUse(p.slice(0, 2))) return pok\n if (canUse(p.slice(0, 4))) return pok\n if (canUse(p.slice(0, 1))) return pok\n if (canUse(p.slice(0, 5))) return pok\n for (i = 0; ; i++) if (canUse(p.slice(0, 3) + i)) return pok\n }\n}\n\n// Short name for an ontology\nfunction ontologyLabel (term) {\n if (term.uri === undefined) return '??'\n let s = term.uri\n const namespaces = []\n let i = s.lastIndexOf('#')\n let part\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n s = s.slice(0, i + 1)\n } else {\n return term.uri + '?!' // strange should have # or /\n }\n }\n for (const ns in UI.ns) {\n namespaces[UI.ns[ns]] = ns // reverse index\n }\n try {\n return namespaces[s]\n } catch (e) {}\n\n s = s.slice(0, -1) // Chop off delimiter ... now have just\n\n while (s) {\n i = s.lastIndexOf('/')\n if (i >= 0) {\n part = s.slice(i + 1)\n s = s.slice(0, i)\n if (part !== 'ns' && '0123456789'.indexOf(part[0]) < 0) {\n return part\n }\n } else {\n return term.uri + '!?' // strange should have a nice part\n }\n }\n}\n\nfunction labelWithOntology (x, initialCap) {\n const t = store.findTypeURIs(x)\n if (t[UI.ns.rdf('Predicate').uri] || t[UI.ns.rdfs('Class').uri]) {\n return label(x, initialCap) + ' (' + ontologyLabel(x) + ')'\n }\n return label(x, initialCap)\n}\n\nfunction escapeForXML (str) {\n return str.replace(/&/g, '&amp;').replace(/</g, '&lt;')\n}\n\n// As above but escaped for XML and chopped of contains a slash\nfunction labelForXML (x) {\n return escapeForXML(label(x))\n}\n\nfunction predicateLabelForXML (p, inverse) {\n return escapeForXML(predicateLabel(p, inverse))\n}\n// As above but for predicate, possibly inverse\nfunction predicateLabel (p, inverse) {\n const lab = label(p)\n if (inverse) {\n // If we know an inverse predicate, use its label\n const ip = store.any(p, UI.ns.owl('inverseOf')) || store.any(undefined, UI.ns.owl('inverseOf'), p)\n if (ip) return label(ip)\n if (lab === 'type') return '...' // Not \"is type of\"\n return 'is ' + lab + ' of'\n }\n return lab\n}\n\n// Not a method. For use in sorts\nfunction RDFComparePredicateObject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.object.compareTerm(other.object)\n}\n\nfunction RDFComparePredicateSubject (self, other) {\n const x = self.predicate.compareTerm(other.predicate)\n if (x !== 0) return x\n return self.subject.compareTerm(other.subject)\n}\n// ends\n\nfunction predParentOf (node) {\n let n = node\n while (true) {\n if (n.getAttribute('predTR')) {\n return n\n } else if (n.previousSibling && n.previousSibling.nodeName === 'TR') {\n n = n.previousSibling\n } else {\n UI.log.error('Could not find predParent')\n return node\n }\n }\n}\n\n// makeQueryRow moved to outline mode\n"],"file":"index.js"}
@@ -9,7 +9,7 @@ exports.label = label;
9
9
 
10
10
  var log = _interopRequireWildcard(require("../log"));
11
11
 
12
- var _logic = require("../logic");
12
+ var _solidLogic = require("solid-logic");
13
13
 
14
14
  var ns = _interopRequireWildcard(require("../ns"));
15
15
 
@@ -23,8 +23,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
23
23
  var UI = {
24
24
  log: log,
25
25
  ns: ns,
26
- rdf: rdf,
27
- store: _logic.store
26
+ rdf: rdf
28
27
  }; // This ubiquitous function returns the best label for a thing
29
28
  //
30
29
  // The hacks in this code make a major difference to the usability
@@ -120,7 +119,7 @@ function slice(s, suffix) {
120
119
 
121
120
 
122
121
  function getWellKnownLabel(thing) {
123
- return _logic.store.any(thing, UI.ns.ui('label')) || // Prioritize ui:label
124
- _logic.store.any(thing, UI.ns.link('message')) || _logic.store.any(thing, UI.ns.vcard('fn')) || _logic.store.any(thing, UI.ns.foaf('name')) || _logic.store.any(thing, UI.ns.dct('title')) || _logic.store.any(thing, UI.ns.dc('title')) || _logic.store.any(thing, UI.ns.rss('title')) || _logic.store.any(thing, UI.ns.contact('fullName')) || _logic.store.any(thing, _logic.store.sym('http://www.w3.org/2001/04/roadmap/org#name')) || _logic.store.any(thing, UI.ns.cal('summary')) || _logic.store.any(thing, UI.ns.foaf('nick')) || _logic.store.any(thing, UI.ns.as('name')) || _logic.store.any(thing, UI.ns.schema('name')) || _logic.store.any(thing, UI.ns.rdfs('label'));
122
+ return _solidLogic.store.any(thing, UI.ns.ui('label')) || // Prioritize ui:label
123
+ _solidLogic.store.any(thing, UI.ns.link('message')) || _solidLogic.store.any(thing, UI.ns.vcard('fn')) || _solidLogic.store.any(thing, UI.ns.foaf('name')) || _solidLogic.store.any(thing, UI.ns.dct('title')) || _solidLogic.store.any(thing, UI.ns.dc('title')) || _solidLogic.store.any(thing, UI.ns.rss('title')) || _solidLogic.store.any(thing, UI.ns.contact('fullName')) || _solidLogic.store.any(thing, _solidLogic.store.sym('http://www.w3.org/2001/04/roadmap/org#name')) || _solidLogic.store.any(thing, UI.ns.cal('summary')) || _solidLogic.store.any(thing, UI.ns.foaf('nick')) || _solidLogic.store.any(thing, UI.ns.as('name')) || _solidLogic.store.any(thing, UI.ns.schema('name')) || _solidLogic.store.any(thing, UI.ns.rdfs('label'));
125
124
  }
126
125
  //# sourceMappingURL=label.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/label.ts"],"names":["UI","log","ns","rdf","store","label","thing","initialCap","doCap","slice","toUpperCase","cleanUp","result","i","length","toLowerCase","getWellKnownLabel","value","termType","elements","s","uri","toString","split","map","decodeURIComponent","join","e","hex","indexOf","String","fromCharCode","parseInt","hash","slash","lastIndexOf","suffix","any","ui","link","vcard","foaf","dct","dc","rss","contact","sym","cal","as","schema","rdfs"],"mappings":"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","sourcesContent":["import * as log from '../log'\nimport { store } from '../logic'\nimport * as ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n\nconst UI = { log, ns, rdf, store }\n\n// This ubiquitous function returns the best label for a thing\n//\n// The hacks in this code make a major difference to the usability\nexport function label (thing, initialCap = false): string {\n function doCap (label: string) {\n if (initialCap) {\n return label.slice(0, 1).toUpperCase() + label.slice(1)\n }\n return label\n }\n function cleanUp (label: string) {\n let result = ''\n if (label.slice(-1) === '/') label = label.slice(0, -1) // chop trailing slash\n for (let i = 0; i < label.length; i++) {\n if (label[i] === '_' || label[i] === '-') {\n result += ' '\n continue\n }\n result += label[i]\n if (\n i + 1 < label.length &&\n label[i].toUpperCase() !== label[i] &&\n label[i + 1].toLowerCase() !== label[i + 1]\n ) {\n result += ' '\n }\n }\n if (result.slice(0, 4) === 'has ') result = result.slice(4)\n return doCap(result)\n }\n\n const label = getWellKnownLabel(thing)\n\n if (label) {\n return doCap(label.value)\n }\n\n // Default to label just generated from the URI\n\n if (thing.termType === 'BlankNode') {\n return '...'\n }\n if (thing.termType === 'Collection') {\n return '(' + thing.elements.length + ')'\n }\n let s = thing.uri\n if (typeof s === 'undefined') return thing.toString() // can't be a symbol\n // s = decodeURI(s) // This can crash is random valid @ signs are presentation\n // The idea was to clean up eg URIs encoded in query strings\n // Also encoded character in what was filenames like @ [] {}\n try {\n s = s\n .split('/')\n .map(decodeURIComponent)\n .join('/') // If it is properly encoded\n } catch (e) {\n // try individual decoding of ASCII code points\n for (let i = s.length - 3; i > 0; i--) {\n const hex = '0123456789abcefABCDEF' // The while upacks multiple layers of encoding\n while (\n s[i] === '%' &&\n hex.indexOf(s[i + 1]) >= 0 &&\n hex.indexOf(s[i + 2]) >= 0\n ) {\n s =\n s.slice(0, i) +\n String.fromCharCode(parseInt(s.slice(i + 1, i + 3), 16)) +\n s.slice(i + 3)\n }\n }\n }\n\n s = slice(s, '/profile/card#me')\n s = slice(s, '#this')\n s = slice(s, '#me')\n\n const hash = s.indexOf('#')\n if (hash >= 0) return cleanUp(s.slice(hash + 1))\n\n // Eh? Why not do this? e.g. dc:title needs it only trim URIs, not rdfs:labels\n const slash = s.lastIndexOf('/', s.length - 2) // (len-2) excludes trailing slash\n if (slash >= 0 && slash < thing.uri.length) return cleanUp(s.slice(slash + 1))\n\n return doCap(decodeURIComponent(thing.uri))\n}\n\nfunction slice (s: string, suffix: string) {\n const length = suffix.length * -1\n if (s.slice(length) === suffix) {\n return s.slice(0, length)\n }\n return s\n}\n\n// Hard coded known label predicates\n// @@ TBD: Add subproperties of rdfs:label\nfunction getWellKnownLabel (thing) {\n return store.any(thing, UI.ns.ui('label')) || // Prioritize ui:label\n store.any(thing, UI.ns.link('message')) ||\n store.any(thing, UI.ns.vcard('fn')) ||\n store.any(thing, UI.ns.foaf('name')) ||\n store.any(thing, UI.ns.dct('title')) ||\n store.any(thing, UI.ns.dc('title')) ||\n store.any(thing, UI.ns.rss('title')) ||\n store.any(thing, UI.ns.contact('fullName')) ||\n store.any(thing, store.sym('http://www.w3.org/2001/04/roadmap/org#name')) ||\n store.any(thing, UI.ns.cal('summary')) ||\n store.any(thing, UI.ns.foaf('nick')) ||\n store.any(thing, UI.ns.as('name')) ||\n store.any(thing, UI.ns.schema('name')) ||\n store.any(thing, UI.ns.rdfs('label'))\n}\n"],"file":"label.js"}
1
+ {"version":3,"sources":["../../src/utils/label.ts"],"names":["UI","log","ns","rdf","label","thing","initialCap","doCap","slice","toUpperCase","cleanUp","result","i","length","toLowerCase","getWellKnownLabel","value","termType","elements","s","uri","toString","split","map","decodeURIComponent","join","e","hex","indexOf","String","fromCharCode","parseInt","hash","slash","lastIndexOf","suffix","store","any","ui","link","vcard","foaf","dct","dc","rss","contact","sym","cal","as","schema","rdfs"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAA8B;AAE9B,IAAMA,EAAE,GAAG;AAAEC,EAAAA,GAAG,EAAHA,GAAF;AAAOC,EAAAA,EAAE,EAAFA,EAAP;AAAWC,EAAAA,GAAG,EAAHA;AAAX,CAAX,C,CAEA;AACA;AACA;;AACO,SAASC,KAAT,CAAgBC,KAAhB,EAAmD;AAAA,MAA5BC,UAA4B,uEAAf,KAAe;;AACxD,WAASC,KAAT,CAAgBH,KAAhB,EAA+B;AAC7B,QAAIE,UAAJ,EAAgB;AACd,aAAOF,KAAK,CAACI,KAAN,CAAY,CAAZ,EAAe,CAAf,EAAkBC,WAAlB,KAAkCL,KAAK,CAACI,KAAN,CAAY,CAAZ,CAAzC;AACD;;AACD,WAAOJ,KAAP;AACD;;AACD,WAASM,OAAT,CAAkBN,KAAlB,EAAiC;AAC/B,QAAIO,MAAM,GAAG,EAAb;AACA,QAAIP,KAAK,CAACI,KAAN,CAAY,CAAC,CAAb,MAAoB,GAAxB,EAA6BJ,KAAK,GAAGA,KAAK,CAACI,KAAN,CAAY,CAAZ,EAAe,CAAC,CAAhB,CAAR,CAFE,CAEyB;;AACxD,SAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGR,KAAK,CAACS,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAIR,KAAK,CAACQ,CAAD,CAAL,KAAa,GAAb,IAAoBR,KAAK,CAACQ,CAAD,CAAL,KAAa,GAArC,EAA0C;AACxCD,QAAAA,MAAM,IAAI,GAAV;AACA;AACD;;AACDA,MAAAA,MAAM,IAAIP,KAAK,CAACQ,CAAD,CAAf;;AACA,UACEA,CAAC,GAAG,CAAJ,GAAQR,KAAK,CAACS,MAAd,IACAT,KAAK,CAACQ,CAAD,CAAL,CAASH,WAAT,OAA2BL,KAAK,CAACQ,CAAD,CADhC,IAEAR,KAAK,CAACQ,CAAC,GAAG,CAAL,CAAL,CAAaE,WAAb,OAA+BV,KAAK,CAACQ,CAAC,GAAG,CAAL,CAHtC,EAIE;AACAD,QAAAA,MAAM,IAAI,GAAV;AACD;AACF;;AACD,QAAIA,MAAM,CAACH,KAAP,CAAa,CAAb,EAAgB,CAAhB,MAAuB,MAA3B,EAAmCG,MAAM,GAAGA,MAAM,CAACH,KAAP,CAAa,CAAb,CAAT;AACnC,WAAOD,KAAK,CAACI,MAAD,CAAZ;AACD;;AAED,MAAMP,KAAK,GAAGW,iBAAiB,CAACV,KAAD,CAA/B;;AAEA,MAAID,KAAJ,EAAW;AACT,WAAOG,KAAK,CAACH,KAAK,CAACY,KAAP,CAAZ;AACD,GAhCuD,CAkCxD;;;AAEA,MAAIX,KAAK,CAACY,QAAN,KAAmB,WAAvB,EAAoC;AAClC,WAAO,KAAP;AACD;;AACD,MAAIZ,KAAK,CAACY,QAAN,KAAmB,YAAvB,EAAqC;AACnC,WAAO,MAAMZ,KAAK,CAACa,QAAN,CAAeL,MAArB,GAA8B,GAArC;AACD;;AACD,MAAIM,CAAC,GAAGd,KAAK,CAACe,GAAd;AACA,MAAI,OAAOD,CAAP,KAAa,WAAjB,EAA8B,OAAOd,KAAK,CAACgB,QAAN,EAAP,CA3C0B,CA2CF;AACtD;AACA;AACA;;AACA,MAAI;AACFF,IAAAA,CAAC,GAAGA,CAAC,CACFG,KADC,CACK,GADL,EAEDC,GAFC,CAEGC,kBAFH,EAGDC,IAHC,CAGI,GAHJ,CAAJ,CADE,CAIW;AACd,GALD,CAKE,OAAOC,CAAP,EAAU;AACV;AACA,SAAK,IAAId,CAAC,GAAGO,CAAC,CAACN,MAAF,GAAW,CAAxB,EAA2BD,CAAC,GAAG,CAA/B,EAAkCA,CAAC,EAAnC,EAAuC;AACrC,UAAMe,GAAG,GAAG,uBAAZ,CADqC,CACD;;AACpC,aACER,CAAC,CAACP,CAAD,CAAD,KAAS,GAAT,IACAe,GAAG,CAACC,OAAJ,CAAYT,CAAC,CAACP,CAAC,GAAG,CAAL,CAAb,KAAyB,CADzB,IAEAe,GAAG,CAACC,OAAJ,CAAYT,CAAC,CAACP,CAAC,GAAG,CAAL,CAAb,KAAyB,CAH3B,EAIE;AACAO,QAAAA,CAAC,GACCA,CAAC,CAACX,KAAF,CAAQ,CAAR,EAAWI,CAAX,IACAiB,MAAM,CAACC,YAAP,CAAoBC,QAAQ,CAACZ,CAAC,CAACX,KAAF,CAAQI,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG,CAAnB,CAAD,EAAwB,EAAxB,CAA5B,CADA,GAEAO,CAAC,CAACX,KAAF,CAAQI,CAAC,GAAG,CAAZ,CAHF;AAID;AACF;AACF;;AAEDO,EAAAA,CAAC,GAAGX,KAAK,CAACW,CAAD,EAAI,kBAAJ,CAAT;AACAA,EAAAA,CAAC,GAAGX,KAAK,CAACW,CAAD,EAAI,OAAJ,CAAT;AACAA,EAAAA,CAAC,GAAGX,KAAK,CAACW,CAAD,EAAI,KAAJ,CAAT;AAEA,MAAMa,IAAI,GAAGb,CAAC,CAACS,OAAF,CAAU,GAAV,CAAb;AACA,MAAII,IAAI,IAAI,CAAZ,EAAe,OAAOtB,OAAO,CAACS,CAAC,CAACX,KAAF,CAAQwB,IAAI,GAAG,CAAf,CAAD,CAAd,CA1EyC,CA4ExD;;AACA,MAAMC,KAAK,GAAGd,CAAC,CAACe,WAAF,CAAc,GAAd,EAAmBf,CAAC,CAACN,MAAF,GAAW,CAA9B,CAAd,CA7EwD,CA6ET;;AAC/C,MAAIoB,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG5B,KAAK,CAACe,GAAN,CAAUP,MAApC,EAA4C,OAAOH,OAAO,CAACS,CAAC,CAACX,KAAF,CAAQyB,KAAK,GAAG,CAAhB,CAAD,CAAd;AAE5C,SAAO1B,KAAK,CAACiB,kBAAkB,CAACnB,KAAK,CAACe,GAAP,CAAnB,CAAZ;AACD;;AAED,SAASZ,KAAT,CAAgBW,CAAhB,EAA2BgB,MAA3B,EAA2C;AACzC,MAAMtB,MAAM,GAAGsB,MAAM,CAACtB,MAAP,GAAgB,CAAC,CAAhC;;AACA,MAAIM,CAAC,CAACX,KAAF,CAAQK,MAAR,MAAoBsB,MAAxB,EAAgC;AAC9B,WAAOhB,CAAC,CAACX,KAAF,CAAQ,CAAR,EAAWK,MAAX,CAAP;AACD;;AACD,SAAOM,CAAP;AACD,C,CAED;AACA;;;AACA,SAASJ,iBAAT,CAA4BV,KAA5B,EAAmC;AACjC,SAAO+B,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMoC,EAAN,CAAS,OAAT,CAAjB,KAAuC;AAC1CF,oBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMqC,IAAN,CAAW,SAAX,CAAjB,CADG,IAEHH,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMsC,KAAN,CAAY,IAAZ,CAAjB,CAFG,IAGHJ,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMuC,IAAN,CAAW,MAAX,CAAjB,CAHG,IAIHL,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMwC,GAAN,CAAU,OAAV,CAAjB,CAJG,IAKHN,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMyC,EAAN,CAAS,OAAT,CAAjB,CALG,IAMHP,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAM0C,GAAN,CAAU,OAAV,CAAjB,CANG,IAOHR,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAM2C,OAAN,CAAc,UAAd,CAAjB,CAPG,IAQHT,kBAAMC,GAAN,CAAUhC,KAAV,EAAiB+B,kBAAMU,GAAN,CAAU,4CAAV,CAAjB,CARG,IASHV,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAM6C,GAAN,CAAU,SAAV,CAAjB,CATG,IAUHX,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMuC,IAAN,CAAW,MAAX,CAAjB,CAVG,IAWHL,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAM8C,EAAN,CAAS,MAAT,CAAjB,CAXG,IAYHZ,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAM+C,MAAN,CAAa,MAAb,CAAjB,CAZG,IAaHb,kBAAMC,GAAN,CAAUhC,KAAV,EAAiBL,EAAE,CAACE,EAAH,CAAMgD,IAAN,CAAW,OAAX,CAAjB,CAbJ;AAcD","sourcesContent":["import * as log from '../log'\nimport { store } from 'solid-logic'\nimport * as ns from '../ns'\nimport * as rdf from 'rdflib' // pull in first avoid cross-refs\n\nconst UI = { log, ns, rdf }\n\n// This ubiquitous function returns the best label for a thing\n//\n// The hacks in this code make a major difference to the usability\nexport function label (thing, initialCap = false): string {\n function doCap (label: string) {\n if (initialCap) {\n return label.slice(0, 1).toUpperCase() + label.slice(1)\n }\n return label\n }\n function cleanUp (label: string) {\n let result = ''\n if (label.slice(-1) === '/') label = label.slice(0, -1) // chop trailing slash\n for (let i = 0; i < label.length; i++) {\n if (label[i] === '_' || label[i] === '-') {\n result += ' '\n continue\n }\n result += label[i]\n if (\n i + 1 < label.length &&\n label[i].toUpperCase() !== label[i] &&\n label[i + 1].toLowerCase() !== label[i + 1]\n ) {\n result += ' '\n }\n }\n if (result.slice(0, 4) === 'has ') result = result.slice(4)\n return doCap(result)\n }\n\n const label = getWellKnownLabel(thing)\n\n if (label) {\n return doCap(label.value)\n }\n\n // Default to label just generated from the URI\n\n if (thing.termType === 'BlankNode') {\n return '...'\n }\n if (thing.termType === 'Collection') {\n return '(' + thing.elements.length + ')'\n }\n let s = thing.uri\n if (typeof s === 'undefined') return thing.toString() // can't be a symbol\n // s = decodeURI(s) // This can crash is random valid @ signs are presentation\n // The idea was to clean up eg URIs encoded in query strings\n // Also encoded character in what was filenames like @ [] {}\n try {\n s = s\n .split('/')\n .map(decodeURIComponent)\n .join('/') // If it is properly encoded\n } catch (e) {\n // try individual decoding of ASCII code points\n for (let i = s.length - 3; i > 0; i--) {\n const hex = '0123456789abcefABCDEF' // The while upacks multiple layers of encoding\n while (\n s[i] === '%' &&\n hex.indexOf(s[i + 1]) >= 0 &&\n hex.indexOf(s[i + 2]) >= 0\n ) {\n s =\n s.slice(0, i) +\n String.fromCharCode(parseInt(s.slice(i + 1, i + 3), 16)) +\n s.slice(i + 3)\n }\n }\n }\n\n s = slice(s, '/profile/card#me')\n s = slice(s, '#this')\n s = slice(s, '#me')\n\n const hash = s.indexOf('#')\n if (hash >= 0) return cleanUp(s.slice(hash + 1))\n\n // Eh? Why not do this? e.g. dc:title needs it only trim URIs, not rdfs:labels\n const slash = s.lastIndexOf('/', s.length - 2) // (len-2) excludes trailing slash\n if (slash >= 0 && slash < thing.uri.length) return cleanUp(s.slice(slash + 1))\n\n return doCap(decodeURIComponent(thing.uri))\n}\n\nfunction slice (s: string, suffix: string) {\n const length = suffix.length * -1\n if (s.slice(length) === suffix) {\n return s.slice(0, length)\n }\n return s\n}\n\n// Hard coded known label predicates\n// @@ TBD: Add subproperties of rdfs:label\nfunction getWellKnownLabel (thing) {\n return store.any(thing, UI.ns.ui('label')) || // Prioritize ui:label\n store.any(thing, UI.ns.link('message')) ||\n store.any(thing, UI.ns.vcard('fn')) ||\n store.any(thing, UI.ns.foaf('name')) ||\n store.any(thing, UI.ns.dct('title')) ||\n store.any(thing, UI.ns.dc('title')) ||\n store.any(thing, UI.ns.rss('title')) ||\n store.any(thing, UI.ns.contact('fullName')) ||\n store.any(thing, store.sym('http://www.w3.org/2001/04/roadmap/org#name')) ||\n store.any(thing, UI.ns.cal('summary')) ||\n store.any(thing, UI.ns.foaf('nick')) ||\n store.any(thing, UI.ns.as('name')) ||\n store.any(thing, UI.ns.schema('name')) ||\n store.any(thing, UI.ns.rdfs('label'))\n}\n"],"file":"label.js"}
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
  var _default = {
8
- buildTime: '2022-02-23T14:20:11Z',
9
- commit: '707601b18fc26917752ae0150bdc55058a34312e',
8
+ buildTime: '2022-03-01T16:54:17Z',
9
+ commit: '4e4eca7a616dc2c8e925b99e0f250adf902cbec6',
10
10
  npmInfo: {
11
11
  'solid-ui': '2.4.18',
12
12
  npm: '6.14.13',
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACbA,EAAAA,SAAS,EAAE,sBADE;AAEbC,EAAAA,MAAM,EAAE,0CAFK;AAGbC,EAAAA,OAAO,EACT;AACE,gBAAY,QADd;AAEEC,IAAAA,GAAG,EAAE,SAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,GAAG,EAAE,MANP;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,OAAO,EAAE,IARX;AASEC,IAAAA,IAAI,EAAE,GATR;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,SAXR;AAYEC,IAAAA,OAAO,EAAE,QAZX;AAaEC,IAAAA,EAAE,EAAE,OAbN;AAcEC,IAAAA,OAAO,EAAE,MAdX;AAeEC,IAAAA,EAAE,EAAE,QAfN;AAgBEC,IAAAA,EAAE,EAAE,oBAhBN;AAiBEC,IAAAA,IAAI,EAAE;AAjBR;AAJe,C","sourcesContent":["export default {\n buildTime: '2022-02-23T14:20:11Z',\n commit: '707601b18fc26917752ae0150bdc55058a34312e',\n npmInfo:\n{\n 'solid-ui': '2.4.18',\n npm: '6.14.13',\n ares: '1.17.1',\n brotli: '1.0.9',\n cldr: '39.0',\n icu: '69.1',\n llhttp: '2.1.3',\n modules: '83',\n napi: '8',\n nghttp2: '1.42.0',\n node: '14.17.3',\n openssl: '1.1.1k',\n tz: '2021a',\n unicode: '13.0',\n uv: '1.41.0',\n v8: '8.4.371.23-node.67',\n zlib: '1.2.11'\n}\n}\n"],"file":"versionInfo.js"}
1
+ {"version":3,"sources":["../src/versionInfo.ts"],"names":["buildTime","commit","npmInfo","npm","ares","brotli","cldr","icu","llhttp","modules","napi","nghttp2","node","openssl","tz","unicode","uv","v8","zlib"],"mappings":";;;;;;eAAe;AACbA,EAAAA,SAAS,EAAE,sBADE;AAEbC,EAAAA,MAAM,EAAE,0CAFK;AAGbC,EAAAA,OAAO,EACT;AACE,gBAAY,QADd;AAEEC,IAAAA,GAAG,EAAE,SAFP;AAGEC,IAAAA,IAAI,EAAE,QAHR;AAIEC,IAAAA,MAAM,EAAE,OAJV;AAKEC,IAAAA,IAAI,EAAE,MALR;AAMEC,IAAAA,GAAG,EAAE,MANP;AAOEC,IAAAA,MAAM,EAAE,OAPV;AAQEC,IAAAA,OAAO,EAAE,IARX;AASEC,IAAAA,IAAI,EAAE,GATR;AAUEC,IAAAA,OAAO,EAAE,QAVX;AAWEC,IAAAA,IAAI,EAAE,SAXR;AAYEC,IAAAA,OAAO,EAAE,QAZX;AAaEC,IAAAA,EAAE,EAAE,OAbN;AAcEC,IAAAA,OAAO,EAAE,MAdX;AAeEC,IAAAA,EAAE,EAAE,QAfN;AAgBEC,IAAAA,EAAE,EAAE,oBAhBN;AAiBEC,IAAAA,IAAI,EAAE;AAjBR;AAJe,C","sourcesContent":["export default {\n buildTime: '2022-03-01T16:54:17Z',\n commit: '4e4eca7a616dc2c8e925b99e0f250adf902cbec6',\n npmInfo:\n{\n 'solid-ui': '2.4.18',\n npm: '6.14.13',\n ares: '1.17.1',\n brotli: '1.0.9',\n cldr: '39.0',\n icu: '69.1',\n llhttp: '2.1.3',\n modules: '83',\n napi: '8',\n nghttp2: '1.42.0',\n node: '14.17.3',\n openssl: '1.1.1k',\n tz: '2021a',\n unicode: '13.0',\n uv: '1.41.0',\n v8: '8.4.371.23-node.67',\n zlib: '1.2.11'\n}\n}\n"],"file":"versionInfo.js"}